NEWS
Object in State speichern und abrufen.
-
Ich würde gerne einen State definieren, der ein Object beinhaltet.
Ist das möglich?
Beispiel
createState("Test_Object", { name: "Test_Object", read: true, write: true, desc: 'State der ein Object enthält', type: 'object' }); setState("Test_Object",{"eins":0,"zwei":1}); var test = getState("Test_Object").val; log(test.eins);Leider bekomme ich bei dem Beispiel eine Ausgabe mit null.
Mein Workarround ist mit Stringify aus einem Object ein String zu machen und den dann in dem Eventhandler mit JSON.parse zu parsen.
Aber vielleicht geht das ja auch direkt.
-
Objekte können nicht als val übergeben werden, da nicht von der https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation#how-to-write-state
setState(id, {val: 1, ack: true});unterschieden werden kann.
-
Anmerkung: Der Test sollte in der Callback-Funktion von setState() erfolgen, da das Skript sonst zweimal gestartet werden muss, damit der Test einen gültigen Wert erhält.
var meinObjekt = {"eins":0,"zwei":1}; setState("Test_Object", {val: meinObjekt, ack: true}, function() { var test = getState("Test_Object").val; log(test.eins); }); -
Danke.
Ich finde die Schreibweise, siehe Beispiel, ganz praktisch und sehe nette Anwendungen.
setState("Test2Speech",{val:{"text":"Hallo World","vol":1,"device":"Bad"}}); on({id: "Test2Speech", change: "any"}, function (obj) { parms = obj.state.val; log("Dieser Text soll ausgegeben werden: " + parms.text); log("mit dieser Lautstärke: " + parms.vol); log("auf diesem Lautsprecher: " + parms.device); .... })