As I have stated earlier, I have problems with the stability of openHab.
As I was trying to figure at what causes the issue, it seems that most of the time, stops at this error:
2018-06-04 06:56:42.975 [WARN ] [su.litvak.chromecast.api.v2.Channel ] - Error while reading
su.litvak.chromecast.api.v2.ChromeCastException: Remote socket closed
at su.litvak.chromecast.api.v2.Channel.read(Channel.java:413) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.access$200(Channel.java:50) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel$ReadThread.run(Channel.java:132) [217:org.openhab.binding.chromecast:2.3.0]
2018-06-04 06:56:42.980 [WARN ] [su.litvak.chromecast.api.v2.Channel ] - Error while sending 'PING'
java.net.SocketException: Connection closed by remote host
at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1565) [?:?]
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:71) [?:?]
at java.io.OutputStream.write(OutputStream.java:75) [?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:401) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:397) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:384) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.access$000(Channel.java:50) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel$PingThread.run(Channel.java:114) [217:org.openhab.binding.chromecast:2.3.0]
at java.util.TimerThread.mainLoop(Timer.java:555) [?:?]
at java.util.TimerThread.run(Timer.java:505) [?:?]
2018-06-04 06:56:53.098 [WARN ] [su.litvak.chromecast.api.v2.Channel ] - <-- null payload in message
2018-06-04 06:57:13.541 [WARN ] [su.litvak.chromecast.api.v2.Channel ] - Error while sending 'PING'
java.net.SocketException: Connection closed by remote host
at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1565) [?:?]
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:71) [?:?]
at java.io.OutputStream.write(OutputStream.java:75) [?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:401) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:397) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:384) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.access$000(Channel.java:50) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel$PingThread.run(Channel.java:114) [217:org.openhab.binding.chromecast:2.3.0]
at java.util.TimerThread.mainLoop(Timer.java:555) [?:?]
at java.util.TimerThread.run(Timer.java:505) [?:?]
Is this possible that Chromecast binding has some issue? Someone who also encountered this issue?
I’m on 2.3.0 stable and it seems that there is much much less freezes than on 2.2.0. However this can happen daily, so not very convenient…
Yes, I have the same messages whenever I stop openHAB.
I used to have problems with the chromecast binding until I discovered that the chromecast goes to sleep after a while. So I installed the Network Binding and I ping the chromecast every minute. That keeps it awake and the problems are gone.
I will monitor this now!
Hope this fixes my issue, because this was one of the first things which I integrated into openHab and I have this kind of problem since then…
It seemed that it solved the problem, until now… However my original post is 9 days old, so it worked much longer time than before (it usually stopped after a few days, 1-2-3 days)
This is the end of the log where it stopped:
2018-06-15 06:39:33.504 [WARN ] [su.litvak.chromecast.api.v2.Channel ] - Error while reading
javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Broken pipe (Write failed)
at sun.security.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1551) [?:?]
at sun.security.ssl.AppInputStream.read(AppInputStream.java:95) [?:?]
at sun.security.ssl.AppInputStream.read(AppInputStream.java:71) [?:?]
at su.litvak.chromecast.api.v2.Channel.read(Channel.java:411) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel.access$200(Channel.java:50) [217:org.openhab.binding.chromecast:2.3.0]
at su.litvak.chromecast.api.v2.Channel$ReadThread.run(Channel.java:132) [217:org.openhab.binding.chromecast:2.3.0]
Caused by: javax.net.ssl.SSLException: java.net.SocketException: Broken pipe (Write failed)
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[?:?]
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959) ~[?:?]
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916) ~[?:?]
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1880) ~[?:?]
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1825) ~[?:?]
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:128) ~[?:?]
at java.io.OutputStream.write(OutputStream.java:75) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:401) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:397) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:384) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.access$000(Channel.java:50) ~[?:?]
at su.litvak.chromecast.api.v2.Channel$ReadThread.run(Channel.java:191) ~[?:?]
Caused by: java.net.SocketException: Broken pipe (Write failed)
at java.net.SocketOutputStream.socketWrite0(Native Method) ~[?:?]
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111) ~[?:?]
at java.net.SocketOutputStream.write(SocketOutputStream.java:155) ~[?:?]
at sun.security.ssl.OutputRecord.writeBuffer(OutputRecord.java:431) ~[?:?]
at sun.security.ssl.OutputRecord.write(OutputRecord.java:417) ~[?:?]
at sun.security.ssl.SSLSocketImpl.writeRecordInternal(SSLSocketImpl.java:886) ~[?:?]
at sun.security.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:857) ~[?:?]
at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:123) ~[?:?]
at java.io.OutputStream.write(OutputStream.java:75) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:401) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:397) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.write(Channel.java:384) ~[?:?]
at su.litvak.chromecast.api.v2.Channel.access$000(Channel.java:50) ~[?:?]
at su.litvak.chromecast.api.v2.Channel$ReadThread.run(Channel.java:191) ~[?:?]
2018-06-15 06:39:33.929 [WARN ] [su.litvak.chromecast.api.v2.Channel ] - <-- null payload in message
2018-06-15 06:40:09.570 [WARN ] [me.core.internal.events.EventHandler] - Dispatching event to subscriber 'org.eclipse.smarthome.model.rule.runtime.internal.engine.RuleEngineImpl@136110e' takes more than 5000ms.
2018-06-15 06:40:11.517 [INFO ] [e.smarthome.model.script.radio.rules] - Received command: classHit
2018-06-15 06:40:17.748 [INFO ] [e.smarthome.model.script.radio.rules] - Received command: classHit
2018-06-15 06:40:40.697 [WARN ] [me.core.internal.events.EventHandler] - Dispatching event to subscriber 'org.openhab.io.openhabcloud.internal.CloudService@16167e6' takes more than 5000ms.
I have opened an issue on Github, because I haven’t found any relevant info on this and for me it seems that the Chromecast binding causes this issue. I had several freezes since then and it always happened when the log produced the same output. Chromecast exception, these warning on the last lines and after that the whole openhab freezes.
I’m going to give your workaround a try. I would love it if this works out! I have it in place but it seems that I am still seeing Chromecast binding errors in the log.
I have added a Network binding ping for the “physical” Chromecasts. But I also have two Chromecast audio groups. The log does not give information on which Chromecast generated the error (if it does, I haven’t been able to decipher it). I wonder if there’s a similar narcolepsy issue with audio groups? If so, I don’t know of a way to keep them “awake”.
@Kai - if this is a “fix” for the problem, I wonder if there is a way to add this periodic ping directly to the Chromecast binding? Or, perhaps, if the binding is made aware that the devices are prone to going idle, the binding will treat these errors differently? Perhaps a WARNING rather than an ERROR and with a much less verbose log?