Hallo, ich habe eine Shelly Plug S an einem Zimmerbrunnen.
Diese schaltet sporadisch nicht aus. Heißt der Brunnen läuft weiter.
In der App bleibt diese Shelly dann auch richtigerweise im Status an.
Was kann man hier unternehmen?
Shelly Plug S
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Shelly Plug S
Openhab 2 auf RaspberryPi 4
- udo1toni
- Beiträge: 15243
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Shelly Plug S
Es gibt verschiedene Ansätze 
Möglichkeit 1: Du prüfst nach dem Umschalten, ob dies auch ausgeführt wurde und wiederholst den Befehl notfalls.
Möglichkeit 2: Du findest heraus, warum der Shelly nicht schaltet (z.B.: ist das Gerät kurz offline, z.B. wegen WLAN Problemen?) und beseitigst die Störung.
Möglichkeit 3: Du programmierst über openHAB das Schalten per Timer im Shelly.
Möglichkeit 4: Du stellst die Steuerung auf mqtt um und sendest den Befehl mit QoS 2. Damit stellt das Protokoll sicher, dass der Befehl ausgeführt wird.
Für Möglichkeit 1 spricht, dass dies relativ einfach über Rules umsetzbar ist - allerdings bedeutet es erhöhten Aufwand und evtl. auch erhöhte Systemlast, zumindest zum Schaltzeitpunkt. Entsprechende Steuerungen müssen händisch implementiert werden.
Möglichkeit 2 ist mutmaßlich mit extrem viel Aufwand verbunden
Möglichkeit 3 oder 4 sind eventuell mit der Original firmware von Shelly nicht möglich, in diesem Fall kannst Du den Plug S auch mit Tasmota flashen, jede der genannten Optionen ist mit Tasmota problemlos realisierbar.

Möglichkeit 1: Du prüfst nach dem Umschalten, ob dies auch ausgeführt wurde und wiederholst den Befehl notfalls.
Möglichkeit 2: Du findest heraus, warum der Shelly nicht schaltet (z.B.: ist das Gerät kurz offline, z.B. wegen WLAN Problemen?) und beseitigst die Störung.
Möglichkeit 3: Du programmierst über openHAB das Schalten per Timer im Shelly.
Möglichkeit 4: Du stellst die Steuerung auf mqtt um und sendest den Befehl mit QoS 2. Damit stellt das Protokoll sicher, dass der Befehl ausgeführt wird.
Für Möglichkeit 1 spricht, dass dies relativ einfach über Rules umsetzbar ist - allerdings bedeutet es erhöhten Aufwand und evtl. auch erhöhte Systemlast, zumindest zum Schaltzeitpunkt. Entsprechende Steuerungen müssen händisch implementiert werden.
Möglichkeit 2 ist mutmaßlich mit extrem viel Aufwand verbunden

Möglichkeit 3 oder 4 sind eventuell mit der Original firmware von Shelly nicht möglich, in diesem Fall kannst Du den Plug S auch mit Tasmota flashen, jede der genannten Optionen ist mit Tasmota problemlos realisierbar.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Shelly Plug S
Guten Morgen.
Wenn die Shelly nicht schaltet, kann ich in der App sehen, daß sie noch an ist. Drücke ich den Switch,geht der kurz auf aus, dann wieder auf an. Spätere Versuche enden identisch. Muß dann den Schrank zur Seite schieben und den Knopf an der Shelly drücken.
Waren jetzt 5 Tage im Urlaub. Kommen heim, Brunnen an. Konnte aber per App ausschalten. Da erste mal.
Klebt da das Relais im Shelly?
Variante 1 würde ich mal versuchen wollen. Kannst du mir da unter die Arme greifen?
Wenn die Shelly nicht schaltet, kann ich in der App sehen, daß sie noch an ist. Drücke ich den Switch,geht der kurz auf aus, dann wieder auf an. Spätere Versuche enden identisch. Muß dann den Schrank zur Seite schieben und den Knopf an der Shelly drücken.
Waren jetzt 5 Tage im Urlaub. Kommen heim, Brunnen an. Konnte aber per App ausschalten. Da erste mal.
Klebt da das Relais im Shelly?
Variante 1 würde ich mal versuchen wollen. Kannst du mir da unter die Arme greifen?
Openhab 2 auf RaspberryPi 4
- udo1toni
- Beiträge: 15243
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Shelly Plug S
Ja, sicher.

Ich glaube nicht, dass der Shelly den echten Schaltzustand weitermeldet, sondern lediglich den Schaltzustand, den der Controller weitergibt. Es gibt also keinen Hilfskontakt am Relais, welcher aktiv überwacht wird, damit der Controller den mechanischen Zustand des Relais erkennen kann.
Dass die Steuerung über openHAB ausfällt, deutet darauf hin, dass das Gerät instabil läuft - warum auch immer. Du könntest schauen, ob es eine neue Firmware für das Gerät gibt. Eventuell befindet sich das Gerät nicht in einem guten Empfangsbereich für das WLAN? gibt halt viele Fehlerquellen...
Möglichkeit für Variante 1:
Code: Alles auswählen
var Timer tCheck = null // Zeiger für Timer
var OnOffType cCommand // zwischengespeicherter empfangener Befehl
rule "Check status"
when
Item Pumpe received command // Item soll geschaltet werden
then
tPumpe?.cancel // falls Timer läuft, abbrechen
cCommand = receivedCommand as OnOffType // aktuellen Befehl setzen
tPumpe = createTimer(now.plusSeconds(5), [| // Timer starten und nach 5 Sekunden ausführen
if(Pumpe.state != cCommand) { // Falls Soll von Ist abweicht
Pumpe.sendCommand(cCommand) // Befehl senden
tPumpe.reschedule(now.plusSeconds(5)) // und Timer erneut in 5 Sekunden ausführen
} else // ansonsten
tPumpe = null // timer löschen
])
end
Empfängt das Item Pumpe einen Befehl, so wird die Rule gestartet. Läuft zu diesem Zeitpunkt ein Timer tPumpe, so wird dieser abgebrochen. Das Fragezeichen vor dem .cancel bewirkt, dass der BEfehl nur ausgeführt wird, wenn es tatsächlich einen Timer gibt.
Anschließend wird der Timer neu erzeugt. Dabei wird zuvor der empfangene Befehl in einer globalen Variablen gesichert. Ich bin mir nicht sicher, ob dieser Schritt notwendig ist, bin aber gerade zu faul, das auszuprobieren

Läuft der Timer ab, so prüft der Code, ob der Schaltzustand dem Befehl entspricht. Ist das nicht der Fall, so wird der Befehl erneut gesendet und der Timer erneut geplant.
Stimmt der Schaltzustand mit dem Befehl überein, so wird der Timer gelöscht.
Der Timer muss so weit in der Zukunft liegen, dass der tatsächliche Schaltzustand sicher angezeigt wird, hier habe ich mal 5 Sekunden gewählt. Sollte das nicht reichen, musst Du die Zahl erhöhen.
Der Timer wird dann so lange immer wieder den Befehl senden, bis der Schaltzustand passt.
Ein wichtiger Punkt: das Item sollte in den Metadaten die Option autoupdate="false" gesetzt bekommen, denn sonst setzt openHAB von sich aus den Status auf den gesendeten Befehl. Wir wollen aber auf jeden Fall die echte Rückmeldung vom Shelly auswerten.
So sieht das dann im Log aus:
Code: Alles auswählen
2024-08-17 18:57:38.821 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:57:43.824 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:57:48.827 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:57:53.830 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:57:58.832 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:58:03.833 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:58:08.835 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:58:13.837 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:58:18.840 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command ON
2024-08-17 18:58:23.587 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Pumpe' changed from NULL to ON
2024-08-17 18:58:38.110 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command OFF
2024-08-17 18:58:43.111 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command OFF
2024-08-17 18:58:48.112 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command OFF
2024-08-17 18:58:53.114 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command OFF
2024-08-17 18:58:58.116 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command OFF
2024-08-17 18:59:03.118 [INFO ] [openhab.event.ItemCommandEvent ] - Item 'Pumpe' received command OFF
2024-08-17 18:59:03.365 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Pumpe' changed from ON to OFF
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 238
- Registriert: 29. Jul 2020 12:40
Re: Shelly Plug S
Vielen dank. teste ich.
Weiß nur noch nicht wie ich in den Metadaten die Einstellung vornehmen kann.
Stimmt deine erste Zeile oder muß es tPumpe heißen?
Weiß nur noch nicht wie ich in den Metadaten die Einstellung vornehmen kann.
Stimmt deine erste Zeile oder muß es tPumpe heißen?
Openhab 2 auf RaspberryPi 4