[Modul] WLED (Websocket)

WLED ist eine Open-Source-Firmware, die speziell für ESP8266- und ESP32-Mikrocontroller entwickelt wurde und diese kostengünstigen Module in leistungsstarke LED-Controller verwandelt.

Dieses Modul erlaubt die Steuerung von LED Stripes an einem mit WLED geflashten ESP Controller.

Es werden drei Instanzen zur Verfügung gestellt:

  • WLED Splitter
    Der Splitter stellt die Verbindung zwischen dem WebScoket Client und den WLED Instanzen her.
  • WLED Segment
    Hierüber wird ein einzelnes Segment gesteuert.
  • WLED Master
    Zur Steuerung des Masters.

Bei der Anlage der Instanzen wird - sofern noch kein WebSocket angelegt wurde - ein WebSocket unter den IO Instanzen angelegt. Dort ist der Endpunkt einzutragen, unter dem der WLED Server erreicht werden kann. Er hat die Form „ws://[WLED_IP]/ws“

Das Modul habe ich vor einiger Zeit von @acer90 (Tolle Vorarbeit!) übernommen, weiterentwickelt und in den Store gebracht.

Fragen zum Modul können nun gerne hier gestellt werden :slight_smile:

8 „Gefällt mir“

Mega, hab letztens gedacht dass das bei symcon noch fehlt :tada:

Viele Grüße
Stephan

2 „Gefällt mir“

Liebes IPS-Forum,

zuerst einmal Hallo meinerseits. Ich bin neu im Forum und im Prinzip auch auf der IPS-Plattform. Ich bin Berliner und habe über die Jahre immer mal wieder Basteleien mit Arduino gemacht (Kleinkramexperimente, nix Nachhaltiges). Nun möchte ich ein paar meiner Ideen Realität werden lassen und gerne IPS als Schaltzentrale für Sensoren und Aktoren nutzen.

Ich habe mich die letzte Zeit queer durch’s Internet gelesen und gesehen (YT) und für meine aktuelle Frage keine guten Antworten gefunden. Daher hier mein erster Beitrag, der gleichzeitig um Rat und Hilfe ersucht :slight_smile:

Worum geht’s:
Ich möchte (RGB)LED-Streifen ansteuern. Im Moment hängt ein WS2814 an einem ESP32. Auf dem läuft WLED. In IPS habe ich das WLED (Websocket)-Modul eingebunden, was soweit auch geht - über den Objektbaum kann ich Parameter einsehen und ändern (zu Fehlern komme ich ein andermal).

Wo hakt’s?
Ich möchte PHP-Skripte zur Automatisierung erstellen. Es gelingt mir aber nicht, die für das WLED (Websocket)-Modul relevanten Befehle und Parameter zu identifizieren. Zwar bekomme ich beim Skripten über IntelliCode/Autovervollständigen eine Art Erstvorschlag (Beispiel habe ich gerade nicht parat), weiß aber überhaupt nicht, welche Parameter in welcher Syntax übergeben werden sollen. Die Doku der Projektseite unter WLED/README.md at main · bumaas/WLED · GitHub geht darauf leider nicht ein (oder bin ich betriebsblind?) und im Web finde ich nichts Aussagefähiges.

Mein Wunsch:
Wer hat hier Beispiele bzw. eine hilfreiche Doku der Objekte/Parameter des WLED (Websocket)-Moduls zur Verwendung in IPS-PHP-Skripten?

Ich hoffe, das war verständlich…und ich freue mich auf Eure Antworten (oder Rückfragen).
Mit Grüßen aus Berlin
Matthias

Das einfachste ist, wenn du die Lichtszenen mit WLED erstellst und dort abspeicherst.
Bei dem JSON-Decoder unter state/ps kannst die die Szenen ganz einfach abrufen.

Ich habe zumindest ein Tip für dich, wie es etwas einfacher wird.
Im Skript oben über Befehl einfügen kannst du die Ziel-Instaz auswählen und dann unter Aktion → Experte → Führe Erweiterte Instanzfunktionen, die alle möglichen Befehle auflisten lassen.
image

Michael

PS: Gibt es zu dem Modul kein Thema hier im Forum? @bumaas

Genau das kannst du in einem Skript auch machen. Dort sind es „GetValue“ zum Lesen und „RequestAction“ zum schalten.

Was möchtest du denn genau machen?

Hallo bumaas, ich möchte alles Mögliche tun. :wink: Daher wäre eine Befehlsreferenz, vielleicht sogar mit Beispielen, wunderbar. Wie z.B. kann ich im Skript ein Preset auswählen, die Farbe und die Helligkeit ändern oder „Power ein/aus“ schalten.

Hast du denn schon den JSON Decoder als Instanz angelegt?

Du benutzt einfach RequestAction auf die zu verändernde Statusvariable :smile:

Also

//einschalten
RequestAction(12345, true); // 12345 = ID der Statusvariablen mit dem Ident "VariablePower"

//Farbe auf rot stellen
RequestAction(23456, 16057605); // 23456 = ID der Statusvariablen mit dem Ident "VariableColor1" 
´´´

Ich fürchte, da sind die Instanzen noch nicht vollständig angelegt. Wenn der JSON-Decoder angelegt wurde und dort als Gateway der richtige Websocket gewählt wurde und dort die richtige URL eingetragen wurde, müssten die ganzen Variablen sichtbar geworden sein. Ob man diese dann per Skript oder sonstige Befehle anspricht, ist dann der nächste Schritt.

Ich sehe gerade, dass es inzwischen ein neues Modul für WLED gibt. Dann ist das natürlich noch etwas anderes. Ich habe es damals alles zu Fuß erstellt.

2 „Gefällt mir“

Von welchem JSON-Decoder sprichst du? Hier geht es um das WLED Modul aus dem Store.

Wir sollten lieber zum passenden Thread wechseln [Modul] WLED (Websocket)

@Nall-chan: könntest du es bitte verschieben?

1 „Gefällt mir“

Hier die Entwickler Seite der das Projekt ins leben gerufen hat.

https://kno.wled.ge

Danke, das probiere ich mal.

PS: Wie ergibt 16057605 Rot?

Das ist HEX F5 05 05 also ein Rotton
image

Symcon will das als Integer haben, damit es mit mit Profil ~HexColor mit dem Colorpicker funktioniert.
Michael

1 „Gefällt mir“

16057605 war etwas ungenau von mir.

Ein reines Rot ist im RGB Farbsystem hexadezimal #FF0000, das ist als integer 16711680.

Ein pragmatischer Weg ist, die gewünschte Farbe über die Instanz einzustellen und dann im Objektbaum zu schauen, welcher Integerwert dem entspricht:


1 „Gefällt mir“

Oder einfach in Hex angeben (das zeigt ja der Colorpicker in der Konsole direkt an) :smiley:

//Farbe auf rot stellen
RequestAction(23456, 0xff0000); 
´´´
1 „Gefällt mir“

Als hätte ich es geahnt :wink: Danke für die Klarstellung.

Kurzer Zwischenstand: Et jeht! :smiley:

Danke für die hilfreichen Hinweise!

Prima, dass s jetzt geht.

Hat sich das damit auch erledigt?