Seite 5 von 5

Re: Leistungserfassung mit Shelly

Verfasst: Do Okt 09, 2025 3:30 pm
von gvz
Ich hatte mich da gestern eingelesen (2.1.8p1).

Überhaupt ist die Shelly-Einbindung m.E. buggy, z.B. wird die klare und sinnvolle Auswahl "alle Werte summiert" vs. "Kanal 0", ... nicht richtig interpretiert: Man muss immer "einen drauf" zählen.

In welcher Forumsecke sollte ich das diskutieren? Patche kann ich gerne liefern.

Re: Leistungserfassung mit Shelly

Verfasst: Do Okt 09, 2025 3:54 pm
von aiole
gvz hat geschrieben: Do Okt 09, 2025 3:30 pm In welcher Forumsecke sollte ich das diskutieren? Patche kann ich gerne liefern.
Ich denke, dass du hier bleiben kannst. Patches als Github-PR wären immer am einfachsten. Die werden von der Entwicklung vorab geprüft und auf Github kommentiert.

Re: Leistungserfassung mit Shelly

Verfasst: Fr Okt 10, 2025 4:14 pm
von gvz
Ein erster Rohentwurf, der gegen meinen Shelly-Zoo und auch die von Proxima mir privat zugeschickten Daten läuft, ist fertig - erst einmal nur für "watt.py":

https://github.com/gvzdus/core/blob/sma ... ly/watt.py

Nein, das Fehlerhandling & Co. muss noch wieder rein, auch mehr Kommentare & Subfunktionen.

Grundidee:
- Weg von konkreten Shelly-Modellen, Featureset abfragen und cachen (dafür wird "components" erstellt und auf Platte gecacht)

Frage(n):
- Das ist jetzt ein größerer Rewrite, ist das für den Original-Autor okay?
- Eigentlich bevorzuge ich immer die geräteinternen Energiezähler, vor allem bei Gen2+, wo die Daten i.d.R. den Reboot des Shellys überleben. Aber aktuell wird in "watt.py" nur die Leistung abgefragt. Wenn ich das jetzt einbauen würde, kriegen die OpenWB-eigenen Zähler ggf. einen Schock. Hast Du eine Meinung dazu?

Was mir noch auffällt: Mit dem sehr an die alte 1.9-Welt erinnernden permanenten Interpreter-Starts wird es auf einem Raspi 3B wohl eher kniffelig, einmal mehr als 10 SH-Geräte zu supporten...

Georg

Re: Leistungserfassung mit Shelly

Verfasst: Fr Okt 10, 2025 4:31 pm
von Gero
Das ist ja alles über die Zeit entstanden. Dann kamen die Gen2, dann die Gen3 und alle wurden nach und nach integriert, ohne die nachfolgenden Generationen und deren Antworten zu kennen. Von daher kann ich gut verstehen, dass das Coding nicht so dolle ist. Das coding müsste von @okaegi sein, der auch das ganze smarthome2 gebauut hat.

Die shelly-eigenen Zähler sind m.W. nach ignoriert worden, weil die ersten entweder keinen hatten oder ihn beim reboot verloren haben, was im Sinne vom logging streng monoton steigender Werte genauso gut wie kein Zähler ist. Bevor man da mit Offsets herumhantiert nimmt man einfach einen Simcount.

Re: Leistungserfassung mit Shelly

Verfasst: Sa Okt 11, 2025 9:20 am
von gvz
Okay, dann lasse ich das so.
Den Code wollte ich jetzt so lassen:

https://github.com/gvzdus/core/blob/sma ... ly/watt.py

Ich gehe jetzt nur noch an das Testing mit dem größeren Zoo.

Zur Idee des Cachings: Eigentlich war die Idee, statt dem großen "Shelly.GetStatus" eher gezielt die Sub-Systeme anzusprechen (z.B. http://192.168.0.12/rpc/EM.GetStatus?id=0). Aber ich lasse das lieber: Zu viel Risiko, und zum anderen wird ja auch Relay-Status und Temperaturen abgefragt, und zudem habe ich einen Cache von 5 Sekunden eingebaut, sodass - wenn z.B. 2 Werte von einem 2PM abgefragt werden, nicht 2 HTTP-Requests auf die gleiche URL abgesetzt werden.

Außerdem gibt es jetzt Infos zur Device-Discovery im Smarthome.log:

Code: Alles auswählen

2025-10-11 11:15:30,978 - Device 1 IP 192.168.0.12: /shelly response {"name":null,"id":"shellypro3em63-fce8c0dacd18","mac":"FCE8C0DACD18","slot":0,"model":"SPEM-003CEBEU63","gen":2,"fw_id":"20250924-062749/1.7.1-gd336f31","ver":"1.7.1","app":"Pro3EM","auth_en":false,"auth_domain":null,"profile":"triphase"}
Device 1 IP 192.168.0.12:  /rpc/Shelly.ListProfiles response {"profiles":{"monophase":{"components":[{"type":"em1","count":3},{"type":"em1data","count":3}]},"triphase":{"components":[{"type":"em","count":1},{"type":"emdata","count":1}]}}}
Device 1 IP 192.168.0.12:  cached info {"name": null, "id": "shellypro3em63-fce8c0dacd18", "mac": "FCE8C0DACD18", "slot": 0, "model": "SPEM-003CEBEU63", "gen": "2", "fw_id": "20250924-062749/1.7.1-gd336f31", "ver": "1.7.1", "app": "Pro3EM", "auth_en": false, "auth_domain": null, "profile": "triphase", "components": {"em": 1, "emdata": 1}}

Re: Leistungserfassung mit Shelly

Verfasst: Sa Okt 11, 2025 1:58 pm
von gvz
So, jetzt reicht es mir aber :-)

Mir fiel bei den Tests auf, dass bei allen Gen2+-Geräten ja die Authentifizierung nicht mehr läuft (Basic-Auth unsupported ziemlicher Blödsinn ohne Verschlüsselung).
Also habe ich das noch eingebaut - dafür war ein Wechsel auf die "requests"-Library nötig - die wird aber auch im OpenWB-Code verwendet.

Tests durch - ich stelle den PR

Re: Leistungserfassung mit Shelly

Verfasst: Sa Okt 11, 2025 2:18 pm
von Gero
Hihi. Software ist ja ab und an wie ein Strickpullover, an dem man an einem raushängenden Fädchen zieht....

Trotzdem danke für die Mühe, ich teste im Master auch mal mit meinen Shellies.

Re: Leistungserfassung mit Shelly

Verfasst: Mi Dez 03, 2025 4:49 pm
von gvz
Der PR wurde von @LenaK jetzt in den Master gemerged.
Hinweis: Wer mit einem Gen 2+ 3EM misst, musste bisher "Kanal 1 / Meter 2" für erste, "Kanal 3 / Meter 4" für das letzte auswählen (a/b/c in der Json-Response). "Kanal 0 / Meter 1" gab es gar nicht.
Hier habe ich die Zuordnung korrigiert - man muss also beim Messen mit einem Gen2+ EM3 die Werte um 1 nach unten korrigieren, sodass die Beschreibung in der Config-Seite auch wieder Sinn ergibt.

Ich wäre froh über Tests!