ioBroker: USB-Raumluft-Sensor Daten über MQTT übertragen

in #iobroker7 years ago

Ich besitze seit einigen Jahren den USB-Raumluft-Sensor (amazon-affili), welcher direkt an meinem Raspberry Pi angeschlossen ist. Der Sensor hat folgende Eigenschaften:

Messung der Raumluftqualität auf Basis flüchtiger organischer Verbindungen (VOCs)
Schnelle Anzeige von Luftschadstoffen wie verbrauchter Atemluft, Gerüchen in Küche oder Bad, Nikotin, Lösemitteln, ungesunden Ausdünstungen von Reinigungsmitteln, Farben, Lacken, Kunststoffen, Computern u.v.m..
REHAU Raumluftsensor USB Stick
REHAU Raumluftsensor USB Stick
Preis: EUR 34,95

Einen zweiten Sensor habe ich an einem zweiten Raspberry Pi angeschlossen, welcher im Büro steht. Hier dient er zur Messung der Luft bei einem eingeschalteten 3d Drucker. Die Übertragung der Daten zur Visualisierung und Bündelung mit FHem habe ich damals mit Fhem2Fhem gemacht. Hierzu wurde der Telnet-Port 7072 benutzt.
Im Zeitalter von MQTT fand ich das aber nicht mehr zeitgemäß. Deshalb habe ich am zweiten Pi die Software überarbeitet, sodass die Daten jetzt direkt über MQTT einlaufen. So ist es kein Problem mehr Raumluftqualitätsdaten (VOC) für Node-Red oder ioBroker abzurufen.

Als Basis benötigt man den USB-Raumluft-Sensor und einen Raspberry-Pi. Ein alter Raspi 1 genügt auch.

Anschließend verwendet man das kompilierte C-Programm, wie ich es hier in meinem Blogbeitrag vom Jahr 2016 beschrieben habe. Es wird dann mit airsensor aufgerufen und gibt den jeweiligen VOC-Wert heraus.

https://pastebin.com/xJSM4dgv

Hierzu muss vorher die Library von Raphael Cohn (Bish-Bosh) installiert werden, die hier zu finden ist.

Als Topic habe ich
/airquality/buero/voc
welcher dann im mqtt-spy später so zu sehen ist.

Damit ständig neue Raumluft-Daten gemessen werden können, habe ich ein Cronjob crontab -e angelegt.
Die Pfade und die Abrufzeiten solltet ihr anpassen. Bei mir wird jede Minute das Script angestossen.

*/1 * * * * /root/bish-bosh/bish-bosh --verbose 2 -- /root/bish-bosh/airsensormqtt

So könnt ihr jetzt mit ioBroker oder Node-Red die Daten abfangen und weiter verarbeiten.

In Fhem sieht dann das Script so aus

defmod airqualityRehau MQTT_DEVICE
attr airqualityRehau IODev MyBroker
attr airqualityRehau room 60_Raumklima
attr airqualityRehau stateFormat transmission-state
attr airqualityRehau subscribeReading_voc /airquality/buero/voc

Update 03.05.2018: Wie bekommt Fhem mit, wenn keine Daten gesendet werden, z. B. zweiter Raspi down oder Sensorausfall?

Wenn ein Event vom Sensor airqualityRehau ausbleibt, sende eine Telegram-Message set user1 message Rehau-Raumluftsensor ausgefallen . Prüfe das alle 600 Sekunden und setze den Watchdog resetwait zurück.
Dieses Script kann man auch für andere Devices nehmen, um zu checken, ob die Sensoren noch senden.

defmod RehauRaumluft_push DOIF ([airqualityRehau])(set user1 message Rehau-Raumluftsensor ausgefallen)
attr RehauRaumluft_push do resetwait
attr RehauRaumluft_push room 91_Funktionen
attr RehauRaumluft_push stateFormat wait_timer
attr RehauRaumluft_push wait 600

Kaufen bei amazon.de: REHAU Raumluftsensor USB Stick
http://www.amazon.de/gp/product/B00ZXP6EI4/ref=as_li_tl?ie=UTF8&camp=1638&creative=19454&creativeASIN=B00ZXP6EI4&linkCode=as2&tag=hausauto-21

Sort:  

I think I read this article somewhere else. Deja vu.

Coin Marketplace

STEEM 0.24
TRX 0.25
JST 0.039
BTC 96247.25
ETH 3349.36
USDT 1.00
SBD 3.28