Hallo zusammen,
hab ein Problem mit einer API Abfrage.
Bis habe ich von meinem Wechselrichter die Tagesleistung abgefragt. Angezeigt wird:
{"success":true,"exception":"Query success!","result":{"inverterSN":"XMT072G30421","sn":"SWNAKZHQ","acpower":122.0,"yieldtoday":1.7,
"yieldtotal":1548.5,"feedinpower":0.0,"feedinenergy":0.0,"consumeenergy":0.0,
"feedinpowerM2":null,"soc":null,"peps1":null,"peps2":null,"peps3":null,"inverterType":"4","inverterStatus":"102",
"uploadTime":"2024-04-10 16:06:51","batPower":null,"powerdc1":132.0,"powerdc2":0.0,"powerdc3":null,
"powerdc4":null,"batStatus":null},"code":0}
Mit dieser VBA habe ich mir den Wert "yieldtoday" geholt.
Sub js_json_api_solax()
Dim req As MSXML2.ServerXMLHTTP60
Dim apiURL, ret As String
Set req = New MSXML2.ServerXMLHTTP60
' Example API: Solax
apiURL = "https://www.solaxcloud.com/proxyApp/proxy/api/getRealtimeInfo.do?tokenId=20240308440536602310&sn=SWNZPLHQ"
' Verbindung herstellen
req.Open "POST", apiURL, False
req.send
' Status in Zelle A31 ausgeben
Range("Tabelle1!a31").Value = req.Status & " - " & req.statusText
' JSON unformatiert in A32 ausgeben
ret = req.responseText
Range("Tabelle1!a32").Value = ret
' JSON parsen
Dim jsonObject As Object
Set jsonObject = JsonConverter.ParseJson(ret)
' Variable Leistung in A33 ausgeben (in Watt)
Range("Tabelle1!a33").Value = (jsonObject("result")("yieldtoday"))
End Sub
Jetzt habe ich aber einen anderen Wechselrichter. Bei diesem sieht die Ausgabe so aus:
{"inverters":[{"serial":"11618218","name":"Tschernoby2","order":0,"data_age":4,"poll_enabled":true,"reachable":true,
"producing":true,"limit_relative":75,"limit_absolute":900}],"total":{"Power":{"v":656.7999878,"u":"W","d":1},"YieldDay":{"v":1352,"u":"Wh","d":0},"YieldTotal":{"v":36.10499954,"u":"kWh","d":3}},
"hints":{"time_sync":false,"radio_problem":false,"default_password":false}}
Jetzt bekomme ich aber immer Fehlermeldungen mit dieser VBA.
Sub js_json_api_solax()
Dim req As MSXML2.ServerXMLHTTP60
Dim apiURL, ret As String
Set req = New MSXML2.ServerXMLHTTP60
' Example API: Hoymiles
apiURL = "http://192.168.178.77/api/livedata/status"
' Verbindung herstellen
req.Open "GET", apiURL, False
req.send
' Status in Zelle A31 ausgeben
Range("Tabelle1!a31").Value = req.Status & " - " & req.statusText
' JSON unformatiert in A32 ausgeben
ret = req.responseText
Range("Tabelle1!a32").Value = ret
' JSON parsen
Dim jsonObject As Object
Set jsonObject = JsonConverter.ParseJson(ret)
' Variable Leistung in A33 ausgeben (in Watt)
Range("Tabelle1!a34").Value = (jsonObject("total")("YieldDay"))
End Sub
Bin für jede Hilfe dankbar.
|