diff --git a/config.stdio.yml b/config.stdio.yml index 329347ade9c13d203dd885cb8dcc907d1c7d51e1..da8f855c398ee7af48e0152001f586e05eed81e8 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 67fd95cf1c53eca50160d173395c68a4b93df208..c448af36d7219ce831f1ac47af1cf935cad331f5 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: