From b1baa8720b16b6a0f5d9aff0674af2d3e49a6c97 Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Mon, 3 Jun 2024 23:02:21 +0200 Subject: [PATCH] Revert "Add device based MQTT auto discovery (#31122)" (#33059) --- .../alarm_control_panel.mqtt.markdown | 4 - .../_integrations/binary_sensor.mqtt.markdown | 4 - source/_integrations/button.mqtt.markdown | 4 - source/_integrations/cover.mqtt.markdown | 4 - .../device_tracker.mqtt.markdown | 4 - .../device_trigger.mqtt.markdown | 4 - source/_integrations/event.mqtt.markdown | 4 - source/_integrations/fan.mqtt.markdown | 4 - source/_integrations/humidifier.mqtt.markdown | 4 - source/_integrations/lawn_mower.mqtt.markdown | 4 - source/_integrations/light.mqtt.markdown | 12 - source/_integrations/lock.mqtt.markdown | 4 - source/_integrations/mqtt.markdown | 345 ++---------------- source/_integrations/number.mqtt.markdown | 4 - source/_integrations/scene.mqtt.markdown | 4 - source/_integrations/select.mqtt.markdown | 4 - source/_integrations/sensor.mqtt.markdown | 4 - source/_integrations/siren.mqtt.markdown | 4 - source/_integrations/switch.mqtt.markdown | 4 - source/_integrations/text.mqtt.markdown | 4 - source/_integrations/update.mqtt.markdown | 4 - source/_integrations/vacuum.mqtt.markdown | 4 - source/_integrations/valve.mqtt.markdown | 4 - .../_integrations/water_heater.mqtt.markdown | 4 - 24 files changed, 38 insertions(+), 407 deletions(-) diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index 5adc049e5b7..eaea1448d9c 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -235,10 +235,6 @@ payload_trigger: required: false type: string default: TRIGGER -platform: - description: Must be `alarm_control_panel`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index d7b1a7a1848..5b64bd29f9b 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -188,10 +188,6 @@ payload_on: required: false type: string default: "ON" -platform: - description: Must be `binary_sensor`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/button.mqtt.markdown b/source/_integrations/button.mqtt.markdown index b6a2091a02b..e3393dc3229 100644 --- a/source/_integrations/button.mqtt.markdown +++ b/source/_integrations/button.mqtt.markdown @@ -167,10 +167,6 @@ payload_press: required: false type: string default: "PRESS" -platform: - description: Must be `button`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index ebd9dda0b02..fc8bcc30881 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -195,10 +195,6 @@ payload_stop: required: false type: string default: STOP -platform: - description: Must be `cover`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string position_closed: description: Number which represents closed position. required: false diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index 7fa61f2cba7..0742270e575 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -163,10 +163,6 @@ payload_reset: required: false type: string default: '"None"' -platform: - description: Must be `device_tracker`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown index db2858cdbcb..1ad3a038e7b 100644 --- a/source/_integrations/device_trigger.mqtt.markdown +++ b/source/_integrations/device_trigger.mqtt.markdown @@ -26,10 +26,6 @@ payload: description: Optional payload to match the payload being sent over the topic. required: false type: string -platform: - description: Must be `device_automation`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/event.mqtt.markdown b/source/_integrations/event.mqtt.markdown index 6d6f096584f..39253b0aed1 100644 --- a/source/_integrations/event.mqtt.markdown +++ b/source/_integrations/event.mqtt.markdown @@ -160,10 +160,6 @@ payload_not_available: required: false type: string default: offline -platform: - description: Must be `event`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 1cc576c440f..2af02cfcd24 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -250,10 +250,6 @@ percentage_value_template: description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `percentage` value from the payload received on `percentage_state_topic`. required: false type: template -platform: - description: Must be `fan`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string preset_mode_command_template: description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `preset_mode_command_topic`. required: false diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown index 0deaf982117..c50b9e6f47d 100644 --- a/source/_integrations/humidifier.mqtt.markdown +++ b/source/_integrations/humidifier.mqtt.markdown @@ -262,10 +262,6 @@ modes: required: false type: [list] default: [] -platform: - description: Must be `humidfier`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/lawn_mower.mqtt.markdown b/source/_integrations/lawn_mower.mqtt.markdown index 8937a060063..315bdc45828 100644 --- a/source/_integrations/lawn_mower.mqtt.markdown +++ b/source/_integrations/lawn_mower.mqtt.markdown @@ -171,10 +171,6 @@ pause_command_topic: description: The MQTT topic that publishes commands when the service `lawn_mower.pause` service call is executed. The value `pause` is published when the service is called. Use a `pause_command_template` to publish a custom format. required: false type: string -platform: - description: Must be `lawn_mower`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index bfd832fcdaf..604a68376dc 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -295,10 +295,6 @@ payload_on: required: false type: string default: "ON" -platform: - description: Must be `light`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -694,10 +690,6 @@ payload_not_available: required: false type: string default: offline -platform: - description: Must be `light`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false @@ -1058,10 +1050,6 @@ payload_not_available: required: false type: string default: offline -platform: - description: Must be `light`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index 36a8c56f9d1..862ee9531b5 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -197,10 +197,6 @@ payload_reset: required: false type: string default: '"None"' -platform: - description: Must be `lock`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index ea41e53a073..11bee3cbaa6 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -301,7 +301,7 @@ The discovery topic needs to follow a specific format: ``` - ``: The Discovery Prefix defaults to `homeassistant`. This prefix can be [changed](#discovery-options). -- ``: One of the supported MQTT integrations, eg. `binary_sensor`, or `device` in case of a device discovery. +- ``: One of the supported MQTT integrations, eg. `binary_sensor`. - `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). - ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). @@ -309,234 +309,6 @@ The `` level can be used by clients to only subscribe to their own (com Best practice for entities with a `unique_id` is to set `` to `unique_id` and omit the ``. -#### Device discovery payload - -A device can send a discovery payload to expose all components for a device. -The `` part in the discovery topic must be set to `device`. - -As an alternative it is also possible a device [can send a discovery payload for each component](/integrations/mqtt/#single-component-discovery-payload) it wants to set up. - -The shared options are at root level of the JSON message and must include the `device` mapping (abbreviated as `dev`) and `origin` mapping (abbreviated as `o`). The `device` and `origin` mappings are required options and cannot be overridden at entity/component level. - -Supported shared options are: - -- The `availability` [options](/integrations/mqtt/#using-availability-topics). -- The `origin` (required) [options](/integrations/mqtt/#adding-information-about-the-origin-af-a-discovery-message) -- `command_topic` -- `state_topic` -- `qos` -- `encoding` - -The component specific options are placed as mappings under the `components` key (abbreviated as `cmp`) like: - -```json -{ - "dev": { - "ids": "ea334450945afc", - "name": "Kitchen", - "mf": "Bla electronics", - "mdl": "xya", - "sw": "1.0", - "sn": "ea334450945afc", - "hw": "1.0rev2", - }, - "o": { - "name":"bla2mqtt", - "sw": "2.1", - "url": "https://bla2mqtt.example.com/support", - }, - "cmp": { - "some_unique_component_id1": { - "platform": "sensor", - "device_class":"temperature", - "unit_of_measurement":"°C", - "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", - "unique_id":"temp01ae_t", - }, - "some_unique_id2": { - "platform": "sensor", - "device_class":"humidity", - "unit_of_measurement":"%", - "value_template":"{% raw %}{{ value_json.humidity}}{% endraw %}", - "unique_id":"temp01ae_h", - } - }, - "state_topic":"sensorBedroom/state", - "qos": 2, -} -``` - -The components id's under the `components` (`cmp`) key should are used as part of the discovery identification. A `platform` config option is required for each component config that is added to identify the component platform. - -To remove the components, publish an empty string to the discovery topic. This will remove the component and clear the published discovery payload. It will also remove the device entry if there are no further references to it. - -An empty config can be published as an update to remove a single component from the device discovery. Note that adding the platform option is still required. - -```json -{ - "dev": { - "ids": "ea334450945afc", - "name": "Kitchen", - "mf": "Bla electronics", - "mdl": "xya", - "sw": "1.0", - "sn": "ea334450945afc", - "hw": "1.0rev2", - }, - "o": { - "name":"bla2mqtt", - "sw": "2.1", - "url": "https://bla2mqtt.example.com/support", - }, - "cmp": { - "some_unique_component_id1": { - "platform": "sensor", - "device_class":"temperature", - "unit_of_measurement":"°C", - "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", - "unique_id":"temp01ae_t", - }, - "some_unique_id2": { - "platform": "sensor", - } - }, - "state_topic":"sensorBedroom/state", - "qos": 2, -} -``` - -This will explicitly cleanup the humidity sensor and its entry. - -After the component has been removed an other update should be send where the part for the humidity sensor is left away: - -```json -{ - "dev": { - "ids": "ea334450945afc", - "name": "Kitchen", - "mf": "Bla electronics", - "mdl": "xya", - "sw": "1.0", - "sn": "ea334450945afc", - "hw": "1.0rev2", - }, - "o": { - "name":"bla2mqtt", - "sw": "2.1", - "url": "https://bla2mqtt.example.com/support", - }, - "cmp": { - "some_unique_component_id1": { - "platform": "sensor", - "device_class":"temperature", - "unit_of_measurement":"°C", - "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", - "unique_id":"temp01ae_t", - } - }, - "state_topic":"sensorBedroom/state", - "qos": 2, -} -``` - -
- -A component config part in a device discovery payload must have the `platform` option set with the name of the `component` and also must have at least one component specific config option. - -
- -##### Migration from single component to device based discovery - -To allow a smooth migration from single component discovery to device based discovery, the `discovery_id` for an `mqtt` item must be the same. Migration is only supported from the single component discovery, if has **both** a `node_id` and an `object_id`. After migration the `object_id` moves inside the discovery payload and the previous `node_id` becomes the new `object_id` of the device discovery topic. Note that is also is supported to migrate back. - -**Example (device automation):** -Discovery topic single: `homeassistant/device_automation/0AFFD2/bla/config` -Discovery id: `0AFFD2 bla` *(both `0AFFD2` and `bla` from the discovery topic)* -Discovery payload single: - -```json -{ - "automation_type": "trigger", - "device": { - "identifiers": [ - "0AFFD2" - ] - }, - "o": { - "name": "foobar" - }, - "payload": "short_press", - "topic": "foobar/triggers/button1", - "type": "button_short_press", - "subtype": "button_1" -} -``` - -**Device discovery with migration support:** -Discovery topic device: `homeassistant/device/0AFFD2/config` -Discovery id: `0AFFD2 bla` *(`0AFFD2`from discovery topic, `bla`: The key under `cmp` in the discovery payload)* -Discovery payload device: - -```json -{ - "device": { - "identifiers": [ - "0AFFD2" - ] - }, - "o": { - "name": "foobar" - }, - "cmp": { - "bla": { - "automation_type": "trigger", - "payload": "short_press", - "topic": "foobar/triggers/button1", - "type": "button_short_press", - "subtype": "button_1", - "platform": "device_automation" - } - } -} -``` - -If the new device discovery payload has the same `discovery_id` and comes after the single discovery payload. Home Assistant will publish `None` (retained) to the single discovery payload to remove it. This avoids rediscovery when Home Assistant restarts. - -#### Single component discovery payload - -The `` part in the discovery topic must be one of the supported MQTT platforms. -The options in the payload are only used to set up one specific component. If there are more components, more discovery payloads need to be sent for the other components, and it is then recommended to use [device based discovery](/integrations/mqtt/#device-discovery-payload) instead. - -Example discovery payload: - -```json -{ - "dev": { - "ids": "ea334450945afc", - "name": "Kitchen", - "mf": "Bla electronics", - "mdl": "xya", - "sw": "1.0", - "sn": "ea334450945afc", - "hw": "1.0rev2", - }, - "o": { - "name":"bla2mqtt", - "sw": "2.1", - "url": "https://bla2mqtt.example.com/support", - }, - "device_class":"temperature", - "unit_of_measurement":"°C", - "value_template":"{% raw %}{{ value_json.temperature}}{% endraw %}", - "unique_id":"temp01ae_t", - "state_topic":"sensorBedroom/state", - "qos": 2, -} - -To remove the component publish an empty string to the discovery topic. This will remove the component and clear the published discovery payload. It will also remove the device entry if there are no further references to it. - -For more examples [see](/integrations/mqtt/#discovery-examples-with-component-discovery). - #### Discovery payload The payload must be a serialized JSON dictionary and will be checked like an entry in your {% term "`configuration.yaml`" %} file if a new device is added, with the exception that unknown configuration keys are allowed but ignored. This means that missing variables will be filled with the integration's default values. All configuration variables which are *required* must be present in the payload. The reason for allowing unknown documentation keys is allow some backwards compatibility, software generating MQTT discovery messages can then be used with older Home Assistant versions which will simply ignore new features. @@ -559,8 +331,6 @@ support_url: description: Support URL of the application that supplies the discovered MQTT item. {% endconfiguration_basic %} -#### Supported abbreviations in MQTT discovery messages - {% details "Supported abbreviations" %} ```txt @@ -597,7 +367,6 @@ support_url: 'cmd_on_tpl': 'command_on_template', 'cmd_t': 'command_topic', 'cmd_tpl': 'command_template', - 'cmp': 'components', 'cod_arm_req': 'code_arm_required', 'cod_dis_req': 'code_disarm_required', 'cod_trig_req': 'code_trigger_required', @@ -846,29 +615,7 @@ support_url: {% enddetails %} -#### Adding information about the origin af a discovery message - -It is encouraged to add additional information about the origin that supplies MQTT entities via MQTT discovery by adding the `origin` option (can be abbreviated to `o`) to the discovery payload. For device-based discovery, adding shared `origin` info is required. Note that these options also support abbreviations. The origin information will be in the core event log when an item is discovered or updated. - -{% configuration_basic %} -name: - description: The name of the application that is the origin the discovered MQTT item. This option is required. -sw_version: - description: Software version of the application that supplies the discovered MQTT item. -support_url: - description: Support URL of the application that supplies the discovered MQTT item. -{% endconfiguration_basic %} - -{% details "Supported abbreviations for origin info" %} - -```txt - 'name': 'name', - 'sw': 'sw_version', - 'url': 'support_url', -``` -{% enddetails %} - -### Discovery messages en availability +### How to use discovery messages When MQTT discovery is set up, and a device or service sends a discovery message, an MQTT entity, tag, or device automation will be set up directly after receiving the message. @@ -960,23 +707,47 @@ availability_template: description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`." required: false type: template -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline {% endconfiguration %} {% enddetails %} -### Discovery examples +### Support by third-party tools -### Discovery examples with component discovery +The following software has built-in support for MQTT discovery: + +- [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) +- [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) +- [ble2mqtt](https://github.com/devbis/ble2mqtt) +- [digitalstrom-mqtt](https://github.com/gaetancollaud/digitalstrom-mqtt) +- [ebusd](https://github.com/john30/ebusd) +- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) +- [EMS-ESP32 (and EMS-ESP)](https://github.com/emsesp/EMS-ESP32) +- [ESPHome](https://esphome.io) +- [ESPurna](https://github.com/xoseperez/espurna) +- [go-iotdevice](https://github.com/koestler/go-iotdevice) +- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) +- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) +- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) +- [MyElectricalData](https://github.com/MyElectricalData/myelectricaldata_import#english) +- [Nuki Hub](https://github.com/technyon/nuki_hub) +- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/articles/12947926779409-MQTT-support), [more info](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626) +- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) +- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) +- [SmartHome](https://github.com/roncoa/SmartHome) +- [SpeedTest-CLI MQTT](https://github.com/adorobis/speedtest-CLI2mqtt) +- [SwitchBot-MQTT-BLE-ESP32](https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32) +- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) +- [TeddyCloud](https://github.com/toniebox-reverse-engineering/teddycloud) +- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) +- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) +- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) +- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) +- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) +- [Zehnder Comfoair RS232 MQTT](https://github.com/adorobis/hacomfoairmqtt) +- [Zigbee2MQTT](https://github.com/koenkk/zigbee2mqtt) +- [OTGateway](https://github.com/Laxilef/OTGateway) + +### Discovery examples #### Motion detection (binary sensor) @@ -1228,46 +999,6 @@ The entity id is automatically generated from the entity's name. All MQTT integr In the example above, the entity_id will be `sensor.my_super_device` instead of `sensor.device1`. -### Support by third-party tools - -The following software has built-in support for MQTT discovery: - -### Support by third-party tools - -The following software has built-in support for MQTT discovery: - -- [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) -- [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) -- [ble2mqtt](https://github.com/devbis/ble2mqtt) -- [digitalstrom-mqtt](https://github.com/gaetancollaud/digitalstrom-mqtt) -- [ebusd](https://github.com/john30/ebusd) -- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) -- [EMS-ESP32 (and EMS-ESP)](https://github.com/emsesp/EMS-ESP32) -- [ESPHome](https://esphome.io) -- [ESPurna](https://github.com/xoseperez/espurna) -- [go-iotdevice](https://github.com/koestler/go-iotdevice) -- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) -- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) -- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) -- [MyElectricalData](https://github.com/MyElectricalData/myelectricaldata_import#english) -- [Nuki Hub](https://github.com/technyon/nuki_hub) -- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/articles/12947926779409-MQTT-support), [more info](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626) -- [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) -- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) -- [SmartHome](https://github.com/roncoa/SmartHome) -- [SpeedTest-CLI MQTT](https://github.com/adorobis/speedtest-CLI2mqtt) -- [SwitchBot-MQTT-BLE-ESP32](https://github.com/devWaves/SwitchBot-MQTT-BLE-ESP32) -- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) -- [TeddyCloud](https://github.com/toniebox-reverse-engineering/teddycloud) -- [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) -- [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) -- [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) -- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) -- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) -- [Zehnder Comfoair RS232 MQTT](https://github.com/adorobis/hacomfoairmqtt) -- [Zigbee2MQTT](https://github.com/koenkk/zigbee2mqtt) -- [OTGateway](https://github.com/Laxilef/OTGateway) - ## Manual configured MQTT items For most integrations, it is also possible to manually set up MQTT items in {% term "`configuration.yaml`" %}. Read more [about configuration in YAML](/docs/configuration/yaml). diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown index 99fa6f46279..ca7c58e4019 100644 --- a/source/_integrations/number.mqtt.markdown +++ b/source/_integrations/number.mqtt.markdown @@ -170,10 +170,6 @@ payload_reset: required: false type: string default: '"None"' -platform: - description: Must be `number`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown index 00451efdbfa..a2e7212481c 100644 --- a/source/_integrations/scene.mqtt.markdown +++ b/source/_integrations/scene.mqtt.markdown @@ -161,10 +161,6 @@ payload_on: required: false type: string default: "ON" -platform: - description: Must be `scene`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown index adf41dadf6f..5ed057fbe40 100644 --- a/source/_integrations/select.mqtt.markdown +++ b/source/_integrations/select.mqtt.markdown @@ -162,10 +162,6 @@ options: description: List of options that can be selected. An empty list or a list with a single item is allowed. required: true type: list -platform: - description: Must be `select`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index 9e4fe67e9d7..d7efb8ebddc 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -171,10 +171,6 @@ payload_not_available: required: false type: string default: offline -platform: - description: Must be `sensor`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string suggested_display_precision: description: The number of decimals which should be used in the sensor's state after rounding. required: false diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown index 322457414d6..f9887db48d4 100644 --- a/source/_integrations/siren.mqtt.markdown +++ b/source/_integrations/siren.mqtt.markdown @@ -190,10 +190,6 @@ payload_on: required: false type: string default: "ON" -platform: - description: Must be `siren`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown index 4ae3fc7f3e6..267ffcf1ef3 100644 --- a/source/_integrations/switch.mqtt.markdown +++ b/source/_integrations/switch.mqtt.markdown @@ -181,10 +181,6 @@ payload_on: required: false type: string default: "ON" -platform: - description: Must be `switch`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/text.mqtt.markdown b/source/_integrations/text.mqtt.markdown index 1d094f93fd2..28154b23ab7 100644 --- a/source/_integrations/text.mqtt.markdown +++ b/source/_integrations/text.mqtt.markdown @@ -165,10 +165,6 @@ pattern: description: A valid regular expression the text being set or received must match with. required: false type: string -platform: - description: Must be `text`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown index 3a400aeb227..9c2fa161468 100644 --- a/source/_integrations/update.mqtt.markdown +++ b/source/_integrations/update.mqtt.markdown @@ -166,10 +166,6 @@ payload_install: description: The MQTT payload to start installing process. required: false type: string -platform: - description: Must be `update`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index ea9f2116db3..1a902f5a6f1 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -170,10 +170,6 @@ payload_stop: required: false type: string default: stop -platform: - description: Must be `vacuum`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false diff --git a/source/_integrations/valve.mqtt.markdown b/source/_integrations/valve.mqtt.markdown index ab52e35c789..d1c05dab534 100644 --- a/source/_integrations/valve.mqtt.markdown +++ b/source/_integrations/valve.mqtt.markdown @@ -218,10 +218,6 @@ payload_stop: description: The command payload that stops the valve. When not configured, the valve will not support the `valve.stop` service. required: false type: string -platform: - description: Must be `valve`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string position_closed: description: Number which represents closed position. The valve's position will be scaled to the(`position_closed`...`position_open`) range when a service is called and scaled back when a value is received. required: false diff --git a/source/_integrations/water_heater.mqtt.markdown b/source/_integrations/water_heater.mqtt.markdown index d66e6388d86..884c1252c18 100644 --- a/source/_integrations/water_heater.mqtt.markdown +++ b/source/_integrations/water_heater.mqtt.markdown @@ -209,10 +209,6 @@ payload_on: required: false type: string default: "ON" -platform: - description: Must be `water_heater`. Only allowed and required in [MQTT auto discovery device messages](/integrations/mqtt/#device-discovery-payload). - required: true - type: string power_command_template: description: A template to render the value sent to the `power_command_topic` with. The `value` parameter is the payload set for `payload_on` or `payload_off`. required: false