From d87770d93ee1b05364c8524aa85c7458c0483cae Mon Sep 17 00:00:00 2001 From: Ellis Percival <flyte@failcode.co.uk> Date: Sat, 17 Oct 2020 19:27:48 +0100 Subject: [PATCH] Publish initial output value. #125 --- config.schema.yml | 7 +++++++ pi_mqtt_gpio/__init__.py | 4 ++++ pi_mqtt_gpio/server.py | 9 +++++++++ 3 files changed, 20 insertions(+) diff --git a/config.schema.yml b/config.schema.yml index 7feb3c4..823b0f2 100644 --- a/config.schema.yml +++ b/config.schema.yml @@ -275,6 +275,10 @@ digital_outputs: type: boolean required: no default: no + publish_initial: + type: boolean + required: no + default: no sensor_inputs: type: list @@ -306,6 +310,9 @@ sensor_inputs: required: no default: 2 min: 0 + unit_of_measurement: + type: string + required: no stream_reads: type: list diff --git a/pi_mqtt_gpio/__init__.py b/pi_mqtt_gpio/__init__.py index f23934d..7dd2eb1 100644 --- a/pi_mqtt_gpio/__init__.py +++ b/pi_mqtt_gpio/__init__.py @@ -279,6 +279,10 @@ digital_outputs: type: boolean required: no default: no + publish_initial: + type: boolean + required: no + default: no sensor_inputs: type: list diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py index 4802a8f..67fd95c 100644 --- a/pi_mqtt_gpio/server.py +++ b/pi_mqtt_gpio/server.py @@ -1110,6 +1110,15 @@ 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: -- GitLab