Befehl an Shelly erneut senden wenn senden nicht erfolgreich

Begonnen von Hadl, 14 Februar 2026, 16:17:14

Vorheriges Thema - Nächstes Thema

Hadl

Hallo zusammen,
ich nutze einen Shelly um mein Warmwasser bei PV Überschutz zu erhitzen.
Das klappt auch mit einem etwas komplexeren DOIF sehr gut. Der DOIF schaltet an dem Shelly dann einen oder beide Ausgänge mit Heizstäben je nach Überschuss ein und aus.

Manchmal hat aber der Shelly scheinbar keine WLAN verbindung und ein Kommando geht verloren. Das ist besondes ärgerlich wenn es das letze Ausschalten vor Sonnenuntergang ist, denn dann läuft der Heizstab einfach weiter und heizt bis Maximaltemperatur.

Den Shelly steuere ich über das Shelly Modul

defmod ShellyBoiler Shelly 192.168.178.xx
attr ShellyBoiler event-min-interval .*:3600
attr ShellyBoiler event-on-change-reading .*
attr ShellyBoiler eventMap /on 0:1kW-ein/off 0:1kW-aus/on 1:2kW-ein/off 1:2kW-aus
attr ShellyBoiler icon sani_buffer_electric_heater_side
attr ShellyBoiler interval 60
attr ShellyBoiler mode relay
attr ShellyBoiler model shellyplus2pm
attr ShellyBoiler stateFormat 1kW:relay_0\
<br>\
2kW:relay_1
attr ShellyBoiler userReadings power_sum:power_.* {my $val = ReadingsVal($name,"power_0",0) + ReadingsVal($name,"power_1",0);;;;$val},\
energy_sum:energy_.* {my $val = ReadingsVal($name,"energy_0",0) + ReadingsVal($name,"energy_1",0);;;;$val},
attr ShellyBoiler webCmd 1kW-ein:1kW-aus:2kW-ein:2kW-aus
attr ShellyBoiler webhook WEB

setstate ShellyBoiler 1kW:off\
<br>\
2kW:off
Der DOIF ruft diese Kommandos hier auf:
1kW-ein:1kW-aus:2kW-ein:2kW-aus

Ich wünsche mir nun eine Funktion die das Shelly Kommando solange wiederholt bis es erfolgreich empfangen wurde. Kann man das mit dem Shelly Modul selbst hinbekommen?

Falls nicht, kann ich irgendwie einen Soll/Ist Vergleich der Relais Zustände machen und das Kommando bei Abweichung wiederholen?


Vielen Dank für eure Ideen

Hadl
FHEM: Rpi 5 + SSD / WR: Fronius Symo Gen24 10.0 Plus + BYD HVS 7.7, Fronius Symo Gen24 12.0 SC (60%) PV: (Ost=3.5 West=6.6 Nord=9.9 Ost=4.5) / Homematic BidCoS / Shelly / Viessmann

Prof. Dr. Peter Henning

Zunächst einmal sollte der Shelly jeden erfolgreich durchgeführten Schaltvorgang mit einem REST-Call zu FHEM quittieren, z.B. einfach ein userReading im Device setzen - das geht mit einem Shelly-internen Skript. Auf FHEM-Seite kann man kontrollieren, ob dieses Reading gesetzt wurde und ggf. den Befehl wiederholen.

LG

pah

Starkstrombastler

Zitat von: Hadl am 14 Februar 2026, 16:17:14Ich wünsche mir nun eine Funktion die das Shelly Kommando solange wiederholt bis es erfolgreich empfangen wurde. Kann man das mit dem Shelly Modul selbst hinbekommen?
Wenn der Befehl von Fhem an den Shelly nicht erfolgreich war, wird der State im Shelly-Device auf Error gesetzt. Dies kann durch ein Notify abgefragt werden um ein erneutes Senden des Befehls auszulösen.

Da aber das Heizen mit einem Heizstab durchaus sicherheitsrelevant ist, sollte hier aber die Strategie geändert werden: statt mehrfach Ausschaltbefehle zu senden (in der Hoffnung, dass dies irgendwann funktioniert) sollte besser das Einschalten auf Gerätebasis zeitlich begrenzt werden und bedarfsweise nachgetriggert werden.

Für das zeitliche Begrenzen bietet sich auf Shelly-Modul-Basis der Befehl "on-for-timer" an. Dieser setzt den Shelly-internen Timer und kann mit neuem "on-for-timer" nachgetriggert werden. Ein eventuell auf dem Shelly eingerichteter Ausschalttimer wird dabei ignoriert. Der Shelly schaltet dann bei Ablauf der Zeitspanne aus - unabhängig von Fhem und Netzwerk.
Ein Ausschaltbefehl "off" während der Timer-Laufzeit beendet den Timer und schaltet aus.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

jkriegl

Hat der Shelly eine feste IP-Adresse?
Hatte ein vergleichbares Online-Problem mit Schalten einer Zirkulationspumpe. Seit 3 Mon. nicht mehr aufgetreten.
(und eco aus)
Rpi 3/4, buster, Fhem, Cul 868, HM-CC-RT-DN, HM-Sec-Sco, HM-ES-PMSw1-Pl, ebus (Vaillant), ECMD, Telegram, HTTPMOD, Xiaomi, Shelly

Hadl

#4
Zitat von: Starkstrombastler am 15 Februar 2026, 10:55:16Wenn der Befehl von Fhem an den Shelly nicht erfolgreich war, wird der State im Shelly-Device auf Error gesetzt. Dies kann durch ein Notify abgefragt werden um ein erneutes Senden des Befehls auszulösen.
Stimmt, aber im Notify auf "Error" weis ich den Befehl ja leider nichtmehr der fehlgeschlagen ist. Ich müsste erst einen Soll/Ist vergleich machen um den Befehl nochmals zu senden. Das ist relativ hoher Programieraufwand und ich wollte schauen ob es nicht einfacher geht.
Zitat von: Starkstrombastler am 15 Februar 2026, 10:55:16Da aber das Heizen mit einem Heizstab durchaus sicherheitsrelevant ist, sollte hier aber die Strategie geändert werden: statt mehrfach Ausschaltbefehle zu senden (in der Hoffnung, dass dies irgendwann funktioniert) sollte besser das Einschalten auf Gerätebasis zeitlich begrenzt werden und bedarfsweise nachgetriggert werden.
Ja, Sicherheit ist hier wirklich wichtig. Mein Heizstab hat eine Sicherheitsabschaltung mit separaten Relais bei Übertemperatur, eine "normale" Abschaltung per Thermostat einstellbarer Temperatur mit Relais. Und eben nun auch noch die Schaltung durch den Shelly über fhem Logik. Wenn das Ausschalten nicht klappt heizt mein Warmwasser dauerhaft immer auf ca. 60°C
Zitat von: Starkstrombastler am 15 Februar 2026, 10:55:16Für das zeitliche Begrenzen bietet sich auf Shelly-Modul-Basis der Befehl "on-for-timer" an. Dieser setzt den Shelly-internen Timer und kann mit neuem "on-for-timer" nachgetriggert werden. Ein eventuell auf dem Shelly eingerichteter Ausschalttimer wird dabei ignoriert. Der Shelly schaltet dann bei Ablauf der Zeitspanne aus - unabhängig von Fhem und Netzwerk.
Ja, damit krieg ich auf jeden Fall einen "timeout" beim Abschalten hin, muss dann nur schauen das ich den Befehl oft genug wiederhole. Aktuell sende ich mit einen DOIF nur Befehle bei einer Änderung direkt aus dem DOIF an das Shelly Device.
Zitat von: jkriegl am 15 Februar 2026, 19:01:00Hat der Shelly eine feste IP-Adresse?
Hatte ein vergleichbares Online-Problem mit Schalten einer Zirkulationspumpe. Seit 3 Mon. nicht mehr aufgetreten.
Ja, hat er.
Das Problem kommt aber sicherlich von der WLAN Qualität am Standort. Ich sehe das es der Shelly mit der geringsten RSSI im Haus ist, und auch der "disconnects" counter vom Device zählt manchmal munter hoch.
Ich werde das Problem auf jedem Fall mit nem besseren WLAN dort eindämmen.

Hat jemand von euch eine automatische Befehlswiederholung, oder einen Soll/Ist Vergleich mit Befehl bei Abweichung implementiert?
Bei den Homematic Geräten kenne ich sowas ähnliches als "CMDs_pending"

Viele Grüße

Hadl



FHEM: Rpi 5 + SSD / WR: Fronius Symo Gen24 10.0 Plus + BYD HVS 7.7, Fronius Symo Gen24 12.0 SC (60%) PV: (Ost=3.5 West=6.6 Nord=9.9 Ost=4.5) / Homematic BidCoS / Shelly / Viessmann