Fix lwt topic with global prefix (#44)
This commit is contained in:
@@ -16,15 +16,16 @@ class MqttClient:
|
|||||||
self.mqttc.username_pw_set(self.username, self.password)
|
self.mqttc.username_pw_set(self.username, self.password)
|
||||||
|
|
||||||
if self.availability_topic:
|
if self.availability_topic:
|
||||||
_LOGGER.debug("Setting LWT to: %s" % self.availability_topic)
|
topic = self._format_topic(self.availability_topic)
|
||||||
self.mqttc.will_set(self.availability_topic, payload=LWT_OFFLINE, retain=True)
|
_LOGGER.debug("Setting LWT to: %s" % topic)
|
||||||
|
self.mqttc.will_set(topic, payload=LWT_OFFLINE, retain=True)
|
||||||
|
|
||||||
def publish(self, messages):
|
def publish(self, messages):
|
||||||
if not messages:
|
if not messages:
|
||||||
return
|
return
|
||||||
|
|
||||||
for m in messages:
|
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)
|
self.mqttc.publish(topic, m.payload, retain=m.retain)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@@ -63,7 +64,7 @@ class MqttClient:
|
|||||||
self.mqttc.connect(self.hostname, port=self.port)
|
self.mqttc.connect(self.hostname, port=self.port)
|
||||||
|
|
||||||
for topic, callback in callbacks:
|
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)
|
_LOGGER.debug("Subscribing to: %s" % topic)
|
||||||
self.mqttc.message_callback_add(topic, callback)
|
self.mqttc.message_callback_add(topic, callback)
|
||||||
self.mqttc.subscribe(topic)
|
self.mqttc.subscribe(topic)
|
||||||
@@ -77,6 +78,9 @@ class MqttClient:
|
|||||||
if self.availability_topic:
|
if self.availability_topic:
|
||||||
self.publish([MqttMessage(topic=self.availability_topic, payload=LWT_OFFLINE, retain=True)])
|
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:
|
class MqttMessage:
|
||||||
def __init__(self, topic=None, payload=None, retain=False):
|
def __init__(self, topic=None, payload=None, retain=False):
|
||||||
self._topic = topic
|
self._topic = topic
|
||||||
|
|||||||
Reference in New Issue
Block a user