Skip to content

Commit 2fecbd0

Browse files
committed
umqtt.robust: Initial version of client with auto-reconnect on errors.
1 parent b5fb588 commit 2fecbd0

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

umqtt.robust/umqtt/robust.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import utime
2+
from . import simple
3+
4+
class MQTTClient(simple.MQTTClient):
5+
6+
DELAY = 2
7+
DEBUG = False
8+
9+
def delay(self, i):
10+
utime.sleep(self.DELAY)
11+
12+
def log(self, in_reconnect, exc):
13+
if self.DEBUG:
14+
if in_reconnect:
15+
print("mqtt reconnect: %r" % e)
16+
else:
17+
print("mqtt: %r" % e)
18+
19+
def reconnect(self, i):
20+
i = 0
21+
while 1:
22+
try:
23+
return super().connect(False)
24+
except OSError as e:
25+
self.log(True, e)
26+
i += 1
27+
self.delay(i)
28+
29+
def publish(self, topic, msg, qos=0, retain=False):
30+
while 1:
31+
try:
32+
return super().publish(topic, msg, qos, retain)
33+
except OSError as e:
34+
self.log(False, e)
35+
self.reconnect()
36+
37+
def wait_msg(self):
38+
while 1:
39+
try:
40+
return super().wait_msg()
41+
except OSError as e:
42+
self.log(False, e)
43+
self.reconnect()

0 commit comments

Comments
 (0)