Effekte und Presets nutzen
Wie schalte ich WLED-Presets per Datenpunkt (ps) in VIS, Blockly oder Skript?
Kurz: Leg das Preset in der WLED-Oberfläche an und schreib seine Nummer als Zahl in wled.0.<MAC>.ps, und zwar als Steuerbefehl (ack=false). Ob das Licht dabei an- oder ausgeht, entscheidet das Preset selbst, nicht der Adapter.
Der Adapter reicht den Wert unverändert als {"ps":3} an das Gerät weiter, per WebSocket oder HTTP. Die Presets selbst liegen nur in WLED. Der Adapter kennt ihre Nummern, aber nicht ihre Namen, und legt auch keine Liste der Presets an.
Welche Presets du brauchst
- Öffne die WLED-Oberfläche des Geräts im Browser und stell Farbe, Effekt und Helligkeit so ein, wie das Preset aussehen soll.
- Speichere den Zustand mit „Create Preset“. Die Nummer unter „Save to ID“ ist die Zahl, die du später in
psschreibst. Erlaubt sind 1 bis 250. - Entscheide beim Speichern, ob „Include brightness“ an sein soll. Davon hängt ab, ob das Preset das Licht ein- oder ausschaltet (siehe unten).
So setzt du ps
| Wo | So geht es |
|---|---|
| Objektbaum im Admin | Bei wled.0.<MAC>.ps die Nummer eintragen und speichern. |
| JavaScript | setState('wled.0.<MAC>.ps', 3); (ohne drittes Argument ist das ein Steuerbefehl) |
| Blockly | Block „steuere“ mit dem Objekt ps und der Zahl als Wert. Nicht „aktualisiere“ nehmen. |
| VIS | Ein Widget, das einen festen Wert schreibt, zum Beispiel ein Knopf mit der Preset-Nummer, oder eine Auswahlliste mit den Preset-Nummern als Werten und den Namen als Texten. |
Der Adapter schickt nur Werte mit ack=false an das Gerät. Ein Wert mit ack=true („aktualisiere“ in Blockly) gilt als Rückmeldung vom Gerät und wird nicht gesendet.
ps ist ein Datenpunkt vom Typ Zahl. Schreib deshalb 3 und nicht "3". WLED versteht zwar auch den Text, aber ioBroker meldet dann eine Warnung zum falschen Datentyp.
Hat es geklappt, zeigt ps kurz darauf die Nummer, die das Gerät zurückmeldet. Hast du danach in WLED etwas von Hand verändert, meldet WLED -1, weil kein Preset mehr aktiv ist.
Warum geht das Licht beim Preset-Wechsel an oder aus?
Ein Preset speichert mit „Include brightness“ auch den Ein/Aus-Zustand und die Helligkeit zum Zeitpunkt des Speicherns. Wurde es bei ausgeschaltetem Licht gespeichert, schaltet es beim Aufruf aus. Wurde es bei eingeschaltetem Licht gespeichert, schaltet es ein. Ohne „Include brightness“ bleibt das Licht so, wie es ist, also auch aus, wenn es vorher aus war.
So bekommst du das gewünschte Verhalten:
- Preset soll immer einschalten: Preset bei eingeschaltetem Licht mit „Include brightness“ neu speichern.
- Preset soll nur Effekt und Farbe ändern: ohne „Include brightness“ speichern und das Licht getrennt über
wled.0.<MAC>.onschalten. - Einschalten und Preset in einem Befehl:
{"on":true,"ps":3}in den Datenpunktwled.0.<MAC>.actionschreiben. WLED wertetonvorpsaus.
IMPORTANT
WLED lädt ein Preset nicht noch einmal, wenn es schon das aktive Preset ist. Das gilt auch, wenn du das Licht zwischendurch über on ausgeschaltet hast: ps zeigt dann weiter dieselbe Nummer, und dieselbe Nummer noch einmal zu schreiben, bewirkt nichts. Schalte in diesem Fall mit on ein oder schick {"on":true,"ps":3} über action.
TIP
Den aktuellen Zustand speicherst du aus ioBroker als Preset, indem du die gewünschte Nummer in wled.0.<MAC>.psave schreibst.
Siehe auch: Presets per Bewegungsmelder schalten · Nacheinander durch Presets schalten · Playlist starten · Skript setzt ps oder on nicht · ps springt auf -1
Wie wechsle ich per Taste oder Skript nacheinander durch Presets?
Dieser Abschnitt wird noch geschrieben.
Wie starte ich eine WLED-Playlist über den Adapter?
Kurz: Eine Playlist ist in WLED ein Preset mit eigener Nummer. Du startest sie deshalb wie jedes Preset, indem du ihre Nummer in wled.0.<MAC>.ps schreibst. Der Datenpunkt pl zeigt nur an, welche Playlist gerade läuft. Ihn zu beschreiben, startet keine Playlist.
Playlist über ps starten
- Leg die Playlist in der WLED-Oberfläche an. Sie bekommt beim Speichern eine Nummer wie jedes Preset.
- Schreib diese Nummer in
wled.0.<MAC>.ps, zum Beispiel per JavaScriptsetState('wled.0.<MAC>.ps', 9);oder in Blockly mit „steuere“. - Während die Playlist läuft, zeigt
plihre Nummer undpsdas gerade aktive Preset daraus. Läuft keine Playlist, zeigtplden Wert-1.
Wie ps genau funktioniert, steht unter Presets per Datenpunkt ps schalten.
Playlist ohne gespeichertes Preset über action starten
Über den Datenpunkt wled.0.<MAC>.action kannst du eine Playlist auch direkt als JSON schicken, ohne sie vorher in WLED zu speichern. Dieses Beispiel zeigt die Presets 1, 2 und 3 je 30 Sekunden lang, wiederholt das endlos und schaltet dabei ein:
{"on":true,"playlist":{"ps":[1,2,3],"dur":[300,300,300],"transition":0,"repeat":0}}| Schlüssel | Bedeutung |
|---|---|
ps | Die Preset-Nummern in der Reihenfolge, in der sie laufen sollen |
dur | Wie lange jedes Preset bleibt, in Zehntelsekunden (300 = 30 Sekunden) |
transition | Überblendzeit zum nächsten Preset, in Zehntelsekunden |
repeat | Wie oft die ganze Playlist läuft; 0 heißt endlos |
end | Preset, das nach dem letzten Durchlauf geladen wird; wirkt nicht bei repeat = 0 |
Playlist weiterschalten oder beenden
- Zum nächsten Preset springen:
{"np":true}anactionschicken. Das gibt es ab WLED-Firmware 0.15. - Beenden: Setz ein anderes Preset über
psoder ändere ein Segment direkt, zum Beispiel den Effekt. Damit endet die Playlist.
NOTE
Der Adapter legt pl als beschreibbaren Datenpunkt an. WLED wertet einen geschriebenen Wert aber nicht aus, die WLED-JSON-API führt pl als „read-only“. Nutze zum Starten deshalb ps oder action.
Siehe auch: Nacheinander durch Presets schalten · Kompletten JSON-Befehl senden
Wo finde ich die Nummern und Namen von Effekten und Paletten für Skripte?
Dieser Abschnitt wird noch geschrieben.
Wie steuere ich den Effekt "Percent" und zeige einen Wert als Balken an?
Dieser Abschnitt wird noch geschrieben.
Wie ändere ich den Text des Effekts "Scrolling Text" oder den Segmentnamen?
Dieser Abschnitt wird noch geschrieben.
Wie bleiben Effekt und Palette nach einem Stromausfall erhalten, und wie startet WLED danach?
Dieser Abschnitt wird noch geschrieben.