Date: Wed, 29 May 2024 22:59:47 -0400
Subject: [PATCH 001/351] Update Google AI to allow HASS access (#32999)
---
...google_generative_ai_conversation.markdown | 22 ++++++++++++++-----
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown
index a4cafecb0d23..96b703728d28 100644
--- a/source/_integrations/google_generative_ai_conversation.markdown
+++ b/source/_integrations/google_generative_ai_conversation.markdown
@@ -14,7 +14,7 @@ ha_integration_type: service
The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://ai.google.dev/) in Home Assistant. It can optionally be allowed to control Home Assistant.
-It can only query information that has been provided by Home Assistant in the prompt. To be able to answer questions about your home, Home Assistant will need to provide Google Generative AI with the details of your home, which includes areas, devices, and their states. This prompt can be customized to adjust the provided information and how the AI should respond.
+Controlling Home Assistant is done by providing the AI access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}. The AI is able to provide you information about your devices and control them.
This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger).
@@ -33,14 +33,24 @@ Comparison of the plans is available [here](https://ai.google.dev/pricing). The
{% include integrations/option_flow.md %}
{% configuration_basic %}
-Model:
- description: Model used to generate response.
+
+Instructions:
+ description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
Control Home Assistant:
description: If the model is allowed to interact with Home Assistant
-Prompt template:
- description: The starting text for the AI language model to generate new text from. This text can include information about your Home Assistant instance, devices, and areas and is written using [Home Assistant Templating](/docs/configuration/templating/).
+Recommended settings:
+ description: If enabled, the recommended model and settings are chosen.
+
+{% endconfiguration_basic %}
+
+If you choose to not use the recommended settings, you can configure the following options:
+
+{% configuration_basic %}
+
+Model:
+ description: Model used to generate response.
Temperature:
description: Creativity allowed in the responses. Higher values produce a more random and varied response. A temperature of zero will be deterministic.
@@ -66,7 +76,7 @@ Safety settings:
This service isn't tied to any integration entry, so it won't use the model, prompt, or any of the other settings in your options. If you only want to pass text, you should use the `conversation.process` service.
-
+
Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally images.
From 9efe3dabeaeed13c44c1c380843d0cfdd294450e Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Wed, 29 May 2024 23:06:01 -0400
Subject: [PATCH 002/351] Update OpenAI text (#33001)
---
.../openai_conversation.markdown | 22 +++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown
index 89896eccdece..b33f4dc112f7 100644
--- a/source/_integrations/openai_conversation.markdown
+++ b/source/_integrations/openai_conversation.markdown
@@ -16,7 +16,9 @@ ha_platforms:
The OpenAI integration adds a conversation agent powered by [OpenAI](https://www.openai.com) in Home Assistant.
-This conversation agent is unable to control your house. The OpenAI conversation agent can be used in automations, but not as a [sentence trigger](/docs/automation/trigger/#sentence-trigger). It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide OpenAI with the details of your house, which include areas, devices and their states.
+Controlling Home Assistant is done by providing the AI access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}. The AI is able to provide you information about your devices and control them.
+
+This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger).
This integration requires an API key to use, [which you can generate here.](https://platform.openai.com/account/api-keys). This is a paid service, we advise you to monitor your costs in the [OpenAI portal](https://platform.openai.com/account) closely and configure [usage limits](https://platform.openai.com/account/billing/limits) to avoid unwanted costs associated with using the service.
@@ -33,10 +35,22 @@ The OpenAI key is used to authenticate requests to the OpenAI API. To generate a
{% include integrations/option_flow.md %}
{% configuration_basic %}
-Prompt Template:
- description: The starting text for the AI language model to generate new text from. This text can include information about your Home Assistant instance, devices, and areas and is written using [Home Assistant Templating](/docs/configuration/templating/).
+Instructions:
+ description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
+
+Control Home Assistant:
+ description: If the model is allowed to interact with Home Assistant
+
+Recommended settings:
+ description: If enabled, the recommended model and settings are chosen.
+
+{% endconfiguration_basic %}
+
+If you choose to not use the recommended settings, you can configure the following options:
+
+{% configuration_basic %}
-Completion Model:
+Model:
description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3 Documentation](https://platform.openai.com/docs/models/gpt-3), [OpenAI GPT-3.5 Documentation](https://platform.openai.com/docs/models/gpt-3-5), or [OpenAI GPT-4 and GPT-4 Turbo Documentation](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo). The default is "gpt-3.5-turbo".
Maximum Tokens to Return in Response:
From 984de61865cd383dbfac994a457a8c8d08918540 Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Sun, 2 Jun 2024 09:32:59 -0400
Subject: [PATCH 003/351] Add two new options to intent_script (#33009)
Co-authored-by: Franck Nijhof
---
source/_integrations/intent_script.markdown | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown
index 9cf1b9f68178..b12edae380a1 100644
--- a/source/_integrations/intent_script.markdown
+++ b/source/_integrations/intent_script.markdown
@@ -17,6 +17,7 @@ The `intent_script` integration allows users to configure actions and responses
# Example configuration.yaml entry
intent_script:
GetTemperature: # Intent type
+ description: Return the temperature and notify the user
speech:
text: We have {{ states('sensor.temperature') }} degrees
action:
@@ -35,6 +36,14 @@ intent:
required: true
type: map
keys:
+ description:
+ description: Description of the intent.
+ required: false
+ type: string
+ platforms:
+ description: List of domains that the entity supports.
+ required: false
+ type: list
action:
description: Defines an action to run to intents.
required: false
From c633ee08d87799678798e80effa92d7fda423bd1 Mon Sep 17 00:00:00 2001
From: Maciej Bieniek
Date: Mon, 3 Jun 2024 11:45:14 +0200
Subject: [PATCH 004/351] Add information about the new supported sensor
(#33043)
---
source/_integrations/nam.markdown | 1 +
1 file changed, 1 insertion(+)
diff --git a/source/_integrations/nam.markdown b/source/_integrations/nam.markdown
index dec2f704529b..fcce7ede591e 100644
--- a/source/_integrations/nam.markdown
+++ b/source/_integrations/nam.markdown
@@ -26,6 +26,7 @@ The integration currently has support for the following sensors:
- BMP180
- BMP280
- DHT22
+- DS18B20
- HECA
- MH-Z14A
- PMSx003
From d0d222c6cf39702efbd80de09d12170886cbbd2b Mon Sep 17 00:00:00 2001
From: G Johansson
Date: Mon, 3 Jun 2024 11:54:29 +0200
Subject: [PATCH 005/351] Add Tag entities (#32193)
* Tag entities
* Tiny tweaks
* tag entity
* wording
* Fixes
* Fix
* Update source/_integrations/tag.markdown
* Update source/_integrations/tag.markdown
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---
source/_integrations/tag.markdown | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/source/_integrations/tag.markdown b/source/_integrations/tag.markdown
index 15d2aa37d6b3..f74e3d8d8d12 100644
--- a/source/_integrations/tag.markdown
+++ b/source/_integrations/tag.markdown
@@ -9,6 +9,8 @@ ha_codeowners:
- '@dmulcahey'
ha_domain: tag
ha_quality_scale: internal
+ha_platforms:
+ - event
ha_integration_type: integration
---
@@ -39,6 +41,17 @@ Home Assistant has a dedicated panel that allows you to manage your tags. You ca

+## Entities
+
+Every card automatically creates an `tag` entity. This is useful for automations or for displaying on dashboards to see when the card was last scanned.
+
+State shows the time when the card was last scanned in datetime string format. For example, `2013-09-17T07:32:51.095+00:00`
+
+### Attributes
+
+- **Tag ID**: identification as set during creation of the tag.
+- **Last scanned by device ID**: Which device did scan the tag last time, useful in automations for doing different things depending on which device scanned the tag.
+
## Building an RFID jukebox
One of the most fun applications of tags is to pick music in your living room. To make this super easy, you can use the below automation:
From 08aa60cac581dcbf51aa19b1020c8cb571c350f8 Mon Sep 17 00:00:00 2001
From: Jan-Philipp Benecke
Date: Mon, 3 Jun 2024 17:30:54 +0200
Subject: [PATCH 006/351] Rename Discovergy to inexogy (#33056)
---
source/_integrations/discovergy.markdown | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/source/_integrations/discovergy.markdown b/source/_integrations/discovergy.markdown
index 80c55ce75e5b..e628c03aad15 100644
--- a/source/_integrations/discovergy.markdown
+++ b/source/_integrations/discovergy.markdown
@@ -1,6 +1,6 @@
---
-title: Discovergy
-description: Instructions on how to integrate Discovergy within Home Assistant.
+title: inexogy
+description: Instructions on how to integrate inexogy within Home Assistant.
ha_category:
- Energy
- Sensor
@@ -16,8 +16,8 @@ ha_platforms:
ha_integration_type: service
---
-The **Discovergy** {% term integration %} allows users to integrate their [Discovergy](https://discovergy.com/) smart meters into Home Assistant.
-The integration is using the [official REST API](https://api.discovergy.com/docs/#/) by Discovergy.
+The **inexogy** {% term integration %} allows users to integrate their [inexogy](https://inexogy.com/) smart meters into Home Assistant.
+The integration is using the [official REST API](https://api.inexogy.com/docs/#/) by inexogy.
The integration supports the following meters within Home Assistant:
@@ -26,7 +26,7 @@ The integration supports the following meters within Home Assistant:
## Prerequisites
-For this {% term integration %}, you need a Discovergy smart meter, a [Discovergy account](https://my.discovergy.com/) and your credentials.
+For this {% term integration %}, you need a inexogy smart meter, a [inexogy account](https://my.inexogy.com/) and your credentials.
{% include integrations/config_flow.md %}
From e439e76e3321a32f59aaf25dfbb573168c62ce5f Mon Sep 17 00:00:00 2001
From: Jan Bouwhuis
Date: Mon, 3 Jun 2024 20:50:35 +0200
Subject: [PATCH 007/351] Migrate incomfort integration to config flow (#33040)
---
source/_integrations/incomfort.markdown | 46 ++-----------------------
1 file changed, 2 insertions(+), 44 deletions(-)
diff --git a/source/_integrations/incomfort.markdown b/source/_integrations/incomfort.markdown
index f6183a1b9ad3..a23413b55610 100644
--- a/source/_integrations/incomfort.markdown
+++ b/source/_integrations/incomfort.markdown
@@ -17,9 +17,7 @@ ha_platforms:
- sensor
- water_heater
ha_integration_type: integration
-related:
- - docs: /docs/configuration/
- title: Configuration file
+ha_config_flow: true
---
The `incomfort` {% term integration %} links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it.
@@ -38,50 +36,10 @@ In addition, there is a **Sensor** for each of CV pressure, CV temperature, and
Any room thermostats (there can be 0, 1 or 2) are represented as **Climate** devices. They will report the thermostat's `temperature` (setpoint, target temperature) and `current_temperature` and the setpoint can be changed.
-## Configuration
-
-To set up this integration, add one of the following to your {% term "`configuration.yaml`" %} file.
-{% include integrations/restart_ha_after_config_inclusion.md %}
+{% include integrations/config_flow.md %}
The hub does not have to be in the same network as HA, but must be reachable via port 80/HTTP.
-### Older gateways
-
-Older gateways do not require user authentication:
-
-```yaml
-# Example configuration.yaml entry, older firmware with no user credentials
-incomfort:
- host: IP_ADDRESS
-```
-
-### Newer gateways
-
-Alternatively, if a **username** & **password** is printed on the back of the gateway:
-
-```yaml
-# Example configuration.yaml entry, newer firmware with user credentials
-incomfort:
- host: IP_ADDRESS
- username: USERNAME
- password: PASSWORD
-```
-
-{% configuration %}
-host:
- description: The hostname/IP address of the Lan2RF gateway.
- required: true
- type: string
-username:
- description: "The username of the Lan2RF gateway, if any. Most likely: `admin`."
- required: inclusive
- type: string
-password:
- description: "The password of the Lan2RF gateway, if any. Most likely: `intergas`."
- required: inclusive
- type: string
-{% endconfiguration %}
-
## Automation
To send an alert if the CV pressure is too low or too high, consider the following example:
From d8dff2be2e384580325f98c7def0621c21820957 Mon Sep 17 00:00:00 2001
From: Joost Lekkerkerker
Date: Mon, 3 Jun 2024 21:38:40 +0200
Subject: [PATCH 008/351] Add firmware note to Airgradient (#33057)
* Add firmware note to Airgradient
* Update source/_integrations/airgradient.markdown
Co-authored-by: Franck Nijhof
---------
Co-authored-by: Franck Nijhof
---
source/_integrations/airgradient.markdown | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/source/_integrations/airgradient.markdown b/source/_integrations/airgradient.markdown
index b9ef23b466c8..e387d2316443 100644
--- a/source/_integrations/airgradient.markdown
+++ b/source/_integrations/airgradient.markdown
@@ -20,6 +20,12 @@ ha_zeroconf: true
The Airgradient integration will fetch data from your [Airgradient devices](https://www.airgradient.com/).
+
+
+In order for the device to be set up or discovered by Home Assistant, the firmware version should be at least 3.1.1.
+
+
+
{% include integrations/config_flow.md %}
## Available sensors
From ba80f8b73ac22fbfdb328cfd6cdad475e7aa187e Mon Sep 17 00:00:00 2001
From: Jan Bouwhuis
Date: Mon, 3 Jun 2024 23:02:21 +0200
Subject: [PATCH 009/351] 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 5adc049e5b78..eaea1448d9c2 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 d7b1a7a18483..5b64bd29f9bd 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 b6a2091a02bf..e3393dc32296 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 ebd9dda0b02a..fc8bcc30881d 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 7fa61f2cba78..0742270e5759 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 db2858cdbcb6..1ad3a038e7bd 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 6d6f096584f8..39253b0aed19 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 1cc576c440f4..2af02cfcd24f 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 0deaf9821171..c50b9e6f47de 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 8937a0600633..315bdc458280 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 bfd832fcdafc..604a68376dcf 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 36a8c56f9d1a..862ee9531b5b 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 ea41e53a0738..11bee3cbaa68 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
+
+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 with component discovery
+### 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 99fa6f462792..ca7c58e4019f 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 00451efdbfa2..a2e7212481c9 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 adf41dadf6fe..5ed057fbe405 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 9e4fe67e9d74..d7efb8ebddc0 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 322457414d6a..f9887db48d44 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 4ae3fc7f3e64..267ffcf1ef3e 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 1d094f93fd2c..28154b23ab7e 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 3a400aeb227b..9c2fa1614685 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 ea9f2116db3e..1a902f5a6f11 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 ab52e35c7894..d1c05dab5342 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 d66e6388d869..884c1252c186 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
From 1c3aa2f129c0178c27289d141e413ad58bfc82f0 Mon Sep 17 00:00:00 2001
From: Joost Lekkerkerker
Date: Tue, 4 Jun 2024 06:01:54 +0200
Subject: [PATCH 010/351] Add config flow to media extractor (#32590)
* Add config flow to media extractor
* Update source/_integrations/media_extractor.markdown
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
* Update source/_integrations/media_extractor.markdown
* Update source/_integrations/media_extractor.markdown
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---
source/_integrations/media_extractor.markdown | 65 +++++--------------
1 file changed, 16 insertions(+), 49 deletions(-)
diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown
index b6a2c9d253ba..dbc3fd1661da 100644
--- a/source/_integrations/media_extractor.markdown
+++ b/source/_integrations/media_extractor.markdown
@@ -15,61 +15,15 @@ related:
title: Configuration file
---
-The `media_extractor` {% term integration %} gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly.
+The Media extractor {% term integration %} gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly.
Media extractor doesn't transcode streams, it just tries to find a stream that matches the requested query.
-To use the media extractor service in your installation, add the following to your {% term "`configuration.yaml`" %} file.
-{% include integrations/restart_ha_after_config_inclusion.md %}
-
-```yaml
-# Example configuration.yaml entry
-media_extractor:
-```
-
-{% configuration %}
-default_query:
- description: Set default stream query for all devices.
- required: false
- default: best
- type: string
-customize:
- description: Set entity specific values.
- required: false
- type: list
-{% endconfiguration %}
-
-```yaml
-# Example configuration.yaml entry
-media_extractor:
- default_query: worst
- customize:
- media_player.my_sonos:
- video: bestvideo
- music: bestaudio[ext=mp3]
-```
-
-This configuration sets query for all service calls like to 'bestaudio' with the mp3 extension:
-
-```yaml
-entity_id: media_player.my_sonos
-media_content_id: https://soundcloud.com/bruttoband/brutto-11
-media_content_type: music
-```
+{% include integrations/config_flow.md %}
-Query examples with explanations:
-
-- **bestvideo**: Best video only stream
-- **best**: Best video + audio stream
-- **bestaudio[ext=m4a]**: Best audio stream with m4a extension
-- **worst**: Worst video + audio stream
-- **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best m4a audio, otherwise best ogg audio and only then any best audio
-
-More info about queries can be found [here](https://github.com/ytdl-org/youtube-dl#format-selection).
-
-### Use the service
+### Play media service
Navigate to the **Services** tab inside **Developer Tools**. From the "Service" dropdown menu select `media_extractor.play_media` and then press the "Fill Example Data" button at the bottom of the page. Use the "Entity ID" dropdown to select your media player and then press the **Call Service** button.
@@ -90,6 +44,19 @@ There is also a service that will directly return the URL in the response of the
| `url` | no | The URL of the media to extract. |
| `format_query` | yes | The query that will be used to select the right media. |
+### Format query
+
+The query can be used to select the right media.
+Query examples with explanations:
+
+- **bestvideo**: Best video-only stream
+- **best**: Best video + audio stream
+- **bestaudio[ext=m4a]**: Best audio stream in M4A format
+- **worst**: Worst video + audio stream
+- **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best M4A audio, otherwise best OGG audio and only then any best audio
+
+More info about queries can be found [here](https://github.com/ytdl-org/youtube-dl#format-selection).
+
### Cookies
Some supported video services provide a better experience when you are logged in. For example, if you use Twitch Turbo or are subscribed to a Twitch streamer, logging in prevents the video stream from showing an "An ad is currently playing. Come back after the break." message until the ad is over. Other examples are private or purchased YouTube videos which you can only watch while logged in.
From b7da031fd916ec1f5e1e5de114a06e1082b6e518 Mon Sep 17 00:00:00 2001
From: Diogo Gomes
Date: Tue, 4 Jun 2024 05:44:21 +0100
Subject: [PATCH 011/351] Add new sensors to V2C (#32668)
* Add new sensors
* Update source/_integrations/v2c.markdown
Co-authored-by: Franck Nijhof
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
Co-authored-by: Franck Nijhof
---
source/_integrations/v2c.markdown | 2 ++
1 file changed, 2 insertions(+)
diff --git a/source/_integrations/v2c.markdown b/source/_integrations/v2c.markdown
index d854b5e4c5d0..ce99158aff46 100644
--- a/source/_integrations/v2c.markdown
+++ b/source/_integrations/v2c.markdown
@@ -47,8 +47,10 @@ The V2C integration currently exposes the following sensors:
- charge_power: Current power charging your vehicle.
- charge_energy: Energy transferred to your car during the current charging session.
- charge_time: Time spent in the current charging session.
+- meter_error: Information from the EVSE on errors associated with the dynamic power control mode. It can be ignored when this mode is not used.
- house_power: Power consumed by your household. This data is available if you installed and configured the settings in the V2C app for the CT clamp that was supplied with your EVSE).
- fv_power: Power produced by your photovoltaic system. This data is available if you installed and configured the settings in the V2C app for the CT clamp that was supplied with your EVSE).
+- battery_power: Power directed to a home battery. This data is available if you installed and configured the settings in the V2C app for the CT clamp that was supplied with your EVSE).
## Number
From 204fc9055fac81aeeb39e6b0031fc0ee0ac5c14e Mon Sep 17 00:00:00 2001
From: Ron Weikamp <15732230+ronweikamp@users.noreply.github.com>
Date: Tue, 4 Jun 2024 07:04:14 +0200
Subject: [PATCH 012/351] Introduce new max_sub_interval config for integral
sensor (#31453)
* Introduce new maxdt config for integral sensor
* Use time_period yaml config type validation for max_dt
* Rename max_dt to max_age
* Rename to max_sub_interval
* Add implication at least every time update of the integral
* Undo removal of accuracy remarks
* Apply suggestions from code review
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
* Apply suggestions from code review
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---
source/_integrations/integration.markdown | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown
index 7bf9d3e400a7..74430c55cc6a 100644
--- a/source/_integrations/integration.markdown
+++ b/source/_integrations/integration.markdown
@@ -22,10 +22,8 @@ This integrations provides the [Riemann sum](https://en.wikipedia.org/wiki/Riema
of the values provided by a source sensor. The Riemann sum is an approximation
of an **integral** by a finite sum.
-The integration sensors are updated upon changes of the **source**. Fast
-sampling source sensors provide more accurate results. In this implementation, the
-default is the Trapezoidal method, but Left and Right methods can optionally
-be used.
+The integration sensors are updated whenever the source changes and, optionally, based on a predefined
+time interval. Source sensors with higher sampling frequency provide more accurate results.
{% include integrations/config_flow.md %}
{% configuration_basic %}
@@ -41,6 +39,9 @@ Metric prefix:
description: Metric unit to prefix the integration result.
Integration time:
description: SI unit of time to integrate over.
+Max sub-interval:
+ description: Applies time-based integration if the source did not change for this duration. This implies that at least every `max sub-interval`, the integral is updated. If you don't want time-based updates, enter 0.
+
{% endconfiguration_basic %}
@@ -91,17 +92,19 @@ method:
required: false
type: string
default: trapezoidal
+max_sub_interval:
+ description: "Applies time-based integration if the source did not change for this duration. This implies that at least every `max sub-interval`, the integral is updated. If you don't want time-based updates, enter 0."
+ required: false
+ type: time
{% endconfiguration %}
-In case you expect that your source sensor will provide several subsequent values that are equal, you should opt for the `left` method to get accurate readings.
-
The unit of `source` together with `unit_prefix` and `unit_time` is used to generate a unit for the integral product (e.g. a source in `W` with prefix `k` and time `h` would result in `kWh`). Note that `unit_prefix` and `unit_time` are _also_ relevant to the Riemann sum calculation.
## Integration method
-Riemann Sum is a approximation of an integral by a finite sum and is therefore intrinsically inaccurate, nonetheless, depending on the method used, values can be more or less accurate.
+The Riemann Sum is an approximation of an integral by a finite sum and is therefore intrinsically inaccurate. Nonetheless, depending on the method used, values can be more or less accurate.
-Regardless of the method used the integration will be more accurate if the source updates more often. If your source is not updated, neither will the Riemann Sum sensor, as all this integration does is calculate the next step in the event of a source update.
+The integration method defines how to calculate the area under the source sensor when it changes. Regardless of the method used, the integration will be more accurate if the source updates more often. The config `max_sub_interval` can be used to trigger integration when the source sensor is constant.
### Trapezoidal
@@ -128,6 +131,8 @@ sensor:
name: energy_spent
unit_prefix: k
round: 2
+ max_sub_interval:
+ minutes: 5
```
This configuration will provide you with `sensor.energy_spent` which will have your energy in kWh, as a `device_class` of `energy`.
From bd78abe76f3dfc189408b6316058003010779540 Mon Sep 17 00:00:00 2001
From: starkillerOG
Date: Tue, 4 Jun 2024 08:02:03 +0200
Subject: [PATCH 013/351] Update Status LED to Doorbell LED (#33045)
---
source/_integrations/reolink.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index e9d9ac250fa8..c0df5d14178a 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -165,7 +165,7 @@ Depending on the supported features of the camera, select entities are added for
- Play quick reply message
- Auto quick reply message
- Auto track method (Digital, Digital first, Pan/Tilt first)
-- Status LED (Doorbell only: Stay off, Auto, Auto & always on at night)
+- Doorbell LED (Stay off, Auto, Auto & always on at night)
**PTZ preset** positions can be set in the Reolink app/windows/web client, the names of the presets will be loaded into Home Assistant at the start of the integration. When adding new preset positions, please restart the Reolink integration.
From 627b3a3779d5d70752478455a34ca78d43df7a63 Mon Sep 17 00:00:00 2001
From: kaareseras
Date: Tue, 4 Jun 2024 08:37:02 +0200
Subject: [PATCH 014/351] Azure data explorer (#21643)
Co-authored-by: Robert Resch
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
Co-authored-by: Franck Nijhof
---
.../azure_data_explorer.markdown | 191 ++++++++++++++++++
1 file changed, 191 insertions(+)
create mode 100644 source/_integrations/azure_data_explorer.markdown
diff --git a/source/_integrations/azure_data_explorer.markdown b/source/_integrations/azure_data_explorer.markdown
new file mode 100644
index 000000000000..4925439ada0b
--- /dev/null
+++ b/source/_integrations/azure_data_explorer.markdown
@@ -0,0 +1,191 @@
+---
+title: Azure Data Explorer
+description: Setup for Azure Data Explorer integration
+ha_category:
+ - History
+ha_release: 2024.6
+ha_config_flow: true
+ha_iot_class: Cloud Push
+ha_codeowners:
+ - '@kaareseras'
+ha_domain: azure_data_explorer
+related:
+ - docs: /docs/configuration/
+---
+[Azure Data Explorer](https://azure.microsoft.com/en-us/services/data-explorer/) is a high-performance time-series database, query engine, and dashboarding tool. The Home Assistant **Azure Data Explorer** {% term integration %} allows you to hook into the Home Assistant event bus and forward events to Azure Data Explorer for analytics and dashboarding. From here, data can be viewed in building dashboards, PowerBi, and Grafana, among others.
+
+## Prerequisites
+
+Before you can add Azure Data Explorer to Home Assistant, you need to set up an Azure account, create a Service Principal, create a cluster, and add a database.
+
+### Creating a free Azure account
+
+Create a [free Azure account](https://azure.microsoft.com/). You will be asked for credit card information, but all resources created here are free.
+
+### Creating a Service Principal (App registration)
+
+For Home Assistant to authenticate with Azure Data Explorer, it needs a *Service Principal*.
+1. To create a Service Principal, follow the guide on [Creating Microsoft Entra application registration](https://docs.microsoft.com/en-us/azure/data-explorer/provision-azure-ad-app), steps 1-7.
+2. Copy values for later use:
+ - Application (client) ID: From App registration overview
+ - Directory (tenant) ID: From App registration overview
+ - Secret value: From when the secret was created in step 1.7
+
+### Creating a Free Azure Data Explorer cluster and database
+
+There are two ways of creating an Azure Data Explorer Cluster: **Pay as you go (PAYG)** or **Free**.
+To create a paid cluster, follow the instructions from the [Microsoft Quickstart Guide](https://docs.microsoft.com/en-us/azure/data-explorer/create-cluster-database-portal).
+However, Microsoft has released a free offer, and this guide describes how to set up a free Azure Data Explorer Cluster and database:
+
+There are a few differences between the **PAYG** and **Free** versions:
+
+| Feature | PAYG cluster | Free cluster |
+| --------------- | ---------------------- | ------------------------------- |
+| Ingestion | Streaming and queueing | Queueing only (for now) |
+| Cluster size | Fully scalable | 4 vCPU, 8 GB Memory, ~100 GB data |
+
+1. Go to [aka.ms/kustofree](https://aka.ms/kustofree).
+2. Go to **My Cluster**.
+3. Select **Create Cluster**.
+4. Name the cluster and database.
+5. Copy the **database name** for later use.
+6. Check the **Terms and Conditions** (after reading them) and select **Create Cluster**.
+ - Within a minute, you will have an Azure Data Explorer cluster ready.
+7. After the database has been created, copy the **Data ingestion URI** from the top of the page.
+
+### Creating an Azure data table
+
+1. Go to [aka.ms/kustofree](https://aka.ms/kustofree).
+2. Go to **Query**.
+3. Write and perform the following statements one by one, replacing the placeholder content between the <> with the copied values (including the brackets).
+
+```KQL
+// Give the Service Pricipal write access to the database
+.add database [''] ingestors ('aadapp=;');
+
+// Give the Service Pricipal read access to database (used for connectivity checks)
+.add database [''] viewers ('aadapp=;');
+
+// Create a table for the data to be ingested into (replace the name and copy inserted *name* for later use)
+.create table [''] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic)
+
+// Creat a mapping from the incoming JSON to the table and columns just created (replace the name with the table name from the previous step)
+.create table [''] ingestion json mapping ['ha_json_mapping'] '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
+```
+
+This is an example with a free cluster for reference:
+
+```KQL
+.add database ['HomeAssistant'] ingestors ('aadapp=b5253d02-c8f4-1234-a0f0-818491ba2a1f;72f123bf-86f1-41af-91ab-2d7cd011db93');
+
+.add database ['HomeAssistant'] viewers ('aadapp=b5253d02-c8f4-1234-a0f0-818491ba2a1f;72f123bf-86f1-41af-91ab-2d7cd011db93');
+
+.create table ['raw'] (entity_id: string, state: string, attributes: dynamic, last_changed: datetime, last_updated: datetime, context: dynamic)
+
+.create table ['raw'] ingestion json mapping ['ha_json_mapping'] '[{"column":"entity_id","path":"$.entity_id"},{"column":"state","path":"$.state"},{"column":"attributes","path":"$.attributes"},{"column":"last_changed","path":"$.last_canged"},{"column":"last_updated","path":"$.last_updated"},{"column":"context","path":"$.context"}]'
+```
+
+{% include integrations/config_flow.md %}
+
+If using a free cluster, check the **Use Queueing client** in the form.
+
+After the flow has been completed, Home Assistant sends data to Azure Data Explorer.
+
+By default, Home Assistant buffers for 5 seconds before sending, and the Batching Policy in Azure Data Explorer will further batch up for default.
+
+## Filters
+
+Optionally, add the following lines to your {% term "configuration.yaml" %} file for filtering data ingested into Azure Data Explorer:
+
+```yaml
+# Example configuration.yaml entry
+azure_data_explorer:
+ filter:
+ include_domains:
+ - homeassistant
+ - light
+ - media_player
+```
+
+{% configuration %}
+filter:
+ description: Filter domains and entities for Data Explorer. ([Configure Filter](#configure-filter))
+ required: true
+ type: map
+ default: Includes all entities from all domains
+ keys:
+ include_domains:
+ description: List of domains to include (e.g., `light`).
+ required: false
+ type: list
+ exclude_domains:
+ description: List of domains to exclude (e.g., `light`).
+ required: false
+ type: list
+ include_entity_globs:
+ description: Include all entities matching a listed pattern (e.g., `sensor.weather_*`).
+ required: false
+ type: list
+ exclude_entity_globs:
+ description: Exclude all entities matching a listed pattern (e.g., `sensor.weather_*`).
+ required: false
+ type: list
+ include_entities:
+ description: List of entities to include (e.g., `light.attic`).
+ required: false
+ type: list
+ exclude_entities:
+ description: List of entities to include (e.g., `light.attic`).
+ required: false
+ type: list
+{% endconfiguration %}
+
+
+Not filtering domains or entities will send every event to Azure Data Explorer.
+
+
+
+### Configuring a filter
+
+By default, no entity will be excluded. To limit which entities are being exposed to `Azure Data Explorer`, you can use the `filter` parameter.
+
+```yaml
+# Example filter to include specified domains and exclude specified entities
+azure_data_explorer:
+ filter:
+ include_domains:
+ - alarm_control_panel
+ - light
+ include_entity_globs:
+ - binary_sensor.*_occupancy
+ exclude_entities:
+ - light.kitchen_light
+```
+
+Filters are applied as follows:
+
+1. No includes or excludes - pass all entities.
+2. Includes, no excludes - only include specified entities.
+3. Excludes, no includes - only exclude specified entities.
+4. Both includes and excludes:
+ - Include domain and/or glob patterns specified:
+ - If the domain is included, and the entity is not excluded or matches the exclude glob pattern, pass.
+ - If the entity matches include glob pattern, and the entity does not match any exclude criteria (domain, glob pattern, or listed), pass.
+ - If the domain is not included, the glob pattern does not match, and the entity not included, fail.
+ - Exclude domain and/or glob patterns specified and include does not list domains or glob patterns
+ - If the domain is excluded and the entity is not included, fail.
+ - If the entity matches an exclude glob pattern and the entity is not included, fail.
+ - If the entity does not match any exclude criteria (domain, glob pattern, or listed), pass.
+ - Neither include or exclude specifies domains or glob patterns
+ - If the entity is included, pass (as #2 above).
+ - If the entity matches both an include and an exclude pattern, the entity exclude is ignored.
+
+
+## Using Azure Data Explorer
+
+Once the setup is complete, data is being sent to Azure Data Explorer, and you can start exploring your data.
+Here are some resources to help you learn how to use Azure Data Explorer:
+
+- MS Learn: [https://aka.ms/learn.kql](https://aka.ms/learn.kql), [https://aka.ms/learn.adx](https://aka.ms/learn.adx)
+- YouTube: [Official Microsoft Azure Data Explorer YouTube channal](https://www.youtube.com/channel/UCPgPN-0DLaImaaDR_TtKR8A)
+- Blog: [Official Microsoft Data Explorer blog](https://techcommunity.microsoft.com/t5/azure-data-explorer-blog/bg-p/AzureDataExplorer)
From 27db41249748d87f7498eca00fe1ef610237099a Mon Sep 17 00:00:00 2001
From: Oleg Kurapov
Date: Tue, 4 Jun 2024 10:45:40 +0200
Subject: [PATCH 015/351] Add mention of XML support to binary_sensor.rest
integration (#33073)
* Add mention of XML support to binary_sensor.rest integration
* Tiny tweak
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---
source/_integrations/binary_sensor.rest.markdown | 3 +++
1 file changed, 3 insertions(+)
diff --git a/source/_integrations/binary_sensor.rest.markdown b/source/_integrations/binary_sensor.rest.markdown
index dbf2c7e9cc24..1d6eef7f6a95 100644
--- a/source/_integrations/binary_sensor.rest.markdown
+++ b/source/_integrations/binary_sensor.rest.markdown
@@ -19,6 +19,9 @@ _Tip:_ If you want to create multiple `sensors` using the same endpoint, use the
The JSON messages can contain different values like `1`, `"1"`,
`TRUE`, `true`, `on`, or `open`. If the value is nested then use a
[template](/docs/configuration/templating/#processing-incoming-data).
+If the endpoint returns XML with the `text/xml`, `application/xml`, or
+`application/xhtml+xml` content type, it will automatically be converted
+to JSON according to this [specification](https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html).
```json
{
From 3d74660a382f9d3ef1223906527c6989a9c350ae Mon Sep 17 00:00:00 2001
From: Aidan Timson
Date: Tue, 4 Jun 2024 09:51:00 +0100
Subject: [PATCH 016/351] Azure DevOps new build sensors (#32178)
* Azure DevOps new build sensors
* url -> URL
* Apply suggestions from code review
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---
source/_integrations/azure_devops.markdown | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/source/_integrations/azure_devops.markdown b/source/_integrations/azure_devops.markdown
index 10834c229a11..956d507596b4 100644
--- a/source/_integrations/azure_devops.markdown
+++ b/source/_integrations/azure_devops.markdown
@@ -23,4 +23,14 @@ Azure DevOps instance in Home Assistant.
This integration provides a sensor for Azure DevOps:
-- Latest build - This includes attributes with additional info about the build.
+- Latest build - The build number of the latest build.
+- Latest build id - The ID of the latest build.
+- Latest build reason - The reason the build was triggered.
+- Latest build result - The build result.
+- Latest build source branch - The source git branch.
+- Latest build source version - This is the version i.e. the tag if set, or the commit.
+- Latest build status - The build status.
+- Latest build queue time - How long the latest build was queued.
+- Latest build start time - The time when the latest build actually started.
+- Latest build finish time - The time when the latest build finished.
+- Latest build URL - The URL to the latest build.
From 16903d8b580dac0cf660ba7d4fedad1d754b5446 Mon Sep 17 00:00:00 2001
From: "Mr. Bubbles"
Date: Tue, 4 Jun 2024 11:00:41 +0200
Subject: [PATCH 017/351] Documentation for ista EcoTrend integration (#32996)
* add ista EcoTrend documentation
* small tweaks
* Remove Statistics section
---
source/_integrations/ista_ecotrend.markdown | 36 +++++++++++++++++++++
1 file changed, 36 insertions(+)
create mode 100644 source/_integrations/ista_ecotrend.markdown
diff --git a/source/_integrations/ista_ecotrend.markdown b/source/_integrations/ista_ecotrend.markdown
new file mode 100644
index 000000000000..254958515c72
--- /dev/null
+++ b/source/_integrations/ista_ecotrend.markdown
@@ -0,0 +1,36 @@
+---
+title: ista EcoTrend
+description: Instructions on how to integrate ista EcoTrend with Home Assistant.
+ha_release: 2024.7
+ha_category:
+ - Energy
+ha_iot_class: Cloud Polling
+ha_codeowners:
+ - '@tr4nt0r'
+ha_domain: ista_ecotrend
+ha_platforms:
+ - sensor
+ha_config_flow: true
+ha_integration_type: integration
+---
+
+The **ista EcoTrend** {% term integration %} for Home Assistant allows you to import your monthly meter readings from the [ista EcoTrend](https://ecotrend.ista.de) service.
+
+
+{% include integrations/config_flow.md %}
+
+
+## Sensors
+
+The **ista EcoTrend** integration exposes the last monthly readings as sensors. It provides the following sensors:
+
+- **Heating**: readings from your heat cost allocators (measured in units)
+- **Heating energy**: estimated value in kWh
+- **Heating costs**: estimated costs in EUR
+- **Hot water**: consumption readings in m³
+- **Hot water energy**: estimated value in kWh
+- **Hot water costs**: estimated costs in EUR
+- **Water**: consumption readings in m³
+- **Water costs**: estimated costs in EUR
+
+Not all values may be available in your ista EcoTrend account. Cost estimation is an optional service that has to be booked by your property manager. Therefore, the cost sensors are deactivated by default.
From af5b79185133242dab6670f52622c6b0de0bd1a9 Mon Sep 17 00:00:00 2001
From: Markus Jacobsen
Date: Tue, 4 Jun 2024 16:36:13 +0200
Subject: [PATCH 018/351] Bang & Olufsen add overlay/announce play_media
documentation (#31879)
* Add overlay documentation
* Convert overlay to a play_media feature instead of custom service
* Update source/_integrations/bang_olufsen.markdown
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
* Update source/_integrations/bang_olufsen.markdown
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
* Update source/_integrations/bang_olufsen.markdown
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
* Update source/_integrations/bang_olufsen.markdown
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
* Specify default language and format
* Update source/_integrations/bang_olufsen.markdown
---------
Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com>
---
source/_integrations/bang_olufsen.markdown | 60 +++++++++++++++++++++-
1 file changed, 59 insertions(+), 1 deletion(-)
diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown
index ddb939932e79..6acce0838d3f 100644
--- a/source/_integrations/bang_olufsen.markdown
+++ b/source/_integrations/bang_olufsen.markdown
@@ -52,7 +52,7 @@ Device model:
### play_media services
-The Bang & Olufsen integration supports different playback types in the `media_player.play_media` service: playback from URL, activating a favourite, playback from a local file, playing a radio station, activating a Deezer flow and Deezer playlists, albums, and tracks.
+The Bang & Olufsen integration supports different playback types in the `media_player.play_media` service: playback from URL, activating a favorite, playback from a local file, playing a radio station, activating a Deezer flow and Deezer playlists, albums, tracks, and playing files and text-to-speech (TTS) as an overlay.
#### play_media examples
@@ -150,6 +150,64 @@ data:
media_content_id: 1234567890
```
+##### Overlay
+
+Interrupts currently playing media to play an audio message.
+
+To use the Bang & Olufsen Cloud TTS, use `overlay_tts` as the `media_content_type` and enter a message into the `media_content_id` field.
+Bang & Olufsen Cloud TTS messages are limited to 100 unique messages a day and are cached for 24 hours.
+
+Extra keys available:
+
+| Service data attribute | Optional | Description |
+| ------------------------- | -------- | ------------------------------------------------------------------------------------------------ |
+| `overlay_absolute_volume` | yes | Specify an absolute volume for the overlay. |
+| `overlay_offset_volume` | yes | Specify a volume offset to be added to the current volume level. |
+| `overlay_tts_language` | yes | Specify the language used for text-to-speech. Uses the BCP 47 standard. Default value is "en-us". |
+
+###### Examples:
+
+Playing a local file with an absolute volume as an overlay:
+
+```yaml
+service: media_player.play_media
+target:
+ entity_id: media_player.beosound_balance_12345678
+data:
+ media_content_type: music
+ media_content_id: media-source://media_source/local/doorbell.mp3
+ announce: true
+ extra:
+ overlay_absolute_volume: 60
+```
+
+Playing a Bang & Olufsen Cloud TTS message with an offset volume (as TTS messages can be quiet):
+
+```yaml
+service: media_player.play_media
+target:
+ entity_id: media_player.beosound_balance_12345678
+data:
+ media_content_type: overlay_tts
+ media_content_id: This is a test
+ announce: true
+ extra:
+ overlay_offset_volume: 10
+```
+
+Playing a Bang & Olufsen Cloud TTS message with a local language:
+```yaml
+service: media_player.play_media
+target:
+ entity_id: media_player.beosound_balance_12345678
+data:
+ media_content_type: overlay_tts
+ media_content_id: Dette er en test
+ announce: true
+ extra:
+ overlay_tts_language: da-dk
+```
+
## Automations
WebSocket notifications received from the device are fired as events in Home Assistant. These can be received by listening to `bang_olufsen_websocket_event` event types, where `device_id` or `serial_number` can be used to differentiate devices.
From ba83a7955a720accf02d46ef6d52cc1cda743673 Mon Sep 17 00:00:00 2001
From: Paul Bottein
Date: Wed, 5 Jun 2024 10:21:35 +0200
Subject: [PATCH 019/351] Add visibility config option for cards and sections
(#33087)
Co-authored-by: Franck Nijhof
---
source/_dashboards/sections.markdown | 6 ++++++
source/dashboards/cards.markdown | 6 ++++++
2 files changed, 12 insertions(+)
diff --git a/source/_dashboards/sections.markdown b/source/_dashboards/sections.markdown
index 5385e47645b1..fa7aced53b59 100644
--- a/source/_dashboards/sections.markdown
+++ b/source/_dashboards/sections.markdown
@@ -65,6 +65,12 @@ In the sections view, you can rearrange sections and cards by dragging them to a
Rearranging cards by dragging