Aufgrund meines Aquariums muss ich besonders auf mein Raumklima achten. Wie jeder möchte natürlich auch ich keinen Schimmel in der Wohnung. Deshalb hatte ich mir ein Luftfeuchtigkeit-Messgerät bestellt, welches auch wunderbar funktioniert. Nur das muss ich ja regelmäßig kontrollieren! Da ich im Monitoringumfeld beruflich tätig bin, sind dies natürlich Dinge die ich einfach "weg automatisieren" möchte. Ich möchte nicht drei mal Täglich das Messgerät manuell vor und nach dem Lüften kontrollieren.

Also habe ich mir ein Plugin für Naemon Entwickelt welches mir hübsche Graphen mit Grafana liefert und mich über Pushover benachrichtig, sobald die Luftfeuchtigkeit zu hoch wird.

TL;DR Warnung: Heute ein etwas längere Beitrag.

Naemon/Nagios und Pushover

Naemon verwende ich bei mir schon lange zur Überwachung meines Servers. Als Weboberfläche und zur Erstellung von Graphen nutze ich mein eigenes Tool Statusengine. Diese Komponenten hatte ich also schon im Einsatz und konnte sie einfach nutzen.

Da der Naemon Server Zuhause läuft und ich keine Lust auf Relay E-Mail gefrickel hatte, nutzt mein Naemon zur Benachrichtigung Pushover über dieses Plugin.

Luftfeuchtigkeitssensor am Raspberry Pi (für Innen)

Ich verwende dafür ein altes Raspberry Pi Model A mit einem DHT22 Sensor. Diesen bekommt ihr für ca 2-4€. Der Sensor kann euch die aktuelle Temperatur und Luftfeuchtigkeit geben. Beachtet das ihr einen 4,7kΩ Widerstand benötigt. Die Schaltung ist sehr einfach und wenn ihr etwas im Internet sucht bekommt ihr einen Schaltplan.

Bei mir ist das ganze noch ein Prototyp und sieht wie folgt aus: DHT22 Sensor am Raspberry Pi

Ich verwende folgenden Treiber: https://github.com/technion/lol_dht22

*0.8

Ich musste bei mir den Wert der Luftfeuchtigkeit, welchen der Sensors ermittelt hatte, mit 0.8 multiplizieren. Nur dann stimmte der Wert des Sensors mit dem des Fuftfeuchtigkeit-Messgeräts überein ¯\_(ツ)_/¯

Plugin für Naemon

Das Plugin für Naemon ist sehr trivial und fragt einfach nur die Aktuellen Werte des Sensors ab und gibt dann folgenden Output aus:

Aktuelle Luftfeuchtigkeit und Temperatur OK! Temperatur: 17.10°C bei 55.52% Luftfeuchtigkeit|Luftfeuchtigkeit=55.52%;;;; Temperatur=17.10C;;;; Taupunkt=8.15C;;;; Dampfdruck=10.84mbar;;;; Absolute_Feuchte=8.09g;;;;

Ich habe das Plugin in PHP geschrieben und dafür mein eigenes kleines PHP Naemon Plugin Framework genutzt. So muss ich mich nicht darum kümmern, dass der Output für Naemon richtig formatiert ist. Natürlich könnte das Plugin in jeder Sprache geschrieben werden.

Die Werte Taupunkt, Dampfdruck und Absolute Feuchte können aus der Luftfeuchtigkeit und Temperatur errechnet werden. Die Formel und einigen Quelltext mit unbekannter Lizenz findet ihr zum Beispiel hier

Temperatur und Luftfeuchtigkeit der Außenluft ermitteln

Da ich aktuell keinen Außensensor haben, nutze ich als Datenquelle die kostenlose API von OpenWeatherMap. Die Daten sind dort natürlich nicht so aktuell, wie wenn man sie selber erfassen würde, allerdings ändert sich das Wetter nicht im Minutentakt...

Auch hierfür habe ich wieder ein kleines Naemon Plugin in PHP geschrieben. Hier habe ich allerdings keine Schwellwerte implementiert, sondern nutze Naemon hier lediglich als "Cron" und um die Daten in Graphen erfassen zu können (dazu später mehr).

Der Output sieht hier wie folgt aus:

Aktuelle Temperatur: 3°C, Luftfeuchtigkeit: 74%, | temp=3C; humidity=74%; Taupunkt=-1.16C; Dampfdruck=5.6mbar; Absolute_Feuchte=4.4g;

Glücklicherweise gab es für die OpenWeatherMap API schon eine PHP Klasse auf GitHub, so das die Implementierung nur wenige Minuten in Anspruch genommen hat.

Daten in Naemon / Statusengine

Für die Überwachung verwende ich Naemon, ein Fork von Nagios. Als Weboberfläche nutze ich Statusengine da es eine Moderne Oberfläche bietet, welche "Mobile First" entwickelt wird und somit perfekt an Smartphone, Tablet und PC genutzt werden kann. Des Weiteren kümmert sich Statusengine automatisch darum, Graphen mit Hilfe von RRDtool zu erstellen.

Für die Temperatur und Luftfeuchtigkeit im Innenbereich sieht das ganze so aus: Check für die Luftfeuchtigkeit innen Fällt die Temperatur nun zu weit, oder steigt die Luftfeuchtigkeit zu hoch, löst Naemon automatisch eine Benachrichtigung aus.

Für den Außenbereich habe ich folgenden Check: Check für die Luftfeuchtigkeit aussen

Aufbereitung der Daten mit Grafana

Das ganze ist zwar so schon ganz hübsch und praktisch, allerdings möchte ich die Graphen doch lieber noch etwas aufbereiten und ein Dashboard haben, wo ich alle Werte mit einem Blick erfassen kann.

Da drängt sich Grafana praktisch auf. Als Backend für Grafana verwende ich Graphite. Ich speichere die Daten also einmal in RRDtool und einmal in Graphite. Zum Glück hat Statusengine ein Graphite Modul so das auch hier kein großer Aufwand für die Implementierung bestand. Ich konnte mir also gleich ein Dashboard in Grafana zusammen stellen und das ist das Ergebnis: Grafana Dashboard mit Statusengine Auch Grafana lässt sich wunderbar auf einem Smartphone und Tablet betrachten.

Taupunkt Innen und Außen

Über den Graph "Taupunkt Innen und Außen" kann ich erkennen, wann es ein guter Zeitpunkt ist um zu Lüften. Immer wenn der Taupunkt Innen >> Taupunkt Außen kann man Stoßlüften. Wenn die Außenluft besonders wenig Wasser gespeichert hat, kann man in ca. 5 bis 10 Minuten die Luftfeuchtigkeit im Innenbereich deutlich senken (um ca. 20%). So kühlen die Wände nicht aus und es ist schnell wieder warm.

Vielen Danke an Julius für die Taupunkt Erklärung.