McLighting WS2812 Lichtsteuerung und Integration in ioBroker
In diesem Artikel zeige ich Dir, wie ich einen ESP8266 mit der McLightning Firmware in ioBroker integriert habe. Das McLightning Projekt von Tobias Blum ermöglicht die einfache und komfortable Steuerung von WS2811 und WS2812 LED-Stripes (z.B. NeoPixel) mit einem ESP8266 Mikrocontroller. Neben der individuellen Farbwahl stehen noch zusätzlich Animationen zur Verfügung. An die Integration in die Haus-Steuerung wurde mit umfangreichen Protokoll-Möglichkeiten gedacht (MQTT, REST-API, WebSocket).
Bevor wir loslegen, hier die Liste der verwendeten Materialien:
Im ersten Schritt müssen wir nun die Software-Installation durchführen. Die Installation der Bibliotheken sowie Einrichtung der WLAN-Verbindung ist perfekt in der McLightning-Dokumentation beschrieben, aus diesem Grund verweise ich an dieser Stelle auf die Original-Dokumentation.
Installation und Einrichtung von McLightning
Schaltungsaufbau
Den WS2812b LED-Stripe habe ich für die Steuerung an D4, sowie die Stromversorgung an VIN und GND angeschlossen.
McLightning-Oberfläche
Nach dem wir nun McLightning installiert sowie in unser WLAN eingebunden haben, sollten wir folgende Webseite im Browser angezeigt bekommen. Auf dem Bereich „Wheel“ können wir nun eine beliebige Farbe auf der Skala auswählen.
Unter den Modes können wir den Farbton sowie die Helligkeit der LEDs nochmals ändern oder verschiedene Animationen auswählen. Für die Animationen können wir zudem noch die Geschwindigkeit anpassen.
Integration über ioBroker-Adapter
Im nächsten Schritt werden wir nun McLightning in ioBroker und somit in unsere Haus-Steuerung integrieren. Dazu installieren wir nun einen neuen Adapter in ioBroker. Der Adapter ist aktuell noch nicht im ioBroker Release enthalten, wir müssen ihn daher manuell über folgende Github URL hinzufügen:
https://github.com/instalator/ioBroker.mclighting
Nach dem wir die URL auf der Lasche „Beliebig“ eingegeben haben, können wir mit der Installationen beginnen.
Nach der Adapter-Installation können wir nun nach „mclightning“ suchen und den gefundenen Adapter in ioBroker zu den Instanzen hinzufügen.
Nach der Installation können wir nun die Einrichtung des Adapters beginnen. Hierzu müssen wir die IP des McLightning-Moduls in das Host-Feld eingeben. Als Port wird Port 81 verwendet.
Im nächsten Schritt können wir den Adapter starten.
In den Objekten können wir nun im Ordner „mclightning.0“ die Farbwerte einsehen und verändern.
Über den Datenpunkt „power“ können die LEDs ein- oder ausgeschaltet werden. Der Datenpunkt „brightness“ regelt die Helligkeit der LEDs. Die Geschwindigkeit kann über „speed“ entsprechend eingestellt werden. Der Wertbereich der beiden Datenpunkte geht von 0 bis 255.
Animationen können über den Datenpunkt „fx_mode“ aktiviert werden. Die Animations-ID findest Du in der McLightning Web-Oberfläche vor dem Namen der Animation (in Klammern).
Einzelne LEDs können wir natürlich ebenfalls einfach über den Datenpunkt „single_RGB“ schalten. Dazu muss dem Datenpunkt eine Zeichenfolge in folgendem Format übergeben werden:
<LEDNr> <#HexColor>
Beispiel
1 #FFBF00
Die zweite LED (Null-basierter LED-Index) wird gelb eingefärbt.
Integration über MQTT
Um MQTT als Protokoll zu nutzen, müssen wir bei der Einrichtung von McLightning die MQTT-Verbindungs-Informationen hinterlegt und den ESP8266 somit als MQTT-Client am ioBroker registriert. Wenn wir uns nun die Objekte des MQTT-Adapters in ioBroker ansehen, sollten wir hier den folgenden Bereich sehen:
Für jedes McLightning-Modul wird ein eigener Namen mit dem Namen aus der Konfiguration (McLightning – definitions.h) angelegt. Unterhalb des Namens existieren zwei Datenpunkte („in“ und „out“). Über den Datenpunkt „in“ kann ein Kommando übergeben werden, welches dann von der McLightning-Komponente ausgeführt und verarbeitet wird. Das Ergebnis wird an den Datenpunkt „out“ übergeben. In der folgenden Grafik wird die Funktionsweise aufgezeigt:
Zur Steuerung des McLightning-Moduls stehen einige Kommandos zur Verfügung. In der folgenden Liste habe ich die Befehle kurz erklärt, welche ich am häufigsten einsetze. Eine vollständige Dokumentation kann hier eingesehen werden:
Alle LEDs Farbwert setzen
Mit dem folgenden Befehl werden alle LEDs auf den übergebenen Farbwert eingestellt. Dazu muss ein #-Zeichen gefolgt vom hexadezimale Farbwert angegeben werden. Den Farbwert kannst Du z.B. hier auswählen.
#<hexrgb>;Einzelne LED Farbwert setzen
Mit dem folgenden Befehl kann eine einzelne LED eingefärbt werden. Dazu wird im ersten Parameter die Nummer die LED angegeben. Im zweiten Parameter wird der Farbwert übergeben.
!&lt;numled&gt;&lt;hexrgb&gt;Animation aktivieren
Mit dem folgenden Befehl kann eine Animation aktiviert werden. Die Nummer der Animation könnt ihr über die normale McLightning Oberfläche im Bereich „Modes“ einsehen.
/&lt;animation_mode_id&gt;Geschwindigkeit der Animation einstellen
Mit dem Befehl wird die Geschwindigkeit der Animation verändert. Der Wertbereich geht von 0 bis 266 (von langsam nach schnell).
?&lt;speed&gt;Helligkeit einstellen
Mit dem Befehl wird die Helligkeit der LEDs verändert. Der Wertbereich geht von 0 bis 266 (dunkel nach hell).
%&lt;brightness&gt;Weitere InformationenFazit
Sehr cooles Projekt für die einfache und komfortable Steuerung von LEDs mit dem ESP8266-Mikrocontroller. Durch die Schnittstellen und den Adapter in ioBroker wirklich extrem einfach und schnell in die eigene Haussteuerung integriert. In der Firmware existiert zudem noch eine Integration in Home Assistant, das werde ich mir auch noch ansehen 🙂 Ich nutze den ESP8266 in Verbindung mit dem ioBroker McLightning-Adapter für die Lichtsteuerung im Wohnzimmer, MQTT hatte einige male nicht wirklich zuverlässig funktioniert. Hier muss ich aber nochmals Zeit investieren, evtl. sitzt das Problem auch wo wanders 😉
Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer ?
Hi,
sehr schön erklärt.
Das hat mir bei meiner Einrichtung sehr geholfen.
Jetzt stehe ich vor der Herausforderung das in VIS schön darzustellen.
Hallo,
sehr schöne Anleitung.
Wie bindest Du das in VIS ein? Dazu suche ich noch eine schöne Lösung.
Alfred
Hallo,
danke für die Dokumentation zum Einbinden von WS2812 Strips in ioBroker.
Wie du die vis bzw. die Steuerung dazu realisiert hat würde auch mich sehr interessieren.
Danke für die Vorstellung dieses Projekts, welches ich 1:1 so umsetzten konnte. Selbst als Anfänger kann ich mit Blockly in Iobroker ganze Effektprogramme abarbeiten lassen, indem mqtt.0.McLighting01/in mit Daten gefüttert wird. Klappt wirklich super gut. Problem habe ich aber mit einem 2. Stripe, den ich in definitions.h McLighting02 genannt habe, anstatt McLighting01. „const char HOSTNAME[] = „McLighting02″; // Friedly hostname“ den Rest habe ich genau so gelassen. Beim starten ist soweit auch alles OK. WLAN Anmeldung, Steuerung über seine IP, oder über den iobroker Adapter klappt wie beim McLighting01. Nur werden keine Datenpunkte im MQTT angelegt und kann somit nicht darüber gesteuert werden. Wie könnte ich vorgehen? Der iobroker MQTT Adapter läuft als Broker/Client auf Port 1883 ohne Benutzernamen, ohne Passwort.
Sorry für die unnötige Fage. Ich habe ihn einfach nochmal über WLAN anmelden lassen und habe die MQTT IP und Port neu eingegeben. (Vielleicht war da etwas falsch). Nun geht auf jeden Fall alles!
Hallo,
vielen Dank für die super Arbeit. Deine Ausführung ist echt gut und schlüssig.
Dennoch stoplere ich über eine Frage. Lassen sich über den ioBroker mit McLightning Adapter nur LEDs von 0-99 ansprechen? Es gelingt mir nicht in den dreistelligen Bereich zu kommen. Hast Du einen Tipp?
Danke für diesen Artikel.
Damit habe ich die Steuerung meiner WS2812-Streifen wunderbar gelöst.
Jetzt habe ich nur das Problen, dass Blau und Grün vertauscht sind.
Im FAQ vom McLighting/Wiki steht :
Ändern Sie die Farbreihenfolge, bis der Streifen die richtigen Farben anzeigt (in diesem Beispiel wird GRB zu BRG ).
WS2812FX-Streifen = WS2812FX (NUMLEDS, PIN, NEO_BRG + NEO_KHZ800);
In McLighting.ino ist aber die Zeile auskommentiert.
#include
// WS2812FX strip = WS2812FX(NUMLEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
WS2812FX* strip;
An dieser Stelle brauche ich Hilfe.
Wo kann ich „NEO_GRB“ ändern?
Habe im Internet eine Lösung gefunden.
https://github.com/toblum/McLighting/issues/367
Ändern Sie die RGB-Reihenfolge in GRB: je nach Browsertyp http:///pixelconf?rgbo=grb
Nach kurzem Test mit den Werten:
brg
rgb
bgr
habe ich die richtige Einstellung gefunden.
Moin Moin … sorry das ich dich einfach so anschreibe aber ich hänge seit Tagen daran Mc Lightning bei mir in das WLAN zu bekommen… Es wird nix neues unter den WLAN Geräten angezeigt kein ESPxxxx
oder ähnliches …
Habe ich in irgend etwas vergessen zu aktivieren im Programmcode, aber ich bin nach Anleitung vorgegangen oder wird etwas vorrausgesetzt.
Im Voraus besten dank für eine evtl. Hilfe
Grüße Robbie
Hi, irgendwie bin ich zu blöd.
Ich habe die Software geflasht, den Strip an die NodeMCU gelötet, ich komme auch auf das Interface drauf, aber es leuchtet nur die erste LED, mehr nicht.
wo könnte da der Fehler liegen?
Danke für den tollen Bericht übrigens
Genau das gleiche Problem hab ich auch.
Alles eingetragen wie es gehört aber es leutet nur die erste Led Weiß und das wars.
Ich finde einfach niemanden der mir helfen kann.
Auch wird es jetzt schon langsam eng, da es einige Weihnachtsgeschenke werden sollen.
Moin Peter,
wie lange ist der LED-Strip und was für ein Typ ist das? Mir sagt das Problem so leider erst mal nichts, könnte nur evtl. an der Stromversorgung liegen. Kannst Du die McLightning-Oberfläche bedienen, oder hängt die dann auch?
Hallo Peter,
Hast du schon was gefunden wegen der Anzahl der LED´s? Zu Weihnachten wird es eng, aber…
Hatte das selbe Problem. Je nachdem Version von MCLighting du benutzt, wird die Anzahl der LED´s im Script ODER über den Webbrowser eingestellt. Ich vermute du hast eine relativ neue Version und daher wirst du die Anzahl der LED´s über den Browser einstellen müssen.
http://www.192.168.?.?/pixelconf?ct=240
in die Adresszeile des Browsers eingeben und es wird sofort übernommen. IP-Adresse und Anzahl der LED´s bitte vorher anpassen.
Damit sollte es klappen…
McLighting ist super genial. Habe ich seit Jahren im Einsatz!
Hallo,
gibt es von Mc Ligthing eine Version, die auf den aktuellen Bibliotheken aufsetzt?
Ich wollte es gerade mit PlatformIO bauen, da werden mir aber die teilweise recht alten Versionen an Bib. gar nicht mehr zur Verfügung gestellt. Und mit den akt. Versionen bekomme ich Fehlermeldungen beim Übersetzen und Linken.