RGBWW WLAN LED Dimmer mit H801 (ESP8266)

Im Internet gibt bekommt man unter der Bezeichnung H801 WLAN LED Dimmer kostengünstiges Modul, dass über WLAN angesteuert werden kann.

Eigenschaften H801:

  • 5 Kanäle
  • WLAN ist über den ESP8266 integriert
  • 5-24V Betriebsspannung
  • ca. 8-12 € bei Ali Express; ca. 15 € bei eBay

Links mit Informationen:

http://www.schatenseite.de/2016/05/17/lichtsteuerung-mit-esp8266-und-mqtt/

https://de.aliexpress.com/wholesale?catId=0&initiative_id=SB_20170224090935&SearchText=H801+WLAN+Dimmer


Ich selber habe mich erst ein wenig mit der mitgelieferten Firmware auf dem ESP8266 beschäftigt. Da diese aber über Hex-Werte angesteuert wird, bin ich recht schnell zu dem Schluss gekommen, dass ich diese ersetzen muss. Da ich bereits einige Erfahrung mit dem ESP8266 bei anderen Projekten gemacht hatte viel mir das nicht allzu schwer.

Was benötigt ihr?

  1. Pin-Header um diesen auf der Platine aufzulöten (siehe auch das oben verlinkte Video)
  2. Einen USB auf Serial Konverter ( ich selber habe diesen hier: https://www.exp-tech.de/catalogsearch/result/?q=EXP-R11-055)
  3. Arduino IDE (https://www.arduino.cc/en/main/software) - Ich verwende die Version 1.66
  4. ESP8266 Core Bibliotheken (https://github.com/esp8266/Arduino)
  5. ESP8266 FS (File System) Erweiterung (https://github.com/esp8266/arduino-esp8266fs-plugin/)


Eine kurze Anleitung:

Hier die Einstellungen, die ich in der Arduino IDE eingestellt habe. Besonders zu achten ist auf "Flash Size". Das Modul hat "nur" einen Speicher von 1MB. Wenn ihr mehr einstellt, wird es nicht funktionieren.


Beim ersten Flashen müsst ihr über die serielle Schnittstelle (im Bild unten blau) gehen. Vorsicht: RX/TX ist vertauscht. Später könnt ihr auch "over the air" flashen.

Um den ESP in den Flashmodus zu bekommen müsst ihr die Kontakte (im Bild unten rot) verbinden und dann die Stromversorgung anschließen. Kurz nachdem die ihr die Spannung angelegt habt, könnt ihr die Brücke wieder entfernen.

Ihr könnt den H801 entweder über die grünen Anschlüsse mit 5-24 V versorgen oder ihr gebt im über die serielle Schnittstelle 3,3V (Achtung der USB hat 5V).


Wenn der ESP8266 im Flashmodus ist, könnt ihr die neue Software drauf spielen. Achtet dabei darauf, dass in der Arduino IDE unter Werkzeuge/Port der richtige Port ausgewählt ist an dem auch euer USB auf Seriell Konverter angeschlossen ist.

Die Software besteht aus 2 Konponenten

  1. Ein paar Dateien im Sketchverzeichnis (Data) - Die Erklärung der Dateien erfolgt weiter unten
  2. Der Software = alle anderen Dateien (Die Software ist sicher nicht perfekt und man kann einiges sicher professioneller gestalten. Aber sie tut was sie soll. Wer möchte darf gerne weiter entwickeln)

Ihr müsst natürlich erst den Sketch in der Arduino IDE laden.

Es macht Sinn zunächst die Dateien auf den ESP8266 zu laden. Da hier die Zugangsdaten für den Access-Point drin sind und er sonst einen eigenen Access-Point auf macht, wenn er sich nicht einwählen kann.

Das macht ihr über den Menüpunkt "Werkzeuge/ESP8266 Sketch Data Upload". ACHTUNG hierbei darf der serielle Monitor NICHT eingeschaltet sein.

Nachdem die Dateien drauf sind, am besten den H801 noch mal stromlos machen und neu booten (denkt daran die rot markierten Kontakte zu schließen, sonst startet der H801 nicht im Flashmodus).

Danach kann dann die eigentliche Software geflasht werden. Das funktioniert über "Sketch/ Hochladen".

Danach startet der ESP neu. Die "rot" Bücke sollte jetzt nicht mehr drauf sein. Wenn doch, macht das auch nichts. Ihr müsst sie nur entfernen und dann noch mal die Spannung neu anlegen.

Am besten beobachtet man jetzt über den seriellen Monitor, ob alles richtig funktioniert. Hier gebe ich einige Ausgaben aus. Z.B. ob er sich im den angegebenen Access-Point eingewählt hat.

Ab jetzt könnt ihr des ESP8266 auch über WLAN flashen. Dazu muss zum einen die "rote" Brücke nicht geschlossen werden, zum anderen muss unter "Werkzeuge/Port" der virtuelle Port eingestellt werden. Wenn dieser nicht direkt angezeigt wird, einfach mal die IDE neu starten.


Was ist sonst noch wichtig zu wissen:

  • Wenn sich der ESP8266 nicht in den angegebenen Access-Point einwählen kann, öffnet er seinen eigenen Access-Point. Hier kann man sich dann über die im Sketch angegebenen Daten einwählen. Im Hintergrund sucht er allerdings weiter nach dem richtigen Access-Point. Wenn er diesen findet, macht er einen Soft-Reset. Das verfahren hat sich bei mir bewährt.
  • Ich vergebe bei mir im Access-Point eine statische IP-Adresse für den H801. Ihr könnt den Sketch sicher auch so umbauen, dass er sich selbst eine IP-Adresse vergibt. Habe das bei mir nie gemacht. Auch mit einer dynamischen IP-Adresse habe ich keine Erfahrungen gemacht. Hier müsstet ihr dann über den DNS Namen gehen.


Wie kann der H801 angesteuert werden?

Schalten der Farbkanäle mit:
http://[IP-Adresse]/ledcontrol?rgb=[bbbgggrrr]&w1=[www]&w2=[www]
bbb - Wert von 0-100 für blau
rrr - Wert von 0-100 für rot
ggg - Wert von 0-100 für grün
www - Wert von 0-100 für weiß Kanal 1 und Kanal 2
Die Parameter 'rgb', 'w1' und 'w2' sind optional und können einzeln oder in Kombination verwendet werden
Beispiele
http://192.168.2.54/ledcontrol?rgb=092100033
http://192.168.2.54/ledcontrol?w1=42&w2=82

Ändern und speichern der Dämpfung für die Wechselgeschwindigkeit:
http://[IP-Adresse]/setdaempfung?daempfung=[0-n]
http://192.168.2.48/setdaempfung?daempfung=10

Sinnvolle Werte sind etwa zwischen 1 und 20

Ändern von Werten:
http://[IP-Adresse]/set?hostname=[HOSTNAME]
z.B.: http://[IP-Adresse]/set?hostname=RGBWW-Controller

Abrufen des aktuellen Status:
http://[IP-Adresse]/status

Restart per Software:
http://[IP-Adresse]/restart

Diese Hilfeseite aufrufen
http://[IP-Adresse]/help


Beschreibung der Dateien im Ordner "Data":

  • cl_conf.txt
    Hier stehen die Zugangsdaten für den Access-Point drin in den sich der H801 einwählen soll.
    In der ersten Zeile steht die SSID (nichts davon und nichts dahinter)
    In der zweiten Zeile steht das Passwort (nichts davon und nichts dahinter)
    Die Werte können aktuell nicht per HTTP Befehl geändert werden.
  • cl_name.txt
    Hier steht NUR der Name drin unter dem der H801 im Netzwerk registriert wird.
    Auch in der Arduino IDE wird er unter Port unter diesem Namen geführt.
  • daempfung.txt
    Hier steht der Wert drin, der die Wechselgeschwindigkeit bei Änderung der 5 Kanäle verwendet wird.


Wie in der Loxone Software HTTP-Befehle abgesetzt werden beschreibe ich hier nicht. Dazu gibt es bereits genügend Anleitungen.


Wer möchte darf hier gerne weiter entwickeln und die neuen Versionen hier ablegen.

Wer möchte darf die Anleitung auch gerne vervollständigen und optimieren.




Update auf Version 1.5

Neue Funktionen:

  • WiFi Manager - nach dem flashen wird ein Accesspoint aufgemacht, der unter 192.168.4..1 erreichbar ist.
  • OTA-Update (Online Update über die Arduino Software).
  • Hilfeseite - Nachdem der H801 im lokalen Netzwerk eingerichtet ist, kann eine Hilfeseite unter der IP-Adresse des Gerätes aufgerufen werden http://[IP-H801] oder http://[IT-H801]/help
  • Am H801 kann ein DHT22 angeschlossen werden. Der DHT wird an den GPIO3 (TX) angeschlossen. Dieser ist direkt über den Header (siehe Bild oben; blau umrandet) zugänglich (3. von unten im Bild). Bei mir funktioniert die Spannungsversorgung über die 3,3V, die ebenfalls am Header erreichbar sind.
    Ich hatte dabei das Problem, das die angeschlossenen LEDs immer kurz geflackert haben, wenn die Temperatur aus dem DHT22 gelesen wurde. Erst nach langem versuchen habe ich hierfür eine einfache Lösung gefunden.
    Damit das Flackern weg geht muss in der DHT Library in der Datei "DHT.cpp" (Version 1.3.1) in der Routine "DHT::read(bool force)" die Zeile 178 "InterruptLock lock;" auskommentiert werden. Die Library findet sich im Regelfall im Verzeichnis "[SKETCHVERZEICHNIS]\libraries\DHT_sensor_library".
  • Der H801 sendet in regelmäßigen Abständen ein "Alive Signal" ich habe die Erfahrung gemacht, dass damit die Reaktionszeit bei Änderungen verbessert wird. Ich selber sende das UDP Paket direkt zum MIniserver. Dort kann ausgewertet werden. ob das Gerät online ist.
  • Weitere Funktionen sind über die Hilfeseite erklärt.

Die in der Version 1 oben beschriebene Config-Datei ist mit dieser Version nicht mehr notwendig.




Alternativer Code:

Ein "einfacherer" Code findet sich hier [Link zum Forum 1]:

https://github.com/LechnerRobert/UDPtoDMX

Fork der zusätzliche Parameter erlaubt um z.B. die Farbtemperatur von tunable white LEDs per Kelvin (z.B. aus einem Loxone Lumitech Ausgang der Lichtsteuerung) zu steuern: https://github.com/steveh80/UDPtoDMX


Nachteil:

  • nur DHCP
  • WLAN Passwort im Code

Vorteile:

  • 1000Hz PWM Frequenz
  • 5000 Abstufungen (ca. 12bit)
  • UDP Ansteuerung
  • schlanker Code

     
  • WiFiManager wird verwendet
  • OTA Update ist möglich


Eine noch ganz andere Firmware:

Diese Firmware setzt statt UDP auf MQTT als Übertragungsprotokoll. MQTT kann sicherstellen (QoS: 1), dass die Nachricht (Dimm-Befehl) auch wirklich ankommt. Leider kommt es bei den UDP basierten Firmwares immer mal wieder dazu, dass das Paket verloren geht und das Licht nicht an- oder ausgeht.

Sonstige Features:

  • 1000Hz PWM Frequenz, sowie 5000 Abstufungen (ca. 12bit) - in einer verbesserten Version die kein Blitzen von LEDs beim dimmen hat.
  • Unterstützung von Loxone Lumitech Protokoll für CCT (tunable white) LEDs.
  • WifiManager zur bequemen Konfiguration von WLAN Zugang, sowie dem MQTT Adress-Daten
  • OTA Update
  • MDNS

https://github.com/steveh80/H801-mqtt

Direktlink zum Firmware-Binary Download: https://github.com/steveh80/H801-mqtt/releases

Anbindung an Loxone

Die Anbindung an Loxone kann sicher über das loxberry-mqtt plugin erfolgen, das habe ich nicht getestet. Ich habe die Integration mit Loxone über node-red vorgenommen:

Loxone sendet über einen virtuellen Ausgang and node-red einen Befehl in diesem Format:

H801/H801-bad/channel-1?payload={"mode": "lumitech-cct", "lumitech": <v>, "speed": 4}

In diesem Beispiel ist der virtuelle Ausgang direkt am Lichtbaustein angeschlossen, an einem Ausgang der auf Lumitech konfiguriert ist. Alternativ wird auch das Loxone RGB Format, sowie Einzel-Kanäle unterstützt (siehe das ReadMe).

In Node-red ist die Konfiguration sehr einfach:

Der Function code ist recht simpel:

node-red function
const delimiter = '?payload=';

if (!msg.payload.includes(delimiter)) {
    return;    
}

const data = msg.payload.split(delimiter);

msg.topic = data[0];
msg.payload = data[1];

return msg;

Eine detailliertere Auflistung, wie man das konfiguriert findest du hier: https://www.loxforum.com/forum/german/software-konfiguration-programm-und-visualisierung/70434-wifi-rgbw-integrieren?p=248810#post248810

Verwandte Artikel