- Daikin has removed their local API in newer products. They offer a cloud API accessible only under NDA, which is incompatible with open source. This affects units fitted with the BRP069C4x wifi adapter. Units listed under Supported Hardware below continue to have access to local control. Additionally the older but commonly available BRP072A42 adapter can be fitted to most if not all newer units for access to local control.
-
+
+
+Daikin has removed their local API in newer products. They offer a Onecta cloud API for controlling Daikin devices through the cloud, see the [Daikin Europe Developer Portal](https://developer.cloud.daikineurope.com) for more details. This affects units fitted with the BRP069C4x wifi adapter. Units listed under Supported Hardware below continue to have access to local control. Additionally the older but commonly available BRP072A42 adapter can be fitted to most if not all newer units for access to local control.
+
+
The **Daikin** {% term integration %} integrates Daikin air conditioning systems into Home Assistant.
diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown
index 0d27f477fae..756fd16477a 100644
--- a/source/_integrations/ecovacs.markdown
+++ b/source/_integrations/ecovacs.markdown
@@ -34,7 +34,7 @@ The `ecovacs` {% term integration %} is the main integration to integrate [Ecova
Additional note: There are some issues during the password encoding. Using some special characters (e.g., `-`) in your password does not work.
-With `advanced_mode` enabled, users can use their self-hosted instance over the cloud servers. Self-hosting comes with some requirements and limitations. More information can be found in the [Bumper's documentation](https://bumper.readthedocs.io).
+With `advanced_mode` enabled, users can use their self-hosted instance over the cloud servers. Self-hosting comes with some requirements and limitations. See [Self-hosted configuration](#self-hosted-configuration) for additional details.
## Provided entities
@@ -136,3 +136,16 @@ Alternatively, you can use the `ecovacs_error` event to watch for errors. This e
```
Finally, if a vacuum becomes unavailable (usually due to being idle and off its charger long enough for it to completely power off,) the vacuum's `status` attribute will change to `offline` until it is turned back on.
+
+## Self-hosted configuration
+
+Depending on your setup of the self-hosted instance, you can connect to the server using the following settings:
+- `Username`: Enter the e-mail address configured in your instance. If authentication is disabled, you can enter any valid e-mail address.
+- `Password`: Enter the password configured in your instance. If authentication is disabled, you can enter any string (series of characters).
+- `REST URL`: http://`SELF_HOSTED_INSTANCE`:8007
+- `MQTT URL`: mqtts://`SELF_HOSTED_INSTANCE`:8883
+- `Verify MQTT SSL certificate`: disabled
+
+Replace `SELF_HOSTED_INSTANCE` with either the IP address or the hostname of your instance.
+
+The above configuration is based on the information from [Bumper's documentation](https://bumper.readthedocs.io).
diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown
index 8b5844cf9e8..44a26535ed6 100644
--- a/source/_integrations/fan.markdown
+++ b/source/_integrations/fan.markdown
@@ -126,7 +126,7 @@ automation:
### Service `fan.turn_on`
-Turn fan device on. This is only supported if the fan device supports being turned off.
+Turn fan device on. This is only supported if the fan device supports being turned off. See a similar example under `fan.turn_off`.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
@@ -151,7 +151,7 @@ automation:
platform: time
at: "07:15:00"
action:
- - service: fan.set_speed
+ - service: fan.turn_off
target:
entity_id: fan.kitchen
data:
diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown
index 18484c3b208..e6a84090b2c 100644
--- a/source/_integrations/fan.mqtt.markdown
+++ b/source/_integrations/fan.mqtt.markdown
@@ -328,7 +328,6 @@ mqtt:
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"
diff --git a/source/_integrations/file_upload.markdown b/source/_integrations/file_upload.markdown
index cab53d08fb5..25489b543d8 100644
--- a/source/_integrations/file_upload.markdown
+++ b/source/_integrations/file_upload.markdown
@@ -11,3 +11,5 @@ ha_category: []
---
The file upload integration allows various features in the frontend to upload files.
+
+{% include integrations/building_block_integration.md %}
diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown
index dc8d30b8eae..58f27d628fc 100644
--- a/source/_integrations/google_translate.markdown
+++ b/source/_integrations/google_translate.markdown
@@ -40,7 +40,24 @@ You can also use supported BCP 47 tags like the below or the 2-2 digit format fo
| es-es | es | es |
| es-us | es | com |
-## Service say
+
+## Service speak
+
+The `tts.speak` service is the modern way to use Google translate TTS action. Add the `speak` action, select the entity for your Google translate TTS (it's named for the language you created it with), select the media player entity or group to send the TTS audio to, and enter the message to speak.
+
+For more options about `speak`, see the Speak section on the main [TTS](/integrations/tts/#service-speak) building block page.
+
+In YAML, your action will look like this:
+```yaml
+service: tts.speak
+target:
+ entity_id: tts.google_en_com
+data:
+ media_player_entity_id: media_player.giant_tv
+ message: Hello, can you hear me now?
+```
+
+## Service say (legacy)
diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown
index 727cae7d495..26228765db9 100644
--- a/source/_integrations/matter.markdown
+++ b/source/_integrations/matter.markdown
@@ -80,7 +80,6 @@ One of the great features of Matter is the so-called _Multi Fabric_ feature: you
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.
-
## Supported installation types
It is recommended to run the Matter add-on on Home Assistant OS. This is currently the only supported option. Other installation types are without support and at your own risk.
@@ -180,6 +179,23 @@ This guide describes how to add a new device. This will use the Bluetooth connec
+### Troubleshooting the installation
+
+Check these steps if you are experiencing issues when trying to add a Matter device using the Home Assistant Companion app on your Android phone.
+
+#### Symptom
+
+While trying to add the Matter device, I get an error stating that *Matter is currently unavailable*.
+
+#### Remedy
+
+This could mean that not all required Matter modules that are needed by the Home Assistant Companion App have been downloaded yet. Try the following steps:
+
+1. Wait up to 24 hours for the Google Play services to download the necessary Matter modules.
+2. If this did not work, try reinstalling the Home Assistant Companion app.
+3. If this did not work, try installing the Google Home app. Technically this is not required, but it might trigger another installation attempt of the Matter modules.
+4. Refer to this [Troubleshooting Guide from Google](https://developers.home.google.com/matter/verify-services).
+
## Sharing a device from another platform with Home Assistant
Use one of these methods if your Matter device was added to Apple Home or Google Home and you want to control it from both Apple or Google Home and Home Assistant.
diff --git a/source/_integrations/powerwall.markdown b/source/_integrations/powerwall.markdown
index e8d302fba57..67e5580ff51 100644
--- a/source/_integrations/powerwall.markdown
+++ b/source/_integrations/powerwall.markdown
@@ -47,42 +47,41 @@ The following binary sensors are added for each Backup Gateway:
The following sensors are added for each Backup Gateway aggregated across all Powerwalls:
- Powerwall Backup Reserve - Reserve energy for grid outages in %
-- Powerwall Battery Now - Usage in kW
+- Powerwall Battery Now - Power in kW (negative for charging)
- Powerwall Charge - Percent charge remaining in %
-- Powerwall Generator Now - Usage in kW (if applicable)
-- Powerwall Load Now - Load usage in kW
-- Powerwall Solar Now - Solar usage in kW (if applicable)
-- Powerwall Site Now - Site usage in kW
+- Powerwall Generator Now - Power in kW (if applicable)
+- Powerwall Load Now - Power in kW
+- Powerwall Solar Now - Power in kW (if applicable)
+- Powerwall Site Now - Power in kW (negative for grid export)
- Powerwall Backup Reserve - Percentage of battery which will be reserved for a grid outage
-- Frequency/ Average Current/ Average Voltage Now
+- Frequency/ Average Current/ Average Voltage Now - in Hertz, Amps and Volts
-The following sensors show the direction of energy in aggregate:
+The following sensors measure lifetime energy flow:
- Powerwall Solar Export - Solar energy exported in kWh
-- Powerwall Solar Import - Solar energy imported in kWh
+- Powerwall Solar Import - Solar energy imported in kWh (generally near zero)
- Powerwall Site Export - Site energy exported in kWh
- Powerwall Site Import - Site energy imported in kWh
- Powerwall Battery Export - Battery energy exported in kWh
- Powerwall Battery Import - Battery energy imported in kWh
-- Powerwall Load Export - Load energy exported in kWh
+- Powerwall Load Export - Load energy exported in kWh (generally zero)
- Powerwall Load Import - Load energy imported in kWh
-- Powerwall Generator Export - Generator energy exported in kWh
+- Powerwall Generator Export - Generator energy exported in kWh
- Powerwall Generator Import - Generator energy imported in kWh
-The following sensors are added for each Powerwall:
-- Powerwall Battery Capacity - Capacity in kWh
-- Powerwall Battery Remaining - Remaining capacity in kWh
-- Frequency/ Average Current/ Average Voltage Now
-- Powerwall Load Now - Load usage in kW
+A Powerwall battery device for each battery, connected to the Powerwall Gateway, with the following sensors:
+- Powerwall Battery Capacity - Energy in kWh
+- Powerwall Battery Remaining - Remaining energy in kWh
+- Frequency/ Average Current/ Average Voltage Now in Hertz, Amps and Volts
+- Powerwall Battery Power - Battery power in kW (negative for charging)
- Powerwall Battery Export - Battery energy exported in kWh
- Powerwall Battery Import - Battery energy imported in kWh
-- Powerwall Charge - Percent charge remaining in %
-- Powerwall Grid State - State of grid power
+- Powerwall Grid State - Battery grid compliance
### Switch
-The following switches are added for each Powerwall Backup Gateway:
+The following switch is added for the Powerwall Backup Gateway:
- Off-Grid operation - Take your Powerwall off-grid (simulate a grid outage)
diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown
index 7edab90d80e..fb5035455c4 100644
--- a/source/_integrations/proximity.markdown
+++ b/source/_integrations/proximity.markdown
@@ -24,6 +24,10 @@ Some examples of its use include:
{% include integrations/config_flow.md %}
+
+When adding the **Proximity** integration, you are prompted to define the **Tolerance distance**. The tolerance distance is used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes.
+
+
## Sensors
The following sensor entities will be created.
diff --git a/source/_integrations/recovery_mode.markdown b/source/_integrations/recovery_mode.markdown
index 22be87e3534..79080165524 100644
--- a/source/_integrations/recovery_mode.markdown
+++ b/source/_integrations/recovery_mode.markdown
@@ -10,19 +10,23 @@ ha_quality_scale: internal
ha_integration_type: system
---
-The `recovery_mode` integration is an internally used integration by the
+The **Recovery mode** integration is an internal integration used by the
Home Assistant Core.
-You don't have to configure it in any way since it is automatically always
+You don't have to configure it since it is automatically always
available when Home Assistant needs it.
If, during startup, Home Assistant has problems reading your configuration,
-it will still continue to start using bits and pieces from the configuration
-of the last time it did start.
+it will still continue to start using parts of the configuration
+from the last time Home Assistant did start.
-When this happens, Home Assistant will start in "Recovery mode" using this
-integration. In this mode, nothing is loaded, but it does give you access to
+When this happens, Home Assistant will start in **Recovery mode** using this
+integration. In this mode, no user configured integrations are loaded, but it does give you access to
the Home Assistant frontend, settings and add-ons.
This gives you the possibility to correct the issue and restart Home Assistant
to re-try.
+
+## Related topics
+
+- [General troubleshooting](/docs/troubleshooting_general/)
\ No newline at end of file
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index de374a594d7..5c1236d3c19 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -35,12 +35,23 @@ On the Reolink device, a user account with admin privileges is needed for the pr
{% include integrations/option_flow.md %}
{% configuration_basic %}
Protocol:
- description: Switch between RTSP, RTMP or FLV streaming protocol.
+ description: Switch between
RTSP,
RTMP, or
FLV streaming protocol.
RTSP supports 4K streams (h265 encoding) while
RTMP and
FLV do not.
FLV is the least demanding on the camera.
{% endconfiguration_basic %}
+## Asterisk (*) next to entities listed in this documentation
+
+If an entity listed below has an asterisk (*) next to its name, it means it is disabled by default. To use such an entity, you must [enable the entity](/common-tasks/general/#enabling-entities) first.
+
## Camera streams
-This integration creates a few camera entities, one for each stream type with different resolutions: Clear, Fluent, Balanced, Snapshots Clear, and Snapshots Fluent.
+This integration creates a few camera entities, one for each stream type with different resolutions:
+
+- Fluent (Low resolution)
+- Balanced* (Mid resolution)
+- Clear* (High resolution, resource intensive)
+- Snapshots Fluent* (Low resolution)
+- Snapshots Clear* (High resolution)
+
The Fluent stream camera entity is enabled by default; the other streams are disabled by default.
The Snapshots stream provides a sequence of image snapshots giving very low latency at the cost of a very low frame rate; this can be used when the RTMP/RTSP/FLV video stream has too much lag.
Dual lens cameras provide additional streams for the second lens.
@@ -65,10 +76,6 @@ Not all camera models generate ONVIF push events for all event types, some binar
For list of Reolink products that support ONVIF see the [Reolink Support Site](https://support.reolink.com/hc/en-us/articles/900000617826).
To ensure you have the best latency possible, refer to the [Reducing latency of motion events](#reducing-latency-of-motion-events) section.
-## Asterisk (*) next to entities listed in this documentation
-
-If an entity listed below has an asterisk (*) next to its name, it means it is disabled by default. To use such an entity, you must [enable the entity](/common-tasks/general/#enabling-entities) first.
-
## Number entities
Depending on the supported features of the camera, number entities are added for:
@@ -331,11 +338,13 @@ Then power up the camera while pointing it at the QR code. It takes about a minu
- Setting a static IP address for Reolink cameras/NVRs in your router is advisable to prevent (temporal) connectivity issues when the IP address changes.
- Do not set a static IP in the Reolink device itself, but leave the **Connection Type** on **DHCP** under **Settings** > **Network** > **Network Information** > **Set Up**. If you set it to **static** on the Reolink device itself, this is known to cause incorrect DHCP requests on the network. The incorrect DHCP request causes Home Assistant to use the wrong IP address for the camera, resulting in connection issues. The issue originates from the Reolink firmware, which keeps sending DCHP requests even when you set a static IP address in the Reolink device.
- Reolink cameras can support a limited amount of simultaneous connections. Therefore using third-party software like Frigate, Blue Iris, or Scrypted, or using the ONVIF integration at the same time can cause the camera to drop connections. This results in short unavailabilities of the Reolink entities in Home Assistant. Especially when the connections are coming from the same device (IP) where Home Assistant is running, the Reolink cameras can get confused, dropping one connection in favor of the other originating from the same host IP. If you experience disconnections/unavailabilities of the entities, please first temporarily shut down the other connections (like Frigate) to diagnose if that is the problem. If that is indeed the problem, you could try moving the third-party software to a different host (IP address) since that is known to solve the problem most of the time. You could also try switching the protocol to FLV on Home Assistant and/or the third-party software, as that is known to be less resource-intensive on the camera.
+- If the Reolink entities go to unavailable for short periods, the camera may be overloaded with requests resulting in short connection drops. To resolve this, first, check if the integration is using `ONVIF push` instead of `ONVIF long polling` (resource intensive) or `Fast polling` (very resource intensive), see the [Reducing latency of motion events](#reducing-latency-of-motion-events) section. Moreover, try switching to the
FLV streaming protocol which is the least resource-intensive for the camera, see the [options](#options) section.
- If the integration and the browser can't connect to the camera even after you enable the HTTP/HTTPS ports, try to create a new user on the camera; that fixes the problem in some cases.
### Reducing latency of motion events
ONVIF push will result in slightly faster state changes of the binary motion/AI event sensors than ONVIF long polling.
+Moreover, ONVIF push is less demanding for the camera than ONVIF long polling or fast polling, resulting in potentially less connection issues.
However, ONVIF push has some additional network configuration requirements:
- Reolink products can not push motion events to an HTTPS address (SSL).
diff --git a/source/_integrations/screenlogic.markdown b/source/_integrations/screenlogic.markdown
index 36d1d5decdf..9d8bae43ec6 100644
--- a/source/_integrations/screenlogic.markdown
+++ b/source/_integrations/screenlogic.markdown
@@ -60,8 +60,8 @@ Begins super chlorination, running for the specified period or 24 hours if none
Stops super chlorination.
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | ------------------------------------------------------------------------------------ |
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ---------------------------------------------------------------------------------------- |
| `config_entry` | no | Integration entry_id of the ScreenLogic instance you wish to stop super chlorination on. |
## Reference
diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown
index 25cadcca9ee..339c872932c 100644
--- a/source/_integrations/script.markdown
+++ b/source/_integrations/script.markdown
@@ -122,11 +122,6 @@ sequence:
type: list
{% endconfiguration %}
-### Video tutorial
-This video tutorial explains how scripts work, how to use fields in scripts, and how to use response variables in scripts.
-
-
-
### Script modes
Mode | Description
@@ -140,10 +135,133 @@ Mode | Description

-### Full configuration
+### Passing variables to scripts
+
+As part of the service, variables can be passed along to a script so they become available within templates in that script.
+
+To configure a script to accept variables using the UI, the variables can be added as fields in the script editor.
+1. In the script editor, in the 3-dots menu, select **Add fields**.
+2. A new section called **Fields** is added between the basic information and **Sequence** sections.
+3. Enter a name and choose type and options of each desired field.
+4. Fields set up here will be shown in other UI editors, such as in an automation that calls the script as inputs depending on the type of field.
+5. To use the field data, use them as templates using the **Field key name** when they were added, as shown in the example below.
+
+Using the variables in the script requires the use of templates:
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+script:
+ notify_pushover:
+ description: "Send a pushover notification"
+ fields:
+ title:
+ description: "The title of the notification"
+ example: "State change"
+ message:
+ description: "The message content"
+ example: "The light is on!"
+ sequence:
+ - condition: state
+ entity_id: switch.pushover_notifications
+ state: "on"
+ - service: notify.pushover
+ data:
+ title: "{{ title }}"
+ message: "{{ message }}"
+```
+{% endraw %}
+
+Aside from the automation editor UI, variables can be passed to scripts within the service data. This can be used either by calling the script directly or the generic `script.turn_on` service. The difference is described in [Waiting for Script to Complete](#waiting-for-script-to-complete). All service data will be made available as variables in templates, even if not specified as fields in the script. This example shows how to call the script directly:
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+automation:
+ trigger:
+ platform: state
+ entity_id: light.bedroom
+ from: "off"
+ to: "on"
+ action:
+ service: script.notify_pushover
+ data:
+ title: "State change"
+ message: "The light is on!"
+```
+{% endraw %}
+
+This example shows using `script.turn_on` service:
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+automation:
+ trigger:
+ platform: state
+ entity_id: light.bedroom
+ from: "off"
+ to: "on"
+ action:
+ service: script.turn_on
+ target:
+ entity_id: script.notify_pushover
+ data:
+ variables:
+ title: "State change"
+ message: "The light is on!"
+```
+{% endraw %}
+
+
+
+
+
+Script variables that may be used by templates include the following:
+- those provided from the configuration as fields
+- those that are passed as data when started from a service,
+- the `this` variable the value of which is a dictionary of the current script's state.
+
+
+
+### Waiting for Script to Complete
+
+When calling a script "directly" (e.g., `script.NAME`) the calling script will wait for the called script to finish.
+If any errors occur that cause the called script to abort, the calling script will be aborted as well.
+
+When calling a script (or multiple scripts) via the `script.turn_on` service the calling script does _not_ wait. It starts the scripts, in the order listed, and continues as soon as the last script is started.
+Any errors that occur in the called scripts that cause them to abort will _not_ affect the calling script.
+
+
+
+
+
+Following is an example of the calling script not waiting. It performs some other operations while the called script runs "in the background." Then it later waits for the called script to complete via a `wait_template`.
+This technique can also be used for the calling script to wait for the called script, but _not_ be aborted if the called script aborts due to errors.
{% raw %}
+```yaml
+script:
+ script_1:
+ sequence:
+ - service: script.turn_on
+ target:
+ entity_id: script.script_2
+ # Perform some other steps here while second script runs...
+ # Now wait for called script to complete.
+ - wait_template: "{{ is_state('script.script_2', 'off') }}"
+ # Now do some other things...
+ script_2:
+ sequence:
+ # Do some things at the same time as the first script...
+```
+
+{% endraw %}
+
+### Full configuration
+
+{% raw %}
```yaml
script:
wakeup:
@@ -187,115 +305,11 @@ script:
target:
entity_id: "{{ turn_on_entity }}"
```
-
{% endraw %}
-### Passing variables to scripts
-As part of the service, variables can be passed along to a script so they become available within templates in that script.
+## Video tutorial
-There are two ways to achieve this. One way is using the generic `script.turn_on` service. To pass variables to the script with this service, call it with the desired variables:
+This video tutorial explains how scripts work, how to use fields in scripts, and how to use response variables in scripts.
-```yaml
-# Example configuration.yaml entry
-automation:
- trigger:
- platform: state
- entity_id: light.bedroom
- from: "off"
- to: "on"
- action:
- service: script.turn_on
- target:
- entity_id: script.notify_pushover
- data:
- variables:
- title: "State change"
- message: "The light is on!"
-```
-
-The other way is calling the script as a service directly. In this case, all service data will be made available as variables. If we apply this approach on the script above, it would look like this:
-
-```yaml
-# Example configuration.yaml entry
-automation:
- trigger:
- platform: state
- entity_id: light.bedroom
- from: "off"
- to: "on"
- action:
- service: script.notify_pushover
- data:
- title: "State change"
- message: "The light is on!"
-```
-
-Using the variables in the script requires the use of templates:
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
-script:
- notify_pushover:
- description: "Send a pushover notification"
- fields:
- title:
- description: "The title of the notification"
- example: "State change"
- message:
- description: "The message content"
- example: "The light is on!"
- sequence:
- - condition: state
- entity_id: switch.pushover_notifications
- state: "on"
- - service: notify.pushover
- data:
- title: "{{ title }}"
- message: "{{ message }}"
-```
-
-
-
-Script variables that may be used by templates include those provided from the configuration, those that are passed when started from a service and the `this` variable whose value is a dictionary of the current script's state.
-
-
-
-{% endraw %}
-
-### Waiting for Script to Complete
-
-When calling a script "directly" (e.g., `script.NAME`) the calling script will wait for the called script to finish.
-If any errors occur that cause the called script to abort, the calling script will be aborted as well.
-
-When calling a script (or multiple scripts) via the `script.turn_on` service the calling script does _not_ wait. It starts the scripts, in the order listed, and continues as soon as the last script is started.
-Any errors that occur in the called scripts that cause them to abort will _not_ affect the calling script.
-
-
-
-
-
-Following is an example of the calling script not waiting. It performs some other operations while the called script runs "in the background." Then it later waits for the called script to complete via a `wait_template`.
-This technique can also be used for the calling script to wait for the called script, but _not_ be aborted if the called script aborts due to errors.
-
-{% raw %}
-
-```yaml
-script:
- script_1:
- sequence:
- - service: script.turn_on
- target:
- entity_id: script.script_2
- # Perform some other steps here while second script runs...
- # Now wait for called script to complete.
- - wait_template: "{{ is_state('script.script_2', 'off') }}"
- # Now do some other things...
- script_2:
- sequence:
- # Do some things at the same time as the first script...
-```
-
-{% endraw %}
+
diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown
index b4c39a37a14..e72ee5f143f 100644
--- a/source/_integrations/simplisafe.markdown
+++ b/source/_integrations/simplisafe.markdown
@@ -42,7 +42,7 @@ There is currently support for the following device types within Home Assistant:
## SimpliSafe Plans
-SimpliSafe offers several [monitoring plans](https://support.simplisafe.com/articles/alarm-events-monitoring/what-are-the-service-plan-options/6344794a013ba90af0bce6a4). Currently, only the Standard and Fast Protect are known to work with this integration; if you find otherwise, please consider updating this documentation.
+SimpliSafe offers several [monitoring plans](https://support.simplisafe.com/articles/alarm-events-monitoring/what-are-the-service-plan-options/6344794a013ba90af0bce6a4). All plans (including the free plan) should work with this integration.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/sms.markdown b/source/_integrations/sms.markdown
index cb88a588fe7..ea1020b8107 100644
--- a/source/_integrations/sms.markdown
+++ b/source/_integrations/sms.markdown
@@ -185,6 +185,8 @@ Re-plug the USB stick, reboot the device, run `lsusb` again.
The resulting product id now should be different and the brand id should be the same.
And `ls -l /dev/*USB*` should now report your device.
+Note: if you have multiple USB devices, USB number order can change on boot. For this reason, it's preferable to use your device ID and look in `/dev/serial/by-id/*`. For example, `/dev/serial/by-id/usb-HUAWEI_MOBILE_HUAWEI_MOBILE-if00-port0`.
+
If the device is still not recognized, remove the parameter -X from the usb_modeswitch command and reboot again.
## More details:
diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown
index 831a9f265c2..3a2706fde7e 100644
--- a/source/_integrations/sql.markdown
+++ b/source/_integrations/sql.markdown
@@ -122,7 +122,7 @@ See [supported engines](/integrations/recorder/#custom-database-engines) for whi
The SQL integration will connect to the Home Assistant Recorder database if "Database URL" has not been specified.
-There is no explicit configuration required for attributes. The integration will set all additional columns returned by the query as attributes.
+There is no explicit configuration required for attributes. The integration will set all columns returned by the query as attributes.
Note that in all cases only the first row returned will be used.
diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown
index 5e192202188..1006f7d95b1 100644
--- a/source/_integrations/telegram.markdown
+++ b/source/_integrations/telegram.markdown
@@ -119,6 +119,10 @@ $ python3
If you want to add new chat IDs then you will need to disable the active configuration to actually see the result with the IDs, otherwise you may only get empty results array.
+
+**Method 4:** You can also get the chat ID from the Home Assistant logs. If you have set up the bot already, you can send a message to your bot from an unauthorized ID and you will see an error entry in the log containing the ID.
+[](https://my.home-assistant.io/redirect/logs/?)
+
## Configuration
To enable Telegram notifications in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 28d844f0d9e..1ed54346405 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -55,15 +55,15 @@ Button, image, number, and select template entities are defined in your YAML con
_For old sensor/binary sensor configuration format, [see below](#legacy-binary-sensor-configuration-format)._
-# UI configuration
+## UI configuration
Sensor template and binary sensor template can be configured using the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Select the **+ Add helper** button and then select the **{% my config_flow_start domain=page.ha_domain title=page.title %}** helper.
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.
-# YAML configuration
+## YAML configuration
-## State-based template binary sensors, buttons, images, numbers, selects and sensors
+### State-based template binary sensors, buttons, images, numbers, selects and sensors
Template entities will by default update as soon as any of the referenced data in the template updates.
@@ -86,7 +86,7 @@ template:
{% endraw %}
-## Trigger-based template binary sensors, buttons, images, numbers, selects and sensors
+### Trigger-based template binary sensors, buttons, images, numbers, selects and sensors
If you want more control over when an entity updates, you can define a trigger. Triggers follow the same format and work exactly the same as [triggers in automations][trigger-doc]. This feature is a great way to create entities based on webhook data ([example](#trigger-based-sensor-and-binary-sensor-storing-webhook-information)), or update entities based on a schedule.
@@ -405,16 +405,16 @@ template:
[trigger-doc]: /docs/automation/trigger
-### Video tutorial
+#### Video tutorial
This video tutorial explains how to set up a Trigger based template that makes use of an action to retrieve the weather forecast (precipitation).
+Due to Tractive API limitations, trackers (pets) that are shared from another account to your account are not visible in Home Assistant. You need to configure all Tractive accounts from which trackers (pets) come from with Home Assistant.
+
+
## Integration entities
The Tractive integration adds one device tracker and several sensors and switches per registered pet:
diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown
index f676fc5e4c2..c3f4e8bc000 100644
--- a/source/_integrations/tts.markdown
+++ b/source/_integrations/tts.markdown
@@ -18,6 +18,8 @@ Text-to-speech (TTS) enables Home Assistant to speak to you.
{% include integrations/building_block_integration.md %}
+See all [TTS integrations](https://www.home-assistant.io/integrations/#text-to-speech) using this building block for ways to use it in your automations. If you are using the Home Assistant voice assistant, [Assist](https://www.home-assistant.io/voice_control/), Assist is using TTS when replying to you. Another way to use TTS is by using [TTS with Home Assistant Cloud](https://www.nabucasa.com/config/tts/).
+
## Services
### Service speak
@@ -141,3 +143,11 @@ The Google cast devices (Google Home, Chromecast, etc.) present the following pr
- 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.
+
+### Related topics
+
+- [List of integrations using the TTS integration](https://www.home-assistant.io/integrations/#text-to-speech)
+- [TTS with Home Assistant Cloud](https://www.nabucasa.com/config/tts/)
+- [Google Translate TTS](https://www.home-assistant.io/integrations/google_translate/)
+- [Microsoft TTS](https://www.home-assistant.io/integrations/microsoft/)
+- [Home Assistant Assist](https://www.home-assistant.io/voice_control/)
diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown
index 82bb1bb2131..937f657918d 100644
--- a/source/_integrations/verisure.markdown
+++ b/source/_integrations/verisure.markdown
@@ -82,3 +82,12 @@ automation:
| code | Lock was unlocked by exterior code |
| auto | Lock was locked/unlocked automatically by Verisure rule |
| remote | Lock was locked/unlocked automatically by Verisure App |
+
+## Limitations and known issues
+
+Some users have reported that this integration currently doesn't work in the following countries:
+
+- France
+- Ireland
+- Italy
+- Sweden
\ No newline at end of file
diff --git a/source/_integrations/weatherflow.markdown b/source/_integrations/weatherflow.markdown
index 4c264a34466..9135a8c4a81 100644
--- a/source/_integrations/weatherflow.markdown
+++ b/source/_integrations/weatherflow.markdown
@@ -37,8 +37,8 @@ This {% term integration %} will expose the following sensors:
- Irradiance
- Lightning average distance
- Lightning count
-- Precipitation
-- Precipitation amount
+- Precipitation (accumulated over the previous minute)
+- Precipitation intensity ([extrapolated](https://weatherflow.github.io/Tempest/api/derived-metric-formulas.html#rain-rate) from the accumulation over the previous minute)
- Precipitation type
- Temperature
- UV index
diff --git a/source/_posts/2024-02-07-release-20242.markdown b/source/_posts/2024-02-07-release-20242.markdown
index 55f5f4840b7..6d9b72b6dbd 100644
--- a/source/_posts/2024-02-07-release-20242.markdown
+++ b/source/_posts/2024-02-07-release-20242.markdown
@@ -60,6 +60,9 @@ _Oh! And don't forget Valentine's Day is coming up!_ 😘
- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui)
- [Release 2024.2.1 - February 9](#release-202421---february-9)
- [Release 2024.2.2 - February 16](#release-202422---february-16)
+- [Release 2024.2.3 - February 22](#release-202423---february-22)
+- [Release 2024.2.4 - February 25](#release-202424---february-25)
+- [Release 2024.2.5 - February 27](#release-202425---february-27)
- [Need help? Join the community!](#need-help-join-the-community)
- [Backward-incompatible changes](#backward-incompatible-changes)
- [Farewell to the following](#farewell-to-the-following)
@@ -279,7 +282,7 @@ noteworthy changes this release:
- [@edenhaus] improved how we handle errors in our form fields. We no longer
show the technical coding gibberish that often showed up in the past. Nice!
-- When you [change the type of a switch entity] to, for example, a garage door
+- When you [change the type of a switch entity] to, for example, a garage door
entity, you will now have the option to invert its behavior.
Thanks, [@emontnemery]!
- The [Ecovacs] integration received lots of love from [@edenhaus] and now
@@ -367,7 +370,7 @@ We welcome the following new integrations in this release:
- **[Tedee]**, added by [@zweckj]
+ The new Sections view is experimental! Please do not build your daily dashboard on top of it yet!
+
+
+