From: Jonathan McDowell Date: Mon, 21 Sep 2020 20:18:57 +0000 (+0100) Subject: Resubscribe to MQTT prefix when reconnecting X-Git-Url: https://the.earth.li/gitweb/?p=energenie-attiny.git;a=commitdiff_plain;h=05ee67a050dd758773efde0bfd28e3a2eb8687d6;hp=96d1571590812770023026aed69ca6d4c948d44d Resubscribe to MQTT prefix when reconnecting --- 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 = {