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