====== 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. [[https://shelly-api-docs.shelly.cloud/gen1/#shelly-plug-plugs-meter-0|Shelly Api]] Durch Eingabe der URL [[http:///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. [[https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/PM1|Shelly Api Gen2]] Durch Eingabe der URL [[http:///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 ==== // Shelly Plug S { "enabled": true, "allowskip": true, "protocol": "exec", "command": "curl -s http:///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:///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. pi@raspberrypi:~ $ curl -s http:///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