diff --git a/bin/user/mqtt.py b/bin/user/mqtt.py index cb673fa..79395e3 100644 --- a/bin/user/mqtt.py +++ b/bin/user/mqtt.py @@ -434,6 +434,7 @@ def __init__(self, queue, server_url, def get_mqtt_client(self): if self.mc: + self.mc.publish(self.topic + '/availability', payload='online', retain=True) return if time.time() - self.mc_try_time < self.retry_wait: return @@ -442,6 +443,7 @@ def get_mqtt_client(self): pad = "%032x" % random.getrandbits(128) client_id = 'weewx_%s' % pad[:8] mc = mqtt.Client(client_id=client_id) + mc.will_set(self.topic + '/availability', payload='offline', retain=True) url = urlparse(self.server_url) if url.username is not None and url.password is not None: mc.username_pw_set(url.username, url.password) @@ -456,6 +458,7 @@ def get_mqtt_client(self): (_obfuscate_password(self.server_url), str(e))) self.mc = None return + mc.publish(self.topic + '/availability', payload='online', retain=True) mc.loop_start() loginf('client established for %s' % _obfuscate_password(self.server_url))