WLED ist eine quelloffene Software, entwickelt von Aircoookie und erfreut sich großer Beliebtheit in der Makerszene. Mit WLED ist es möglich, LED-Streifen im eigenen WLAN per App zu steuern. Dabei bietet die Software einen umfassenden Katalog an Einstellungsmöglichkeiten und Effekten, prinzipiell lässt sich jede LED einzeln steuern. Zudem bietet WLED die Möglichkeit einer Ansteuerung über u. a. eine http-API, Art-Net, DMX Steuerung und andere Protokolle. Uns interessiert in diesem Fall die Steuerung per http-request.
Material
In unserem Tutorial setzen wir auf den
WLAN LED-Pixel Controller von cod.m
gepaart mit einem
12V WS2815 LED Strip von BTF-Lighting.
Auf dem Pixel Controller ist WLED bereits installiert, wer sich erstmal langsam und etwas günstiger herantasten will und kann auf einen ESP8266 setzen und entsprechend dazu einen 5V LED-Streifen benutzen. Das Flashen der Software geht sehr einfach vonstatten und kann den entsprechenden Projektseiten entnommen werden.
WLED Konfiguration
Nachdem wir unseren LED-Streifen mit dem Controller verbunden haben (VCC: Rot, GND: Weiß, DATA: Grün) können wir ihn mit Strom (12V) versorgen. Sobald der Controller hochgefahren ist, öffnet er einen Access Point ("WLED-AP"), in diesen wählen wir uns ein und tragen die Daten für unser vorhandenes WLAN ein.
Jetzt suchen wir die neue IP des Controllers in unserem Netzwerk, entweder im Router direkt oder über einen IP-Scanner. Diese IP-Adresse geben wir einfach in einen Browser ein und schon sehen wir die Web-Oberfläche von WLED.
Unter "Config" und dann "LED Preferences" geben wir an, welche Art von LED-Streifen wir benutzen, und vor allem wie viele LEDs dieser insgesamt hat. Auch den GPIO Pin, über den die Daten geschickt werden, müssen wir anpassen. Bei uns ist das Pin 18. Da unser Streifen 5 m lang ist und 30 LEDs/m hat, kommen wir auf eine Gesamtanzahl von 150 LEDs.
Auf der Hauptseite der Oberfläche können wir nun den Streifen direkt testen. Wenn alles richtig verkabelt und eingestellt ist, können wir jetzt bereits Farben und Effekte einstellen.
Node-RED
Weiter geht es in Node-RED, da wir unsere LEDs ja nicht nur per App steuern wollen, sondern auch eine Automatisierung implementieren möchten.
Es gibt bereits Nodes für WLED, allerdings wollen wir wie erwähnt die Steuerung per http-request benutzen, das sieht zwar etwas komplizierter aus, ist aber gar nicht mal so schwer. Um Informationen über den aktuellen Zustand zu erhalten, reichen einfache GET Anfragen an die folgenden Endpunkte:
Eine Übersicht über die einstellbaren Effekte:
http://<wled-ip>/json/eff</wled-ip>
Die Palette, also Möglichkeiten von vorgefertigten Farbschemata:
http://<wled-ip>/json/pal</wled-ip>
Softwareversion, IP-Adresse, MAC-Adresse, etc. etc.:
http://<wled-ip>/json/info</wled-ip>
Aktueller Zustand der LEDs, an/aus, Farbe, Intensität usw.:
http://<wled-ip>/json/state</wled-ip>
Wir sehen also, dass wir mit einem JSON-Objekt bestimmte Werte überschreiben können. Wenn wir jetzt zum Beispiel eine Payload mit {"on":false"} per POST Request an die API (/json/state) schicken, dann geht unser Streifen aus.
Ein paar Beispiele findet ihr, wenn ihr euch den Flow, der ganz am Ende der Seite ist, importiert.
Die Idee der Nodes im unteren linken Bereich ist, dass man einen Streifen anhand des Batterieladestandes steuert. Dafür haben wir den Streifen in 5 Segmente unterteilt und geben die Werte der Batterie in 20er-Schritten bis 100 % an. Ist die Batterie über 80 %, leuchtet der komplette Streifen grün, überall ist ein leichter Fade Effekt mit drin. Bei unter 80 % ändert Streifen seine Farbe und es leuchtet ein Segment weniger, bis bei unter 20 % nur noch der erste Teil des Streifens in Rot leuchtet. Das aber nur mal als Beispiel, was man so machen könnte.
In der Payload sehen wir "transition" bei 1, das steht für 100ms und ist die Übergangszeit zwischen den Farben. Das Segment ist mit variablen angegeben, um den ganzen Vorgang weniger statisch darstellen zu können. "fx" ist die ID des Effektes, den wir benutzen, die ID findet man ganz einfach über die oben beschriebene GET Anfrage. "sx" ist der Speed des Effektes, wir wollen nur ein langsames Faden an dieser Stelle.
In der Function Node vor "set payload" werden die Variablen definiert, unter anderem die Farbe. Wir können bis zu 3 Farben selber angeben, die der jeweilige Effekt benutzen soll, allerdings kann nicht jeder Effekt diese 3 Farben abbilden, manche benutzen nur zwei oder eine Farbe, oder eine "Rainbow" Animation wird so oder so bunt sein...
Bedenkt, dass ihr die IP-Adresse in den http-Nodes anpassen müsst.
Links und Tipps
In WLED gibt es eine Einstellungsmöglichkeit "Sync", daraus ergibt sich ein Broadcast. Sind mehrere WLED Controller im Netzwerk vorhanden, synchronisieren sich Farben und Effekte.
Man kann Zonen erstellen, indem man in Node-RED die POST Requests einfach an mehrere IP-Adressen schickt.
API WLED:
https://kno.wled.ge/interfaces/json-api/
Beispielcode für Node-RED:
https://share.12-s.de/s/nT3ZGwD9jmpFAGM
Links:Hier seht ihr nochmal, wie es dann am Ende aussehen kann. Viel Spaß damit. :)