Robins Blog – Technik und Multimedia

Fhem – TVOC CO2 Temperatur Luftfeuchte Luftdruck Luftqualität messen

Update 10.04.1019 Bitte beachtet auch meinen Blogbeitrag für Tasmota

Die Überschrift sagt alles: Mein Wochenend-Projekt war diesmal eine Intelli-Cloud. Eine 3d-gedruckte Wolke mit einigen Sensoren drin. Diesmal war es der CCS811-Sensor und ein BME280. Der CCS811 Sensor misst VOC und CO2 in der Luft und der BME 280 die Temperatur, Luftfeuchte und den Luftdruck.


Um die 3D-gedruckte Wolke nicht allzu blass aussehen zu lassen, habe ich ihr einen RGB-LED-Stripe (8 LEDs) spendiert. Alles läuft in einem Wemos D1 Mini zusammen. Je nach Luftqualität ändert sich die Farbe der LEDs.  Hier habe ich optisch die LEDs halbiert, die ersten zwei zeigen den CO2 Gehalt an die letzten zwei den VOC.
Parallel dazu werden die Daten noch  per MQTT zu Fhem gesendet. Gemessen wird jede Minute. Als Spannungsversorgung wird standardmäßig 5Volt usb verwendet.
Hier nochmal die verwendeten Bauteile zusammengefasst (nachfolgend amazon.de Links):

Software:
Hier habe ich als Basis diese Software genommen. Jedoch um die RGB-Stripe Funktionalität erweitert und einige Bugs entfernt.
Verdrahtung:
Diese ergibt sich eigentlich aus der Software jedoch nochmal kurz aufgeführt.
CCS811:
3,3 V
GND
D1 SDA -> GPIO4
D2 SCL -> GPIO5
Wake an D8 oder GND
BME 280:
5 V
GND
D1 SDA -> GPIO4
D2 SCL -> GPIO5
RGB Stripe:
5 V
GND
D7 Signals

Drucken: 3d Wolke bei Thingiverse

Fhem: Hier sieht das Script eigentlich immer gleich aus.

defmod ccs811bme280 MQTT_DEVICE
attr ccs811bme280 IODev MyBroker
attr ccs811bme280 room MQTT
attr ccs811bme280 stateFormat status
attr ccs811bme280 subscribeReading_altitude /ccs811bme280/altitudev
attr ccs811bme280 subscribeReading_co2 /ccs811bme280/co2
attr ccs811bme280 subscribeReading_humidity /ccs811bme280/humidity
attr ccs811bme280 subscribeReading_pressure /ccs811bme280/pressure
attr ccs811bme280 subscribeReading_status /ccs811bme280/status
attr ccs811bme280 subscribeReading_temperature /ccs811bme280/temperature
attr ccs811bme280 subscribeReading_tvoc /ccs811bme280/tvoc
attr ccs811bme280 userReadings co2SensorLiteral {my $wertlit="";;my $v = ReadingsVal("ccs811bme280","co2","0");; if ($v < 700){ $wertlit = "perfekt";;} elsif (($v >700) && ($v<1400)) {$wertlit = "mäßig";; ;; $wertlit} elsif (($v >1400) && ($v<5000)) {$wertlit = "schlecht";; ;; $wertlit}}

 

Viel Spaß mit der Intelli-Cloud!

Bei Fragen, ab in die Kommentare!

Die mobile Version verlassen