Forum: Haus & Smart Home Shelly 3EM pro. Leistung über http beziehen.


von Hadmut F. (hadmut)


Lesenswert?

Zwei varianten. RPC und skript.

Mit RPC:
anfrage:
http://192.168.178.26/rpc/EM.GetStatus?id=0
antwort:
{"id":0,"a_current":0.030,"a_voltage":0.1,"a_act_power":-0.0,"a_aprt_pow 
er":0.0,"a_pf":1.00,"b_current":0.027,"b_voltage":0.1,"b_act_power":0.0, 
"b_aprt_power":0.0,"b_pf":1.00,"c_current":0.028,"c_voltage":237.5,"c_ac 
t_power":0.1,"c_aprt_power":6.7,"c_pf":1.00,"n_current":null,"total_curr 
ent":0.085,"total_act_power":0.084,"total_aprt_power":6.679}

Mit skript:
anfrage:
http://192.168.178.30/script/1/pwr
antwort:
PWR: -0.219000

Skript dazu:
function GetPwr(request, response)
 {
   //print('Executing function open');
   let EMpower = Shelly.getComponentStatus("em:0");
   response.body = "PWR: " + JSON.stringify(EMpower.total_act_power);
   response.code = 200;
   response.send();
 }

 HTTPServer.registerEndpoint('pwr', GetPwr)

 // http://192.168.178.26/script/1/pwr

Ich hab dafür stunden gebraucht! Die doku ist katastrophal.
Ziel war möglichst wenig WiFi traffic für sekunden-abfrage.

: Bearbeitet durch User
von Alexander (alecxs)


Lesenswert?

Auf mein erstes Shell Skript war ich auch so stolz dass ich einen neuen 
Thread eröffnet habe. Interessiert hat es keinen. Zu 
Dokumentationszwecken für Dich selbst nutze bitte gitlab oder github.

von Hadmut F. (hadmut)


Lesenswert?

Was hast du denn gescripted?

von Mathias M. (atuditu)


Lesenswert?

Hallo,
ja, genau das will ich auch: Shelly 3EM pro. Leistung über http 
beziehen.
Ich bin auch auf die gleiche Lösung gekommen wie der TO:
1
http://192.168.0.151/rpc/EM.GetStatus?id=0
Wenn ich das in meinen Browser eingebe, bekomme ich auch die 
entsprechende Liste als Antwort.

Ich möchte aber innerhalb eines Python-Scripts auf die einzelnen Werte 
zugreifen, und komme da nicht weiter. Ich brauche die momentane 
Gesamtleistung um damit weiter zu rechnen.

Die Doku für den Pro 3EM verwirrt mich mehr, als dass sie mir hilft. 
Kann mir da jemand weiterhelfen?

Vielen Dank,
atuditu

von Cyblord -. (cyblord)


Lesenswert?

Mathias M. schrieb:
> Wenn ich das in meinen Browser eingebe, bekomme ich auch die
> entsprechende Liste als Antwort.
>
> Ich möchte aber innerhalb eines Python-Scripts auf die einzelnen Werte
> zugreifen

Den JSON String muss man halt parsen. Hat mit Shelly wenig zu tun. Eher 
so die ganz grundlegenden Basics der SW Entwicklung.

von Hadmut F. (hadmut)


Lesenswert?

Cyblord -. schrieb:
> Den JSON String muss man halt parsen.

Ja.
Du kannst das im shelly parsen und nur den interessanten wert 
übertragen, oder du kannst das ganze json garbage übertragen und das im 
client parsen.

Wie man das im shelly parst hab ich oben gezeigt.

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Hadmut F. schrieb:
> Ja.
> Du kannst das im shelly parsen und nur den interessanten wert
> übertragen, oder du kannst das ganze json garbage übertragen und das im
> client parsen.

Ja nun, wenn man sowieso am Ende Python verwenden will, dann lässt man 
das JSON dort parsen.

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.