diff --git a/config.schema.yml b/config.schema.yml index 08754333fae2b8a461e25e865da655b4890781f9..6170543ba12758ed461cd57f77c4ef59ecdde941 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 05f7f2da3d1573c16285517ea6e9d58154519048..4f9b174522ca54e0f0dfc6cae8f5fe6523d0828b 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 3fd47a0e3d9d303fb4d34ff511f1e56e307a2eaf..bdc5c8ad92f3d705534ac46a551898a35c1cc107 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, )