NEWS
Protokoll meckert String statt Number
-
Hi,
ich möchte einen Wert in einen vorher erstellten Datenpunkt schreiben:
Der Datenpunkt ist vom Typ Number. Der Wert von consumptionMeterReading ist auch vom Typ Number:
Trotzdem bekomme ich im Protokoll die Warnung, dass ich einen Wert vom Typ String in einen DP vom Wert Number schreiben will?
Hat jemand dafür eine Erklärung? -
Welchen Typ hat "Pfad_State_Meter_Reading" ? Bestimmt String?
Wenn das so ist, versuchst du eine Nummer in einen String zu schreiben. -
@spacerx aber der Pfad ist doch der erste Parameter von setState, und ich dachte das könnte ein String sein...
Ich kann die Objekt ID leider nicht zuordnen, da der State erst kurz vorher erstellt wird mit variablen Parametern.
Wie könnte ich die Objekt ID denn anders zuordnen als über den Pfad? -
@kymchy sagte: Der Wert von consumptionMeterReading ist auch vom Typ Number:
Was nicht zwangsweise bedeutet, dass er auch eine Zahl enthält.
-
@paul53 doch, in diesem Fall schon
-
@kymchy sagte: Warnung, dass ich einen Wert vom Typ String in einen DP vom Wert Number schreiben will?
Prüfe den Typ mittels "Typ von" Wert von consumptionMeterReading.
-
@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?