NEWS
Rückgabe body & error von request sind keine strings?
-
Hi zusammen,
ich habe ein kleines Script, welches einen Wert in einem Tasmota Device setzt. Das iobroker Log meldet mir jedoch, dass ich einen Wert nicht als string übergebe. Die Rückgabe von body & error aus einem request müssten doch aber strings sein?
Kann ich das irgendwie umgehen?
Logfile:
You are assigning a object to the state "0_userdata.0.Pool.setTempErrorString" which expects a string. Please fix your code to use a string or change the state type to object. This warning might become an error in future versions.
Script:
var parseString = require('xml2js').parseString; var request = require('request'); //Baue URL zusammen var deviceip = '192.168.69.90' var command = '/cm?user=joker&password=Xcmnd=mem1%20' var temp = getState("hm-rega.0.21812").val var callURL = "http://" + deviceip + command + temp //Request an Device request(callURL, function (error, response, body) { if (!error && response.statusCode == 200) { setState("0_userdata.0.Pool.setTempError", false); setState("0_userdata.0.Pool.setTempErrorString", body); setState("0_userdata.0.Pool.setTempErrorCount", 0); } else { //Wenn Error, schreibe Objekte setState("0_userdata.0.Pool.setTempError", true); setState("0_userdata.0.Pool.setTempErrorString", error); setState("0_userdata.0.Pool.setTempErrorCount", (getState("0_userdata.0.Pool.setTempErrorCount").val + 1)); } });
-
@gutgut30 Ändere halt einfach den Datentyp des Datenpunktes - Bleistiftsymbol rechts anklicken
-
@mickym said in Rückgabe body & error von request sind keine strings?:
@gutgut30 Ändere halt einfach den Datentyp des Datenpunktes - Bleistiftsymbol rechts anklicken
Das hatte ich auch versucht.
Allerdings bekomme ich dann den Fehler in Zeile 15 - body ist nämlich ein String und möchte natürlich nicht so gerne in ein object schreiben.
Also egal wie ich es drehe, einen von beiden Werten muss ich als String oder als Object bekommen. Und den Error als String erscheint mir passender. Ich hätte halt auch erwartet, dass es ein string ist.
EDIT: Habs gelöst mit
String(error)
Ich war von groovy irgendwie mit error.toString auf dem Holzweg. Läuft jetzt.
-
@gutgut30 Du schreibst grundsätzlich nur Strings und nie Objekte. Objekte müssen ggf. als JSONS in Strings gewandelt werden.
-
@gutgut30 said in Rückgabe body & error von request sind keine strings?:
Ich war von groovy irgendwie mit error.toString auf dem Holzweg. Läuft jetzt
fast richtig.
error.toString()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString?retiredLocale=deaber bei den meisten Objekten kommt dann halt nur
'[object Object]'
raus. die wenigsten überlagern die Methode der Object-Klasse mit einer eigenen toString() Methode