CO2cloud Software

Softwareauswahl

Für die benötigten Funktionen und die verwendete Hardware gibt es in den Entwicklungsumgebungen für den ESP8266 die entsprechenden Libraries und man kann sich relativ schnell ein passendes Programm zusammenstellen.

Noch einfacher wird es aber mit einem der verfügbaren Controller-Systemen (Tasmota, ESP Easy), die alles bereits fix fertig mitbringen und nur mehr konfiguriert werden müssen. Da ich schon länger SONOFF devices mit Tasmota von der Chinacloud befreie, habe ich mich für Tasmota entschieden.

Tasmota flashen

Tasmota gibt es als Binary in verschiedenen Varianten je nach geplantem Einsatzgebiet. Sensoren sind i.A. nur in der Sensorversion vorhanden, daher benötigen wir tasmota-sensors.bin in der aktuellen Version.

Bei der Variante mit einer IR-LED zur Fernsteuerung des TV Gerätes im Zimmer wäre tasmota-ir.bin notwendig, das allerdings keine Sensorunterstützung enthält (welches Binary welche Funktionen enthält findet man im Detail hier). In diesem Fall müssen wir eine eigenes Tasmota Binary mit IR und Sensorunterstützung kompilieren.

Das Flashen geht am einfachsten mit dem Tasmotizer. ESP8266 am USB Port des Computers anschließen, mit Tasmotizer flashen, damit danach gleich die WLAN Daten übertragen und warten bis Tasmota sich mit dem WLAN verbunden hat. Der Tasmotizer zeigt dann die zugewiesene IP-Adresse des Geräts an. Jetzt kann das Gerät vom USB Port getrennt und mit dem eigenen Netzgerät versorgt werden.

Konfiguration

Jetzt wird die IP-Adresse des Geräts in den Browser eingegeben und das Gerät meldet sich mit dem Standardmenü. Mit –> Configuration kommt man in die Konfigurationsübersicht. Als erstes wählen wir hier Configure Other und vergeben ein Web Passwort. Hier kann man dem Gerät auch einen Namen geben und, falls benötigt, MQTT enablen.

Mit Configure Module kommt man zur Gerätekonfiguration, bei der die angeschlossenen Sensoren/Komponenten den verwendeten GPIO Pins zugeordnet werden. Folgende Einstellungen werden benötigt:

  • Module type –> Generic(18)
  • D4 GPIO2 –> MHZ Rx
  • D7 GPIO13 –> Buzzer (oder IRsend)
  • D5 GPIO14 –> MHZ Tx
  • D8 GPIO15 – -> WS2812

Wenn man MQTT enablet hat, müssen noch unter Configure MQTT die MQTT Parameter (Server, Credentials, Topics) eingegeben werden. Tasmota meldet seine Daten dann alle 5 Minuten dem MQTT Server. Dieses Intervall kann unter Configure Logging – Telemetry Periode verändert werden (oder später über die Console).

Im Hauptmenü sollten jetzt nach kurzer Zeit die Messwerte des MH Z19B erscheinen. Die gemeldete Temperatur entspricht allerdings nicht der Raumtemperatur und manche Modelle des MH Z19B melden auch Werte um 0. Für eine Temperaturmessung müssten wir dem Gerät noch einen BMP280 spendieren. Da wir LEDs konfiguriert haben, erscheinen im Hauptmenü auch die entsprechenden Regler dafür, die auch sofort funktionieren.

Die weiteren Einstellungen müssen über den Punkt Console vorgenommen werden. Damit gelangt man in eine Console, in der eine Vielzahl von Befehlen abgesetzt werden können und wo man auch entsprechende Rückmeldungen erhält.

Folgende Einstellungen müssen hier vorgenommen werden:

  • savedata 0
    Zur Schonung des Flashspeichers wird das ständige Speichern (jede Sekunde) der Parameter abgeschaltet, da man so schnell auf viele tausend Writes kommt(unter Menüpunkt Information ablesbar).
    Achtung: Damit werden alle weiteren Änderungen nicht mehr automatisch gespeichert und müssen manuell (siehe letzten Befehl) gespeichert werden. Das gilt auch für die späteren Regel-Definitionen.
  • setoption0 off
    Zur Schonung des Flashspeichers wird das ständige Speichern des Zustandes (gedacht für Wiederanlauf nach Stromausfall) abgeschaltet. Da jeder Messwert den Zustand ändert (Farbe) kommt man auch damit auf viele Writes.
  • setoption18 on
    Magic happens here! Wir pairen den CO2 Sensor mit der LED-Farbe! Ab sofort ändert sich die Farbe der LEDs entsprechend der Messergebnisse des MH Z19B Sensors. Fix voreingestellt ist grün bis 800ppm, rot über 1200ppm und ein Farbverlauf dazwischen. Diese Grenzen können nur mit einem Kompilieren des Binaries geändert werden, haben sich aber als gut gewählt herausgestellt.
  • timezone 99
    Zeitangaben berücksichtigen Sommer-/Winterzeit.
  • poweronstate 0
    Bei Restart/power up die LEDs abdrehen. Default ist letzter Status, der aber falsch ist, da wir ihn nicht speichern.
  • teleperiod 120
    Hier wird festgelegt, in welchen Zeitintervallen (in Sekunden) die Messergebnisse an den MQTT Server gemeldet werden.
  • restart 1
    Damit werden die Änderungen gespeichert und Tasmota neu gestartet.

Der letzte Schliff

In Tasmota kann man 3 Event getriebene Regelsätze definieren um eine Automatisierung zu implementieren (siehe Rules). Die Regeln sind jeweils in einer Zeile einzugeben.

  • rule2 on tele-MHZ19B#CarbonDioxide>1200 do buzzer 1,1,1,0xa8eee2a break on tele-MHZ19B#CarbonDioxide>900 do buzzer 5 endon
    Der eingebaute Buzzer wird mit Regelsatz 2 gesteuert. Bei einem CO2 Wert über 900ppm piepst er 5 mal, ab 1200ppm piepst er SOS.
  • rule3 on time#minute<480 do hsbcolor3 20 break on time#minute>=480 do hsbcolor3 50 endon
    Es hat sich gezeigt, dass die gute Sichtbarkeit der Anzeige bei Tag in der Nacht als störend empfunden wird. Daher wird die Helligkeit von Mitternacht bis 08:00 auf 20% reduziert, sonst beträgt sie 50%. Alternativ kann sie auch schon vor Mitternacht reduzuiert werden, die Regel wird dadurch etwas länger und sieht so aus (20:00-08:00):
    rule3 on time#minute<480 do hsbcolor3 2 break on time#minute<1200 do hsbcolor3 50 break on time#minute>=1200 do hsbcolor3 2 endon
  • RULE1 ON System#Init DO color #000000 ENDON ON Mqtt#Disconnected DO led1 3 ENDON ON Mqtt#Connected DO color #404040 ENDON
    Diese Regel dient zum Testen und um zu sehen, was das Gerät im Normalbetrieb macht. Das Gerät leuchtet dazu blau, wenn es die Verbindung zum MQTT Server verliert und weiß, wenn es sie wieder erhält oder wenn das Gerät restartet wurde. Die Farbe wird nach kurzer Zeit durch die CO2 Anzeige überschrieben.

Wichtig! Die Regeln müssen explizit aktiviert werden:
RULE1 1
RULE2 1
RULE3 1

Kalibrieren

Abschließend muss noch der Sensor kalibriert werden. Dazu bietet Tasmota 2 Möglichkeiten (siehe sensor15).

  1. Defaultmäßig ist durch Tasmota die AutoKalibrierung aktiviert (Befehl sensor15 1). Damit kalibriert sich der Sensor selbst anhand des niedrigst gemessenen Wertes der letzten Wochen. Damit das funktioniert muss man das Gerät am Besten für 20 Minuten ins Freie stellen oder das Zimmer besonders gut lüften. Das sollte man regelmäßig wiederholen (also zumindest 1 x im Monat richtig durchlüften).
  2. Alternativ kann man die Autokalibrierung mit sensor15 0 abschalten und bei gut gelüftetem Raum oder im Freien per Befehl sensor15 2 kalibrieren. Auch das sollte dann von Zeit zu Zeit (alle 3-4 Monate) wiederholen.

2 Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert