2021-04-13 14:43:55.556 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'rollershutter-4' failed: cannot invoke method public abstract java.lang.String org.openhab.core.items.Item.getName() on null in rollershutter
// manual
rule "Manual Mode"
when
Item Rolo_Kind_3_ab changed from OPEN to CLOSED or
Item Rolo_Kind_3_auf changed from OPEN to CLOSED
then
if (ROLO_BLOCK_MODE_COLD.state == OFF) {
if(RK3_RUN.state.toString == "ON") {
RK3_LEVEL.sendCommand(STOP)
} else {
if(triggeringItem.name == "Rolo_Kind_3_ab") {
RK3_LEVEL.sendCommand(DOWN)
} else{
RK3_LEVEL.sendCommand(UP)
}
}
}
Hat sich irgend ein file verschoben order wurde umbenannt das es nicht klappt ?
Das ist etwas, was sich leider in openHAB3 gegenüber openHAB2 geändert hat.
triggeringItem steht nur in den Rules zur Verfügung, die mit Member of ... getriggert wurden. In den Rules, die durch Item ... getriggert werden, kannst Du den Namen des Items (und nur den Namen!) über die implizite String Variable triggeringItemName bestimmen. In Deiner Rule reicht es also, aus ".n" ein "N" zu machen
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet
Ich hab festgestellt nachdem ich x leere Batterien verpasst habe das anscheinend die rule auch nimmer geht... anscheinend hakt es beim
triggeringItem.label
Die rule wird von einem normalen Item getriggert...
rule "TK Bat Alarm"
when
Item TK_TUERE_BAT changed to "ON"
then
val device_name = triggeringItem.label
telegramAction.sendTelegram(XXXXXXXXXL, "Batteriestand niedrig - " + device_name)
end
Wenn ich die Zeile vor der Telegram action rausnehme und das device_name in der nächsten Zeile auch, dann funktioniert das Ganze
Ich hab auch nochne aehnliche Rule wo ich auf die Members einer gruppe bezug nehme... ich bin mir net sicher ob die auch überhaupt noch geht...
goerdi hat geschrieben: ↑29. Mai 2021 14:30
hi !
hier
rule "TK Bat Alarm"
when
Item TK_TUERE_BAT changed to "ON"
then
val device_name = triggeringItem.label
telegramAction.sendTelegram(XXXXXXXXXL, "Batteriestand niedrig - " + device_name)
end
Wenn ich die Zeile vor der Telegram action rausnehme und das device_name in der nächsten Zeile auch, dann funktioniert das Ganze
Ich hab auch nochne aehnliche Rule wo ich auf die Members einer gruppe bezug nehme... ich bin mir net sicher ob die auch überhaupt noch geht...
Gruss Gerd
Was ist denn TK_TUERE_BAT für ein Item? Einzelnes Item oder Gruppenitem?
Ich habe alle Batterieladungsitems in eine Gruppe gepackt und folgende Regel geschrieben:
rule "Benachrichtigen bei Batteriewarnung"
when
Member of gBatterie changed
then
val telegramAction1 = getActions("telegram","telegram:telegramBot:1")
if(triggeringItem.state <= 20){
logInfo("Batteriewarnung", "niedriger Batteriestatus: " + triggeringItem.label.toString)
telegramAction1.sendTelegram("Achtung niedriger Batteriestatus: " + triggeringItem.label.toString + ", Batterieladung beträgt: " + triggeringItem.state.toString + ' Prozent.')
}
end
Wenn ein Item in der Gruppe gBatterie kleiner/gleich 20% beträgt bekomme ich eine Benachrichtigung aufs Handy, diese Regel läuft einwandfrei, bei deiner Regel habe ich diverse Fragezeichen übern Kopf.
das was ich gesucht habe war "triggeringItem.label.toString" das funktionierte mit OH 2.5 noch ohne das toString zumindst in den Gruppen getriggerten Rules..
Bei der wo ein einzelnet Item abgefragt wird gehts nicht....
zum anderen.. es ist schoen wenn ich Vorschläge kriege wie ihr das machen würdet.. aber das hat schon seinen Grund (fuer mich) warum das so ist. Ob fuer euch Nachvollziehbar ist oder nicht..
Ich selbst bin SPS Programmiere... wir sind 4 Kollegen und da loest jeder das selbe Problem anders
rule "send unreach message"
when
Member of gUNREACH changed to "ON"
then
val device_name = triggeringItem.label.toString
telegramAction.sendTelegram(XXXXXXXL, "Teilnehmer nicht erreichbar - " + device_name)
sendBroadcastNotification("Teilnehmer nicht erreichbar - " + device_name)
end
Wird jetzt diese Rule ausgeloest steht im log lapidar...
2021-06-17 11:13:03.628 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'bat-low-message-2' failed: null in bat-low-message
nicht taeuschen lassen die unreach rule ist die 2te in dem rulefile..
Wie gesagt am 5 Juni gings noch dann gabs fuer Ubuntu 18.04 ein update...