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,
     )