ich möchte mit einem Python-Script die Daten aus einem Shelly Pro 3EM auslesen. (Der Shelly Pro 3EM ist kleines, hinter dem Stromzähler einzubauendes Gerät, das über http und mqtt Daten wie z.B. Leistung, Spannung etc. dreiphasig über Wlan ausgibt.)
Gebe ich in meinen Browser ein:
Code: Alles auswählen
http://192.168.0.152/rpc/EM.GetStatus?id=0
Code: Alles auswählen
id 0
a_current 0.593
a_voltage 230.5
a_act_power -75.4
a_aprt_power 136.9
a_pf 0.68
a_freq 50
b_current 11.608
b_voltage 228.5
b_act_power 2655.2
b_aprt_power 2656.6
b_pf 1
b_freq 50
c_current 0.058
c_voltage 232.1
c_act_power 2.1
c_aprt_power 13.5
c_pf 0.54
c_freq 50
n_current null
total_current 12.259
total_act_power 2581.781
total_aprt_power 2806.935
user_calibrated_phase []
Diesen letzten Wert total_act_power möchte ich in einem Python-Script weiter verwenden.
Die Dokumentation des Herstellers, wie man das macht ist nicht vorhanden, bzw. unverständlich (für mich jedenfalls).
Ich habe deshalb in verschiedenen Foren gesucht, und in einem die Zeilen:
Code: Alles auswählen
# Nimmt Daten von der Shelly 3EM Rest-API und übersetzt sie in ein json-Format
phase_a = requests.get(f'http://{shelly_ip}/emeter/0', headers={'Content-Type': 'application/json'}).json()['power']
Das funktioniert mit einem "Shelly 3EM", aber nicht mit dem neueren "Shelly Pro 3EM".
Bei meinem Pro führt diese Zeile auf eine Fehlermeldung (400 - Seite nicht vorhanden)
Weiter als:
Code: Alles auswählen
phase_a = requests.get(f'http://{shelly_ip}/rpc/EM.GetStatus?id=0', headers={'a_current': 'application/json'})
print (phase_a)
<Response [200]>
komme ich aber nicht. Die Webseite ist zwar vorhanden, aber wie komme ich an die einzelnen Daten?
Kann mir da jemand weiter helfen?