From 8372afee400d8c554f84af78a00d86a2ce264f86 Mon Sep 17 00:00:00 2001 From: Jevgeni Kiski <yozik04@gmail.com> Date: Fri, 24 Jan 2020 19:04:39 +0200 Subject: [PATCH] MQTT Discovery and Discovery prefix settings. --- config.schema.yml | 9 +++++++++ pi_mqtt_gpio/__init__.py | 9 +++++++++ pi_mqtt_gpio/server.py | 17 +++++++++-------- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/config.schema.yml b/config.schema.yml index 0875433..6170543 100644 --- a/config.schema.yml +++ b/config.schema.yml @@ -55,6 +55,15 @@ mqtt: type: string required: no default: dead + discovery: + type: boolean + required: no + default: no + discovery_prefix: + type: string + required: no + default: "homeassistant" + coerce: rstrip_slash tls: type: dict required: no diff --git a/pi_mqtt_gpio/__init__.py b/pi_mqtt_gpio/__init__.py index 05f7f2d..4f9b174 100644 --- a/pi_mqtt_gpio/__init__.py +++ b/pi_mqtt_gpio/__init__.py @@ -58,6 +58,15 @@ mqtt: type: string required: no default: dead + discovery: + type: boolean + required: no + default: no + discovery_prefix: + type: string + required: no + default: "homeassistant" + coerce: rstrip_slash tls: type: dict required: no diff --git a/pi_mqtt_gpio/server.py b/pi_mqtt_gpio/server.py index 3fd47a0..bdc5c8a 100644 --- a/pi_mqtt_gpio/server.py +++ b/pi_mqtt_gpio/server.py @@ -359,10 +359,11 @@ def init_mqtt(config, digital_outputs): status_topic, config["status_payload_running"], qos=1, retain=True ) # HASS - for in_conf in digital_inputs: - hass_annonce_digital_input(in_conf, topic_prefix, config) - for out_conf in digital_outputs: - hass_annonce_digital_output(out_conf, topic_prefix, config) + if config["discovery"]: + for in_conf in digital_inputs: + hass_announce_digital_input(in_conf, topic_prefix, config) + for out_conf in digital_outputs: + hass_announce_digital_output(out_conf, topic_prefix, config) elif rc == 1: _LOG.fatal("Incorrect protocol version used to connect to MQTT broker.") sys.exit(1) @@ -647,7 +648,7 @@ def gpio_interrupt_callback(module, pin): ) -def hass_annonce_digital_input(in_conf, topic_prefix, mqtt_config): +def hass_announce_digital_input(in_conf, topic_prefix, mqtt_config): """ Announces digital input as binary_sensor to HomeAssistant. :param in_conf: Input config @@ -674,13 +675,13 @@ def hass_annonce_digital_input(in_conf, topic_prefix, mqtt_config): } client.publish( - "%s/%s/%s/%s/config" % ("homeassistant", "binary_sensor", device_id, sensor_name), + "%s/%s/%s/%s/config" % (mqtt_config["discovery_prefix"], "binary_sensor", device_id, sensor_name), payload=json.dumps(sensor_config), retain=True, ) -def hass_annonce_digital_output(out_conf, topic_prefix, mqtt_config): +def hass_announce_digital_output(out_conf, topic_prefix, mqtt_config): """ Announces digital output as switch to HomeAssistant. :param out_conf: Output config @@ -708,7 +709,7 @@ def hass_annonce_digital_output(out_conf, topic_prefix, mqtt_config): } client.publish( - "%s/%s/%s/%s/config" % ("homeassistant", "switch", device_id, sensor_name), + "%s/%s/%s/%s/config" % (mqtt_config["discovery_prefix"], "switch", device_id, sensor_name), payload=json.dumps(sensor_config), retain=True, ) -- GitLab