NEWS
[gelöst] JSON korrekt auslesen (AHOY Api)
-
du kannst auch über die gui im browser mal mit den developer tools schauen,
was da so ankommt. ob es wirklich immer gefüllt ist.Seite aufrufen.
Dann F12
Dann Tab Network
Dann F5
Dann nach den Einträgen zu api/index schauen -
Also wenn da kein Objekt zurückkommt, dann kannst auch kein Attribut auslesen. Dann musst halt erst mal mit Browser etc. versuchen zu schauen, was da zurückkommt.
Kann es ggf. sein, dass noch eine Anmeldung erforderlich ist?
-
@haselchen sagte in JSON korrekt auslesen (AHOY Api):
Wie bekomme ich das ganze JSON in einen Datenpunkt?
debug result
bringt es zum Anzeigenaktualisiere DP1 mit result
bringt es in einen Datenpunkt.
den kannst du sogar loggen -
script.js.Photovoltaikanlage.HM-600_Statistik: null
Das ist das Ergebnis.
Was ist nicht kapiere.
Exakt die gleichen Blocklys und Einstellungen funktionieren beim anderen Wechselrichter.Edit: nach dem 3.Abruf kommt das
script.js.Photovoltaikanlage.HM-600_Statistik: {"generic":{"wifi_rssi":-69,"ts_uptime":5777,"menu_prot":false,"menu_mask":61,"menu_protEn":false,"esp_type":"ESP8266"},"ts_now":1689944699,"ts_sunrise":1689909623,"ts_sunset":1689967802,"ts_offset":0,"disNightComm":true,"inverter":[{"enabled":true,"id":0,"name":"HM-600","version":"10010","is_avail":true,"is_producing":true,"ts_last_success":1689944693}],"warnings":[],"infos":["MQTT is connected, 5728 packets sent, 0 packets received"]}
-
@haselchen sagte in JSON korrekt auslesen (AHOY Api):
script.js.Photovoltaikanlage.HM-600_Statistik: null
Das ist das Ergebnis.
Was ist nicht kapiere.
Exakt die gleichen Blocklys und Einstellungen funktionieren beim anderen Wechselrichter.Edit: nach dem 3.Abruf kommt das
script.js.Photovoltaikanlage.HM-600_Statistik: {"generic":{"wifi_rssi":-69,"ts_uptime":5777,"menu_prot":false,"menu_mask":61,"menu_protEn":false,"esp_type":"ESP8266"},"ts_now":1689944699,"ts_sunrise":1689909623,"ts_sunset":1689967802,"ts_offset":0,"disNightComm":true,"inverter":[{"enabled":true,"id":0,"name":"HM-600","version":"10010","is_avail":true,"is_producing":true,"ts_last_success":1689944693}],"warnings":[],"infos":["MQTT is connected, 5728 packets sent, 0 packets received"]}
Na das ist doch das was ich gemeint habe. Vielleicht ist das Ding einfach nicht so schnell und gibt nicht immer was zurück mach einfach noch eine Abfrage rein, dass es nicht null sein darf.
Wenn das dann hinhaut, dann bist auf der sicheren Seite, dass dann nur dann was in den DP geschrieben wird, wenn der URL Aufruf ein Ergebnis liefert. Wäre im Prinzip halt generell eine grundsätzliche Möglichkeit um abzufangen, wenn mal nichts zurück kommt.
-
-
@haselchen Wenn was zurückkommt, dann passt Dein Aufruf jedenfalls:
-
ich glaube immer noch, dass man auf die Konvertierung verzichten können sollte.
-
@homoran Ja - kann schon sein. Wichtig ist aber doch in erster Linie abzufangen, wenn nichts zurück kommt.
-
@haselchen sagte: Das ist das Ergebnis.
Was wird in diesen Fällen in der Variablen
error
geliefert? -
@homoran sagte: ich glaube immer noch, dass man auf die Konvertierung verzichten können sollte.
Ja, getAttr() nimmt die Konvertierung selbst vor, wenn erforderlich.
-
javascript.0 2023-07-21 15:20:00.088 error script.js.Photovoltaikanlage.HM-600_Statistik: Cannot get inverter of null
Das kommt, wenn ich nach 1min "Last Success" aus der API lesen und schreiben möchte.
War die Frage , ob ich das richtig überhaupt ins Blockly gepackt hatte. -
@haselchen sagte: Das kommt, wenn ich nach 1min "Last Success" aus der API lesen und schreiben möchte.
Logge mal die Variable
error
, die nebenresult
ebenfalls von request() geliefert wird. -
@paul53
@Homoran
@mickym
@OliverIOLeute, dass ist wie immer grosses Kino mit euch!!!
Alle Ideen zusammen haben den Erfolg gebracht.
Mit dem Blockly wird die null übersprungen und nur reale Werte in den DP geschrieben.
Dauert manchmal 3-4min. aber ich bin schon froh, keine rote Farbe mehr im Log zu haben -
@haselchen
Funktioniert es nicht auch so? -
Gerade getestet, natürlich funktioniert es so auch
Nichts anderes habe ich erwartet
Skripttechnisch biste sowieso nicht von dieser Welt....