NEWS
JSON in Objekt/Datenpunkt umwandeln
-
Hallo habe folgendes Problem:
Möchte aus einem Datenpunkt vom mqtt adapter einen Wert extrahieren, in diesem Fall die Spannung.
Der Wert vom Datenpunkt ist z.B.:{"id": 100,"voltage":1.28}
Ich möchte den Wert der Spannung in einen eigenen Datenpunkt schreiben.
Mein Blocklyversuch sieht jetzt so aus
Als Ausgabe bekomme ich leider nur folgendes: { val: undefined, ack: true }
Kenne mich da zu wenig aus, hat jemand eine Idee?
-
@hans_m sagte: Spannung in einen eigenen Datenpunkt schreiben.
-
@paul53 funktioniert...manchmal ist es so einfach, vielen Dank!
Aber was genau ist der Unterschied? -
@hans_m sagte in JSON in Objekt/Datenpunkt umwandeln:
Aber was genau ist der Unterschied?
- @paul53 zeigt Dir, wie man mit dem Wert des triggernden Objektes arbeitet.
Der Trigger kennt den Wert bereits. Den nochmal irgendwo her zu lesen ist suboptimal und verschwendet Ressourcen. - Du prömpelst am Gesamtobjekt herum. Was Du aber brauchst, ist der "Wert" des Zustands vom Objekt.
Also nichtobj.voltage
, sondernobj.state.val.voltage
. Das wird klarer, wenn man sich das JS hinter dem Blockly ansieht.
on({ id: '0_userdata.0.test', change: 'ne' }, async (obj) => { spannung = getAttr(getObject('0_userdata.0.test'), 'voltage'); // Dein Konstrukt spannung = getAttr(obj.state.val, 'voltage'); // Paul's Lösung });
- @paul53 zeigt Dir, wie man mit dem Wert des triggernden Objektes arbeitet.
-
@codierknecht verstanden...vielen Dank
-
Ich hätte da auch mal eine Frage.
Ich habe im DP folgende Werte für die Spannungswerte der einzelnen Zellen meines BKW Akkus.{"cells":[3.397,3.397,3.399,3.398,3.401,3.4,3.401,3.391,3.394,3.392,3.394,3.395,3.396,3.396],"min":3.391,"max":3.401,"avg":3.3965}
Wie bekomme ich diese in einzelne DP um sie zu visualisieren?
Gruß 5tift
-
@5tift mal als Anregung
statt debug in entsprechende Datenpunkte schreiben
-
Datenpunkte selber anlegen und Variable entsprechend ändern
-
@5tift sagte in JSON in Objekt/Datenpunkt umwandeln:
Wie bekomme ich diese in einzelne DP um sie zu visualisieren?
Entweder per Script, so wie @Homoran es zeigt, oder Du legst Dir für jede Zelle einen Alias an. Dann geht das auch ohne Script.
https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps/12Die Konvertierungen würden so aussehen:
JSON.parse(val).cells[0] JSON.parse(val).cells[1] JSON.parse(val).cells[2] ...
-
@homoran
Vielen Dank für den schnellen Input, werd mal versuchen das nachzubauen