| import utime | |
| from . import simple | |
| class MQTTClient(simple.MQTTClient): | |
| DELAY = 2 | |
| DEBUG = False | |
| def delay(self, i): | |
| utime.sleep(self.DELAY) | |
| def log(self, in_reconnect, e): | |
| if self.DEBUG: | |
| if in_reconnect: | |
| print("mqtt reconnect: %r" % e) | |
| else: | |
| print("mqtt: %r" % e) | |
| def reconnect(self): | |
| i = 0 | |
| while 1: | |
| try: | |
| return super().connect(False) | |
| except OSError as e: | |
| self.log(True, e) | |
| i += 1 | |
| self.delay(i) | |
| def publish(self, topic, msg, retain=False, qos=0): | |
| while 1: | |
| try: | |
| return super().publish(topic, msg, retain, qos) | |
| except OSError as e: | |
| self.log(False, e) | |
| self.reconnect() | |
| def wait_msg(self): | |
| while 1: | |
| try: | |
| return super().wait_msg() | |
| except OSError as e: | |
| self.log(False, e) | |
| self.reconnect() | |