Hallo, Wie verknüpfe ich das [ShellyPlus I4] mit dem [ShellyPlus 2pm] (Rollershutter Modus)
I4_Ch1 ... Rollershutter auf
I4_Ch2 ... Rollershutter zu
Ich verwende OpenHAB 4.2.1 mit der aktuellen Shelly-Binding.
Verbindung Shelly pluis I4 mit Shelly plus2PM
Moderator: seppy
- binderj1
- Beiträge: 27
- Registriert: 11. Dez 2021 09:43
- Wohnort: Windigsteig
Verbindung Shelly pluis I4 mit Shelly plus2PM
openHAB 4.2.0 auf einem Raspberry Pi 4 Model B+
- udo1toni
- Beiträge: 15240
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Verbindung Shelly pluis I4 mit Shelly plus2PM
Die Frage ist, was sinnvoll ist 
Möglichkeit 1: Du definierst die beiden Geräte als Things in openHAB. Anschließend legst Du eine Rule an, die auf die verschiedenen Tastendrücke reagiert. Die Rule sendet dann den jeweils passenden Befehl an den Shelly im Rollershutter Modus.
Denke auch daran, dass Du vermutlich auch Stop als Kommando haben willst, also z.B. I4_Ch1 Während STOP -> UP, I4_Ch1 während UP oder DOWN -> STOP (und das gleiche für I4_Ch2, nur entsprechend mit DOWN/STOP als Befehl).
Möglichkeit 2: Du lässt openHAB für die Auswertung der Tasten außen vor und nutzt die eingebaute Scripting Fähigkeit, d.h. letztendlich sendet der I4 die Steuerbefehle dann direkt an den 2PM.
Vorteil von Möglichkeit 2: Funktioniert auch, wenn openHAB mal nicht läuft (so unwahrscheinlich Dir das auch erscheinen mag).
Nachteil: Du musst Dich zusätzlich mit Shelly auseinandersetzen, über die Anbindung in openHAB hinaus.
Für die Möglichkeit 1 brauchst Du mutmaßlich ein Rollershutter Item, welches mit dem 2pm rollershutter Channel verlinkt ist. Weiterhin benötigst Du die Namen der Channel, welche die Tastendrücke der beiden zu nutzenden Tasten als Events an den Bus melden. Weiterhin musst Du wissen, welches Event beim (kurzen?) Drücken der Taste gemeldet wird, das kannst Du leicht im events.log nachschauen (kurz nacheinander die beiden Tasten drücken und dann das Log nach dem Thing filtern). Eine Rule, welche auf beide Tastendrücke reagiert, sollte reichen, Du kannst innerhalb der Rule über die implizite Variable triggeringChannel erfahren, welcher der beiden Channel die Rule getriggert hat, das sieht z.B. so aus:
Da man keine Information darüber hat, ob der Laden gerade fährt oder nicht, muss die Rule diese Information selbst speichern. Die zweite Rule wertet das Erreichen eine Position als Rückmeldung, dass der Rollladen gestoppt hat (ich kenne das Shelly Binding nicht, gehe aber davon aus, dass sich das Binding in dieser Beziehung so verhält wie etliche andere Bindings auch, Positionsmeldung am Ende der Fahrt).

Möglichkeit 1: Du definierst die beiden Geräte als Things in openHAB. Anschließend legst Du eine Rule an, die auf die verschiedenen Tastendrücke reagiert. Die Rule sendet dann den jeweils passenden Befehl an den Shelly im Rollershutter Modus.
Denke auch daran, dass Du vermutlich auch Stop als Kommando haben willst, also z.B. I4_Ch1 Während STOP -> UP, I4_Ch1 während UP oder DOWN -> STOP (und das gleiche für I4_Ch2, nur entsprechend mit DOWN/STOP als Befehl).
Möglichkeit 2: Du lässt openHAB für die Auswertung der Tasten außen vor und nutzt die eingebaute Scripting Fähigkeit, d.h. letztendlich sendet der I4 die Steuerbefehle dann direkt an den 2PM.
Vorteil von Möglichkeit 2: Funktioniert auch, wenn openHAB mal nicht läuft (so unwahrscheinlich Dir das auch erscheinen mag).
Nachteil: Du musst Dich zusätzlich mit Shelly auseinandersetzen, über die Anbindung in openHAB hinaus.
Für die Möglichkeit 1 brauchst Du mutmaßlich ein Rollershutter Item, welches mit dem 2pm rollershutter Channel verlinkt ist. Weiterhin benötigst Du die Namen der Channel, welche die Tastendrücke der beiden zu nutzenden Tasten als Events an den Bus melden. Weiterhin musst Du wissen, welches Event beim (kurzen?) Drücken der Taste gemeldet wird, das kannst Du leicht im events.log nachschauen (kurz nacheinander die beiden Tasten drücken und dann das Log nach dem Thing filtern). Eine Rule, welche auf beide Tastendrücke reagiert, sollte reichen, Du kannst innerhalb der Rule über die implizite Variable triggeringChannel erfahren, welcher der beiden Channel die Rule getriggert hat, das sieht z.B. so aus:
Code: Alles auswählen
var Boolean bShutterStop = true
rule "Taster für Shutter"
when
Channel 'shelly:i4:input1#button' triggered SHORT_PRESSED or
Channel 'shelly:i4:input2#button' triggered SHORT_PRESSED
then
if(bShutterStop) {
if(triggeringChannel.contains("input1")) // UP
myShutter.sendCommand(UP)
if(triggeringChannel.contains("input2")) // DOWN
myShutter.sendCommand(DOWN)
bShutterStop = false
} else {
myShutter.sendCommand(STOP)
bShutterStop = true
}
end
rule "Shutter Rückmeldung"
when
Item myShutter changed
then
bShutterStop = true
end
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet