ArduinoMqttClient icon indicating copy to clipboard operation
ArduinoMqttClient copied to clipboard

Client stops sending mqtt data after some hours

Open valerionew opened this issue 5 years ago • 13 comments

Hi, I'm using this library on a mkr 1010 to send some data every 5 seconds. I based my sketch on the WiFi Simple Sender example. After 1-2 hours the library stops sending mqtt messages to my broker. For now i did the following observations:

  1. the loop() code is still running
  2. i'm still able to ping my arduino
  3. my broker is still running, other devices on the network can still publish on it

The code is hosted on arduino create

valerionew avatar Sep 19 '19 16:09 valerionew

Same problem. mkr1010 to a mosquitto on Rpi

Testato avatar Sep 19 '19 18:09 Testato

Same problem. Broker is mosquitto, it says after about 23 hour:

1572082448: Client Arduino-0000273f has exceeded timeout, disconnecting.
1572082448: Socket error on client Arduino-0000273f, disconnecting.

If i restart arduino, i can see the ping requests in mosquitto log, but if i restart mosquitto while arduino is connected, arduino doesn't reconnect.

attilagyurman avatar Oct 27 '19 18:10 attilagyurman

@attilagyurman in the meantime see this example, you should be able to operate for longer.

https://github.com/fablab-bergamo/ArduinoMqttClient/blob/master/examples/WiFiSimpleSenderReconnect/WiFiSimpleSenderReconnect.ino

valerionew avatar Oct 27 '19 19:10 valerionew

@attilagyurman have you tried the code? Does it patch the problem?

valerionew avatar Nov 10 '19 00:11 valerionew

@attilagyurman have you tried the code? Does it patch the problem?

@5N44P Yes, it's working perfectly.

attilagyurman avatar Nov 11 '19 07:11 attilagyurman

@5N44P just to clarify this topic, was it related to the WiFi or the socket disconnecting?

sandeepmistry avatar Nov 11 '19 22:11 sandeepmistry

I set up this code to try and see if it is a wifi disconnection or just the connection with the MQTT broker. The result is that it is both, but:

  • all the disconnections from the wifi happen at the same hour (17:22), but there is no rtc function active in the arduino as far as I know, so I'm prone to thinking that this is my access point's fault
  • the socket disconnections seem more erratic, and that might be the endpoint

valerionew avatar Nov 11 '19 23:11 valerionew

Ok, so if it's a socket or WiFi level issue I think this can be closed or moved to the WiFiNINA repo if applicable.

You have a pull request #15 open to track adding reconnection to the examples, which is good.

sandeepmistry avatar Nov 14 '19 19:11 sandeepmistry

I have the same problem on an MKR1000. Usually, it only works for like 20-30 minutes, sometimes a few hours. The wifi is connected, i'm still able to ping my arduino, the loop() code is still running, my MQTT broker is running as well.

However, my device does not send data to the MQTT topic...

Trying the reconnecting solution from @5N44P I will report back if it is working. Thank you!

tiszavolgyi avatar Dec 09 '19 17:12 tiszavolgyi

Having the same issue. Initially it was happening every hour, after making poll() calls less frequent it now happens every 8-10 hours. Does anyone have a permanent solution for this?

gregor2004ua avatar Dec 19 '20 01:12 gregor2004ua

...instead of using poll(), which seems to be VERY blocking on my end, I tend to send a random message on a random "keepalive" topic every 30s or so, seems to work by me.

I have quite critical applications where the arduino is really not easily reachable (avalanche level displays on ski slopes) and this is the only thing that seemed to work okay.

Webbeh avatar Jan 05 '21 20:01 Webbeh

I have had my reconnecting example going for more than a year and it's working fine too

valerionew avatar Jan 05 '21 20:01 valerionew

As far as I can see, the algoritm disconnect the MQTT connection after 60 minutes, this is hardcoded in the library file.

I have solved the issue, by adding this statement at the end of the loop():

if (!mqttClient.connected()) { mqttClient.connect(broker, port); }

pesor avatar Jun 21 '21 16:06 pesor