Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:channels:meters:power:shelly

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.

Shelly Api

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.

Shelly Api Gen2

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"
		}
	    ]
}
Zum Testen des „command“ in der Shell müssen die zwei \ im awk Kommando entfernt werden.
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

hardware/channels/meters/power/shelly.txt · Zuletzt geändert: 2023/12/09 11:49 von van