Implementierung Shelly TRV Gen 1

Begonnen von nullptr, 25 Juni 2023, 10:56:32

Vorheriges Thema - Nächstes Thema

nullptr

Zuerst ein herzliches Danke an alle FHEM Entwickler, Tester und Forumschreiber für die bisherige Arbeit und Beiträge.

Intro: Ich berichte hier wie ich  Shelly TRV Gen 1 Heizkörperthermostante in meine FHEM Steuerung integriert habe; ohne externe Dienstleister ("Cloud").
Bisher hatte ich MAX! Thermostate. Mir ist einer runtergefallen und da die nicht mehr erhältlich sind, konnte er nicht ersetzt werden. Daher kam ich auf die Shelly TRV.

Zusammenfassung: Es läuft prima mit Shelly (Version von 2023-05-06    ) sowie ShellyMonitor. Meßwerte werden dargestellt wie beim Max-Scanner. Vorteil: Kein Übertragungslimit wie bei den CUL-Protokollen, da WiFi. Ein Akku ist in den Shellys fest eingebaut. Die Temperatur wird über FHEM auf eine Nachkommastelle genau angezeigt, aber die verbauten Sensoren müssen nachkorrigiert werden. Die Zieltemperatur kann in 0,5 °C Schritten eingegeben werden. Weekprofiles von FHEM sind direkt übertragbar.
Es gibt beim ShellyMonitor einen kleinen Haken beim Booten.


Hardware:
Shelly TRV ins WLAN wie vom Hersteller beschrieben einbinden, dann statische IP vergeben. ShellyTRV an den Heizkörper montieren. Mit dem Browser "http://<shelly-ip> die Shelly GUI öffnen und:
1.) unter Einstellungen: firmware updaten (akktuell fw v2.1.8 vom 11.8.2022).
2.) unter Internet&Security: CoIot an und die IP Adresse von FHEM PC mitgeben
3.) unter Einstellungen: Boost auf 5 min, Clog Prevention an
    Display Helligkeit, Device Namen und Display Rotation anpassen
4.) unter Einstellungen: Kalibration starten
5.) unter Einstellungen -> Device Info wird die RSSI angezeigt


Software:
Ich habe auf meinen Rechnern GNU/Linux, debian bullseye, und FHEM Rev 27648.

Die Shelly TRVs haben 5 Wochenprofile, denen man Namen zuordnen kann. Um das erste Profil vom Shelly mit der IP 10.0.0.71 auf "Standard" umzubenennen, habe ich  eingegeben:


curl -s -D - 'http://<Shelly IP>:80/settings?schedule_profile=1&schedule_profile_name=Standard'

Um das zweite Profil auf Urlaub zu benennen:


 curl -s -D - 'http://<Shelly IP>:80/settings?schedule_profile=2&schedule_profile_name=Urlaub'


Bei diesen Änderungen kommt bei Erfolg immer ein unformatierter fast-JSON-Text zurück, dem man die erfolgte Änderung entnehmen kann. Die Lesbarkeit wird besser, wenn man eine passende Pipe anhängt, also:


curl -s -D - 'http://<Shelly IP>:80/settings?schedule_profile=2&schedule_profile_name=Urlaub' | sed -n 5p | jq


Um die Wochenprogramme von FHEM auf die ShellyTRV zu übertragen, habe ich ein Skript gebastelt, das ich in das Verzeichnis mit den weekprofiles-Dateien gelegt habe.

Das Skript benötigt  sed cat wc bc jq curl.

Man kann sie unter GNU/Linux debian mit


apt update & apt  install sed coreutils  bc jq curl


installieren.

Das Wochenprofil wird bei den ShellyTRV so kodiert: Uhrzeit (als hhmm) dann nach einem "-" kommen die Wochentage, bei denen die Regel gelten soll (0..6, 0=Montag), dann nach einem weiteren "-" die Zieltemperatur. Für eine Thermostateinstellung nur für das Wochenende um 6:50 Uhr  auf 14.0 °C Grad wäre das: 0630-56-14.0

Das Skript ist schnell und schmutzig geschrieben, funktionierte bei mir aber prächtig. Es finden keine Überprüfungen etc statt. Das Skript gibt nur eine Textzeile aus, die die Befehlszeile zum Übertragen darstellt.
Beim Aufruf des Skripts müssen einige Parameter übergeben werden. Die Kommandozeile lautet:


./weekprofile2shellyrule.sh <profil> <filename> <ShellyTRV IP> <Shelly Profilnummer>.


Also um die Befehlszeile zu bekommen, um vod der Datei "weekprofile-weekprofile_Wohnzimmer.cfg" das Profil "default" an das ShellyTRV mit der IP 10.0.0.70 in dessen zweites Profil zu speichern, lautet die Kommandozeile:



./weekprofile2shellyrule.sh default weekprofile-weekprofile_Wohnzimmer.cfg  10.0.0.70 2




Das Skript wirft dann den Vorschlag für eine Befehlszeile aus. Diese wird mit Copy/Paste auf die Bash-Kommandozeile kopiert, überprüft und ggf angepaßt. Die mitternächtlichen Schaltereien, die für den MAX! nötig waren, können z.B. entfernt werden. Beim Editieren aufpassen, daß die Hochkommas nicht verschwinden.
Dann das Kommando absenden, zurück kommt vom ShellyTRV wieder die Rückmeldung per Text. Das letzte so gesendete Profil ist dann auch gleichzeitig im ShellyTRV aktiv geschaltet.

Die angehängte  Minimalkonfiguration mit 2 Thermostaten zeigt meine fhem.cfg und das  /opt/fhem/www/gplot/SVG_FileLog_ShellyTRV_0.gplot

 Bei einem Shelly Plus H&T war die Temperatur verglichen mit einem geeichten Thermometer immer um 4 Grad zu hoch. Bei meinen 6 ShellyTRV waren die Abweichungen +1,0, -0,4, +1,6,  +0,3, -0,2 und -0,4 °C. Diese Meßfehler kann man in der fhem.cfg im "userReadings ThermostatLog" für jedes Gerät einzeln korrigieren.

Ich bin mit dem Ganzen sehr zufrieden. Nach einem PC-Neustart verhaspelt verhaspelt sich ShellyMonitor und erscheint nicht auf der FHEM-Weboberflache. Ein händischer Neustart von FHEM behebt das aber zuverlässig.

Für Hinweise, was noch besser sein könnte bin ich sehr dankbar.




nullptr

Kann mir bitte jemand sagen, wieso die 3 von mir hochgeladenen Dateien nicht allgemein sichtbar bzw herunterladbar sind? Habe ich da was falsch gemacht ? Danke

betateilchen

Die drei Dateien werden doch angezeigt?

Du darfst diesen Dateianhang nicht ansehen.

Sie lassen sich auch problemlos herunterladen.
Anzeige & Download funktioniert aber nur, wenn man im Forum angemeldet ist, das ist normal.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

nullptr