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.