diff --git a/mppsolar/outputs/mqtt.py b/mppsolar/outputs/mqtt.py index 701356b7..03e4408b 100644 --- a/mppsolar/outputs/mqtt.py +++ b/mppsolar/outputs/mqtt.py @@ -62,7 +62,17 @@ def output(self, *args, **kwargs): if data is None: return mqtt_broker = get_kwargs(kwargs, "mqtt_broker", "localhost") - mqtt_port = get_kwargs(kwargs, "mqtt_port", 1883) + _port = get_kwargs(kwargs, "mqtt_port", 1883) + try: + mqtt_port = int(_port) + except ValueError as e: + log.warn(f"Unable to cast {_port} to int - check value supplied for mqttport") + log.warn(e) + return + except Exception as e: + log.warn(e) + return + mqtt_user = get_kwargs(kwargs, "mqtt_user") mqtt_pass = get_kwargs(kwargs, "mqtt_pass") @@ -87,7 +97,13 @@ def output(self, *args, **kwargs): for msg in msgs: print(msg) else: - publish.multiple(msgs, hostname=mqtt_broker, port=mqtt_port, auth=auth) + try: + publish.multiple(msgs, hostname=mqtt_broker, port=mqtt_port, auth=auth) + except Exception as e: + log.warn( + f"Error publishing MQTT messages to broker '{mqtt_broker}' on port '{mqtt_port}' with auth '{auth}'" + ) + log.warn(e) else: if mqtt_broker == "screen": print("MQTT build_msgs returned no messages") diff --git a/mppsolar/version.py b/mppsolar/version.py index 7c2c2eac..69baf89c 100644 --- a/mppsolar/version.py +++ b/mppsolar/version.py @@ -1,2 +1,2 @@ -__version__ = "0.7.31" -__version_comment__ = "recent changes: add filters to config file" +__version__ = "0.7.32" +__version_comment__ = "recent changes: bug fix on mqtt, mqtt prints messages is mqtthost is screen"