Ich habe das so umgebaut, bekomme aber immer noch die selbe Notification und im Log kann ich keine Einträge sehen. Wo habe ich da einen Fehler?
Oder habe ich dich falsch verstanden?
var strOffline = new Stringbuilder
rule "Notification LAN "
when
Item gOnlineMonitor changed from ON to OFF or
Item Dummy changed to ON
then
if (notificationName_LAN.state == ON) {
sendNotification('name@domain.de', "Netzwerkkomponente ausgefallen " + gOnlineMonitor.members.filter[i | i.state==OFF ]).forEach[j | strOffline.append(j.state + " ")
]
logInfo("liste","Die Liste enthält {}",strOffline.toString)
}
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED
var strOffline = new Stringbuilder
rule "Notification LAN "
when
Member of gOnlineMonitor changed to OFF or // einer der Member hat nach OFF gewechselt
Item Dummy changed to ON
then
val strOffline = new Stringbuilder // Ein Stringbuilder Objekt
val offline = gOnlineMonitor.members.filter[i | i.state==OFF ]) // die Liste der Items, die offline sind
strOffline.append("Netzwerkkomponente") // Erster Teil der Meldung (Einzahl ohne Leerzeichen!)
if(offline.size == 1) // genau ein Item
strOffline.append(" " + offline.head.name + " ") // also Namen mit Leerzeichen einfügen
else // mehr als ein Item offline
strOffline.append("n ") // Mehrzahl anhängen plus Leerzeichen
offline.forEach[j,k | // für jedes Element der Itemliste
strOffline.append(j.name) // hänge den Namen des Items an
if(k < offline.size - 1) // falls noch mehr als ein weiteres Element auf der Liste
strOffline.append(", ") // hänge ein Komma mit Leerzeichen an
else // falls vorletztes Element der Liste
strOffline.append(" und ") // hänge " und " an
]
strOffline.append("ausgefallen!") // ergänze Rest der Meldung.
if(notificationName_LAN.state == ON) // falls Notification an
sendNotification('name@domain.de', strOffline.toString) // sende den Notification String
end
Ich habe das mal ausführlich inline kommentiert. Falls mehr als ein "und" ausgegeben wird, muss das -1 weg, ich bin mir nicht sicher, ob k null-basiert ist.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
Wow, so elegant hätte ich das nie hinbekommen:) echt super.
StringBuilder musste noch ausgebessert werden damit es klappt.
Jetzt bekomme ich folgende Nachricht. Es ist ein Gerät Offline.
Netzwerkkomponente Dokuwiki Dokuwiki und ausgefallen!
bzw. wenn ich die - 1 lösche
Netzwerkkomponente Dokuwiki Dokuwiki, ausgefallen!
Also kommt das Item quasi zweimal, es ist aber nur ein Gerät in der Gruppe auf OFF
openHAB4.3.3 in einem Docker Container auf RPI5-8GB, AVM: Fritz!Box 7590 - SMART301/302 - Comet, SMART200/210, SMART440, Alexa, Shelly, Tasmota, ESP Easy, WLED
var strOffline = new Stringbuilder
rule "Notification LAN "
when
Member of gOnlineMonitor changed to OFF or // einer der Member hat nach OFF gewechselt
Item Dummy changed to ON
then
val strOffline = new StringBuilder // Ein Stringbuilder Objekt
val offline = gOnlineMonitor.members.filter[i | i.state==OFF ]) // die Liste der Items, die offline sind
strOffline.append("Netzwerkkomponente") // Erster Teil der Meldung (Einzahl ohne Leerzeichen!)
if(offline.size == 1) // genau ein Item
strOffline.append(" " + offline.head.name + " ") // also Namen mit Leerzeichen einfügen
else { // mehr als ein Item offline
strOffline.append("n ") // Mehrzahl anhängen plus Leerzeichen
offline.forEach[j,k | // für jedes Element der Itemliste
strOffline.append(j.name) // hänge den Namen des Items an
if(k < offline.size - 1) // falls noch mehr als ein weiteres Element auf der Liste
strOffline.append(", ") // hänge ein Komma mit Leerzeichen an
else // falls vorletztes Element der Liste
strOffline.append(" und ") // hänge " und " an
]
}
strOffline.append("ausgefallen!") // ergänze Rest der Meldung.
if(notificationName_LAN.state == ON) // falls Notification an
sendNotification('name@domain.de', strOffline.toString) // sende den Notification String
end
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet