Seite 2 von 3

Re: Timer in einer Rule mit Gruppen

Verfasst: 6. Sep 2022 13:44
von Absinthe
@udi1toni Grazie mille!!!!

Ich sehe schon, dass ich an der Art, wie ich meine Regeln aufbaue noch einiges zu lernen habe! Vielen Dank!

Leider behebt dies nicht die "Fehlermeldung" im Log

Ich bin mittlerweile Komplett verwirrt... egal ob mit Update oder Change im Trigger kommt diese Fehlermeldung.
2022-09-05 11:55:14.071 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_9' failed: cannot invoke method public abstract org.openhab.core.types.State org.openhab.core.items.Item.getState() on null
Im Log sind nun auch die Meldungen aus der Rule mit angelegt...
2022-09-06 08:43:34.632 [WARN ] [.openhab.core.model.script.tempalarm] - Rule durch EG_Windfang_Temperatur getriggert. Der Wert 22.400000000000002 ist keine gültige Zahl!
2022-09-06 08:44:04.883 [WARN ] [.openhab.core.model.script.tempalarm] - Rule durch EG_WC_Temperatur getriggert. Der Wert 22.1 ist keine gültige Zahl!
Blöderweise hören diese Eintrag nach einer undefinierten Zeit einfach auf...

Jetzt bin ich mir nicht sicher, ob nicht das Logging hängt oder der Fehler nach X-Durchläufen einfach weg ist?!

Re: Timer in einer Rule mit Gruppen

Verfasst: 6. Sep 2022 13:46
von udo1toni
Dann sind schon die Items selbst keine Number Items. Die Ausgabe

Code: Alles auswählen

Rule durch EG_WC_Temperatur getriggert. Der Wert 22.1 ist keine gültige Zahl!
Ist da ja eindeutig.

Re: Timer in einer Rule mit Gruppen

Verfasst: 6. Sep 2022 13:49
von Absinthe
Sorry - Beitrag zu schnell weggeschickt ;)

Alle Items und auch die Gruppe sind als "Number" definiert.
Bildschirmfoto 2022-09-06 um 13.50.10.png
Die in der Gruppe enthaltenen Items haben auch alle einen Wert...

Re: Timer in einer Rule mit Gruppen

Verfasst: 6. Sep 2022 20:14
von udo1toni
Hast Du openHAB mal neu gestartet? Ich habe echt keine Erklärung, was da schief geht...

Re: Timer in einer Rule mit Gruppen

Verfasst: 6. Sep 2022 20:27
von udo1toni
Wir können auch noch etwas genauer hinschauen:

Code: Alles auswählen

if(!(newState instanceof Number)) {
    logWarn("tempalarm","Rule durch {} getriggert. Der Wert {} ist keine gültige Zahl!",triggeringItem.name,newState) 
    return;
}
val Number nValue = (newState as Number)
if(nValue.intValue < 21) {
    logInfo("tempalarm","Rule durch {} getriggert. Temperatur ({} °C) in Ordnung.",triggeringItem.name, nValue.doubleValue)
    return;
}
val mySwitch = Group_Temperatur_ExpirationTimer_2.members.filter[i|i.name.startsWith(triggeringItem.name)].head
if(mySwitch.state == ON) {
    logInfo("tempalarm","Rule durch {} getriggert. Alarm wurde bereits abgesetzt.",triggeringItem.name)
    return;
}
    logInfo("tempalarm","Rule durch {} getriggert. Temperatur ({} °C) zu hoch. Noch keine Meldung erfolgt. Alarm!",triggeringItem.name,nValue)
    val mailActions = getActions("mail","mail:smtp:Mail_SMTP")
    val pushoverActions = getActions("pushover", "pushover:pushover-account:Gruppenname")
    val String strMessage = "Raumtemperatur ist über " + nValue.doubleValue.toString + "°C. Ausgelöst hat Raumtemperaturmelder " + triggeringItem.label + ". Status vom: "+new DateTimeType().format("%1$td.%1$tm.%1$ty %1$tH:%1$tM")
    logInfo("tempalarm","Abgesetzte Meldung:",strMessage)

    mailActions.sendMail("Mail-Adresse@irgendwas.com", "Testing - OPENHAB", strMessage)
    pushoverActions.sendHtmlMessage("<font color='orange'>openHab - Testing</font>", strMessage)
    mySwitch.postUpdate(ON)
Die Rule ist letztlich die gleiche, nur ergänzt um einige Log Meldungen im Fall der Fälle, die Logik funktioniert andersrum, falls eine notwendige Bedingung nicht erfüllt ist, wird die Rule abgebrochen.

Re: Timer in einer Rule mit Gruppen

Verfasst: 6. Sep 2022 21:51
von Absinthe
Hallo @udo1toni,

ich habe den Container öfters neu gestartet...

Das kommt im Log an...
2022-09-06 21:21:51.203 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_Flur_Temperatur getriggert. Temperatur (24.6 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-06 21:21:51.205 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung:
2022-09-06 21:22:55.985 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_Buero_Temperatur getriggert. Temperatur (24.8 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-06 21:22:55.986 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung:
2022-09-06 21:23:35.789 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_Bad_Temperatur getriggert. Temperatur (25.0 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-06 21:23:35.790 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung:
2022-09-06 21:24:28.084 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch EG_WC_Temperatur getriggert. Temperatur (22.2 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-06 21:24:28.100 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung:
2022-09-06 21:24:28.493 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch EG_WC_Temperatur getriggert. Alarm wurde bereits abgesetzt.
2022-09-06 21:26:58.651 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_Flur_Temperatur getriggert. Alarm wurde bereits abgesetzt.
2022-09-06 21:29:46.553 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_11' failed: cannot invoke method public abstract org.openhab.core.types.State org.openhab.core.items.Item.getState() on null
Danach gehen die Logeinträge munter weiter...

Alle Items sowie die Gruppe stehen auf "Number". Auch im Thing steht Number "channelTypeUID: knx:number"...
Bildschirmfoto 2022-09-06 um 21.48.15.png
Kann es sein, dass die Daten bereits "schimmlig" ankommen vom Bus?

Re: Timer in einer Rule mit Gruppen

Verfasst: 7. Sep 2022 01:53
von udo1toni
Ups... das fehlt in dem logInfo- Befehl eine geschweifte Klammer (deshalb steht hinter "Abgesetzte Meldung:" keine Meldung...)
Die Zeile muss korrekt so aussehen:

Code: Alles auswählen

logInfo("tempalarm","Abgesetzte Meldung: {}",strMessage)
Ansosnten sieht das sehr gut aus. Also bis auf die Fehlermeldung.
Bist Du sicher, dass die Rule ausschließlich über das Ereignis Member of Group changed getriggert wird? Die Meldung weist darauf hin, dass kein gültiges Item vorliegt und damit triggeringItem und/oder newState null sind.

KAnnst Du die Rule bitte mal über eine Textdatei anlegen, statt sie über die UI einzubauen? Der Code-Teil ist identisch, Du musst aber den Kopf und den Rumpf der Rule anpassenm also

Code: Alles auswählen

rule "rulename"
when
    Member of gruppenname changed
then
    // hier Code einfügen
end
Und die Textdatei unter dem Namen meine.rules ins Verzeichnis /etc/openhab/rules/ speichern. (Der Name ist beliebig, muss aber die Endung .rules haben und die Datei muss sich im passenden Verzeichnis befinden.)

Re: Timer in einer Rule mit Gruppen

Verfasst: 7. Sep 2022 22:24
von Absinthe
Hallo @udo1toni,

ich bin verwirrt. Total verwirrt.

Ich bekomme die Fehlermeldung - nun in geänderter Form - auch, wenn ich diese in eine Rule als "Text-Datei" ablege...
2022-09-07 22:05:21.243 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (25.0 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:05:21.248 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 25.0°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:05
2022-09-07 22:05:21.515 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:05:28.748 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_Buero_Temperatur getriggert. Temperatur (25.6 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:05:28.752 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 25.6°C. Ausgelöst hat Raumtemperaturmelder OG_Buero_Temperatur. Status vom: 07.09.22 22:05
2022-09-07 22:05:29.010 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:05:31.087 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (24.8 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:05:31.092 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 24.8°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:05
2022-09-07 22:05:31.351 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:06:21.199 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (25.0 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:06:21.203 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 25.0°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:06
2022-09-07 22:06:21.462 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:06:32.961 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (24.8 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:06:32.965 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 24.8°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:06
2022-09-07 22:06:33.208 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:07:22.472 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_Alarmanlage' failed: null
2022-09-07 22:08:12.650 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (25.0 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:08:12.654 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 25.0°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:08
2022-09-07 22:08:12.923 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:08:19.285 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (24.8 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:08:19.289 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 24.8°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:08
2022-09-07 22:08:19.553 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:08:42.803 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (25.0 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:08:42.807 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 25.0°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:08
2022-09-07 22:08:43.064 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'test_12-1' failed: null in test_12
2022-09-07 22:08:49.465 [INFO ] [.openhab.core.model.script.tempalarm] - Rule durch OG_KinderzimmerSued_Temperatur getriggert. Temperatur (24.8 °C) zu hoch. Noch keine Meldung erfolgt. Alarm!
2022-09-07 22:08:49.468 [INFO ] [.openhab.core.model.script.tempalarm] - Abgesetzte Meldung: Raumtemperatur ist über 24.8°C. Ausgelöst hat Raumtemperaturmelder OG_KinderzimmerSued_Temperatur. Status vom: 07.09.22 22:08
Irgendwie werde ich das Gefühl nicht los, dass hier etwas anderes als die Items und deren Status nicht stimmt...

Wie komme ich drauf:

Ich habe spaßeshalber, um die Mail Funktion zu testen und die Pushover-Anbindung zu testen eine eigene kleine Regel, wenn ein Switch betätigt wird, dass eine Nachricht ausgelöst wird. Und siehe da...
2022-09-07 22:08:49.665 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_Rule_Pushover' failed: null
2022-09-07 22:08:53.160 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_Rule_Pushover' failed: null
Die Meldung im Log sieht doch sehr verdächtig ähnlich ;) Diese taucht allerdings nur in Verbindung mit Pushover auf...

Ich habe bereits den Container Kopiert und auch einen neuen Container erstellt, um eine "jungfräuliche" Umgebung zu haben, um hier einen Fehler auszuschließen... die Meldung ist - bis jetzt - weg... Ich beobachte...

Update: Ursprüngliche Meldung weiterhin vorhanden...
2022-09-07 23:16:32.718 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_11' failed: cannot invoke method public abstract org.openhab.core.types.State org.openhab.core.items.Item.getState() on null
Was ich zusätzlich beobachten konnte ist, dass nicht jede Benachrichtigung im LOG steht... mir kommt es so vor als ob das Log unvollständig ist. Kann das überhaupt sein!?

Re: Timer in einer Rule mit Gruppen

Verfasst: 8. Sep 2022 19:42
von udo1toni
Nein, das log ist nur dann unvollständig, wenn Du ZRAM aktiv hast und irgendwann das RAM nicht mehr ausreicht. Dann werden jedoch gar keine Zeilen mehr ins Log geschrieben. Nach einem Neustart des Systems tritt dieser Effekt nicht auf.

Bist Du sicher, dass Du nicht irgendeine andere Rule hast, die da Blödsinn macht? Die Fehlermeldung ohne zugehörige vorherige Log-Meldung ist schlicht nicht möglich...

Re: Timer in einer Rule mit Gruppen

Verfasst: 9. Sep 2022 07:01
von Absinthe
Ich habe nun dem Docker-Container anstatt 1024 MB RAM nun 2048 MB RAM von 8 GB zugewiesen. "Gefühlt" ist das LOG nun vollständig. Zumindest stimmt die Anzahl der Einträge zu Meldungen mit der Anzahl eingegangener Nachrichten über ein.

Ich möchte nicht ausschließen, dass irgendeine andere Rule hier noch quatsch macht, aber wie kann ich das ausschließen?

Die Meldung bezieht sich auf meine Test Rule "Test_11":
2022-09-09 06:40:31.422 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Test_11' failed: cannot invoke method public abstract org.openhab.core.types.State org.openhab.core.items.Item.getState() on null
Gibt es eine Möglichkeit das Item/die Items sich ins Log schreiben zu lassen, bei denen der Aufruf scheitert? So wüsste ich nicht, an welcher Stelle ich weiter suchen müsste, um dem auf die Spur zu kommen... Bin für jeden Tipp dankbar ;)