NEWS
JSON mit Blockly auslesen
-
Hallo zusammen
Ich habe über MQTT ein externes Gerät eingebunden, Zendure Solarflow falls es wem was sagt.
Der MQTT Client-Adapter liest alle paar Sekunden einen JSON String vom Gerät in eine Variable ein... die mal mehr, mal weniger Attribute enthalten. Jenachdem ob sich diese gerade aktualisiert haben.zB. ist im JSON String mal nur...
{"electricLevel":28}
im nächsten Moment
{"outputHomePower":98,"packInputPower":102}Der JSON String kann aus folgenden Attributen bestehen, je nachdem ob sich diese gerade aktualisiert haben:
Ich versuche mit Blockly nun diese auszulesen und in einzelne Datenpunkte zu bringen, um sie leichter verarbeiten zu können und ggf. in weiterer Folge in zB. Lovelace in einem Diagramm anzuzeigen.
Das auslesen und ausgeben in einen Datenpunkt habe ich mit diesem Blockly Script gemacht:
...das funktioniert soweit auch...
...nur sobald mal zB. ein Attribut gerade nicht im JSON String mitübergeben wird, soll einfach der vorherige übergebene Wert im Datenpunkt stehen bleiben.Leider wird er aber - wenn er nicht mitübergeben wird (in dem Fall hier der Datenpunkt "electricLevel") - mit {"ack":true} überschrieben.
Wie kann ich das umgehen? Dass also immer nur dann der Wert vom Attribut gespeichert wird, wenn er auch tatsächlich gerade im JSON String enthalten war? Wenn kein Attribut im JSON steht, dann soll der letzte Wert bleiben.Danke.
-
@astuermer Ich bin bekannterweise kein Blockly-Fan und im NodeRed habe ich die Analyse und automatische Erstellung von JSON Strings bzw. Objekten ja schon lange automatisiert.
Du musst halt überprüfen, dass der Datenpunkt bzw. das Objekt nicht null ist.
aber wie gesagt - weiter dringe ich in diese Materie nicht ein, weil ich das Puzzeln hier einfach zu umständlich finde.
-
@mickym Danke, mit "ungleich Null" hats geklappt statt "Nicht Null"