Raumklima mit dem Raspberry PI überwachen, oder: Wann lüften?

Mit relativ einfachen Mitteln ist es möglich einige das Raumklima betreffend interessante Größen zu bestimmen, die etwa Auskunft darüber geben ob das Öffnen eines Fensters zu trockener Luft führt, oder ob Schimmelgefahr besteht. Mit Hilfe eines RaspyRFM Funkmoduls, der Timeseries-Datenbank influxDB und der Datenvisualisierung Grafana können informative Diagramme über Temperatur, absolute und relative Luftfeuchtigkeit, Taupunkt und mehr erzeugt werden, auf welche einfach über einen Webbrowser zugegriffen werden kann. An Hardware wird benötigt:

Softwareinstallation

RaspyRFM Pythonmodul installieren

Zunächst alle erforderlichen Bibliotheken und das RaspyRFM Python-Softwarepacket installieren:

sudo apt-get install git-core python-dev python-pip
git clone https://github.com/Phunkafizer/RaspyRFM.git
cd RaspyRFM
sudo pip install -e .

Und noch mit sudo raspi-config die SPI Schnittstelle aktivieren. Im eben heruntergeladenem Softwarepaket ist ein Skript enthalten welches die Sensordaten empfängt, dekodiert und auf einer HTML Seite zur Verfügung stellt:

apps/lacrossegw.py
Found RaspyRFM twin
RFM69 found on CS 1
Init complete.
mqtt init error
Waiting for sensors…
id: 98  room Druckerraum    T:  15.2 °C  RH: 43 %  battery: OK   init: false
id: 18  room Hauptraum      T:  20.9 °C  RH: 33 %  battery: OK   init: false
id: 8   room Nebenraum      T:  21.6 °C  RH: 32 %  battery: OK   init: false
id: 98  room Druckerraum    T:  15.1 °C  RH: 43 %  battery: OK   init: false
id: 18  room Hauptraum      T:  20.9 °C  RH: 33 %  battery: OK   init: false

Die Raumzuordnungen und weitere Parameter können in der Datei apps/lacrossegw.conf eingetragen werden:

{
    "sensors": [
        {
            "id": "18",
            "name": "Hauptraum",
            "tMin": 19.5,
            "tMax": 24,
            "rhMax": 60,
            "rhMin": 40,
            "idOutside": "68"
        },
        {
            "id": "8",
            "name": "Nebenraum",
            "tMin": 20,
            "tMax": 25,
            "rhMax": 60,
            "rhMin": 40,
            "idOutside": "68"
        },
        {
            "id": "68",
            "name": "Aussen"
        }
    ]
}

Die Parameter tMin, tMax, rhMin, rhMax bestimmen wann die Werte im Webinterface in rot dargestellt werden. Mit idOutside wird der Außensensor referenziert welcher für die weiter unten noch genauer erklärten Berechnungen herangezogen wird.

Das Webinterface kann standardmäßig über die Adresse http://<IP Raspberry>:8080 aufgerufen werden. Der Port kann über die obige Konfigurationsdatei geändert werden.

Webinterface lacrossegw

Für jeden Raum werden oben Temperatur und relative Luftfeuchtigkeit angezeigt. Bei Klick auf einen Raum werden weitere Messwerte eingeblendet:

  • Absolute Luftfeuchtigkeit (AH)
  • AHratio, Verhältnis zwischen absoluter Luftfeuchtigkeit innen und außen
  • Taupunkt
  • TF80, Temperatur bei der eine Luftfeuchtigkeit von 80 % erreicht wird
  • TF60, siehe TF80

Messwerte in influxDB speichern und mit Grafana visualisieren

InfluxDB auf dem Raspberry installieren, z. B. nach dieser Anleitung.

InfluxDB für Python installieren:

sudo pip install influxdb

Das Pythonskript apps/lacrossegw.py von oben legt beim ersten Start automatisch alles Nötige an:

  • Eine Datenbank „sensors“ mit einer Datenverweildauer von einer Stunde
  • Eine retention policy jeweils für eine Woche und ein Jahr
  • Ein continous query jeweils 3 Minuten und 3 Stunden

Dieses Datenbankschema speichert die Rohdaten der Sensoren, welche pro Sensor ca. alle 10 s empfangen werden, für eine Stunde zwischen. Alle 3 Minuten werden die Durchschnittswerte der vergangen 3 Minuten berechnet und in eine „retention policy“ gespeichert. Diese reduzierten Datenpunkte werden ihrerseits für eine Woche aufgehoben und alle 3 Stunden wieder gemittelt und abgespeichert. Auf diese Weise kann die Grafanavisualisierung schnell einen größeren Zeitraum anzeigen ohne unnötig viel Datenpunkte. Die auf alle 3 Stunden reduzierten Daten werden für ein Jahr behalten, sollen größere Zeiträume vorgehalten werden kann einfach die obige retention policy abgeändert werden.

Grafana auf dem Raspberry PI installieren, z. B. nach dieser Anleitung

Nun steht standardmäßig unter der URL http://<Raspberry IP>:3000 das Grafana Webinterface zur Verfügung. Nach der Verknüpfung mit der influxDB in Grafana können Dashboards erstellt werden:

Relative und absolute Luftfeuchtigkeit

Spricht man von „Luftfeuchtigkeit“, ist damit meist die relative Luftfeuchtigkeit in % gemeint. Eine bestimmte Menge Luft kann abhängig von dessen Temperatur unterschiedlich viel Wasser speichern. Wärmere Luft kann größere Mengen an Wasserdampf aufnehmen als kalte. Diese relative Luftfeuchtigkeit gibt an, wieviel Wasserdampf die Luft im Verhältnis zum Aufnahmevermögen bei der momentanen Temperatur enthält. Das bedeutet, dass sich die relative Luftfeuchtigkeit in einem geschlossenen Raum ändert, wenn die sich dessen Temperatur, etwa durch Heizen oder Abkühlen, verändert. Hier einige Beispiele:
– Im Wohnzimmer herrscht eine Temperatur von 20 °C bei einer relativen Luftfeuchtigkeit von 50 %. Nun wird die Raumtemperatur auf 22 °C durch Heizen erhöht. Da die wärmere Luft mehr Wasserdampf aufnehmen könnte, aber noch die selbe Masse an Wasserdampf vorhanden ist beträgt die relative Luftfeuchtigkeit nun 45 %.
– Das Badezimmer hat eine Temperatur von 25 °C und er herrscht eine Luftfeuchtigkeit von 60 %. Durch Abkühlung sinkt die Lufttemperatur auf 20 °C. Die kleinere Aufnahmefähigkeit der abgekühlten Luft von Wasserdampf sorgt dafür dass die relative Luftfeuchtigkeit auf 80 % steigt.
Die relative Luftfeuchtigkeit in Räumen sollte ca. 40 % – 60 % betragen. Zu trockene Luft führt zur Austrocknung der Schleimhäute so dass man sich leichter Infektionen einfangen kann, zu feuchte Luft dagegen führt in Räumen zu Schimmelbefall. Bei Erreichen von 100 % relativer Luftfeuchtigkeit kann die Luft keinen weiteren Wasserdampf aufnehmen, so dass die Luft beginnt zu kondensieren.

Im Gegensatz zur Relativen gibt die absolute Feuchtigkeit an, welche Masse an Wasserdampf die Raumluft enthält. Sie wird in der Einheit g / m³ angegeben. Findet kein Luftaustausch statt und wird kein Wasserdampf, z. B. an Wände etc., abgegeben oder aufgenommen, bleibt die absolute Luftfeuchtigkeit auch beim Ändern der Temperatur konstant. Eine Raumluft mit der Temperatur 20 °C enthält z. B. bei einer relativen Luftfeuchtigkeit von 60 % die Masse von rund 10 g pro m³ Raumluft, d. h. die absolute Luftfeuchtigkeit beträgt hier 10 g / m³. Die absolute Luftfeuchigkeit kann errechnet werden, wenn Temperatur und relative Luftfeuchtigkeit bekannt sind.

Lüften oder nicht Lüften?

Angenommen an einem Wintertag wird im Badezimmer geduscht, so dass dort die relative Luftfeuchtigkeit auf 70 % bei einer Temperatur von 22 °C steigt. Außen herrscht eine Temperatur von 2 °C bei 85 % relativer Luftfeuchtigkeit. Kann die Luftfeuchtitkeit im Badezimmer unter diesen Bedingungen durch Öffnen des Fensters gesenkt werden?
Die korrekte Antwort lautet: JA!
Obwohl die Außenluft eine höhere relative Luftfeuchtigkeit hat als die Raumluft nach dem Duschen, muss hier aber die jeweilige absolute Luftfeuchtigkeit herangezogen werden:

TRHAH
Badezimmer22 °C70 %13,6 g/m³
Außen2 °C85 %4,7 g/m³
Relative und absolute Luftfeuchtigkeit

Die kleine Zahl gibt die theoretisch erreichbare Veränderung der relativen Raumluftfeuchtigkeit an, wenn die beiden Luftmassen innen und ausgetauscht werden würden und die Luft innen wieder auf die vorherige Raumtemperatur gebracht werden würde. Bei einem Wert unter etwa -10 % würde die Raumluft beim Lüften trockener werden.

1 Gedanke zu „Raumklima mit dem Raspberry PI überwachen, oder: Wann lüften?“

Schreibe einen Kommentar