Improve mqtt lwt on reconnect

This commit is contained in:
zewelor
2019-04-19 18:16:02 +02:00
parent 6561c2cb60
commit 074a7837d8
+8 -4
View File
@@ -11,7 +11,7 @@ class MqttClient:
self._config = config
self._mqttc = mqtt.Client(client_id=self.client_id,
clean_session=False,
userdata = {'global_topic_prefix': self.topic_prefix})
userdata={'global_topic_prefix': self.topic_prefix})
if self.username and self.password:
self.mqttc.username_pw_set(self.username, self.password)
@@ -61,7 +61,14 @@ class MqttClient:
def mqttc(self):
return self._mqttc
def on_connect(self, client, userdata, flags, rc):
if self.availability_topic:
self.publish([MqttMessage(topic=self.availability_topic, payload=LWT_ONLINE, retain=True)])
def callbacks_subscription(self, callbacks):
self.mqttc.on_connect = self.on_connect
self.mqttc.connect(self.hostname, port=self.port)
for topic, callback in callbacks:
@@ -72,9 +79,6 @@ class MqttClient:
self.mqttc.loop_start()
if self.availability_topic:
self.publish([MqttMessage(topic=self.availability_topic, payload=LWT_ONLINE, retain=True)])
def __del__(self):
if self.availability_topic:
self.publish([MqttMessage(topic=self.availability_topic, payload=LWT_OFFLINE, retain=True)])