CO2 goes Homematic – Update
CO₂-Sensor WL1030 mit Homematic & Arduino verbinden
Im Artikel „CO2 goes Homematic“ aus der ELVjournal-Ausgabe 02/2022 wurde beschrieben, wie das bei ELV angebotene CO2-Messgerät technoline WL1030, das neben einem großen, gut ablesbaren und dimmbaren Display noch viele Zusatzfunktionen wie einen optischen und akustischen CO2-Alarm und eine Anzeige von Temperatur und Luftfeuchtigkeit besitzt, in Homematic eingebunden werden kann. Ein zusätzlich eingebauter Luftdrucksensor erweiterte das Gerät zu einer fast kompletten Wetterstation. Zum Einsatz kam das ELV-Modul HM-MOD-EM-8Bit, das nach wie vor im ELV Shop verfügbar ist. Inspiriert durch den Artikel „Generische UART-Schnittstelle ELV SH Sensor Base“ aus der ELVjournal-Ausgabe 03/2025 habe ich das Design an dieses Modul angepasst – mit dem Vorteil, dass die Übertragung zu Homematic noch einfacher erfolgt.
Wie sich ein CO2-Messgerät jetzt noch einfacher in Homematic einbinden lässt
Die ELV SH Sensor Base ist dem HM-MOD-EM-8Bit bei weitem überlegen. Analoge Messwerte können direkt über mehrere Kanäle übertragen werden und mit der neuen Firmware werden diese Werte über eine einfache serielle Schnittstelle an das Modul übermittelt. Es steht sogar eine eigene Arduino Library zur Verfügung, die auch in diesem Projekt verwendet wird. Bastlerherz was willst du mehr! Für die Kommunikation mit dem CO2 Sensor wird auf den Artikel CO2 goes Homematic verwiesen. Beginnen wir mit der geänderten Schaltung aus Bild 1:

Wie in der Ursprungsversion habe ich mich für den Arduino Leonardo Micro aus zwei Gründen entschieden. Erstens ist dieser trotz seiner vielen Anschlüsse sehr kompakt, und zweitens bietet dieser zwei serielle Schnittstellen an, da die serielle Schnittstelle über den USB-Stecker von der seriellen Schnittstelle (TXO, RXI) anders als beim Arduino Uno getrennt ist. Der CO2-Sensor ist an den Receiver Eingang des Arduino Leonardo Micro (Pin RXI) angeschlossen. Da sowohl der CO2-Sensor als auch die ELV SH Sensor Base praktischerweise dieselben seriellen Übertragungsparameter nutzen, kann der Sendeausgang des Arduino (Pin TXD) für die Übertragung der Daten zur ELV SH Sensor Base erfolgen. Wie im Artikel Generische UART-Schnittstelle ELV SH Sensor Base aus ELVjournal-Ausgabe 03/2025 beschrieben, muss ein Level-Shifter zum Einsatz kommen, weil die ELV SH Sensor Base nur 3,3 V an den Eingängen verträgt. Ich habe mich für ein sehr kompaktes Modul entschieden, wobei auch viele andere verfügbare Module einsetzbar sind. Das Level Shifter Modul wird auf der einen Seite von der 5-V-Versorgung des CO2-Messgerät technoline WL1030 mit 5 V und auf der anderen Seite vom 3V3-Ausgang der ELV SH Sensor Base versorgt. Das optionale BME280-Modul ist über die I2C-Schnittstelle über SCL und SDA an den Arduino angeschlossen. Die Beschaltung der ELV SH Sensor Base folgt der Beschreibung aus dem Artikel aus ELVjournal 02/2022.
Nachbau
Nach dem Öffnen des Gehäuses werden zuerst einmal drei Kabel an den CO2-Sensor angelötet, ein rotes Kabel für die 5-V-Stromversorgung, ein schwarzes Kabel für GND und ein braunes Kabel für die Daten, wie im folgenden Bild gezeigt. Auf Kurzschlüsse ist zu achten. Das schwarze und das rote Kabel werden zuerst auf jeweils 4 Leitungen für die anderen Module aufgeteilt, mit Schrumpfschlauch isoliert und danach mit einem Heißkleber an der Hauptplatine (Bild 2) fixiert.

In einem nächsten Schritt wird der Arduino Leonardo Micro sowie das Level Shift Modul mittels doppelseitigen Klebeband an die Rückseite des Displays fixiert (Bild 3) und entsprechend verkabelt. Vor dem nächsten Schritt sollte vorher die Firmware auf den Arduino aufgespielt werden, die hier zum Download bereitsteht.

Vor dem nächsten Schritt sollte vorher die Firmware auf den Arduino aufgespielt werden. Dazu muss unbedingt vor dem Verbinden des Arduino mit dem PC über ein USB Kabel das technoline WL1030 mit dem mitgelieferten Netzteil verbunden werden. Vor dem Aufspielen der Software muss noch die Adafruit Sensor Library installiert werden. Die zweite Library zur Ansteuerung des BME280 findet sich im Verzeichnis des Source Codes und muss nicht getrennt installiert werden. Als dritte Library muss die Arduino Bibliothek für die UART-Schnittstelle installiert werden. Im Arduino Hauptprogramm WL1030_Hack.ino müssen nur wenige Anpassungen getätigt werden. In Zeile 66 kann die I2C-Adresse des BME280-Moduls geändert werden. In Zeile 67 sollte die Höhe des Standortes in Meter über dem Meeresspiegel angegeben werden. In Zeile 74 von kann der Befehl „#define _DEBUG_“ durch Entfernen der beiden „//“ (Auskommentierter Quellcode) am Beginn der Zeile aktiviert werden. Dann werden viele zusätzliche Informationen über den Serial Monitor der Arduino IDE mit 115.200 Baud ausgegeben. Das ist sehr hilfreich, wenn etwas nicht funktioniert oder der Code erweitert oder geändert werden soll. Unter Tools wird das Board „Arduino Leonardo“ ausgewählt und danach das Programm auf den Arduino Leonardo übertragen.
War das erfolgreich, so trennt man zuerst die USB Schnittstelle zum Arduino und danach das technoline WL1030 von der Stromversorgung. Da im Gerät selbst nicht viel Platz ist, um neben dem Arduino Leonardo und dem Level Shift Modul noch das ELV SH Sensor Base und das BME280-Modul unterzubringen, muss eine andere Lösung herhalten. Ich habe ein Gehäuse gefunden, das exakt zur Größe der Rückseite des technoline WL1030 und zu den Abmessungen des ELV SH Sensor Base passt.
Wie in der Ursprungsversion beschrieben wird in die Rückwand des technoline WL1030 Gehäuses und in das Zusatzgehäuse ein ca. 10mm Loch zur Durchführung der Kabel gebohrt, durch die die benötigten Kabel gesteckt werden.
Die beiden Gehäuse werden mit 2 Schrauben miteinander verbunden (Bild 4). Vor der Verkabelung müssen die Stiftleisten der ELV SH Sensor Base noch ausgelötet werden, da das Gehäuse nur eine geringe Höhe aufweist. Das gelingt am Einfachsten, indem die schwarzen Teile der Stiftleisten mit einem schwarzen Seitenschneider nach 3-4 Stiften durchtrennt werden und dann vorsichtig nach oben abgezogen werden. Die Stifte können dann einzeln ausgelötet werden. Danach werden die beiden Module nach dem obigen Schaltplan verkabelt.

Danach wird das ELV SH Sensor Base Modul über ein am Sendemodul befestigtes doppelseitiges Klebeband in die Unterschale des Zusatzgehäuses geklebt (Bild 5). Das BME280-Modul wird huckepack und isoliert mit Doppelklebeband oder einem Stück Plastik mit der ELV SH Sensor Base verklebt.

Das technoline WL1030 wird über das Steckernetzteil versorgt und die ELV SH Sensor Base wird, wie in der Bedienungsanleitung beschrieben, an die Homematic Zentrale angelernt. War dies erfolgreich, werden noch entsprechende Lüftungslöcher, wie in der Ursprungsversion gezeigt, in die andere Schale des Zusatzgehäuses an der Stelle des BME280 Sensors gebohrt und die beiden Hälften einfach zusammengesteckt.
Nun wird zunächst ein Funktionstest wie folgt durchgeführt: Das technoline WL1030 wird mit dem mitgelieferten Netzteil mit Strom versorgt und der Arduino mittels USB-Kabel an den PC angeschlossen. Wurde Debug im Code aktiviert und ist im seriellen Monitor der Arduino IDE auf eine Baudrate von 115.200 Baud eingestellt, so sollten abwechselnd alle 5 Minuten die Messwerte für CO2 und Luftdruck erscheinen.
Einbindung in Homematic
Das Arduino-Programm überträgt im Kanal 10 der ELV SH Sensor Base den CO2 Wert und im Kanal 11 den Luftdruckwert. Unter Einstellungen -> Geräte in der Homematic CCU Bedienoberfläche wird der ELV SH Sensor Base ein eindeutiger Name gegeben, im Beispiel im folgenden Bild 6 der Name „Zweiter Arbeitszimmer CO2“.

Kanal 10 habe ich als „Zweiter Arbeitszimmer CO2 CO2“ und Kanal 11 als „Zweiter Arbeitszimmer CO2 AIR“ benannt. In den Einstellungen der Kanäle können auch die Einheiten „PPM“ bzw. „hPa“ konfiguriert werden. Funktioniert alles korrekt, werden nach spätestens 10 Minuten unter Status und Bedienung > Geräte die Werte wie in Bild 7 angezeigt.

Da ich für meine Visualisierung den AIO Creator Neo verwende und dieser die Kanäle der ELV SH Sensor Base (noch) nicht kennt, möchte ich hier kurz beschreiben, wie die Kanäle 10 und 11 der ELV SH Sensor Base in Systemvariablen gespeichert werden können, die dann in der Visualisierung des AIO Creator Neo angezeigt werden. Zuerst legen wir zwei Systemvariablen (Bild 8 und Bild 9) für den CO2 Wert (Wetter-CO2-Arbeitszimmer) und den Luftdruck Wert (Wetter-Luftdruck-Arbeitszimmer) an.


Danach wird ein neues Programm unter Programme und Verknüpfungen > Programme mit dem Namen „CO2 Sensor Arbeitszimmer CO2 Wert“, wie in Bild 10 dargestellt, angelegt:

Das entsprechende Skript kann hier heruntergeladen werden.
Ein weiteres Programm mit dem Namen „CO2 Sensor Arbeitszimmer Luftdruck Wert“ wird wie in Bild 11 dargestellt angelegt:

Das entsprechende Skript kann hier heruntergeladen werden:
Beschreibung der Software
Das Arduino Programm wurde in der Arduino IDE 1.8.12 erstellt und ist nun noch einfacher und übersichtlicher aufgebaut als in der Ursprungsversion. „WL1030_Hack.ino“ besteht aus der bei Arduino üblichen Setup und Loop Routine. In der Setup-Routine wird zuerst einmal die serielle Schnittstelle für das Debug-Interface über USB – danach das ELV SH Sensor Base Modul sowie die Schnittstelle für den BME280 Sensor initialisiert. Anschließend wird überprüft, ob ein Sensor unter der voreingestellten I2C Adresse vorhanden ist.
In der Hauptroutine wird nach 5 Minuten auf den Empfang eines CO2 Wertes in der Subroutine SUB_SENSOR_CO2_VALUE gewartet. Der Empfang, die Verarbeitung und CRC Kontrolle des Wertes ist nicht ganz einfach und in der Ursprungsversion genau beschrieben. Wenn der BME280 Sensor existiert, erfolgt das Auslesen des Luftdruck-Wertes in der Subroutine SUB_SENSOR_BME280_VALUE nach weiteren 5 Minuten.
Die Kommunikation mit der ELV SH Sensor Base erfolgt über die Subroutine SUB_SEND_HOMEMATIC.