From 05ee67a050dd758773efde0bfd28e3a2eb8687d6 Mon Sep 17 00:00:00 2001 From: Jonathan McDowell Date: Mon, 21 Sep 2020 21:18:57 +0100 Subject: [PATCH] Resubscribe to MQTT prefix when reconnecting --- mqtt-power | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mqtt-power b/mqtt-power index d2723cb..f74a337 100755 --- a/mqtt-power +++ b/mqtt-power @@ -62,6 +62,15 @@ def mqtt_message(client, device, message): control_relay(device, relay, state) +def mqtt_connect(client, userdata, flags, rc): + if debug: + print("Connected to MQTT server") + + client.publish("relay/{}/LWT".format(serno_str), "Online", retain=True) + print("Subscribing to %s" % prefix.format(serno_str)) + client.subscribe(prefix.format(serno_str)) + + def uptime(): with open('/proc/uptime', 'r') as f: seconds = int(float(f.readline().split()[0])) @@ -94,10 +103,10 @@ client.tls_set(ca_certs='/etc/ssl/certs/ca-certificates.crt') client.username_pw_set(auth['username'], auth['password']) client.user_data_set(relay) client.on_message = mqtt_message +client.on_connect = mqtt_connect client.connect(Broker, port=8883) -print("Subscribing to %s" % prefix.format(serno_str)) -client.subscribe(prefix.format(serno_str)) client.loop_start() +client.will_set("relay/{}/LWT".format(serno_str), "Offline", retain=True) while True: state = { -- 2.39.2