Update auf Openhab 5.1 - Regel zur Fensterbelüftung funktioniert mal wieder nicht
Verfasst: 31. Dez 2025 12:43
Hallo,
ich wünsche allen einen guten Rutsch ins neue Jahr.
Ich habe Update auf Openhab 5.1 durchgeführt und wie jedes mal nach einem Update, ich bereue den Schritt.
Meine Rule zur Belüftung funktioniert mal wieder nicht.
Folgender Fehler im Log:
Dann wollte ich mit folgenden Script überprüfen ob die Uhrzeit wieder falsch ist, auch das geht nicht mehr.
Script:
Fehler im Log dazu:
Ich lese mir wirklich immer die Versionshinweise durch und trotzdem fliege ich jedes mal auf die ...
Never Touch a running System. Leider mache ich es doch jedes mal wieder.
ich wünsche allen einen guten Rutsch ins neue Jahr.
Ich habe Update auf Openhab 5.1 durchgeführt und wie jedes mal nach einem Update, ich bereue den Schritt.
Meine Rule zur Belüftung funktioniert mal wieder nicht.
Code: Alles auswählen
var Timer tFensteralarm = null
rule "Fenster Status"
when
Member of Fenstersensoren changed
then
if(tFensteralarm !== null && Fenstersensoren.members.filter[s|s.state.toString == "Offen"].size == 0) {
tFensteralarm.cancel
tFensteralarm = null
} else if(tFensteralarm === null && Fenstersensoren.members.filter[s|s.state.toString == "Offen"].size > 0) {
tFensteralarm = createTimer(now.plusMinutes(10), [|
tFensteralarm.reschedule(now.plusMinutes(5))
val StringBuilder sb = new StringBuilder
sb.append("Folgende Fenster sind zu lange geöffnet: ")
Fenstersensoren.members.filter[s|s.state.toString == "Offen"].forEach[i|
logInfo("lueften","Item {} wird abgearbeitet",i.name)
val tTimestamp = i.lastChange()
val strID = i.name.split("_").get(1)
val iTimeout = (Fenstersensoren_Sperrzeitfenster.members.filter[s|s.name.contains(strID)].head.state as Number).intValue
logInfo("lueften","ermittelte Timestamp {} und Timeout {} mit Namenteil {}",tTimestamp,iTimeout,strID)
if(iTimeout === null || tTimestamp === null) {
logWarn("lueften","Fehler beim Ermitteln des Timeout!",i)
return;
}
if(tTimestamp.plusMinutes(iTimeout).isBefore(now)) {
logInfo("lueften","Timer überschritten...")
sb.append(i.label + " ")
}
]
val text = sb.toString
if(text.length > 42) {
if(Anwesenheit == OFF)
sendBroadcastNotification(text, "contact", "Info")
else {
AlexaWohnzimmer_Ankuendigung.sendCommand(text)
AlexaBad_TTS.sendCommand(text)
AlexaArbeitszimmer_TTS.sendCommand(text)
AlexaKueche_TTS.sendCommand(text)
if (UniFiWirelessClientABCD_Online.state == ON) {sendNotification("abc@abc.de", text, "contact", "Info")}
if (UniFiWirelessClientABC_Online.state == ON) {sendNotification("abc@abcd.de", text, "contact", "Info")}
}
}
])
}
end
Code: Alles auswählen
DSL model 'Lueften.rules' has errors, therefore ignoring it: The operator '===' is undefined for the argument types int and null The operator '===' is undefined for the argument types int and nullScript:
Code: Alles auswählen
logInfo("Test", now.toString)Code: Alles auswählen
Failed to execute action: script(Cannot invoke "com.google.inject.Injector.getInstance(java.lang.Class)" because the return value of "org.openhab.core.model.script.ScriptStandaloneSetup.getInjector()" is null)Code: Alles auswählen
Stack Trace
java.lang.NullPointerException: Cannot invoke "com.google.inject.Injector.getInstance(java.lang.Class)" because the return value of "org.openhab.core.model.script.ScriptStandaloneSetup.getInjector()" is null
at org.openhab.core.model.script.runtime.internal.engine.ScriptEngineImpl.getResourceSet(ScriptEngineImpl.java:77)
at org.openhab.core.model.script.runtime.internal.engine.ScriptEngineImpl.parseScriptIntoXTextEObject(ScriptEngineImpl.java:127)
at org.openhab.core.model.script.runtime.internal.engine.ScriptEngineImpl.newScriptFromString(ScriptEngineImpl.java:111)
at org.openhab.core.model.script.runtime.internal.engine.DSLScriptEngine.eval(DSLScriptEngine.java:137)
at org.openhab.core.automation.module.script.internal.handler.AbstractScriptModuleHandler.eval(AbstractScriptModuleHandler.java:265)
at org.openhab.core.automation.module.script.internal.handler.ScriptActionHandler.lambda$0(ScriptActionHandler.java:99)
at java.base/java.util.Optional.ifPresent(Unknown Source)
at org.openhab.core.automation.module.script.internal.handler.ScriptActionHandler.execute(ScriptActionHandler.java:86)
at org.openhab.core.automation.internal.RuleEngineImpl.executeActions(RuleEngineImpl.java:1322)
at org.openhab.core.automation.internal.RuleEngineImpl.runNow(RuleEngineImpl.java:1120)
at org.openhab.core.automation.rest.internal.RuleResource.runNow(RuleResource.java:401)
at org.openhab.core.automation.rest.internal.RuleResource.runNow(RuleResource.java:418)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:179)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:201)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:104)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:59)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:96)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:267)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:225)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:304)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:217)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:517)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:279)
at org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)
at org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113)
at org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)
at org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96)
at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:722)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Unknown Source)Never Touch a running System. Leider mache ich es doch jedes mal wieder.