magcode / daikin-mqtt

MQTT interface for Daikin AC Wifi Adapter
GNU General Public License v3.0
10 stars 2 forks source link

MQTT Reconnect #4

Open FulvioSpelta opened 4 years ago

FulvioSpelta commented 4 years ago

MQTT Reconnect

After a network error tha gatway falls in "client disconnesso" state and does not reconnect (following a short sample from the log):

19:38:55.658 [pool-2-thread-1] ERROR org.magcode.daikin.mqtt.MqttNodePublisher - MQTT error
org.eclipse.paho.client.mqttv3.MqttException: Client non connesso
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:31) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.internal.ClientComms.sendNoWait(ClientComms.java:203) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.MqttAsyncClient.publish(MqttAsyncClient.java:1251) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:570) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.magcode.daikin.mqtt.MqttNodePublisher.run(MqttNodePublisher.java:54) [daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
19:39:25.454 [pool-2-thread-1] ERROR org.magcode.daikin.mqtt.MqttNodePublisher - MQTT error
org.eclipse.paho.client.mqttv3.MqttException: Client non connesso
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:31) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.internal.ClientComms.sendNoWait(ClientComms.java:203) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.MqttAsyncClient.publish(MqttAsyncClient.java:1251) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:570) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.magcode.daikin.mqtt.MqttNodePublisher.run(MqttNodePublisher.java:54) [daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
19:39:26.283 [pool-2-thread-1] ERROR org.magcode.daikin.mqtt.MqttNodePublisher - MQTT error
org.eclipse.paho.client.mqttv3.MqttException: Client non connesso
        at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:31) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.internal.ClientComms.sendNoWait(ClientComms.java:203) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.MqttAsyncClient.publish(MqttAsyncClient.java:1251) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:570) ~[daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at org.magcode.daikin.mqtt.MqttNodePublisher.run(MqttNodePublisher.java:54) [daikin-mqtt-1.0.1-jar-with-dependencies.jar:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
FulvioSpelta commented 4 years ago

HI, I confirm that this issue is present in the 1.0.1 too.

Step to reproduce:

  1. Activate jar in ok condition (mqtt broker reachable)
  2. Wait for the first publich cycle
  3. disconnect connection (or switch off mqtt broker)
  4. wait for the error (first warning and then the error):
    2020-06-28 09:38:12.327 [MQTT Rec: client-for-daikin-on-IT000000682235] WARN  org.magcode.daikin.mqtt.Subscriber - MQTT connection lost
    org.eclipse.paho.client.mqttv3.MqttException: Connessione persa
    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:197) [daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
    Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.8.0_131]
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.8.0_131]
    at java.net.SocketInputStream.read(Unknown Source) ~[?:1.8.0_131]
    at java.io.DataInputStream.readByte(Unknown Source) ~[?:1.8.0_131]
    at org.eclipse.paho.client.mqttv3.internal.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:92) ~[daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.eclipse.paho.client.mqttv3.internal.CommsReceiver.run(CommsReceiver.java:137) ~[daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    ... 1 more
    2020-06-28 09:38:23.437 [pool-2-thread-1] ERROR org.magcode.daikin.mqtt.Publisher - MqttException
    org.eclipse.paho.client.mqttv3.MqttException: Client non connesso
    at org.eclipse.paho.client.mqttv3.internal.ExceptionHelper.createMqttException(ExceptionHelper.java:31) ~[daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.eclipse.paho.client.mqttv3.internal.ClientComms.sendNoWait(ClientComms.java:203) ~[daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.eclipse.paho.client.mqttv3.MqttAsyncClient.publish(MqttAsyncClient.java:1251) ~[daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.eclipse.paho.client.mqttv3.MqttClient.publish(MqttClient.java:570) ~[daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.magcode.daikin.mqtt.Publisher.Publish(Publisher.java:37) [daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.magcode.daikin.mqtt.Publisher.Publish(Publisher.java:18) [daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.magcode.daikin.mqtt.Publisher.Publish(Publisher.java:30) [daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at org.magcode.daikin.mqtt.NodePublisher.run(NodePublisher.java:67) [daikin-mqtt-1.1.0-jar-with-dependencies.jar:?]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:1.8.0_131]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:1.8.0_131]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]
  5. reconnect or restart mqtt broker

The connection won't never recover.