maltepöggel.de

ESP8266 MiLight Hub

Smart-Home Gateway für MiLight Leuchtmittel

Bild: Gateway im Außengehäuse

Auf der Suche nach bezahlbaren Beleuchtungsmöglichkeiten für den Garten stieß ich auf die Komponenten des asiatischen Herstellers MiLight. Das Sortiment umfasst nicht nur Leuchtmittel in gängigen Fassungen wie E27 oder GU10, sondern auch wasserdichte RGB Spots mit IP65 Zertifizierung für den Außenbereich.

Zur Steuerung von Farbe, Helligkeit und weiteren Funktionen kann eine Funkfernbedienung oder das passende WLAN Gateway mit Smartphone App verwendet werden. Die Lampen können dabei auf mehrere Fernbedienungen angelernt werden. Wird das Gateway benutzt, übersetzt dieses die Steuerbefehle auf das selbe, unverschlüsselte 2,4GHz Protokoll, welches auch von der Fernbedienung verwendet wird. Der Vorteil eines zentralen Gateway gegenüber Systemen, bei denen jede Glühbirne selbst ins WLAN eingebunden wird, ist der geringere Stromverbrauch sowie die einfachere Konfiguration. Zugangsdaten für das Netzwerk sind nur im Gateway gespeichert.

Die Funktionalität des originalen WLAN Gateways ist weitesgehend auf die Benutzung mit der App beschränkt. Zwar gibt es ein UDP Protokoll, dieses ist jedoch kaum dokumentiert und abhängig von dem Softwarestand des Gateways sehr unterschiedlich.

Das 2,4GHz Funkprotokoll der Fernbedienung hingegen wurde bereits von Henryk Plötz reverse-engineered und entsprechend gut dokumentiert. Das folgende Projekt baut darauf auf.

Ein eigenes WLAN Gateway im Selbstbau

Bei weiterer Recherche fand ich das Projekt ESP8266 MiLight Hub von Chris Mullins auf GitHub. Der ESP8266 MiLight Hub ersetzt das Gateway des Herstellers. Die Fernsteuerung über WLAN kann von jedem Smartphone, Tablet oder PC direkt aus einem Webbrowser erfolgen. Die Installation einer App ist nicht nötig. Zur Einbindung in eigene Smart-Home Projekte existiert eine REST API sowie einen MQTT Client. Ein Test auf dem Steckbrett konnte mich überzeugen.

Nun fehlte mir also nur noch eine passende Platine im Außengehäuse zu diesem Projekt, die ich in den kommenden Tagen entwarf.

Bild: Schaltplan

Die Schaltung orientiert sich dabei an den minimal nötigen Komponenten wie sie auf jedem ESP8266 Entwicklungsboard zu finden sind.

Pull-Up bzw. Down Widerstände an den GPIO Pins 0, 2 und 15 sorgen dafür, dass der ESP von seinem internen Flash-Speicher bootet. Zur Programmierung ist ein CH340 USB zu Seriell Wandler verbaut. Die beiden Transistoren sperren die Datenleitungen RTS und DTR gegeneinander, welche beim Flashen zum Reset und starten des Bootloaders verwendet werden. Ein LT1117 Linearregler stellt während der Programmierung die Stromversorgung über USB sicher. Im eingebauten Zustand ist die Buchse nicht erreichbar.

Die eigentliche Stromversorgung erfolgt mit dem effizienten Schaltregler-Baustein LME78_03-1.0. Die Eingangsspannung an der Schraubklemme darf zwischen 6 und 36 Volt liegen.

Selbstrückstellsicherungen vor beiden Spannungsreglern sorgen für Sicherheit im Fehlerfall.

An weiterer Peripherie sind das nötige NRF24L01 2,4GHz Funkmodul sowie LEDs zur Anzeige des Betriebszustandes und ein Reset Taster vorhanden.

Bild: Bestückte Leiterplatte

Die doppelseitige Leiterplatte ist mit SMD Bauteilen bestückt. Widerstände und Kondensatoren in 0805 lassen sich mit etwas Übung problemlos per Hand löten.

Anschließend muss die Firmware auf den ESP8266 übertragen werden. Dabei kann entweder auf die vorcompilierten Binarys zurückgegriffen, oder selbst compiliert werden. Um den Quellcode selbst zu übersetzen, benötigen wir Git und PlatformIO. Die aktuelle Version der Firmware befindet sich derzeit im Branch 1.10.8. Wir checken diesen aus, wechseln in den Ordner und rufen das Buildsystem PlatformIO auf. Die Parameter dazu müssen je nach verwendetem Modul (ESP07 oder ESP12) und dem virtuellen COM Port unter dem der USB zu Seriell Wandler zu finden ist angepasst werden.

git clone https://github.com/sidoh/esp8266_milight_hub.git -b 1.10.8

cd esp8266_milight_hub

platformio run -t upload -e esp07 --upload-port /dev/ttyUSB0

Wenn alles geklappt hat, lässt sich der MiLight Hub nun über ein Konfigurationsnetzwerk mit dem Namen "ESP_xxxxxx" und Passwort "milightHub" finden und über die Konfigurationsoberfläche unter http://192.168.4.1/ in das eigene Netzwerk einbinden. Die anschließend zugeteilte IP Adresse lässt sich im WLAN Router einsehen.

Das Webinterface kann nun von jedem Gerät im Heimnetzwerk unter http://<ip_des_esp>/ aufgerufen werden:

Foto: Screenshot Webinterface

Nun muss eine Device ID angelegt werden. Diese entspricht dem festen, zufälligen Code einer originalen Fernbedienung. MiLight Geräte können innerhalb der ersten 2 Sekunden nach Anschluss an die Stromversorgung angelernt werden. Dazu einfach die Lampe einschrauben / einschalten und schnell den "Pair" Button im Webinterface betätigen. Pro Device ID sind vier Gruppen möglich. Diesen Gruppen können beliebig viele Geräte angelernt werden. Das Anlernen kann ganz bequem nacheinander passieren.

Fazit

Die Leuchtmittel sind preiswert und scheinen gut verarbeitet. Der selbstgebaute MiLight Hub bietet zahlreiche Steuerungsmöglichkeiten direkt aus jedem Webbrowser ohne Installation einer App. Durch die freie Wahl der Device ID ist das Gateway nicht mehr auf nur vier Gruppen beschränkt. Außerdem sind gut dokumentierte Schnittstellen zur Einbindung in eigene Smart-Home Projekte vorhanden.

Links
Downloads