Member of Group - last Item falsch
Verfasst: 13. Apr 2021 13:16
Ich habe verschiedene Items welche einfache nur via Ping auf Verfügbarkeit gecheckt werden.
Beispielsweise für unsere Fernseher gibt es folgende Items, welche alle einer Gruppe angehören
Um den Fernsehkonsum unserer Kinder kontrollieren zu können, hätte ich gerne bei jedem Eisnchalten und Abschalten eine Nachricht auf mein Handy.
Um nun nicht für jeden Fernseher eine eigene Rule zu erstellen, dachte ich mir ich erstelle eine Rule und lasse diese auf die Gruppe triggern. In einer Liste wird dann das letzte Element ausgelesen, welches seinen Status geändert hat.
So recht funktioniert das aber nicht....die Nachtricht kommt zwar an aber mit dem falschen Gerät.
Das Problem eigentlich nur bei der "Offline" Regel auf.
Beispielsweise für unsere Fernseher gibt es folgende Items, welche alle einer Gruppe angehören
Code: Alles auswählen
Group:Switch:OR(ON,OFF) gfernseher "Fernseher"
Switch phillips_tv "Fernseher Wohnzimmer [MAP(pingdevice.map):%s]" (gfernseher) {channel="network:pingdevice:phillips_tv:online"}
Switch samsung_gz_tv "Fernseher Gästezimmer[MAP(pingdevice.map):%s]" (gfernseher) {channel="network:pingdevice:samsung_gz_tv:online"}
Switch samsung_oben_tv "Fernseher oben[MAP(pingdevice.map):%s]" (gfernseher) {channel="network:pingdevice:samsung_jolin_tv:online"}
Um nun nicht für jeden Fernseher eine eigene Rule zu erstellen, dachte ich mir ich erstelle eine Rule und lasse diese auf die Gruppe triggern. In einer Liste wird dann das letzte Element ausgelesen, welches seinen Status geändert hat.
So recht funktioniert das aber nicht....die Nachtricht kommt zwar an aber mit dem falschen Gerät.
Das Problem eigentlich nur bei der "Offline" Regel auf.
Code: Alles auswählen
rule "fernseher_offline"
when
Member of gfernseher changed from ON to OFF
then
val lastItem = gfernseher.members.filter[i | i.state==OFF ].head
val labelOfItem = lastItem.label
sendNotification("xxxxxxxxxx", labelOfItem + " - ausgeschalten")
end
rule "fernseher_online"
when
Member of gfernseher changed from OFF to ON
then
val lastItem = gfernseher.members.filter[i | i.state==ON ].head
val labelOfItem = lastItem.label
sendNotification("xxxxxxxxx", labelOfItem + " - eingeschalten")
end