diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown
index 6fa42544748..1d4042a4081 100644
--- a/source/_integrations/default_config.markdown
+++ b/source/_integrations/default_config.markdown
@@ -14,6 +14,7 @@ ha_integration_type: system
This integration is a meta-component and configures a default set of integrations for Home Assistant to load. The integrations that will be loaded are:
- [Automation](/integrations/automation/) (`automation`)
+- [Assist pipeline](/integrations/assist_pipeline/) (`assist_pipeline`)
- [Backup](/integrations/backup/) (`backup`)
- [Bluetooth](/integrations/bluetooth/) (`bluetooth`)
- [Configuration](/integrations/config/) (`config`)
diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown
index 516f694b853..9147a40327f 100644
--- a/source/_integrations/denonavr.markdown
+++ b/source/_integrations/denonavr.markdown
@@ -73,6 +73,7 @@ Known supported devices:
- Marantz AV7703
- Marantz AV7704
- Marantz CINEMA 50
+- Marantz CINEMA 70s
- Marantz M-CR510
- Marantz M-CR511
- Marantz M-CR603
@@ -80,6 +81,7 @@ Known supported devices:
- Marantz M-CR611
- Marantz SR5006
- Marantz SR5008
+- Marantz SR5010
- Marantz SR5011
- Marantz SR5015
- Marantz SR6007 - SR6012
diff --git a/source/_integrations/easyenergy.markdown b/source/_integrations/easyenergy.markdown
index f01451832b3..c3e9b464afc 100644
--- a/source/_integrations/easyenergy.markdown
+++ b/source/_integrations/easyenergy.markdown
@@ -47,6 +47,18 @@ prices for electricity that you use (buy) or return (sell). Every day around
- Time of day when the price is highest
- Time of day when the price is at its lowest
- Percentage of the current price compared to the maximum price
+- Number of hours with the current price higher or lower
+
+Entities with the number of hours indicate how many hours there are with a price
+**above** or **below** the current hourly price. If we take the graph below as an example
+and it is 00:30, then there are 8 hours below the current price and 4 hours above the
+current price. With this information, you could switch devices at the X cheapest number
+of hours during the day.
+
+
### Gas market price
diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown
index 8e0380ca187..90de9c35d79 100644
--- a/source/_integrations/fan.markdown
+++ b/source/_integrations/fan.markdown
@@ -20,9 +20,6 @@ The Fan integration allows you to control and monitor Fan devices.
Available services:
`fan.set_percentage`, `fan.set_preset_mode`, `fan.set_direction`, `fan.oscillate`, `fan.turn_on`, `fan.turn_off`, `fan.toggle`, `fan.increase_speed`, `fan.decrease_speed`
-Deprecated services:
-`fan.set_speed`
-
Not all fan services may be available for your platform. You can check which services are available for your fan(s) under **Developer Tools** -> **Services**.
@@ -144,15 +141,6 @@ Turn fan device off. This is only supported if the fan device supports being tur
| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`.
-### Deprecated Service `fan.set_speed`
-
-Sets the speed for fan device.
-
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | ----------- |
-| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`.
-| `speed` | no | Speed setting
-
#### Automation example
```yaml
diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown
index e827fcae75c..96ac5f31431 100644
--- a/source/_integrations/fan.mqtt.markdown
+++ b/source/_integrations/fan.mqtt.markdown
@@ -160,6 +160,22 @@ optimistic:
required: false
type: boolean
default: "`true` if no state topic defined, else `false`."
+direction_command_template:
+ description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `direction_command_topic`.
+ required: false
+ type: template
+direction_command_topic:
+ description: The MQTT topic to publish commands to change the direction state.
+ required: false
+ type: string
+direction_state_topic:
+ description: The MQTT topic subscribed to receive direction state updates.
+ required: false
+ type: string
+direction_value_template:
+ description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the direction."
+ required: false
+ type: template
oscillation_command_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `oscillation_command_topic`.
required: false
@@ -175,7 +191,7 @@ oscillation_state_topic:
oscillation_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the oscillation."
required: false
- type: string
+ type: template
payload_available:
description: The payload that represents the available state.
required: false
@@ -231,7 +247,7 @@ percentage_state_topic:
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: string
+ type: template
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
@@ -247,7 +263,7 @@ preset_mode_state_topic:
preset_mode_value_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
required: false
- type: string
+ type: template
preset_modes:
description: List of preset modes this fan is capable of running at. Common examples include `auto`, `smart`, `whoosh`, `eco` and `breeze`.
required: false
@@ -280,7 +296,7 @@ state_topic:
state_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the state."
required: false
- type: string
+ type: template
unique_id:
description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception.
required: false
@@ -309,6 +325,9 @@ mqtt:
- name: "Bedroom Fan"
state_topic: "bedroom_fan/on/state"
command_topic: "bedroom_fan/on/set"
+ direction_state_topic: "bedroom_fan/direction/state"
+ direction_command_topic: "bedroom_fan/direction/set"
+ oscillation_command_topic: "bedroom_fan/oscillation/set"
oscillation_state_topic: "bedroom_fan/oscillation/state"
oscillation_command_topic: "bedroom_fan/oscillation/set"
percentage_state_topic: "bedroom_fan/speed/percentage_state"
@@ -343,6 +362,8 @@ mqtt:
- name: "Bedroom Fan"
command_topic: "bedroom_fan/on/set"
command_template: "{ state: '{{ value }}'}"
+ direction_command_template: "{{ iif(value == 'forward', 'fwd', 'rev') }}"
+ direction_value_template: "{{ iif(value == 'fwd', 'forward', 'reverse') }}"
oscillation_command_topic: "bedroom_fan/oscillation/set"
oscillation_command_template: "{ oscillation: '{{ value }}'}"
percentage_command_topic: "bedroom_fan/speed/percentage"
@@ -358,3 +379,18 @@ mqtt:
```
{% endraw %}
+
+This example shows how to configure a fan that doesn't use `forward` and `backward` as directions.
+
+{% raw %}
+
+```yaml
+# Example configuration.yaml with direction templates
+mqtt:
+ fan:
+ - name: "Bedroom Fan"
+ direction_command_template: "{{ iif(value == 'forward', 'fwd', 'rev') }}"
+ direction_value_template: "{{ iif(value == 'fwd', 'forward', 'reverse') }}"
+```
+
+{% endraw %}
diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown
index f79916115d6..8d499198c33 100644
--- a/source/_integrations/fixer.markdown
+++ b/source/_integrations/fixer.markdown
@@ -17,7 +17,7 @@ To get an overview about the available [currencies](https://fixer.io/symbols).
## Setup
-You need to create an [API key](https://fixer.io/product). The free account is limited to only EUR as a base currency, allows 100 requests per month, and updates every hour.
+You need to create an [API key](https://apilayer.com/marketplace/fixer-api#pricing). The free account is limited to only EUR as a base currency, allows 100 requests per month, and updates every hour.
## Configuration
diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown
index 7ed1ae0581d..b94fce5346d 100644
--- a/source/_integrations/forecast_solar.markdown
+++ b/source/_integrations/forecast_solar.markdown
@@ -71,6 +71,7 @@ The Forecast.Solar integration mainly provides sensors that you can use in your
automations.
- Estimated Energy Production - Today (in kWh)
+- Estimated Energy Production - Remaining Today (in kWh)
- Estimated Energy Production - Tomorrow (in kWh)
- Estimated Energy Production - This Hour (in kWh)
- Estimated Energy Production - Next Hour (in kWh)
diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown
index f7c6530cba1..6da8f4551e0 100644
--- a/source/_integrations/freebox.markdown
+++ b/source/_integrations/freebox.markdown
@@ -6,6 +6,7 @@ ha_category:
- Presence Detection
- Sensor
- Switch
+ - Camera
ha_release: 0.85
ha_iot_class: Local Polling
ha_codeowners:
@@ -18,6 +19,7 @@ ha_platforms:
- device_tracker
- sensor
- switch
+ - camera
ha_zeroconf: true
ha_integration_type: integration
---
@@ -29,6 +31,7 @@ There is currently support for the following device types within Home Assistant:
* [Sensor](#sensor) with metrics for connection speed, internal temperature, free partition space and missed calls
* [Device tracker](#presence-detection) for connected devices
* [Switch](#switch) to control Wi-Fi
+* [Camera](#camera)
{% include integrations/config_flow.md %}
@@ -79,6 +82,8 @@ The first time Home Assistant will connect to your Freebox, you will need to aut
To make the Wi-Fi switch and the reboot service working you will have to add "Modification des réglages de la Freebox" permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications".
+To use cameras from the Freebox Delta, you will have to add "Gestion de l'alarme et maison connectée" permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications".
+
### Supported routers
Only the routers with Freebox OS are supported:
@@ -112,6 +117,9 @@ The monitored metrics are:
* Free partition space of used disks
* Number of missed calls
+## Camera
+Cameras are only available in Freebox V7 (also known as Freebox Delta).
+
## Service
### Service `freebox.reboot`
diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown
index c8c55f42f62..ae9018f73ea 100644
--- a/source/_integrations/google_assistant_sdk.markdown
+++ b/source/_integrations/google_assistant_sdk.markdown
@@ -78,13 +78,15 @@ The integration setup will next give you instructions to enter the [Application
1. Continue through the steps of selecting the account you want to authorize.
-2. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed.
+2. If your Google account settings are set to a language not supported by the SDK -- which can be noticed by the authentication screen of Google being localized in that language -- the authorization will fail without a clear error. Changing the language at the bottom of the error page to one that is [supported](https://developers.google.com/assistant/sdk/reference/rpc/languages) by the SDK will allow you to continue to the link page of Home Assistant.
-3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**.
+3. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed.
-4. The page will now display _Link account to Home Assistant?_, note _Your instance URL_. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**.
+4. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**.
-5. You may close the window, and return back to Home Assistant where you should see a _Success!_ message from Home Assistant.
+5. The page will now display _Link account to Home Assistant?_, note _Your instance URL_. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**.
+
+6. You may close the window, and return back to Home Assistant where you should see a _Success!_ message from Home Assistant.
{% enddetails %}
diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown
index e23be034ffb..cd76006c36b 100644
--- a/source/_integrations/habitica.markdown
+++ b/source/_integrations/habitica.markdown
@@ -145,3 +145,19 @@ Also an event `habitica_api_call_success` will be fired with the following data:
"id": "NEW_TASK_UUID"}
}
```
+
+## Templating
+
+`sensor.habitica_USER_dailys`, `sensor.habitica_USER_habits`, `sensor.habitica_USER_rewards`, and `sensor.habitica_USER_todos` have state attributes listing the user's respective tasks. For example, you can see this information in **Developer Tools** -> **States** -> `sensor.habitica_USER_dailys` -> **Attributes**, or by adding a [Markdown card](/dashboards/markdown/) to a dashboard with the following code:
+
+{% raw %}
+
+```jinja
+{% for key, value in states.sensor.habitica_USER_dailys.attributes.items() %}
+ {% if 'text' in value | string %}
+ {{ loop.index }}. {{ value.text }}
+ {% endif %}
+{% endfor %}
+```
+
+{% endraw %}
diff --git a/source/_integrations/hassio.markdown b/source/_integrations/hassio.markdown
index 3442b8c7021..f863115f5e9 100644
--- a/source/_integrations/hassio.markdown
+++ b/source/_integrations/hassio.markdown
@@ -68,6 +68,8 @@ For Home Assistant Host, the following sensors are available:
For each installed add-on Supervisor provides following binary sensors:
+(These entities are disabled by default and must be reenabled to appear)
+
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
| Update Available | no | Whether there is an update available for this add-on (This is deprecated, use the Update entities instead.)
diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown
index 62d59cea602..be125853c1b 100644
--- a/source/_integrations/honeywell.markdown
+++ b/source/_integrations/honeywell.markdown
@@ -33,11 +33,11 @@ Home Assistant is integrated with the following devices through [https://mytotal
- Thermostats
- Every thermostat is exposed as a climate entity
- - Known working devices: TH6320R1004, RTH9585WF1004
+ - Known working devices: [TH6320R1004](https://customer.resideo.com/en-US/Pages/Product.aspx?cat=HonECC%2520Catalog&pid=TH6320R1004/U), [RTH9585WF1004](https://www.honeywellhome.com/us/en/products/air/thermostats/wifi-thermostats/wifi-color-touchscreen-thermostat-rth9585wf1004-u/)
- Sensors
- A Temperature sensor entity.
- A Humidity sensor entity.
- - Known working devices: C7089R1013
+ - Known working devices: [C7089R1013](https://customer.resideo.com/en-US/Pages/Product.aspx?cat=HonECC%20Catalog&pid=C7089R1013/U)
Others devices like Security systems are not currently supported by this integration
@@ -45,7 +45,7 @@ Others devices like Security systems are not currently supported by this integra
The climate platform integrates Honeywell US-based thermostats into Home Assistant, allowing control of the thermostat through the user interface. The current inside temperature, operating mode, and fan state are also displayed on the thermostat card.
-All [climate services](/integrations/climate) are supported except set_swing_mode
+All [climate services](/integrations/climate) are supported except set_swing_mode.
## Sensor
diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown
index 2f93c232f61..f32045222e7 100644
--- a/source/_integrations/http.markdown
+++ b/source/_integrations/http.markdown
@@ -42,7 +42,7 @@ server_port:
type: integer
default: 8123
ssl_certificate:
- description: Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/hassio-addons/tree/master/letsencrypt) this will be at `/ssl/fullchain.pem`. We recommend to use the [NGINX add-on](https://github.com/home-assistant/addons/tree/master/nginx_proxy) instead of using this option.
+ description: Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/addons/tree/master/letsencrypt) this will be at `/ssl/fullchain.pem`. We recommend to use the [NGINX add-on](https://github.com/home-assistant/addons/tree/master/nginx_proxy) instead of using this option.
required: false
type: string
ssl_peer_certificate:
@@ -50,7 +50,7 @@ ssl_peer_certificate:
required: false
type: string
ssl_key:
- description: Path to your TLS/SSL key to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/hassio-addons/tree/master/letsencrypt) this will be at `/ssl/privkey.pem`.
+ description: Path to your TLS/SSL key to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/addons/tree/master/letsencrypt) this will be at `/ssl/privkey.pem`.
required: false
type: string
cors_allowed_origins:
@@ -118,7 +118,7 @@ http:
## APIs
-On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest), [Python API](https://developers.home-assistant.io/docs/api_lib_index) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket) available.
+On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest/), [Python API](https://developers.home-assistant.io/docs/api_lib_index/) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket/) available.
The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP.
@@ -188,7 +188,7 @@ $ curl -X POST -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
http://localhost:8123/api/states/binary_sensor.radio
```
-To check if the sensor is working, use again `curl` to retrieve the [current state](/developers/rest_api/#get-apistatesltentity_id).
+To check if the sensor is working, use again `curl` to retrieve the [current state](https://developers.home-assistant.io/docs/api/rest/).
```bash
$ curl -X GET -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
@@ -227,7 +227,7 @@ print(response.text)
#### Using `httpie`
-[`httpie`](https://github.com/jkbrzt/httpie) is a user-friendly CLI HTTP client.
+[`httpie`](https://github.com/httpie/httpie) is a user-friendly CLI HTTP client.
```bash
$ http -v POST http://localhost:8123/api/states/binary_sensor.radio \
@@ -266,7 +266,7 @@ $ curl -X POST -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
http://localhost:8123/api/states/sensor.bathroom_temperature
```
-You can then use `curl` again to retrieve the [current sensor state](/developers/rest_api/#get-apistatesltentity_id) and verify the sensor is working.
+You can then use `curl` again to retrieve the [current sensor state](https://developers.home-assistant.io/docs/api/rest/) and verify the sensor is working.
```bash
$ curl -X GET -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown
index 8921ff1f731..5a6e8600c60 100644
--- a/source/_integrations/humidifier.mqtt.markdown
+++ b/source/_integrations/humidifier.mqtt.markdown
@@ -121,7 +121,7 @@ device:
required: false
type: string
device_class:
- description: The device class of the MQTT device. Must be either `humidifier` or `dehumidifier`.
+ description: The device class of the MQTT device. Must be either `humidifier`, `dehumidifier` or `null`.
required: false
type: string
default: humidifier
@@ -221,7 +221,7 @@ target_humidity_state_topic:
target_humidity_state_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value for the humidifier `target_humidity` state.
required: false
- type: string
+ type: template
mode_command_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `mode_command_topic`.
required: false
@@ -237,7 +237,7 @@ mode_state_topic:
mode_state_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value for the humidifier `mode` state.
required: false
- type: string
+ type: template
modes:
description: List of available modes this humidifier is capable of running at. Common examples include `normal`, `eco`, `away`, `boost`, `comfort`, `home`, `sleep`, `auto` and `baby`. These examples offer built-in translations but other custom modes are allowed as well. This attribute ust be configured together with the `mode_command_topic` attribute.
required: false
@@ -260,7 +260,7 @@ state_topic:
state_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the state."
required: false
- type: string
+ type: template
unique_id:
description: An ID that uniquely identifies this humidifier. If two humidifiers have the same unique ID, Home Assistant will raise an exception.
required: false
diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown
index b23853631b8..2c9291ef121 100644
--- a/source/_integrations/hunterdouglas_powerview.markdown
+++ b/source/_integrations/hunterdouglas_powerview.markdown
@@ -178,7 +178,7 @@ Set the type for connected power source. Available options are Hardwired Power S
### Calling a Powerview Scene
``` yaml
-alias: "blinds closed at night"
+alias: "Blinds closed at night"
trigger:
platform: time
at: "18:00:00"
diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown
index bab39c40ff0..c60502a1628 100644
--- a/source/_integrations/imap.markdown
+++ b/source/_integrations/imap.markdown
@@ -49,6 +49,17 @@ Below is an example for setting up the integration to connect to your Microsoft
- Password: Your password
- Charset: `US-ASCII`
+### Selecting an alternate SSL cipher list (advanced mode)
+
+If the default IMAP server settings do not work, you might try to set an alternate SLL cipher list.
+The SSL cipher list option allows to select the list of SSL ciphers to be accepted from this endpoint. `default` (_system default_), `modern` or `intermediate` (_inspired by [Mozilla Security/Server Side TLS](https://wiki.mozilla.org/Security/Server_Side_TLS)_)
+
+
+
+The SSL cipher list is an advanced setting. The option is available only when advanced mode is enabled (see user settings).
+
+
+
### Using events
When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation.
diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown
index 06c58a8f244..3aa88a2b5d2 100644
--- a/source/_integrations/input_boolean.markdown
+++ b/source/_integrations/input_boolean.markdown
@@ -22,7 +22,7 @@ automations by using them in their conditions.
The preferred way to configure input boolean helpers is via the user interface,
in which they are known as Toggle Helpers. To add one, go to
**{% my helpers title="Settings -> Devices & Services -> Helpers" %}** and click the add button;
-next choose the "**Toggle**" option.
+next choose the **{% my config_flow_start domain=input_boolean title="Toggle" %}** option.
To be able to add **Helpers** via the user interface you should have
`default_config:` in your `configuration.yaml`, it should already be there by
diff --git a/source/_integrations/input_button.markdown b/source/_integrations/input_button.markdown
index e118a67f2fd..2c1582a4e7d 100644
--- a/source/_integrations/input_button.markdown
+++ b/source/_integrations/input_button.markdown
@@ -20,7 +20,7 @@ like an automation.
The preferred way to configure button helpers is via the user interface.
To add one, go to **{% my helpers title="Settings -> Devices & Services -> Helpers" %}**
-and click the add button; next choose the "**Button**" option.
+and click the add button; next choose the **{% my config_flow_start domain=input_button title="Button" %}** option.
To be able to add **Helpers** via the user interface you should have
`default_config:` in your `configuration.yaml`, it should already be there by
diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown
index 4241c099b67..acadba486b3 100644
--- a/source/_integrations/input_datetime.markdown
+++ b/source/_integrations/input_datetime.markdown
@@ -16,9 +16,9 @@ The `input_datetime` integration allows the user to define date and time values
that can be controlled via the frontend and can be used within automations and
templates.
-The preferred way to configure input datetime is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Date and/or time** option.
+The preferred way to configure input datetime is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_datetime title="Date and/or time" %}** option.
-To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
+To be able to add **{% my helpers title="Helpers" %}** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from your configuration, you must add `input_datetime:` to your `configuration.yaml` first, then you can use the UI.
`input_datetime` can also be configured via YAML. To add three datetime inputs to your installation,
diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown
index ef0011ea2a7..7992d51b596 100644
--- a/source/_integrations/input_number.markdown
+++ b/source/_integrations/input_number.markdown
@@ -14,7 +14,7 @@ ha_integration_type: helper
The `input_number` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well.
-The preferred way to configure an input number is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Number** option.
+The preferred way to configure an input number is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_number title="Number" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from you configuration, you must add `input_number:` to your `configuration.yaml` first, then you can use the UI.
diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown
index 838e64596be..45dea5f333a 100644
--- a/source/_integrations/input_select.markdown
+++ b/source/_integrations/input_select.markdown
@@ -14,7 +14,7 @@ ha_integration_type: helper
The `input_select` integration allows the user to define a list of values that can be selected via the frontend and can be used within conditions of an automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger.
-The preferred way to configure an input select is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Dropdown** option.
+The preferred way to configure an input select is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_select title="Dropdown" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from you configuration, you must add `input_select:` to your `configuration.yaml` first, then you can use the UI.
diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown
index a78dd86a278..8062b4931a5 100644
--- a/source/_integrations/input_text.markdown
+++ b/source/_integrations/input_text.markdown
@@ -14,10 +14,10 @@ ha_integration_type: helper
The `input_text` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the value stored in the text box generate state events. These state events can be utilized as `automation` triggers as well. It can also be configured in password mode (obscured text).
-The preferred way to configure an input text is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Text** option.
+The preferred way to configure an input text is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_text title="Text" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
-If you removed `default_config:` from you configuration, you must add `input_text:` to your `configuration.yaml` first, then you can use the UI.
+If you removed `default_config:` from your configuration, you must add `input_text:` to your `configuration.yaml` first, then you can use the UI.
It can also be configured via `configuration.yaml`:
diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown
index 1d853dcd1ba..408e577d9c6 100644
--- a/source/_integrations/light.mqtt.markdown
+++ b/source/_integrations/light.mqtt.markdown
@@ -95,7 +95,7 @@ brightness_command_topic:
brightness_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `brightness_command_topic`. Available variables: `value`."
required: false
- type: string
+ type: template
brightness_scale:
description: "Defines the maximum brightness value (i.e., 100%) of the MQTT device."
required: false
@@ -108,7 +108,7 @@ brightness_state_topic:
brightness_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the brightness value."
required: false
- type: string
+ type: template
color_mode_state_topic:
description: "The MQTT topic subscribed to receive color mode updates. If this is not configured, `color_mode` will be automatically set according to the last received valid color or color temperature"
required: false
@@ -116,11 +116,11 @@ color_mode_state_topic:
color_mode_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the color mode."
required: false
- type: string
+ type: template
color_temp_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `color_temp_command_topic`. Available variables: `value`."
required: false
- type: string
+ type: template
color_temp_command_topic:
description: The MQTT topic to publish commands to change the light’s color temperature state. The color temperature command slider has a range of 153 to 500 mireds (micro reciprocal degrees).
required: false
@@ -132,7 +132,7 @@ color_temp_state_topic:
color_temp_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the color temperature value."
required: false
- type: string
+ type: template
command_topic:
description: The MQTT topic to publish commands to change the switch state.
required: true
@@ -204,7 +204,7 @@ effect_command_topic:
effect_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `effect_command_topic`. Available variables: `value`."
required: false
- type: string
+ type: template
effect_list:
description: The list of effects the light supports.
required: false
@@ -216,11 +216,11 @@ effect_state_topic:
effect_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the effect value."
required: false
- type: string
+ type: template
hs_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `hs_command_topic`. Available variables: `hue` and `sat`."
required: false
- type: string
+ type: template
hs_command_topic:
description: "The MQTT topic to publish commands to change the light's color state in HS format (Hue Saturation).
Range for Hue: 0° .. 360°, Range of Saturation: 0..100.
@@ -235,7 +235,7 @@ hs_state_topic:
hs_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the HS value."
required: false
- type: string
+ type: template
icon:
description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity."
required: false
@@ -307,7 +307,7 @@ retain:
rgb_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`."
required: false
- type: string
+ type: template
rgb_command_topic:
description: "The MQTT topic to publish commands to change the light's RGB state."
required: false
@@ -319,11 +319,11 @@ rgb_state_topic:
rgb_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the RGB value."
required: false
- type: string
+ type: template
rgbw_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `rgbw_command_topic`. Available variables: `red`, `green`, `blue` and `white`."
required: false
- type: string
+ type: template
rgbw_command_topic:
description: "The MQTT topic to publish commands to change the light's RGBW state."
required: false
@@ -335,11 +335,11 @@ rgbw_state_topic:
rgbw_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the RGBW value."
required: false
- type: string
+ type: template
rgbww_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `rgbww_command_topic`. Available variables: `red`, `green`, `blue`, `cold_white` and `warm_white`."
required: false
- type: string
+ type: template
rgbww_command_topic:
description: "The MQTT topic to publish commands to change the light's RGBWW state."
required: false
@@ -351,7 +351,7 @@ rgbww_state_topic:
rgbww_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the RGBWW value."
required: false
- type: string
+ type: template
schema:
description: The schema to use. Must be `default` or omitted to select the default schema.
required: false
@@ -364,7 +364,7 @@ state_topic:
state_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the state value. The template should match the payload `on` and `off` values, so if your light uses `power on` to turn on, your `state_value_template` string should return `power on` when the switch is on. For example if the message is just `on`, your `state_value_template` should be `power {{ value }}`."
required: false
- type: string
+ type: template
unique_id:
description: An ID that uniquely identifies this light. If two lights have the same unique ID, Home Assistant will raise an exception.
required: false
@@ -381,7 +381,7 @@ white_scale:
xy_command_template:
description: "Defines a [template](/docs/configuration/templating/) to compose message which will be sent to `xy_command_topic`. Available variables: `x` and `y`."
required: false
- type: string
+ type: template
xy_command_topic:
description: "The MQTT topic to publish commands to change the light's XY state."
required: false
@@ -393,7 +393,7 @@ xy_state_topic:
xy_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the XY value."
required: false
- type: string
+ type: template
{% endconfiguration %}
@@ -928,23 +928,23 @@ availability_topic:
blue_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract blue color from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
- type: string
+ type: template
brightness_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract brightness from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
- type: string
+ type: template
color_temp_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract color temperature from the state payload value. Expected result of the template is an integer representing mired units."
required: false
- type: string
+ type: template
command_off_template:
description: "The [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) for *off* state changes. Available variables: `state` and `transition`."
required: true
- type: string
+ type: template
command_on_template:
description: "The [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) for *on* state changes. Available variables: `state`, `brightness`, `color_temp`, `red`, `green`, `blue`, `flash`, `transition` and `effect`. Values `red`, `green`, `blue`, `brightness` are provided as integers from range 0-255. Value of `color_temp` is provided as integer representing mired units."
required: true
- type: string
+ type: template
command_topic:
description: The MQTT topic to publish commands to change the light’s state.
required: true
@@ -1004,11 +1004,11 @@ effect_list:
effect_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract effect from the state payload value."
required: false
- type: string
+ type: template
green_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract green color from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
- type: string
+ type: template
icon:
description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity."
required: false
@@ -1061,7 +1061,7 @@ qos:
red_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract red color from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
- type: string
+ type: template
schema:
description: The schema to use. Must be `template` to select the template schema.
required: false
@@ -1070,7 +1070,7 @@ schema:
state_template:
description: "[Template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract state from the state payload value."
required: false
- type: string
+ type: template
state_topic:
description: The MQTT topic subscribed to receive state updates.
required: false
diff --git a/source/_integrations/lirc.markdown b/source/_integrations/lirc.markdown
index 01bce63a6aa..12bec615c0e 100644
--- a/source/_integrations/lirc.markdown
+++ b/source/_integrations/lirc.markdown
@@ -9,9 +9,9 @@ ha_domain: lirc
ha_integration_type: integration
---
-[LIRC](http://www.lirc.org/) integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other [automation](/integrations/automation/).
+[LIRC](https://www.lirc.org/) integration for Home Assistant allows you to receive signals from an infrared remote control and control actions based on the buttons you press. You can use them to set scenes or trigger any other [automation](/docs/automation/).
-Sending IR commands is not supported in this integration (yet), but can be accomplished using the [shell_command component](/integrations/shell_command/) in conjunction with the `irsend` command.
+Sending IR commands is not supported in this integration (yet), but can be accomplished using the [shell_command integration](/integrations/shell_command/) in conjunction with the `irsend` command.
## Installation
@@ -36,9 +36,9 @@ For more information have a look at `/usr/share/doc/lirc/README.Debian.gz` where
## Configuring LIRC
-Now teach LIRC about your particular remote control by preparing a lircd configuration file (`/etc/lirc/lircd.conf`). Search the [LIRC remote database](http://lirc.sourceforge.net/remotes/) for your model. If you can't find it, then you can always use the `irrecord` program to learn your remote. This will create a valid configuration file. Add as many remotes as you want by pasting them into the file. If `irrecord` doesn't work (e.g., for some air conditioner remotes), then the `mode2` program is capable of reading the codes in raw mode, followed by `irrecord -a` to extract hex codes.
+Now teach LIRC about your particular remote control by preparing a lircd configuration file (`/etc/lirc/lircd.conf`). Search the [LIRC remote database](https://lirc.sourceforge.net/remotes/) for your model. If you can't find it, then you can always use the `irrecord` program to learn your remote. This will create a valid configuration file. Add as many remotes as you want by pasting them into the file. If `irrecord` doesn't work (e.g., for some air conditioner remotes), then the `mode2` program is capable of reading the codes in raw mode, followed by `irrecord -a` to extract hex codes.
-Next, you have to make a `~/.lircrc` file that maps keypresses to system actions. The file has to be in the home dir of the user running Home Assistant, e.g., in `/home/homeassistant/.lircrc` if you're running in a virtual env. [The configuration](http://www.lirc.org/html/configure.html) is a bit tedious but it must be done. Use the `prog = home-assistant` for all keys you want to be recognized by Home Assistant. The values you set for `button` must be the same as in the `lircd.conf` file and the values you put for `config` entry will be the sensor value in Home Assistant when you press the button. An example may look like this:
+Next, you have to make a `~/.lircrc` file that maps keypresses to system actions. The file has to be in the home dir of the user running Home Assistant, e.g., in `/home/homeassistant/.lircrc` if you're running in a virtual env. [The configuration](https://www.lirc.org/html/configure.html) is a bit tedious but it must be done. Use the `prog = home-assistant` for all keys you want to be recognized by Home Assistant. The values you set for `button` must be the same as in the `lircd.conf` file and the values you put for `config` entry will be the sensor value in Home Assistant when you press the button. An example may look like this:
```bash
begin
diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown
index 7a494761678..34126f945c8 100644
--- a/source/_integrations/lock.mqtt.markdown
+++ b/source/_integrations/lock.mqtt.markdown
@@ -238,7 +238,7 @@ unique_id:
value_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a state value from the payload.
required: false
- type: string
+ type: template
{% endconfiguration %}
diff --git a/source/_integrations/london_air.markdown b/source/_integrations/london_air.markdown
index 5385ea9c77f..8e34851c4a0 100644
--- a/source/_integrations/london_air.markdown
+++ b/source/_integrations/london_air.markdown
@@ -13,7 +13,7 @@ ha_integration_type: integration
The `london_air` integration [queries](https://api.erg.kcl.ac.uk/AirQuality/Hourly/MonitoringIndex/GroupName=London/Json) the London air quality [data feed](https://www.londonair.org.uk/LondonAir/API/) provided by Kings College London. A single sensor will be added for each `location` ([local authority district or borough](https://en.wikipedia.org/wiki/List_of_London_boroughs)) specified in the configuration file. The state of each sensor is the overall air quality in that borough. Note that only 28 of the 32 boroughs have data available.
-Boroughs can have multiple monitoring sites at different geographical positions within the borough, and each of those sites can monitor up to six different kinds of pollutant. The pollutants are described [here](https://api.erg.kcl.ac.uk/AirQuality/Information/Species/Json) and are Carbon Monoxide ([CO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsCO.aspx)), Nitrogen Dioxide ([NO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsNO2.aspx)), Ozone ([O3](https://www.londonair.org.uk/LondonAir/guide/WhatIsO3.aspx)), Sulfur Dioxide ([SO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsSO2.aspx)), PM2.5 & PM10 [particulates](https://www.londonair.org.uk/LondonAir/guide/WhatIsPM.aspx). The `latitude` and `longitude` of each site is accessible through a `data` attribute of the sensor, as are details about the pollutants monitored at that site. The `sites` attribute of a sensor displays how many monitoring sites that sensor covers. The `updated` attribute of a sensor states when the data was last published. Nominally data is published hourly, but in my experience this can vary. To limit the number of requests made by the sensor, a single API request is made every 30 minutes.
+Boroughs can have multiple monitoring sites at different geographical positions within the borough, and each of those sites can monitor up to six different kinds of pollutant. The pollutants are described [here](https://api.erg.kcl.ac.uk/AirQuality/Information/Species/Json) and are Carbon Monoxide ([CO](https://www.londonair.org.uk/LondonAir/guide/WhatIsCO.aspx)), Nitrogen Dioxide ([NO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsNO2.aspx)), Ozone ([O3](https://www.londonair.org.uk/LondonAir/guide/WhatIsO3.aspx)), Sulfur Dioxide ([SO2](https://www.londonair.org.uk/LondonAir/guide/WhatIsSO2.aspx)), PM2.5 & PM10 [particulates](https://www.londonair.org.uk/LondonAir/guide/WhatIsPM.aspx). The `latitude` and `longitude` of each site is accessible through a `data` attribute of the sensor, as are details about the pollutants monitored at that site. The `sites` attribute of a sensor displays how many monitoring sites that sensor covers. The `updated` attribute of a sensor states when the data was last published. Nominally data is published hourly, but in my experience this can vary. To limit the number of requests made by the sensor, a single API request is made every 30 minutes.
To add sensors to Home Assistant for all possible areas/boroughs add the following to your `configuration.yaml` file:
diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown
index 1703d0c165a..fe77c3ecb0e 100644
--- a/source/_integrations/matter.markdown
+++ b/source/_integrations/matter.markdown
@@ -8,11 +8,11 @@ ha_category:
- Lock
- Sensor
- Switch
-ha_release: '2022.12'
+ha_release: "2022.12"
ha_iot_class: Local Push
ha_config_flow: true
ha_codeowners:
- - '@home-assistant/matter'
+ - "@home-assistant/matter"
ha_domain: matter
ha_platforms:
- binary_sensor
@@ -25,62 +25,101 @@ ha_platforms:
ha_integration_type: integration
---
-The Matter integration allows you to control Matter devices on your local WiFi or Thread network.
+The Matter integration allows you to control Matter devices on your local Wi-Fi or {% term Thread %} network.
-Matter is [the new standard for home automation](https://en.wikipedia.org/wiki/Matter_(standard)) which has just been released. It is in the process of being adopted by the tech industry. Matter is a local protocol, device control is done without the need of any cloud. You can use a Matter compatible device with Home Assistant without having to connect to a vendor specific cloud.
+
+The integration is marked BETA: Both the Matter standard itself and its implementation within Home Assistant are in a early stage. You may run into compatibility issues and/or other bugs.
+
-Matter devices are available using either WiFi based communication or [Thread](/integrations/thread/), both are supported by Home Assistant. Bluetooth is used for adding new devices to your Matter network.
+# What is Matter?
-Home Assistant only supports control of Matter devices. Home Assistant is not a bridge itself and it cannot turn devices within Home Assistant into Matter compatible devices.
+Matter is [the new standard for home automation](
), which has been released recently. It is in the process of being adopted by the tech industry. Matter is a local protocol. Device control is done without the need of any cloud. From a technical perspective, you can use a Matter-compatible device with Home Assistant without connecting to a vendor-specific cloud. However, some vendors may require you to set up an account before you can enable Matter.
-At this time there are only a few devices available that are compatible with the standard and some of them require you to join a beta/developer program. It is to be expected that more devices will hit the market during the 2nd quarter of 2023 and beyond.
+Unlike the radio based protocols we're already familiar with in the IoT landscape, like Zigbee and Z-Wave, Matter uses standard IP-based communication. Matter is not a radio protocol, but a control protocol that runs on top of the existing network infrastructure, using your existing Wi-Fi/Ethernet routers and Thread.
-
-Both the Matter standard itself and its implementation within Home Assistant are in a very early stage where only the basics are working and/or breaking changes can still happen. Using it in production is not recommended yet until it matures a bit more.
-
+Home Assistant is a so-called _controller_, it can control Matter based devices. Other examples of Matter controllers are the Google Nest speakers, Apple HomePods, and a SmartThings Station.
-One of the great features of Matter is the so called _Multi Fabric_ feature: you can join the same device to multiple controllers. For example: add it to Google Home, Apple Home, and Home Assistant at the same time.
+## Bridge devices
-For devices where Home Assistant provides a native integration (with local API), Matter may not be the best option. Matter, being a universal standard, might not have the nitty-gritty features that come with a product specific protocol. A good example is Philips Hue: the communication over Matter only provides the basic controls over lights, the official integration brings all Hue unique features like (dynamic) scenes, entertainment mode, etc.
+One of the great things about Matter is that you can have both Wi-Fi and Thread based devices on the same controller.
+Next to actual devices (like actors or sensors), you will also see bridges. The bridge connects the network over Ethernet or Wi-Fi and bridges multiple devices into a Matter network. A great example is the Philips Hue V2 bridge, which is a Zigbee hub and a Matter bridge. This bridge exposes all Zigbee devices already connected to the bridge as Matter devices on the network. Also, Aqara, SwitchBot, and IKEA have launched such Hub devices.
-
-The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices (and any Thread Border routers) must be on the same LAN/VLAN as Home Assistant. Implementations like mDNS reflectors usually do more harm than good.
-
+
+Home Assistant, as a Matter controller, only supports **control** of Matter devices. Home Assistant is not a bridge itself and it cannot turn existing devices within Home Assistant into Matter compatible devices.
+
+
+## Thread
+
+Matter goes hand-in-hand with (but is not the same as) [Thread](), which is a low power Radio mesh networking techology. Much like Zigbee, but with the key difference that it is _IP-addressable_, making it the perfect companion transport for Matter.
+
+Thread devices become directly addressable by Matter controllers (such as Home Assistant) thanks to the use of so-called Thread Border Routers, which are in fact just devices that are both within your network and have a Thread chip builtin and thus act as a "router" between the Thread radio signal and your local network. These border routers (you will probably end up having multiple of them in your house) make sure that your Thread-based devices are reachable on your regular network and thus can be controlled with Matter. Examples of Thread Borders routers are the Apple TV 4K, HomePod (gen 2 or Mini), and the Google Nest Hub V2, so devices that you may already own. Besides that, all kind of other border routers are available, built-in to hardware appliances or software solutions based on OpenThread Border Router, such as the add-on we provide to use with the built-in Zigbee/Thread chip of the [Home Assistant Yellow](/yellow/) or the [Home Assistant SkyConnect](/skyconnect/) dongle.
+
+To use any Thread-based devices on a Matter controller, you need to have at least one Thread Border router device within range of the device.
+More info about Thread and diagnosing Thread networks and Border routers, see the [Thread](/integrations/thread/) integration.
+
+
+Many devices that (will) hit the market will use Thread for radio communication and Matter as a control protocol, but this is not guaranteed. For example, Thread-based devices are available that only support Apple HomeKit or some vendor-specific communication protocol. There are also a few cases where you need to apply for a (beta) firmware update on the device to enable Matter as a communication protocol. Therefore, do not assume Matter support when you see a Thread logo when looking for devices. Please be sure to look for the *Matter* logo itself (on either Wi-Fi/Ethernet-based devices or Thread) or any other confirmation by the manufacturer that the device supports Matter.
+
+
+## Bluetooth
+
+Most (if not all) Matter-compliant devices will also have a Bluetooth chip onboard, this is to ease commissioning (a somewhat technical term for adding a device to your controller). Bluetooth will not be used to control a device but only to pair it after unboxing or factory resetting. The Home Assistant controller uses the Home Assistant Companion app to do commissioning, so you can bring your phone close to the device you want to commission. The controller will then send your network credentials to your device over Bluetooth in the commissioning process. If that succeeds, the device will communicate over its native interface, meaning Wi-Fi, Ethernet, or Thread.
+
+
+Although your Home Assistant server might have a Bluetooth adapter on board that the controller can use to commission devices, we choose not to utilize that adapter. Mainly to prevent issues with the built-in Bluetooth integration but also because it makes more sense to bring your mobile devices close to the Matter device you'd like to commission.
+
+
+## Multi fabric: join to multiple controllers
+
+One of the great features of Matter is the so-called _Multi Fabric_ feature: you can join the same device to multiple controllers. For example, simultaneously add it to Google Home, Apple Home, and Home Assistant. The standard describes that each device should be able to at least support 5 different fabrics simultaneously.
+
+For devices where Home Assistant provides a native integration (with local API), Matter may not be the best option. Matter, being a universal standard, might not have the nitty-gritty features that come with a product-specific protocol. A good example is Philips Hue: the communication over Matter only provides the basic controls over lights, while the official [Hue integration](/integrations/hue) brings all Hue unique features like (dynamic) scenes, entertainment mode, etc.
+
+
+
+Image taken from [this excellent article by The Verge](https://www.theverge.com/23165855/thread-smart-home-protocol-matter-apple-google-interview) about Matter that shows the landcape of Matter, Thread, Border routers and bridges in a nice visualized way.
{% include integrations/config_flow.md %}
-_If you run Home Assistant Container, Home Assistant Core, or you don’t want to use the built-in Matter Server add-on, please see the [advanced installation instructions](#advanced-installation-instructions)._
+For communicating with Matter devices, the Home Assistant integration runs its own "Matter controller" in a separate process which will be launched as an add-on. This add-on runs the controller software and connects your Matter network (called Fabric in technical terms) and Home Assistant. The Home Assistant Matter integration connects to this server via a WebSocket connection.
+
+The only supported configuration (for now) for the Matter integration is by running the officially provided Home Assistant Matter add-on. Running the [Matter server](https://github.com/home-assistant-libs/python-matter-server) by any other means is at your own risk and is currently not officially supported.
## Current state of the integration
-While the support for Matter is evolving, we will regularly update the Matter integration with new features or device support. Because it might be hard to track what's supported and what not, we list the current state here and try to update this information as often as possible.
+While the support for Matter is evolving, we will regularly update the Matter integration with new features or device support. Because it might be hard to track what's supported and what's not, we list the current state here and try to update this information regularly.
-Platform support in Home Assistant is currently limited to switches, lights, locks, covers and (binary) sensors.
+Supported platforms (device types):
-### Known issues
+- Binary sensor: We have so far tested door/window sensors and motion sensors, but others will probably work too.
+- Climate: Support for thermostat devices is in development now.
+- Cover: Has been implemented, but support for a tilt feature is still missing.
+- Lights: All features (in the Matter specification) should be supported, including color control, etc.
+- Locks: Basic lock control has been implemented, but not all devices and features are supported yet.
+- Sensor: We have tested Illuminance and temperature sensors, but others will probably work too.
+- Switch: Powerplugs should work (note: no support for energy metering yet in Matter).
-- Support for bridges (e.g. Hue bridge) is NOT working yet. Please do not try to add a bridge as it will break the integration.
-- Door/window sensors show up reversed (closed instead of open)
+Note that a single Matter device can exist on multiple platforms. For example, a Motion sensor also has a temperature sensor and an illuminance sensor on board.
-_Both issues will be fixed in Home Assistant 2023.3._
+If you own a (bridged) Matter device and you are missing controls for this device, create an issue on [GitHub](https://github.com/home-assistant/home-assistant.io) and make sure to post your Integration diagnostics there. In some cases, we can easily extend the existing platform support based on your diagnostics dump.
## Adding Matter devices to Home Assistant
-Each Matter network is called a fabric. Each home automation controller that controls Matter devices has its own fabric. You can add devices directly to the fabric of your Home Assistant instance, or share them from another fabric (ie Google, Apple) to Home Assistant's fabric. We're going to explore all these options below.
+Each Matter network is called a fabric. Each home automation controller that controls Matter devices has its own "fabric". You can add devices directly to the fabric of your Home Assistant instance, or share them from another fabric (ie Google, Apple) to Home Assistant's fabric. We're going to explore all these options below.
### Add a device using the iOS Companion app
This will use the Bluetooth connection of your phone to add the device.
-1) Open The Home Assistant app on your phone.
-2) Go to Settings, Devices & Services.
-3) On the Devices tab, press the `Add device` button.
-4) Choose `Add Matter device` as the top of the list.
-5) Scan the QR-code of the Matter device with your phone camera or press `More options...` to manually enter the Commission code.
-6) Press the `Add to Home Assistant` button which will start the commissioning process which may take up to a few minutes.
-7) If you're adding a test board or beta device you might get a prompt about an Uncertified Accessory". In this dialog press `Add Anyway`.
-8) Once prompted you can enter a custom Accessory Name, this is just an internal reference and not visible in Home Assistant so you can type whatever you like here.
-9) Once the process is complete and you pressed the `Done` button, you are redirected to the Device within Home Assistant and its ready for use.
+1. Open The Home Assistant app on your phone.
+2. Go to {% my integrations title="**Settings** > **Devices & Services**" %}.
+3. On the **Devices** tab, press the **Add device** button.
+4. Choose **Add Matter device** at the top of the list.
+5. Scan the QR-code of the Matter device with your phone camera or press **More options...** to manually enter the Commission code.
+6. Select the **Add to Home Assistant** button which will start the commissioning process which may take up to a few minutes.
+7. If you're adding a test board or beta device, you might get a prompt about an "Uncertified Accessory". In this dialog, select **Add Anyway**.
+8. Once prompted, you can enter a custom **Accessory Name**, this is just an internal reference and not visible in Home Assistant. You can type whatever you like here.
+9. Once the process is complete and you pressed the **Done** button, you are redirected to the device within Home Assistant. It is ready for use.
@@ -88,14 +127,14 @@ This will use the Bluetooth connection of your phone to add the device.
This will use the Bluetooth connection of your phone to add the device.
-1) Open The Home Assistant app on your phone.
-2) Go to Settings, Devices & Services.
-3) On the Devices tab, press the `Add device` button.
-4) Choose `Add Matter device` as the top of the list.
-5) Scan the QR-code of the Matter device with your phones camera or press the `Setup without QR-code` button to manually enter the Commission code.
-6) The process will start adding the device which takes up to a few minutes.
-7) If you're adding a test board (e.g. ESP32 running the example apps) and commissioning fails, you might need to take some actions in the Google Developer console, have a look at any instructions for your test device.
-8) Once the process is complete and you pressed the `Done` button, you are redirected to the Device within Home Assistant and its ready for use.
+1. Open The Home Assistant app on your phone.
+2. Go to {% my integrations title="**Settings** > **Devices & Services**" %}.
+3. On the **Devices** tab, press the **Add device** button.
+4. Choose **Add Matter device** as the top of the list.
+5. Scan the QR-code of the Matter device with your phones camera or select the **Setup without QR-code** button to manually enter the commission code.
+6. The process will start adding the device which takes up to a few minutes.
+7. If you're adding a test board (e.g. ESP32 running the example apps) and commissioning fails, you might need to take some actions in the Google Developer console, have a look at any instructions for your test device.
+8. Once the process is complete and you pressed the **Done** button, you are redirected to the device within Home Assistant. It is ready for use.
@@ -103,9 +142,9 @@ This will use the Bluetooth connection of your phone to add the device.
This method will allow you to select a Matter device from Apple Home and share it to Home Assistant. The result is that the device can be controlled from both Apple Home and Home Assistant at the same time.
-1) Find your device in Apple Home and press the jogwheel to edit it. In the page with detailed descriptions and settings for the device, scroll all the way down and press the button `Turn On Pairing Mode`.
-2) You are now given a Setup code, copy this to the clipboard.
-3) Follow the [Add a device using the iOS Companion app](#add-a-device-using-the-ios-companion-app) directions above to add the device to Home Assistant where you paste the code you just received from Apple Home.
+1. Find your device in Apple Home and press the jogwheel to edit it. In the page with detailed descriptions and settings for the device, scroll all the way down and press the button **Turn On Pairing Mode**.
+2. You are now given a Setup code, copy this to the clipboard.
+3. Follow the [Add a device using the iOS Companion app](#add-a-device-using-the-ios-companion-app) directions above to add the device to Home Assistant where you paste the code you just received from Apple Home.
@@ -113,94 +152,114 @@ This method will allow you to select a Matter device from Apple Home and share i
This method will allow you to share a device that was added to Google Home to Home Assistant. The result is that the device can be controlled from both Google Home and Home Assistant at the same time.
-1) Open the device in Google Home and press the settings button (jog wheel) in the top right.
-2) Click `Linked Matter apps and services`.
-3) Press the button `Link apps and services` to link the device to Home Assistant.
-4) Choose Home Assistant from the list, you are redirected to the Home Assistant Companion app now. Press `Add device`.
-5) Your device will now be added to Home Assistant. When the process finishes, you're redirected to the device page in Home Assistant.
+1. Open the device in Google Home and press the settings button (jog wheel) in the top right.
+2. Click **Linked Matter apps and services**.
+3. Press the button **Link apps and services** to link the device to Home Assistant.
+4. Choose Home Assistant from the list, you are redirected to the Home Assistant Companion app now. Press **Add device**.
+5. Your device will now be added to Home Assistant. When the process finishes, you're redirected to the device page in Home Assistant.
-## Device specific instructions
+
+At this time it is not yet possible to share a device from Home Assistant to another platform. This feature should be added after the Matter SDK 1.1 is released.
+
-Because availability of actual Matter devices is sparse and proper HOWTO documentation even more, we provide a few step by step instructions for devices we have currently tested.
+## Experiment with Matter using a ESP32 dev board
-### TP-Link Tapo P125M (power plug)
-
-This device runs Matter out of the box, so you can add it directly to the controller(s) of your choice!
-
-Look for the M addition in the model name, a device without the M (regular P125) is not Matter compliant. This device is available in the US only.
-
-[TP-Link Tapo P125M on Amazon](https://amzn.to/3RILJah)
-
-### ESP32 dev board running Matter example app
-
-This is the most convenient and easy way to start playing with Matter. We have [prepared a page for you](https://nabucasa.github.io/matter-example-apps/) where you can easily flash Matter firmware to a supported ESP32 development board. We actually recommend the M5 Stamp C3 device running the Lightning app.
+You do not yet have any Matter-compatible hardware but you do like to try it out or maybe create your own DIY Matter device? We have [prepared a page for you](https://nabucasa.github.io/matter-example-apps/) where you can easily flash Matter firmware to a supported ESP32 development board. We recommend the M5 Stamp C3 device running the Lightning app.
NOTE for Android users: You need to follow the instructions at the bottom of the page to add the test device to the Google developer console, otherwise commissioning will fail. iOS users will not have this issue but they will get a prompt during commissioning asking if you trust the development device.
-1) Make sure you are using the Google Chrome or Microsoft Edge browser.
-2) Open https://nabucasa.github.io/matter-example-apps/
-3) Attach the ESP32 device using an USB cable.
-4) Click the radiobutton next to the example you like to setup, in case of an M5 Stamp, click `Lightning app for M5STAMP C3`.
-5) Press `Connect`.
-6) In the popup dialog that appears choose the correct serial device, in most cases this will be something like "cu-usbserial" or alike.
-7) Click `Install Matter Lightning app example` and let it install the firmware on the device, this will take a few minutes.
-8) Once the device is flashed with the Matter firmware, connect to the device again but this time choose `Logs & console`.
-9) You are presented with a console interface where you see live logging of events. This is actually an interactive shell where you can type commands. For a list of all commands, type `matter help` and press enter.
-10) To add the device, we need the QR code. In the console type in `matter onboardingcodes ble` and copy/paste the URL in your browser.
-11) Use the QR code to add the device using one of the above instructions on your phone, e.g. using the Home Assistant Companion app.
+1. Make sure you use Google Chrome or Microsoft Edge browser.
+2. Open https://nabucasa.github.io/matter-example-apps/
+3. Attach the ESP32 device using a USB cable.
+4. Select the radio button next to the example you like to set up, in case of an M5 Stamp, click **Lightning app for M5STAMP C3**.
+5. Select **Connect**.
+6. In the popup dialog that appears, choose the correct serial device. This will usually be something like "cu-usbserial" or alike.
+7. Click **Install Matter Lightning app example** and let it install the firmware on the device. This will take a few minutes.
+8. Once the device is flashed with the Matter firmware, connect to the device again but this time choose **Logs & console**.
+9. You are presented with a console interface where you see live logging of events. This is an interactive shell where you can type commands. For a list of all commands, type **matter help** and press enter.
+10. To add the device, we need the QR code. In the console, type in `matter onboardingcodes ble` and copy/paste the URL into your browser.
+11. Use the QR code to add the device using one of the above instructions on your phone, e.g. using the Home Assistant Companion app.
+
+## Known working devices
+
+Because the availability of actual Matter devices (and their documentation) is sparse, we provide a list of all known working devices that are tested by the Home Assistant Matter developers and/or the community to help you find the device you need. Note: The list below is ordered alphabetically, and some links contain affiliate links.
+
+Did you test a device that is not listed below? It would be greatly appreciated if you share your experience either on the Matter discord channel or contribute a PR (or suggestion) to this documentation page so you can help others, thanks in advance!
+
+### Aqara M2 Hub
+
+- Bridges Aqara (Zigbee) devices connected to the hub to Matter.
+- You need to enable Matter support/firmware in the Aqara app.
+- You will need an Aqara (cloud) account and the app before you can use Matter.
+- See [this Aqara landingpage](https://www.aqara.com/en/article-1583275073188196352.html) for more information, including what devices are bridged.
+- Thermostat devices (climate platform) are not supported yet (but are currently in development).
+- Device events, for example for the wall rockers and Cube, are not supported.
### Eve Energy (power plug), Eve Door & Window (contact sensor), Eve Motion (motion sensor)
-1) Look for the Thread logo on the box to ensure you have the new device which is compatible with Matter.
-2) The Eve device runs on HomeKit by default, you will need an iOS device to set it up out of the box.
-3) The Eve device uses Thread for communication, therefore you will need to have a Thread Border Router configured in your network setup, such as the Apple TV 4K (2021/2022), Homepod Mini, or Homepod V2.
-4) You need to join the [Eve Beta program here](https://www.evehome.com/en/meet-matter) and wait for instructions per email.
-5) Update the firmware of your Eve device using the Eve beta app to Matter.
-6) During the update process the Eve app will create a new QR code for you to save somewhere safe. This QR code is required when you want to add the device to a Matter controller. The normal QR code attached to the device will no longer work!
-7) During the upgrade process, the Eve app will join the device to Apple Home using Matter.
-8) Confirm that the device is working properly within Apple Home.
-9) Follow our instructions above to share the device from Apple Home to Home Assistant.
+- If you see a Matter logo on the box, the device runs Matter already and you can add it to HA immediately.
+- If there is a Thread logo, you need to install the Matter firmware using the Eve app.
+- No Matter logo and no Thread logo on the box? The device is not Matter compatible.
+- The energy metering feature of the Eve plug will not work in Home Assistant (Apple only feature).
+- Eve has just released official Matter support so ignore any documentation about the beta program.
-Once the initial firmware upgrade to Matter is complete, the device can also be paired to non-Apple based Thread networks, like Google Home or later Home Assistant's own Thread implementation based on OTBR but you do need an Apple ecosystem running (iOS phone + Border router) for the first time setup.
+[Eve Energy on Amazon](https://amzn.to/3YuO62P)
+[Eve Door & Window on Amazon](https://amzn.to/3RIU6ml)
+[Eve Motion on Amazon](https://amzn.to/3jDujiP)
-- [Eve Energy on Amazon](https://amzn.to/3YuO62P)
-- [Eve Door & Window on Amazon](https://amzn.to/3RIU6ml)
-- [Eve Motion on Amazon](https://amzn.to/3jDujiP)
+### Nanoleaf Matter bulbs and Lightstrips
+
+- Although the products work great once commissioned, multiple users have reported that commissioning them can be a bit difficult and requires some patience and multiple resets or optimizations to your home network.
+- Check the [Nanoleaf Matter infopage](https://nanoleaf.me/en-EU/integration/matter/) for all supported products and instructions.
+
+### Philips Hue (V2) Bridge
+
+The Philips Hue V2 bridge supports Matter since a recent update (the beta program closed, it is now officially available). You can enable Matter support from the Hue app after which you can commission it to Home Assistant and other fabrics.
+
+- Binding the Hue bridge to Home Assistant does not make sense because you will lose functionality over the default Hue integration in Home Assistant, such as button press events and (dynamic) scenes.
+- You will need a Hue/Signify (cloud) account and the app before you can use Matter.
+- Device events for example for dimmer remotes are not supported.
+- Only basic control of lights is supported, no scenes, events, effects etc.
+
+### TP-Link Tapo P125M (power plug)
+
+- Look for the M addition in the model name, a device without the M (regular P125) is not Matter compliant.
+- This device is available in the US only.
+
+[TP-Link Tapo P125M on Amazon](https://amzn.to/3RILJah)
## Troubleshooting
-### I do not see the option to add a Matter device in the settings
-We've added the option to **Add a Matter device** from the **Settings**>**Devices** in a recent version of the Home Assistant frontend, available from version 2023.3 and upwards or if you're running the Home Assistant nightly channel. If you are on a previous version of Home Assistant, you should see a button **Configure** on the Matter integration card within **Settings**>**Devices & Services**>**Integrations**. Click that **Configure** button and you should be able to see the **Commission** button on the Companion app.
+### General recommendations
+
+- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS (version 10 and above) because of kernel patches to solve routing issues. Not using HAOS (and thus the official Matter add-on) is at your own risk.
+
+- To use Thread devices you will need a Thread Network with at least one Thread Border Router in your network nearby the Thread device(s). Apple users need for example the Apple TV 4K or the HomePod Mini, while Google users need a Nest Hub V2. Use the Thread integration in Home Assistant to diagnose your Thread network(s).
+
+- Start simple and work from there, keep your network easy and add for example an ESP32 test device. Once that works, move on to the next step or more devices.
+
+- Realize that you are an early adopter, both on the hardware side and on the software (controller) side so you may run into compatibility issues or features that are still missing. Report any issues you may find and help out others if you find a workaround or tested a device.
+
+- Make sure IPv6 (multicast) traffic travels freely from your network to the Home Assistant host. There is no requirement to have an IPv6-enabled internet connection or DHCPv6 server. However, IPv6 support has to be enabled (it's enabled by default on Home Assistant OS).
### I do not see the button "Commission using the Companion app"
+
This button will only be visible within the Home Assistant Companion App (so not in the browser) and your device meets all requirements for Matter support.
+
- For iOS, minimum version is iOS 16 (minimal 16.3 is preferred) and the most recent version of the HA companion app.
- For Android, minimum version is 8.1 and the most recent version of both the Google Home app and the (full) HA Companion app, downloaded from the app store.
### When I'm trying to commission using the Android app, I get an error stating "Matter is currently unavailable"
-See above, make sure your device meets all requirements to support Matter. Update Android to the latest version and the Google Home and Home Assistant Companion app. To quickly verify if your device meets all requirements to support Matter, on your Android device go to **Settings**>**Google**>**Devices & Sharing**. There should be an entry there for **Matter devices**.
+
+See above, make sure your device meets all requirements to support Matter. Update Android to the latest version and the Google Home and Home Assistant Companion app. To quickly verify if your device meets all requirements to support Matter, on your Android device, go to **Settings** > **Google** > **Devices & Sharing**. There should be an entry there for **Matter devices**.
+
+Some users have reported that uninstalling and reinstalling the Google Home app fixed this issue for them.
+Also see this [extended troubleshooting guide](https://developers.home.google.com/matter/verify-services) from Google.
### Unable to commission devices, it keeps giving errors or stops working randomly
-We've seen cases (e.g. on UniFi hardware) where IPv6 derived from the Internet Provider causes issues with the discovery of Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and do not play nice with enterprise solutions like VLAN's, Multicast filtering, and IGMP snooping. To avoid issues, try to keep your network as simple and flat as possible.
-## Advanced installation instructions
+The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices that use Wi-Fi (including Thread Border routers) must be on the same LAN/VLAN as Home Assistant. Matter devices that only use Thread must be joined to Thread networks for which there is at least one border router connected to the Home Assistant LAN.
-If you are using Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Matter Server add-on, you will need to run the Matter Server yourself, to which the Matter integration will connect.
-
-### Running Matter Server
-
-This application provides the connection between your Matter network (called Fabric in technical terms) and Home Assistant. The Home Assistant Matter integration connects to this server via a websocket connection. You need to run the Matter Server before you can use the integration.
-
-There are multiple ways to run the server:
-
-**Option 1: The official Matter Server add-on, as described above**
-
-_This option is only available for Home Assistant OS (the recommended installation type) and Home Assistant Supervised installations._
-
-**Option 2: Run the Matter server yourself**
-
-This option is considered a very advanced setup and only for experienced users. You can find instructions on how to run the Matter Server in the [project repository](https://github.com/home-assistant-libs/python-matter-server).
-
-_Disclaimer: Some links on this page are affiliate links._
+Investigate your network topology if you experience any issues with discovering devices (like the initial commission keeps failing) or if devices become unavailable randomly. For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and do not play nicely with enterprise networking solutions like VLANs, Multicast filtering, and IGMP snooping. Try to keep your network as simple and flat as possible to avoid issues.
diff --git a/source/_integrations/monessen.markdown b/source/_integrations/monessen.markdown
new file mode 100644
index 00000000000..56753708453
--- /dev/null
+++ b/source/_integrations/monessen.markdown
@@ -0,0 +1,30 @@
+---
+title: "Monessen"
+description: Connect and control your Monessen fireplace using the IntelliFire integration
+ha_category:
+ - Binary Sensor
+ - Climate
+ - Fan
+ - Light
+ - Number
+ - Sensor
+ - Switch
+ha_domain: monessen
+ha_integration_type: virtual
+ha_supporting_domain: intellifire
+ha_supporting_integration: IntelliFire
+ha_release: 2022.3
+ha_codeowners:
+ - '@jeeftor'
+ha_platforms:
+ - binary_sensor
+ - climate
+ - fan
+ - light
+ - number
+ - sensor
+ - switch
+ha_iot_class: Local Polling
+---
+
+{% include integrations/supported_brand.md %}
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index 1be4b913630..ab89f6c9866 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -80,6 +80,12 @@ If you experience an error message like `Failed to connect due to exception: [SS
Advanced broker configuration options include setting a custom client ID, setting a client certificate and key for authentication and enabling TLS validation of the brokers certificate for. To access the advanced settings, open the MQTT broker settings, switch on `Advanced options` and click `Next`. The advanced options will be shown by default if there are advanced settings active already.
+
+
+Advanced broker options are accessible only when advanced mode is enabled (see user settings), or when advanced broker settings are configured already.
+
+
+
#### Alternative client ID
You can set a custom MQTT client ID, this can help when debugging. Mind that the client ID must be unique. Leave this settings default if you want Home Assistant to generate a unique ID.
@@ -280,6 +286,10 @@ Configuration variable names in the discovery payload may be abbreviated to cons
'curr_temp_tpl': 'current_temperature_template',
'dev': 'device',
'dev_cla': 'device_class',
+ 'dir_cmd_t': 'direction_command_topic',
+ 'dir_cmd_tpl': 'direction_command_template',
+ 'dir_stat_t': 'direction_state_topic',
+ 'dir_val_tpl': 'direction_value_template',
'dock_t': 'docked_topic',
'dock_tpl': 'docked_template',
'e': 'encoding',
@@ -369,6 +379,8 @@ Configuration variable names in the discovery payload may be abbreviated to cons
'pl_cln_sp': 'payload_clean_spot',
'pl_cls': 'payload_close',
'pl_disarm': 'payload_disarm',
+ 'pl_dir_fwd': 'payload_direction_forward',
+ 'pl_dir_rev': 'payload_direction_reverse',
'pl_home': 'payload_home',
'pl_inst': 'payload_install',
'pl_lock': 'payload_lock',
@@ -523,6 +535,8 @@ The following software has built-in support for MQTT discovery:
- [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)
+- [Nuki Hub](https://github.com/technyon/nuki_hub)
+- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support)
- [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)
diff --git a/source/_integrations/notify.command_line.markdown b/source/_integrations/notify.command_line.markdown
deleted file mode 100644
index b1d6b5e32ab..00000000000
--- a/source/_integrations/notify.command_line.markdown
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: "Command line Notify"
-description: "Instructions on how to add command line notifications to Home Assistant."
-ha_category:
- - Notifications
-ha_release: 0.14
-ha_domain: command_line
----
-
-The `command_line` platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN.
-
-To enable those notifications in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-notify:
- - name: NOTIFIER_NAME
- platform: command_line
- command: "espeak -vmb/mb-us1"
-```
-
-{% configuration %}
-name:
- description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`.
- required: false
- default: notify
- type: string
-command:
- description: The action to take.
- required: true
- type: string
-command_timeout:
- description: Defines number of seconds for command timeout.
- required: false
- type: integer
- default: 15
-{% endconfiguration %}
-
-To use notifications, please see the [getting started with automation page](/getting-started/automation/).
diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown
index 5dbcb101c92..81f2a883c96 100644
--- a/source/_integrations/number.mqtt.markdown
+++ b/source/_integrations/number.mqtt.markdown
@@ -106,7 +106,8 @@ device:
required: false
type: string
device_class:
- description: The [type/class](/integrations/number/#device-class) of the number.
+ description: The [type/class](/integrations/number/#device-class) of the number. The `device_class` can be `null`.
+ default: None
required: false
type: device_class
default: None
@@ -194,7 +195,8 @@ unique_id:
required: false
type: string
unit_of_measurement:
- description: Defines the unit of measurement of the sensor, if any.
+ description: Defines the unit of measurement of the sensor, if any. The `unit_of_measurement` can be `null`.
+ Default: None
required: false
type: string
value_template:
diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown
index 0adcee441df..847d057df01 100644
--- a/source/_integrations/nut.markdown
+++ b/source/_integrations/nut.markdown
@@ -17,9 +17,7 @@ ha_platforms:
ha_integration_type: device
---
-The Network UPS Tools (NUT) integration allows you to monitor a UPS
-(battery backup) by using data from a [NUT](https://networkupstools.org/)
-server.
+The Network UPS Tools (NUT) integration allows you to monitor and manage a UPS (battery backup) using a [NUT] https://networkupstools.org/) server. It lets you view their status, receives notifications about important events, and execute commands as device actions.
{% include integrations/config_flow.md %}
@@ -72,3 +70,38 @@ values with `ups`, `battery`, `input` and `output` prefixes.
An additional virtual sensor type `ups.status.display` is available
translating the UPS status value retrieved from `ups.status` into a
human-readable version.
+
+## Device Actions
+
+A device action is available for each parameterless NUT [command](https://networkupstools.org/docs/user-manual.chunked/apcs03.html) supported by the device. To find the list of supported commands for
+your specific UPS device, you can use the `upscmd -l` command followed by the UPS name:
+
+```bash
+$ upscmd -l my_ups
+Instant commands supported on UPS [my_ups]:
+beeper.disable - Disable the UPS beeper
+beeper.enable - Enable the UPS beeper
+test.battery.start.quick - Start a quick battery test
+test.battery.stop - Stop the battery test
+```
+
+These commands will be available as device actions in Home Assistant, allowing you to interact with your UPS.
+
+### User Credentials and Permissions
+
+To execute device actions through the NUT integration, you must specify user credentials in the configuration. These credentials are stored in the `upsd.users` file, part of the NUT server configuration. This file defines the usernames, passwords, and permissions for users accessing the UPS devices.
+
+No actions will be available if no user credentials are specified for a given device.
+
+Ensure the user you specify has the required permissions to execute the desired commands. Here's an example of a user with command permissions in the `upsd.users` file:
+
+```text
+[my_user]
+ password = my_password
+ actions = SET
+ instcmds = ALL
+```
+
+In this example, the user `my_user` has permission to execute all commands (`instcmds = ALL`).
+
+Please note that Home Assistant cannot determine whether a user can access a specific action without executing it. If you attempt to perform an action for which the user does not have permission, an exception will be thrown at runtime.
diff --git a/source/_integrations/obihai.markdown b/source/_integrations/obihai.markdown
index a7bd5328d3e..3443ccd28f7 100644
--- a/source/_integrations/obihai.markdown
+++ b/source/_integrations/obihai.markdown
@@ -14,6 +14,7 @@ ha_platforms:
- button
- sensor
ha_integration_type: integration
+ha_dhcp: true
---
The `obihai` integration allows you to view the call status for your [Obihai devices](https://www.obitalk.com/info/products#home_section).
diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown
index 32eeccc7ce1..7314ab3eeda 100644
--- a/source/_integrations/pi_hole.markdown
+++ b/source/_integrations/pi_hole.markdown
@@ -22,10 +22,23 @@ ha_integration_type: integration
---
The Pi-hole integration allows you to retrieve statistics and interact with a
-[Pi-hole](https://pi-hole.net/) system. If your Pi-hole web interface is password protected, an API key is needed for the setup (_from Settings -> API / Web interface_).
+[Pi-hole](https://pi-hole.net/) system.
{% include integrations/config_flow.md %}
+During the setup, it will ask for the following:
+
+| Item | Description | Example |
+| ---- | ----------- | ------- |
+| `Host` | The IP or domain name to Pi-Hole | 192.168.1.1 |
+| `Port` | Port used to get to the admin page | 80 |
+| `Name` | Name to for this Pi-Hole. | Pi-Hole |
+| `Location` | the path to the admin page. | /admin |
+
+The combined host, port and location should take you to the login page of Pi-Hole. Using the example above, it would be `http://192.168.1.1:80/admin`.
+
+If your Pi-hole web interface is password protected, an API key will be requested by Home Assistant after submitting the initial details above. You can get the API key by logging into your Pi-Hole and going to _from Settings > API_ and then the **Show API token** button.
+
## Services
The platform provides the following services to interact with your Pi-hole. Use switch entities when calling the services.
diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown
index cf764e30cbf..8b7de9877f9 100644
--- a/source/_integrations/python_script.markdown
+++ b/source/_integrations/python_script.markdown
@@ -23,7 +23,7 @@ This integration allows you to write Python scripts that are exposed as services
Other imports like `min`, `max` are available as builtins. See the [python_script](https://github.com/home-assistant/core/blob/dev/homeassistant/components/python_script/__init__.py) source code for up-to-date information on the available objects inside the script.
-[hass-api]: /developers/development_hass_object/
+[hass-api]: https://developers.home-assistant.io/docs/dev_101_hass/
[logger-api]: https://docs.python.org/3.7/library/logging.html#logger-objects
diff --git a/source/_integrations/rapt_ble.markdown b/source/_integrations/rapt_ble.markdown
new file mode 100644
index 00000000000..0b9121ee579
--- /dev/null
+++ b/source/_integrations/rapt_ble.markdown
@@ -0,0 +1,26 @@
+---
+title: RAPT Bluetooth
+description: Instructions on how to integrate RAPT Pill Hydrometers configured in Bluetooth mode into Home Assistant.
+ha_category:
+ - Sensor
+ha_bluetooth: true
+ha_release: 2023.5
+ha_iot_class: Local Push
+ha_codeowners:
+ - '@sairon'
+ha_domain: rapt_ble
+ha_config_flow: true
+ha_platforms:
+ - sensor
+ha_integration_type: integration
+---
+
+Integrates [RAPT Pill](https://www.kegland.com.au/rapt-pill-hydrometer-thermometer-wifi-bluetooth.html) hydrometers into Home Assistant.
+
+{% include integrations/config_flow.md %}
+
+The RAPT Pill BLE integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. RAPT Pill must be switched to the Bluetooth mode in Settings - Telemetry method. See the [user manual](https://cdn.shopify.com/s/files/1/0667/3019/7248/files/KL20596_-_RAPT_Pill_Hydrometer_and_Thermometer_Quick_Start_Guide.pdf) for detailed instructions.
+
+## Supported devices
+
+- [RAPT Pill Hydrometer & Thermometer](https://www.kegland.com.au/rapt-pill-hydrometer-thermometer-wifi-bluetooth.html)
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index e403324f7a6..c4ee4901183 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -111,6 +111,7 @@ Depending on the supported features of the camera, select entities are added for
- PTZ preset
- 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)
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.
@@ -132,6 +133,7 @@ Depending on the supported features of the camera, switch entities are added for
- Auto tracking
- Auto focus
- Guard return
+- Doorbell button sound
Depending on the supported features of the NVR/host, global switch entities are added for:
@@ -193,7 +195,8 @@ The following models have been tested and confirmed to work:
Battery-powered cameras are not yet supported.
-The following models are lacking the HTTP webserver API and can therfore not work with this integration:
+The following models are lacking the HTTP web server API and can, therefore, not work directly with this integration.
+However, these cameras can work with this integration through an NVR in which the NVR is connected to Home Assistant.
- E1 Pro
- E1
diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown
index c776fc8fc7f..9b2711d8747 100644
--- a/source/_integrations/rest.markdown
+++ b/source/_integrations/rest.markdown
@@ -132,6 +132,11 @@ verify_ssl:
required: false
type: boolean
default: True
+ssl_cipher_list:
+ description: Define the list of SSL ciphers to be accepted from this endpoint. `python_default` (_default_), `modern` or `intermediate` (_inspired by [Mozilla Security/Server Side TLS](https://wiki.mozilla.org/Security/Server_Side_TLS)_).
+ required: false
+ type: string
+ default: default
timeout:
description: Defines max time to wait data from the endpoint.
required: false
diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown
index 9de58cdc5c6..45d463d29ba 100644
--- a/source/_integrations/roborock.markdown
+++ b/source/_integrations/roborock.markdown
@@ -1,43 +1,25 @@
---
title: Roborock
-description: Connect and control your Roborock devices using the Xiaomi Miio integration
+description: Instructions on how to integrate Roborock vacuums into Home Assistant
ha_category:
- - Alarm
- - Fan
- - Health
- - Hub
- - Light
- - Presence Detection
- - Remote
- Vacuum
-ha_domain: roborock
-ha_integration_type: virtual
-ha_supporting_domain: xiaomi_miio
-ha_supporting_integration: Xiaomi Miio
-ha_release: 0.51
-ha_codeowners:
- - '@rytilahti'
- - '@syssi'
- - '@starkillerOG'
-ha_config_flow: true
-ha_platforms:
- - air_quality
- - alarm_control_panel
- - binary_sensor
- - button
- - device_tracker
- - diagnostics
- - fan
- - humidifier
- - light
- - number
- - remote
- - select
- - sensor
- - switch
- - vacuum
+ - Select
ha_iot_class: Local Polling
-ha_zeroconf: true
+ha_release: 2023.5
+ha_config_flow: true
+ha_codeowners:
+ - '@humbertogontijo'
+ - '@Lash-L'
+ha_domain: roborock
+ha_platforms:
+ - vacuum
+ha_integration_type: integration
---
-{% include integrations/supported_brand.md %}
+The Roborock integration allows you to control your [Roborock](https://us.roborock.com/pages/robot-vacuum-cleaner) vacuum while continuing to use the Roborock app.
+
+In contrast to [Xiaomi Miio](/integrations/xiaomi_miio/) integration, this integration provides more complete support but requires cloud access to set up and device configuration using the Roborock app.
+
+Once you log in with your Roborock account, the integration will automatically discover your Roborock devices and get the needed information to communicate locally with them. Please ensure your Home Assistant instance can communicate with the local IP of your device. We recommend setting a static IP for your Roborock Vacuum to help prevent future issues.
+
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/schedule.markdown b/source/_integrations/schedule.markdown
index b8fc078ccac..1ad04a09f4b 100644
--- a/source/_integrations/schedule.markdown
+++ b/source/_integrations/schedule.markdown
@@ -17,12 +17,12 @@ Home Assistant that can be used to trigger or make decisions in your
automations and scripts.
The preferred way to configure a schedule is via the user interface at
-**Settings** -> **Devices & Services** -> **Helpers**. Click the add button
-and then choose the **Schedule** option, or click the My button below.
+**{% my helpers title="Settings > Devices & Services > Helpers." %}** Click the add button
+and then choose the **{% my config_flow_start domain=schedule title="Schedule" %}** option, or click the My button below.
{% include integrations/config_flow.md %}
-To be able to add **Helpers** via the user interface you should
+To be able to add **{% my helpers title="Helpers" %}** via the user interface you should
have `default_config:` in your `configuration.yaml`, it should already
be there by default unless you removed it.
diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown
deleted file mode 100644
index 011c5b4446d..00000000000
--- a/source/_integrations/sensor.command_line.markdown
+++ /dev/null
@@ -1,208 +0,0 @@
----
-title: "Command line Sensor"
-description: "Instructions on how to integrate command line sensors into Home Assistant."
-ha_category:
- - Utility
- - Sensor
-ha_release: pre 0.7
-ha_iot_class: Local Polling
-ha_domain: command_line
----
-
-
-The `command_line` sensor platform simply issues specific commands to get its data. This makes it a very powerful platform as it allows anyone to integrate any type of sensor into Home Assistant that can get data from the command line.
-
-## Configuration
-
-To enable it, add the following lines to your `configuration.yaml`:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- command: SENSOR_COMMAND
-```
-
-{% configuration %}
-command:
- description: The action to take to get the value.
- required: true
- type: string
-name:
- description: Name of the command sensor.
- required: false
- type: string
-unit_of_measurement:
- description: Defines the unit of measurement of the sensor, if any.
- required: false
- type: string
-value_template:
- description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload."
- required: false
- type: string
-scan_interval:
- description: Defines number of seconds for polling interval.
- required: false
- type: integer
- default: 60
-command_timeout:
- description: Defines number of seconds for command timeout
- required: false
- type: integer
- default: 15
-json_attributes:
- description: Defines a list of keys to extract values from a JSON dictionary result and then set as sensor attributes.
- required: false
- type: [string, list]
-unique_id:
- description: An ID that uniquely identifies this sensor. Set this to a unique value to allow customization through the UI.
- required: false
- type: string
-{% endconfiguration %}
-
-## Execution
-
-The `command` is executed within the [configuration directory](/docs/configuration/).
-
-
-
-If you are using [Home Assistant Operating System](https://github.com/home-assistant/operating-system), the commands are executed in the `homeassistant` container context. So if you test or debug your script, it might make sense to do this in the context of this container to get the same runtime environment.
-
-
-
-With a `0` exit code, the output (stdout) of the command is used as `value`. In case a command results in a non `0` exit code or is terminated by the `command_timeout`, the result is only logged to Home Assistant log and the value of the sensor is not updated.
-
-## Examples
-
-In this section you find some real-life examples of how to use this sensor.
-
-### CPU temperature
-
-Thanks to the [`proc`](https://en.wikipedia.org/wiki/Procfs) file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your `configuration.yaml` file:
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- name: CPU Temperature
- command: "cat /sys/class/thermal/thermal_zone0/temp"
- # If errors occur, make sure configuration file is encoded as UTF-8
- unit_of_measurement: "°C"
- value_template: "{{ value | multiply(0.001) | round(1) }}"
-```
-
-{% endraw %}
-
-### Monitoring failed login attempts on Home Assistant
-
-If you'd like to know how many failed login attempts are made to Home Assistant, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- name: badlogin
- command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log"
-```
-
-Make sure to configure the [Logger integration](/integrations/logger) to monitor the [HTTP integration](/integrations/http/) at least the `warning` level.
-
-```yaml
-# Example working logger settings that works
-logger:
- default: critical
- logs:
- homeassistant.components.http: warning
-```
-
-### Details about the upstream Home Assistant release
-
-You can see directly in the frontend (**Developer tools** -> **About**) what release of Home Assistant you are running. The Home Assistant releases are available on the [Python Package Index](https://pypi.python.org/pypi). This makes it possible to get the current release.
-
-```yaml
-sensor:
- - platform: command_line
- command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"
- name: HA release
-```
-
-### Read value out of a remote text file
-
-If you own devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value.
-
-```yaml
-sensor:
- - platform: command_line
- command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)"
- name: File value
-```
-
-### Use an external script
-
-The example is doing the same as the [aREST sensor](/integrations/arest#sensor) but with an external Python script. It should give you an idea about interfacing with devices which are exposing a RESTful API.
-
-The one-line script to retrieve a value is shown below. Of course it would be possible to use this directly in the `configuration.yaml` file but need extra care about the quotation marks.
-
-```bash
-python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"
-```
-
-The script (saved as `arest-value.py`) that is used looks like the example below.
-
-```python
-#!/usr/bin/python3
-from requests import get
-
-response = get("http://10.0.0.48/analog/2")
-print(response.json()["return_value"])
-```
-
-To use the script you need to add something like the following to your `configuration.yaml` file.
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- name: Brightness
- command: "python3 /path/to/script/arest-value.py"
-```
-
-### Usage of templating in `command:`
-
-[Templates](/docs/configuration/templating/) are supported in the `command` configuration variable. This could be used if you want to include the state of a specific sensor as an argument to your external script.
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- name: wind direction
- command: "sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}"
- unit_of_measurement: "Direction"
-```
-
-{% endraw %}
-
-### Usage of JSON attributes in command output
-
-The example shows how you can retrieve multiple values with one sensor (where the additional values are attributes) by using `value_json` and `json_attributes`.
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- name: JSON time
- json_attributes:
- - date
- - milliseconds_since_epoch
- command: "python3 /home/pi/.homeassistant/scripts/datetime.py"
- value_template: "{{ value_json.time }}"
-```
-
-{% endraw %}
-
diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown
index 0d7d55ddefc..6c296821566 100644
--- a/source/_integrations/sensor.mqtt.markdown
+++ b/source/_integrations/sensor.mqtt.markdown
@@ -106,7 +106,8 @@ device:
required: false
type: string
device_class:
- description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend.
+ description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend. The `device_class` can be `null`.
+ default: None
required: false
type: device_class
default: None
@@ -150,7 +151,7 @@ json_attributes_topic:
last_reset_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the last_reset. Available variables: `entity_id`. The `entity_id` can be used to reference the entity's attributes."
required: false
- type: string
+ type: template
name:
description: The name of the MQTT sensor.
required: false
@@ -185,7 +186,8 @@ state_class:
type: string
default: None
state_topic:
- description: The MQTT topic subscribed to receive sensor values. If `device_class`, `state_class`, `unit_of_measurement` or `suggested_display_precision` is set, and a numeric value is expected, an empty value `''` will be ignored and will not update the state, a `'None'` value will set the sensor to an `unknown` state.
+ description: The MQTT topic subscribed to receive sensor values. If `device_class`, `state_class`, `unit_of_measurement` or `suggested_display_precision` is set, and a numeric value is expected, an empty value `''` will be ignored and will not update the state, a `'null'` value will set the sensor to an `unknown` state. The `device_class` can be `null`.
+ default: None
required: true
type: string
unique_id:
@@ -193,7 +195,8 @@ unique_id:
required: false
type: string
unit_of_measurement:
- description: Defines the units of measurement of the sensor, if any.
+ description: Defines the units of measurement of the sensor, if any. The `unit_of_measurement` can be `null`.
+ default: None
required: false
type: string
value_template:
diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown
index 75f42cf8e5a..fcb7f9515a5 100644
--- a/source/_integrations/siren.mqtt.markdown
+++ b/source/_integrations/siren.mqtt.markdown
@@ -216,7 +216,7 @@ state_topic:
state_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's state from the `state_topic`. To determine the siren's state result of this template will be compared to `state_on` and `state_off`. Alternatively `value_template` can be used to render to a valid JSON payload."
required: false
- type: string
+ type: template
support_duration:
description: Set to `true` if the MQTT siren supports the `duration` service turn on parameter and enables the `duration` state attribute.
required: false
diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown
index 53c9abcd126..8b66b0d899c 100644
--- a/source/_integrations/smtp.markdown
+++ b/source/_integrations/smtp.markdown
@@ -205,6 +205,6 @@ notify:
sender_name: "SENDER_NAME"
```
-Keep in mind that Google has some extra layers of protection that need special attention. By default, the usage by external applications is limited so you will need to visit the [less secure apps](https://www.google.com/settings/security/lesssecureapps) page and enable it to be able to send e-mails. Be aware that Google will periodically turn it off if it is not used (no e-mail is sent).
+Keep in mind that Google has some extra layers of protection that need special attention. By default, the usage by external applications is limited so you will need to visit the [less secure apps](https://myaccount.google.com/lesssecureapps) page and enable it to be able to send e-mails. Be aware that Google will periodically turn it off if it is not used (no e-mail is sent).
-To avoid having your e-mail notifications broken due to the less secure app's behavior, it is recommended that you enable 2-step verification on your Google account, and use [an application-specific password](https://support.google.com/mail/answer/185833?hl=en) in your notification configuration.
+To avoid having your e-mail notifications broken due to the less secure app's behavior, it is recommended that you enable 2-step verification on your Google account, and use [an application-specific password](https://support.google.com/mail/answer/185833) in your notification configuration.
diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown
index f7d3ff2988e..817b68f39eb 100644
--- a/source/_integrations/sonos.markdown
+++ b/source/_integrations/sonos.markdown
@@ -117,19 +117,24 @@ Sonos accepts a variety of `media_content_id` formats in the `media_player.play_
Music services which require an account (e.g., Spotify) must first be configured using the Sonos app.
+Playing TTS (text to speech) or audio files as alerts (e.g., a doorbell or alarm) is possible by setting the `announce` argument to `true`. Using `announce` will play the provided media URL as an overlay, gently lowering the current music volume and automatically restoring to the original level when finished. An optional `volume` argument can also be provided in the `extra` dictionary to play the alert at a specific volume level. Note that older Sonos hardware or legacy firmware versions ("S1") may not fully support these features.
+
An optional `enqueue` argument can be added to the service call. If `true`, the media will be appended to the end of the playback queue. If not provided or `false` then the queue will be replaced.
### Examples:
-This is an example service call that plays an audio file from a web server on the local network (like the Home Assistant built-in webserver):
+Below is an example service call that plays an audio file from a web server on the local network (like the Home Assistant built-in webserver) using the `announce` feature and its associated (optional) `volume` parameter:
```yaml
service: media_player.play_media
target:
entity_id: media_player.sonos
data:
+ announce: true
media_content_type: "music"
media_content_id: "http://192.168.1.50:8123/local/sound_files/doorbell-front.mp3"
+ extra:
+ volume: 20
```
Sonos can also play music or playlists from Spotify. Both Spotify URIs and URLs can be used directly. An example service call using a playlist URI:
diff --git a/source/_integrations/starlink.markdown b/source/_integrations/starlink.markdown
index cc27a0d9570..d107e0521b5 100644
--- a/source/_integrations/starlink.markdown
+++ b/source/_integrations/starlink.markdown
@@ -32,20 +32,23 @@ The Starlink integration allows you to integrate your [Starlink](https://www.sta
### Sensor
- Ping - The ping that Starlink has measured, in ms
+- Ping drop rate - The percentage of failed ping requests (aka "dropped"). This is the inverse of "Uptime" in the Starlink app.
- Azimuth - The direction Dishy is facing in degrees
- Elevation - Dishy's current elevation in degrees
-- Uplink throughput - The amount of data being uploaded through Starlink in Bit/s
-- Downlink throughput - The amount of data being downloaded through Starlink in Bit/s
+- Uplink throughput - The amount of data being uploaded through Starlink
+- Downlink throughput - The amount of data being downloaded through Starlink
- Last boot time - The time Starlink was last turned on
### Binary Sensor
+- Update available - Whether there is an update pending install
- Obstructed - Whether Dishy is currently obstructed
-- Roaming - Whether Starlink is "roaming". Roaming is an optional upgrade that allows you to use your Starlink outside of your home address. It is also known as "portability"
+- Roaming mode - Whether Starlink is "roaming". Roaming is an optional upgrade that allows you to use your Starlink outside of your home address. It is also known as "portability mode"
- Heating - Whether Dishy is currently heating. This may be due to cold temperatures, or an attempt to thaw snow and ice
-- Idle - Whether Starlink is in an "idle" state to save power
+- Idle - Whether Starlink is "sleeping", as per the schedule defined in the Starlink app
- Mast near vertical - Whether Dishy is mounted straight
- Motors stuck - Whether Dishy is unable to move
+- Slow ethernet - Whether the Ethernet link is at max (gigabit) speed
- Thermal throttle - Whether Starlink has reduced performance to avoid overheating
- Unexpected location - Whether Starlink has detected operation outside of its designated area
diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown
index 70d67be9df9..a2e548eaa5a 100644
--- a/source/_integrations/statistics.markdown
+++ b/source/_integrations/statistics.markdown
@@ -119,7 +119,7 @@ sensor:
{% configuration %}
entity_id:
- description: The source sensor to observe and compute statistical characteristics for. Only [sensors](/integrations/sensor/) and [binary sensor](/integrations/binary_sensor/) are supported.
+ description: The source sensor to observe and compute statistical characteristics for. Only [sensors](/integrations/sensor/) and [binary sensors](/integrations/binary_sensor/) are supported.
required: true
type: string
name:
@@ -157,4 +157,6 @@ unique_id:
### An important note on `max_age` and `sampling_size`
-The `max_age` option is only valid within the measured samples specified by `sampling_size` (default 20). Specify a wide-enough `sampling_size` if using an extended max-age (e.g., when looking for `max_age` 1 hour, a sensor that produces one measurement a minute should have at least a `sampling_size` of 60.
+If both `max_age` and `sampling_size` are given, the considered samples are those within the `max_age` time window but limited to the number of `sample_size` newest samples. Specify a wide-enough `sampling_size` if using an extended `max_age` (e.g., when looking for `max_age` 1 hour, a sensor that produces one measurement per minute should have at least a `sampling_size` of 60 to use all samples within the `max_age` timeframe.)
+
+If only `sample_size` is given there is no time limit. If only `max_age` is given the considered number of samples is unlimited.
diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown
index 46ec6c89241..0fb1f959f82 100644
--- a/source/_integrations/stt.markdown
+++ b/source/_integrations/stt.markdown
@@ -3,6 +3,7 @@ title: Speech-to-Text (STT)
description: Instructions on how to set up Speech-to-Text (STT) with Home Assistant.
ha_release: '0.102'
ha_codeowners:
+ - '@home-assistant/core'
- '@pvizeli'
ha_domain: stt
ha_quality_scale: internal
@@ -10,6 +11,11 @@ ha_category: []
ha_integration_type: entity
---
-Speech-to-Text (STT) allows you to stream speech data to the STT API and get text back.
+A speech to text (STT) entity allows other integrations or applications to stream speech data to the STT API and get text back.
-This is an integration that is a building block for other integrations or apps building on top of Home Assistant, like [Ada](https://github.com/home-assistant/ada).
+The speech to text entities cannot be implemented manually, but can be provided by integrations.
+
+## The state of a speech to text entity
+
+Every speech to text entity keeps track of the timestamp of when the last time
+the speech to text entity was used to process speech.
diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown
index 1029f8e1d83..874f3e622eb 100644
--- a/source/_integrations/sun.markdown
+++ b/source/_integrations/sun.markdown
@@ -51,23 +51,25 @@ sun:

-## Implementation Details
+## Automation trigger
The sun's event listener will call the service when the sun rises or sets with
an offset.
-The sun event need to have the type 'sun', which service to call,
-which event (sunset or sunrise) and the offset.
+The sun trigger need to have the type 'sun', which event (sunset or sunrise) and an optional offset.
-```json
-{
- "type": "sun",
- "service": "switch.turn_on",
- "event": "sunset",
- "offset": "-01:00:00"
-}
+```yaml
+trigger:
+ - platform: sun
+ event: sunrise
+ offset: "-01:00:01"
```
+| Key name | Description |
+| --------- | ----------- |
+| `event` | Possible values: `sunset` or `sunrise`
+| `offset` | An optional offset for the sun event trigger, in a positive or negative number of seconds, or specified in `HH:MM:SS` (after sun event trigger) or `-HH:MM:SS` (before sun event trigger).
+
### Maintains entity `sun.sun`
| Possible state | Description |
diff --git a/source/_integrations/switch.command_line.markdown b/source/_integrations/switch.command_line.markdown
deleted file mode 100644
index 7edafef40ec..00000000000
--- a/source/_integrations/switch.command_line.markdown
+++ /dev/null
@@ -1,205 +0,0 @@
----
-title: "Command line Switch"
-description: "Instructions on how to have switches call command line commands."
-ha_category:
- - Switch
-ha_release: pre 0.7
-ha_iot_class: Local Polling
-ha_domain: command_line
----
-
-The `command_line` switch platform issues specific commands when it is turned on
-and off. This might very well become our most powerful platform as it allows
-anyone to integrate any type of switch into Home Assistant that can be
-controlled from the command line, including calling other scripts!
-
-To enable it, add the following lines to your `configuration.yaml`:
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: command_line
- switches:
- kitchen_light:
- command_on: switch_command on kitchen
- command_off: switch_command off kitchen
-```
-
-{% configuration %}
-switches:
- description: The array that contains all command switches.
- required: true
- type: map
- keys:
- identifier:
- description: Name of the command switch as slug. Multiple entries are possible.
- required: true
- type: map
- keys:
- command_on:
- description: The action to take for on.
- required: true
- type: string
- command_off:
- description: The action to take for off.
- required: true
- type: string
- command_state:
- description: "If given, this command will be run. Returning a result code `0` will indicate that the switch is on."
- required: false
- type: string
- value_template:
- description: "If specified, `command_state` will ignore the result code of the command but the template evaluating to `true` will indicate the switch is on."
- required: false
- type: string
- friendly_name:
- description: The name used to display the switch in the frontend.
- required: false
- type: string
- icon_template:
- description: Defines a template for the icon of the entity.
- required: false
- type: template
- command_timeout:
- description: Defines number of seconds for command timeout.
- required: false
- type: integer
- default: 15
- unique_id:
- description: An ID that uniquely identifies this switch. Set this to a unique value to allow customization through the UI.
- required: false
- type: string
-{% endconfiguration %}
-
-A note on `friendly_name`:
-
-When set, the `friendly_name` had been previously used for API calls and backend
-configuration instead of the `object_id` ("identifier"), but
-[this behavior is changing](https://github.com/home-assistant/home-assistant/pull/4343)
-to make the `friendly_name` for display purposes only. This allows users to set
-an `identifier` that emphasizes uniqueness and predictability for API and configuration
-purposes but have a prettier `friendly_name` still show up in the UI. As an
-additional benefit, if a user wanted to change the `friendly_name` / display
-name (e.g., from "Kitchen Lightswitch" to "Kitchen Switch" or
-"Living Room Light", or remove the `friendly_name` altogether), they could
-do so without needing to change existing automations or API calls.
-See aREST device below for an example.
-
-## Examples
-
-In this section you find some real-life examples of how to use this switch.
-
-### Change the icon when a state changes
-
-This example demonstrates how to use template to change the icon as its state changes. This icon is referencing its own state.
-
-{% raw %}
-
-```yaml
-switch:
- - platform: command_line
- switches:
-
- driveway_sensor_motion:
- friendly_name: Driveway buiten sensor
- command_on: >
- curl -X PUT -d '{"on":true}' "http://ip_address/api/sensors/27/config/"
- command_off: >
- curl -X PUT -d '{"on":false}' "http://ip_address/api/sensors/27/config/"
- command_state: curl http://ip_address/api/sensors/27/
- value_template: >
- {{value_json.config.on}}
- icon_template: >
- {% if value_json.config.on == true %} mdi:toggle-switch
- {% else %} mdi:toggle-switch-off
- {% endif %}
-```
-
-{% endraw %}
-
-### aREST device
-
-The example below is doing the same as the
-[aREST switch](/integrations/arest#switch).
-The command line tool [`curl`](https://curl.haxx.se/) is used to toggle a pin
-which is controllable through REST.
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: command_line
- switches:
- arest_pin_four:
- command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1"
- command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0"
- command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4"
- value_template: '{{ value == "1" }}'
- friendly_name: Kitchen Lightswitch
-```
-
-{% endraw %}
-
-Given this example, in the UI one would see the `friendly_name` of
-"Kitchen Light". However, the `identifier` is `arest_pin_four`, making the
-`entity_id` `switch.arest_pin_four`, which is what one would use in
-[`automation`](/integrations/automation/) or in [API calls](/developers/).
-
-### Shutdown your local host
-
-This switch will shutdown your system that is hosting Home Assistant.
-
-
-This switch will shutdown your host immediately, there will be no confirmation.
-
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: command_line
- switches:
- home_assistant_system_shutdown:
- command_off: "/usr/sbin/poweroff"
-```
-
-### Control your VLC player
-
-This switch will control a local VLC media player
-([Source](https://community.home-assistant.io/t/vlc-player/106)).
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: command_line
- switches:
- vlc:
- command_on: "cvlc 1.mp3 vlc://quit &"
- command_off: "pkill vlc"
-```
-
-### Control Foscam Motion Sensor
-
-This switch will control the motion sensor of Foscam Webcams which Support CGI
-Commands ([Source](https://www.iltucci.com/blog/wp-content/uploads/2018/12/Foscam-IPCamera-CGI-User-Guide-V1.0.4.pdf)).
-This switch supports statecmd,
-which checks the current state of motion detection.
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: command_line
- switches:
- foscam_motion:
- command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'
- command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'
- command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=)"'
- value_template: '{{ value == "1" }}'
-```
-
-{% endraw %}
-
-- Replace admin and password with an "Admin" privileged Foscam user
-- Replace ipaddress with the local IP address of your Foscam
diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown
index 9df9c142283..d1cf316b185 100644
--- a/source/_integrations/switch.mqtt.markdown
+++ b/source/_integrations/switch.mqtt.markdown
@@ -116,7 +116,7 @@ device:
required: false
type: string
device_class:
- description: The [type/class](/integrations/switch/#device-class) of the switch to set the icon in the frontend.
+ description: The [type/class](/integrations/switch/#device-class) of the switch to set the icon in the frontend. The `device_class` can be `null`.
required: false
type: device_class
default: None
@@ -212,7 +212,7 @@ unique_id:
value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's state from the `state_topic`. To determine the switches's state result of this template will be compared to `state_on` and `state_off`."
required: false
- type: string
+ type: template
{% endconfiguration %}
diff --git a/source/_integrations/synology_dsm.markdown b/source/_integrations/synology_dsm.markdown
index 0f1625639dd..178fa2c0dc0 100644
--- a/source/_integrations/synology_dsm.markdown
+++ b/source/_integrations/synology_dsm.markdown
@@ -5,6 +5,7 @@ ha_category:
- Camera
- System Monitor
- Update
+ - Media Source
ha_release: 0.32
ha_iot_class: Local Polling
ha_domain: synology_dsm
@@ -22,6 +23,7 @@ ha_platforms:
- sensor
- switch
- update
+ - media_source
ha_integration_type: integration
ha_zeroconf: true
---
@@ -126,3 +128,15 @@ Reboot the NAS.
### Button `shutdown`
Shutdown the NAS.
+
+## Media Source
+
+A media source is provided for your [Synology Photos](https://www.synology.com/en-global/dsm/feature/photos).
+
+The media source URIs will look like `media-source://synology_dsm/
//`.
+
+This media browser supports multiple Synology Photos instances. `` is the Home Assistant ID for the NAS (_usually the serial number of the NAS_). You can find this id when using the media browser, when you hover over the NAS name, you get shown the simple name followed by the unique id ex: `192.168.0.100:5001 - 18C0PEN253705`.
+
+To find the `` you need to go to the album in your photos instance, and the id will be in the URL ex: `https://192.168.0.100:5001/#/album/19`, where 19 is the album id. An `` of 0 will contain all images.
+
+For performance reasons, a maximum of 1000 images will be shown in the Media Browser.
diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown
index a4e0d578c07..558c64c85ac 100644
--- a/source/_integrations/system_log.markdown
+++ b/source/_integrations/system_log.markdown
@@ -72,7 +72,7 @@ Traceback (most recent call last):
[...]
```
-The message ("Unable to find integration system_healt"), name (`homeassistant.loader`) and level (`ERROR`) can easily be extracted from the log. The exact timestamp and if there is a stack trace that's shown as well. Here is another error caused by the `google_map` integration with additional output present.
+The message ("Unable to find integration system_healt"), name (`homeassistant.loader`) and level (`ERROR`) can easily be extracted from the log. The exact timestamp and if there is a stack trace that's shown as well.
## Examples
diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown
index 7cdbc322fe2..8e090b6b570 100644
--- a/source/_integrations/tado.markdown
+++ b/source/_integrations/tado.markdown
@@ -134,7 +134,7 @@ You can use the service `tado.set_water_heater_timer` to set your water heater t
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------- |
-| `entity_id` | yes | String, Name of entity e.g., `climate.heating` |
+| `entity_id` | yes | String, Name of entity e.g., `water_heater.hot_water` |
| `time_period` | no | Time Period, Period of time the boost should last for e.g., `01:30:00` |
| `temperature` | yes | String, The required target temperature e.g., `20.5` |
diff --git a/source/_integrations/tag.mqtt.markdown b/source/_integrations/tag.mqtt.markdown
index d5eae095c2e..d5ef7a003de 100644
--- a/source/_integrations/tag.mqtt.markdown
+++ b/source/_integrations/tag.mqtt.markdown
@@ -23,7 +23,7 @@ topic:
value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that returns a tag ID."
required: false
- type: string
+ type: template
device:
description: "Information about the device this device trigger is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). At least one of identifiers or connections must be present to identify the device."
required: true
diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown
index b6d980bda60..260d0c25b83 100644
--- a/source/_integrations/tellduslive.markdown
+++ b/source/_integrations/tellduslive.markdown
@@ -24,7 +24,13 @@ ha_platforms:
ha_integration_type: integration
---
-The `tellduslive` integration let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home.
+The `tellduslive` integration let you connect to the [Telldus Live](https://live.telldus.com) API. It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home.
+
+
+
+Note that you need a [Telldus Premium](https://telldus.com/en/telldus-premium/) subscription to access the Cloud API (https://telldus.com/en/important-announcement-english/).
+
+
Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API.
diff --git a/source/_integrations/thethingsnetwork.markdown b/source/_integrations/thethingsnetwork.markdown
index 6a980dca027..8935f20a248 100644
--- a/source/_integrations/thethingsnetwork.markdown
+++ b/source/_integrations/thethingsnetwork.markdown
@@ -15,7 +15,7 @@ ha_integration_type: integration
---
- This integration only supports TTNv2.
+ This integration only supports TTNv2 that has been definitively switched off in 2022 (deprecated).
The `thethingsnetwork` integration allows one to interact with the [The Things Network](https://www.thethingsnetwork.org). This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long range (~5 to 15 km) communication with a low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfers the received data from the sensors to the The Things Network.
diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown
index dcec1331815..0510cc73331 100644
--- a/source/_integrations/timer.markdown
+++ b/source/_integrations/timer.markdown
@@ -23,7 +23,7 @@ However, automations using the `timer.finished` event **will not** trigger if th
## Configuration
-The preferred way to configure timer helpers is via the user interface at **Settings** -> **Devices & Services** -> **Helpers** and click the add button; next choose the **Timer** option.
+The preferred way to configure timer helpers is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}** and click the add button; next choose the {% my config_flow_start domain=timer title="Timer" %} option.
You can also click the following button to be redirected to the Helpers page of your Home Assistant instance.
diff --git a/source/_integrations/torque.markdown b/source/_integrations/torque.markdown
index 5015d4c64ff..0315b754782 100644
--- a/source/_integrations/torque.markdown
+++ b/source/_integrations/torque.markdown
@@ -29,7 +29,7 @@ Under the **Logging Preferences** header:
Under the **Realtime Web Upload** header:
- Check **Upload to web-server**.
-- Enter `https://HOST/api/torque` or `https://@/HOST:PORT/api/torque` as the **Web-server URL**, where `HOST` and `PORT` are your externally accessible Home Assistant HTTP host. To use a Bearer Token, this has to be [SSL/TSL](/docs/ecosystem/certificates/).
+- Enter `https://HOST/api/torque` or `https://@/HOST:PORT/api/torque` as the **Web-server URL**, where `HOST` and `PORT` are your externally accessible Home Assistant HTTP host. To use a Bearer Token, this has to be [SSL/TLS](/docs/ecosystem/certificates/).
- Enable **Send https: Bearer Token** (available since Torque Pro 1.12.46)
- Paste a Long-Lived Access Token from any Home Assistant user in **Set Bearer Token** field.
- Enter an email address in **User Email Address** (this can be any non empty string you like).
diff --git a/source/_integrations/tplink_omada.markdown b/source/_integrations/tplink_omada.markdown
index e4970b47859..a860c42b595 100644
--- a/source/_integrations/tplink_omada.markdown
+++ b/source/_integrations/tplink_omada.markdown
@@ -38,7 +38,7 @@ TP-Link Omada Controller:
- OC300
- Software Controller.
-Controller versions 5.0.0 and later are supported.
+Controller versions 5.1.0 and later are supported.
## Supported Omada devices
diff --git a/source/_integrations/traccar.markdown b/source/_integrations/traccar.markdown
index f93bb96cd3f..f09b7b78931 100644
--- a/source/_integrations/traccar.markdown
+++ b/source/_integrations/traccar.markdown
@@ -80,7 +80,7 @@ monitored_conditions:
required: false
type: list
event:
- description: "Traccar events to include in the scan and fire within Home Assistant. *NOTE* For more info regarding Traccar events please refer to Traccar's documentation: https://www.traccar.org/documentation/events/."
+ description: "Traccar events to include in the scan and fire within Home Assistant. *NOTE* For more info regarding Traccar events please refer to [Traccar's documentation](https://www.traccar.org/events/)."
required: false
type: list
keys:
@@ -163,7 +163,7 @@ device_tracker:
monitored_conditions: ['alarm', 'mycomputedattribute']
```
-The parameter `event` allows you to import events from the traccar platform (https://www.traccar.org/documentation/events/) and fire them in your Home Assistant. It accepts a list of events to be monitored and imported and each event must be listed in lowercase snakecase. The events will be fired with the same event name defined in the aforementioned list preceded by the prefix `traccar_`. For example if you need to import the Traccar events `deviceOverspeed` and `deviceFuelDrop` in Home Assistant, you need to fill the `event` parameter with:
+The parameter `event` allows you to import [events](https://www.traccar.org/events/) from the traccar platform and fire them in your Home Assistant. It accepts a list of events to be monitored and imported and each event must be listed in lowercase snakecase. The events will be fired with the same event name defined in the aforementioned list preceded by the prefix `traccar_`. For example if you need to import the Traccar events `deviceOverspeed` and `deviceFuelDrop` in Home Assistant, you need to fill the `event` parameter with:
```yaml
device_tracker:
diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown
index ac1f099411a..5285769032f 100644
--- a/source/_integrations/tts.markdown
+++ b/source/_integrations/tts.markdown
@@ -6,6 +6,7 @@ ha_category:
- Text-to-speech
ha_release: 0.35
ha_codeowners:
+ - '@home-assistant/core'
- '@pvizeli'
ha_domain: tts
ha_quality_scale: internal
@@ -16,83 +17,27 @@ ha_integration_type: entity
Text-to-Speech (TTS) enables Home Assistant to speak to you.
-## Configuring a `tts` platform
+## Services
-To get started, add the following lines to your `configuration.yaml` (example for Google):
+### Service speak
+
+Modern platforms will create entities under the `tts` domain, where each entity represents one text-to-speech service provider. These entities may be used as targets for the `tts.speak` service.
+
+The `tts.speak` service supports `language` and on some platforms also `options` for settings, e.g., *voice, motion, speed, etc*. The text that should be spoken is set with `message`, and the media player that should output the sound is selected with `media_player_entity_id`.
```yaml
-# Example configuration.yaml entry for Google TTS service
-tts:
- - platform: google_translate
+service: tts.speak
+target: tts.example
+data:
+ media_player_entity_id: media_player.kitchen
+ message: "May the force be with you."
```
-
+### Service say (legacy)
-Depending on your setup, you might need to set an external URL (`external_url`) inside the [configuration](/docs/configuration/basic/) or in the parameters of this component.
+The `say` service supports `language` and on some platforms also `options` for settings, e.g., *voice, motion, speed, etc*. The text that should be spoken is set with `message`. Since release 0.92, service name can be defined in configuration `service_name` option.
-
-
-The following optional parameters can be used with any platform. However, the TTS integration will only look for global settings under the configuration of the first configured platform:
-
-{% configuration %}
-cache:
- description: Allow TTS to cache voice file to local storage.
- required: false
- type: boolean
- default: true
-cache_dir:
- description: Folder name or path to a folder for caching files.
- required: false
- type: string
- default: tts
-time_memory:
- description: Time to hold the voice data inside memory for fast play on a media player. Minimum is 60 s and the maximum 57600 s (16 hours).
- required: false
- type: integer
- default: 300
-service_name:
- description: Define the service name.
- required: false
- type: string
- default: The service name default set to
_say. For example, for google_translate TTS, its service name default is `google_translate_say`.
-{% endconfiguration %}
-
-The extended example from above would look like the following sample:
-
-```yaml
-# Example configuration.yaml entry for Google Translate TTS service
-tts:
- - platform: google_translate
- cache: true
- cache_dir: /tmp/tts
- time_memory: 300
- service_name: google_say
-```
-
-
-The following sections describe some of the problems encountered with media devices.
-
-### Self-signed certificates
-
-This problem occurs when your Home Assistant instance is configured to be accessed through SSL, and you are using a self-signed certificate on your internal URL.
-
-The `tts` service will send an `https://` URL to the media device, which will check the certificate, and reject it. So it won't play your file. If you could make the device accept your certificate, it would play the file. However, many media devices do not allow changing settings to accept self-signed certificates. Ultimately, your option may be to serve files to local devices as `http://` rather than `https://`.
-
-### Google cast devices
-
-The Google cast devices (Google Home, Chromecast, etc.) present the following problems:
-
-* They [reject self-signed certificates](#self-signed-certificates).
-
-* They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). If you are _not_ using SSL then setting an internal URL that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname.
-
-* If you are using an SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection.
-
-## Service say
-
-The `say` service support `language` and on some platforms also `options` for set, i.e., *voice, motion, speed, etc*. The text for speech is set with `message`. Since release 0.92, service name can be defined in configuration `service_name` option.
-
-Say to all `media_player` device entities:
+Say to all `media_player` entities:
```yaml
# Replace google_translate_say with _say when you use a different platform.
@@ -102,7 +47,7 @@ data:
message: "May the force be with you."
```
-Say to the `media_player.floor` device entity:
+Say to the `media_player.floor` entity:
```yaml
service: tts.google_translate_say
@@ -111,7 +56,7 @@ data:
message: "May the force be with you."
```
-Say to the `media_player.floor` device entity in French:
+Say to the `media_player.floor` entity in French:
```yaml
service: tts.google_translate_say
@@ -136,17 +81,17 @@ data:
## Cache
-The integration has two caches. Both caches can be controlled with the `cache` option in the platform configuration or the service call `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
+The integration cache can be controlled with the `cache` option in the service call to `speak` or `say`. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
## REST API
### POST `/api/tts_get_url`
-Returns a URL to the generated TTS file. Platform and message are required.
+Returns a URL to the generated TTS file. The `engine_id` or `platform` parameter together with `message` are required.
```json
{
- "platform": "amazon_polly",
+ "engine_id": "tts.amazon_polly",
"message": "I am speaking now"
}
```
@@ -155,8 +100,8 @@ The return code is 200 if the file is generated. The message body will contain a
```json
{
- "path": "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_demo.mp3",
- "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_demo.mp3"
+ "path": "/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_tts.demo.mp3",
+ "url": "http://127.0.0.1:8123/api/tts_proxy/265944c108cbb00b2a621be5930513e03a0bb2cd_en_-_tts.demo.mp3"
}
```
@@ -165,6 +110,32 @@ Sample `curl` command:
```bash
$ curl -X POST -H "Authorization: Bearer " \
-H "Content-Type: application/json" \
- -d '{"message": "I am speaking now", "platform": "amazon_polly"}' \
+ -d '{"message": "I am speaking now", "engine_id": "amazon_polly"}' \
http://localhost:8123/api/tts_get_url
```
+
+## Troubleshooting
+
+
+
+Depending on your setup, you might need to set an external URL (`external_url`) inside the [configuration](/docs/configuration/basic/).
+
+
+
+The following sections describe some of the problems encountered with media devices.
+
+### Self-signed certificates
+
+This problem occurs when your Home Assistant instance is configured to be accessed through SSL, and you are using a self-signed certificate on your internal URL.
+
+The `tts` service will send an `https://` URL to the media device, which will check the certificate, and reject it. So it won't play your file. If you could make the device accept your certificate, it would play the file. However, many media devices do not allow changing settings to accept self-signed certificates. Ultimately, your option may be to serve files to local devices as `http://` rather than `https://`.
+
+### Google cast devices
+
+The Google cast devices (Google Home, Chromecast, etc.) present the following problems:
+
+* They [reject self-signed certificates](#self-signed-certificates).
+
+* They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). If you are _not_ using SSL then setting an internal URL that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname.
+
+* If you are using SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection.
diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown
index 22d05043ac6..4b98b40d446 100644
--- a/source/_integrations/unifiprotect.markdown
+++ b/source/_integrations/unifiprotect.markdown
@@ -50,15 +50,15 @@ The UniFi Protect integration adds support for retrieving Camera feeds and Senso
This Integration supports all UniFi OS Consoles that can run UniFi Protect. Currently, this includes:
-* Any UniFi Protect Network Video Recorder (**UNVR** or **UNVRPRO**)
-* Any UniFi "Dream" device (**UDMPRO**, **UDR**, or **UDMSE**), _except the base UniFi Dream Machine/UDM_
-* UniFi Cloud Key Gen2 Plus (**UCKP**) firmware version v2.0.24+
+* Any UniFi Protect Network Video Recorder (**[UNVR](https://store.ui.com/collections/unifi-protect-nvr/products/unvr)** or **[UNVRPRO](https://store.ui.com/collections/unifi-protect-nvr/products/unvr-pro)**)
+* Any UniFi "Dream" device (**[UDMPRO](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-pro)**, **[UDR](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-router)**, or **[UDMSE](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-machine-se)**), _except the base UniFi Dream Machine/UDM_
+* UniFi Cloud Key Gen2 Plus (**[UCKP](https://store.ui.com/collections/unifi-protect-nvr/products/unifi-cloudkey-plus)**) firmware version v2.0.24+
-UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware `v2.0.24` or newer.
+UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware `[v2.0.24](https://community.ui.com/releases/UniFi-Cloud-Key-Firmware-2-0-24/b6684f1e-8542-4660-bc0b-74e0634448e8)` or newer.
### Software Support
-The absolute **minimal** software version is `v1.20.0` for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect and hardware supported by those are supported.
+The absolute **minimal** software version is `[v1.20.0](https://community.ui.com/releases/UniFi-Protect-Application-1-20-0/d43c0905-3fb4-456b-a7ca-73aa830cb011)` for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect and hardware supported by those are supported.
#### About UniFi Early Access
@@ -71,18 +71,18 @@ Using Early Access versions will likely cause your UniFi Protect integration to
#### Downgrading UniFi Protect
-In the event you accidentally upgrade to an Early Access version of UniFi Protect you can downgrade to a stable version by either [restoring a backup](https://help.ui.com/hc/en-us/articles/360008976393-UniFi-Backups-and-Migration) or by manually downgrading your UniFi Protect.
+In the event you accidentally upgrade to an Early Access version of UniFi Protect you can downgrade to a stable version by either [restoring a backup](https://help.ui.com/hc/articles/360008976393) or by manually downgrading your UniFi Protect.
##### Manually Downgrade
-Manually downgrading comes with its own risks and it is not recommended unless you do not have a backup available. Some Protect versions cannot be downgraded from (like `v2.0` to `v1.21`). To downgrade, you can access your [UniFi OS Console via SSH](https://help.ui.com/hc/en-us/articles/204909374#h_01F8G1NSFWE9GWXMT977VQEP8V) and then do the following:
+Manually downgrading comes with its own risks and it is not recommended unless you do not have a backup available. Some Protect versions cannot be downgraded from (like `v2.0` to `v1.21`). To downgrade, you can access your [UniFi OS Console via SSH](https://help.ui.com/hc/articles/204909374) and then do the following:
```bash
-# run this command first _only_ if you are on a 1.x firmware of the UDM Pro
-# it is not needed for the UDM SE, UNVR, etc.
+# Run this command first _only_ if you are on a 1.x firmware of the UDM Pro.
+# It is not needed for the UDM SE, UNVR, etc.
unifi-os shell
-# downgrade UniFi Protect
+# Downgrade UniFi Protect.
apt-get update
apt-get install --reinstall --allow-downgrades unifi-protect=2.0.0~beta.5 -y
```
@@ -91,7 +91,7 @@ You can replace `2.0.0~beta.5` with whatever version of UniFi Protect you want t
-If you want to downgrade to another Early Access version, you must have [Remote Access enabled](https://help.ui.com/hc/en-us/articles/115012240067-UniFi-How-to-enable-remote-access) and have the Early Access release channel enabled.
+If you want to downgrade to another Early Access version, you must have [Remote Access enabled](https://help.ui.com/hc/articles/115012240067) and have the Early Access release channel enabled.
@@ -108,13 +108,13 @@ use has.
2. In the upper right corner, click on _Add User_.
3. Fill out the fields for your user. Be sure the role you assign to the user grants them access to at least one or
more UniFi Protect devices.
-4. Click _Add_ in the bottom Right.
+4. Click _Add_ in the bottom right.

### Camera Streams
-The Integration uses the RTSP(S) Streams as the Live Feed source, so this needs to be enabled on each camera to ensure
+The integration uses the RTSP(S) Streams as the Live Feed source, so this needs to be enabled on each camera to ensure
you can stream your camera in Home Assistant. This may already be enabled by default, but it is recommended to just
check that this is done. To check and enable the feature:
@@ -145,8 +145,8 @@ and in many cases, get a read-only sensor instead of an editable switch/select/n
**Smart Detections**: The following cameras have Smart Detections:
-* All "AI" series cameras. This includes the AI 360 and the AI Bullet.
-* All "G4" series cameras. This includes the G4 Doorbell, G4 Bullet, G4 Pro and G4 Instant.
+* All "AI" series cameras. This includes the [AI 360](https://store.ui.com/collections/unifi-protect/products/unifi-protect-ai-360) and the [AI Bullet](https://store.ui.com/collections/unifi-protect/products/uvc-ai-bullet).
+* All "G4" series cameras. This includes the [G4 Doorbell](https://store.ui.com/collections/unifi-protect/products/uvc-g4-doorbell), [G4 Bullet](https://store.ui.com/collections/unifi-protect/products/uvc-g4-bullet), [G4 Pro](https://store.ui.com/collections/unifi-protect/products/uvc-g4-pro) and [G4 Instant](https://store.ui.com/collections/unifi-protect/products/camera-g4-instant).
G3 Series cameras do _not_ have Smart detections.
diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown
index b444cc210f4..62ce2a0fc90 100644
--- a/source/_integrations/update.mqtt.markdown
+++ b/source/_integrations/update.mqtt.markdown
@@ -109,7 +109,8 @@ device:
required: false
type: string
device_class:
- description: The [type/class](/integrations/update/#device-classes) of the update to set the icon in the frontend.
+ description: The [type/class](/integrations/update/#device-classes) of the update to set the icon in the frontend. The `device_class` can be `null`.
+ default: None
required: false
type: device_class
default: None
diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown
index c6af67994ed..a141b9b6f62 100644
--- a/source/_integrations/vacuum.mqtt.markdown
+++ b/source/_integrations/vacuum.mqtt.markdown
@@ -72,7 +72,7 @@ availability_topic:
battery_level_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the battery level of the vacuum. This is required if `battery_level_topic` is set.
required: false
- type: string
+ type: template
battery_level_topic:
description: The MQTT topic subscribed to receive battery level values from the vacuum.
required: false
@@ -80,7 +80,7 @@ battery_level_topic:
charging_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the charging state of the vacuum. This is required if `charging_topic` is set.
required: false
- type: string
+ type: template
charging_topic:
description: The MQTT topic subscribed to receive charging state values from the vacuum.
required: false
@@ -88,7 +88,7 @@ charging_topic:
cleaning_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the cleaning state of the vacuum. This is required if `cleaning_topic` is set.
required: false
- type: string
+ type: template
cleaning_topic:
description: The MQTT topic subscribed to receive cleaning state values from the vacuum.
required: false
@@ -100,7 +100,7 @@ command_topic:
docked_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the docked state of the vacuum. This is required if `docked_topic` is set.
required: false
- type: string
+ type: template
docked_topic:
description: The MQTT topic subscribed to receive docked state values from the vacuum.
required: false
@@ -123,7 +123,7 @@ entity_category:
error_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define potential error messages emitted by the vacuum. This is required if `error_topic` is set.
required: false
- type: string
+ type: template
error_topic:
description: The MQTT topic subscribed to receive error messages from the vacuum.
required: false
@@ -135,7 +135,7 @@ fan_speed_list:
fan_speed_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the fan speed of the vacuum. This is required if `fan_speed_topic` is set.
required: false
- type: string
+ type: template
fan_speed_topic:
description: The MQTT topic subscribed to receive fan speed values from the vacuum.
required: false
diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown
index 28a1935d284..d42f794c171 100644
--- a/source/_integrations/venstar.markdown
+++ b/source/_integrations/venstar.markdown
@@ -49,7 +49,29 @@ The following values are supported for the preset_mode state attribute:
Note - Please ensure that you update your thermostat to the latest firmware. Initially tested on firmware 5.10 and currently VH6.79.
-Local API mode needs to be enabled via the thermostat's *Menu > WiFi > Local API Options > Local API - ON*
+### Enabling Local API
+Local API mode needs to be enabled on the thermostat itself. It cannot be enabled using the Venstar mobile apps or Skyport cloud service. Exact steps vary across different [series](https://venstar.com/thermostats/) of thermostats:
+
+- [ColorTouch](https://venstar.com/thermostats/colortouch/)
+ - **Menu** > **WiFi** > **Local API Option** > **[Local API - ON](https://www.youtube.com/watch?v=kB_HcJ3kqCg&t=51s)**.
+
+- [EXPLORER](https://venstar.com/thermostats/explorer/) / [EXPLORER IAQ](https://venstar.com/thermostats/explorer-iaq/)
+ - Press **SETUP**.
+ - Press **MODE** repeatedly until you see [LOCAL API](https://www.youtube.com/watch?v=HRmWFwfQAhU&t=276s).
+ - Press **WARMER** to toggle "ON".
+ - Press **SETUP** to exit.
+
+- [EXPLORER Mini](https://venstar.com/thermostats/explorermini/)
+ - Press and hold **MODE** + **FAN** together for 5 seconds.
+ - Press **MODE** repeatedly until you see "API".
+ - Press **WARMER** to toggle "ON".
+ - Press **MODE** + **FAN** together to exit.
+
+If the local API is successfully enabled on the thermostat, you should see some basic API info when you navigate to its IP address in a web browser:
+
+```json
+{"api_ver":7,"type":"commercial","model":"VYG-4800","firmware":"2.22.19"}
+```
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown
index b204001c40d..1a54d1faec5 100644
--- a/source/_integrations/websocket_api.markdown
+++ b/source/_integrations/websocket_api.markdown
@@ -13,7 +13,7 @@ ha_platforms:
ha_integration_type: system
---
-The `websocket_api` integration set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` component](/integrations/http/).
+The `websocket_api` integration set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` integration](/integrations/http/).
## Configuration
diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown
index f8f1a12b3ed..db41fed3a51 100644
--- a/source/_integrations/workday.markdown
+++ b/source/_integrations/workday.markdown
@@ -7,6 +7,7 @@ ha_category:
ha_iot_class: Local Polling
ha_release: 0.41
ha_quality_scale: internal
+ha_config_flow: true
ha_codeowners:
- '@fabaff'
- '@gjohansson-ST'
@@ -25,127 +26,26 @@ This can be used to make automations that act differently on weekdays vs weekend
Check the [country list](https://github.com/dr-prodigy/python-holidays#available-countries) for available provinces (and other subdivisions, like states and territories) for each country.
-## Configuration
-To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-binary_sensor:
- - platform: workday
- country: DE
-```
-
-{% configuration %}
-name:
- description: A name for this sensor.
- required: false
- type: string
- default: Workday Sensor
-country:
- description: >
- Country code according to [holidays](https://pypi.org/project/holidays/) notation.
- required: true
- type: string
-province:
- description: Subdivision code according to [holidays](https://pypi.org/project/holidays/) notation.
- required: false
- type: string
-workdays:
- description: List of workdays.
- required: false
- type: list
- default: "[mon, tue, wed, thu, fri]"
-excludes:
- description: List of workday excludes.
- required: false
- type: list
- default: "[sat, sun, holiday]"
-days_offset:
- description: Set days offset (e.g., -1 for yesterday, 1 for tomorrow).
- required: false
- type: integer
- default: 0
-add_holidays:
- description: "Add custom holidays (such as company, personal holidays or vacations). Needs to formatted as `YYYY-MM-DD`."
- required: false
- type: list
-remove_holidays:
- description: "Remove holidays (treat holiday as workday). Can be formatted as `YYYY-MM-DD` or by name for a partial string match (e.g. Thanksgiving)."
- required: false
- type: list
-{% endconfiguration %}
+{% include integrations/config_flow.md %}
Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`.
The keyword `holiday` is used for public holidays identified by the holidays module.
-If you use the sensor for Norway (`NO`) you need to wrap `NO` in quotes or write the name in full.
-Otherwise, the value is evaluated as `false`.
-If you use the sensor for Canada (`CA`) with Ontario (`ON`) as `province:` then you need to wrap `ON` in quotes.
-Otherwise, the value is evaluated as `true` (check the YAML documentation for further details) and the sensor will not work.
-
-One other thing to watch is how the `holiday` keyword is used. Your first instinct might be to add it to the `exclude` configuration, thinking that it means to skip the holidays. Actually it means to exclude the days in the holidays list from the workdays. So, when you exclude `holiday` and a workday falls on that day, then that workday is excluded, and the sensor will be **off**. If you want every workday flagged with no regard to holidays, make sure that there is something in your `Excludes` configuration _other_ than `holiday`.
+Watch how the `holiday` keyword is used. Your first instinct might be adding it to the `exclude` configuration, thinking it means skipping the holidays. It means to exclude the days in the holiday list from the workdays. So, when you exclude `holiday` and a workday falls on that day, that workday is excluded, and the sensor will be **off**. If you want every workday flagged with no regard to holidays, ensure that there is something in your `Excludes` configuration _other_ than `holiday`.
-## Full examples
+## Specific field information
-This example excludes Saturdays and Sundays but not pre-configured holidays. Two custom holidays are added.
+Country code must be given according to [holidays](https://pypi.org/project/holidays/) notation.
-```yaml
-# Example 1 configuration.yaml entry
-binary_sensor:
- - platform: workday
- country: US
- workdays: [mon, tue, wed, thu, fri]
- excludes: [sat, sun]
- add_holidays:
- - "2020-02-24"
- - "2020-04-25"
-```
+Subdivision code must be given according to [holidays](https://pypi.org/project/holidays/) notation.
-This example excludes Saturdays, Sundays and holidays. One custom holiday is added.
-The date February 24th, 2020 is a Monday, but will be excluded (the sensor will be **off**) because it was added to the `add_holidays` configuration.
+Add holidays will only take dates formatted with `YYYY-MM-DD`.
-```yaml
-# Example 2 configuration.yaml entry
-binary_sensor:
- - platform: workday
- country: DE
- workdays: [mon, tue, wed, thu, fri]
- excludes: [sat, sun, holiday]
- add_holidays:
- - '2020-02-24'
-```
-
-This example excludes Saturdays, Sundays and holidays. Two holidays are removed: November 26, 2020 and December 25, 2020.
-
-```yaml
-# Example 3 configuration.yaml entry
-binary_sensor:
- - platform: workday
- country: US
- workdays: [mon, tue, wed, thu, fri]
- excludes: [sat, sun, holiday]
- remove_holidays:
- - '2020-11-26'
- - '2020-12-25'
-```
-
-This example excludes Saturdays, Sundays and holidays. Two holidays are removed by name: Thanksgiving and Christmas Day.
-
-```yaml
-# Example 4 configuration.yaml entry
-binary_sensor:
- - platform: workday
- country: US
- workdays: [mon, tue, wed, thu, fri]
- excludes: [sat, sun, holiday]
- remove_holidays:
- - 'Thanksgiving'
- - 'Christmas Day'
-```
+Remove holidays will take dates formatted with `YYYY-MM-DD` or partial of name, for example, `christmas` will exclude `Christmas Day`.
## Automation example
diff --git a/source/_integrations/xiaomi_tv.markdown b/source/_integrations/xiaomi_tv.markdown
index f99056084e0..54f5e2bd581 100644
--- a/source/_integrations/xiaomi_tv.markdown
+++ b/source/_integrations/xiaomi_tv.markdown
@@ -14,6 +14,7 @@ ha_integration_type: integration
---
The `xiaomi_tv` platform allows you to control a [Xiaomi TV](https://www.mi.com/global/mitv3s/65flat/).
+The Xiaomi TV integration only supports Xiaomi TVs running MIUI.
You need to make sure the TV is connected to the internet, and that your Home Assistant instance is on the same network.
diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown
index 55ded015f2a..dd30aaf1285 100644
--- a/source/_integrations/zha.markdown
+++ b/source/_integrations/zha.markdown
@@ -94,11 +94,11 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
- Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
- [Home Assistant SkyConnect](/skyconnect/)
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
- - [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs-usb-adapter.html)/[POPP ZB-Stick](https://shop.zwave.eu/detail/index/sArticle/2496) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
+ - [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs-usb-adapter.html)/POPP ZB-Stick (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
- [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs-zigbee-shield.html) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
- Texas Instruments based radios (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)
- - [CC2652P/CC2652R/CC2652RB USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
- - [CC1352P/CC1352R USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
+ - [CC2652P/CC2652R/CC2652RB USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/guide/adapters/)
+ - [CC1352P/CC1352R USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/guide/adapters/)
- dresden elektronik deCONZ based Zigbee radios (via the [zigpy-deconz](https://github.com/zigpy/zigpy-deconz) library for zigpy)
- [ConBee II (a.k.a. ConBee 2) USB adapter from dresden elektronik](https://phoscon.de/conbee2)
- [RaspBee II (a.k.a. RaspBee 2) Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee2)
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index 2f3cca5184a..1555213f195 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -124,6 +124,20 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta
1. Put the device you want to remove in exclusion mode. Refer to its manual how this is done.
1. The UI should confirm that the device was removed and the device and entities will be removed from Home Assistant.
+## Special Z-Wave entities
+
+The Z-Wave integration provides several special entities, some of which are available for every Z-Wave device, and some of which are conditional based on the device.
+
+### Entities available for every Z-Wave device
+
+1. **Node status** sensor: This sensor shows the node status for a given Z-Wave device. The sensor is disabled by default. The available node statuses are explained in the [Z-Wave JS documentation](https://zwave-js.github.io/node-zwave-js/#/api/node?id=status). They can be used in state change automations. For example to ping a device when it is dead, or refresh values when it wakes up.
+2. **Ping** button: This button can be pressed to ping a device. It is an alternative to the `zwave_js.ping` service.
+3. **Controller/node statistics** sensors: Z-Wave JS collects statistics about communications between [nodes](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot) and the [controller](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot) which can be used to troubleshoot RF issues in your environment. These statistics are available in the network configuration and device info panels. But they are also available as sensors which are disabled by default.
+
+### Conditional entities
+
+1. Button to **manually idle notifications**: Any Notification Command Class (CC) values on a device that have an idle state will get a corresponding button entity. This button entity can be used to manually idle a notification when it doesn't automatically clear on its own. A device can have multiple Notification CC values. For example one for detecting smoke and one for detecting carbon monoxide.
+
## Using advanced features (UI only)
While the integration aims to provide as much functionality as possible through existing Home Assistant constructs (entities, states, automations, services, etc.), there are some features that are only available through the UI.
@@ -859,3 +873,16 @@ Z-Wave JS writes details to its logs. To access these logs go to the following.
**Settings** -> **Devices & Services** -> **Integrations(tab)** -> **Z-Wave (CONFIGURE)** -> **Logs(tab)**
You need to keep this browser tab open for logging to be active.
+
+## Z-Wave terminology
+
+For some of the concepts, you may come across different terminology in Z-Wave than in Home Assistant.
+The table below provides equivalents for some of those terms.
+
+| Z-Wave functionality | Home Assistant |
+| -------------------------------------- | ------------------------------------------------------------------------|
+| inclusion | add |
+| exclusion | remove |
+| barrier operator | cover |
+| window covering | cover |
+| multilevel switch | represented by different entity types: cover, fan, dimmer, etc. |
diff --git a/source/_posts/2020-02-19-community-highlights.markdown b/source/_posts/2020-02-19-community-highlights.markdown
index bd692f93ce3..f3ffe84844a 100644
--- a/source/_posts/2020-02-19-community-highlights.markdown
+++ b/source/_posts/2020-02-19-community-highlights.markdown
@@ -66,7 +66,7 @@ mysql -D homeassistant -e "SELECT entity_id, state, last_updated FROM states LIM
## Beta time!
-Today we are releasing the first beta of Home Assistant Core 0.106. It is packed with awesome features. For a sneak peek of what is coming, check the [beta release notes](https://rc.home-assistant.io/latest-release-notes/).
+Today we are releasing the first beta of Home Assistant Core 0.106. It is packed with awesome features. For a sneak peek of what is coming, check the [beta release notes](/blog/2020/02/26/release-106/).
I'm personally most excited about the extended safe mode. It will guarantee that the frontend will always load, no matter how broken your configuration is.
diff --git a/source/_posts/2020-03-15-community-highlights.markdown b/source/_posts/2020-03-15-community-highlights.markdown
index b3282669102..e57486289bd 100644
--- a/source/_posts/2020-03-15-community-highlights.markdown
+++ b/source/_posts/2020-03-15-community-highlights.markdown
@@ -34,7 +34,7 @@ setup has a total of 5 Home Assistant instances, controlling 7x marine aquariums
Those are some big views Kevin! I bet you will be happy with the new Lovelace
features that are coming in Home Assistant Core 0.107. It will help
you to trim down that a bit, into multiple Lovelace Dashboards (now in
-[beta, sneak peak?](https://rc.home-assistant.io/latest-release-notes/)).
+[beta, sneak peak?](/blog/2020/03/18/release-107/)).
[Click here to check out Kevin's post on our Facebook group.](https://www.facebook.com/groups/HomeAssistant/permalink/2597624533842234/)
diff --git a/source/_posts/2023-04-05-release-20234.markdown b/source/_posts/2023-04-05-release-20234.markdown
index 3474a42018b..8aefff9d92e 100644
--- a/source/_posts/2023-04-05-release-20234.markdown
+++ b/source/_posts/2023-04-05-release-20234.markdown
@@ -48,6 +48,8 @@ Happy Easter! 🐣 and enjoy the release!
- [Release 2023.4.2 - April 8](#release-202342---april-8)
- [Release 2023.4.3 - April 12](#release-202343---april-12)
- [Release 2023.4.4 - April 13](#release-202344---april-13)
+- [Release 2023.4.5 - April 17](#release-202345---april-17)
+- [Release 2023.4.6 - April 21](#release-202346---april-21)
- [Need help? Join the community!](#need-help-join-the-community)
- [Breaking Changes](#breaking-changes)
- [Farewell to the following](#farewell-to-the-following)
@@ -786,6 +788,152 @@ The following integrations are now available via the Home Assistant UI:
[homewizard docs]: /integrations/homewizard/
[lifx docs]: /integrations/lifx/
+## Release 2023.4.5 - April 17
+
+- Add SetSynchronizationPoint fallback to onvif ([@GrumpyMeow] - [#86400]) ([onvif docs])
+- Fix SharkIQ token expiration ([@funkybunch] - [#89357]) ([sharkiq docs])
+- Reolink prevent ONVIF push being lost due to ConnectionResetError ([@starkillerOG] - [#91070]) ([reolink docs])
+- Add missing mock in sharkiq tests ([@epenet] - [#91325]) ([sharkiq docs])
+- Tado set_water_heater_timer should use water_heater domain ([@rich-kettlewell] - [#91364]) ([tado docs])
+- Fix listener running in foreground for System Bridge integration ([@timmo001] - [#91391]) ([system_bridge docs])
+- Bump onvif-zeep-async to 1.2.5 ([@bdraco] - [#91399]) ([onvif docs])
+- Fix attribute reporting config failures in ZHA ([@puddly] - [#91403]) ([zha docs])
+- Save Thread dataset store when changing preferred dataset ([@emontnemery] - [#91411]) ([thread docs])
+- Bump env_canada to v0.5.33 ([@michaeldavie] - [#91468]) ([environment_canada docs])
+- Fix creating onvif pull point subscriptions when InitialTerminationTime is required ([@bdraco] - [#91470]) ([onvif docs]) (dependency)
+- Bump onvif-zeep-async to 1.2.11 ([@bdraco] - [#91472]) ([onvif docs]) (dependency)
+- Handle a few more transient onvif errors ([@bdraco] - [#91473]) ([onvif docs])
+- Reolink ONVIF move read to primary callback ([@starkillerOG] - [#91478]) ([reolink docs])
+- Fix onvif failing to reload ([@bdraco] - [#91482]) ([onvif docs])
+- Resolve issue with switchbot blind tilt devices getting stuck in opening/closing state ([@BTMorton] - [#91495]) ([switchbot docs]) (dependency)
+- Fix state mapping in fibaro climate ([@rappenze] - [#91505]) ([fibaro docs])
+- Bump unifiprotect to 4.8.1 ([@AngellusMortis] - [#91522]) ([unifiprotect docs]) (dependency)
+
+[#86400]: https://github.com/home-assistant/core/pull/86400
+[#89357]: https://github.com/home-assistant/core/pull/89357
+[#90855]: https://github.com/home-assistant/core/pull/90855
+[#90956]: https://github.com/home-assistant/core/pull/90956
+[#91070]: https://github.com/home-assistant/core/pull/91070
+[#91111]: https://github.com/home-assistant/core/pull/91111
+[#91316]: https://github.com/home-assistant/core/pull/91316
+[#91325]: https://github.com/home-assistant/core/pull/91325
+[#91356]: https://github.com/home-assistant/core/pull/91356
+[#91364]: https://github.com/home-assistant/core/pull/91364
+[#91391]: https://github.com/home-assistant/core/pull/91391
+[#91399]: https://github.com/home-assistant/core/pull/91399
+[#91403]: https://github.com/home-assistant/core/pull/91403
+[#91411]: https://github.com/home-assistant/core/pull/91411
+[#91468]: https://github.com/home-assistant/core/pull/91468
+[#91470]: https://github.com/home-assistant/core/pull/91470
+[#91472]: https://github.com/home-assistant/core/pull/91472
+[#91473]: https://github.com/home-assistant/core/pull/91473
+[#91478]: https://github.com/home-assistant/core/pull/91478
+[#91482]: https://github.com/home-assistant/core/pull/91482
+[#91495]: https://github.com/home-assistant/core/pull/91495
+[#91505]: https://github.com/home-assistant/core/pull/91505
+[#91522]: https://github.com/home-assistant/core/pull/91522
+[@AngellusMortis]: https://github.com/AngellusMortis
+[@BTMorton]: https://github.com/BTMorton
+[@GrumpyMeow]: https://github.com/GrumpyMeow
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@frenck]: https://github.com/frenck
+[@funkybunch]: https://github.com/funkybunch
+[@michaeldavie]: https://github.com/michaeldavie
+[@puddly]: https://github.com/puddly
+[@rappenze]: https://github.com/rappenze
+[@rich-kettlewell]: https://github.com/rich-kettlewell
+[@starkillerOG]: https://github.com/starkillerOG
+[@timmo001]: https://github.com/timmo001
+[actiontec docs]: /integrations/actiontec/
+[advantage_air docs]: /integrations/advantage_air/
+[airly docs]: /integrations/airly/
+[environment_canada docs]: /integrations/environment_canada/
+[fibaro docs]: /integrations/fibaro/
+[frontend docs]: /integrations/frontend/
+[homewizard docs]: /integrations/homewizard/
+[lifx docs]: /integrations/lifx/
+[onvif docs]: /integrations/onvif/
+[reolink docs]: /integrations/reolink/
+[sharkiq docs]: /integrations/sharkiq/
+[switchbot docs]: /integrations/switchbot/
+[system_bridge docs]: /integrations/system_bridge/
+[tado docs]: /integrations/tado/
+[thread docs]: /integrations/thread/
+[unifiprotect docs]: /integrations/unifiprotect/
+[zha docs]: /integrations/zha/
+
+## Release 2023.4.6 - April 21
+
+- Add a guard against selecting all entities in `state_changes_during_period` ([@bdraco] - [#91585]) ([recorder docs])
+- Fix tasks with no due date from not triggering `on` calendar state. ([@boralyl] - [#91196]) ([todoist docs])
+- Fix Insteon thermostat issue ([@teharris1] - [#91568]) ([insteon docs])
+- Handle UnsupportedError in HomeWizard ([@DCSBL] - [#91608]) ([homewizard docs])
+- Bump renault-api to 0.1.13 ([@epenet] - [#91609]) ([renault docs])
+- Handle long format context UUIDs during migration ([@bdraco] - [#91657]) ([recorder docs])
+- Bump aioshelly to 5.3.2 ([@thecode] - [#91679]) ([shelly docs])
+- Fallback to generating a new ULID on migraiton if context is missing or invalid ([@bdraco] - [#91704]) ([recorder docs])
+- Bump python-songpal dependency ([@rytilahti] - [#91708]) ([songpal docs])
+- Do not wait for mqtt at startup mqtt_statestream ([@jbouwh] - [#91721]) ([mqtt_statestream docs])
+- Bump pylitterbot to 2023.4.0 ([@natekspencer] - [#91759]) ([litterrobot docs])
+- Bump pysml to 0.0.10 ([@StephanU] - [#91773]) ([edl21 docs])
+- Relax the constraint that events must have a consistent timezone for start/end ([@allenporter] - [#91788]) ([google docs]) ([calendar docs])
+- Disallow uploading files to bypass the media dirs ([@balloob] - [#91817]) ([media_source docs])
+
+[#90855]: https://github.com/home-assistant/core/pull/90855
+[#90956]: https://github.com/home-assistant/core/pull/90956
+[#91111]: https://github.com/home-assistant/core/pull/91111
+[#91196]: https://github.com/home-assistant/core/pull/91196
+[#91316]: https://github.com/home-assistant/core/pull/91316
+[#91356]: https://github.com/home-assistant/core/pull/91356
+[#91544]: https://github.com/home-assistant/core/pull/91544
+[#91568]: https://github.com/home-assistant/core/pull/91568
+[#91585]: https://github.com/home-assistant/core/pull/91585
+[#91608]: https://github.com/home-assistant/core/pull/91608
+[#91609]: https://github.com/home-assistant/core/pull/91609
+[#91657]: https://github.com/home-assistant/core/pull/91657
+[#91679]: https://github.com/home-assistant/core/pull/91679
+[#91704]: https://github.com/home-assistant/core/pull/91704
+[#91708]: https://github.com/home-assistant/core/pull/91708
+[#91721]: https://github.com/home-assistant/core/pull/91721
+[#91759]: https://github.com/home-assistant/core/pull/91759
+[#91773]: https://github.com/home-assistant/core/pull/91773
+[#91788]: https://github.com/home-assistant/core/pull/91788
+[#91817]: https://github.com/home-assistant/core/pull/91817
+[@DCSBL]: https://github.com/DCSBL
+[@StephanU]: https://github.com/StephanU
+[@allenporter]: https://github.com/allenporter
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@boralyl]: https://github.com/boralyl
+[@epenet]: https://github.com/epenet
+[@frenck]: https://github.com/frenck
+[@jbouwh]: https://github.com/jbouwh
+[@natekspencer]: https://github.com/natekspencer
+[@rytilahti]: https://github.com/rytilahti
+[@teharris1]: https://github.com/teharris1
+[@thecode]: https://github.com/thecode
+[actiontec docs]: /integrations/actiontec/
+[advantage_air docs]: /integrations/advantage_air/
+[airly docs]: /integrations/airly/
+[calendar docs]: /integrations/calendar/
+[edl21 docs]: /integrations/edl21/
+[frontend docs]: /integrations/frontend/
+[google docs]: /integrations/google/
+[homewizard docs]: /integrations/homewizard/
+[insteon docs]: /integrations/insteon/
+[lifx docs]: /integrations/lifx/
+[litterrobot docs]: /integrations/litterrobot/
+[media_source docs]: /integrations/media_source/
+[mqtt_statestream docs]: /integrations/mqtt_statestream/
+[recorder docs]: /integrations/recorder/
+[renault docs]: /integrations/renault/
+[shelly docs]: /integrations/shelly/
+[songpal docs]: /integrations/songpal/
+[todoist docs]: /integrations/todoist/
+
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing
@@ -923,9 +1071,11 @@ mappings configured in the **service**.
{% details "Home Connect" %}
-Not really a breaking change, but as of now, only program entities are
-created for the programs your device supports. You might need to manually remove
-old/existing entities that are no longer provided.
+In order to obtain an up-to-date list of compatible programs for your appliances, it will be necessary to reconfigure the integration.
+
+Please note that due to limitations on the Home Connect side, it is important to have your appliances **Turned on** during the reconfiguration process.
+
+This action is a one-time requirement.
([@stickpin] - [#88801]) ([documentation](/integrations/home_connect))
diff --git a/source/_posts/2023-04-18-home-assistant-os-release-10.markdown b/source/_posts/2023-04-18-home-assistant-os-release-10.markdown
new file mode 100644
index 00000000000..1f8cdc8d09f
--- /dev/null
+++ b/source/_posts/2023-04-18-home-assistant-os-release-10.markdown
@@ -0,0 +1,111 @@
+---
+layout: post
+title: "Home Assistant OS 10: Better memory management and new board support"
+description: "Home Assistant OS 10 released with better memory management and Hardkernel ODROID-M1 board support!"
+date: 2023-04-18 00:00:00
+date_formatted: "April 18, 2023"
+author: Stefan Agner
+comments: true
+categories:
+ - Announcements
+og_image: /images/blog/2023-04-18-os10/social.png
+---
+
+
+
+
+
+
+**Highlights**:
+
+- Support for Hardkernel ODROID-M1
+- Improved data disk feature:
+ - Improved reliability
+ - Move from one data disk to a new data disk is now supported
+- Improved memory management to improve overall device performance, especially in low memory situations
+- Updated software packages: Linux, Docker, BlueZ, NetworkManager
+
+For existing installations, no manual intervention is needed! You can safely
+update without reading these rather technical release notes.
+
+## Table of contents
+
+- [Table of contents](#table-of-contents)
+- [New board support: Hardkernel ODROID-M1](#new-board-support-hardkernel-odroid-m1)
+- [Improved data disk feature](#improved-data-disk-feature)
+- [Advanced memory management](#advanced-memory-management)
+- [Updated software packages](#updated-software-packages)
+
+## New board support: Hardkernel ODROID-M1
+
+Home Assistant OS 10 supports the Hardkernel ODROID-M1 single board computer!
+Most notably, the ODROID-M1 supports NVMe SSD storage natively, which makes it
+another great choice to run Home Assistant on. With its quad-core CPU with up
+to 2 GHz and up to 8 GB of memory it is suitable even for demanding Home
+Assistant installations.
+
+Currently, Home Assistant can be booted off an SD-card or an eMMC. Note however
+that a new boot firmware (Petitboot) is required to boot from eMMC (see
+the [board-specific documentation](https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/hardkernel/odroid-m1.md)). NVMe SSD boot is currently not supported
+by the boot firmware. However, an NVMe SSD can be used through the data disk
+feature.
+
+Buy ODROID-M1 at [Ameridroid](https://ameridroid.com/products/odroid-m1?ref=eeb6nfw07e) or directly at [Hardkernel](https://www.hardkernel.com/shop/odroid-m1-with-4gbyte-ram/)
+
+
+
+## Improved data disk feature
+
+The data disk feature allows extending storage by adding an external disk.
+When using the data disk feature, all commonly read and written data is moved
+to that storage, just Home Assistant OS itself remains on the existing storage
+(for example, SD-card or eMMC). Home Assistant OS is a read-only operating system — the
+OS partitions are only written to when updating the operating system. This makes
+sure that there is minimal wear on the existing storage.
+
+In this OS release, together with the latest version of the Supervisor, the
+data disk feature gets more user-friendly: The data disk choice now lists the model of available data disks. Disk will now be reliably detected and available as the new data disk in certain edge cases were they previously weren't.
+
+It is also possible to move from one data disk to another:
+Simply connect another disk, and go to the **Move data disk** dialog again. On
+reboot, the data will be moved and the old data disk can be detached. You can find the move data disk feature under **Settings** > **System** > **Storage** in
+the top right overflow menu.
+
+
+
+## Advanced memory management
+
+With Home Assistant OS 10 low memory, devices will generally perform better.
+Firstly, we moved from zram to zswap, which allows us to use the storage as an
+actual swap space. We’ve tuned the memory management to minimize the number of
+writes to storage (to prevent unnecessary wear on SD-cards and other flash
+memory-based storage).
+
+We’ve also improved reliability and responsiveness in low-memory situations:
+Home Assistant OS uses a new memory management mechanism named Multi-Gen LRU
+along with thrashing prevention. This makes Home Assistant OS recover quickly
+from a low-memory situation and remain responsive.
+
+In general, we recommend using a board with at least 1 GB of memory and make
+sure to stay well below 80% memory utilization. You can monitor the overall
+memory utilization under **Settings** > **System** > **Hardware**.
+
+## Updated software packages
+
+Home Assistant OS is built using the latest release of Buildroot 2023.02. It
+comes with the latest Linux kernel with long-term support (6.1). This means
+updated drivers and better device support. It uses the latest version of
+Docker 23.0.3, our container engine powering the Supervisor and our add-ons.
+The latest version of the Bluetooth package BlueZ 5.66 comes with various bug
+fixes for improved communication with Bluetooth devices. Network Manager
+1.40.16 has proven to work more reliably with third party Thread border routers,
+specifically with Apple border routers. We also improved the IPv6 Neighbor
+Discovery support on Home Assistant OS specifically for Thread: Home Assistant
+OS will now quickly discover when border routers disappear from the network and
+use alternative border routers, if available.
+
+We hope you enjoy Home Assistant OS 10.0! If you have any questions or feedback,
+please let us know.
+
+_Some product links are affiliate links and we earn a small commission when products are bought._
diff --git a/source/_redirects b/source/_redirects
index 34b28af854c..9e7e5b5c2bc 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -1,5 +1,10 @@
+---
+layout: null
+---
+
# These redirects are handled by Netlify
#
+{% assign recent_release_post = site.categories['Core'].first %}
# General use redirects
/join-chat https://discord.gg/home-assistant
@@ -12,6 +17,9 @@
/issues https://github.com/home-assistant/core/issues
/community https://community.home-assistant.io/
+# Link to latest release note
+/latest-release-notes/ {{ recent_release_post.url }}{{ site.patch_version_notes }} 302!
+
# Matter workshop June 2022
/skyconnect-interest https://docs.google.com/forms/d/e/1FAIpQLScEjHSBJszUZfgO3MIDO51IHr3Oeohcs8BLpRIjY1liJ58IpA/viewform?usp=sf_link
@@ -156,6 +164,10 @@
/integrations/light.group /integrations/group
/integrations/media_player.group /integrations/group
/integrations/notify.group /integrations/group#notify-groups
+/integrations/cover.command_line /integrations/command_line#Cover
+/integrations/notify.command_line /integrations/command_line#Notify
+/integrations/sensor.command_line /integrations/command_line#Sensor
+/integrations/switch.command_line /integrations/command_line#Switch
/components/air_pollutants.* /integrations/:splat
/components/air_quality.* /integrations/:splat
diff --git a/source/blue/index.html b/source/blue/index.html
index 3042895b314..7925a686254 100644
--- a/source/blue/index.html
+++ b/source/blue/index.html
@@ -34,6 +34,10 @@ frontpage_image: /images/frontpage/blue-frontpage.jpg
The limited edition Home Assistant Blue bundle is hardware that is affordable
and fast, packed in a custom-designed and gorgeous case, and powered by the most powerful home
automation software on the planet: Home Assistant.
+
+ Discontinued! The edition of the Blue was — limited. We are out of stock, with no plans to relaunch this edition.
+ Sorry you missed it. The new kid on the block is Home Assistant Yellow.
+ You know what else is blue, pretty, and has our logo on it? Home Assistant SkyConnect.
diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown
index 881895d4512..57932a8c383 100644
--- a/source/getting-started/automation.markdown
+++ b/source/getting-started/automation.markdown
@@ -3,32 +3,23 @@ title: "Automating Home Assistant"
description: "A quick intro on getting your first automation going."
---
-Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to turn on the lights when the sun sets. Of course, this assumes that you have set up an integration that provides a light at this point.
+Once your {% term devices %} are set up, it's time to put the cherry on the pie: {% term automation %}. In this guide we're going to create a simple automation rule to turn on the lights when the sun sets. Of course, this assumes that you have set up an integration that provides a light at this point.
-In the user interface, click **Settings** in the sidebar, then click **Automations & Scenes**. You will now see the automation screen from which you can manage all the automations in Home Assistant.
+In the user interface in the sidebar, click **{% my automations title="Settings > Automations & Scenes" %}**. You will now see the automation screen from which you can manage all the automations in Home Assistant.
-
-
-The automation editor.
-
+
-Click the blue button at the bottom right to create a new automation. A dialog will appear. Choose **Start with an empty automation**. You are presented with a blank automation screen.
+Click the blue button at the bottom right to create a new automation. A dialog will appear. Choose **Create new automation**. You are presented with a blank automation screen.
-
-
-The start of a new automation.
-
+
The first thing we will do is set a name. Enter "Turn Lights On at Sunset".
-The second step is defining what should trigger our automation to run. In this case, we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset.
+The second step is defining what should {% term trigger %} our automation to run. In this case, we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset.
In the trigger section, click on the dropdown menu and change the trigger type to **Sun**. It allows us to choose sunrise or sunset, so go ahead and pick **Sunset**. As we discussed, we want our automation to be triggered a little before the sun actually sets, so let's add `-00:30` as the offset. This indicates that the automation will be triggered 30 minutes before the sun actually sets. Neat!
-
-
-A new automation with a sun trigger filled in.
-
+
Once we have defined our trigger, scroll down to the action section. Make sure the action type is set to **Call service** and change the service to `light.turn_on`. For this automation we're going to turn on all lights, so let's change the service data to:
@@ -36,10 +27,7 @@ Once we have defined our trigger, scroll down to the action section. Make sure t
entity_id: all
```
-
-
-A new automation with the action set up to turn on the lights.
-
+
Click the orange button to save the automation. Now wait till it's 30 minutes until the sun sets and see your automation magic!
diff --git a/source/getting-started/concepts-terminology.markdown b/source/getting-started/concepts-terminology.markdown
index f14166fbd9a..caf599d14b6 100644
--- a/source/getting-started/concepts-terminology.markdown
+++ b/source/getting-started/concepts-terminology.markdown
@@ -47,7 +47,7 @@ Similar to automations, repeatable actions that can be run. The difference betwe
## Scenes
-Scenes allow you to create predefined settings for your devices. Likened to driving mode on phones, driver profiles in cars, it can change an environment to suite you. For example, your environment for watching films may have dimmer lighting, TV is switched on and higher volume. This can be saved as a scene and used without having to set individual devices every time.
+Scenes allow you to create predefined settings for your devices. Likened to driving mode on phones, driver profiles in cars, it can change an environment to suit you. For example, your environment for watching films may have dimmer lighting, TV is switched on and higher volume. This can be saved as a scene and used without having to set individual devices every time.
Further details can be found [here](/integrations/scene/).
diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown
index 857bf272417..8c1849ef3c8 100644
--- a/source/getting-started/configuration.markdown
+++ b/source/getting-started/configuration.markdown
@@ -15,9 +15,9 @@ We are going to help you make your first changes to `configuration.yaml`. To do

-Under the "Official add-ons" section you will find the File editor add-on.
+Under the **Official add-ons** section, you will find the **File editor** add-on.
- - Click on File Editor and click on **Install**. When installation is complete, the UI will go to the add-on details page for the file editor.
+ - Click on **File editor** and click on **Install**. When the installation is complete, the UI will go to the add-on details page for the file editor.
- Now start the add-on by clicking on **Start**.
- Open the user interface by clicking on **Open Web UI**.
@@ -41,8 +41,8 @@ Now let's make a change using the file editor: we are going to change the name,
- Click the save icon in the top right to commit changes.
- - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a configuration check. Do this by navigating to {% my server_controls title="Developer Tools -> YAML" %} and and then clicking on the **Check configuration** button. When it's valid, it will show the text "Configuration valid!". In order for the **Check Configuration**" button to be visible, you must enable "Advanced Mode" on your user profile.
- - Now Restart Home Assistant. You can do so by either using the **Restart** option in the ⚙ menu of the File Editor UI or by navigating to {% my system_dashboard title="Settings -> System" %} and then clicking on the **Restart** button on the top right of the page.
+ - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a configuration check. Do this by navigating to {% my server_controls title="Developer Tools > YAML" %} and and then clicking on the **Check configuration** button. When it's valid, it will show the text "Configuration valid!". In order for the **Check Configuration**" button to be visible, you must enable **Advanced Mode** on your user profile.
+ - Now restart Home Assistant. You can do so by either using the **Restart** option in the ⚙ menu of the File Editor UI or by navigating to {% my system_dashboard title="Settings > System" %} and then clicking on the **Restart** button on the top right of the page.

@@ -56,6 +56,6 @@ Now let's make a change using the file editor: we are going to change the name,
Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can also be installed from the Home Assistant add-on store. This will make your configuration accessible via the network tab on your computer.
-Go to the add-on store and look for Samba in the core section. After you have installed the add-on, click on START. Home Assistant should now be available in the networking tab on your computer.
+Go to the add-on store and look for Samba in the core section. After you have installed the add-on, click on **Start**. Home Assistant should now be available in the networking tab on your computer.
We suggest that to edit `configuration.yaml`, you use the free text editor [Visual Studio Code](https://code.visualstudio.com/) in combination with the [Home Assistant Configuration Helper extension](https://marketplace.visualstudio.com/items?itemName=keesschollaart.vscode-home-assistant).
diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown
index 3bd97264437..aa8bac323f0 100644
--- a/source/getting-started/onboarding.markdown
+++ b/source/getting-started/onboarding.markdown
@@ -5,23 +5,23 @@ description: "Instructions to get Home Assistant configured."
Alright, you made it here. The tough part is done.
-With Home Assistant installed, it's time to configure it. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and click on "create account".
+With Home Assistant installed, it's time to configure it. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and select **create account**.

-Next, you can enter a name for your home and set your location and unit system. Click "DETECT" to find your location and set your time zone and unit system based on that location. If you'd rather not send your location, you can set these values manually.
+Next, you can enter a name for your home and set your location and unit system. Select **Detect** to find your location and set your time zone and unit system based on that location. If you'd rather not send your location, you can set these values manually.

-Once you are done, click Next. In this screen, Home Assistant will show any devices that it has discovered on your network. Don't be alarmed if you see fewer items than what is shown below; you can always manually add devices later.
+Once you are done, click **Next**. In this screen, Home Assistant will show any {% term devices %} that it has discovered on your network. Don't be alarmed if you see fewer items than shown below; you can always manually add devices later.

-Finally, click Finish. Now you're brought to the Home Assistant web interface. This screen will show all of your devices. So let's get that screen filled up!
+Finally, click **Finish**. Now you're brought to the Home Assistant web interface. This screen will show all of your devices. So let's get that screen filled up!

-From the side bar, click on {% my integrations title="Settings -> Devices & Services" %}. At this screen you will be able to set up integrations with Home Assistant. You might notice a "discovered" section. This section contains integrations that were found on your network and can easily be added with a few clicks. If your integrations are not discovered, click the **Add integration** button in the lower right and search for your integration in that list.
+From the side bar, click on {% my integrations title="Settings > Devices & Services" %}. On this screen, you will be able to set up {% term integrations %} with Home Assistant.

diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown
index 15fc321ee76..71eac4875eb 100644
--- a/source/getting-started/presence-detection.markdown
+++ b/source/getting-started/presence-detection.markdown
@@ -12,7 +12,7 @@ Presence detection detects if people are home, which can be valuable input for a
### Adding presence detection
-There are different ways of setting up presence detection. Usually the easiest way to detect presence is by checking which devices are connected to the network. You can do that if you have one of our [supported routers][routers]. By leveraging what your router already knows, you can easily detect if people are at home.
+There are different ways of setting up presence detection. Usually the easiest way to detect presence is by checking which {% term devices %} are connected to the network. You can do that if you have one of our [supported routers][routers]. By leveraging what your router already knows, you can easily detect if people are at home.
It's also possible to run an app on your phone to provide detailed location information to your Home Assistant instance. For iOS and Android, we suggest using the [Home Assistant Companion app][companion].
@@ -22,7 +22,7 @@ During the setup of Home Assistant Companion on your mobile device, the app will
### Zones

-Zones allow you to name areas on a map. These areas can then be used to name the location a tracked user is, or use entering/leaving a zone as an automation [trigger] or [condition]. See [Zones integration](/integrations/zone/) page for more details like creating zones.
+{% term Zones %} allow you to name areas on a map. These areas can then be used to name the location a tracked user is, or use entering/leaving a zone as an automation {% term trigger %} or {% term condition %}. See [Zones integration](/integrations/zone/) page for more details like creating zones.
The map view will hide all devices that are home.
diff --git a/source/images/blog/2023-04-18-os10/datadisk-new.png b/source/images/blog/2023-04-18-os10/datadisk-new.png
new file mode 100644
index 00000000000..85c8dd93af6
Binary files /dev/null and b/source/images/blog/2023-04-18-os10/datadisk-new.png differ
diff --git a/source/images/blog/2023-04-18-os10/hardkernel-odroid-m1.jpg b/source/images/blog/2023-04-18-os10/hardkernel-odroid-m1.jpg
new file mode 100644
index 00000000000..c08e4ab371e
Binary files /dev/null and b/source/images/blog/2023-04-18-os10/hardkernel-odroid-m1.jpg differ
diff --git a/source/images/blog/2023-04-18-os10/social.png b/source/images/blog/2023-04-18-os10/social.png
new file mode 100644
index 00000000000..1edf34bd10a
Binary files /dev/null and b/source/images/blog/2023-04-18-os10/social.png differ
diff --git a/source/images/docs/automation-editor/add-trigger-to-automation.png b/source/images/docs/automation-editor/add-trigger-to-automation.png
new file mode 100644
index 00000000000..aecd2455d78
Binary files /dev/null and b/source/images/docs/automation-editor/add-trigger-to-automation.png differ
diff --git a/source/images/docs/automation-editor/create-automation.png b/source/images/docs/automation-editor/create-automation.png
index efecf35f947..b2977c7832c 100644
Binary files a/source/images/docs/automation-editor/create-automation.png and b/source/images/docs/automation-editor/create-automation.png differ
diff --git a/source/images/docs/automation-editor/new-action.png b/source/images/docs/automation-editor/new-action.png
index ad697750f0c..26dc6edc9e2 100644
Binary files a/source/images/docs/automation-editor/new-action.png and b/source/images/docs/automation-editor/new-action.png differ
diff --git a/source/images/docs/automation-editor/new-automation.png b/source/images/docs/automation-editor/new-automation.png
index 327822a93cc..bf202cae1a5 100644
Binary files a/source/images/docs/automation-editor/new-automation.png and b/source/images/docs/automation-editor/new-automation.png differ
diff --git a/source/images/docs/automation-editor/new-trigger.png b/source/images/docs/automation-editor/new-trigger.png
index 1311351bb2e..f5395a33f07 100644
Binary files a/source/images/docs/automation-editor/new-trigger.png and b/source/images/docs/automation-editor/new-trigger.png differ
diff --git a/source/images/docs/automation-editor/send-notification.png b/source/images/docs/automation-editor/send-notification.png
new file mode 100644
index 00000000000..9196647ffe9
Binary files /dev/null and b/source/images/docs/automation-editor/send-notification.png differ
diff --git a/source/images/docs/z-wave/zpi-7-yellow.jpg b/source/images/docs/z-wave/zpi-7-yellow.jpg
new file mode 100644
index 00000000000..612599ecb8f
Binary files /dev/null and b/source/images/docs/z-wave/zpi-7-yellow.jpg differ
diff --git a/source/images/installation/rpi-imager-start.png b/source/images/installation/rpi-imager-start.png
new file mode 100644
index 00000000000..f5b6cf2e3d2
Binary files /dev/null and b/source/images/installation/rpi-imager-start.png differ
diff --git a/source/images/installation/rpi-select-os.png b/source/images/installation/rpi-select-os.png
new file mode 100644
index 00000000000..fc3635d7ee8
Binary files /dev/null and b/source/images/installation/rpi-select-os.png differ
diff --git a/source/images/installation/rpi-select-sd-card.png b/source/images/installation/rpi-select-sd-card.png
new file mode 100644
index 00000000000..a17cca6dfcf
Binary files /dev/null and b/source/images/installation/rpi-select-sd-card.png differ
diff --git a/source/images/installation/rpi-select-write.png b/source/images/installation/rpi-select-write.png
new file mode 100644
index 00000000000..918f5971085
Binary files /dev/null and b/source/images/installation/rpi-select-write.png differ
diff --git a/source/images/installation/rpi_imager.png b/source/images/installation/rpi_imager.png
new file mode 100644
index 00000000000..5fd86c73b23
Binary files /dev/null and b/source/images/installation/rpi_imager.png differ
diff --git a/source/images/integrations/androidtv_remote/lovelace_example.png b/source/images/integrations/androidtv_remote/lovelace_example.png
new file mode 100644
index 00000000000..ac68b166ad1
Binary files /dev/null and b/source/images/integrations/androidtv_remote/lovelace_example.png differ
diff --git a/source/images/integrations/easyenergy/pricegraph.png b/source/images/integrations/easyenergy/pricegraph.png
new file mode 100644
index 00000000000..489328cc6c4
Binary files /dev/null and b/source/images/integrations/easyenergy/pricegraph.png differ
diff --git a/source/images/integrations/matter/matter_thread_infographic.webp b/source/images/integrations/matter/matter_thread_infographic.webp
new file mode 100644
index 00000000000..b4bc57284a3
Binary files /dev/null and b/source/images/integrations/matter/matter_thread_infographic.webp differ
diff --git a/source/index.html b/source/index.html
index 6f3b6c90f56..146a16a7f67 100644
--- a/source/index.html
+++ b/source/index.html
@@ -6,6 +6,7 @@ is_homepage: true
regenerate: true
feedback: false
---
+{% assign recent_release_post = site.categories['Core'].first %}
@@ -21,7 +22,7 @@ feedback: false
>
@@ -266,4 +267,4 @@ feedback: false
-