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
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.
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
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.
Um den JSON-String vom Shelly auswerten zu können ist ein zusätzliche Tool nötig. Installation mit
sudo apt install jq
// 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"
}
]
}
// 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"
}
]
}
pi@raspberrypi:~ $ curl -s http://<Shelly IP>/meter/0 | jq -c '.power' | awk '{print "power " $1}'
power 20.67
pi@raspberrypi:~ $
Im Web Frontend einen Kanal vom Typ powersensor / El. Energie (Leistungswerte) anlegen