Ich bin im Rahmen meiner Recherchen bzgl. der Anforderungen an Kellerräume mit häufiger Nutzung immer wieder über den Begriff Radon gestolpert. Unser Keller wird zwar nicht als Wohnraum genutzt, sollte aber auf Grund der häufigen Nutzung entsprechenden Anforderungen entsprechen. Der Keller wird also auch vollständig beheizt und mit an die zentrale Be- und Entlüftungsanlage angeschlossen.
Radon ist ein radioaktives Edelgas und ein Zerfallsprodukt von Uran und Radium. Es steht unter dem Verdacht nach Nikotin die zweithäufigste Ursache für Lungenkrebs zu sein. Da Radon deutlich schwerer als Sauerstoff ist, sammelt sich dieses vornehmlich in Kellerräumen. Da die Strahlenbelastung deutlich schwanken kann und somit eine einmalige Messung nicht wirklich aussagekräftig ist, habe ich mich dazu entschlossen ein entsprechendes Messgerät* anzuschaffen und dieses nach Möglichkeit in das Smart-Home System zu integrieren. Die potentielle Gefährdung durch Radon ist stark wohnortabhängig. Wir befinden uns in einem Randgebiet und können somit zumindest laut vergangener Messungen mit teilweise erhöhter Radonbelastung rechnen. Wer sich bzgl. Radon näher informieren möchte, dem sei der folgende Beitrag in Focus Online nahegelegt.
- Die Messeinrichtung
- Warum eine Smart-Home Integration ?
- Integration mittels ESP32
- Finden der Bluetooth MAC Adresse
- Verarbeitung der Daten
- Links / Downloads
Die Messeinrichtung
Nach einigen Vergleichen mit Alternativprodukten, habe ich mich für das RadonEye RD-200 Messgerät des Herstellers RadonTec*entschieden. Der Plan ist die integrierte Bluetooth Low Energy (BLE) Schnittstelle zur Integration in mein Smart-Home System zu nutzen. Ein Produktvergleich würde diesen Beitrag allerdings sprengen. Wer etwas Google bemüht, findet aber sicher den ein oder anderen Vergleich mit Alternativprodukten. Neben dem RadonEye RD-200 gibt es ebendieses auch noch als RD-200+ mit bereits integrierter WLAN und Cloud Funktion. Da ich nicht feststellen konnte ob sich eine Einbindung auf Grund der bereits vorhandenen WLAN Schnittstelle als einfacher gestalten würde und ich generell kein Fan von Cloud Lösungen im Smart-Home Bereich bin, habe ich mich für die deutlich günstigere Version ohne „Plus“ entschieden. Das Gerät wird komplett mit einem Step-UP Wandler mit USB Anschluss geliefert und kann somit an jedem handelsüblichen USB „Smartphone“-Ladegerät betrieben werden. Die App für IOS und Android Geräte zum Auslesen der Messwerte ist kostenlos in den entsprechenden Stores erhältlich. Dank des Displays auf der Oberseite des Geräts, lässt sich die Messeinrichtung aber auch gänzlich ohne Smartphone oder Smart-Home Integration betreiben.
Warum eine Smart-Home Integration ?
Ich sehe die Messeinrichtung als Schutzmaßnahme für einen sicheren Aufenthalt in unseren Kellerräumen. Ich möchte also nicht aktiv bei jedem Betreten der Kellerräume zunächst mein Smartphone in die Hand nehmen und den aktuellen Messwert überprüfen. Das würde ich nach einiger Zeit einfach nicht mehr machen. Gerade wenn die Messwerte aufeinanderfolgend verschwindend Gering sein sollten, verliert der Messwert vielleicht irgendwann an Relevanz. Also muss eine Automation her. Wünschenswert wäre eine automatische Anpassung der Lüftungsstufe bei einer steigenden Radonbelastung im Keller sodass die potentielle Gefahr direkt beseitigt werden kann. Alternativ eine Benachrichtigung durch die Deckenbeleuchtung bei dem Betreten der Kellerräume sofern die Werte doch einmal ungewöhnlich hoch sein sollten. Mehr nicht.. 🙂 Ich möchte einfach nicht mehr darüber nachdenken müssen und die bloße Anzeige der Messwerte hat mit einem Smart-Home nichts zu tun. Das Haus soll sich selbst um das „Problem“ kümmern 😉
Integration mittels ESP32
Da die vergleichsweise günstigen ESP32 Module* sowohl über Bluetooth / BLE Konnektivität sowie auch über WLAN verfügen, habe ich zunächst in diese Richtung recherchiert. Nach kurzer Recherche bin ich auf GitHub auch fündig geworden. Hier hat bereits jemand auf Basis eines ESP32* die Bluetooth/BLE Kommunikation mit dem RadonEye RD-200* realisiert und die Messwerte über die serielle Schnittstelle des ESP* ausgegeben. Um diese Werte nun in ein Smart-Home System zu übertragen, galt es den bestehenden Code um entsprechende Schnittstellen zu erweitern. Genauer gesagt habe ich eine MQTT Schnittstelle implementiert um mit dem Großteil der frei verfügbaren Smart-Home Systeme kompatibel zu sein. Neben der MQTT Schnittstelle habe ich das Senden der Daten via UDP hinzugefügt um die Messwerte ohne Umwege direkt an meinen Loxone Miniserver übertragen zu können. Ich habe für die Erweiterungen einen entsprechenden Fork auf GitHub erstellt.
https://github.com/somebuddy87/Radon2LOX
Anpassung der Partitionstabelle des ESP32
Da der zur Kommunikation via Bluetooth zu verwendende Arduino Bluetooth Stack sehr groß ist, wird in der Standardkonfiguration der Programmspeicher des ESP32 zu knapp sobald man noch die Kommunikation via WLAN, UDP und MQTT hinzufügen möchte. Da in der Standard Partitionstabelle ein Teil des zur Verfügung stehenden Speichers für OTA (Over the Air Updates) reserviert wird und wir eben diese Funktion in unserem Fall nicht benötigen, wird diese Partition kurzerhand gestrichen und der Programmspeicher um die nötigen Bytes erweitert.
Ich nutze zur Programmierung Visual Studio Code mit der PlattformIO Erweiterung. Die angepasste Partitionstabelle wird im .csv Format angegeben und muss sich im Root Ordner des Projektes befinden. Danach muss die platformio.ini um den entsprechenden Eintrag erweitert werden. Nach dieser Anpassung lässt sich der ESP32 ohne Fehlermeldung beschreiben.
Inhalt der default.csv
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x140000,
app1, app, ota_1, 0x150000,0x140000,
spiffs, data, spiffs, 0x290000,0x170000,
Inhalt der angepassten no_ota.csv
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x200000,
spiffs, data, spiffs, 0x210000,0x1F0000,
Finden der Bluetooth MAC Adresse
Bevor wir mit der Integration beginnen können, wird zunächst noch die eindeutige Bluetooth MAC Adresse des RD200 benötigt. Diese steht allerdings leider auf dem Gerät noch auf der Verpackung. Wir müssen also einen Weg finden diese auszulesen. Ich habe hierfür die nächstbeste BLE Android App aus dem Playstore benutzt. Mit der App „BLE Tool“ können wir ganz einfach die Umgebung nach Bluetooth Low Energy Geräten scannen und uns die MAC Adressen der Geräte anzeigen lassen. Hierbei ist zu beachten das ihr während des Scannens und auch im späteren Betrieb nicht mehr die original App des RD200 benutzten könnt. Es kann immer nur eine gleichzeitige Verbindung bestehen.
In meiner Umgebung wurden mehrere Geräte gefunden. Der RD200 Radon Sensor konnte aber mittels Ausschlussverfahren schnell identifiziert werden.
Bei dem Gerät UCK handelt es sich um einen Cloud Key von Ubiquiti und bei dem Samsung 5 Series um den TV des Nachbarn 😉 Blieb also nur der erste Eintrag in der App übrig. Die mit dem Pfeil gekennzeichnete Zeile ist die gesuchte MAC Adresse. Solltet ihr euch nicht sicher sein, dann trennt einfach testweise den RD200 vom Strom und schaut welcher Eintrag bei einem erneuten Scan verschwindet.
Einstellungen in der Datei main.cpp
Bevor wir nun mit der Programmierung des ESP32 beginnen können, müssen in der Datei main.cpp noch die notwendigen Daten für eure Umgebung eingetragen werden.
Folgende Daten müsst ihr in eurer main.cpp vor der Programmierung anpassen:
- radon_sensor Hier muss die Bluetooth MAC Adresse eures RD200 eingetragen werden
- ssid Die SSID (Der WLAN Name) eures WLAN
- password Euer WLAN Passwort
- mqtt_server Die IP Adresse eures MQTT Servers / Brokers
- mqtt_server Der Benutzername zur Anmeldung an eurem MQTT Server / Broker
- mqtt_password Das Passwort zur Anmeldung an eurem MQTT Server / Broker
- mqttTopic_Now In diesem Topic werden alle 10 Minuten die aktuellen Messwerte veröffentlich
- mqttTopic_Day In diesem Topic wird alle 10 Minuten der Tagesdurchschnitt der Messwerte veröffentlicht
- mqttTopic_Month In diesem Topic wird alle 10 Minuten der Monatsdurchschnitt der Messwerte veröffentlicht
- udpAddress Hier wird (sofern in Verwendung) die IP Adresse des Loxone Miniservers eingetragen
- udpPort Hier wird der für die UDP Verbindung zum Miniservers gewünschte Port eingetragen.
Verarbeitung der Daten
Bauartbedingt wird durch das RadonEye RD200 Messgerät alle 10 Minuten eine Messung ausgeführt. Es macht also keinen Sinn diesen Wert öfter abzurufen. Es werden also auch nur alle 10 Minuten die jeweiligen Werte via MQTT an den Broker sowie via UDP an den Loxone Miniserver gesendet.
Verarbeitung innerhalb der Loxone Config
Innerhalb der Loxone Config habe ich für meinen Testaufbau in einem meiner Kellerräume jeweils einen Virtuellen Status für Radon Aktuell, Radon Tagesdurchschnitt und Radon Monatsdurchschnitt. Diese werden von einem virtuellen UDP Eingang mit Werten versorgt. Für den UDP Eingang habe ich eine Vorlage erstellt, welche sich einfach in die Loxone Config importieren lässt. Alternativ können die 3 Eingänge auch schnell per Hand erstellt werden.
Die Eingänge werden folgendermaßen konfiguriert:
Links / Downloads
- RadonTec RadonEye RD-200 Messgerät*
- ESP32 Dev Board*
- GitHub Repository Radon2LOX
- Template Loxone Virtuelle Eingänge
Die mit Sternchen (*) gekennzeichneten Links sind sogenannte Affiliate-Links. Wenn du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekomme ich von dem betreffenden Online-Shop oder Anbieter eine Provision. Für dich verändert sich der Preis nicht.