diff --git a/adafruit_funhouse/network.py b/adafruit_funhouse/network.py index 16c1e1d..e8a2d05 100755 --- a/adafruit_funhouse/network.py +++ b/adafruit_funhouse/network.py @@ -64,7 +64,6 @@ def __init__( debug=debug, ) self._mqtt_client = None - self.mqtt_connect = None def init_io_mqtt(self): """Initialize MQTT for Adafruit IO""" @@ -99,34 +98,50 @@ def init_mqtt( ) if use_io: self._mqtt_client = IO_MQTT(self._mqtt_client) - self.mqtt_connect = self._mqtt_client.connect return self._mqtt_client # pylint: enable=too-many-arguments def _get_mqtt_client(self): + print(self._mqtt_client) if self._mqtt_client is not None: return self._mqtt_client raise RuntimeError("Please initialize MQTT before using") - def mqtt_loop(self, *args, **kwargs): + def mqtt_loop(self, *args, suppress_mqtt_errors=True, **kwargs): """Run the MQTT Loop""" - try: + self._get_mqtt_client() + if suppress_mqtt_errors: + try: + if self._mqtt_client is not None: + self._mqtt_client.loop(*args, **kwargs) + except MQTT.MMQTTException as err: + print("MMQTTException: {0}".format(err)) + except OSError as err: + print("OSError: {0}".format(err)) + else: if self._mqtt_client is not None: self._mqtt_client.loop(*args, **kwargs) - except MQTT.MMQTTException as err: - print("MMQTTException: {0}".format(err)) - except OSError as err: - print("OSError: {0}".format(err)) - def mqtt_publish(self, *args, **kwargs): + def mqtt_publish(self, *args, suppress_mqtt_errors=True, **kwargs): """Publish to MQTT""" - try: + self._get_mqtt_client() + if suppress_mqtt_errors: + try: + if self._mqtt_client is not None: + self._mqtt_client.publish(*args, **kwargs) + except OSError as err: + print("OSError: {0}".format(err)) + else: if self._mqtt_client is not None: self._mqtt_client.publish(*args, **kwargs) - except OSError as err: - print("OSError: {0}".format(err)) + + def mqtt_connect(self, *args, **kwargs): + """Connect to MQTT""" + self._get_mqtt_client() + if self._mqtt_client is not None: + self._mqtt_client.connect(*args, **kwargs) @property def on_mqtt_connect(self):