From 54ae51814e8ee23c443755485b1a38376e136fe5 Mon Sep 17 00:00:00 2001 From: zewelor Date: Mon, 7 Jan 2019 12:27:35 +0100 Subject: [PATCH] Fix lwt topic with global prefix (#44) --- mqtt.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/mqtt.py b/mqtt.py index 1ac85cb..4c8b3dd 100644 --- a/mqtt.py +++ b/mqtt.py @@ -16,15 +16,16 @@ class MqttClient: self.mqttc.username_pw_set(self.username, self.password) if self.availability_topic: - _LOGGER.debug("Setting LWT to: %s" % self.availability_topic) - self.mqttc.will_set(self.availability_topic, payload=LWT_OFFLINE, retain=True) + topic = self._format_topic(self.availability_topic) + _LOGGER.debug("Setting LWT to: %s" % topic) + self.mqttc.will_set(topic, payload=LWT_OFFLINE, retain=True) def publish(self, messages): if not messages: return for m in messages: - topic = "{}/{}".format(self.topic_prefix, m.topic) if self.topic_prefix else m.topic + topic = self._format_topic(m.topic) self.mqttc.publish(topic, m.payload, retain=m.retain) @property @@ -63,7 +64,7 @@ class MqttClient: self.mqttc.connect(self.hostname, port=self.port) for topic, callback in callbacks: - topic = "{}/{}".format(self.topic_prefix, topic) if self.topic_prefix else topic + topic = self._format_topic(topic) _LOGGER.debug("Subscribing to: %s" % topic) self.mqttc.message_callback_add(topic, callback) self.mqttc.subscribe(topic) @@ -77,6 +78,9 @@ class MqttClient: if self.availability_topic: self.publish([MqttMessage(topic=self.availability_topic, payload=LWT_OFFLINE, retain=True)]) + def _format_topic(self, topic): + return "{}/{}".format(self.topic_prefix, topic) if self.topic_prefix else topic + class MqttMessage: def __init__(self, topic=None, payload=None, retain=False): self._topic = topic