NEWS
HILFE: Alle Fenster geschlossen ? Datenpunkte auf true
-
@dellishelly Dieser Ausdruck extrahiert aus Deinem Namen des Datenpunktes
da steht ja als Name Couchbeleuchtung.STATE das Wort Couchbeleuchtung. So dass im Objekt dann stehen muss:
{ "Couchbeleuchtung" : false }
Du musst ggf. halt ein Debug reinmachen und prüfen, ob alles richtig extrahiert wird.
Und wie gesagt, solange die Liste noch nicht aufgebaut ist, mach ein leeres Objekt in Deinen Datenpunkt liste_lampen rein. -
Den Ausdruck habe ich ja verstanden. Leider klappt's noch immer nicht.
hier ist der Dubug - kannst du mir dazu was sagen ?vascript.0 2023-09-19 13:27:26.337 error at Object.<anonymous> (script.js.Lichterprüfen:9:83) javascript.0 2023-09-19 13:27:26.337 error at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26) javascript.0 2023-09-19 13:27:26.337 error at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3525:26) javascript.0 2023-09-19 13:27:26.337 error at evaluateFunction (/opt/iobroker/node_modules/jsonata/jsonata.js:4871:28) javascript.0 2023-09-19 13:27:26.337 error at apply (/opt/iobroker/node_modules/jsonata/jsonata.js:4896:24) javascript.0 2023-09-19 13:27:26.336 error at applyInner (/opt/iobroker/node_modules/jsonata/jsonata.js:4929:33) javascript.0 2023-09-19 13:27:26.336 error at validateArguments (/opt/iobroker/node_modules/jsonata/jsonata.js:5062:39) javascript.0 2023-09-19 13:27:26.336 error at Object.validate (/opt/iobroker/node_modules/jsonata/jsonata.js:7215:28) javascript.0 2023-09-19 13:27:26.336 error at Array.forEach (<anonymous>) javascript.0 2023-09-19 13:27:26.336 error at /opt/iobroker/node_modules/jsonata/jsonata.js:7242:45 javascript.0 2023-09-19 13:27:26.336 error at Array.forEach (<anonymous>) javascript.0 2023-09-19 13:27:26.335 error at /opt/iobroker/node_modules/jsonata/jsonata.js:7272:57 javascript.0 2023-09-19 13:27:26.335 error script.js.Lichterprüfen: Error: javascript.0 2023-09-19 13:27:26.330 warn at Object.<anonymous> (script.js.Lichterprüfen:8:131) javascript.0 2023-09-19 13:27:26.330 warn at script.js.Lichterprüfen:8:52 javascript.0 2023-09-19 13:27:26.329 warn getState "0_userdata.0.Status.Liste_lampen" not found (3) states[id]=null```
-
@mickym Na der sagt, dass der Datenpunkt 0_userdata.0.Status.Liste_lampen nicht existiert. Hast Du den angelegt?
-
ja das ist ja das was ich nicht verstehe.
Ich habs aber jetzt nochmal so gemacht wie du gesagt hast und die "Liste Lampe" aus dem Skript entfernt.
funktioniert aber genauso wenig.das ist jetzt der debug
javascript.0 2023-09-19 13:37:09.279 error at Object.<anonymous> (script.js.Lichterprüfen:9:41) javascript.0 2023-09-19 13:37:09.279 error at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26) javascript.0 2023-09-19 13:37:09.279 error at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3525:26) javascript.0 2023-09-19 13:37:09.279 error at evaluateFunction (/opt/iobroker/node_modules/jsonata/jsonata.js:4871:28) javascript.0 2023-09-19 13:37:09.278 error at apply (/opt/iobroker/node_modules/jsonata/jsonata.js:4896:24) javascript.0 2023-09-19 13:37:09.278 error at applyInner (/opt/iobroker/node_modules/jsonata/jsonata.js:4929:33) javascript.0 2023-09-19 13:37:09.278 error at validateArguments (/opt/iobroker/node_modules/jsonata/jsonata.js:5062:39) javascript.0 2023-09-19 13:37:09.277 error at Object.validate (/opt/iobroker/node_modules/jsonata/jsonata.js:7215:28) javascript.0 2023-09-19 13:37:09.277 error at Array.forEach (<anonymous>) javascript.0 2023-09-19 13:37:09.275 error at /opt/iobroker/node_modules/jsonata/jsonata.js:7242:45 javascript.0 2023-09-19 13:37:09.275 error at Array.forEach (<anonymous>) javascript.0 2023-09-19 13:37:09.275 error at /opt/iobroker/node_modules/jsonata/jsonata.js:7272:57 javascript.0 2023-09-19 13:37:09.274 error script.js.Lichterprüfen: Error: javascript.0 2023-09-19 13:37:09.266 warn at Object.<anonymous> (script.js.Lichterprüfen:8:108) javascript.0 2023-09-19 13:37:09.263 warn at script.js.Lichterprüfen:8:52 javascript.0 2023-09-19 13:37:09.256 warn getState "Object ID" not found (3)
-
@dellishelly Nochmal hast Du denn den Datenpunkt unter userdata_0.0 angelegt?
Du kannst ja prüfen was in diesen Datenpunkt geschrieben werden soll:
Lass Dir mit Debug ausgeben, so wie im Screenshot gezeigt was in den Datenpunkt geschrieben wird.
Wenn das so ähnlich aussieht - dann ist der Input korrekt, aber Dein Datenpunkt existiert nicht.
Der Datenpunkt sollte halt ein leeres Objekt {} zu Beginn enthalten. Wenn das nicht der Fall ist, dann mach ich noch eine Abprüfung rein.
-
@dellishelly sagte: sobald der Status eines geändert wird, ALLE Fenster überprüft und eine Variable "Alle Fenster" auf true setzt wenn alle Fenster geschlossen sind.
-
ich komm mir schon maximal dämlich vor......
ja den Datenpunkte Liste_Lampen habe ich selbst angelegt
javascript.0 2023-09-19 13:54:01.168 error at Object.<anonymous> (script.js.Lichterprüfen:8:147) javascript.0 2023-09-19 13:54:01.168 error at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26) javascript.0 2023-09-19 13:54:01.167 error at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3493:26) javascript.0 2023-09-19 13:54:01.167 error at evaluateUnary (/opt/iobroker/node_modules/jsonata/jsonata.js:3985:26) javascript.0 2023-09-19 13:54:01.166 error at evaluateGroupExpression (/opt/iobroker/node_modules/jsonata/jsonata.js:4349:33) javascript.0 2023-09-19 13:54:01.166 error script.js.Lichterprüfen: Error: javascript.0 2023-09-19 13:54:01.163 warn at Object.<anonymous> (script.js.Lichterprüfen:8:142) javascript.0 2023-09-19 13:54:01.163 warn at script.js.Lichterprüfen:8:52 javascript.0 2023-09-19 13:54:01.161 warn getState "[object Object]" not found (3)
-
@dellishelly OK wie ich vermutete, da steht null drin. Hier ich hab mal für die Initialisierung wie folgt geändert - damit müsste es gehen:
also gib mal folgenden Code ein:
$type($[0]) = "object" ? $merge($) : $[1]
Wie gesagt damit sollte es gehen!!
Der Fehler ist dass am Anfang ein leeres Objekt erwartet wurde.
Wenn da am Anfang nicht null sondern {} drin stehen würde - wäre es gegangen - nun sollte es aber auch gehen.
Es gibt beim allerersten Mal eine Warnung - aber es sollte durchlaufen.
-
Hab ich erledigt. Leider noch immer kein erfolg
javascript.0 2023-09-19 14:16:34.253 error at Object.<anonymous> (script.js.Lichterprüfen:8:147) javascript.0 2023-09-19 14:16:34.253 error at Object.evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:5558:26) javascript.0 2023-09-19 14:16:34.252 error at evaluate (/opt/iobroker/node_modules/jsonata/jsonata.js:3493:26) javascript.0 2023-09-19 14:16:34.252 error at evaluateUnary (/opt/iobroker/node_modules/jsonata/jsonata.js:3985:26) javascript.0 2023-09-19 14:16:34.252 error at evaluateGroupExpression (/opt/iobroker/node_modules/jsonata/jsonata.js:4349:33) javascript.0 2023-09-19 14:16:34.252 error script.js.Lichterprüfen: Error: javascript.0 2023-09-19 14:16:34.249 warn at Object.<anonymous> (script.js.Lichterprüfen:8:142) javascript.0 2023-09-19 14:16:34.248 warn at script.js.Lichterprüfen:8:52 javascript.0 2023-09-19 14:16:34.245 warn getState "[object Object]" not found (3)
-
Bist du sicher dass der hier stimmt ?
$match($,/(.).(.)/).groups[0]
Woher kommt der Pfad ?
Kann ich ihn mir selbst irgendwoher kopieren ? -
@dellishelly Schau doch mal in dem Du mit debug das topic ausgibst was da steht. Dann lass Dir auch mal den Namen des Datenpunktes ausgeben. Name ist die 2. Spalte in der Objektansicht.
Du kannst das leicht prüfen in dem Du halt mal den Text direkt eingibst.
Im Grund wird also nur der vordere Teil abgeschnitten
Also aus Couchbeleuchtung.STATE wird Couchbeleuchtung.
Deaktiviere mal alle weiteren Bausteine dann gehen wir Schritt für Schritt vor.
Wenn der Name bei den Datenpunkten nicht gesetzt ist dann nehmen wir die ID - aber wir wollen ja die Couchbeleuchtung als Eigenschaft aus den Infos herauslösen.
-
@dellishelly sagte in HILFE: Alle Fenster geschlossen ? Datenpunkte auf true:
Bist du sicher dass der hier stimmt ?
$match($,/(.).(.)/).groups[0]
Woher kommt der Pfad ?
Kann ich ihn mir selbst irgendwoher kopieren ?Zitieren die * fehlen bei dem Befehl - das liegt aber daran weil Du es nicht in CodeTags geschrieben hast.
Du kannst auch wie gesagt die ID nehmen - wir müssen ja nur ermitteln was für eine Lampe es ist. Sonst poste den String, woher er ist (ID oder Name) und dann basteln wir den regulären Ausdruck
-
```
soweit so gut. das gibt er mir nun unten aus
Aber ich komme nicht in die Liste
beim starten des Skripts gibt er mir den debugjavascript.0 2023-09-19 15:01:31.776 info script.js.Lichterprüfen: registered 1 subscription, 0 schedules, 0 messages, 0 logs and 0 file subscriptions javascript.0 2023-09-19 15:01:31.776 error script.js.Lichterprüfen Error by subscription (trigger): empty ID defined. All states matched. javascript.0 2023-09-19 15:01:31.775 warn at script.js.Lichterprüfen:23:3 javascript.0 2023-09-19 15:01:31.775 warn at script.js.Lichterprüfen:10:20 javascript.0 2023-09-19 15:01:31.773 warn getState "[object Object]" not found (3) javascript.0 2023-09-19 15:01:31.747 info Start javascript script.js.Lichterprüfen javascript.0 2023-09-19 15:01:29.256 info Stop script script.js.Lichterprüfen
-
@dellishelly Das getState kommt vom unteren Teil - deaktiviere den auch.
Dann ersetze mal
den Text durch Name und schau ob dann Couchbeleuchtung ohne weitere Fehler rauskommt. Oder Couchlicht
-
-
@dellishelly So dann aktiviere die nächsten beiden Blöcke und schau dass der Datenpunkt Liste_lampen existiert.
-
@mickym
Ich bekomme zum einen nenne Warnung und hier der Debug. Warum auch immer scheint er die Liste nicht zu finden, obwohl der Datenpunkt existiert.javascript.0 2023-09-19 15:30:09.150 info script.js.Lichterprüfen: {"Couchbeleuchtung":true} javascript.0 2023-09-19 15:30:09.148 warn at Object.<anonymous> (script.js.Lichterprüfen:9:142) javascript.0 2023-09-19 15:30:09.147 warn at script.js.Lichterprüfen:9:52 javascript.0 2023-09-19 15:30:09.146 warn getState "[object Object]" not found (3) javascript.0 2023-09-19 15:30:09.145 info script.js.Lichterprüfen: Couchbeleuchtung
-
@dellishelly Gut dann mach den nächsten auch noch scharf. Die Warnung kommt weil kein Objekt da ist.
Und dann prüfe ob anschließend was in Deinem Datenpunkt der Liste drin steht
Das schaut doch gut aus.
-
@mickym
läuft auch durch und er schreibt den Wert auch in die Liste_lampen.
Allerdings schreibt er immer nur einen Wert in die Liste auch wenn ich mehrere Lichter aus der Aufzählung schalte.Der Fehler kommt im Debug noch immer Object not found
2023-09-19 15:43:05.189 info script.js.Lichterprüfen: {"Couchbeleuchtung":true} javascript.0 2023-09-19 15:43:05.185 warn at Object.<anonymous> (script.js.Lichterprüfen:9:142) javascript.0 2023-09-19 15:43:05.185 warn at script.js.Lichterprüfen:9:52 javascript.0 2023-09-19 15:43:05.183 warn getState "[object Object]" not found (3) javascript.0 2023-09-19 15:43:05.182 info script.js.Lichterprüfen: Couchbeleuchtung
-
@dellishelly Also jetzt sollte der Fehler nicht mehr kommen hast Du auch als Datentyp JSON eingetragen?