NEWS
Object als States speichern
-
Hallo zusammen,
ich habe mich dumm und dusselig gesucht, um ein js Object als States zu speichern.
Mein Anwendungsfall ist die Berechnung einer Lüftungsempfehlung für meine Räume.
Dabei möchte ich neben der Empfehlung auch die dazu verwendeten Werte speichern.Da ich nichts gefunden habe, habe ich ein kleines Snippet gecoded, welches ein Objekt mit primitiven Eigenschaften speichern kann. Dabei wird jede Eigenschaft als einzelner State gespeichert.
function setObjectAsStates(path, obj){ for (let key in obj) { if (obj.hasOwnProperty(key)) { var id = `${path}.${key}`; if(existsState(id)){ setState (id, obj[key], true); }else{ createState(id, obj[key] , { read:true, write:true, desc:"", type: typeof obj[key] }); } } } } //Anwendung const userState = '0_userdata.0' var path = `${userState}.testObject`; let calcResult = { absulute_humidity_outside:0, absulute_humidity_inside:0, absulute_humidity_difference:0, temperature_outside:0, temperature_inside:0, recommendationString:"", recommendation:0, dateString: date.toISOString(), ts: date.getTime() / 1000 }; setObjectAsStates(path, calcResult);Ich hoffe damit kann ich jemanden helfen.
Falls es eine elegantere Lösung gibt, bin ich für Vorschläge offen.
Gruß
Basti -
Hallo zusammen,
ich habe mich dumm und dusselig gesucht, um ein js Object als States zu speichern.
Mein Anwendungsfall ist die Berechnung einer Lüftungsempfehlung für meine Räume.
Dabei möchte ich neben der Empfehlung auch die dazu verwendeten Werte speichern.Da ich nichts gefunden habe, habe ich ein kleines Snippet gecoded, welches ein Objekt mit primitiven Eigenschaften speichern kann. Dabei wird jede Eigenschaft als einzelner State gespeichert.
function setObjectAsStates(path, obj){ for (let key in obj) { if (obj.hasOwnProperty(key)) { var id = `${path}.${key}`; if(existsState(id)){ setState (id, obj[key], true); }else{ createState(id, obj[key] , { read:true, write:true, desc:"", type: typeof obj[key] }); } } } } //Anwendung const userState = '0_userdata.0' var path = `${userState}.testObject`; let calcResult = { absulute_humidity_outside:0, absulute_humidity_inside:0, absulute_humidity_difference:0, temperature_outside:0, temperature_inside:0, recommendationString:"", recommendation:0, dateString: date.toISOString(), ts: date.getTime() / 1000 }; setObjectAsStates(path, calcResult);Ich hoffe damit kann ich jemanden helfen.
Falls es eine elegantere Lösung gibt, bin ich für Vorschläge offen.
Gruß
BastiHast du das gefunden / getestet:
state type JSON
Und Daten als stringified json ablegenhttps://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#state
Kommt aber drauf an was du mit dem State machen willst ...
-
Hast du das gefunden / getestet:
state type JSON
Und Daten als stringified json ablegenhttps://github.com/ioBroker/ioBroker.docs/blob/master/docs/en/dev/objectsschema.md#state
Kommt aber drauf an was du mit dem State machen willst ...
@mcm1957
Danke, dass ist auch eine Idee.
Ich probieren beides mal aus.
Mal sehen wie sich das Auslesen in der UI anfühlt.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden