NEWS
gelöst - Blockly JSON auslesen und Wert in DP schreiben
-
Hallo,
ich habe ein Python-Script das auf nem Server ausgeführt wird und über nen IR-Lesekopf meine Wärmemengezähler ausliest. Es schreibt die Daten dann über Simple_API in Iobroker in einen Datenpunkt. Das Problem ist es schreibt die Daten als JSON-String und ich muss über ein Blockly Script den Wert rausfiltern den ich haben will.
Ich hatte ein Blockly das die ganze Zeit funktioniert hat, das Problem ist aber dass sich das Python Script geändert hat und jetzt die JSON-Datei etwas anders aufgebaut ist. Deswegen funktioniert das Auslesen jetzt nicht mehr. Kann mir einer sagen was ich ändern muss? Danke schonmal.Hier ein Bild von meinem aktuellen Blockly, das passt aber nur auf die alte JSON und muss irgendwie geändert werden :)

Hier ist die JSON-Datei Struktur, wo der rote Wert ausgelesen werden soll.
{ "frame_info": { "a": "0x0", "c": "0x8", "start": "0x68", "stop": "0x16", "crc": "0xde", "length": "0x42" }, "header": { "status": "0x0", "medium": "0x4", "access_no": 135, "sign": "0x0, 0x0", "version": "0x19", "identification": "0x80, 0x74, 0x12, 0x52", "type": "0x72", "manufacturer": "SEN" }, "records": [ { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.ENERGY_WH", "%(#ff0000)[**value": 159620000,**] "unit": "MeasureUnit.WH" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.VOLUME", "value": 30628.779000000002, "unit": "MeasureUnit.M3" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.VOLUME_FLOW", "value": 0, "unit": "MeasureUnit.M3_H" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.POWER_W", "value": 0, "unit": "MeasureUnit.W" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.FLOW_TEMPERATURE", "value": 23.400000000000002, "unit": "MeasureUnit.C" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.RETURN_TEMPERATURE", "value": 23.700000000000003, "unit": "MeasureUnit.C" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.TEMPERATURE_DIFFERENCE", "value": 0, "unit": "MeasureUnit.K" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.FABRICATION_NO", "value": 80741252, "unit": "MeasureUnit.NONE" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnitExt.CUSTOMER_LOCATION", "value": 80741252, "unit": "MeasureUnit.NONE" }, { "function": "FunctionType.MORE_RECORDS_FOLLOW", "type": "None", "value": null, "unit": "None" } ] } -
Hallo,
ich habe ein Python-Script das auf nem Server ausgeführt wird und über nen IR-Lesekopf meine Wärmemengezähler ausliest. Es schreibt die Daten dann über Simple_API in Iobroker in einen Datenpunkt. Das Problem ist es schreibt die Daten als JSON-String und ich muss über ein Blockly Script den Wert rausfiltern den ich haben will.
Ich hatte ein Blockly das die ganze Zeit funktioniert hat, das Problem ist aber dass sich das Python Script geändert hat und jetzt die JSON-Datei etwas anders aufgebaut ist. Deswegen funktioniert das Auslesen jetzt nicht mehr. Kann mir einer sagen was ich ändern muss? Danke schonmal.Hier ein Bild von meinem aktuellen Blockly, das passt aber nur auf die alte JSON und muss irgendwie geändert werden :)

Hier ist die JSON-Datei Struktur, wo der rote Wert ausgelesen werden soll.
{ "frame_info": { "a": "0x0", "c": "0x8", "start": "0x68", "stop": "0x16", "crc": "0xde", "length": "0x42" }, "header": { "status": "0x0", "medium": "0x4", "access_no": 135, "sign": "0x0, 0x0", "version": "0x19", "identification": "0x80, 0x74, 0x12, 0x52", "type": "0x72", "manufacturer": "SEN" }, "records": [ { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.ENERGY_WH", "%(#ff0000)[**value": 159620000,**] "unit": "MeasureUnit.WH" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.VOLUME", "value": 30628.779000000002, "unit": "MeasureUnit.M3" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.VOLUME_FLOW", "value": 0, "unit": "MeasureUnit.M3_H" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.POWER_W", "value": 0, "unit": "MeasureUnit.W" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.FLOW_TEMPERATURE", "value": 23.400000000000002, "unit": "MeasureUnit.C" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.RETURN_TEMPERATURE", "value": 23.700000000000003, "unit": "MeasureUnit.C" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.TEMPERATURE_DIFFERENCE", "value": 0, "unit": "MeasureUnit.K" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnit.FABRICATION_NO", "value": 80741252, "unit": "MeasureUnit.NONE" }, { "function": "FunctionType.INSTANTANEOUS_VALUE", "type": "VIFUnitExt.CUSTOMER_LOCATION", "value": 80741252, "unit": "MeasureUnit.NONE" }, { "function": "FunctionType.MORE_RECORDS_FOLLOW", "type": "None", "value": null, "unit": "None" } ] } -
Habs gerade rausgefunden, statt "body.records" einfach nur "records", dann funktioniert es :)
-
@atifan
Gut, dass Du Deine Lösung auch noch gepostet hast!
Jetzt evtl. noch ein [gelöst] in den Titel des ersten Posts, das wäre
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