-
Notifications
You must be signed in to change notification settings - Fork 1k
Umqtt.robust: subscription vanished after reconnect #321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
That's the only working solution and the best one. I'm doing so as well with another mqtt client. |
How to you re-subscribe to all topics on connection lost?? |
You have all your subscriptions stored and on reconnect you just subscribe all of them. |
But I mean. If on my main while loop I only have client.wait_msg(). Where exactly do I execute the re-subscribe? Is there an onconnect / onreconnect function or something like this? (thanks for the quick response btw!) |
Hmm you are right, the umqtt.robust doesn't really offer a convenient way of recognizing a reconnect.. I haven't used this code in years. I use an async mqtt client https://github.com/peterhinch/micropython-mqtt It looks like you need to create a subclass so you can change the way the reconnect works so you can subscribe after a reconnect. |
I have maintained list of subscribed topic in my code itself, Whenever It gots to know about disconnection and gets reconnected I will again subscribing them, for prompt of disconnect I am running the publish event (just for checking) in the try block and checking problems in catch if any comes |
UUuuuh, nice. Hadn´t thought about publishing just to check if it is subscribed to a topic, nice approach! Mainly cause I have only used umqtt to receive messages. Now I fully understand your note
Thanks! |
Hey guys, I am back and not with good news hehe.. I was wondering, @JDchauhan could you provide code to your publish-subscribe? I haven't spent too much time on this, but I must admit I haven't managed to make it work. I have tried to try-catch publish and then check_msg but it gives me Hoping to find a robust way to make it work IMPORTANT EDIT: forgot to mention. If I only publish every 5 ~ 10 seconds its fine. It does publish. Gives me error when I I have to add I am using Adafruit IO to publish-subscribe... could that be issue? What service are you using? Perhaps I should run my own mosquitto on a pi? I rather use Adafruit for IFTTT... |
Seeing the exact same issue, with Adafruit IO too. |
Hi @turutupa & @alessionossa Below is the part of the code I used back then that worked for me. I don't remember exactly but from the code, it seems like I am expecting the error to be thrown by
|
Same on my side. I'm using micropython on ESP32 C3. Next the workaround that works for me. |
Subclass is the current recommended solution here, however it won't really work until this is merged. Take a look for more information & example about re-subscription |
Board used
ESP8266
What is the problem:
Umqtt.robust() on reconnection will forget the previously subscribed topics i.e, it do not fetch messages of subscribed topics after reconnection.
When the problem occurs (how to mimic it)
after successful subscription of topics and verifying that everything works fine just turn off your internet connection. Then after 5 minutes restart internet connection.
(Note: try to use publish-message with try-catch before check_msg() otherwise u might get stuck with #192 )
Then you will observe that no message is being fetched by the check_msg() on that topic.
How to solve this
This might not be a good solution but for now, I am just subscribing all the topics again whenever the connection lost
The text was updated successfully, but these errors were encountered: