Hallo zusammen.
Ich möchte ein Item Switch einer Gruppe per anderen Switch deaktivieren.
Hintergrund:
Ich nutze eine Gruppe wo alle Lampen hinterlegt sind, und diese beinhalten auch die Lampen vom Kinderzimmer.
Nun ist das Kind ja auch manchmal Zuhause und ich dachte mir, man kann das irgendwie per Switch deaktivieren damit die Lampen im Kinderzimmer nicht ausgehen..
Im 2ten step will ich versuchen das ganze per rule zu Steuern aber dazu später... (Soweit bin ich noch nicht )
Ich dachte mir irgendwie: wenn Item "Kind Zuhause on" dann Item Kinderzimmer Lampe in Gruppe deaktiviert....
Geht sowas?
Danke und Gruß.
Item aus Gruppe per Switch deaktivieren
-
- Beiträge: 402
- Registriert: 6. Jan 2021 18:05
Item aus Gruppe per Switch deaktivieren
Gruss mad-mike
openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB)
openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB)
- udo1toni
- Beiträge: 13856
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Item aus Gruppe per Switch deaktivieren
Nein, das geht nicht. Andersrum geht es aber: Du definierst eine Rule, um alle Lichter auszuschalten (ist ohnehin zuverlässiger als über das Group Item einen Befehl an alle zu senden).
In der Rule hast Du nun mehrere Möglichkeiten, entweder Du durchläufst die Gruppe und prüfst (falls "deaktiviert") jeweils, ob das Item nicht berücksichtigt werden soll:
Alternativ kannst Du das Licht auch komplett aus der Gruppe raus lassen und separat in der Rule schalten.
Falls die Gruppe sowohl Switch Items als auch Dimmer Items enthält, muss man das gesondert berücksichtigen.
In der Rule hast Du nun mehrere Möglichkeiten, entweder Du durchläufst die Gruppe und prüfst (falls "deaktiviert") jeweils, ob das Item nicht berücksichtigt werden soll:
Code: Alles auswählen
gLights.members.filter[i|i.state == ON].forEach[light|
if(!(active.state != ON && light.name == "LichtKind"))
light.sendCommand(OFF)
]
Falls die Gruppe sowohl Switch Items als auch Dimmer Items enthält, muss man das gesondert berücksichtigen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 402
- Registriert: 6. Jan 2021 18:05
Re: Item aus Gruppe per Switch deaktivieren
Wie würde das denn aussehen??
Alles was ich versucht habe, hat die Rule abgebrochen mit fehler meldungen...
Also das gruppen Item heisst:
Und das item vom Kind heisst:
Vielleicht errinnerst du dich noch an anderer stell hattest du mir mal dies gebaut:
Nun hatte ich versucht den teil mit ""Lampe.sendCommand(OFF)"" durch deinen Teil oben zu ersetzen... Aber irgendwie bin ich gescheitert.
Gruss
Alles was ich versucht habe, hat die Rule abgebrochen mit fehler meldungen...
Also das gruppen Item heisst:
Code: Alles auswählen
Lampe
Code: Alles auswählen
Constantin
Code: Alles auswählen
var Timer tZentralAus = null // ein Zeiger für einen Timer
var Integer iZentralAus // ein Zähler
val Integer iMio = 1000000
rule "Zentral_off"
when
Channel "shelly:shelly25-relay:784c5f2ecc:relay2#button" triggered SHORT_PRESSED or // Taster - Haustür
Item Zentral_taster changed to ON // APP
then
tZentralAus?.cancel // Falls Timer existiert, weg damit
iZentralAus = 5 // Zähler initialisieren
tZentralAus = createTimer(now.plusNanos(10*iMio), [| // Timer anlegen und fast sofort starten
iZentralAus-=1 // Zähler runterzählen
if(iZentralAus < 1) { // falls am Ende angekommen
Lampe.sendCommand(OFF) // Gruppe OFF
HTTPURLThing_km7.sendCommand(ON) // Relais ON
Zentral_taster.sendCommand(OFF) // APP Schalter
} else { // ansonsten
Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF) // toggle Relais
tZentralAus.reschedule(now.plusNanos((if(iZentralAus > 1) 500 else 1000)*iMio)) // plane den Timer erneut ein
}
])
end
Gruss
Gruss mad-mike
openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB)
openHABian 4.1.1 auf Raspberry Pi 4 Mod. b (8GB)
- udo1toni
- Beiträge: 13856
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Item aus Gruppe per Switch deaktivieren
So müsste das eigentlich gehen:
Der Punkt ist, dass nicht die Gruppe den Befehl bekommt (und dann stellvertretend an die einzelnen Items weiterreicht), sondern die Gruppe wird durchlaufen, für jedes Item der Gruppe wird das Lambda ausgeführt (das Lambda ist der Inhalt zwischen [ und ]).
Ob man die Gruppe zunächst nach den ITems filtert, die eingeschaltet sind, ist erst mal unerheblich.
Code: Alles auswählen
var Timer tZentralAus = null // ein Zeiger für einen Timer
var Integer iZentralAus // ein Zähler
val Integer iMio = 1000000
rule "Zentral_off"
when
Channel "shelly:shelly25-relay:784c5f2ecc:relay2#button" triggered SHORT_PRESSED or // Taster - Haustür
Item Zentral_taster changed to ON // APP
then
tZentralAus?.cancel // Falls Timer existiert, weg damit
iZentralAus = 5 // Zähler initialisieren
tZentralAus = createTimer(now.plusNanos(10*iMio), [| // Timer anlegen und fast sofort starten
iZentralAus-=1 // Zähler runterzählen
if(iZentralAus < 1) { // falls am Ende angekommen
Lampe.members.filter[i|i.state == ON].forEach[licht| // für jedes eingeschaltete Item der Gruppe
if(!(licht.name == "Constantin" && active.state == OFF)) // prüfe, ob Name == Constantin und gleichzeitig Item active OFF)
list.sendCommand(OFF) // falls nicht, sende OFF ans Item
]
HTTPURLThing_km7.sendCommand(ON) // Relais ON
Zentral_taster.sendCommand(OFF) // APP Schalter
} else { // ansonsten
Shelly107_Betrieb.sendCommand(if(Shelly107_Betrieb.state != ON) ON else OFF) // toggle Relais
tZentralAus.reschedule(now.plusNanos((if(iZentralAus > 1) 500 else 1000)*iMio)) // plane den Timer erneut ein
}
])
end
Ob man die Gruppe zunächst nach den ITems filtert, die eingeschaltet sind, ist erst mal unerheblich.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet