


Der Cron müsste doch wieder da sein, oder ?
Dann ist das ja genau anders herum. Timer geht, Cron nicht ..Mein "verqueres Denken"
Hallo Udo1Toni!udo1toni hat geschrieben: ↑7. Jun 2022 20:02 Ich mag auch meinen Senf dazu geben... O:)
Punkt 1: Es gibt gar keinen so großen Unterschied zwischen Time cron und createTimer. Time cron erzeugt einen Scheduler Eintrag ebenso wie wie createTimer. Der Unterschied ist aber dass createTimer einmalige Timer erzeugt, während Time cron (so man nicht alle Werte im Ausdruck fix setzt) immer einen wiederholenden Aspekt hat, und wenn es nur einmal im Jahr ist...
Wie der Scheduler dann die Rule triggert, entzieht sich meiner Kenntnis (createTimer legt den auszuführenden Code ja direkt im Scheduler ab, Time cron führt aber die Rule selbst auf), aber der Trigger kommt so oder so vom Scheduler.
Punkt 2: Der Time cron Ansatz wird vermutlich häufiger ausgeführt werden müssen. Wenn ich die Daten über den Kalender rein bekomme, muss ich bei Time cron also z.B. täglich um 19 Uhr prüfen, ob ein Termin am nächsten Tag ansteht, den ich melden muss.
Wenn ich createTimer verwende, kann eine Rule, die auf TerminInfoItem changed triggert anschließend TerminDatumItem verwenden, um etwas in der Richtung createTimer((TerminDatumItem.state as Date).midnight.minusHours(5)) (Nur Symbolcode)) zu verwenden. Der Timer wird also auf den Zeitpunkt fünf Stunden vor Tagesbeginn des Termins gesetzt. Die Prüfung auf Art des Termins muss natürlich vorher erfolgen und der Termin muss am Vortag vor 19 Uhr eingelesen sein, aber das gilt in ähnlicher Form auch für die Time cron Variante. Es spielt dann keine Rolle, wann der Termin vorher eingelesen wird, das könnte auch fünf Tage vorher sein. Dennoch wird nur ein Eintrag im Scheduler vorgenommen.
timer_Muell = createTimer((Kalender_Muell_1_Beginn.state as Date).midnight.minusHours(4), [|
timer_Muell = null
// Mach irgendwas
])
Geht so
Ja, das ist korrekt. Es gibt keinen Datentyp Date (oder zumindest nicht so). Wenn Du ein DateTime Item hast, dann wird der Status dieses Items vom Typ DateTimeType sein. Also wäre es wenn, dannjoe73 hat geschrieben: ↑3. Feb 2023 15:23Das Item "Kalender_Muell_1_Beginn.state" ist vom Typ DateTime.Code: Alles auswählen
timer_Muell = createTimer((Kalender_Muell_1_Beginn.state as Date).midnight.minusHours(4), [| timer_Muell = null // Mach irgendwas ])
Ich bekomme hier die Fehlermeldung:
"Date cannot be resolved to a type."
Code: Alles auswählen
Kalender_Muell_1_Beginn.state as DateTimeType
Code: Alles auswählen
val MyJavaTimeFromDateTimeItem = (Kalender_Muell_1_Beginn.state as DateTimeType).getZonedDateTime()
Code: Alles auswählen
.with(LocalTime.MIDNIGHT)
Code: Alles auswählen
val myAlarm = (Kalender_Muell_1_Beginn.state as DateTimeType).getZonedDateTime.with(LocalTime.MIDNIGHT).minusHours(4)
timer_Muell = createTimer(myAlarm, [|
// mach was
])
Code: Alles auswählen
timer_Muell?.cancel
val myAlarm = (Kalender_Muell_1_Beginn.state as DateTimeType).getZonedDateTime.with(LocalTime.MIDNIGHT).minusHours(4)
timer_Muell = createTimer(myAlarm, [|
timer_Muell = null
var String message
message = "Test"
// message = "Kalender: " + Kalender_Muell_1_Name.state + " schon an die Straße gestellt?"
if (KodiOnline.state==ON) { Kodi_Muell_Notification.sendCommand(message) }
telegramAction_Warn.sendTelegram(message)
])
Code: Alles auswählen
2023-02-06 20:00:00.002 [WARN ] [ore.internal.scheduler.SchedulerImpl] - Scheduled job '<unknown>' failed and stopped
java.lang.IllegalStateException: Cannot resolve proxy: calendar.rules#/1
at org.eclipse.xtext.common.types.util.JavaReflectAccess.getRawType(JavaReflectAccess.java:109) ~[?:?]
at org.eclipse.xtext.common.types.util.JavaReflectAccess.getField(JavaReflectAccess.java:58) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._assignValueTo(XbaseInterpreter.java:1354) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter._assignValueTo(ScriptInterpreter.java:211) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.assignValueTo(XbaseInterpreter.java:1327) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1319) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:475) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:251) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:213) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:47) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:30) ~[?:?]
at com.sun.proxy.$Proxy405.apply(Unknown Source) ~[?:?]
at org.openhab.core.model.script.actions.ScriptExecution.lambda$0(ScriptExecution.java:97) ~[?:?]
at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$12(SchedulerImpl.java:191) ~[?:?]
at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$1(SchedulerImpl.java:88) ~[?:?]
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:829) [?:?]
2023-02-06 20:00:00.027 [WARN ] [ore.internal.scheduler.SchedulerImpl] - Scheduled job '<unknown>' failed and stopped
java.lang.IllegalStateException: Cannot resolve proxy: calendar.rules#/1
at org.eclipse.xtext.common.types.util.JavaReflectAccess.getRawType(JavaReflectAccess.java:109) ~[?:?]
at org.eclipse.xtext.common.types.util.JavaReflectAccess.getField(JavaReflectAccess.java:58) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._assignValueTo(XbaseInterpreter.java:1354) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter._assignValueTo(ScriptInterpreter.java:211) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.assignValueTo(XbaseInterpreter.java:1327) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:1319) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:475) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:251) ~[?:?]
at org.openhab.core.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:227) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:213) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:47) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:30) ~[?:?]
at com.sun.proxy.$Proxy405.apply(Unknown Source) ~[?:?]
at org.openhab.core.model.script.actions.ScriptExecution.lambda$0(ScriptExecution.java:97) ~[?:?]
at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$12(SchedulerImpl.java:191) ~[?:?]
at org.openhab.core.internal.scheduler.SchedulerImpl.lambda$1(SchedulerImpl.java:88) ~[?:?]
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:829) [?:?]