Raspberry-Pi-Projekte: REHAU-Raumluftsensor

Prof. Jürgen Plate

Raspberry-Pi-Projekte: REHAU-Raumluftsensor

Allgemeines

In den heutigen Häusern ist es mit der Luftqualität oft schlecht bestellt. Die Fenster werden immer dichter und der Luftaustausch immer geringer. Wer auf die umfangreichen Funktionen eines CO2-Messgerätes verzichten kann, dem könnte dieser spezielle USB-Raumsensor genügen. Wenn die Überwachung nicht sicherheitskritisch ist (Gasofen, etc.), reicht ein CO2-USB-Raumluftsensor oft aus.

Es lohnt sich, die Luftqualität zu überwachen, damit man merkt, wann es Zeit für einen Luftaustausch ist. REHAU bietet bei Amazon einen USB-Stick an, der flüchtige organische Substanzen (Volatile Organic Compounds, VOC) messen kann. Die Herkunft von VOCs, auch "Mischgase" genannt, lässt sich in permanente und temporäre Quellen einteilen. Permanente Emissionsquellen sind unter anderem Möbel, Teppichböden und Baumaterialien, temporäre Quellen sind zumeist auf menschliche Aktivität zurückzuführen, etwa Reinigungsmittel oder die bei der Zubereitung von Speisen entstehenden Dünste. Der Mensch ist aber auch selbst eine Quelle von VOCs, da er mit dem Atem Gase freisetzt, welche die Qualität der Raumluft senkt. Die in Innenräumen vorhandenen VOCs sind somit ein komplexes Gemisch verschiedenster Stoffe, deren Konzentration und Zusammensetzung variiert. Neben CO2 können dies unter anderem sein:

Stoffgruppe Beispielmögliche Quellen
Alkohole Spiritus Reinigungsmittel
Aldehyde Formaldehyd Baustoffe
Ketone Butanon Lacke
Ester Essigsäureethylester Klebstoffe
Terpene Pinen Klebstoffe
Aromate Xylol Lacke und Klebstoffe

Auch Elektorgeräte, beispielsweise Computer und Drucker erzeugen VOCs, darunter befinden sich Benzol, Styrol und Phenol. Dagegen ist die Ozonproduktion solcher Geräte inzwischen minimal.

Ein Luftgütesensor muss aus einem Summensignal aller im Mischgas enthaltenen Komponenten einen Luftgütewert ermitteln, wobei die Bestimmung der Einzelgase und deren Konzentration nicht nötig ist. Neben einer geringen Leistungsaufnahme bei möglichst breitbandiger Spannungsversorgung, einem robusten Aufbau mit entsprechend langer Standzeit soll ein Luftgütesensor möglichst wartungsfrei sein und auch nach längerer Betriebszeit eine gleichbleibend hohe Empfindlichkeit besitzen. Vermutlich steckt in dem USB-Stick der Sensor AS-MLV-P2 von Applied Sensor (inzwischen zur ams AG gehörend). Der REHAU-Sensor ist u. a. bei Amazon oder Conrad erhältlich. Auch der Velux Raumluftfühler ist baugleich mit dem Stick.

Der USB-Stick wird zur Messung der CO2-Werte lediglich mit einem Computer verbunden. Die Messdaten werden über eine grüne, gelbe und rote LED angezeigt. Gut geeignet ist eine solche Lösung z. B. für den Einsatz in Büroräumen, um zu wissen wann eine Raumlüftung nötig ist. Die VOC-Konzentration wird im ppm (parts per million) gemessen, der Sensor ist für Werte zwischen 450 und 2000 ppm spezifiziert. Er zeigt ggf. auch höhere Werte an, diese dürften interpoliert und nicht mehr ganz vertrauenswürdig sein. Bei Werten unter 1000 ppm leuchtet die eingebaute grüne LED, zwischen 1001 und 1500 ppm die gelbe LED und darüber die rote LED. Schon damit hat man einen Indikator, wann es sinnvoll sein könnte, ein Fenster zu öffnen. Die Messdaten lassen sich aber auch über die USB-Schnittstelle auslesen.

Airsensor unter Linux

Für Windows bietet der Hersteller eine Software an, nicht jedoch für Linux. Deswegen soll im Folgenden beschrieben werden, wie man den USB-Stick mit Linux auslesen kann. Das originale "airsensor"-Programm ist unter der folgenden URL herunterladbar: https://github.com/tuxedo0801/usb-sensors-linux/raw/master/airsensor/airsensor.c

Es existiert hier auch eine neuere Version, die von mir überarbeitet wurde (Code gestrafft und bereinigt, Hilfe in Deutsch, Kommentare hinzugefügt etc.).

Damit man das Programm kompilieren kann, muss die libusb installiert sein. Beim Raspberry und bei Debian-Distributionen kann die libusb mittels apt-get installiert werden:

sudo apt-get -y install libusb-dev
Gegebenenfalls müssen Sie auch noch das build-essential-Paket auf die gleiche Art und Weise installieren. Anschließend können Sie das C-Programm mit folgendem Befehl kompilieren:
gcc -Wall -o airsensor airsensor.c -lusb
Wird der Sensor eingesteckt, blinkt die eingebaute LED, bis der Sensor seine Betreibstemperatur erreicht hat. Danach leuchtet sie konstant. Mit dem Kommando dmesg | tail können Sie feststellen, ob der USB-Sensor erkannt wurde. Er identifiziert sich als HID (Human Interface Device):
   ...
[  221.367832] usb 1-1.4: new full-speed USB device number 4 using dwc_otg
[  221.480942] usb 1-1.4: New USB device found, idVendor=03eb, idProduct=2013
[  221.480954] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  221.480961] usb 1-1.4: Product: iAQ Stick
[  221.480967] usb 1-1.4: Manufacturer: AppliedSensor
[  221.487113] hid-generic 0003:03EB:2013.0001: hiddev0,hidraw0: USB HID v1.11 Device 
       [AppliedSensor iAQ Stick] on usb-3f980000.usb-1.4/input0
   ...
Nun können Sie den VOC-Pegel abfragen. Das Programm muss normalerweise als Root-User aufgerufen werden. Es gibt kontinuierlich die aktuellen Werte aus, wobei der Wert als Einheit PPM (Parts per Million)hat:
sudo ./airsensor 
2017-08-06 16:59:13, VOC: 490, RESULT: OK
2017-08-06 16:59:24, VOC: 484, RESULT: OK
2017-08-06 16:59:36, VOC: 508, RESULT: OK
2017-08-06 16:59:47, VOC: 500, RESULT: OK
2017-08-06 16:59:58, VOC: 559, RESULT: OK
2017-08-06 17:00:09, VOC: 567, RESULT: OK
2017-08-06 17:00:21, VOC: 608, RESULT: OK
2017-08-06 17:00:32, VOC: 586, RESULT: OK
2017-08-06 17:00:43, VOC: 509, RESULT: OK
2017-08-06 17:00:54, VOC: 509, RESULT: OK
^C
Bei der ersten Inbetriebnahme liefert der Sensor zunächst den Wert 450 (untere Grenze), bis er nach etlichen Minuten seine Betriebstemperatur erreicht hat. Dann genügt leichtes Anhauchen des Sensors, um von der grünen LED auf die gelbe zu wechseln.

Das Programm hat einige Aufruf-Optionen:

Deie Option "-o" macht es einfach, einzelne Werte als Datenpunkt in eine Datenbank zu schreiben, um später eine Verlaufsgrafik zu erstellen oder um die Werte über das Netz weiterzusenden.

Wenn Sie den Aufruf des Programm auch für normale Benutzer, z. B. "pi" ermöglichen wollen, richten Sie zusätzlich noch eine neue udev-Regel ein. Öffen Sie dazu (als root) eine neue Datei namens 99-airsensor.rules im Verzeichnis /etc/udev/rules.d/ und schreiben Sie die folgende Zeile hinein. Nach dem nächsten Reboot kann dann jeder User das Programm starten:

SUBSYSTEM=="usb", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2013", MODE="0666"

Testen lässt sich der Sensor am einfachsten mit einem Gasfeuerzeug. Eine winzige Dosis des Gases sorgt für "rot". Dann kann man beobachten, wie es nach einiger Zeit wieder über "gelb" nach "grün" wechselt.

Den Sensor kalibrieren

Hinweis: Bitte setzen Sie das Gerät bei Inbetriebnahme und danach immer mal wieder nach ein paar Tagen für einige Minuten frischer Außenluft aus, damit es sich wieder selber kalibrieren kann.

Der Airsensor ist auch nichts für Ungeduldige:

Ein kleiner Nachteil dieses Sensors ist, dass er sich beim Einstecken in die USB-Buchse (oder beim Einschalten des RasPi) neu kalibiriert, d. h. es wird dann selbst schlechte Luft als "gut" angezeigt. Das kann man nur umgehen, indem man den Sensor bei sauberer Luft fest kalibriert. Das geht leider nur mit dem von REHAU herunterladbaren Windows-Tool. Sie starten diese REHAU-Software ( https://www.rehau.com/de-de/privatkunden/raumluftsensor/-/1560976) und doppelklicken bei gedrückter STRG(CTRL)-Taste auf das REHAU-Logo. Nun erscheint ein Menü, bei dem Sie "edit knobs" auswählen. Dort ändern Sie den letzten Punkt in "ui16StartupBits=0" ab.

Verlaufsgrafik mit MRTG

Tobi Oetikers MRTG (Multi Router Traffic Grapher) ist ein Programm zur grafischen Auswertung und Darstellung von Messwerten (Zeitreihen). Es wurde ursprünglich für die Messung des Netzwerkverkehrs (Traffic) von Servern entwickelt. MRTG generiert HTML-Seiten mit grafischen Auswertungen für Tag, Woche, Monat und Jahr. Zum Sammeln der Daten wurde ursprünglich SNMP verwendet. Mittlerweile wird MRTG zur Visualisierung aller möglicher Daten verwendet: von der Temperatur im Serverraum bis zur Auslastung der Mailqueue. Hier wird MRTG verwendet, um den Miefpegel anzuzeigen.

Auch wenn die Konfiguration vom MRTG eine schier unübersehbare Zahl von Optionen bietet, ist das Erstellen der Konfigurationsdatei für den "Miefsensor" nicht allzu schwierig, weil Sie dazu das nun folgende "Kochrezept" verwenden können. Beim Raspberry Pi ist MRTG nicht standardmäßig verfügbar, es muss also nachinstalliert werden:

sudo apt-get -y install mrtg
Im per Konfiguration festgelegten Webverzeichnis entsteht beim ersten Aufruf eine HTML-Seite und die Grafiken. Das Verzeichnis muss allerdings vorher schon existieren. Alte Dateien löscht MRTG automatisch - beim ersten Aufruf führt das zu Fehlermeldungen, die man aber ignorieren kann. Bei allen folgenden Aufrufen werden die Grafiken aktualisiert, dabei sollte sich MRTG völlig still verhalten.

Für die Statistik des Airsensors sind zwei Dateien zu erstellen. Die erste Datei ist die Konfiguration von MRTG, die sich im der Datei /etc/mrtg.cfg befindet. Für den Miefsensor sieht deren Inhalt folgendermaßen aus:

######################################################################
# Multi Router Traffic Grapher -- Sample Configuration File
######################################################################
# This file is for use with mrtg-2.5.4c

# Global configuration
WorkDir: /var/www/htdocs/mrtg
WriteExpires: Yes

TimeStrPos[miefsensor]: RU
Target[miefsensor]: `/home/pi/Airsensor/mief.sh`
Options[miefsensor]: gauge,growright,nopercent,noo
Title[miefsensor]: Raumluftsensor
PageTop[miefsensor]: <h1>Raumluft</h1>
MaxBytes[miefsensor]: 2000
Step[miefsensor]: 300
Legend1[miefsensor]: Schadstoffe ppm
LegendI[miefsensor]: Schadstoffe
LegendO[miefsensor]:
YLegend[miefsensor]: ppm
ShortLegend[miefsensor]: ppm
Ganz zu Anfang wird das Verzeichnis festgelegt, in dem MRTG seine Webseite und Grafiken ablegt. Das muss vermutlich noch angelegt werden (mkdir /var/www/htdocs/mrtg). Das Verzeichnis ist noch leer und wird beim ersten Aufruf von MRTG mit Dateien bestückt. Wichtig ist die Target...-Zeile. Hier steht in Backtics (kein Apostroph!) der Aufruf des Kommandos, das die Daten liefert. Dieses Kommando gibt auf der Standardausgabe vier Zeilen aus: 1. Wert, 2. Wert, Uptime, Namensstring. Zwei Werte deshalb, weil MRTG ja ursprünglich für Netzwerktraffic gedacht war und da gibt es fast immer eingehende und ausgehende Daten. Mit der Option "noo" wird der zweite Wert unterdrückt.

Die zweite Datei enthält das oben angegebene Programm (/home/pi/Airsensor/mief.sh). Das ist in diesem Fall ein einfaches Shellscript rund um das Airsensor-Binary:

#!/bin/bash
# Wrapper fuer mrtg-Auswertung
VOC=$(/home/pi/Airsensor/airsensor -v -o)
echo $VOC
echo 0
echo 0
echo miefsensor
Der zweite Wert und die Uptime werden nicht benötigt und mit 0 besetzt. Wer will, kann natürlich auch das C-Programm modifizieren und dann dieses modifizierte Programm von MRTG aufrufen lassen.

Ein Cron-Job muss das MRTG-Kommando nun alle fünf Minuten aufrufen. Der Zeitabstand ist dafür entscheidend, dass MRTG die Durchschnittswerte korrekt berechnet. Für ein anderes Intervall muss die Konfiguration geändert werden, indem der Wert bei Step angepasst wird. Bei der Installation von MRTG wird bereits ein Shellscript zum Aufruf alle fünf Minuten im Verzeichnis /etc/cron.d für den cron-Daemon abgelegt.

Die folgende Grafik zeigt den Anfang der täglichen Statistik vom MRTG. Die Statistiken für Woche, Monat und Jahr sind natürlich noch leer.

EEin Nachteil beim Einsatz mit einem Raspberry Pi, der ja eine SD-Karte als Massenspeicher verwendet, sei nicht verschwiegen: Da alle fünf Minuten Schreibvorgänge auf die SD-Karte erfolgen, wird die Lebensdauer der SD-Karte verkürzt. Auf Dauer kann es sein, dass die Karte irgendwann ihre Dienste einstellt. Abhilfe kann da nur das Ausweichen auf eine "echte" Festplatte oder zumindest einen USB-Stick als Speichermedium helfen. Der hat zwar auch eine begrenzte Lebensdauer, kann aber regelmäßig problemlos ausgewechselt werden. Die SD-Karte mit dem Betriebssystem und den Programmen ist so geschützt.

Links


Copyright © Hochschule München, FK 04, Prof. Jürgen Plate
Letzte Aktualisierung: