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