Shelly Modulanfrage

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
0000
Beiträge: 121
Registriert: So Jan 20, 2019 9:54 pm

Shelly Modulanfrage

Beitrag von 0000 »

Hallo zusammen,

der Hersteller Shelly baut tolle Smarthome Produkte die Anwenderfreundlich, vergleichsweise günstig und dazu noch in Software OpenSource sind.
Ich hätte gerne ein Modul oder eine andere Möglichkeit um die Power Meter Funktionalität der Geräte in OpenWB Smarthome zu integrieren. Ein Beispiel:
Ich habe hier viewtopic.php?f=7&t=886 einen Weg beschrieben wie man einen externes Gerät mittels Webhook aus OpenWB schaltet. Nun wäre es doch toll wenn ich nicht nur schalten könnte, sondern den Verbraucher auch messen könnte. Ich setze aktuell in meinem Zuhause den "Shelly Plug S" ein, einen schaltbaren Zwischenstecker der bis 10A belastbar ist und ein Power Meter integriert hat. Man könnte aber auch einen Unterputz Aktor wie den Shelly 1 PM oder den Shelly 2.5 nehmen.

Leider scheint die Rest API der Shellys nicht mit der von Tasmota kompatibel zu sein (für das es ja ein OpenWB Modul gibt), so dass das aktuell von mir mit der SmartHome Funktionalität nicht zum rennen zu bewegen ist.

Die API ist hier dokumentiert:
https://shelly-api-docs.shelly.cloud/

Der Aufruf der Shelly Rest Api funktioniert folgendermaßen:

Code: Alles auswählen

http://xxx.xxx.xxx.xxx/meter/0/power
Die Antwort sieht dann so aus:

Code: Alles auswählen

{"power":39.04,"is_valid":true,"timestamp":1584625550,"counters":[40.604, 40.389, 3.198],"total":48362}
Wobei "power":39.04 die aktuelle Leistung in W ist. Sieht jemand eine Möglichkeit das in OpenWB über die Smarthome Funktion zu integrieren?

Danke und Gruß!
okaegi
Beiträge: 2185
Registriert: Fr Mär 08, 2019 1:57 pm

Re: Shelly Modulanfrage

Beitrag von okaegi »

Das kannst du heute schon über Smart home verbraucher die aktuelle Leistung zurückgeben.
viewtopic.php?f=6&t=727#p6094
Schau mal hier in watt und wattd, unter umständen musst du halt noch ein .py wrapper machen.
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
0000
Beiträge: 121
Registriert: So Jan 20, 2019 9:54 pm

Re: Shelly Modulanfrage

Beitrag von 0000 »

Das Smarthome Modul ist mir bekannt, dort wird ja bereits nativ die "Tasmota" API unterstützt. Dein Vorschlag ist nun ein php Skript zu schreiben das ich über die SmartHome Funktion und "http Abfrage" initiere. Das Skript holt sich dann über Umwege und ein Python Skript aus der Rest API den aktuellen Verbrauch und W sowie den Zählerstand in Wh.

Soweit korrekt verstanden?
Dann könnte ich auch gleich ein Shelly Modul für SmartHome Verbraucher in OpenWB implementieren :).
okaegi
Beiträge: 2185
Registriert: Fr Mär 08, 2019 1:57 pm

Re: Shelly Modulanfrage

Beitrag von okaegi »

0000 hat geschrieben: Do Mär 19, 2020 3:00 pm Das Smarthome Modul ist mir bekannt, dort wird ja bereits nativ die "Tasmota" API unterstützt. Dein Vorschlag ist nun ein php Skript zu schreiben das ich über die SmartHome Funktion und "http Abfrage" initiere. Das Skript holt sich dann über Umwege und ein Python Skript aus der Rest API den aktuellen Verbrauch und W sowie den Zählerstand in Wh.

Soweit korrekt verstanden?
Genau, der Vorteil ist das du upgrade fähig bleibst (saubere Schnittstelle).
Du trägst den link dann einfach unter Verbraucher 1 oder Verbraucher 2 ein und gibst als Return den Zählerstand oder die aktuelle Leistung aus.
Gruss Oliver
Entwickler- openWB (ehrenamtlich) / Feedback zu Funktionen immer erwünscht..
Smarthomeprobleme siehe hier (update :!: ): viewtopic.php?f=14&t=5923
0000
Beiträge: 121
Registriert: So Jan 20, 2019 9:54 pm

Re: Shelly Modulanfrage

Beitrag von 0000 »

Soweit ich den Code verstanden habe müsste sich der Tasmota Kram ziemlich leicht auf Shelly anpassen lassen.

Tasmota Code:

Code: Alles auswählen

	
	if [[ $verbraucher1_typ == "tasmota" ]]; then
		verbraucher1_out=$(curl --connect-timeout 3 -s $verbraucher1_ip/cm?cmnd=Status%208 )
		verbraucher1_watt=$(echo $verbraucher1_out | jq '.StatusSNS.ENERGY.Power')
			echo $verbraucher1_watt > /var/www/html/openWB/ramdisk/verbraucher1_watt
		verbraucher1_wh=$(echo $verbraucher1_out | jq '.StatusSNS.ENERGY.Total')
		verbraucher1_totalwh=$(echo "scale=0;(($verbraucher1_wh * 1000) + $verbraucher1_tempwh)  / 1" | bc)
		echo $verbraucher1_totalwh > /var/www/html/openWB/ramdisk/verbraucher1_wh
	fi
Shelly wäre dann ungefähr so:

Code: Alles auswählen

	
	if [[ $verbraucher1_typ == "shelly" ]]; then
		verbraucher1_out=$(curl --connect-timeout 3 -s $verbraucher1_ip/meter/0/power )
		verbraucher1_watt=$(echo $verbraucher1_out | jq '.power')
			echo $verbraucher1_watt > /var/www/html/openWB/ramdisk/verbraucher1_watt
		verbraucher1_wh=$(echo $verbraucher1_out | jq '.total')
		verbraucher1_totalwh=$(echo "scale=0;(($verbraucher1_wh * 1000) + $verbraucher1_tempwh)  / 1" | bc)
		echo $verbraucher1_totalwh > /var/www/html/openWB/ramdisk/verbraucher1_wh
	fi
Leider bin ich sonst nur objektorientiert in c# unterwegs. Mal gucken ob ich die Tage irgendwann Zeit habe mich einzuarbeiten.
Zuletzt geändert von 0000 am Sa Mär 21, 2020 10:06 pm, insgesamt 1-mal geändert.
openWB
Site Admin
Beiträge: 7901
Registriert: So Okt 07, 2018 1:50 pm

Re: Shelly Modulanfrage

Beitrag von openWB »

Job, Aufwand ist überschaubar.
Ich bitte um etwas Geduld dann kriegen wir das hin.
Supportanfragen bitte NICHT per PN stellen.
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
0000
Beiträge: 121
Registriert: So Jan 20, 2019 9:54 pm

Re: Shelly Modulanfrage

Beitrag von 0000 »

Optimal wäre es, wenn man noch http Authentifizierung einbauen könnte:

http://username:passwort@192.168.xxx.xxx/meter/0/power

VG!
0000
Beiträge: 121
Registriert: So Jan 20, 2019 9:54 pm

Re: Shelly Modulanfrage

Beitrag von 0000 »

Läuft
shelly.png
(40.93 KiB) 964-mal heruntergeladen
Und wenn man in die OpenWB Konfiguration "Verbraucher 1 IP:" die IP samt Benutzername und Passwort einträgt funktioniert sogar http Authentifizierung (allerdings nur ohne die Verwendung von Sonderzeichen).

Verbraucher 1 IP:
benutzername:passwort@192.168.xxx.xxx

Wenn ich jetzt noch auf git commiten dürfte :). Oder heisst es Pull request? Ich bin noch aus der SVN Generation.
aiole
Beiträge: 6779
Registriert: Mo Okt 08, 2018 4:51 pm

Re: Shelly Modulanfrage

Beitrag von aiole »

Sehr cool, was Ihr hier baut!
openWB
Site Admin
Beiträge: 7901
Registriert: So Okt 07, 2018 1:50 pm

Re: Shelly Modulanfrage

Beitrag von openWB »

Für Verbraucher 1 kann man Shelly nun direkt auswählen.
Die internen Counter werden von Shelly nicht genutzt. Da diese sich bei Stromausfall resetten.
Es kommt die openWB interne Zählerstandsberechnung zum tragen.
Bitte um Feedback!
Supportanfragen bitte NICHT per PN stellen.
Hardwareprobleme bitte über die Funktion Debug Daten senden mitteilen oder per Mail an support@openwb.de
Antworten