Ziel: CO2 Sensor unter Linux nutzen, aktuelle ppm Werte mitschreiben und als Grafik anzeigen
Die Beschreibung bezieht sich auf Debian Stable.
Inzwischen als Debian Paket im Mainstream enthalten.
Quellen: https://thinserv2.at-inet.de/~benedikt/air-quality-sensor/
Benötigt werden für einen skole-messdaten-server
- USB-Stick z.Z. von z.B. Velux oder Voltkraft
Unseren Raumluftfühler können Sie mit der Artikelnummer XDE WG31011 für 23,74 € inkl. Versand und MwSt bei uns bestellen. VELUX Deutschland GmbH Beratung Privatkunden Gazellenkamp 168 D-22527 Hamburg
- Rechner mit Debian stable minimal Installation ohne Grafik
- zusätzliche Software:
- air-quality-sensor (ganz neu!)
- gawk zum Aufbereiten der logfiles
- gnuplot um eine Grafik zu erzeugen
- minimalen Webserver um die Ergebnisse anzuzeigen
C02 Sensor kalibrieren
Der Sensor macht im Auslieferungszustand nur Relativwertmessungen weil er sich beim Einschalten selber kalibriert wobei er die jeweilige Umgebungslust als "Null" definiert.
Das läßt sich wie folgt ändern:
Dazu ist noch ein Windows Betriebssystem erforderlich: Airmonitor starten, STRG drücken und auf das Logo 3x klicken ergibt Expertenmodus.
Dann "Support Tools" - "Edit knobs"
Dort gibt es auch eine Option "ui16StartupBits". Diesen auf 0 und er kalibriert sich NICHT beim jedem neuen Aufstarten.
HGM: Option "ui16StartupBits = 0". Das funktioniert! Dann erfolgt keine neue Kalibrierung. Es muss also nur einmal richtig kalibriert werden und dann läufts.
CO2 Sensor finden
lsusb
sollte den USB Stick anzeigen, etwa:
Bus 002 Device 004: ID 03eb:2013 Atmel Corp.
UDEV Regel anlegen
- UDEV Regel anlegen, damit ein auch normaler User die Software nutzen kann
- als root:
# cd /etc/udev/rules.d # echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="03eb", ATTR{idProduct}=="2013", GROUP="air-quality-sensor" '> 90-air-quality-sensor.rules
Als Root die Aktualisierung aufrufen:
# udevadm trigger
Jetzt können alle User der Gruppe air-quality-sensor die USB Sticks abfragen.
- crontab zur Zeitsteuerung
- ein Verzeichnis für die logfiles
- ein Verzeichnis für die scripte
Hinweise
Der Stick ist in der Lage die gemessene Daten auch ohne PC Anbindung in seinen internen Speicher abzulegen.
Dazu AirMonitor aufrufen. Dann das Menü "About" aufrufen. Dann im erscheinenden Fenster doppelt auf das Logo klicken. Das aktiviert den Expertenmodus. Dadurch erscheint ein neues Menü namens " Support Tools". Dort dann "Edit knobs" anklicken und nach "LogInterval" suchen. Hier ist es möglich eine Zahl ungleich Null einzugeben was zur Folge hat dass der Stick die gemessenen Daten in sein RAM ablegt solange er nicht mit einem PC verbunden ist und mit Strom versorgt wird (der einzugebene Wert wird als Sekunden interpretiert).
Auslesen geht dann mit "Download flash" im "File" Menü.
Nachteil beim Betrieb: Wenn der USB Stick angeschlossen wird dann kalibriert er sich erst einmal selbst auf die jeweilig vorhandene Umgebungsluft und setzt diesen Wert dann als Referenz. Wenn man ihn also in einem ungelüfteten Raum anschliesst dann wird er immer grün anzeigen. Gelb oder rot würde es dann nur werden wenn die Luft relativ gesehen schlechter wird.
Also ist die richtige Vorgehensweise so: Zuerst den USB Stick einer als gut bezeichneten Luft aussetzen, dann den Stick an USB anschliessen (mit Spannung versorgen) . Warten bis der "WARMUP" fertig ist (Grüne LED blinkt nicht mehr). Erst dann sollte der Stick ohne dass er vom USB getrennt wird in den Wohnraum geholt werden und dann zeigt er auch die Luftqualität innerhalb von Räumen relativ zu der Luft im Freien an.
HGM: Ich habe das mal gemacht mit der Kalibrierung an der frischen Luft. Dann passen die Werte ziemlich genau (+-50 ppm) zu meinem anderen CO2-Messgerät.
Lösung dafür:
Der Sensor macht im Auslieferungszustand nur Relativwertmessungen weil er sich beim Einschalten selber kalibriert wobei er die jeweilige Umgebungslust als "Null" definiert.
Das läßt sich wie folgt ändern:
Dazu ist noch ein Windows Betriebssystem erforderlich
Airmonitor starten, STRG drücken und auf das Logo 3x klicken ergibt Expertenmodus.
Dann "Support Tools" - "Edit knobs"
Dort kann man die Warnlevel einstellen und dort gibt es auch eine Option "ui16StartupBits". Diesen auf 0 und er kalibriert sich NICHT beim jedem neuen Aufstarten.
Im Loggingmode loggt er immer eine neue Session wenn er eingesteckt wird. Damit kann man also von Zimmer zu Zimmer gehen.
Dann unter "File" Download "Flash gehen".
Wenn der Speicher voll ist dann überschreibt er alte Daten.
HGM: Option "ui16StartupBits = 0". Das funktioniert! Dann erfolgt keine neue Kalibrierung. Es muss also nur einmal richtig kalibriert werden und dann läufts.
Weitere Links
http://forum.micasaverde.com/index.php/topic,4705.0.html
http://code.google.com/p/airsensor-linux-usb/wiki/About
http://wiki.micasaverde.com/index.php/CO2_Sensor#air.c_source_code
http://www.appliedsensor.com/products/indoor-air-monitor.html
Entwurf für eine Präsentation bei der FrosCon 2014
- Sticks kaufen
- Software vorstellen
- Jan-Benedict und Benedikt Wildenhain, Debian Paket
- entsprechendes Packet wählen
- Voraussetzung UDEV Regel User soll in Group dialout sein
- Aufruf air01
- Jan-Benedict und Benedikt Wildenhain, Debian Paket
- Beispiel Logdatei
- Beim Aufwärmen:
- Device 002:3,value = 450, quality = BLINK
- Beim Betrieb:
- Device 002:3,value = 524, quality = GREEN
- Beim Aufwärmen:
- Beispiel-Implementation
- Cronjob anlegen
- crontab -e
- */5 * * * * /home/kurt/bin/co2ppm.sh
- Ausführbare Datei co2ppm.sh mit Inhalt
tail -1 co2ppm_fortluft.log | grep 'Device 002:3' | sed 's#,# #g' | awk '{print strftime("%y%m%d %H:%M")" "$5}' >> technikluft.co2ppm.log
- Die beiden Logfiles unterscheiden sich hautsächlich durch den Zeitstempel
- tail co2ppm_fortluft.log
- Device 002:3,value = 524, quality = GREEN
- tail technikluft.co2ppm.log
- 140810 15:45 524
- Solch ein Logfile kann nun mit gnuplot in eine Grafik umgewandelt werden
- Cronjob anlegen