NEWS
Protokoll meckert String statt Number
-
@paul53 es geht hier wohl nicht um den Wert an sich, sondern um die Objekt ID, die in meinem Skript als String übergeben wird. Vermutlich sollte die Objekt ID aber vom Typ Number sein.
Ist nur in diesem Fall nicht möglich, weil der Datenpunkt erst kurz vorher dynamisch erzeugt wird.
Möglich wäre es, wenn ich anhand des Pfades die Objekt ID auslesen könnte, dann könnte ich sie korrekt übergeben. Ich weiß aber nicht, ob das geht bzw. wie. -
@kymchy sagte: es geht hier wohl nicht um den Wert an sich, sondern um die Objekt ID, die in meinem Skript als String übergeben wird. Vermutlich sollte die Objekt ID aber vom Typ Number sein.
Nein, die Objekt ID ist immer ein String.
Die Warnung kommt nur, wenn der Typ des zu schreibenden Wertes nicht mit common.type übereinstimmt.Prüfung:
-
Du übergibst an schreibe die Objekt ID von "Pfad_State_Meter_Reading" und nicht den Pfad.
Du musst den Pfad erst als ID deklarieren. Wie das geht kann ich jetzt auch nicht sagen. Hab kein Blockly zur Hand. -
also eine Zahl!
-
@spacerx also liegt es doch an der Objekt ID.
-
Versuche es mal mit (Wert von Object ID) -> "Pfad_State_Meter_Reading",
-
@kymchy sagte: also eine Zahl!
Dann dürfte die Warnung "Wert vom Typ String in einen DP vom Wert Number schreiben" nicht kommen, es sei denn, es ist mal eine Zahl und mal ein String. In dem Fall wandle einfach nach Zahl.
-
@spacerx leider geht es so nicht: State "null" not found
-
Dann schreibe den Pfad vorher in eine Variable und nimm die Variable für die Objekt ID. Vieleicht geht das. Vorausgesetzt der Datenpunkt auf den der Pfad zeigt existiert schon.
-
@spacerx hatte ich auch schon versucht mit:
function (path_jahreswert, value_Jahreswert) setState(path_jahreswert,value_Jahreswert,true);
ich vermute, man könnte die Objekt ID mit getState ermitteln.
-
Lass dir den Pfad-String mal mit debug ausgeben. Entweder stimmt der nicht oder der Datenpunkt existert einfach noch nicht. Dann muss der natürlich erst angelegt werden bevor du darauf schreiben kannst.
-
@spacerx die DPs werden ja korrekt geschrieben, also ich erhalte die Werte wie gewünscht. Nur das protokoll meckert.
-
@kymchy sagte: Nur das protokoll meckert.
Zeigen (in Code tags)!!
-
@paul53 code tags?
also den Pfad erstelle ich mit 'erstelle Text aus'.
das ist dann doch wohl ein String, oder? -
-
@kymchy sagte: den Pfad erstelle ich mit 'erstelle Text aus'. das ist dann doch wohl ein String, oder?
Ja, natürlich.
-
@paul5
You are assigning a object to the state "0_userdata.0.PowerOpti.Jahreszählerstände.2022.Verbrauch" which expects a number
den State erstelle ich vorher so:
createState("0_userdata.0.PowerOpti.Jahreszählerstände."+folder+'.'+value, { name: value, role: 'value', read: false, write: true, type: 'number', unit: 'kWh', "smartName": { "de": value } });
-
@kymchy
Irgendwo schreibst Du ein Objekt (kann auch null sein) in den Datenpunkt "0_userdata.0.PowerOpti.Jahreszählerstände.2022.Verbrauch".@kymchy sagte in Protokoll meckert String statt Number:
den State erstelle ich vorher so:
Das ist korrekt so, außer "read": false.
-
@paul53 said in Protokoll meckert String statt Number:
@kymchy
Irgendwo schreibst Du ein Objekt (kann auch null sein) in den Datenpunkt .warum steht dann hinterher eine Zahl drin, die ich mir aus einem anderen Datenpunkt hole?
-
@paul53 said in Protokoll meckert String statt Number:
@kymchy
Das ist korrekt so, außer "read": false.hatte ich mir auch schon gedacht...hatte es erstmal so gelassen, weils funktionierte...