Moin *,
ich habe eine Konfiguration, in welcher als Reaktion auf bestimmte Ereignisse eine Nachricht in einen Chatroom (XMPP/Jabber) abgesetzt wird. Konkret geht es um den Statuswechsel für die Verfügbarkeit von bestimmten Clients im WLAN.
Eigentlich (TM) funktioniert das zuverlässig, auch über mehrere Tage hinweg. Das Problem scheint erst dann aufzutreten, wenn es zu einem Verbindungsproblem gekommen ist. Ab da wird allerdings bei jedem Chatversuch eine Exception geworfen, auch wenn die Verbindung längst wiederhergestellt ist und ich beispielsweise per telnet systemseitig eine Verbindung herstellen kann.
Wenn dieser Zustand einmal eingetreten ist, scheint nur noch ein Neustart von openHAB verlässlich zu helfen. Von allein erholt sich die Instanz nicht.
Die Exception (in diesem Beispiel aufgetreten nach einem Abbruch einer VPN-Verbindung zwischen Router und VPN-Gateway):
Hinweis: An 'xmpp:securitymode=required' liegt es nicht.
Vielen Dank vorweg schonmal für jede Hilfe.
cu, Lyra
ich habe eine Konfiguration, in welcher als Reaktion auf bestimmte Ereignisse eine Nachricht in einen Chatroom (XMPP/Jabber) abgesetzt wird. Konkret geht es um den Statuswechsel für die Verfügbarkeit von bestimmten Clients im WLAN.
Eigentlich (TM) funktioniert das zuverlässig, auch über mehrere Tage hinweg. Das Problem scheint erst dann aufzutreten, wenn es zu einem Verbindungsproblem gekommen ist. Ab da wird allerdings bei jedem Chatversuch eine Exception geworfen, auch wenn die Verbindung längst wiederhergestellt ist und ich beispielsweise per telnet systemseitig eine Verbindung herstellen kann.
Wenn dieser Zustand einmal eingetreten ist, scheint nur noch ein Neustart von openHAB verlässlich zu helfen. Von allein erholt sich die Instanz nicht.
Code:
# java -version openjdk version "1.8.0_141" OpenJDK Runtime Environment (build 1.8.0_141-b16) OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode) # grep 'PRETTY_NAME' /etc/os-release PRETTY_NAME="CentOS Linux 7 (Core)"
Code:
# cat /opt/openhab2/conf/services/xmpp.cfg xmpp:servername=jabber.<domain> xmpp:username=smarthome xmpp:password=<password> xmpp:securitymode=required xmpp:port=5222 xmpp:chatroom=smarthome@conference.<domain> xmpp:chatnickname=smarthome xmpp:chatpassword=<password>
Code:
# cat /opt/openhab2/conf/rules/presence.rules rule "mobile-<user>-presence" when Item Mobile<user>_Online changed then chatXMPP( "Mobile<user> - state changed: " + Mobile<user>_Online.state) end <...>
Code:
2017-08-18 10:31:24.806 [WARN ] [.jivesoftware.smack.tcp.PacketWriter] - Exception writing closing stream element javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Keine Route zum Zielrechner (Read failed) at sun.security.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1551)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.checkWrite(SSLSocketImpl.java:1563)[:1.8.0_141] at sun.security.ssl.AppOutputStream.write(AppOutputStream.java:71)[:1.8.0_141] at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)[:1.8.0_141] at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)[:1.8.0_141] at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295)[:1.8.0_141] at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)[:1.8.0_141] at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)[:1.8.0_141] at java.io.BufferedWriter.flush(BufferedWriter.java:254)[:1.8.0_141] at org.jivesoftware.smack.tcp.PacketWriter.writePackets(PacketWriter.java:190)[185:org.openhab.action.xmpp:1.9.0] at org.jivesoftware.smack.tcp.PacketWriter.access$000(PacketWriter.java:40)[185:org.openhab.action.xmpp:1.9.0] at org.jivesoftware.smack.tcp.PacketWriter$1.run(PacketWriter.java:77)[185:org.openhab.action.xmpp:1.9.0] Caused by: javax.net.ssl.SSLException: java.net.SocketException: Keine Route zum Zielrechner (Read failed) at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1916)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1880)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1825)[:1.8.0_141] at sun.security.ssl.AppInputStream.read(AppInputStream.java:116)[:1.8.0_141] at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)[:1.8.0_141] at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)[:1.8.0_141] at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)[:1.8.0_141] at java.io.InputStreamReader.read(InputStreamReader.java:184)[:1.8.0_141] at java.io.BufferedReader.fill(BufferedReader.java:161)[:1.8.0_141] at java.io.BufferedReader.read1(BufferedReader.java:212)[:1.8.0_141] at java.io.BufferedReader.read(BufferedReader.java:286)[:1.8.0_141] at org.xmlpull.mxp1.MXParser.fillBuf(MXParser.java:2992)[185:org.openhab.action.xmpp:1.9.0] at org.xmlpull.mxp1.MXParser.more(MXParser.java:3046)[185:org.openhab.action.xmpp:1.9.0] at org.xmlpull.mxp1.MXParser.nextImpl(MXParser.java:1144)[185:org.openhab.action.xmpp:1.9.0] at org.xmlpull.mxp1.MXParser.next(MXParser.java:1093)[185:org.openhab.action.xmpp:1.9.0] at org.jivesoftware.smack.tcp.PacketReader.parsePackets(PacketReader.java:291)[185:org.openhab.action.xmpp:1.9.0] at org.jivesoftware.smack.tcp.PacketReader.access$000(PacketReader.java:47)[185:org.openhab.action.xmpp:1.9.0] at org.jivesoftware.smack.tcp.PacketReader$1.run(PacketReader.java:81)[185:org.openhab.action.xmpp:1.9.0] Caused by: java.net.SocketException: Keine Route zum Zielrechner (Read failed) at java.net.SocketInputStream.socketRead0(Native Method)[:1.8.0_141] at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)[:1.8.0_141] at java.net.SocketInputStream.read(SocketInputStream.java:171)[:1.8.0_141] at java.net.SocketInputStream.read(SocketInputStream.java:141)[:1.8.0_141] at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)[:1.8.0_141] at sun.security.ssl.InputRecord.read(InputRecord.java:503)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)[:1.8.0_141] at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:940)[:1.8.0_141 at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)[:1.8.0_141] ... 14 more
Vielen Dank vorweg schonmal für jede Hilfe.
cu, Lyra
Kommentar