Skip to content

Log-Meldungen ​

Was bedeutet die Warnung "State attribute definition missing"? ​

Kurz: Die Meldung ist harmlos, du musst nichts tun. WLED liefert ein Feld, für das der Adapter keine eigene Beschreibung hat. Der Adapter legt den Datenpunkt trotzdem an. Seit v0.7.1 steht die Meldung nur noch auf der Log-Stufe „debug“.

So sieht die Meldung aus:

text
State attribute definition missing for : <Feld> with value : <Wert>

Was dahintersteckt ​

Der Adapter hat eine Liste mit allen WLED-Feldern, die er kennt. Darin steht für jedes Feld der Name, der Datentyp, die Rolle und ob du den Datenpunkt schreiben darfst. Bringt eine neue WLED-Firmware ein Feld mit, das in der Liste fehlt, legt der Adapter den Datenpunkt so an:

  • Der Name ist der Feldname aus WLED.
  • Der Datentyp richtet sich nach dem Wert, den WLED liefert.
  • Der Datenpunkt ist nur lesbar. Schreiben über diesen Datenpunkt geht nicht.

Beispiele aus der Vergangenheit sind cct, n und liveseg. Sie kamen mit neuen WLED-Versionen und stehen inzwischen in der Liste.

Willst du ein solches Feld trotzdem setzen, schickst du es als JSON-Befehl über den Datenpunkt action. Fehlt dir ein Feld dauerhaft, melde es in einem GitHub-Issue.

Ältere Versionen ​

Bis v0.7.0: Die Meldung erschien als Warnung oder Fehler im normalen Log, teils mit dem Zusatz Sentry disabled, error caught. In v0.5.x konnte sich die Instanz danach beenden. Aktualisiere in diesem Fall den Adapter.

Bis v0.9.2: Auf der Stufe „debug“ steht die Meldung bei jeder Aktualisierung des Geräts erneut im Log, immer wieder für dasselbe Feld.

Ab v0.9.3: Der Adapter meldet jedes fehlende Feld nur einmal je Start (#917).

Siehe auch: Wie sende ich einen kompletten JSON-Befehl an WLED aus ioBroker? · Warum funktioniert der Adapter nach einem WLED-Firmware-Update nicht mehr?

Was bedeuten Warnungen zu falschem Datentyp oder fehlendem "val" beim Schreiben von States? ​

Kurz: ioBroker prüft jeden Wert, der in einen Datenpunkt geschrieben wird, gegen dessen Datentyp. Passt der Typ nicht, steht eine Warnung im Log. Kommt sie von deinem Skript, schreibst du den Wert im falschen Typ, zum Beispiel "true" als Text statt true. Kommt sie vom Adapter selbst, hilft ein Update.

So sehen die Meldungen aus:

text
State value to set for "wled.0.<MAC>.<State>" has to be type "boolean" but received type "string"
State value to set for "wled.0.<MAC>.<State>" has to be one of type "string", "number", "boolean" but received type "object"
State value to set is invalid for wled.0.<MAC>.<State>: The state is missing the required property val!

Am Anfang der Log-Zeile steht, wer geschrieben hat. Steht dort wled.<Instanz>, kommt der Wert vom Adapter. Steht dort zum Beispiel javascript.0, kommt er aus deinem Skript.

Welchen Datentyp erwarten die Datenpunkte? ​

DatenpunktTypBeispiel
onWahrheitswert (boolean)true oder false
briZahl0 bis 255
psZahl3 für Preset 3
plZahl1 für Playlist 1
transitionZahl7
seg.<Segment>.col.0, .1, .2Text mit Zahlen in eckigen Klammern"[255,0,0]" oder mit Weißkanal "[255,0,0,0]"
seg.<Segment>.col.0_HEX, .1_HEX, .2_HEXText"#ff0000"
actionText mit JSON{"on":true,"bri":128} als Text
_info._onlineWahrheitswert (boolean), nur lesbartrue oder false

Die Typen von on, bri, ps, pl und transition legt der Adapter beim Anlegen nach dem Wert fest, den WLED liefert. Die Farb-Datenpunkte sind vom Typ „mixed“ und enthalten die Farbe als Text. Beim Schreiben nimmt der Adapter auch "255,0,0" ohne Klammern an.

So schreibst du die Werte im richtigen Typ ​

Im Skript übergibst du Zahlen und Wahrheitswerte ohne Anführungszeichen, Farben als Text:

js
setState('wled.0.<MAC>.on', true);                  // nicht 'true'
setState('wled.0.<MAC>.bri', 128);                  // nicht '128'
setState('wled.0.<MAC>.ps', 3);                     // nicht '3'
setState('wled.0.<MAC>.seg.0.col.0', '[255,0,0]');  // Text, keine Liste
setState('wled.0.<MAC>.seg.0.col.0_HEX', '#ff0000');

In Blockly bestimmt der Block, den du an „steuere“ oder „aktualisiere“ anhängst, den Typ:

  1. Für on nimmst du den Logik-Block „wahr“ oder „falsch“. Ein Text-Block mit true liefert Text.
  2. Für bri, ps und pl nimmst du den Zahl-Block aus „Mathematik“. Ein Text-Block mit 3 liefert Text.
  3. Für Farben nimmst du einen Text-Block mit [255,0,0] oder #ff0000. Ein Listen-Block liefert eine Liste, also den Typ „object“.

Übersicht: Der Logik-Block „wahr“ oder „falsch“ liefert boolean für on. Der Zahl-Block liefert eine Zahl für bri, ps, pl und transition. Ein Text-Block liefert Text für die Farb-Datenpunkte. Ein Text-Block mit true an on und ein Listen-Block an einer Farbe führen zu einer Warnung.

Meldungen vom Adapter selbst ​

Bis v0.9.2: Ist ein Gerät nicht erreichbar, schreibt der Adapter _info._online als Text. Im Log steht dann State value to set for "wled.0.<MAC>._info._online" has to be type "boolean" but received type "string". Du musst nichts ändern, die Meldung kommt vom Adapter.

Ab v0.9.3: _info._online ist immer ein Wahrheitswert, die Meldung entfällt (#788, #794).

Die Meldung The state is missing the required property val! und Typ-Meldungen zu Datenpunkten unter _info wie _info.mac kamen von Adapterversionen aus 2020 und 2021. Heute überspringt der Adapter leere Werte. Siehst du diese Meldungen noch, aktualisiere den Adapter.

Datenpunkte, die sich mit v0.9.3 ändern ​

Ab v0.9.3: seg.<Segment>.mi (Segment spiegeln) ist ein Wahrheitswert und lässt sich schreiben (#918).

Ab v0.9.3: time ist eine Zahl (Unix-Zeitstempel) und lässt sich schreiben, um die Uhrzeit des Geräts zu setzen (#919). Bis v0.9.2 ist time vom Typ „mixed“ und nur lesbar.

Siehe auch: Wie schreibe ich eine Farbe per Skript oder Blockly auf WLED? · Warum setzt mein Skript ps oder on nicht? · Was bedeuten die einzelnen WLED-Datenpunkte?

Was bedeuten die Fehler "Gerät nicht erreichbar" und "WebSocket was closed before the connection was established"? ​

Dieser Abschnitt wird noch geschrieben.

Was sind die Sentry-Meldungen im Log? ​

Dieser Abschnitt wird noch geschrieben.

Knowledge has no value unless you use and share it