Skip to content
Snippets Groups Projects
Commit 109b7b4f authored by Ellis Percival's avatar Ellis Percival
Browse files

Implement status topic and last-will functionality. #17

parent cc8805f1
Branches
Tags
No related merge requests found
......@@ -291,6 +291,16 @@ def init_mqtt(config, digital_outputs):
_LOG.info(
"Connected to the MQTT broker with protocol v%s.",
config["protocol"])
status_topic = "%s/%s" % (topic_prefix, config["status_topic"])
client.will_set(
status_topic,
payload=config["status_payload_dead"],
qos=1,
retain=True)
_LOG.debug(
"Last will set on %r as %r.",
status_topic,
config["status_payload_dead"])
for out_conf in digital_outputs:
for suffix in (SET_TOPIC, SET_ON_MS_TOPIC, SET_OFF_MS_TOPIC):
topic = "%s/%s/%s/%s" % (
......@@ -300,6 +310,11 @@ def init_mqtt(config, digital_outputs):
suffix)
client.subscribe(topic, qos=1)
_LOG.info("Subscribed to topic: %r", topic)
client.publish(
status_topic,
config["status_payload_running"],
qos=1,
retain=True)
elif rc == 1:
_LOG.fatal(
"Incorrect protocol version used to connect to MQTT broker.")
......@@ -486,6 +501,9 @@ if __name__ == "__main__":
except KeyboardInterrupt:
print("")
finally:
client.publish(
"%s/%s" % (topic_prefix, config["mqtt"]["status_topic"]),
config["mqtt"]["status_payload_stopped"], qos=1, retain=True)
client.disconnect()
client.loop_stop()
for name, gpio in GPIO_MODULES.items():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment