rule nach update von 2.5.x auf 3 mit Fehler

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von goerdi »

Hi !

Ich habe ne rule zur Rolo bedienung. Nach dem Upgrade auf die 3 verweigert sie den Dienst. Vroher ging sie wunderbar...
Die Fehlermeldung ist

Code: Alles auswählen

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
Das ist die Rule

Code: Alles auswählen

// 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 ?

Gruss Gerd

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von udo1toni »

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

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von goerdi »

hi !

sorry for delay..
Ja OK funktioniert.. danke

Gruss Gerd

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von goerdi »

Hi !

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...

Gruss goerdi

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von udo1toni »

DIE Rule?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von goerdi »

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

Benutzeravatar
KellerK1nd
Beiträge: 432
Registriert: 17. Jun 2019 16:45
Answers: 1
Wohnort: Griesheim

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von KellerK1nd »

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:

Code: Alles auswählen

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.
Betriebssystem: Proxmox 7.3-4
openHAB Container: debian11 LXC
openHAB Version: 3.4
Hardware: HomeServer Eigenbau mit einem Intel i5 9600K
Smarthome-Equipment:
- Rasperrymatic
- deConz
- HUE
- Shellys
- Mosquitto
- AVM Fritz!Box

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von goerdi »

Hi !

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 :)

Gruss Gerd

Benutzeravatar
udo1toni
Beiträge: 15269
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von udo1toni »

triggeringItem als implizite Variable steht hier unter OH3 nicht zur Verfügung, da die Rule ja nicht über Member of getriggert wird.

Da aber der Itemname TK_TUERE_BAT feststeht, kannst Du ja einfach stattdessen TK_TUERE_BAT.label schreiben.

Gesendet von iPad mit Tapatalk
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

goerdi
Beiträge: 113
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: rule nach update von 2.5.x auf 3 mit Fehler

Beitrag von goerdi »

ok das ging...
Die Tage kam wieder ein update und wupps schon geht wieder ws nicht was vorher ging.. es ist zum Maeuse melken..

Code: Alles auswählen

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... :(

Gruss Gerd

Antworten