Seite 8 von 9
Re: cron Ausdruck und Visual Studio Code
Verfasst: 11. Nov 2018 13:31
von udo1toni
ja, genau. Du kannst auch eine Rule anlegen, die mit System started getriggert wird. In der Rule kannst Du dann der Variablen einen Wert zuweisen (den müsstest Du natürlich berechnen). Evtl. kannst Du auch die vorhandene Rule zusätzlich mit System started triggern lassen, da muss man natürlich schauen, ob es irgendwelche Seiteneffekte geben könnte (z.B. könnte es dann passieren, dass die Items noch nicht restored sind...)
Alternativ kannst Du auch einfach einen von null abweichenden Wert als Default zuweisen. Sobald die Timer Rule aktiv wird, wird der Wert neu berechnet, bis dahin hast Du dann den Default.
Re: cron Ausdruck und Visual Studio Code
Verfasst: 25. Jun 2019 16:42
von hardl
Ich bekomme immer wieder diesen Fehler, bei Erreichen der Schaltzeit:
Code: Alles auswählen
2019-06-24 23:30:01.307 [ERROR] [org.quartz.core.ErrorLogger ] - Job (DEFAULT.2019-06-24T23:30:00.000+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XMemberFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@de8d84
<null>.WZ_soll = <XIfExpressionImpl>
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@172d363
<XFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
} ] threw an exception.
Die Variable ist zu Beginn der rules global deklariert:
Tangiert werden diese Regeln:
Code: Alles auswählen
/* ------------------------------------------------------------------------ */
/* Wohnzimmer manuell */
/* ---------------------*/
rule "Heizung WZ manu"
when
Item WZ_Wahl_manu changed or
Item WZ_Auto changed
then
var Number WZ_manuwahl
if(WZ_Auto.state == OFF) {
WZ_Sonne.sendCommand(OFF)
WZ_manuwahl = WZ_Wahl_manu.state as Number
WZ_soll=WZ_manuwahl
logInfo("timer","Wahl WZ = {}, Manu",WZ_manuwahl)
WZ_Thermostat.sendCommand(WZ_manuwahl)
}else {
logInfo("timer","Wahl WZ = {}, Auto",WZ_soll)
WZ_Thermostat.sendCommand(WZ_soll)
}
end
Code: Alles auswählen
/* ------------------------------------------------------------------------ */
/* Alle Thermostate */
/* ------------------ */
rule "Zeiten berechnen"
when
Member of SchaltUhr changed // Schaltzeit geändert
then
logInfo("timer","Zeiten berechnen")
SchaltMinute.allMembers.forEach[n| // Alle Schaltzeiten aller Heizkreise
var Number hour
var Number minute
var Number minutes
hour = SchaltUhr.members.filter[u|u.name.contains(n.name + "_H")].head.state as Number // Stunde des korrespondierenden StellItems
minute = SchaltUhr.members.filter[u|u.name.contains(n.name + "_M")].head.state as Number // Stunde des korrespondierenden StellItems
minutes = hour * 60 + minute // Sollzeit in Minuten
logInfo("timer","Schaltzeit {} auf {}:{} Uhr ({}) gesetzt.",n.name,hour,minute,hour * 60 + minute)
postUpdate(n.name.toString, minutes.toString) // im passenden Item speichern
]
logInfo("timer","Zeiten berechnen fertig")
end
rule "Alle Timer anlegen"
when
Time cron " 0 0 0 * * ?" or // Mitternacht
System started or // Neustart oder Rules neu geladen
Member of WZ_SchaltMinute changed or // Schaltzeit geändert
Member of EZ_SchaltMinute changed or // Schaltzeit geändert
Member of BZ_SchaltMinute changed or // Schaltzeit geändert
Member of WC_SchaltMinute changed or
Item WZ_Auto changed or // Schaltzeit geändert
Item EZ_Auto changed or // Schaltzeit geändert
Item BZ_Auto changed or // Schaltzeit geändert
Item WC_Auto changed or // Schaltzeit geändert
Item planTimer received command // Timertrigger (nächsten Timer anlegen)
then
if (WZ_Set_comf.state != WZ_comf) { //prüfen ob am WZ-Thermostat geändert wurde
WZ_Set_comf.sendCommand(WZ_comf)
logInfo("timer","WZ-Comfort geändert")
if((WZ_Thermostat.state as Number) != 11) { //Wenn nicht Eco // Aktueller Status abweichend
WZ_Thermostat.sendCommand(11)
}
}
if (EZ_Set_comf.state != EZ_comf) { //prüfen ob am EZ-Thermostat geändert wurde
EZ_Set_comf.sendCommand(EZ_comf)
logInfo("timer","EZ-Comfort geändert")
if((EZ_Thermostat.state as Number) != 11) { //Wenn nicht Eco // Aktueller Status abweichend
EZ_Thermostat.sendCommand(11)
}
}
if (BZ_Set_comf.state != BZ_comf) { //prüfen ob am BZ Thermostat geändert wurde
BZ_Set_comf.sendCommand(BZ_comf)
logInfo("timer","BZ-Comfort geändert")
if((BZ_Thermostat.state as Number) != 11) { //Wenn nicht Eco // Aktueller Status abweichend
BZ_Thermostat.sendCommand(11)
}
}
if (WC_Set_comf.state != WC_comf) { //prüfen ob am WC Thermostat geändert wurde
WC_Set_comf.sendCommand(WC_comf)
logInfo("timer","WC-Comfort geändert")
if((WC_Thermostat.state as Number) != 11) { //Wenn nicht Eco // Aktueller Status abweichend
WC_Thermostat.sendCommand(11)
}
}
if(lock) return; // Rule bereits aktiv?
lock = true // Rule sperren
// ab hier WZ_Timer
if (WZ_Auto.state == ON) { // alten WZ_Timer löschen, falls aktiv
if(WZ_Timer !== null) WZ_Timer.cancel
WZ_Item = WZ_SchaltMinute.members.filter[m|(m.state as Number) > now.getMinuteOfDay].sortBy[
(state as Number).intValue].head as NumberItem // Nächsten WZ_Timer ermitteln
if(WZ_Item !== null) { // noch mindestens ein Timer heute
logInfo("timer","Timer WZ anlegen für {} ({})",WZ_Item.name,WZ_Item.state)
WZ_Timer = createTimer(now.withTimeAtStartOfDay.plusMinutes((WZ_Item.state as Number).intValue),[ // Timer anlegen
logInfo("timer","Timer WZ ausgelöst: {}",WZ_Item.name)
if(WZ_Auto.state != ON) { // falls manueller Betrieb
logInfo("timer","Aber WZ manueller Betrieb, Abbruch!")
planTimer.sendCommand(OFF) // nächsten WZ_Timer planen
return; // und Schluss
}
WZ_soll = if(WZ_Item.name.contains("Ein")) 1 else 11 // Sollzustand nach WZ_Timer
logInfo("timer","geforderter Schaltvorgang WZ : {}",WZ_soll)
if (WZ_Item.name.contains("1") || // Soll der Timer berücksichtigt werden?
(WZ_Item.name.contains("2") && WZ_SW_2.state == ON)) {
logInfo("timer","Schaltvorgang WZ aktiv")
if((WZ_Thermostat.state as Number) != WZ_soll) // Aktueller Status abweichend?
WZ_Thermostat.sendCommand(WZ_soll)
else
logInfo("timer","aber Zustand WZ bereits erreicht")
} else {
logInfo("timer","Schaltvorgang WZ inaktiv")
}
planTimer.sendCommand(OFF) // nächsten Timer planen
])
}
}
Re: cron Ausdruck und Visual Studio Code
Verfasst: 26. Jun 2019 19:13
von udo1toni
Dass im Fehlertext WZ_soll vorkommt, bedeutet nicht, dass diese Variable das Problem darstellt
Hilfreich wäre das Logging unmittelbar vor der Fehlermeldung (soweit dort Logzeilen aus der Rule heraus stehen). Falls solche nicht auftauchen, müsste man ein wenig zusätzliche Logzeilen einbauen.
Re: cron Ausdruck und Visual Studio Code
Verfasst: 26. Jun 2019 19:51
von hardl
Hier noch das erste Auftreten des Errors, davor ist 45 Minuten nichts im openhab.log.
Code: Alles auswählen
2019-06-24 23:30:00.003 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.2019-06-24T23:30:00.000+02:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XMemberFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@11f42bd
<null>.WZ_soll = <XIfExpressionImpl>
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@171ec26
<XFeatureCallImplCustom>.sendCommand(<XFeatureCallImplCustom>)
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(ScriptError.java:66) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1132) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
at com.sun.proxy.$Proxy153.apply(Unknown Source) ~[?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:49) ~[?:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [107:org.eclipse.smarthome.core.scheduler:0.11.0.oh250M1]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [107:org.eclipse.smarthome.core.scheduler:0.11.0.oh250M1]
Der Block kommt 28 x innerhalb von 2 Sekunden, dann wieder 30 Minuten nichts
In event.log ist in diesem Zeitraum nur:
Code: Alles auswählen
2019-06-24 23:30:01.477 [ome.event.ItemCommandEvent] - Item 'planTimer' received command OFF
2019-06-24 23:30:43.469 [me.event.ThingUpdatedEvent] - Thing 'zwave:device:127:node46' has been updated.
Re: cron Ausdruck und Visual Studio Code
Verfasst: 26. Jun 2019 20:56
von udo1toni
Das ist schade.
Gehe ich recht in der Annahme, dass dies nur ein Teil der Rule ist? Versuche besser, einzelne Rules nicht so zu überladen.
Re: cron Ausdruck und Visual Studio Code
Verfasst: 27. Jun 2019 09:16
von hardl
Nein, das ist die ganze Rule "Zeiten berechnen", diese stammt weitgehend von Dir, allerdings auf 4 Thermostate erweitert.
Heute Nacht kam allerdings "nur" dieser Error um 23:00 Uhr und 53 more....:
Code: Alles auswählen
2019-06-26 23:00:17.622 [ERROR] [ersey.server.ServerRuntime$Responder] - An I/O error has occurred while writing a response message entity to the container output stream.
org.glassfish.jersey.server.internal.process.MappableException: org.eclipse.jetty.io.EofException
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:92) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130) ~[171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711) [172:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444) [172:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434) [172:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329) [172:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [171:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [172:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [172:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [169:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [20:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) [85:org.eclipse.jetty.servlet:9.4.12.v20180830]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535) [85:org.eclipse.jetty.servlet:9.4.12.v20180830]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [186:org.ops4j.pax.web.pax-web-jetty:7.2.5]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [82:org.eclipse.jetty.security:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1595) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1340) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [186:org.ops4j.pax.web.pax-web-jetty:7.2.5]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) [85:org.eclipse.jetty.servlet:9.4.12.v20180830]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1564) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1242) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [186:org.ops4j.pax.web.pax-web-jetty:7.2.5]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.Server.handle(Server.java:503) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) [75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) [87:org.eclipse.jetty.util:9.4.12.v20180830]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: org.eclipse.jetty.io.EofException
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:286) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:393) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:277) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:802) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:538) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:831) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:887) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:239) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:215) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:540) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at java.io.OutputStream.write(OutputStream.java:75) ~[?:?]
at org.glassfish.jersey.servlet.internal.ResponseWriter$NonCloseableOutputStreamWrapper.write(ResponseWriter.java:320) ~[?:?]
at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:218) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:294) ~[?:?]
at org.eclipse.smarthome.io.rest.core.internal.GsonProvider.writeTo(GsonProvider.java:71) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86) ~[?:?]
... 53 more
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.writev0(Native Method) ~[?:?]
at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51) ~[?:?]
at sun.nio.ch.IOUtil.write(IOUtil.java:148) ~[?:?]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504) ~[?:?]
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:266) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:393) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:277) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) ~[75:org.eclipse.jetty.io:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:802) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[87:org.eclipse.jetty.util:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:538) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:831) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:887) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:239) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:215) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:540) ~[84:org.eclipse.jetty.server:9.4.12.v20180830]
at java.io.OutputStream.write(OutputStream.java:75) ~[?:?]
at org.glassfish.jersey.servlet.internal.ResponseWriter$NonCloseableOutputStreamWrapper.write(ResponseWriter.java:320) ~[?:?]
at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:218) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:294) ~[?:?]
at org.eclipse.smarthome.io.rest.core.internal.GsonProvider.writeTo(GsonProvider.java:71) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86) ~[?:?]
... 53 more
Re: cron Ausdruck und Visual Studio Code
Verfasst: 27. Jun 2019 13:03
von udo1toni
Mindestens fehlt hinten das Wort end
Was das Erweitern solcher Rules betrifft, geht das normalerweise wesentlich eleganter mittels Gruppen.
Re: cron Ausdruck und Visual Studio Code
Verfasst: 27. Jun 2019 13:20
von hardl
Entschuldige, Du hast natürlich Recht. Es fehlt der Code für die anderen 3 Thermostate:
Code: Alles auswählen
// ab hier EZ_Timer
if (EZ_Auto.state == ON) { // alten EZ_Timer löschen, falls aktiv
if(EZ_Timer !== null) EZ_Timer.cancel // alten EZ_Timer löschen, falls aktiv
EZ_Item = EZ_SchaltMinute.members.filter[m|(m.state as Number) > now.getMinuteOfDay].sortBy[
(state as Number).intValue].head as NumberItem // Nächsten EZ_Timer ermitteln
if(EZ_Item !== null) { // noch mindestens ein Timer heute
logInfo("timer","Timer EZ anlegen für {} ({})",EZ_Item.name,EZ_Item.state)
EZ_Timer = createTimer(now.withTimeAtStartOfDay.plusMinutes((EZ_Item.state as Number).intValue),[ // Timer anlegen
logInfo("timer","Timer EZ ausgelöst: {}",EZ_Item.name)
if(EZ_Auto.state != ON) { // falls manueller Betrieb
logInfo("timer","Aber EZ manueller Betrieb, Abbruch!")
planTimer.sendCommand(OFF) // nächsten EZ_Timer planen
return; // und Schluss
}
EZ_soll = if(EZ_Item.name.contains("Ein")) 1 else 11 // Sollzustand nach EZ_Timer
logInfo("timer","geforderter Schaltvorgang EZ : {}",EZ_soll)
if ((EZ_Item.name.contains("1")) || // Soll der Timer berücksichtigt werden?
(EZ_Item.name.contains("2") && EZ_SW_2.state == ON)) {
logInfo("timer","Schaltvorgang EZ aktiv")
if((EZ_Thermostat.state as Number) != EZ_soll) // Aktueller Status abweichend?
EZ_Thermostat.sendCommand(EZ_soll)
else
logInfo("timer","aber Zustand EZ bereits erreicht")
} else {
logInfo("timer","Schaltvorgang EZ inaktiv")
}
planTimer.sendCommand(OFF) // nächsten Timer planen
])
}
}
// ab hier BZ_Timer
if (BZ_Auto.state == ON) { // alten BZ_Timer löschen, falls aktiv
if(BZ_Timer !== null) BZ_Timer.cancel // alten BZ_Timer löschen, falls aktiv
BZ_Item = BZ_SchaltMinute.members.filter[m|(m.state as Number) > now.getMinuteOfDay].sortBy[
(state as Number).intValue].head as NumberItem // Nächsten BZ_Timer ermitteln
if(BZ_Item !== null) { // noch mindestens ein Timer heute
logInfo("timer","Timer BZ anlegen für {} ({})",BZ_Item.name,BZ_Item.state)
BZ_Timer = createTimer(now.withTimeAtStartOfDay.plusMinutes((BZ_Item.state as Number).intValue),[ // Timer anlegen
logInfo("timer","Timer BZ ausgelöst: {}",BZ_Item.name)
if(BZ_Auto.state != ON) { // falls manueller Betrieb
logInfo("timer","Aber BZ manueller Betrieb, Abbruch!")
planTimer.sendCommand(OFF) // nächsten BZ_Timer planen
return; // und Schluss
}
BZ_soll = if(BZ_Item.name.contains("Ein")) 1 else 11 // Sollzustand nach BZ_Timer
logInfo("timer","geforderter Schaltvorgang BZ : {}",BZ_soll)
if ((BZ_Item.name.contains("1")) || // Soll der Timer berücksichtigt werden?
(BZ_Item.name.contains("2") && BZ_SW_2.state == ON)) {
logInfo("timer","Schaltvorgang BZ aktiv")
if((BZ_Thermostat.state as Number) != BZ_soll) // Aktueller Status abweichend?
BZ_Thermostat.sendCommand(BZ_soll)
else
logInfo("timer","aber Zustand BZ {} bereits erreicht",(BZ_Thermostat.state as Number) )
} else {
logInfo("timer","Schaltvorgang BZ inaktiv")
}
planTimer.sendCommand(OFF) // nächsten Timer planen
])
}
}
// ab hier WC_Timer
if (WC_Auto.state == ON) { // alten WC_Timer löschen, falls aktiv
if(WC_Timer !== null) WC_Timer.cancel // alten WC_Timer löschen, falls aktiv
WC_Item = WC_SchaltMinute.members.filter[m|(m.state as Number) > now.getMinuteOfDay].sortBy[
(state as Number).intValue].head as NumberItem // Nächsten WC_Timer ermitteln
if(WC_Item !== null){ // noch mindestens ein Timer heute
logInfo("timer","Timer WC anlegen für {} ({})",WC_Item.name,WC_Item.state)
WC_Timer = createTimer(now.withTimeAtStartOfDay.plusMinutes((WC_Item.state as Number).intValue),[ // Timer anlegen
logInfo("timer","Timer WC ausgelöst: {}",WC_Item.name)
if(WC_Auto.state != ON) { // falls manueller Betrieb
logInfo("timer","Aber WC manueller Betrieb, Abbruch!")
planTimer.sendCommand(OFF) // nächsten WC_Timer planen
return; // und Schluss
}
WC_soll = if(WC_Item.name.contains("Ein")) 1 else 11 // Sollzustand nach WC_Timer
logInfo("timer","geforderter Schaltvorgang WC : {}",WC_soll)
if ((WC_Item.name.contains("1")) || // Soll der Timer berücksichtigt werden?
(WC_Item.name.contains("2") && WC_SW_2.state == ON)) {
logInfo("timer","Schaltvorgang WC aktiv")
if((WC_Thermostat.state as Number) != WC_soll) // Aktueller Status abweichend?
WC_Thermostat.sendCommand(WC_soll)
else
logInfo("timer","aber Zustand WC {} bereits erreicht",(WC_Thermostat.state as Number) )
} else {
logInfo("timer","Schaltvorgang WC inaktiv")
}
planTimer.sendCommand(OFF) // nächsten Timer planen
])
}
}
lock = false
end
Re: cron Ausdruck und Visual Studio Code
Verfasst: 1. Nov 2019 16:39
von hardl
Ich bräuchte nochmals Hilfe.
Die Steuerung läuft sehr gut.
Mein Problem:
Die Spirit Thermostate übernehmen jede manuelle Änderung am Thermostat verändert den Wert z.bB. im WZ_Set_comf.item
Wenn ich manuell zurückdrehe wird beim nächsten timer-Befehl die WZ_Set_comf-Temperatur mit der niedrigen Temperatur überschrieben.
Wie kann ich eine gewollte Änderung über OH von einer manuellen Änderung am Thermostat unterscheiden?
Re: cron Ausdruck und Visual Studio Code
Verfasst: 22. Nov 2019 20:05
von hardl
Die im Wesentlichen von udo1toni vorgeschlagenen Rules funktionieren sehr gut. Ich habe ein paar Ergänzungen hinzugefügt und es gab keine größeren Fehlermeldungen.
Jetzt häufen sich die Fehlermeldungen, wobei ich annehme, dass das nach dem Update auf openHAB 2.5.0~M4-1 aufgetaucht ist.
Es gibt folgende Fehlermeldungen, die erste tritt nur auf, wenn ich eine Änderung der Schaltzeit vornehme, ansonsten läuft es tagelang ohne Fehler. Er kommt immer beim Auslösen eines Timers vor.
Code: Alles auswählen
2019-11-21 15:30:00.006 [ERROR] [org.quartz.core.JobRunShell ] - Job DEFAULT.Timer 122 2019-11-21T15:30:00.000+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ {
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>,<XMemberFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@4ed23
val wzsoll
logInfo(<XStringLiteralImpl>,<XStringLiteralImpl>)
<XFeatureCallImplCustom>.postUpdate(<XFeatureCallImplCustom>)
org.eclipse.xtext.xbase.impl.XIfExpressionImpl@2f1e0b
} ] threw an unhandled Exception:
java.lang.NullPointerException: null
at org.eclipse.smarthome.model.script.engine.ScriptError.<init>(ScriptError.java:65) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:140) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:768) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluateArgumentExpressions(XbaseInterpreter.java:1132) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1046) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:902) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:865) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:224) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]
at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]
at com.sun.proxy.$Proxy248.apply(Unknown Source) ~[?:?]
at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:48) ~[?:?]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [182:org.openhab.core.scheduler:2.5.0.M4]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [182:org.openhab.core.scheduler:2.5.0.M4]
2019-11-21 15:30:00.011 [INFO ] [eclipse.smarthome.model.script.timer] - Timer WZ ausgelöst: WZ_Uhr2_Ein
Die Folge ist, daß die nächste Schaltzeit ausgelassen wird. Ab Mitternacht ist wieder alles ok.
Der zweite Fehler tritt unabhängig von Schaltzeiten auf:
Code: Alles auswählen
2019-11-22 18:27:13.071 [ERROR] [ersey.server.ServerRuntime$Responder] - An I/O error has occurred while writing a response message entity to the container output stream.
org.glassfish.jersey.server.internal.process.MappableException: org.eclipse.jetty.io.EofException
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:92) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1130) ~[124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:711) [125:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:444) [125:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:434) [125:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:329) [125:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [124:org.glassfish.jersey.core.jersey-common:2.22.2]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) [125:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) [125:org.glassfish.jersey.core.jersey-server:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473) [122:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) [122:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) [122:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) [122:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) [122:org.glassfish.jersey.containers.jersey-container-servlet-core:2.22.2]
at com.eclipsesource.jaxrs.publisher.internal.ServletContainerBridge.service(ServletContainerBridge.java:76) [20:com.eclipsesource.jaxrs.publisher:5.3.1.201602281253]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:873) [90:org.eclipse.jetty.servlet:9.4.18.v20190429]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:542) [90:org.eclipse.jetty.servlet:9.4.18.v20190429]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) [194:org.ops4j.pax.web.pax-web-jetty:7.2.10]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) [87:org.eclipse.jetty.security:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1700) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1345) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:293) [194:org.ops4j.pax.web.pax-web-jetty:7.2.10]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480) [90:org.eclipse.jetty.servlet:9.4.18.v20190429]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1667) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1247) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:80) [194:org.ops4j.pax.web.pax-web-jetty:7.2.10]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.Server.handle(Server.java:505) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) [89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) [80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) [80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804) [92:org.eclipse.jetty.util:9.4.18.v20190429]
at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: org.eclipse.jetty.io.EofException
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:284) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:393) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:277) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:814) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:550) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:845) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:921) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:249) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:225) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:550) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at java.io.OutputStream.write(OutputStream.java:75) ~[?:?]
at org.glassfish.jersey.servlet.internal.ResponseWriter$NonCloseableOutputStreamWrapper.write(ResponseWriter.java:320) ~[?:?]
at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:218) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:294) ~[?:?]
at org.eclipse.smarthome.io.rest.core.internal.GsonProvider.writeTo(GsonProvider.java:71) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86) ~[?:?]
... 53 more
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.writev0(Native Method) ~[?:?]
at sun.nio.ch.SocketDispatcher.writev(SocketDispatcher.java:51) ~[?:?]
at sun.nio.ch.IOUtil.write(IOUtil.java:148) ~[?:?]
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:504) ~[?:?]
at org.eclipse.jetty.io.ChannelEndPoint.flush(ChannelEndPoint.java:264) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.WriteFlusher.flush(WriteFlusher.java:393) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.WriteFlusher.write(WriteFlusher.java:277) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.io.AbstractEndPoint.write(AbstractEndPoint.java:380) ~[80:org.eclipse.jetty.io:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpConnection$SendCallback.process(HttpConnection.java:814) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.util.IteratingCallback.processing(IteratingCallback.java:241) ~[92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.util.IteratingCallback.iterate(IteratingCallback.java:224) ~[92:org.eclipse.jetty.util:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpConnection.send(HttpConnection.java:550) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpChannel.sendResponse(HttpChannel.java:845) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpChannel.write(HttpChannel.java:921) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:249) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:225) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at org.eclipse.jetty.server.HttpOutput.write(HttpOutput.java:550) ~[89:org.eclipse.jetty.server:9.4.18.v20190429]
at java.io.OutputStream.write(OutputStream.java:75) ~[?:?]
at org.glassfish.jersey.servlet.internal.ResponseWriter$NonCloseableOutputStreamWrapper.write(ResponseWriter.java:320) ~[?:?]
at org.glassfish.jersey.message.internal.CommittingOutputStream.write(CommittingOutputStream.java:218) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$UnCloseableOutputStream.write(WriterInterceptorExecutor.java:294) ~[?:?]
at org.eclipse.smarthome.io.rest.core.internal.GsonProvider.writeTo(GsonProvider.java:71) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.invokeWriteTo(WriterInterceptorExecutor.java:265) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:250) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:106) ~[?:?]
at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:162) ~[?:?]
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:86) ~[?:?]
... 53 more
Negative Einflüsse kann ich nicht feststellen.
Wo könnte ich noch suchen?