====== VOC-Sensor (Messung der Luftqualität) ====== ===== Project information ===== ? Maintainer: : [[user:mg-95|Max2]] ? Interessenten: : [[user:tux]], [[user:dkdent]] ? Status : Planning ---- ## ESPHome Firmware Verwendet diese esphome Firmware: https://git.unhb.de/smash/co2ampel ## Vorhaben Um zu Corona-Zeiten die Luftqualität im Netz39 messen zu können, wird geplant, einen VOC-Sensor zu verbauen. Warum der VOC-Gehalt gemessen werden soll und eine CO2-Messung nicht ausreicht, kann man hier nachlesen: [PDF](https://sensortec.ch/wp-content/uploads/documents/de/%5B6%5DAllgemeine%20Infos%5Bgrey%5D/Unterschiede%20VOC%20und%20CO2%20Messung.pdf) ### Related Work [Watterot hat auch ne CO2 Ampel](https://github.com/watterott/CO2-Ampel), die kann man direkt kaufen, [wenn man reich ist](https://github.com/watterott/CO2-Ampel) ### Sensor In der Make-Zeitschrift 5/20 wird eine [CO2-Ampel](https://www.heise.de/select/make/2020/5/2022015381334973804) vorgestellt, die sowohl CO2 als auch VOC misst. Dort wurde für die VOC-Messungen der Sensor [BME680 von Bosch](https://www.bosch-sensortec.com/products/environmental-sensors/gas-sensors-bme680/) verwendet. Dieser ist ziemlich klein, für low-power-Anwendungen geeignet und lässt sich über I2C/SPI ansprechen. Der Sensor kann zusätzlich zu VOC-Messung außerdem die Temperatur, Luftfeuchtigkeit und Luftdruck messen. (Die drei Sachen werden benötigt, um die VOC-Messgenauigkeit zu gewährleisten) #### Sensor-Firmwaretreiber Bosch hat die Treiber für die Sensoren auf [github](https://github.com/BoschSensortec/BME680_driver) veröffentlicht. Bosch hat die Arduino-Bibliothek für die Sensorfusion als Binaryblob auf [github](https://github.com/BoschSensortec/BSEC-Arduino-library) veröffentlicht. Von Adafruit gibts einen [Arduino](https://github.com/adafruit/Adafruit_BME680) und einen [CircuitPython](https://github.com/adafruit/Adafruit_CircuitPython_BME680) Treiber ### Firmware [Hier](https://github.com/24367dfa/bme680_esp32) bastelt David mit RIOTos an der Firmware auf einem esp32. Übertragung der Daten geplant per WiFi und MQTT. [Arduino Code Beispiel](https://gist.github.com/JavanXD/e18d510216599d678d1f380f82a6841e) für die Berechnung eines AirQualityIndex ### Datenübertragung Die Übertragung kann über BLE geschehen, sofern der Sensor mit Batterien betrieben werden soll. Bei einer festen Stromversorgung kann sie auch über ESP/WiFi oder CAN stattfinden. ### Frontend Die Daten sollen auf OpenHab gesammelt werden und dort ausgewertet werden und ggf. eine Statusmeldung zur Luftqualität im Space veröffentlicht werden. * Openhab nutzt für Persistenz auch nur 3rd-Party-Datenbanken, z.B. * https://www.openhab.org/addons/persistence/rrd4j/ * https://www.openhab.org/addons/persistence/influxdb/ * Wir könnten die Daten auch direkt in einer Influxdb abliefern. (Dann muss man nicht zwingend OpenHab haben.) * MQTT → InfluxDB ist möglich * http://nilhcem.com/iot/home-monitoring-with-mqtt-influxdb-grafana * https://github.com/mhaas/mqtt-to-influxdb-forwarder * D.h. letztendlich reicht es für den VOC-Sensor, Daten in einem MQTT-Topic abzuladen. Der Rest kann bequemer auf einem RPi oder in einem Docker-Container gemacht werden. ### Diskussion - [tux] Wie wäre es mit einem komponentenbasierten Design? - eine Komponente ist der VOC-Sensor, der für alle gleich sein kann - zweite Komponente: Steuerung/Kommunikation, z.B. BLE mit STM oder WiFi mit ESP - dritte Komponente: Stromversorgung: Batteriebetrieben oder mit ext. Versorgung - [maxD] Wollen wir RIOT OS benutzen? Das hat sogar schon einen Treiber dafür: [Externer Link](https://doc.riot-os.org/group__drivers__bme680.html) ### ToDo-Liste - Batteriebetrieb oder Kabelgebunden - David hat Breakoutboards bestellt, sind angekommen - Design der Platine - Sammlung der Daten in OpenHab - OpenHab-Indikator, dass gelüftet werden muss oder Luftfilter anwerfen