ESP32 als BLE-Gateway für Xiaomi Mijia BLE Temperatur- & Feuchtigkeitssensor
Der Xiaomi LYWSD03MMC Feuchtigkeitssensor ist einer der beliebtesten BLE-Sensoren auf dem Markt — günstig, batteriebetrieben und mit einem ESP32 als BLE-Gateway leicht zu integrieren.
Maschinell aus dem Englischen übersetzt, vom Autor geprüft. Englisches Original
Problemstellung
Zu viele ungenutzte BLE-Sensoren, zu viel Zeit während des COVID-19-Lockdowns — lass uns noch mehr Sensoren hinzufügen! Nur weil wir es können…
Nein, im Ernst. Ich hatte in mehreren Bereichen meines Hauses stark mit zu hoher Luftfeuchtigkeit zu kämpfen. Nach dem heißen Duschen im Bad kondensierte die Feuchtigkeit am Fenster, was das Risiko von Schimmelbildung erhöhte. Im Keller, wo unsere Lebensmittelvorräte lagern, hatten wir Probleme mit feucht werdendem Salz. Und da ich außerdem ein Riffbecken besitze, das an mein Smart-Home-System angebunden ist und das Wasser über Verdunstung kühlt, ist die Luftfeuchtigkeit im Wohnzimmer ebenfalls eine sehr interessante Messgröße. Also wa
BLE-Sensoren mit Home Assistant verbinden
Home Assistant bietet bereits eine eigene Integration für Xiaomi-Mijia-Sensoren[arch], daher läge es nahe, einfach einen BLE-Stick anzuschließen und loszulegen. Aus zwei Gründen habe ich mich gegen diese Option entschieden:
- BLE ist dafür gemacht, Geräte in direkter Sichtverbindung zum steuernden Gerät (oder zumindest in dessen unmittelbarer Nähe) zu steuern. Da meine Sensoren im ganzen Haus verteilt sein werden, könnte ein einzelner BLE-Stick in meinem Serverschrank möglicherweise nicht mit allen Sensoren kommunizieren.
- Ich versuche konsequent, die Verarbeitung / Darstellung meiner Smart-Home-Daten von der Datenerfassung / Hardware-Anbindung zu trennen. Vor ein paar Jahren habe ich mit OpenHAB[arch] auf einem Raspberry Pi angefangen, der direkt mit jeder einzelnen Hardware verbunden war. Das endete darin, dass Dutzende Kabel durch meine Wohnung liefen, nur um einen DS18S20 auf dem Balkon anzuschließen. Dahin will ich nicht zurück!
Ein ESP32-Board in ein BLE-Gateway verwandeln
Auch hier habe ich mich auf meine bevorzugte ESP-Firmware Tasmota[arch] verlassen. Zum Glück hat Tasmota vor einigen Versionen ESP32-Unterstützung[arch] eingeführt. Auch wenn sie offiziell noch im Beta-Stadium ist, funktioniert zumindest die BLE-Kommunikation absolut zuverlässig.
- Folge den Anweisungen hier[arch], um deinen ESP mit der erforderlichen Firmware zu flashen. Achte darauf, die ESP32-Binary mit dem Suffix
bluetoothzu verwenden, damit alle benötigten Treiber enthalten sind. - Logge dich in die Tasmota-Web-UI ein und navigiere zu
Configuration->Configure BLEund aktiviereEnable Bluetooth. - Sobald du die Einstellungen speicherst, sollten in der darunterliegenden Liste
Devices Seenalle Arten von BLE-Geräten aufgeführt werden.
Jetzt ist alles bereit, um deinen ESP32 als BLE-Gateway zu nutzen. Konfiguriere ihn einfach so, dass er mit deinem MQTT-Server spricht, genau wie du es bei jedem anderen Tasmota-Gerät auch tun würdest.
Individuelle Firmware für BLE-Sensoren
Die LYWSD03MMC-Sensoren von Xiaomi kommen bereits mit einer Werksfirmware, die sich sofort verwenden lässt, um sich mit deinem Gateway zu verbinden. Es gibt jedoch einige Nachteile:
- Der Batteriestatus wird nicht korrekt gemeldet
- Eine aktive Verbindung ist nötig, um Daten abzufragen — das entlädt die Batterie sehr schnell
- Vertraue niemals einer Nicht-Open-Source-Firmware ;-)
Eine individuelle Firmware auf das Gerät zu bringen ist ziemlich einfach. Folge einfach den großartigen Anleitungen im Repository von atc1441[arch], um sie zu flashen. Für den Flash-Vorgang selbst benötigst du keine zusätzlichen Tools. Es gibt ein browserbasiertes Tool, das in allen modernen Browsern funktioniert.
Fazit
Ich habe jetzt drei dieser Sensoren mit meinem Home Assistant verbunden. Weitere sind bereits bestellt. Die Verbindung ist absolut zuverlässig, und dank der individuellen Firmware werde ich auch benachrichtigt, falls einem der Geräte bald der Akku ausgeht. Vorgefertigte Geräte zu verwenden, statt meine eigene Schaltung zu bauen, hat mir eine Menge Zeit gespart. Definitiv empfehlenswert!