Seite 1 von 1

Rule "Warnung bei offener Tür" funktioniert nicht

Verfasst: 4. Mär 2021 15:44
von Anbeku
Ich habe eine kleine Rule geschrieben, die mich benachrichtigen soll, wenn die Haustür länger offen ist:

Code: Alles auswählen

var ScriptExecution = Java.type("org.openhab.core.model.script.actions.ScriptExecution");
var ZonedDateTime = Java.type("java.time.ZonedDateTime");
var logger = Java.type('org.slf4j.LoggerFactory').getLogger('org.openhab.rule.' + ctx.ruleUID);
var NotificationAction = org.openhab.io.openhabcloud.NotificationAction;   


function sendOpenNotification() {
  logger.info("Send door open notification");
  NotificationAction.NotificationAction.sendNotification("***@***.de","Haustür offen");
  this.timer = undefined;
}

if(event.itemState === CLOSED){
  if (this.timer !== undefined) {
    this.timer.cancel();
    this.timer = undefined; 
  }
}
else if(event.itemState === OPEN){
  this.timer = ScriptExecution.createTimer(ZonedDateTime.now().plusSeconds(5), sendOpenNotification);
  logger.info("Start door open timer");
}
Das funktioniert soweit bis der timer abläuft und eigentlich die "sendOpenNotification()" aufrufen sollte. Da kommt dann:

Code: Alles auswählen

2021-03-04 15:32:47.148 [WARN ] [ore.internal.scheduler.SchedulerImpl] - Scheduled job failed and stopped

jdk.nashorn.internal.runtime.ECMAException: TypeError: Cannot read property "sendNotification" from undefined

	at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) ~[jdk.scripting.nashorn:?]

	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213) ~[jdk.scripting.nashorn:?]

	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185) ~[jdk.scripting.nashorn:?]

	at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172) ~[jdk.scripting.nashorn:?]

	at jdk.nashorn.internal.runtime.Undefined.get(Undefined.java:161) ~[jdk.scripting.nashorn:?]

	at jdk.nashorn.internal.scripts.Script$Recompilation$430$322$\^eval\_.sendOpenNotification(<eval>:9) ~[?:?]

	at jdk.nashorn.javaadapters.org_eclipse_xtext_xbase_lib_Procedures$Procedure0.apply(Unknown Source) ~[?:?]

	at org.openhab.core.model.script.actions.ScriptExecution.lambda$0(ScriptExecution.java:82) ~[?:?]

	at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$12(SchedulerImpl.java:166) ~[bundleFile:?]

	at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$1(SchedulerImpl.java:76) [bundleFile:?]

	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]

	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]

	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]

	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]

	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]

	at java.lang.Thread.run(Thread.java:834) [?:?]
Da werde ich nicht ganz schlau draus. Irgendwas scheint mit dem Parameter sendOpenNotification() der createTimer Methode nicht zu stimmen. Ich weiß leider nicht, was die Methode eigentlich erwartet, da das etwas openhab internes ist, habe ich da keine Referenz zu. Ich habe das aus einem Beispiel übernommen.

Re: Rule "Warnung bei offener Tür" funktioniert nicht

Verfasst: 4. Mär 2021 17:22
von geos
Ist das NotificationAction.NotificationAction richtig?

Re: Rule "Warnung bei offener Tür" funktioniert nicht

Verfasst: 4. Mär 2021 17:56
von Anbeku
geos hat geschrieben: 4. Mär 2021 17:22 Ist das NotificationAction.NotificationAction richtig?
Ich breche zusammen. Das war es tatsächlich! Ich hatte das einmal zu viel kopiert. So ein Mist, ich habe da viele Minuten drauf gestarrt, ohne den Fehler zu finden, dabei war er so offensichtlich :D Aber die Fehlermeldung war auch echt für die Tonne.

Re: Rule "Warnung bei offener Tür" funktioniert nicht

Verfasst: 5. Mär 2021 10:23
von geos
Über so was stolpere ich selbst immer wieder. Man schaut drauf und liest was man denkt was da stehen müsste.
Schön, dass ich helfen konnte. ;-)

Re: Rule "Warnung bei offener Tür" funktioniert nicht

Verfasst: 5. Mär 2021 11:11
von udo1toni
Es ist leichter, Fehler bei Anderen zu sehen (weil man mit anderer Aufmerksamkeit liest, nicht, weil man dem Anderen Fehler nachweisen will...)