NEWS
Warning beim Aktualisieren von Datenpunkten
-
Hallo zusammen,
ich habe ein Problem beim Aktualisieren eines Datenpunktes aus Blockly.
Es kommt immer eine Warning Meldung im Log.Datenunkt: 0_userdata.0.Shelly.pro4pm_IP-141.Total-0
Blockly:
if (getAttr(json, 'params.switch:0.aenergy.total') != null) { console.log(('switch:0.output.aenergy.total: ' + String(getAttr(json, 'params.switch:0.aenergy.total')))); total = getAttr(json, 'params.switch:0.aenergy.total'); console.log(total); setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Total-0', total, true, parseInt(((0) || "").toString(), 10), false); }
log:
18:32:00.570 info javascript.0 (28782) script.js.ShellySkripte.Pro4PM_141_auslesen: switch:0.output.aenergy.total: 0
18:32:00.571 info javascript.0 (28782) script.js.ShellySkripte.Pro4PM_141_auslesen: 0
18:32:00.575 warn javascript.0 (28782) at Object.<anonymous> (script.js.ShellySkripte.Pro4PM_141_auslesen:16:5)Wer kann mir schreiben, warum diese Warnung kommt und wie ich sie weg bekomme?
TIA
.h -
@half sagte in Warning beim Aktualisieren von Datenpunkten:
18:32:00.575 warn javascript.0 (28782) at Object.<anonymous> (script.js.ShellySkripte.Pro4PM_141_auslesen:16:5)
hast du globale Skripte?
oder kommt da noch was bei Zeile 16??? -
@homoran Zeile 16 ist die setStateDelayed Zeile.
hier das Ganze Skript:
var json, total; on({id: "mqtt.0.Shelly.PRO.4PM.141.events.rpc"/*Shelly.PRO.4PM.141/events/rpc*/, change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; json = (function () { try {return JSON.parse(getState("mqtt.0.Shelly.PRO.4PM.141.events.rpc").val);} catch(e) {return {};}})(); if (getAttr(json, 'params.switch:0.output') != null) { console.log(('switch:0.output: ' + String(getAttr(json, 'params.switch:0.output')))); setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Switch-0-State', getAttr(json, 'params.switch:0.output'), false, parseInt(((0) || "").toString(), 10), false); } if (getAttr(json, 'params.switch:0.aenergy.total') != null) { console.log(('switch:0.output.aenergy.total: ' + String(getAttr(json, 'params.switch:0.aenergy.total')))); total = getAttr(json, 'params.switch:0.aenergy.total'); console.log(total); setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Total-0', total, true, parseInt(((0) || "").toString(), 10), false); } if (getAttr(json, 'params.switch:1.output') != null) { console.log(('switch:1.output: ' + String(getAttr(json, 'params.switch:1.output')))); setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Switch-1-State', getAttr(json, 'params.switch:1.output'), false, parseInt(((0) || "").toString(), 10), false); } if (getAttr(json, 'params.switch:2.output') != null) { console.log(('switch:2.output: ' + String(getAttr(json, 'params.switch:2.output')))); setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Switch-2-State', getAttr(json, 'params.switch:2.output'), false, parseInt(((0) || "").toString(), 10), false); } if (getAttr(json, 'params.switch:3.output') != null) { console.log(('switch:3.output: ' + String(getAttr(json, 'params.switch:3.output')))); setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Switch-3-State', getAttr(json, 'params.switch:3.output'), false, parseInt(((0) || "").toString(), 10), false); } }); console.log(json);
-
@half sagte in Warning beim Aktualisieren von Datenpunkten:
hier das Ganze Skript:
was sollte dann eben der Ausschnitt
@half sagte in Warning beim Aktualisieren von Datenpunkten:
setStateDelayed('0_userdata.0.Shelly.pro4pm_IP-141.Total-0', total, true, parseInt(((0) || "").toString(), 10), false);
und wo ist das im Blockly?
ist das auch nur ein Ausschnitt??? -
@homoran
Der Blockly Screenshot ist der Auszug.Hier auch mal das ganze Blockly Skript:
-
@homoran sagte: wo ist das im Blockly?
Das ist der "schreibe"-Block.
-
@paul53 ich weiss
Es ist das Schreiben der Variable: 0_userdata.0.Shelly.pro4pm_IP-141.Total-0
Die Variable wird auch geschrieben, aber trotzdem kommt die warnung.
Aber warum wird die warning geschmissen?
und wie bekomme ich sie weg? -
@paul53 sagte in Warning beim Aktualisieren von Datenpunkten:
Das ist der "schreibe"-Block.
aber da finde ich den "nach Text" nicht, oder ist das implizit?
-
@homoran meinst du mit nach text zeile 32?
-
@homoran sagte: oder ist das implizit?
Ja.
-
@paul53 sagte in Warning beim Aktualisieren von Datenpunkten:
@homoran sagte: oder ist das implizit?
Ja.
Danke!
dann kann ich ja lange suchen -
@paul53 das ist ein block, den ich rausgezogen hat, der nicht ausgeführt wird.
im screeshot oben rechts der einzelne block am anfang des skripts -
@half sagte: Aber warum wird die warning geschmissen?
Schau mal im Tab "Protokolle" nach. Dort findet man meist mehr Informationen.
Enthält "Total-0" wirklich eine Zeichenkette? Wie sieht JSON aus? -
@paul53 danke, ich glaub ich habs gefunden.
You are assigning a number to the state "0_userdata.0.Shelly.pro4pm_IP-141.Total-0" which expects a string. Please fix your code to use a string or change the state type to number. This warning might become an error in future versions.
Dann übergab ich das Ganze mal als String. Mal sehen, ob der Fehler dann weg ist.
-
@half sagte: Dann übergab ich das Ganze mal als String.
Ich hätte common.type des Datenpunktes von "string" in "number" geändert.
-
@paul53 hat sowohl als auch funktioniert.
habs jetzt den Datenpunkt auf Zahl gesetzt, ist sauberer.Danke, an Alle für die Denkanstöße