Forum: Haus & Smart Home OpeDTU update


von Mathias M. (atuditu)


Lesenswert?

Hallo,

ich hatte mir vor längerer Zeit eine OpenDTU gebastelt und zwei HM800 
angeschlossen.
Mit meinem Browser konnte ich auf die DTU-Seite zugreifen und dort außer 
der Gesamtleistung
der beiden Wechselrichter auch die Leistung jedes einzelnen WRs 
entnehmen.

In einem Pythonscript habe ich die Leistung beider WRs auslesen und 
weiterverarbeiten können:
1
        r = requests.get(f'http://{ip_opendtu}/api/livedata/status/inverters').json()
2
        
3
        wr_0      = r['inverters'][0]['AC']['0']['Power']['v']
4
        wr_1      = r['inverters'][1]['AC']['0']['Power']['v']

das ging auch problemlos.

Obwohl alles gut funktionierte, kam ich auf die Idee, die schon ziemlich 
alte firmware
der DTU upzudaten.

Auch danach konnte ich im Browser sowohl die Gesamtleistung als auch die 
beiden Einzelleistungen
sehen.

Nur leider funktioniert mein Script nicht mehr, das es stolpert über 
['AC'].
1
http://{ip_opendtu}/api/livedata/status/
bringt:

1
{"inverters":[{"serial":"114190651233","name":"wr_0","order":0,"data_age":1,"data_age_ms":1887,"poll_enabled":true,"reachable":true,"producing":true,"limit_relative":100,"limit_absolute":800,"radio_stats":{"tx_request":7490,"tx_re_request":2668,"rx_success":7485,"rx_fail_nothing":0,"rx_fail_partial":1,"rx_fail_corrupt":3,"rssi":-80}},{"serial":"114190134567","name":"wr_1","order":1,"data_age":0,"data_age_ms":644,"poll_enabled":true,"reachable":true,"producing":true,"limit_relative":100,"limit_absolute":800,"radio_stats":{"tx_request":7434,"tx_re_request":15836,"rx_success":6734,"rx_fail_nothing":3,"rx_fail_partial":697,"rx_fail_corrupt":0,"rssi":-80}}],"total":{"Power":{"v":447.7,"u":"W","d":1},"YieldDay":{"v":858,"u":"Wh","d":0},"YieldTotal":{"v":1108.103,"u":"kWh","d":3}},"hints":{"time_sync":false,"radio_problem":false,"default_password":true,"pin_mapping_issue":false}}



da kann ich zwar unter "total" die Gesamtleistung finden, aber die 
einzelnen Leistungen gibt es da nicht mehr. Wo bekomme ich sie her?

von Heinz R. (heijz)


Lesenswert?

schau mal hier:

https://www.opendtu.solar/firmware/web_api/#get-common-live-data

bei "Get inverter detail livedata"

Das Beispiel ist etwas schlecht da die Antwort wohl nachts aufgenommen 
wurde

Man muss wohl auch jeden WR getrennt abfragen

Meine Abfrage wäre z.B.

http://192.168.178.144/api/livedata/status?inv=116474903951



Warum nutzt nicht MQTT?

von Mathias M. (atuditu)


Lesenswert?

@ heijz

Ja, vielen Dank, das hat mir geholfen.
Die einzelnen Leistungen bekomme ich jetzt mit:
1
       wr_0 = requests.get(f'http://{ip_opendtu}/api/livedata/status?inv={wr_0sn}').json()['inverters'][0]['AC']['0']['Power']['v']    
2
       wr_1 = requests.get(f'http://{ip_opendtu}/api/livedata/status?inv={wr_1sn}').json()['inverters'][0]['AC']['0']['Power']['v']

wobei wr_0sn und wr_1sn die Seriennummern der beiden WR sind, die 
brauchte ich vorher nicht anzugeben.
Natürlich bin ich auch in die Falle getappt, dass einmal [0] und einmal 
['0'] zu schreiben ist...

Wenn man nur ein Promille der Doku braucht, übersieht man dieses in den 
anderen 999 allzu leicht.

von Heinz R. (heijz)


Lesenswert?

Du hast gesehen das auf der Seite ganz oben steht

"Important Note

The Web API is mainly generated to fetch and post information between 
the WebUI and the ESP. You use it at your own risk. It may change in 
future and break compatibility!"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.