From cf0c0063ed772a7679871a9739d1f755efcccbc4 Mon Sep 17 00:00:00 2001 From: Ellis Percival <flyte@failcode.co.uk> Date: Sun, 18 Oct 2020 16:15:37 +0100 Subject: [PATCH] Move initial state publishing to after MQTT connection --- config.stdio.yml | 2 ++ pi_mqtt_gpio/server.py | 20 +++++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/config.stdio.yml b/config.stdio.yml index 329347a..da8f855 100644 --- a/config.stdio.yml +++ b/config.stdio.yml @@ -26,3 +26,5 @@ digital_outputs: pin: 20 on_payload: "ON" off_payload: "OFF" + publish_initial: yes + initial: high diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py index 67fd95c..c448af3 100644 --- a/pi_mqtt_gpio/server.py +++ b/pi_mqtt_gpio/server.py @@ -1110,15 +1110,6 @@ def main(args): for out_conf in digital_outputs: initialise_digital_output(out_conf, GPIO_MODULES[out_conf["module"]]) - # If configured to do so, publish the initial states of the outputs - initial_setting = out_conf.get("initial") - if initial_setting is not None and out_conf.get("publish_initial", False): - payload = out_conf["on_payload" if initial_setting else "off_payload"] - client.publish( - "%s/%s/%s" % (topic_prefix, OUTPUT_TOPIC, out_conf["name"]), - retain=out_conf["retain"], - payload=payload, - ) for sens_conf in sensor_inputs: try: @@ -1172,6 +1163,17 @@ def main(args): sys.exit(1) client.loop_start() + for out_conf in digital_outputs: + # If configured to do so, publish the initial states of the outputs + initial_setting = out_conf.get("initial") + if initial_setting is not None and out_conf.get("publish_initial", False): + payload = out_conf["on_payload" if initial_setting else "off_payload"] + client.publish( + "%s/%s/%s" % (topic_prefix, OUTPUT_TOPIC, out_conf["name"]), + retain=out_conf["retain"], + payload=payload, + ) + scheduler = Scheduler() try: -- GitLab