NEWS
Unbestätigten Wert schreiben lassen
-
@fir3drag0n sagte: scheint dies aber noch nicht zu funktionieren und er beginnt immer bei "0":
Wie sieht das Skript jetzt aus?
Im Tab "Protokolle" finden sich zur Warnung um 11:01:07 sicherlich weitere Informationen.Du hast die Frage nicht beantwortet:
@paul53 sagte in Unbestätigten Wert schreiben lassen:Weshalb muss der Wert bestätigt werden?
-
@paul53 also offensichtlich schient der DP ein string zu sein:
javascript.0 2022-08-24 11:04:00.327 info State value to set for "0_userdata.0.Sodastream.Sodastream-Counter" has to be type "number" but received type "string" javascript.0 2022-08-24 11:04:00.283 warn at processImmediate (node:internal/timers:466:21) javascript.0 2022-08-24 11:04:00.283 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56) javascript.0 2022-08-24 11:04:00.283 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29) javascript.0 2022-08-24 11:04:00.282 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1212:38) javascript.0 2022-08-24 11:04:00.282 warn at Object.<anonymous> (script.js.common.Sodastream-Counter:7:3) javascript.0 2022-08-24 11:04:00.281 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1687:20) javascript.0 2022-08-24 11:04:00.279 warn You are assigning a string to the state "0_userdata.0.Sodastream.Sodastream-Counter" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions.
{ "common": { "name": "Sodastream-Counter", "desc": "Manuell erzeugt", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1661321877340, "_id": "0_userdata.0.Sodastream.Sodastream-Counter", "acl": { "object": 1636, "state": 1636, "ownerGroup": "system.group.administrator" } }
-
@paul53 ich dachte, der Wert muss bestätigt werden, wenn man ihn manuell in Jarvis ändert?
-
@fir3drag0n sagte: offensichtlich schient der DP ein string zu sein:
Nein, es wird ein String geschrieben (Javascript-Ansicht, Zeile 7). Was zu sehen ist, ist nicht das vollständige Skript:
script.js.common.Sodastream-Counter: registered 4 subscriptions
Wo sind die weiteren 2 Trigger?
-
@fir3drag0n sagte: ich dachte, der Wert muss bestätigt werden, wenn man ihn manuell in Jarvis ändert?
Muss er normalerweise nicht.
-
@paul53 das ist das Skript:
var sodastream_counter; on({id: [].concat(['0_userdata.0.Sodastream.Sodastream-Counter']), change: "any", ack: false}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("0_userdata.0.Sodastream.Sodastream-Counter"/*Sodastream-Counter*/, (obj.state ? obj.state.val : ""), true); }); on({id: [].concat(['zigbee.0.00158d0007c57b0b.opened']), change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("zigbee.0.00158d0007c57b0b.opened").val == false) { sodastream_counter = getState("0_userdata.0.Sodastream.Sodastream-Counter").val; sodastream_counter = (typeof sodastream_counter == 'number' ? sodastream_counter : 0) + 1; setState("0_userdata.0.Sodastream.Sodastream-Counter"/*Sodastream-Counter*/, sodastream_counter, true); } });
-
@fir3drag0n sagte: das ist das Skript:
Dann wundert mich der Log mit "4 subcriptions".
Lass den oberen Trigger weg und konvertiere den Wert beim Einlesen nach Zahl.Anscheinend schreibt Jarvis einen String in den Datenpunkt. Das erklärt auch, warum mit 0 begonnen wird. Ändere mal die Rolle von "state" in "level".
Trigger "ist kleiner als letztes" reagiert nur auf Änderung true --> false des Kontaktes. -
@paul53 ja, das war es - danke!
-
@paul53 said in Unbestätigten Wert schreiben lassen:
Anscheinend schreibt Jarvis einen String in den Datenpunkt. Das erklärt auch, warum mit 0 begonnen wird. Ändere mal die Rolle von "state" in "value".
was bewirkt die Änderung der Rolle?
-
@fir3drag0n sagte: was bewirkt die Änderung der Rolle?
Jarvis schreibt dann vielleicht eine Zahl in den Datenpunkt? Ich habe gelesen, dass Visualisierungen die Rolle auswerten.
Da es ein r/w Datenpunkt ist, nimm die Rolle "level".