Inhaltsverzeichnis
Shelly
Hardware Gen 1
Verwendet wird ein Shelly Plug S.
Die Konfiguration lässt sich aber sicher auch für ähnliche Shelly Geräte anpassen.
Durch Eingabe der URL http://<Shelly IP>/meter/0 bekommen wir folgende JSON Antwort
{"power":20.57,"is_valid":true,"timestamp":1697657582,"counters":[20.735, 20.814, 20.791],"total":4131}
Interessant sind die Elemente
- power: Current real AC power being drawn, in Watts
- total: Total energy consumed by the attached electrical appliance in Watt-minute
Das Element „total“ in Watt Minuten wird leider nach einem Aus-Einschalten des Shelly auf null gesetzt.
Bleibt noch das Element „power“ in Watt, das aufaddieren der Energie übernimmt dann der volkszähler.
Hardware Gen 2
Verwendet wird ein Shelly PlusPMMini
Gegenüber der Generation 1 Geräten hat sich die API verändert.
Durch Eingabe der URL http://<Shelly IP>/rpc/PM1.GetStatus?id=0 bekommen wir folgende JSON Antwort
{"id":0, "voltage":235.8, "current":0.162, "apower":22.1 ,"freq":50.1,"aenergy":{"total":8.883,"by_minute":[216.669,433.338,433.338],"minute_ts":1700993436}}
Interessant sind die Elemente
- apower: Last measured instantaneous active power (in Watts) delivered to the attached load
- aenergy: Information about the active energy counter
Das Element „aenergy“ in Watt Minuten wird leider nach einem Aus-Einschalten des Shelly auf null gesetzt.
Bleibt noch das Element „apower“ in Watt, das aufaddieren der Energie übernimmt dann der volkszähler.
vzlogger
Software vorbereiten
Um den JSON-String vom Shelly auswerten zu können ist ein zusätzliche Tool nötig. Installation mit
sudo apt install jq
vzlogger.conf
- vzlogger.conf Gen1
// Shelly Plug S { "enabled": true, "allowskip": true, "protocol": "exec", "command": "curl -s http://<Shelly IP>/meter/0 | jq -c '.power' | awk '{print \"power \" $1}'", "format": "$i $v", "interval": 10, "channels": [ { "api": "volkszaehler", "uuid": "xxxxxxxxxxxxxx", "identifier": "power", "middleware": "http://localhost/middleware.php" } ] }
- vzlogger.conf Gen2
// Shelly plus pm mini { "enabled": true, "allowskip": true, "protocol": "exec", "command": "curl -s http://<Shelly IP>/rpc/PM1.GetStatus?id=0 | jq -c '.apower' | awk '{print \"apower \" $1}'", "format": "$i $v", "interval": 10, "channels": [ { "api": "volkszaehler", "uuid": "xxxxxxxxxxxxxx", "identifier": "apower", "middleware": "http://localhost/middleware.php" } ] }
- Shell
pi@raspberrypi:~ $ curl -s http://<Shelly IP>/meter/0 | jq -c '.power' | awk '{print "power " $1}' power 20.67 pi@raspberrypi:~ $
Kanäle
Im Web Frontend einen Kanal vom Typ powersensor / El. Energie (Leistungswerte) anlegen