NEWS
Gelöst Verständnissproblem mit Blockly
-
Hallo zusammen
Ich stehe vor einem Problem und habe irgendwie kein Ansatz zur Lösung. Ich will eine Ausschaltverzögerung machen um meine Aussenbewegungsmelder bei Sturm zu unterdrücken. Gleichzeitig soll aber die Restlaufzeit auf der Vis angezeigt werden. Es funktioniert soweit auch, aber bei jeder ausführung bringt mir das Log eine ganze Reihe Fehlermeldungen die ich nur teilweise verstehe.
Soweit mein Blockly, kurze Erklärung: "SA_Sturm ist bool" , "Sturmablauf ist number" , "Sturmsperre ist number".
Funktion: bei aktivieren des "SA_Sturm" wird der Zahlenwert aus der Sturmsperre in den Sturmablauf geschrieben und dann rückwärts gezählt. Beim erreichen von Wert "0" wird der "SA_Sturm" wieder auf "false" gesetzt.Im Log kommt nun aber eine Warnung das die "number-Datenpunkte" als "String" definiert sein sollen. Somit gehe ich davon aus, dass ich bei der Berechnung irgendwo noch was falsch habe, aber ich begreife das nicht.
javascript.0 346 2023-08-02 13:33:48.134 info State value to set for "0_userdata.0.diverse.Sturmablauf" has to be type "number" but received type "string" javascript.0 346 2023-08-02 13:33:48.134 warn at processImmediate (node:internal/timers:476:21) javascript.0 346 2023-08-02 13:33:48.134 warn at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5916:56) javascript.0 346 2023-08-02 13:33:48.134 warn at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:645:29) javascript.0 346 2023-08-02 13:33:48.134 warn at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1255:38) javascript.0 346 2023-08-02 13:33:48.134 warn at Object.<anonymous> (script.js.common.Allgemein.Versuch:16:5) javascript.0 346 2023-08-02 13:33:48.133 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1730:20) javascript.0 346 2023-08-02 13:33:48.133 warn You are assigning a string to the state "0_userdata.0.diverse.Sturmablauf" 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. javascript.0 346 2023-08-02 13:32:47.650 info State value to set for "0_userdata.0.diverse.Sturmablauf" has to be type "number" but received type "string"
Ergänzung:
Wenn ich mir das ganze im JS-Format ansehe, kommt auf der Zeile 9 folgendes:setState("0_userdata.0.diverse.Sturmablauf"/*Sturmablauf*/, getState("0_userdata.0.diverse.Sturmsperre").val, true);
kann es sein, dass er da aus der Zahl einen String machen will beim überschreiben im "Sturmablauf"?
-
@andibr sagte: kommt auf der Zeile 9 folgendes:
Der Fehler wird in Zeile 16 gemeldet.
Verwende anstelle eines zweiten Triggers eine Variable, etwa so:
-
@paul53
Ist sowohl Zeile 9 und 16 drin, und im 2 Trigger auch nochmal für den Reset nach Ablauf der Zeit.Eine kleine Rückfrage, einfach das ich das richtig Verstehe: Blockly "aktualisiere...." funktioniert mit reinen "number" Datenpunkten nicht identisch wie mit "String"?
Andi
-
@andibr sagte: "aktualisiere...." funktioniert mit reinen "number" Datenpunkten nicht identisch wie mit "String"?
Doch. Wenn aber ein String in den Datenpunkt "Sturmsperre" geraten sein sollte, führt das bei Schreiben des Wertes in "Sturmablauf" zu den Warnungen. Deshalb in meinem Vorschlag die Wandlung "nach Zahl".
-
@paul53
Ich habs hingekriegt, danke.wusste gar nicht, dass man den "Konvertierungs-Baustein" auch im "aktualiseren..." benützen kann.
Vermutlich kam das Problem aus meinem Eingabe-Feld im Vis. Gibt es da auch was schlaueres als das "number" aus dem ......?
Andi
Ergänzung: ich habe nun einen weiteren Datenpunkt erzeugt der ist jetzt "string" und im Vis schreibe ich jetzt dort rein, sobald der aktualisiert wird, konvertiert das System in einen "number".