.your-storagebox.de`
+- [Strato HiDrive](https://www.strato.de/): `https://webdav.hidrive.strato.com`
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
+
+- If you remove the integration, the backup folder is not automatically deleted. You have to manually delete it.
diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown
index b33dcc331b2..ea0fb447218 100644
--- a/source/_integrations/wyoming.markdown
+++ b/source/_integrations/wyoming.markdown
@@ -26,6 +26,7 @@ ha_zeroconf: true
The **Wyoming** {% term integration %} connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/), [text-to-speech](/integrations/tts/), and [wake-word-detection](/integrations/wake_word/) systems, such as:
+- Speech-to-Phrase {% my supervisor_addon badge addon="core_speech-to-phrase" %}
- Whisper {% my supervisor_addon badge addon="core_whisper" %}
- Piper {% my supervisor_addon badge addon="core_piper" %}
- openWakeWord {% my supervisor_addon badge addon="core_openwakeword" %}
diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown
index dbb48214238..a5a8bb3a513 100644
--- a/source/_integrations/zha.markdown
+++ b/source/_integrations/zha.markdown
@@ -69,7 +69,7 @@ This {% term integration %} currently supports the following device types within
- [Switch](/integrations/switch/)
- [Update](/integrations/update/)
-In addition, it has support for "Zigbee groups" that enable native on-device grouping of multiple Zigbee lights, switches, and fans that enable controlling all entities for those devices in those groups with one command. At least two entities must be added to a Zigbee group inside the ZHA {% term integration %} before a group entity is created. There is also support for native on-device Zigbee [binding and unbinding (i.e. bind a remote to a lightbulb or group)](#zigbee-binding-and-unbinding).
+In addition, it has support for "Zigbee groups" that enable native on-device grouping of multiple Zigbee lights, switches, and fans that enable controlling all entities for those devices in those groups with one command. At least two entities must be added to a Zigbee group inside the ZHA {% term integration %} before a group entity is created. There is also support for native on-device binding. Refer to the [Zigbee groups and binding devices](#zigbee-groups-and-binding-devices) section for more information.
## Introduction
@@ -79,23 +79,25 @@ Before installing the ZHA integration in Home Assistant, you need to connect a Z
Once ZHA has been set up with a Zigbee Coordinator it will automatically create a Zigbee network and you will be able to join/pair any Zigbee Router devices and Zigbee End Devices. With only a few [limitations](#limitations), most devices will join/pair directly regardless of brand and manufacturer. Technically almost all devices that are compliant with the official Zigbee specifications should offer interoperability, though a newer Zigbee Coordinator with support for later firmware often offers better compatibility with both new and older devices. Still, be aware that [all functionality might not always be supported or exposed for every device out-of-the-box](#knowing-which-devices-are-supported) as some devices that use manufacturer-specific extensions to add non-standard functions and features could sometimes need [device-specific code to fully work with ZHA](#how-to-add-support-for-new-and-unsupported-devices).
-Note that because Zigbee relies on "mesh networking" technology it depends heavily on having [Zigbee Router devices](#using-router-devices-to-add-more-devices) to expand the network coverage and extend its size. These are always mains-powered devices that route messages to other devices that are located close to them within the Zigbee network mesh to improve the range and increase the total amount of devices you can add. You should therefore make sure that you add many Zigbee Router devices and not just Zigbee End Devices or else its network mesh connection routes will be limited due to the short range and poor wall penetration of Zigbee radio signals. It is highly recommended that you read and follow all the general tips below about [Zigbee interference avoidance and network range/coverage optimization)](#zigbee-interference-avoidance-and-network-rangecoverage-optimization).
+Note that because Zigbee relies on "mesh networking" technology it depends heavily on having [Zigbee Router devices](#using-router-devices-to-add-more-devices) to expand the network coverage and extend its size. These are always mains-powered devices that route messages to other devices that are located close to them within the Zigbee network mesh to improve the range and increase the total amount of devices you can add. You should therefore make sure that you add many Zigbee Router devices and not just Zigbee End Devices or else its network mesh connection routes will be limited due to the short range and poor wall penetration of Zigbee radio signals. It is highly recommended that you read and follow all the general tips below about [Zigbee interference avoidance and network range/coverage optimization](#zigbee-interference-avoidance-and-network-rangecoverage-optimization).
## Compatible hardware
-ZHA {% term integration %} uses a hardware independent Zigbee stack implementation with modular design, which means that it can support any one of the many Zigbee coordinator radio modules/adapters available from different manufacturers, as long as that module/adapter is compatible with [zigpy](https://github.com/zigpy/zigpy).
+The hardware-independent design of this integration provides support for many Zigbee coordinators available from different manufacturers, as long as the coordinator is compatible with the [zigpy](https://github.com/zigpy/zigpy) library.
-Note! Zigbee 3.0 support or not in zigpy, depends primarily on your Zigbee coordinator hardware and its firmware. Some Zigbee coordinator hardware supports Zigbee 3.0 but might be shipped with an older firmware which does not. In such a case you may want to upgrade the firmware manually yourself.
+### Zigbee 3.0 support
-Some other Zigbee coordinator hardware may not support a firmware that is capable of Zigbee 3.0 at all but can still be fully functional and feature-complete for your needs. This is very common as many, if not most, Zigbee devices do not yet Zigbee 3.0. As a general rule, newer Zigbee coordinator hardware generally supports Zigbee 3.0 firmware and it is up to its manufacturer to make such firmware available for them.
+Some coordinators may not support firmware capable of Zigbee 3.0, but they can still be fully functional and feature-complete for your needs. Support for Zigbee 3.0 depends primarily on your coordinator hardware and firmware.
-### Known working Zigbee radio modules
+{% note %}
+Newer coordinators generally support Zigbee 3.0 firmware, but it is up to the manufacturer to make such firmware available to them. If your coordinator was shipped with an older firmware version, you may want to manually upgrade the firmware.
+{% endnote %}
### Recommended Zigbee radio adapters and modules
- Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
- [Home Assistant Connect ZBT-1](/connectzbt1/) (EFR32MG21-based USB dongle)
- - [Home Assistant Yellow](/yellow/) with integrated EFR32MG21 radio
+ - [Home Assistant Yellow](/yellow/) with integrated MGM210P radio, which is based on the EFR32MG21
- [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
- [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/) (EFR32MG21-based USB dongle)
- Texas Instruments based radios (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)
@@ -106,49 +108,76 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
### Other supported but not recommended Zigbee radio adapters or modules
-- Silicon Labs EmberZNet based radios using legacy hardware using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
- - [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))
- - [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/) (Note! [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170). Also, this first has to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html))
- - [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware))
- - [Bitron Video/Smabit BV AV2010/10 USB-Stick](https://manuals.smabit.eu/len/av2010_10.html) with Silicon Labs Ember 3587
- - Telegesis ETRX357USB/ETRX357USB-LR/ETRX357USB-LRS+8M (Note! These first have to be [flashed with other EmberZNet firmware](https://github.com/walthowd/husbzb-firmware))
-- Texas Instruments based radios using legacy hardware (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)
- - [CC2538 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) (no longer recommended as only got deprecated old end-of-life firmware)
- - [CC2530/CC2531 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters) (no longer recommended as uses deprecated hardware and very old end-of-life firmware, plus will not work properly at all if the whole Zigbee network has more than 15-20 devices)
-- dresden elektronik deCONZ based Zigbee radios using legacy hardware (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)
- - [ConBee USB adapter from dresden elektronik](https://phoscon.de/conbee)
- - [RaspBee Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee)
-- Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy)
- - [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules
- - Note! While not a must, [it is recommend to upgrade XBee Series 3 and S2C to newest firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm)
- - [Digi XBee Series 2 (S2)](https://www.digi.com/support/productdetail?pid=3430) modules (Note! This first have to be [flashed with Zigbee Coordinator API firmware](https://www.digi.com/support/productdetail?pid=3430))
-- ZiGate based radios (via the [zigpy-zigate](https://github.com/zigpy/zigpy-zigate) library for zigpy and require firmware 3.1d or later)
- - [ZiGate USB](https://zigate.fr/produit/zigate-usb/)
- - [ZiGate USB-DIN](https://zigate.fr/produit/zigatev2-usb-din/)
- - [PiZiGate (ZiGate Raspberry Pi module)](https://zigate.fr/produit/pizigatev2/)
- - [ZiGate-Ethernet (Ethernet gateway board for PiZiGate)](https://zigate.fr/produit/zigate-ethernet/)
- - [ZiGate + WiFi Pack](https://zigate.fr/produit/zigatev2-pack-wifi/)
+The following hardware is supported, but _not recommended_. Specific models and details are noted where available in each section.
-#### Warning about using Zigbee Coordinator over Wi-Fi/WAN/VPN
+{% details "List of hardware that is not recommended" %}
{% caution %}
-Be aware that using a Zigbee Coordinator via a Serial-Proxy-Server (also known as Serial-to-IP bridge or Ser2Net remote adapter) over a Wi-Fi, WAN, or VPN connection is not recommended.
-Serial protocols used by the Zigbee Coordinator do not have enough robustness, resilience, or fault tolerance to handle packet loss and latency delays that can occur over unstable connections.
+- It is **not recommended** to run a coordinator via **Serial-Proxy-Server** _(also called Serial-to-IP bridge or Ser2Net remote adapter)_ over:
+
+ - **Wi-Fi**,
+ - **WAN**, or
+ - **VPN**
-A Zigbee Coordinator requires a stable local connection to its serial port interface with no drops in communication between it and the Zigbee gateway application running on the host computer.
+- The coordinator requires a stable, local connection to its serial port interface without drops in communication with the Zigbee gateway application running on the host computer.
+- Serial protocols used by the coordinator do not have enough robustness, resilience, or fault tolerance to handle packet loss and latency delays that can occur over unstable connections.
{% endcaution %}
-## Configuration - GUI
+**Silicon Labs EmberZNet based radios using legacy hardware using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)**
-Connect your radio module and restart Home Assistant.
+- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs-usb-adapter.html)/POPP ZB-Stick
+ - It is suggested to [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)
+ - It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility)
+- [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/)
+ - Note: [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170).
+ - These first need to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html)
+- [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/)
+ - It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware)
+- [Bitron Video/Smabit BV AV2010/10 USB-Stick](https://manuals.smabit.eu/len/av2010_10.html) with Silicon Labs Ember 3587
+- Telegesis ETRX357USB/ETRX357USB-LR/ETRX357USB-LRS+8M
+ - These first need to be [flashed with other EmberZNet firmware](https://github.com/walthowd/husbzb-firmware)
-From the Home Assistant front page go to **Configuration** and then select **Integrations** from the list.
+**Texas Instruments based radios using legacy hardware (via the [zigpy-znp](https://github.com/zigpy/zigpy-znp) library for zigpy)**
-Use the plus button in the bottom right to add a new {% term integration %} called **ZHA**.
+- [CC2538 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
+ - This is no longer recommended as it can only run deprecated (old/end-of-life) firmware.
+- [CC2530/CC2531 USB stick, module, or dev board hardware flashed with Z-Stack coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
+ - This is no longer recommended as it uses deprecated hardware and very old, end-of-life firmware.
+ - This will not work properly if the Zigbee network has more than 15-20 devices.
+
+**dresden elektronik deCONZ based Zigbee radios using legacy hardware (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)
+- [ConBee USB adapter from dresden elektronik](https://phoscon.de/conbee)
+- [RaspBee Raspberry Pi Shield from dresden elektronik](https://phoscon.de/raspbee)
+
+**Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy)**
+
+- [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules
+ - It is suggested to [upgrade XBee Series 3 and S2C to newest firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm)
+- [Digi XBee Series 2 (S2)](https://www.digi.com/support/productdetail?pid=3430) modules
+ - These first need to be [flashed with Zigbee Coordinator API firmware](https://www.digi.com/support/productdetail?pid=3430)
+
+**ZiGate based radios (via the [zigpy-zigate](https://github.com/zigpy/zigpy-zigate) library for zigpy and require firmware 3.1d or later)**
+
+- [ZiGate USB](https://zigate.fr/produit/zigate-usb/)
+- [ZiGate USB-DIN](https://zigate.fr/produit/zigatev2-usb-din/)
+- [PiZiGate (ZiGate Raspberry Pi module)](https://zigate.fr/produit/pizigatev2/)
+- [ZiGate-Ethernet (Ethernet gateway board for PiZiGate)](https://zigate.fr/produit/zigate-ethernet/)
+- [ZiGate + WiFi Pack](https://zigate.fr/produit/zigatev2-pack-wifi/)
+
+{% enddetails %}
+
+If you find an opportunity to improve this information, refer to the section on how to [add support for new and unsupported devices](#how-to-add-support-for-new-and-unsupported-devices).
+
+## Configuration requirements
+
+Be sure to connect a compatible radio module and restart Home Assistant before proceeding with configuration.
+
+{% include integrations/config_flow.md %}
In the popup:
@@ -196,37 +225,85 @@ If you are use ZiGate or Sonoff ZBBridge you have to use some special usb_path c
### Discovery via USB or Zeroconf
-Some devices can be auto-discovered, which can simplify the ZHA setup process. The following devices have been tested with discovery and offer a quick setup experience:
+Some devices can be auto-discovered, which can simplify the ZHA setup process. The following devices have been tested with discovery and offer a quick setup experience.
-| Device | Discovery Method | Identifier |
-| ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------ |
-| [ITead SONOFF Zigbee 3.0 USB Dongle Plus V2 Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/) | USB | 1A86:55D4 |
-| [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-P" (CC2652P variant)](https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus/) | USB | 10C4:EA60 |
-| [Bitron Video/SMaBiT BV AV2010/10](https://manuals.smabit.eu/len/av2010_10.html) | USB | 10C4:8B34 |
-| [ConBee II](https://phoscon.de/conbee2) | USB | 1CF1:0030 |
-| [ConBee III](https://phoscon.de/conbee3) | USB | 0403:6015 |
-| [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) | USB | 10C4:8A2A |
-| [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/) | USB | 10C4:EA60 |
-| [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/) | USB | 10C4:EA60 |
-| [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/) | USB | 1A86:7523 |
-| [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/) | USB | 10C4:EA60 |
-| [ZigStar Coordinators](https://zig-star.com/) | USB | 1A86:7523 |
-| [XZG - Universal Firmware for Zigbee Gateway](https://xzg.xyzroe.cc/) | Zeroconf | xzg.local. |
-| [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/) | Zeroconf | slzb-06.local. |
-| [ZigStar UZG Universal Zigbee Gateway (UZG-01)](https://uzg.zig-star.com) | Zeroconf | uzg-01._tcp.local. |
-| [cod.m Zigbee Coordinator](https://docs.codm.de/zigbee/coordinator/) | Zeroconf | czc._tcp.local. |
-| [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/) | Zeroconf | zigstargw.local. |
-| [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2.local. |
-| [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2_poe.local. |
-| [Tube's EFR32 Based Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_efr32.local. |
+{% details "USB discovery devices" %}
-Additional devices in the [Known working Zigbee radio modules](#known-working-zigbee-radio-modules) list may be discoverable, however, only devices that have been confirmed discoverable are listed above.
+- **Bitron**
+ - [Bitron Video/SMaBiT BV AV2010/10](https://manuals.smabit.eu/len/av2010_10.html)
+ - Identifier: `10C4:8B34`
+- **ConBee**
+ - [ConBee II](https://phoscon.de/conbee2)
+ - Identifier: `1CF1:0030`
+ - [ConBee III](https://phoscon.de/conbee3)
+ - Identifier: `0403:6015`
+- **ITead**
+ - [ITead SONOFF Zigbee 3.0 USB Dongle Plus V2 Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/)
+ - Identifier: `1A86:55D4`
+ - [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-P" (CC2652P variant)](https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus)
+ - Identifier: `10C4:EA60`
+- **Nortek**
+ - [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/)
+ - Identifier: `10C4:8A2A`
+- **slae.sh**
+ - [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/)
+ - Identifier: `10C4:EA60`
+- **SMLIGHT**
+ - [SMLIGHT SLZB-07](https://smlight.tech/product/slzb-07/)
+ - Identifier: `10C4:EA60`
+- **Tube**
+ - [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/)
+ - Identifier: `10C4:EA60`
+- **ZigStar**
+ - [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/)
+ - Identifier: `1A86:7523`
+ - [ZigStar Coordinators](https://zig-star.com/)
+ - Identifier: `1A86:7523`
+
+{% enddetails %}
+
+{% details "Zeroconf discovery devices" %}
+
+- **cod.m**
+ - [cod.m Zigbee Coordinator](https://docs.codm.de/zigbee/coordinator/)
+ - Identifier: `czc._tcp.local.`
+- **SMLIGHT**
+ - [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/)
+ - Identifier: `slzb-06.local.`
+- **Tube**
+ - [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator](https://www.tubeszb.com/)
+ - Identifier: `tube_zb_gw_cc2652p2.local.`
+ - [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator](https://www.tubeszb.com/)
+ - Identifier: `tube_zb_gw_cc2652p2_poe.local.`
+ - [Tube's EFR32 Based Zigbee to Ethernet Serial Coordinator](https://www.tubeszb.com/)
+ - Identifier: `tube_zb_gw_efr32.local.`
+- **XZG**
+ - [XZG - Universal Firmware for Zigbee Gateway](https://xzg.xyzroe.cc/)
+ - Identifier: `xzg.local.`
+- **ZigStar**
+ - [ZigStar UZG Universal Zigbee Gateway (UZG-01)](https://uzg.zig-star.com)
+ - Identifier: `uzg-01._tcp.local.`
+ - [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/)
+ - Identifier: `zigstargw.local.`
+
+{% enddetails %}
+
+Additional devices in the [Compatible hardware](#compatible-hardware) section may be discoverable, however, only devices that have been confirmed discoverable are listed above.
### OTA updates of Zigbee device firmware
The ZHA integration has the ability to perform OTA (over-the-air) firmware updates of Zigbee devices. This feature is enabled by default. As it uses standard [Update](/integrations/update/) entities in Home Assistant, users will get a UI notification if and when an OTA firmware update is available for a specific device, with an option to initiate the update or ignore that specific update for the device.
-To see OTA updates for a device, it's required that it both supports OTA updates and that firmware images for the device are publicly provided by the manufacturer. For this reason, ZHA currently only includes OTA providers for a few manufacturers that provide these updates publicly. This includes IKEA, Inovelli, Ledvacnce/OSRAM, SALUS/Computime, Sonoff/iTead, and Third Reality.
+To see OTA updates for a device, it must support OTA updates and firmware images for the device must be publicly provided by the manufacturer. ZHA currently only includes OTA providers for a few manufacturers that provide these updates publicly.
+
+**Included manufacturers:**
+
+- IKEA
+- Inovelli
+- Ledvacnce/OSRAM
+- SALUS/Computime
+- Sonoff/iTead
+- Third Reality
{% warning %}
Before updating a device, you should search for any disadvantages or if you even need to install an available update. Some firmware updates can break features you might use (e.g. group binding for IKEA devices). Some updates might also require changes to ZHA. In rare cases, you can even brick devices by installing a firmware update.
@@ -247,7 +324,7 @@ Group members assume state of group:
description: "When using ZHA groups, turning on a ZHA group light makes the ZHA group members optimistically change their state to \"on\", instead of waiting and polling the lights when off. _(default: on)_"
{% endconfiguration_basic %}
-## Configuration - YAML
+### Configuration - YAML
For more advanced configuration, you can modify {% term "`configuration.yaml`" %} and restart Home Assistant
@@ -267,15 +344,15 @@ custom_quirks_path:
type: string
{% endconfiguration %}
-### Advanced OTA configuration
+#### Advanced OTA configuration
OTA for a few manufacturers is enabled by default, currently Ledvance, Sonoff, Inovelli, and ThirdReality. Other manufacturers are supported but disabled by default because their updates may change or remove device functionality, may require you to reconfigure devices, or are contributed by the community and may be minimally tested.
Refer to the [zigpy documentation for OTA configuration](https://github.com/zigpy/zigpy/wiki/OTA-Configuration) for more information on additional OTA providers.
-### Defining Zigbee channel to use
+#### Defining Zigbee channel to use
-Tip! Before considering to change to an other Zigbee channel on an existing Zigbee network, it is highly recommended that you read through the two segments under the [troubleshooting](#troubleshooting) section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*". These sections provide prerequisite information and advice on how to achieve the best possible Zigbee network in your environment.
+Tip! Before considering to change to an other Zigbee channel on an existing Zigbee network, it is highly recommended that you read through the two segments under the [troubleshooting](#troubleshooting) section below about _Best practices to avoid pairing/connection difficulties_ and _Zigbee interference avoidance and network range/coverage optimization_. These sections provide prerequisite information and advice on how to achieve the best possible Zigbee network in your environment.
ZHA prefers to use Zigbee channel 15 by default. You can change this using YAML configuration, but this only works
if there's no existing network. To change the channel for an existing network, radio has to be factory reset and a new network to be formed. This requires re-pairing of all the devices.
@@ -288,15 +365,19 @@ zha:
channels: [15, 20, 25] # Channel mask
```
-Note! The best practice is to not change the Zigbee channel from the ZHA default. Also, the related troubleshooting segments mentioned in the tip above will, among other things, inform that if you have issues with overlapping frequencies between Wi-Fi and Zigbee, then it is usually better to first only try changing and setting a static Wi-Fi channel on your Wi-Fi router or all your Wi-Fi access points (instead of just changing to another Zigbee channel).
+{% note %}
+The best practice is to not change the Zigbee channel from the ZHA default.
+{% endnote %}
-MetaGeek Support has a good reference article about channel selection for [Zigbee and WiFi coexistance](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence).
+The related troubleshooting segments mentioned above will, among other things, inform that if you have issues with overlapping frequencies between Wi-Fi and Zigbee, then it is usually better to first only try changing and setting a static Wi-Fi channel on your Wi-Fi router or all your Wi-Fi access points (instead of just changing to another Zigbee channel).
+
+MetaGeek Support has a good reference article about channel selection for [Zigbee and WiFi coexistence](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence).
The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings.
The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices. Not only because there is less chance of Wi-Fi networks interfering too much with the Zigbee network on other channels, but also because not all Zigbee devices support all channels. Some devices, for example, are limited to only being compatible with ZLL (Zigbee Light Link) channels. It is therefore especially not recommended to use Zigbee channels 11, 24, 25, or 26 on your Zigbee coordinator. These Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. If using those channels, your coordinator may not be usable with older Zigbee devices.
-### Modifying the device type
+#### Modifying the device type
As not all device manufacturers follow the Zigbee standard, at times a device can be incorrectly classified. For example, a switch could be classified as a light.
@@ -335,11 +416,10 @@ from the same group:
{% note %}
Currently `qr_code` supports QR Install Codes from:
-
- - Aqara
- - Bosch
- - Consciot
- - Embrighten
+ - Aqara
+ - Bosch
+ - Consciot
+ - Embrighten
{% endnote %}
### Action `zha.remove`
@@ -385,7 +465,7 @@ This action disables a lock code on a Zigbee lock.
## Adding devices
-Tip! It is highly recommended that you read through the two segments under the troubleshooting section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*" for general prerequisite knowledge and advice on how to achieve the best possible Zigbee network in your environment.
+Tip! It is highly recommended that you read through the two segments under the troubleshooting section below about _Best practices to avoid pairing/connection difficulties_ and _Zigbee interference avoidance and network range/coverage optimization_ for general prerequisite knowledge and advice on how to achieve the best possible Zigbee network in your environment.
**To add a new Zigbee device:**
@@ -397,7 +477,7 @@ Tip! It is highly recommended that you read through the two segments under the t
### Using router devices to add more devices
-Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender").
+Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender").
Because Zigbee should use a [wireless mesh network](https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (e.g. light bulbs) are often powered-off. Zigbee router devices are meant to be always available.
@@ -417,94 +497,138 @@ In practice, you will likely need to add a lot more Zigbee router devices than i
## Zigbee groups and binding devices
-ZHA supports Zigbee groups and binding devices to each other. These features can be used separately or combined. For example, binding a remote to a bulb or group has the benefit of faster response time and smoother control, as the remote directly controls the bound devices.
+ZHA supports the creation of Zigbee groups (different from Home Assistant's [Group](/integrations/group/) integration), as well as binding devices to each other. Groups and device binding can be set up independently of each other, but they can be also used in combination (such as binding a device to another group of devices).
-### Zigbee group
+### Groups
-A Zigbee group enables the grouping of multiple Zigbee lights, switches, and fans. This allows you to control those devices with only one command/entity.
+A Zigbee group is a collection of two or more Zigbee lights, switches, or fans. A Zigbee group can then be controlled using only one command/entity.
{% note %}
While using a native Zigbee group instead of Home Assistant's [Group](/integrations/group/) integration can improve the visual responsiveness, the broadcast commands issued can flood the Zigbee network if issued repeatedly.
{% endnote %}
-To create a Zigbee Group, press the "Configure" button on the ZHA integration config page. At the top, choose "Groups" and select "Create Group". Set a group name and choose which devices to include in the group.
+#### To create a Zigbee group
-The group should consist of products of the same device type (e.g. all lights, switches, or fans), and at least two devices must be added to a Zigbee group before a group entity is created.
+1. Select the **Configure** button on the ZHA integration page,
+2. Choose **Groups** and select **Create Group**,
+3. Enter a name for the group,
+4. Select which devices to include in the group:
+ - At least two devices must be added to a Zigbee Group before a group entity is created.
+ - The group should consist of products of the same device type (all lights, all switches, or all fans).
-### Zigbee binding and unbinding
+### Binding
-Binding is an on-device feature for Zigbee devices. It provides a mechanism for attaching an endpoint of one Zigbee device to an endpoint of another Zigbee device or to a Zigbee group.
+Binding a Zigbee device attaches an endpoint from one device to an endpoint of another device (or group).
-For example, binding a "target destination" Zigbee device like a remote to a Zigbee light bulb, switch or group of light bulbs allows direct control of the "target" device (light, switch, shade) from the "remote" Zigbee device, bypassing ZHA. This means that the remote can control the light bulb or group even when ZHA is not active.
+Commands sent between bound devices bypass ZHA (even when ZHA is not active) and directly control the targeted device. Binding devices can allow for faster response times and smoother control.
-Note that not all devices support binding. By default, ZHA binds remotes to the coordinator, so click events are forwarded to HA. As some remotes can only be bound to a single destination, you might need to unbind the remote from the coordinator before binding it to another device or group.
+Before binding devices, note the following:
-## Zigbee backup and restore in ZHA
+- ZHA binds remotes to the Zigbee coordinator by default in order to forward click events to Home Assistant.
+- Some remotes can only be bound to a single target; you might need to unbind the remote from the coordinator before binding it to another target.
+- Not all devices support binding. Refer to the device manufacturer's documentation to confirm features.
-Zigbee Home Automation (ZHA) {% term integration %} now features Zigbee network backup, restore/recovery, and migrating between Zigbee coordinators. Backups are taken automatically. However, a single backup to a file for easy download can also be manually created from the configuration page under Network Settings.
+#### To manage bindings of a Zigbee device
-After restoring a Home Assistant backup, you can re-configure ZHA and migrate to a new Zigbee Coordinator adapter without any loss of your settings or devices that were connected. This is helpful if your current radio fails or a new radio adapter type and model comes out that you may want to migrate to.
+{% note %}
+**This section only outlines how to manage bindings in general. It will not cover all use cases.**
-Within ZHA it is possible to use this backup and restore feature to migrate between some different radio types, if the respective radio library supports it. Currently, ZHA supports migrating the Zigbee network between different Zigbee Coordinator adapters based on chips from Silicon Labs, Texas Instruments, or ConBee/RaspBee if the backup was made from inside ZHA.
+Prerequisites and steps can vary depending on the device type, manufacturer, and your desired end result.
+{% endnote %}
-## Migrating to a new Zigbee coordinator adapter inside ZHA
+1. Navigate to the Zigbee device's configuration page,
+2. In the options menu (the "three-dots" icon), select **Manage Zigbee device**,
+3. Select the **Bindings** tab in the pop-up dialog,
+4. Choose the device from the dropdown list of _Bindable devices_ (or _Bindable groups_),
+5. Confirm the Bind or Unbind action:
+ - To bind devices: select **Bind** (or **Bind group**), or
+ - To unbind devices, select **Unbind** (or **Unbind group**).
-Follow this guide if you have a Zigbee Home Assistant (ZHA) network running and want to migrate from one Zigbee coordinator radio adapter to another Zigbee coordinator radio adapter.
+## Backups and migration
-### Prerequisites
+The ZHA {% term integration %} performs automatic backups of your Zigbee network allowing you to restore/recover the network from a backup or migrate to a different Zigbee Coordinator (radio adapter).
-- Your old Zigbee Coordinator radio adapter is used in the ZHA {% term integration %} (not in deCONZ or MQTT).
-- It is of radio type ezsp (Silicon Labs EmberZnet), znp (Texas Instruments Z-Stack ZNP), or deCONZ (ConBee/RaspBee from dresden elektronik).
- - If your old Zigbee coordinator is a deCONZ (ConBee/RaspBee) radio adapter, make sure it is running [firmware 0x26700700 (from 2021-08-18)](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Firmware-Changelog) or later.
+After restoring a Home Assistant backup, you can reconfigure ZHA or migrate to a new Zigbee Coordinator without any loss of your settings or devices that were connected. This can be helpful if your current radio fails or a new radio adapter type/model comes out that you want to migrate to.
-### To migrate to a new Zigbee coordinator radio inside ZHA
+Manual backups can also be created from the configuration page under **Network Settings**.
+
+### Migrating to a new Zigbee Coordinator adapter inside ZHA
+
+ZHA supports migrating the Zigbee network between different Zigbee Coordinators based on chips from Silicon Labs, Texas Instruments, or ConBee/RaspBee if the backup was made from inside ZHA.
+
+#### Prerequisites
+
+To migrate your Zigbee network from one Zigbee Coordinator to another, confirm you meet the following requirements before proceeding with the migration process:
+
+- The previous Zigbee Coordinator is used in the ZHA {% term integration %} and _not_ in deCONZ or MQTT.
+- The radio type is one of the following:
+ - ezsp (Silicon Labs EmberZnet)
+ - znp (Texas Instruments Z-Stack ZNP)
+ - deCONZ (ConBee/RaspBee from dresden elektronik)
+ - For deCONZ (ConBee/RaspBee) radio adapters, make sure it is running [firmware 0x26700700 (from 2021-08-18)](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Firmware-Changelog) or later.
+
+#### To migrate to a new Zigbee coordinator radio inside ZHA
1. Go to **{% my integrations title="Settings > Devices & services" %}** and select the ZHA {% term integration %}. Then select **Configure**.
2. Under **Network settings**, select **Migrate radio**.
3. Reconfiguration of ZHA will start. Select **Submit**.
4. Under **Migrate or re-configure**, select **Migrate to a new radio**.
-5. **Migrate to a new radio** will inform you that an automatic backup will be performed and that your old Zigbee coordinator radio will then be reset before the backup is automatically restored.
- - Select **Submit**.
-6. **Unplug your old radio** will inform you that your old Zigbee coordinator radio has been reset and that you can now plug in your new Zigbee coordinator radio adapter.
- - To avoid interference, use a USB extension cable.
- - Use a USB 2.0 port or a powered USB 2.0 hub and keep the Zigbee stick away from USB 3.0 devices.
- - You may now also choose to either unplug your old Zigbee coordinator radio adapter or keep your old radio plugged in.
- - If that radio was a combined Z-Wave and Zigbee radio, like the HUSBZB-1 adapter, then only the Zigbee radio part of it was reset. Confirm that the Zigbee Coordinator radio adapter is properly connected and select **Submit**.
-7. You now need to start the backup restore process.
- - Select your new Zigbee radio from the list of serial ports and select **Next**.
- - If your new radio does not appear or you need to reboot after plugging in new hardware, you can resume the migration after a reboot: under **Network Settings**, select **Re-configure the current radio** and choose your new radio.
+5. Select **Submit** to begin.
+ - An automatic backup will be performed, the Zigbee Coordinator radio will be reset, and the backup will be automatically restored.
+ - For combined Z-Wave and Zigbee radios, like the HUSBZB-1 adapter, only the Zigbee radio portion is reset.
+ - You may now unplug the old adapter, or you may leave the old radio adapter plugged in (for example, if the adapter is a combined Z-Wave adapter).
+6. Plug in the new Zigbee Coordinator radio adapter.
+ - Select **Submit** after confirming the new Zigbee Coordinator radio adapter is properly connected.
+ - To minimize interference:
+ - Use a USB extension cable,
+ - Use a USB 2.0 port or a powered USB 2.0 hub,
+ - Keep the Zigbee stick away from USB 3.0 devices.
+7. Start the backup restore process:
+ - Select the new Zigbee radio from the list of serial ports and select **Next**.
+ - A migration can be resumed if a reboot is required, such as when troubleshooting or if new hardware is plugged in.
+ - To resume, go to **Network Settings**, select **Re-configure the current radio**, choose the new radio and proceed.
8. Under **Network Formation**, select **Restore an automatic backup**.
9. Under **Restore Automation Backup**, choose the latest automatic backup and select **Submit**.
-10. If your radio requires overwriting the IEEE address, you will see a screen titled **Overwrite Radio IEEE Address**. Check the **Permanently replace the radio IEEE address** box and click **Submit**. Overwriting the IEEE address may take a while.
- - Your old Zigbee Coordinator radio and your new stick will now have the same Zigbee IEEE address (unique MAC address for the Zigbee device).
- - Selecting this option is required for the migration process to complete successfully.
- - From this point onwards, you should not operate the old stick in the same area unless you change the Zigbee IEEE address on it.
- - If you do not migrate the Zigbee IEEE address from your old Zigbee Coordinator radio, then you will have to re-join/re-pair many of your devices in order to keep them working.
+10. If the new radio requires overwriting the IEEE address (the unique MAC address), you will see the prompt for **Overwrite Radio IEEE Address**.
+ - Check the **Permanently replace the radio IEEE address** box and click **Submit**.
+ - Selecting this option is required for the migration process to complete successfully.
+ - Overwriting the IEEE address may take a while.
+ - Both the old and new Zigbee Coordinators will now have the same Zigbee IEEE address.
+ - You should not operate the old adapter in the same area unless you change its Zigbee IEEE address.
+ - If you do not migrate the Zigbee IEEE address from the old Zigbee Coordinator radio, you will have to reconnect many of your devices to keep them working.
11. Finally, a **Success!** message should pop up with information that all options were successfully saved.
- Select **Finish** to confirm.
-The migration process is complete. However, be aware that you will not be able to control your existing Zigbee devices until the new coordinator fully joins the network. This process can take a few minutes. If some existing devices do not function after some time, try power-cycling them to allow them to re-join the network.
+{% important %}
+You will not be able to control your existing Zigbee devices until the new coordinator fully joins the network after the migration. **This can take a few minutes.**
+
+If some existing devices do not resume normal functions after some time, try power-cycling them to attempt rejoining to the network.
+{% endimportant %}
## Troubleshooting
-To help resolve any kinks or compatibility problems, report bugs as issues with debug logs. Please note the current limitations and follow the instructions in this troubleshooting section.
+Please note the current limitations and follow the instructions in this troubleshooting section.
-### Limitations
+{% note %}
+To help resolve any kinks or compatibility problems, report bugs as issues with debug logs.
+{% endnote %}
-Note that ZHA only supports connecting a single dedicated Zigbee Coordinator radio adapter or module with a single Zigbee network and that the Zigbee Coordinator cannot already be connected or used by any other application. Any devices that are or have previously been connected to another Zigbee implementation will also need to first be reset to their factory default settings before they can be paired/joined to ZHA, please see each device manufacturer's documentation.
+### Limitations
-Any Zigbee device can only be connected to a single Zigbee Coordinator (only one Zigbee gateway). This is a limitation in the current (as well as previous) Zigbee protocol specifications, governed by the [CSA (Connectivity Standards Alliance)](https://csa-iot.org/all-solutions/zigbee/). As such, it is a limit that applies to all Zigbee implementations, not just the ZHA implementation.
+ZHA only supports connecting a single dedicated Zigbee Coordinator radio adapter or module with a single Zigbee network. The Zigbee Coordinator cannot already be connected or used by any other application. Devices currently or previously connected to another Zigbee implementation will need to be reset to their factory default settings before they can be paired/joined to ZHA. Refer to each device manufacturer's documentation for reset steps.
+
+Any Zigbee device can only be connected to a single Zigbee Coordinator (only one Zigbee gateway). This is a limitation in the Zigbee protocol specifications, governed by the [CSA (Connectivity Standards Alliance)](https://csa-iot.org/all-solutions/zigbee/), applying to all Zigbee implementations and not just the ZHA implementation.
Support for commissioning Zigbee 3.0 devices via "Install Code" or "QR Code" via the `zha.permit` action has so far only been implemented for 'ezsp' (Silicon Labs EmberZNet) or 'znp' (Texas Instruments) radio type in ZHA. Other radio types are missing support in their respective [radio libraries for zigpy](https://github.com/zigpy/) or manufacturer's firmware commands/APIs.
-ZHA does currently not support devices that can only use the ZGP ("Zigbee Green Power") profile which is used in a few batteryless self-powered or energy harvesting devices, (such as for example; Philips Hue Click, Philips Hue Tap, and some "Friends of Hue" partnership switches).
+ZHA currently does not support devices that can only use the ZGP ("Zigbee Green Power") profile which is used in a few batteryless self-powered or energy harvesting devices, (such as for example; Philips Hue Click, Philips Hue Tap, and some "Friends of Hue" partnership switches).
ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart Energy") profile, that is however due to the "Zigbee SE" specification not being part of the standard Zigbee 3.0 specification and thus not implemented in most of the Zigbee protocol stacks that are commonly available Zigbee Coordinator radio adapters and modules.
### Knowing which devices are supported
Home Assistant's ZHA {% term integration %} supports all standard Zigbee device types. It should be compatible with most Zigbee devices as long as they fully conform to the official ZCL (Zigbee Cluster Library) specifications defined by the [CSA (Connectivity Standards Alliance, formerly the Zigbee Alliance)](https://csa-iot.org/all-solutions/zigbee/). There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA {% term integration %}
-Not all hardware manufacturers always fully comply with the standard specifications. Sometimes, they may also implement unique features. For this reason, some Zigbee devices pair/join fine with ZHA but then only show none or only a few entities in the {% term integration %}. Developers can work around most such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to the section below on _How to add support for new and unsupported devices_.
+Not all hardware manufacturers always fully comply with the standard specifications. Sometimes, they may also implement unique features. For this reason, some Zigbee devices pair/join fine with ZHA but then only show none or only a few entities in the {% term integration %}. Developers can work around most such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to the section below on [How to add support for new and unsupported devices](#how-to-add-support-for-new-and-unsupported-devices).
For clarification, normally only devices that do not fully conform to CSA's ZCL specifications that will not present all standard attributes as entities for configuration in the ZHA {% term integration %}. Zigbee devices that only use the standard clusters and attributes that are Zigbee specifications set by the Connectivity Standards Alliance should not need custom device handlers.
@@ -514,7 +638,8 @@ Tip to new Zigbee users: Checkout [blakadder's unofficial Zigbee Device Compatib
### How to add support for new and unsupported devices
-If your Zigbee device pairs/joins successfully with the ZHA {% term integration %} but does not show all of the expected entities:
+If your Zigbee device pairs/joins successfully with the ZHA {% term integration %} but does not show all of the expected entities:
+
1. Try to re-pair/re-join the device several times.
2. Checkout the troubleshooting section.
3. Still not working? You may need a custom device handler. This handler will have exception handling code to work around device-specific issues.
@@ -523,13 +648,14 @@ For devices that do not follow the standard defined in the CSA's ZCL (Zigbee Clu
People familiar with other Zigbee gateway solutions for home automation may know similar concepts of using custom Zigbee device handlers/converters for non-standard devices. For example, [Zigbee2MQTT (and IoBroker) uses zigbee-herdsman converters](https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html) and [SmartThings Classics (Legacy) platform has Hub Connected Device Handlers](https://developer.smartthings.com/docs/devices/hub-connected/legacy).
-If you do not want to develop such a "quirk" Python script yourself, you can submit a "device support request" as a new issue to the [ZHA Device Handlers project repository on GitHub](https://github.com/zigpy/zha-device-handlers/issues):
-1. Sign in to GitHub.
-2. Select **New issue** and follow the instructions.
- - New device support requests require the device signature + diagnostic information.
- - You may also need to actively help in further testing or provide additional information to the volunteering developers.
+If you do not want to develop such a "quirk" Python script yourself, you can submit a "device support request" as a new issue to the [ZHA Device Handlers project repository on GitHub](https://github.com/zigpy/zha-device-handlers/issues):
-Note that submitting a new "device support request" does not guarantee that someone else will develop a custom "quirk" for ZHA. The project relies on volunteering developers. However, without "device support requests", the developers may not be aware that your specific Zigbee device is not working correctly in ZHA.
+1. Sign in to GitHub.
+2. Select **New issue** and follow the instructions.
+ - New device support requests require the device signature + diagnostic information.
+ - You may also need to actively help in further testing or provide additional information to the volunteering developers.
+
+Note that submitting a new "device support request" does not guarantee that someone else will develop a custom "quirk" for ZHA. The project relies on volunteering developers. However, without "device support requests", the developers may not be aware that your specific Zigbee device is not working correctly in ZHA.
### Best practices to avoid pairing/connection difficulties
@@ -538,15 +664,15 @@ If you experience problems pairing a device, verify that you follow best practic
- Check that your setup and environment are optimized to avoid interference.
- As interference avoidance is an extremely important topic on its own, please read and follow the tips in the separate section below about Zigbee interference avoidance and network range/coverage optimization.
- Check that you have enough Zigbee router devices (also known as Zigbee signal repeaters or range extenders) and if you do not have any, invest and add some mains-powered devices that will work as Zigbee routers.
- - Aim to start out with mains-powered devices before adding battery-operated devices as a "weak" Zigbee network mesh (e.g., the device is too far from the Zigbee coordinator or a Zigbee router) may prevent some devices from being paired. Zigbee router devices are also needed to increase the maximum of devices that can be connected to your Zigbee mesh network.
- - Note that some Zigbee devices are not fully compatible with all brands of Zigbee router devices. Xiaomi/Aqara devices are for example known not to work with Zigbee router devices from Centralite, General Electrics, Iris, Ledvance/OSRAM, LIGHTIFY/Sylvania, Orvibo, PEQ, Securifi, and SmartThings/Samsung. Better results can usually be achieved by using mains-powered devices IKEA and Nue/3A Home or dedicated DIY routing devices based on Texas Instruments CC253x/CC26x2 and XBee Series 2/3 Zigbee radios.
+ - Aim to start out with mains-powered devices before adding battery-operated devices as a "weak" Zigbee network mesh (e.g., the device is too far from the Zigbee coordinator or a Zigbee router) may prevent some devices from being paired. Zigbee router devices are also needed to increase the maximum of devices that can be connected to your Zigbee mesh network.
+ - Note that some Zigbee devices are not fully compatible with all brands of Zigbee router devices. Xiaomi/Aqara devices are for example known not to work with Zigbee router devices from Centralite, General Electrics, Iris, Ledvance/OSRAM, LIGHTIFY/Sylvania, Orvibo, PEQ, Securifi, and SmartThings/Samsung. Better results can usually be achieved by using mains-powered devices IKEA and Nue/3A Home or dedicated DIY routing devices based on Texas Instruments CC253x/CC26x2 and XBee Series 2/3 Zigbee radios.
- If possible try to pair your Zigbee devices in their intended final location, (and not pair it next to the Zigbee coordinator and then need to move it after).
- Pairing a Zigbee device next to the Zigbee coordinator and then moving it later can result in dropped/lost connections or other issues.
- If the device you want to add is not brand new and as such never paired before then you always have to make sure to first manually reset the device to its factory default settings before you will be able to add/pair it.
- Some battery-operated Zigbee devices are known to have problems with pairing if they have Low battery voltage.
- - Some people have reported replacing the battery on their newly received Xiaomi/Aqara devices solved pairing issues.
+ - Some people have reported replacing the battery on their newly received Xiaomi/Aqara devices solved pairing issues.
- Be patient as the pairing of some Zigbee devices may require multiple attempts and you may sometimes need to try again and again.
- - Some devices, like example those from Xiaomi/Aqara, are known to not be 100% compliant with the standard Zigbee specifications and may therefore require many paring attempts over 10-20 minutes or longer.
+ - Some devices, like example those from Xiaomi/Aqara, are known to not be 100% compliant with the standard Zigbee specifications and may therefore require many paring attempts over 10-20 minutes or longer.
### Zigbee interference avoidance and network range/coverage optimization
@@ -569,13 +695,13 @@ Common root causes of unreliable performance are often seen with outdated Zigbee
- Update to a later version of Zigbee Coordinator firmware on the existing radio adapter.
- Most manufacturers usually provide straightforward guides for updating the firmware.
-
+
- Try different physical placement and orientations of the Zigbee Coordinator and its antenna.
- Optimal placement of the Zigbee adapter is close to the middle of the house as possible.
- Try placing Zigbee Coordinator at some distance away from walls, ceilings, and floors.
- Try different orientations of the Zigbee Coordinator adapter or its antenna.
-While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware and/or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when run into problems with devices.
+While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware and/or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when run into problems with devices.
#### Actions to avoid or workaround EMI/EMF/RMI interference
@@ -587,7 +713,7 @@ Since all Zigbee Coordinator radio adapters are very sensitive/susceptible to al
- Extension cables also makes it easier to try different orientations of the adapter/antenna.
- Avoid USB 3.0 ports/computers/peripherals as they are known culprits of RFI/EMI/EMF disruption. (See Ref. [1](https://www.usb.org/sites/default/files/327216.pdf) and [2](https://www.unit3compliance.co.uk/2-4ghz-intra-system-or-self-platform-interference-demonstration/)).
- - Make sure to only connect the Zigbee USB adapter to a USB 2.0 port (and not to a USB 3.x port).
+ - Make sure to only connect the Zigbee USB adapter to a USB 2.0 port (and not to a USB 3.x port).
- If a computer only has USB 3.x ports then buy and connect Zigbee Coordinator via a powered USB 2.0 hub.
- Shield any unshielded computers/peripherals/devices by adding all-metal enclosures/chassis/casings.
@@ -615,6 +741,7 @@ Missing links between Zigbee end devices (often battery-powered devices) in the
Some end devices (for example, Xiaomi door sensors) sleep for an extended period, causing the parent Zigbee Router to remove them from its child table via a feature called router child aging. Since using child aging and removing them from the child table is a Zigbee 3.0 feature, this does not always occur because not all Zigbee router devices use child aging.
This is what causes devices to show a missing link. Even though the device is no longer in the child table, the end device can still communicate via the parent Zigbee router.
+
#### How to interpret RSSI and LQI values
Interpreting RSSI and LQI values can be complex, as metrics of network health and communication quality are provided by the devices themselves, and each device could get to its results in different ways. Unless you are a Zigbee specialist yourself or are guided by one, please ignore those values. They can be misleading. If you delve into this, it is important to understand not to judge RSSI or LQI values on their own. When troubleshooting Zigbee messages that are being dropped, you must interpret the combination of both RSSI and LQI.
@@ -641,7 +768,7 @@ When reporting potential bugs related to the ZHA integration on the issues track
1. Debug logs for the issue, see [debug logging](#debug-logging).
2. Exact model and firmware of the Zigbee radio (Zigbee Coordinator adapter) being used.
3. If the issue is related to a specific Zigbee device, provide both the **Zigbee Device Signature** and the **Diagnostics** information.
- - Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & services**" %}. Select the **Zigbee Home Automation** integration. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively.
+ - Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & services**" %}. Select the **Zigbee Home Automation** integration. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively.
Note: Please also make sure you give it your best effort to follow the recommended best practices for avoiding both [pairing/connection difficulties](#best-practices-to-avoid-pairingconnection-difficulties) and [Zigbee interference](#zigbee-interference-avoidance-and-network-rangecoverage-optimization), (which helps free up time for developers).
@@ -669,31 +796,58 @@ logger:
### Add Philips Hue bulbs that have previously been added to another bridge
-Philips Hue bulbs/lights that have previously been paired/added to another bridge/gateway will not show up during search in ZHA to pair/add a Zigbee device. That is because you have to first manually restore your bulbs/lights back to their factory default settings first, and just removing them from your old bridge/gateway is not enough to do so. Instead to achieve a proper device factory reset you can use one of these methods below.
+Philips Hue bulbs that have previously been paired to another bridge/gateway will not show up during search in ZHA to add a Zigbee device. **Bulbs must be restored back to their factory default settings**.
-You can use a Philips Hue Dimmer Switch or Lutron Connected Bulb Remote to factory-reset your bulbs. For this to work, the remote does not have to be paired with your previous bridge. Also, make sure there are no other Hue bulbs nearby that have just been turned on when using this method. Otherwise, you risk resetting them too.
+{% important %}
+**You must factory-reset the device.**
-Newer Philips Hue bulbs you can reset via Bluetooth. The official Android app can connect to one of these bulbs even if it is already paired to a bridge. Then, you can reset the bulb in the app.
+- Simply "removing" them from your old bridge/gateway is not sufficient.
+- Be sure there are no other Hue bulbs nearby that have just been powered-on when using this method or you will risk resetting them in this process.
-#### Philips Hue Dimmer Switch
+{% endimportant %}
-1. Turn on your Hue bulb/light you want to reset. (It is important that the bulb has just been turned).
-2. Hold the Philips Hue Dimmer Switch near your bulb (closer than 10 centimeters / 4 inches).
-3. Press and hold the (I)/(ON) and (O)/(OFF) buttons on the Philips Hue Dimmer Switch. The bulb should start blinking in 10-20 seconds. The bulb will blink, then turn off, then turn on. You can now release the dimmer buttons.
-4. Your bulb is now factor reset and ready for pairing. A green light on the top left of the dimmer remote indicates that your bulb has been successfully reset to factory default settings.
+The following reset methods can be used (depending on the bulb version):
-Note: If you are unable to reset the bulb, remove it from the Hue Bridge and retry the procedure.
+- **Zigbee remote:**
+ - Steps are outlined below for either the _Philips Hue Dimmer Switch_ or _Lutron Connected Bulb Remote_.
+ - The remote does not have to be paired with your previous bridge.
+- **Bluetooth via Android app:**
+ - Newer Philips Hue bulbs can reset via Bluetooth using the official Android app.
+ - This is an option even if the bulb is already paired to a bridge.
+- **Hue Thief command-line tool**:
+ - Advanced users can use a third-party tool called [Hue Thief](https://github.com/vanviegen/hue-thief/).
+ - This requires an EZSP-based Zigbee USB stick.
-#### Lutron Connected Bulb Remote
+#### Factory-reset using a Zigbee remote
-1. Turn on your Hue bulb/light you want to reset. (It is important that the bulb has just been turned).
-2. Hold the Dimmer Switch near your bulb (closer than 10 centimeters / 4 inches)
-3. Press and hold the 2nd (up arrow) and 4th (light off) buttons on the Lutron Connected Bulb Remote simultaneously for about 10 seconds continuously until your bulb starts to blink and the green LED on the remote should also start blink slowly.
-4. Continue to hold both buttons on the remote until the green LED on it stops blinking. Your bulb should also have stopped blinking and eventually turn on again indicating that your bulb has been successfully reset to factory default settings.
+Icons or button names may vary between generations of remotes. The remote used for resetting does not have to be paired with your previous bridge.
-#### hue-thief
+{% details "To reset using a remote:" %}
-Follow the instructions on [https://github.com/vanviegen/hue-thief/](https://github.com/vanviegen/hue-thief/) (EZSP-based Zigbee USB stick required)
+1. Identify which buttons will be used later to perform the reset (based on the brand of remote):
+ - **Philips Hue Dimmer Switch**:
+ - Use the **(I)/(ON)** and **(O)/(OFF)** buttons.
+ - Button labels or icons may vary based on the generation of Hue remote.
+ - **Lutron Connected Bulb Remote:**
+ - Use the **2nd (up arrow)** and **4th (light off)** buttons.
+2. Turn on the Hue bulb you want to reset.
+ - **It is important that the bulb has _just_ been powered on.**
+3. Hold the remote near your bulb, closer than 10cm (about 4 inches).
+4. Press-and-hold both buttons identified in the first step and continue holding them once the bulb begins to blink.
+ - Expect to hold the buttons for about another 10 seconds while the bulb blinks.
+ - **Lutron Connected Bulb Remote:** The green LED on the remote should also begin to blink slowly.
+5. Release both buttons once the bulb turns off.
+ - **Lutron Connected Bulb Remote:** You can release the buttons after the green LED stops flashing on the remote.
+6. The bulb will turn back on immediately after to indicate the factory-reset is complete.
+ - The bulb is now ready for pairing to ZHA following normal steps for [adding devices](#adding-devices).
+
+{% tip %}
+A green light on the top left of the Philips Hue Dimmer Switch remote indicates that your bulb has been successfully reset to factory default settings.
+{% endtip %}
+
+{% enddetails %}
+
+If you are unable to reset the bulb using a method above, remove it from the Hue Bridge (if it was re-discovered by the Hue Bridge) and try the procedure again.
### ZHA Start up issue with Home Assistant or Home Assistant Container
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index a69b7b3e4e3..054f42e7c3c 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -1003,6 +1003,19 @@ This association group is used when Home Assistant [resets the Z-Wave controller
Under normal circumstances, it is not necessary to add a device to this group.
+## Identification via Z-Wave
+
+Other Z-Wave devices can instruct a Home Assistant instance to identify itself by sending the following `Indicator Set` Z-Wave command (all bytes are hexadecimal):
+
+```txt
+87010003500308500403500506
+ ~~ ~~ ~~
+```
+
+The bytes underlined with `~` can also have any other value.
+
+When receiving such a command, Home Assistant will show a notification in its sidebar, mentioning which node sent the command.
+
## Z-Wave Command Classes Home Assistant responds to when queried
The following table lists the Command Classes together with the implemented version and required security class. These are the Command Classes that Home Assistant will respond to when queried by other devices.
diff --git a/source/_posts/2022-12-20-year-of-voice.markdown b/source/_posts/2022-12-20-year-of-voice.markdown
index b109e172fd6..825136c2631 100644
--- a/source/_posts/2022-12-20-year-of-voice.markdown
+++ b/source/_posts/2022-12-20-year-of-voice.markdown
@@ -23,6 +23,10 @@ _**TL;DR**: It is our goal for 2023 to let users control Home Assistant in their
- [Year of the Voice - Chapter 4](/blog/2023/10/12/year-of-the-voice-chapter-4-wakewords/) (October 12, 2023)
- [Year of the Voice - Chapter 5](/blog/2023/12/13/year-of-the-voice-chapter-5/) (December 13, 2023)
- [Voice - Chapter 6](/blog/2024/02/21/voice-chapter-6/) (February 21, 2024)
+ - [Voice - Chapter 7](/blog/2024/06/26/voice-chapter-7/) (June 26, 2024)
+ - [Voice - Chapter 8](/blog/2024/12/19/voice-chapter-8-assist-in-the-home/) (December 19, 2024)
+ - [Voice - Chapter 9](/blog/2025/02/13/voice-chapter-9-speech-to-phrase/) (February 13, 2024)
+
diff --git a/source/_posts/2025-02-05-release-20252.markdown b/source/_posts/2025-02-05-release-20252.markdown
index 13312c4641b..91e12fbec1e 100644
--- a/source/_posts/2025-02-05-release-20252.markdown
+++ b/source/_posts/2025-02-05-release-20252.markdown
@@ -71,6 +71,12 @@ _PS: It is almost Valentine's day, did you set up some romantic scenes yet? 🌹
- [Other noteworthy changes](#other-noteworthy-changes)
- [Bluetooth config panel](#bluetooth-config-panel)
- [Preparing our graphs for the future](#preparing-our-graphs-for-the-future)
+- [Patch releases](#patch-releases)
+ - [2025.2.1 - February 7](#202521---february-7)
+ - [2025.2.2 - February 10](#202522---february-10)
+ - [2025.2.3 - February 12](#202523---february-12)
+ - [2025.2.4 - February 14](#202524---february-14)
+ - [2025.2.5 - February 21](#202525---february-21)
- [Need help? Join the community!](#need-help-join-the-community)
- [Backward-incompatible changes](#backward-incompatible-changes)
- [All changes](#all-changes)
@@ -473,6 +479,351 @@ However, this change is a preparation for the future. We have many plans and
ideas for our graphs, and this change was a necessary step to make those plans
possible.
+## Patch releases
+
+We will also release patch releases for Home Assistant 2025.2 in February.
+These patch releases only contain bug fixes. Our goal is to release a patch
+release every Friday.
+
+### 2025.2.1 - February 7
+
+- Fix hassio test using wrong fixture ([@emontnemery] - [#137516])
+- Change Electric Kiwi authentication ([@mikey0000] - [#135231])
+- Update govee-ble to 0.42.1 ([@cdce8p] - [#137371])
+- Bump holidays to 0.66 ([@gjohansson-ST] - [#137449])
+- Bump aiohttp-asyncmdnsresolver to 0.1.0 ([@bdraco] - [#137492])
+- Bump aiohttp to 3.11.12 ([@bdraco] - [#137494])
+- Bump govee-ble to 0.43.0 to fix compat with new H5179 firmware ([@bdraco] - [#137508])
+- Bump habiticalib to v0.3.5 ([@tr4nt0r] - [#137510])
+- Fix Mill issue, where no sensors were shown ([@Danielhiversen] - [#137521])
+- Don't overwrite setup state in async_set_domains_to_be_loaded ([@emontnemery] - [#137547])
+- Use separate metadata files for onedrive ([@zweckj] - [#137549])
+- Fix sending polls to Telegram threads ([@jwhb] - [#137553])
+- Skip building wheels for electrickiwi-api ([@cdce8p] - [#137556])
+- Add excluded domains to broadcast intent ([@synesthesiam] - [#137566])
+- Revert "Add `PaddleSwitchPico` (Pico Paddle Remote) device trigger to Lutron Caseta" ([@bdraco] - [#137571])
+- Fix Overseerr webhook configuration JSON ([@denniseffing] - [#137572])
+- Do not rely on pyserial for port scanning with the CM5 + ZHA ([@puddly] - [#137585])
+- Bump eheimdigital to 1.0.6 ([@autinerd] - [#137587])
+- Bump pyfireservicerota to 0.0.46 ([@cyberjunky] - [#137589])
+- Bump reolink-aio to 0.11.10 ([@starkillerOG] - [#137591])
+- Allow to omit the payload attribute to MQTT publish action to allow an empty payload to be sent by default ([@jbouwh] - [#137595])
+- Handle previously migrated HEOS device identifier ([@andrewsayre] - [#137596])
+- Bump `aioshelly` to version `12.4.1` ([@bieniu] - [#137598])
+- Bump electrickiwi-api to 0.9.13 ([@mikey0000] - [#137601])
+- Bump ZHA to 0.0.48 ([@TheJulianJES] - [#137610])
+- Bump Electrickiwi-api to 0.9.14 ([@mikey0000] - [#137614])
+- Update google-nest-sdm to 7.1.3 ([@allenporter] - [#137625])
+- Don't use the current temperature from Shelly BLU TRV as a state for External Temperature number entity ([@bieniu] - [#137658])
+- Fix LG webOS TV turn off when device is already off ([@thecode] - [#137675])
+
+[#135231]: https://github.com/home-assistant/core/pull/135231
+[#137371]: https://github.com/home-assistant/core/pull/137371
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137449]: https://github.com/home-assistant/core/pull/137449
+[#137492]: https://github.com/home-assistant/core/pull/137492
+[#137494]: https://github.com/home-assistant/core/pull/137494
+[#137508]: https://github.com/home-assistant/core/pull/137508
+[#137510]: https://github.com/home-assistant/core/pull/137510
+[#137516]: https://github.com/home-assistant/core/pull/137516
+[#137521]: https://github.com/home-assistant/core/pull/137521
+[#137547]: https://github.com/home-assistant/core/pull/137547
+[#137549]: https://github.com/home-assistant/core/pull/137549
+[#137553]: https://github.com/home-assistant/core/pull/137553
+[#137556]: https://github.com/home-assistant/core/pull/137556
+[#137566]: https://github.com/home-assistant/core/pull/137566
+[#137571]: https://github.com/home-assistant/core/pull/137571
+[#137572]: https://github.com/home-assistant/core/pull/137572
+[#137585]: https://github.com/home-assistant/core/pull/137585
+[#137587]: https://github.com/home-assistant/core/pull/137587
+[#137589]: https://github.com/home-assistant/core/pull/137589
+[#137591]: https://github.com/home-assistant/core/pull/137591
+[#137595]: https://github.com/home-assistant/core/pull/137595
+[#137596]: https://github.com/home-assistant/core/pull/137596
+[#137598]: https://github.com/home-assistant/core/pull/137598
+[#137601]: https://github.com/home-assistant/core/pull/137601
+[#137610]: https://github.com/home-assistant/core/pull/137610
+[#137614]: https://github.com/home-assistant/core/pull/137614
+[#137625]: https://github.com/home-assistant/core/pull/137625
+[#137658]: https://github.com/home-assistant/core/pull/137658
+[#137675]: https://github.com/home-assistant/core/pull/137675
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@allenporter]: https://github.com/allenporter
+[@andrewsayre]: https://github.com/andrewsayre
+[@autinerd]: https://github.com/autinerd
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@cdce8p]: https://github.com/cdce8p
+[@cyberjunky]: https://github.com/cyberjunky
+[@denniseffing]: https://github.com/denniseffing
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@jbouwh]: https://github.com/jbouwh
+[@jwhb]: https://github.com/jwhb
+[@mikey0000]: https://github.com/mikey0000
+[@puddly]: https://github.com/puddly
+[@starkillerOG]: https://github.com/starkillerOG
+[@synesthesiam]: https://github.com/synesthesiam
+[@thecode]: https://github.com/thecode
+[@tr4nt0r]: https://github.com/tr4nt0r
+[@zweckj]: https://github.com/zweckj
+
+### 2025.2.2 - February 10
+
+- LaCrosse View new endpoint ([@IceBotYT] - [#137284])
+- Convert coinbase account amounts as floats to properly add them together ([@natekspencer] - [#137588])
+- Bump ohmepy to 1.2.9 ([@dan-r] - [#137695])
+- Bump onedrive_personal_sdk to 0.0.9 ([@zweckj] - [#137729])
+- Limit habitica ConfigEntrySelect to integration domain ([@cdce8p] - [#137767])
+- Limit nordpool ConfigEntrySelect to integration domain ([@cdce8p] - [#137768])
+- Limit transmission ConfigEntrySelect to integration domain ([@cdce8p] - [#137769])
+- Fix tplink child updates taking up to 60s ([@bdraco] - [#137782])
+- Call backup listener during setup in Google Drive ([@tronikos] - [#137789])
+- Use the external URL set in Settings > System > Network if my is disabled as redirect URL for Google Drive instructions ([@tronikos] - [#137791])
+- Fix manufacturer_id matching for 0 ([@patman15] - [#137802])
+- Fix DAB radio in Onkyo ([@arturpragacz] - [#137852])
+- Fix LG webOS TV fails to setup when device is off ([@thecode] - [#137870])
+- Fix heos migration ([@balloob] - [#137887])
+- Bump pydrawise to 2025.2.0 ([@dknowles2] - [#137961])
+- Bump aioshelly to version 12.4.2 ([@bieniu] - [#137986])
+- Prevent crash if telegram message failed and did not generate an ID ([@CloCkWeRX] - [#137989])
+- Bump habiticalib to v0.3.7 ([@tr4nt0r] - [#137993])
+- Refresh the nest authentication token on integration start before invoking the pub/sub subsciber ([@allenporter] - [#138003])
+- Use resumable uploads in Google Drive ([@tronikos] - [#138010])
+- Bump py-synologydsm-api to 2.6.2 ([@mib1185] - [#138060])
+- Handle generic agent exceptions when getting and deleting backups ([@abmantis] - [#138145])
+- Bump onedrive-personal-sdk to 0.0.10 ([@zweckj] - [#138186])
+- Keep one backup per backup agent when executing retention policy ([@emontnemery] - [#138189])
+- Improve inexogy logging when failed to update ([@jpbede] - [#138210])
+- Bump pyheos to v1.0.2 ([@andrewsayre] - [#138224])
+- Update frontend to 20250210.0 ([@bramkragten] - [#138227])
+- Bump lacrosse-view to 1.1.1 ([@IceBotYT] - [#137282])
+
+[#137282]: https://github.com/home-assistant/core/pull/137282
+[#137284]: https://github.com/home-assistant/core/pull/137284
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137588]: https://github.com/home-assistant/core/pull/137588
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#137695]: https://github.com/home-assistant/core/pull/137695
+[#137729]: https://github.com/home-assistant/core/pull/137729
+[#137767]: https://github.com/home-assistant/core/pull/137767
+[#137768]: https://github.com/home-assistant/core/pull/137768
+[#137769]: https://github.com/home-assistant/core/pull/137769
+[#137782]: https://github.com/home-assistant/core/pull/137782
+[#137789]: https://github.com/home-assistant/core/pull/137789
+[#137791]: https://github.com/home-assistant/core/pull/137791
+[#137802]: https://github.com/home-assistant/core/pull/137802
+[#137852]: https://github.com/home-assistant/core/pull/137852
+[#137870]: https://github.com/home-assistant/core/pull/137870
+[#137887]: https://github.com/home-assistant/core/pull/137887
+[#137961]: https://github.com/home-assistant/core/pull/137961
+[#137986]: https://github.com/home-assistant/core/pull/137986
+[#137989]: https://github.com/home-assistant/core/pull/137989
+[#137993]: https://github.com/home-assistant/core/pull/137993
+[#138003]: https://github.com/home-assistant/core/pull/138003
+[#138010]: https://github.com/home-assistant/core/pull/138010
+[#138060]: https://github.com/home-assistant/core/pull/138060
+[#138145]: https://github.com/home-assistant/core/pull/138145
+[#138186]: https://github.com/home-assistant/core/pull/138186
+[#138189]: https://github.com/home-assistant/core/pull/138189
+[#138210]: https://github.com/home-assistant/core/pull/138210
+[#138224]: https://github.com/home-assistant/core/pull/138224
+[#138227]: https://github.com/home-assistant/core/pull/138227
+[@CloCkWeRX]: https://github.com/CloCkWeRX
+[@IceBotYT]: https://github.com/IceBotYT
+[@abmantis]: https://github.com/abmantis
+[@allenporter]: https://github.com/allenporter
+[@andrewsayre]: https://github.com/andrewsayre
+[@arturpragacz]: https://github.com/arturpragacz
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@cdce8p]: https://github.com/cdce8p
+[@dan-r]: https://github.com/dan-r
+[@dknowles2]: https://github.com/dknowles2
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@jpbede]: https://github.com/jpbede
+[@mib1185]: https://github.com/mib1185
+[@natekspencer]: https://github.com/natekspencer
+[@patman15]: https://github.com/patman15
+[@thecode]: https://github.com/thecode
+[@tr4nt0r]: https://github.com/tr4nt0r
+[@tronikos]: https://github.com/tronikos
+[@zweckj]: https://github.com/zweckj
+
+### 2025.2.3 - February 12
+
+- Bump hass-nabucasa from 0.88.1 to 0.89.0 ([@ludeeus] - [#137321])
+- Move cloud backup upload/download handlers to lib ([@ludeeus] - [#137416])
+- Handle non-retryable errors when uploading cloud backup ([@ludeeus] - [#137517])
+- Add missing thermostat state EMERGENCY_HEAT to econet ([@jdanders] - [#137623])
+- Fix broken issue creation in econet ([@jdanders] - [#137773])
+- Fix version extraction for APsystems ([@alfwro13] - [#138023])
+- Refresh nest access token before before building subscriber Credentials ([@allenporter] - [#138259])
+- Fix BackupManager.async_delete_backup ([@emontnemery] - [#138286])
+- Fix next authentication token error handling ([@allenporter] - [#138299])
+- Bump pyenphase to 1.25.1 ([@catsmanac] - [#138327])
+- Bump sentry-sdk to 1.45.1 ([@edenhaus] - [#138349])
+- Bump zeroconf to 0.144.1 ([@bdraco] - [#138353])
+- Bump cryptography to 44.0.1 ([@edenhaus] - [#138371])
+- Fix tplink iot strip sensor refresh ([@sdb9696] - [#138375])
+- Bump deebot-client to 12.1.0 ([@edenhaus] - [#138382])
+- Bump hass-nabucasa from 0.89.0 to 0.90.0 ([@emontnemery] - [#138387])
+- Update cloud backup agent to use calculate_b64md5 from lib ([@emontnemery] - [#138391])
+
+[#137321]: https://github.com/home-assistant/core/pull/137321
+[#137416]: https://github.com/home-assistant/core/pull/137416
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137517]: https://github.com/home-assistant/core/pull/137517
+[#137623]: https://github.com/home-assistant/core/pull/137623
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#137773]: https://github.com/home-assistant/core/pull/137773
+[#138023]: https://github.com/home-assistant/core/pull/138023
+[#138231]: https://github.com/home-assistant/core/pull/138231
+[#138259]: https://github.com/home-assistant/core/pull/138259
+[#138286]: https://github.com/home-assistant/core/pull/138286
+[#138299]: https://github.com/home-assistant/core/pull/138299
+[#138327]: https://github.com/home-assistant/core/pull/138327
+[#138349]: https://github.com/home-assistant/core/pull/138349
+[#138353]: https://github.com/home-assistant/core/pull/138353
+[#138371]: https://github.com/home-assistant/core/pull/138371
+[#138375]: https://github.com/home-assistant/core/pull/138375
+[#138382]: https://github.com/home-assistant/core/pull/138382
+[#138387]: https://github.com/home-assistant/core/pull/138387
+[#138391]: https://github.com/home-assistant/core/pull/138391
+[@alfwro13]: https://github.com/alfwro13
+[@allenporter]: https://github.com/allenporter
+[@bdraco]: https://github.com/bdraco
+[@catsmanac]: https://github.com/catsmanac
+[@edenhaus]: https://github.com/edenhaus
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@jdanders]: https://github.com/jdanders
+[@ludeeus]: https://github.com/ludeeus
+[@sdb9696]: https://github.com/sdb9696
+
+### 2025.2.4 - February 14
+
+- Bump python-kasa to 0.10.2 ([@sdb9696] - [#138381])
+- Bump hass-nabucasa from 0.90.0 to 0.91.0 ([@ludeeus] - [#138441])
+- Bump aiowebostv to 0.6.2 ([@thecode] - [#138488])
+- Bump ZHA to 0.0.49 to fix Tuya TRV issues ([@TheJulianJES] - [#138492])
+- Bump pyseventeentrack to 1.0.2 ([@shaiu] - [#138506])
+- Bump hass-nabucasa from 0.91.0 to 0.92.0 ([@emontnemery] - [#138510])
+- Bump py-synologydsm-api to 2.6.3 ([@mib1185] - [#138516])
+- Update frontend to 20250214.0 ([@bramkragten] - [#138521])
+
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#138231]: https://github.com/home-assistant/core/pull/138231
+[#138381]: https://github.com/home-assistant/core/pull/138381
+[#138408]: https://github.com/home-assistant/core/pull/138408
+[#138441]: https://github.com/home-assistant/core/pull/138441
+[#138488]: https://github.com/home-assistant/core/pull/138488
+[#138492]: https://github.com/home-assistant/core/pull/138492
+[#138506]: https://github.com/home-assistant/core/pull/138506
+[#138510]: https://github.com/home-assistant/core/pull/138510
+[#138516]: https://github.com/home-assistant/core/pull/138516
+[#138521]: https://github.com/home-assistant/core/pull/138521
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@bramkragten]: https://github.com/bramkragten
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@ludeeus]: https://github.com/ludeeus
+[@mib1185]: https://github.com/mib1185
+[@sdb9696]: https://github.com/sdb9696
+[@shaiu]: https://github.com/shaiu
+[@thecode]: https://github.com/thecode
+
+### 2025.2.5 - February 21
+
+- Adjust Tuya Water Detector to support 1 as an alarm state ([@petacz] - [#135933])
+- Fix bug in set_preset_mode_with_end_datetime (wrong typo of frost_guard) ([@pectum83] - [#138402])
+- Bump pyhive-integration to 1.0.2 ([@KJonline] - [#138569])
+- Bump tesla-fleet-api to v0.9.10 ([@Bre77] - [#138575])
+- Bump pysmarty2 to 0.10.2 ([@lucab-91] - [#138625])
+- Rename "returned" state to "alert" ([@shaiu] - [#138676])
+- Bump pyvesync for vesync ([@cdnninja] - [#138681])
+- Opower: Fix unavailable "start date" and "end date" sensors ([@SaswatPadhi] - [#138694])
+- Correct backup filename on delete or download of cloud backup ([@emontnemery] - [#138704])
+- Correct invalid automatic backup settings when loading from store ([@emontnemery] - [#138716])
+- Bump airgradient to 0.9.2 ([@joostlek] - [#138725])
+- Clean up translations for mocked integrations inbetween tests ([@emontnemery] - [#138732])
+- Bump pyrympro from 0.0.8 to 0.0.9 ([@nivstein] - [#138753])
+- Don't allow setting backup retention to 0 days or copies ([@emontnemery] - [#138771])
+- Fix TV input source option for Sonos Arc Ultra ([@PeteRager] - [#138778])
+- Add assistant filter to expose entities list command ([@synesthesiam] - [#138817])
+- Fix playback for encrypted Reolink files ([@starkillerOG] - [#138852])
+- Correct backup date when reading a backup created by supervisor ([@emontnemery] - [#138860])
+- Bump pyfritzhome to 0.6.15 ([@mib1185] - [#138879])
+- Validate hassio backup settings ([@emontnemery] - [#138880])
+- Catch zeep fault as well on GetSystemDateAndTime call. ([@DmitryKuzmenko] - [#138916])
+- Fix Reolink callback id collision ([@starkillerOG] - [#138918])
+- Fix handling of min/max temperature presets in AVM Fritz!SmartHome ([@mib1185] - [#138954])
+- Bump pyprosegur to 0.0.13 ([@dgomes] - [#138960])
+- Bump reolink-aio to 0.12.0 ([@starkillerOG] - [#138985])
+- Bump deebot-client to 12.2.0 ([@edenhaus] - [#138986])
+- Omit unknown hue effects ([@joostlek] - [#138992])
+- Update frontend to 20250221.0 ([@bramkragten] - [#139006])
+
+[#135933]: https://github.com/home-assistant/core/pull/135933
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#138231]: https://github.com/home-assistant/core/pull/138231
+[#138402]: https://github.com/home-assistant/core/pull/138402
+[#138408]: https://github.com/home-assistant/core/pull/138408
+[#138530]: https://github.com/home-assistant/core/pull/138530
+[#138569]: https://github.com/home-assistant/core/pull/138569
+[#138575]: https://github.com/home-assistant/core/pull/138575
+[#138625]: https://github.com/home-assistant/core/pull/138625
+[#138676]: https://github.com/home-assistant/core/pull/138676
+[#138681]: https://github.com/home-assistant/core/pull/138681
+[#138694]: https://github.com/home-assistant/core/pull/138694
+[#138704]: https://github.com/home-assistant/core/pull/138704
+[#138716]: https://github.com/home-assistant/core/pull/138716
+[#138725]: https://github.com/home-assistant/core/pull/138725
+[#138732]: https://github.com/home-assistant/core/pull/138732
+[#138753]: https://github.com/home-assistant/core/pull/138753
+[#138771]: https://github.com/home-assistant/core/pull/138771
+[#138778]: https://github.com/home-assistant/core/pull/138778
+[#138817]: https://github.com/home-assistant/core/pull/138817
+[#138852]: https://github.com/home-assistant/core/pull/138852
+[#138860]: https://github.com/home-assistant/core/pull/138860
+[#138879]: https://github.com/home-assistant/core/pull/138879
+[#138880]: https://github.com/home-assistant/core/pull/138880
+[#138916]: https://github.com/home-assistant/core/pull/138916
+[#138918]: https://github.com/home-assistant/core/pull/138918
+[#138954]: https://github.com/home-assistant/core/pull/138954
+[#138960]: https://github.com/home-assistant/core/pull/138960
+[#138985]: https://github.com/home-assistant/core/pull/138985
+[#138986]: https://github.com/home-assistant/core/pull/138986
+[#138992]: https://github.com/home-assistant/core/pull/138992
+[#139006]: https://github.com/home-assistant/core/pull/139006
+[@Bre77]: https://github.com/Bre77
+[@DmitryKuzmenko]: https://github.com/DmitryKuzmenko
+[@KJonline]: https://github.com/KJonline
+[@PeteRager]: https://github.com/PeteRager
+[@SaswatPadhi]: https://github.com/SaswatPadhi
+[@bramkragten]: https://github.com/bramkragten
+[@cdnninja]: https://github.com/cdnninja
+[@dgomes]: https://github.com/dgomes
+[@edenhaus]: https://github.com/edenhaus
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@joostlek]: https://github.com/joostlek
+[@lucab-91]: https://github.com/lucab-91
+[@mib1185]: https://github.com/mib1185
+[@nivstein]: https://github.com/nivstein
+[@pectum83]: https://github.com/pectum83
+[@petacz]: https://github.com/petacz
+[@shaiu]: https://github.com/shaiu
+[@starkillerOG]: https://github.com/starkillerOG
+[@synesthesiam]: https://github.com/synesthesiam
+
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing
@@ -584,8 +935,14 @@ entry context menu.
([@jbouwh] - [#133342]) ([documentation](/integrations/mqtt))
+
+The MQTT publish action no longer supports the `topic_template` and `payload_template` attributes. Instead, only `topic` and `payload` should be used. In automation and scripts, users can use templates by default. Users were instructed to update their automations and scripts with a repair flow when the use of the deprecated action options was detected.
+
+([@jbouwh] - [#134056]) ([documentation](/integrations/mqtt))
+
[@jbouwh]: https://github.com/jbouwh
[#133342]: https://github.com/home-assistant/core/pull/133342
+[#134056]: https://github.com/home-assistant/core/pull/134056
{% enddetails %}
diff --git a/source/_posts/2025-02-13-voice-chapter-9-speech-to-phrase.markdown b/source/_posts/2025-02-13-voice-chapter-9-speech-to-phrase.markdown
new file mode 100644
index 00000000000..86ad8c2fa46
--- /dev/null
+++ b/source/_posts/2025-02-13-voice-chapter-9-speech-to-phrase.markdown
@@ -0,0 +1,136 @@
+---
+layout: post
+title: "Speech-to-Phrase brings voice home - Voice chapter 9"
+description: "This new tool brings fast, local speech processing to low-end hardware, along with some useful new voice and AI features"
+date: 2025-02-13 00:00:01
+date_formatted: "February 13, 2025"
+author: Mike Hansen
+comments: true
+categories: Assist
+og_image: /images/blog/2025-02-voice-chapter-9/art.jpg
+---
+
+
+
+**Welcome to Voice chapter 9 🎉 part of our [long-running series](https://www.home-assistant.io/blog/categories/assist/) following the development of open voice.**
+
+We're still pumped from the launch of the [Home Assistant Voice Preview Edition](/voice-pe/) at the end of December. It sold out 23 minutes into our announcement - wow! We've been working hard to keep it in stock at [all our distributors](/voice-pe#buy).
+
+Today, we have a lot of cool stuff to improve your experience with Voice PE or any other Assist satellite you're using. This includes fully local and offline voice control that can be powered by nearly any Home Assistant system.
+
+- [Voice for the masses](#voice-for-the-masses)
+- [Building an Open Voice Ecosystem](#building-an-open-voice-ecosystem)
+- [Large language model improvements](#large-language-model-improvements)
+- [Expanding Voice Capabilities](#expanding-voice-capabilities)
+- [Home Assistant phones home: analog phones are back!](#home-assistant-phones-home-analog-phones-are-back)
+- [Wyoming improvements](#wyoming-improvements)
+- [🫵 Help us bring choice to voice!](#-help-us-bring-choice-to-voice)
+
+
+Dragon NaturallySpeaking was a popular speech recognition program introduced in 1997. To run this software you needed at least a 133 MHz Pentium processor, 32 MB of RAM, and Windows 95 or later. Nearly thirty years later, Speech-to-Text is much better, but needs orders of magnitude more resources.
+
+Incredible technologies are being developed in speech processing, but it's currently unrealistic for a device that costs less than $100 to take real advantage of them. It's possible, of course, but running the previously recommended Speech-to-Text tool, [Whisper](https://github.com/openai/whisper), on a Raspberry Pi 4 takes at least 5 seconds to turn your speech into text, with varying levels of success. This is why we ended up recommending at least an Intel N100 to run your voice assistant fully locally. That stung. Our opt-in analytics shows over [50% of the Home Assistant OS users](https://analytics.home-assistant.io/) are running their homes on affordable, low-powered machines like the [Home Assistant Green](/green) or a Raspberry Pi.
+
+What's more, advancing the development of Whisper is largely in the hands of OpenAI, as we don't have the resources required to add languages to that tool. We could add every possible language to Home Assistant, but if any single part of our voice pipeline lacks language support, it renders voice unusable for that language. As a result, many widely spoken languages were unsupported for local voice control.
+
+This left many users unable to use voice to control their smart home without purchasing extra hardware or services. We’re changing this today with the launch of a key new piece of our voice pipeline.
+
+## Voice for the masses
+
+
+
+[Speech-to-Phrase](https://github.com/OHF-voice/speech-to-phrase) is based on old, almost ancient, voice technology by today's standards. Instead of the ability to transcribe virtually any speech into text, it is limited to a set of pre-trained phrases. Speech-to-Phrase will automatically generate the phrases and fine-tune a model based on the devices, areas, and sentence triggers in your Home Assistant server - 100% locally and offline.
+
+**The result:** speech transcribed in under a second on a Home Assistant Green or Raspberry Pi 4. The Raspberry Pi 5 processes commands seven times faster, clocking in at 150 milliseconds per command!
+
+With great speed comes *some* limitations. Speech-to-Phrase only supports a subset of Assist's voice commands, and more open-ended things like shopping lists, naming a timer, and broadcasts are not usable out of the box. Really any commands that can accept random words (wildcards) will not work. For the same reasons, Speech-to-Phrase is intended for home control only and not LLMs.
+
+The most important home control commands are supported, including turning lights on and off, changing brightness and color, getting the weather, setting timers, and controlling media players. [Custom sentences](/docs/automation/trigger/#sentence-trigger) can also be added to trigger things not covered by the current commands, and we expect the community will come up with some clever new ways to use this tech.
+
+
+All you need to get started with voice
+
+Speech-to-Phrase is launching with support for English, French, German, Dutch, Spanish, and Italian - covering nearly 70% of Home Assistant users. Nice. Unlike the local Speech-to-Text tools currently available, adding languages to Speech-to-Phrase is much easier. This means many more languages will be available in future releases, and [we would love your help](/voice_control/contribute-voice) adding them!
+
+We're working on updating the Voice wizard to include Speech-to-Phrase. Until then, you need to install the add-on manually:
+
+[
](https://my.home-assistant.io/redirect/supervisor_addon/?addon=core_speech-to-phrase)
+
+## Building an Open Voice Ecosystem
+
+When we launched Home Assistant Voice Preview Edition, we didn't just launch a product; we kickstarted an ecosystem. We did this by open-sourcing all parts and ensuring that the voice experience built into Home Assistant is not tied to a single product. Any voice assistant built for the Open Home ecosystem can take advantage of all this work. Even your DIY ones!
+
+With ESPHome 2025.2, which we're releasing next week, any ESPHome-based voice assistant will support making [broadcasts](/blog/2025/02/05/release-20252/#new-broadcast-intent) (more on that below), and they will also be able to use our new voice wizard to ensure new users have everything they need to get started.
+
+This will include updates for the [$13 Atom Echo](/voice_control/thirteen-usd-voice-remote/) and ESP32-S3-Box-3 devices that we used for development during the Year of the Voice!
+
+New broadcast feature in action with Atom and Box 3
+
+## Large language model improvements
+
+We aim for Home Assistant to be [the place for experimentation with AI in the smart home](/blog/2024/06/07/ai-agents-for-the-smart-home/). We support a wide range of models, both local and cloud-based, and are constantly improving the different ways people can interact with them. We're always running [benchmarks](https://github.com/allenporter/home-assistant-datasets/tree/main/reports) to track the best models, and make sure our changes lead to an improved experience.
+
+If you set up [Assist](/voice_control/), Home Assistant's built-in voice assistant, and configure it to use an LLM, you might have noticed some new features landing recently. One major change was the new "[prefer handling commands locally](/blog/2024/12/04/release-202412/#let-your-voice-assistant-fall-back-to-an-llm-based-agent)" setting, which always attempts to run commands with the built-in conversation agent before it sends it off to an LLM. We noticed many easy-to-run commands were being sent to an LLM, which can slow down things and waste tokens. If Home Assistant understands the command (e.g., turn on the lights), it will perform the necessary action, and only passes it on to your chosen LLM if it doesn't understand the command (e.g., what's the air quality like now).
+
+Adding the above features made us realize that LLMs need to understand the commands handled locally. Now, the [conversation history is shared](/blog/2025/02/05/release-20252/#shared-history-between-the-default-conversation-agent-and-its-llm-based-fallback) with the LLM. The context allows you to ask the LLM for follow-up questions that refer to recent commands, regardless of whether they helped process the request.
+
+
+Left: without shared conversations. Right: Shared conversations enable GPT to understand context.
+
+### Reducing the time to first word with streaming
+
+When experimenting with larger models, or on slower hardware, LLM's can feel sluggish. They only respond once the entire reply is generated, which can take frustratingly long for lengthy responses (you'll be waiting a while if you ask it to tell you an epic fairy tale).
+
+In Home Assistant 2025.3 we're introducing support for LLMs to stream their response to the chat, allowing users to start reading while the response is being generated. A bonus side effect is that commands are now also faster: they will be executed as soon as they come in, without waiting for the rest of the message to be complete.
+
+Streaming is coming initially for Ollama and OpenAI.
+
+### Model Context Protocol brings Home Assistant to every AI
+
+In November 2024, Anthropic announced the [Model Context Protocol](https://modelcontextprotocol.io/introduction) (MCP). It is a new protocol to allow LLMs to control external services. In this release, contributed by [Allen Porter](https://github.com/allenporter), Home Assistant can speak MCP.
+
+Using the new Model Context Protocol [integration](/integrations/mcp), Home Assistant can integrate external MCP servers and make their tools available to LLMs that Home Assistant talks to (for your voice assistant or in automations). There is [quite a collection of MCP servers](https://github.com/punkpeye/awesome-mcp-servers), including wild ones like scraping websites ([tutorial](https://gist.github.com/allenporter/b0e9946feb2ab60901c4f467ac1ba6f9)), file server access, or even BlueSky.
+
+With the new Model Context Protocol [server integration](/integrations/mcp_server), Home Assistant's LLM tools can be included in other AI apps, like the Claude desktop app ([tutorial](https://modelcontextprotocol.io/quickstart/user)). If agentic AI takes off, your smart home will be ready to be integrated.
+
+Thanks Allen!
+
+## Expanding Voice Capabilities
+
+We keep enhancing the capabilities of the built-in conversation agent of Home Assistant. With the latest release, we're unlocking two new features:
+
+#### "Broadcast that it's time for dinner"
+
+The new [broadcast](/blog/2025/02/05/release-20252/#new-broadcast-intent) feature lets you quickly send messages to the other Assist satellites in your home. This makes it possible to announce it's time for dinner, or announce battles between your children 😅.
+
+#### "Set the temperature to 19 degrees"
+
+Previously Assist could only tell you the temperature, but now it can help you change the temperature of your HVAC system. Perfect for changing the temperature while staying cozy under a warm blanket.
+
+## Home Assistant phones home: analog phones are back!
+
+Two years ago, we introduced the [world's most private voice assistant](/voice_control/worlds-most-private-voice-assistant/): an analog phone! Users can pick it up to talk to their smart home, and only the user can hear the response. A fun feature we're adding today is that Home Assistant can now **call your analog phone!**
+
+Analog phones are great when you want to notify a room, instead of an entire home. For instance, when the laundry is done, you can notify someone in the living room, but not the office. Also since the user needs to pick up the horn to receive the call, you will know if your notification was received.
+
+Have your Home Assistant give you a call
+
+If you're using an LLM as your voice assistant, you can also start a conversation from a phone call. You can provide the opening sentence and via a new "extra system prompt" option, provide extra context to the LLM to interpret the response from the user. For example,
+
+- Extra system context: garage door cover.garage_door was left open for 30 minutes. We asked the user if it should be closed
+- Assistant: should the garage door be closed?
+- User: sure
+
+Thanks [JaminH](https://github.com/jaminh) for the contribution.
+
+## Wyoming improvements
+
+Wyoming is our standard for linking together all the different parts needed to build a voice assistant. Home Assistant 2025.3 will add support for announcements to Wyoming satellites, making them eligible for the new broadcast feature too.
+
+We're also adding a new microWakeWord add-on (the same wake word engine running on Voice PE!) that can be used as an alternative to openWakeWord. As we collect more real-world samples from our [Wake Word Collective](https://ohf-voice.github.io/wake-word-collective/), the models included in microWakeWord will be retrained and improved.
+
+## 🫵 Help us bring choice to voice!
+
+We've said it before, and we'll say it again---the era of open voice has begun, and the more people who join us, the better it gets. Home Assistant offers many ways to start with voice control, whether by [building your own](/voice_control/#expand-and-experiment) Assist hardware or getting a [Home Assistant Voice Preview Edition](/voice-pe/). With every update, you'll see new features, and you'll get to preview the future of voice today.
+
+A huge thanks to all the language leaders and contributors helping to shape open voice in the home! There are many ways to get involved, from translating or sharing voice samples to building new features---learn more about how [you can contribute here](/voice_control/contribute-voice). Another great way to support development is by subscribing to [Home Assistant Cloud](/cloud/), which helps fund the Open Home projects that power voice.
diff --git a/source/_redirects b/source/_redirects
index 082dec0af0d..3da3bae864f 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -9,6 +9,8 @@ layout: null
# General use redirects
/join-chat https://discord.gg/home-assistant
/twitter https://twitter.com/home_assistant/
+/mastodon https://fosstodon.org/@homeassistant
+/bluesky https://bsky.app/profile/home-assistant.io
/newsletter https://newsletter.openhomefoundation.org/
/suggest-community-highlight https://docs.google.com/forms/d/e/1FAIpQLSd9VWPeVM0xg0swWL6kT3wkQUKt8vWsTL5WtPO95LAy-0cYZw/viewform
/get-blueprints https://community.home-assistant.io/c/blueprints-exchange/53
diff --git a/source/changelogs/core-2025.1.markdown b/source/changelogs/core-2025.1.markdown
index 313fa9450e8..365e0b9d505 100644
--- a/source/changelogs/core-2025.1.markdown
+++ b/source/changelogs/core-2025.1.markdown
@@ -7,7 +7,7 @@ replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$
These are all the changes included in the Home Assistant Core 2025.1 release.
For a summary in a more readable format:
-[Release notes blog for this release](/blog/2024/01/03/release-20251/).
+[Release notes blog for this release](/blog/2025/01/03/release-20251/).
- Bump version to 2025.1.0dev0 ([@cdce8p] - [#131751])
- Remove unreachable code in Habitica ([@tr4nt0r] - [#131778])
diff --git a/source/changelogs/core-2025.2.markdown b/source/changelogs/core-2025.2.markdown
index 98215ecdc7a..b3db05fb0ea 100644
--- a/source/changelogs/core-2025.2.markdown
+++ b/source/changelogs/core-2025.2.markdown
@@ -1358,6 +1358,345 @@ For a summary in a more readable format:
- Bump hassil and intents ([@synesthesiam] - [#137440])
- Bump dbus-fast to 2.33.0 ([@bdraco] - [#137446])
+## Release 2025.2.1 - February 7
+
+- Fix hassio test using wrong fixture ([@emontnemery] - [#137516])
+- Change Electric Kiwi authentication ([@mikey0000] - [#135231])
+- Update govee-ble to 0.42.1 ([@cdce8p] - [#137371])
+- Bump holidays to 0.66 ([@gjohansson-ST] - [#137449])
+- Bump aiohttp-asyncmdnsresolver to 0.1.0 ([@bdraco] - [#137492])
+- Bump aiohttp to 3.11.12 ([@bdraco] - [#137494])
+- Bump govee-ble to 0.43.0 to fix compat with new H5179 firmware ([@bdraco] - [#137508])
+- Bump habiticalib to v0.3.5 ([@tr4nt0r] - [#137510])
+- Fix Mill issue, where no sensors were shown ([@Danielhiversen] - [#137521])
+- Don't overwrite setup state in async_set_domains_to_be_loaded ([@emontnemery] - [#137547])
+- Use separate metadata files for onedrive ([@zweckj] - [#137549])
+- Fix sending polls to Telegram threads ([@jwhb] - [#137553])
+- Skip building wheels for electrickiwi-api ([@cdce8p] - [#137556])
+- Add excluded domains to broadcast intent ([@synesthesiam] - [#137566])
+- Revert "Add `PaddleSwitchPico` (Pico Paddle Remote) device trigger to Lutron Caseta" ([@bdraco] - [#137571])
+- Fix Overseerr webhook configuration JSON ([@denniseffing] - [#137572])
+- Do not rely on pyserial for port scanning with the CM5 + ZHA ([@puddly] - [#137585])
+- Bump eheimdigital to 1.0.6 ([@autinerd] - [#137587])
+- Bump pyfireservicerota to 0.0.46 ([@cyberjunky] - [#137589])
+- Bump reolink-aio to 0.11.10 ([@starkillerOG] - [#137591])
+- Allow to omit the payload attribute to MQTT publish action to allow an empty payload to be sent by default ([@jbouwh] - [#137595])
+- Handle previously migrated HEOS device identifier ([@andrewsayre] - [#137596])
+- Bump `aioshelly` to version `12.4.1` ([@bieniu] - [#137598])
+- Bump electrickiwi-api to 0.9.13 ([@mikey0000] - [#137601])
+- Bump ZHA to 0.0.48 ([@TheJulianJES] - [#137610])
+- Bump Electrickiwi-api to 0.9.14 ([@mikey0000] - [#137614])
+- Update google-nest-sdm to 7.1.3 ([@allenporter] - [#137625])
+- Don't use the current temperature from Shelly BLU TRV as a state for External Temperature number entity ([@bieniu] - [#137658])
+- Fix LG webOS TV turn off when device is already off ([@thecode] - [#137675])
+
+[#135231]: https://github.com/home-assistant/core/pull/135231
+[#137371]: https://github.com/home-assistant/core/pull/137371
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137449]: https://github.com/home-assistant/core/pull/137449
+[#137492]: https://github.com/home-assistant/core/pull/137492
+[#137494]: https://github.com/home-assistant/core/pull/137494
+[#137508]: https://github.com/home-assistant/core/pull/137508
+[#137510]: https://github.com/home-assistant/core/pull/137510
+[#137516]: https://github.com/home-assistant/core/pull/137516
+[#137521]: https://github.com/home-assistant/core/pull/137521
+[#137547]: https://github.com/home-assistant/core/pull/137547
+[#137549]: https://github.com/home-assistant/core/pull/137549
+[#137553]: https://github.com/home-assistant/core/pull/137553
+[#137556]: https://github.com/home-assistant/core/pull/137556
+[#137566]: https://github.com/home-assistant/core/pull/137566
+[#137571]: https://github.com/home-assistant/core/pull/137571
+[#137572]: https://github.com/home-assistant/core/pull/137572
+[#137585]: https://github.com/home-assistant/core/pull/137585
+[#137587]: https://github.com/home-assistant/core/pull/137587
+[#137589]: https://github.com/home-assistant/core/pull/137589
+[#137591]: https://github.com/home-assistant/core/pull/137591
+[#137595]: https://github.com/home-assistant/core/pull/137595
+[#137596]: https://github.com/home-assistant/core/pull/137596
+[#137598]: https://github.com/home-assistant/core/pull/137598
+[#137601]: https://github.com/home-assistant/core/pull/137601
+[#137610]: https://github.com/home-assistant/core/pull/137610
+[#137614]: https://github.com/home-assistant/core/pull/137614
+[#137625]: https://github.com/home-assistant/core/pull/137625
+[#137658]: https://github.com/home-assistant/core/pull/137658
+[#137675]: https://github.com/home-assistant/core/pull/137675
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@allenporter]: https://github.com/allenporter
+[@andrewsayre]: https://github.com/andrewsayre
+[@autinerd]: https://github.com/autinerd
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@cdce8p]: https://github.com/cdce8p
+[@cyberjunky]: https://github.com/cyberjunky
+[@denniseffing]: https://github.com/denniseffing
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@jbouwh]: https://github.com/jbouwh
+[@jwhb]: https://github.com/jwhb
+[@mikey0000]: https://github.com/mikey0000
+[@puddly]: https://github.com/puddly
+[@starkillerOG]: https://github.com/starkillerOG
+[@synesthesiam]: https://github.com/synesthesiam
+[@thecode]: https://github.com/thecode
+[@tr4nt0r]: https://github.com/tr4nt0r
+[@zweckj]: https://github.com/zweckj
+
+## Release 2025.2.2 - February 10
+
+- LaCrosse View new endpoint ([@IceBotYT] - [#137284])
+- Convert coinbase account amounts as floats to properly add them together ([@natekspencer] - [#137588])
+- Bump ohmepy to 1.2.9 ([@dan-r] - [#137695])
+- Bump onedrive_personal_sdk to 0.0.9 ([@zweckj] - [#137729])
+- Limit habitica ConfigEntrySelect to integration domain ([@cdce8p] - [#137767])
+- Limit nordpool ConfigEntrySelect to integration domain ([@cdce8p] - [#137768])
+- Limit transmission ConfigEntrySelect to integration domain ([@cdce8p] - [#137769])
+- Fix tplink child updates taking up to 60s ([@bdraco] - [#137782])
+- Call backup listener during setup in Google Drive ([@tronikos] - [#137789])
+- Use the external URL set in Settings > System > Network if my is disabled as redirect URL for Google Drive instructions ([@tronikos] - [#137791])
+- Fix manufacturer_id matching for 0 ([@patman15] - [#137802])
+- Fix DAB radio in Onkyo ([@arturpragacz] - [#137852])
+- Fix LG webOS TV fails to setup when device is off ([@thecode] - [#137870])
+- Fix heos migration ([@balloob] - [#137887])
+- Bump pydrawise to 2025.2.0 ([@dknowles2] - [#137961])
+- Bump aioshelly to version 12.4.2 ([@bieniu] - [#137986])
+- Prevent crash if telegram message failed and did not generate an ID ([@CloCkWeRX] - [#137989])
+- Bump habiticalib to v0.3.7 ([@tr4nt0r] - [#137993])
+- Refresh the nest authentication token on integration start before invoking the pub/sub subsciber ([@allenporter] - [#138003])
+- Use resumable uploads in Google Drive ([@tronikos] - [#138010])
+- Bump py-synologydsm-api to 2.6.2 ([@mib1185] - [#138060])
+- Handle generic agent exceptions when getting and deleting backups ([@abmantis] - [#138145])
+- Bump onedrive-personal-sdk to 0.0.10 ([@zweckj] - [#138186])
+- Keep one backup per backup agent when executing retention policy ([@emontnemery] - [#138189])
+- Improve inexogy logging when failed to update ([@jpbede] - [#138210])
+- Bump pyheos to v1.0.2 ([@andrewsayre] - [#138224])
+- Update frontend to 20250210.0 ([@bramkragten] - [#138227])
+- Bump lacrosse-view to 1.1.1 ([@IceBotYT] - [#137282])
+
+[#137282]: https://github.com/home-assistant/core/pull/137282
+[#137284]: https://github.com/home-assistant/core/pull/137284
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137588]: https://github.com/home-assistant/core/pull/137588
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#137695]: https://github.com/home-assistant/core/pull/137695
+[#137729]: https://github.com/home-assistant/core/pull/137729
+[#137767]: https://github.com/home-assistant/core/pull/137767
+[#137768]: https://github.com/home-assistant/core/pull/137768
+[#137769]: https://github.com/home-assistant/core/pull/137769
+[#137782]: https://github.com/home-assistant/core/pull/137782
+[#137789]: https://github.com/home-assistant/core/pull/137789
+[#137791]: https://github.com/home-assistant/core/pull/137791
+[#137802]: https://github.com/home-assistant/core/pull/137802
+[#137852]: https://github.com/home-assistant/core/pull/137852
+[#137870]: https://github.com/home-assistant/core/pull/137870
+[#137887]: https://github.com/home-assistant/core/pull/137887
+[#137961]: https://github.com/home-assistant/core/pull/137961
+[#137986]: https://github.com/home-assistant/core/pull/137986
+[#137989]: https://github.com/home-assistant/core/pull/137989
+[#137993]: https://github.com/home-assistant/core/pull/137993
+[#138003]: https://github.com/home-assistant/core/pull/138003
+[#138010]: https://github.com/home-assistant/core/pull/138010
+[#138060]: https://github.com/home-assistant/core/pull/138060
+[#138145]: https://github.com/home-assistant/core/pull/138145
+[#138186]: https://github.com/home-assistant/core/pull/138186
+[#138189]: https://github.com/home-assistant/core/pull/138189
+[#138210]: https://github.com/home-assistant/core/pull/138210
+[#138224]: https://github.com/home-assistant/core/pull/138224
+[#138227]: https://github.com/home-assistant/core/pull/138227
+[@CloCkWeRX]: https://github.com/CloCkWeRX
+[@IceBotYT]: https://github.com/IceBotYT
+[@abmantis]: https://github.com/abmantis
+[@allenporter]: https://github.com/allenporter
+[@andrewsayre]: https://github.com/andrewsayre
+[@arturpragacz]: https://github.com/arturpragacz
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bramkragten]: https://github.com/bramkragten
+[@cdce8p]: https://github.com/cdce8p
+[@dan-r]: https://github.com/dan-r
+[@dknowles2]: https://github.com/dknowles2
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@jpbede]: https://github.com/jpbede
+[@mib1185]: https://github.com/mib1185
+[@natekspencer]: https://github.com/natekspencer
+[@patman15]: https://github.com/patman15
+[@thecode]: https://github.com/thecode
+[@tr4nt0r]: https://github.com/tr4nt0r
+[@tronikos]: https://github.com/tronikos
+[@zweckj]: https://github.com/zweckj
+
+## Release 2025.2.3 - February 12
+
+- Bump hass-nabucasa from 0.88.1 to 0.89.0 ([@ludeeus] - [#137321])
+- Move cloud backup upload/download handlers to lib ([@ludeeus] - [#137416])
+- Handle non-retryable errors when uploading cloud backup ([@ludeeus] - [#137517])
+- Add missing thermostat state EMERGENCY_HEAT to econet ([@jdanders] - [#137623])
+- Fix broken issue creation in econet ([@jdanders] - [#137773])
+- Fix version extraction for APsystems ([@alfwro13] - [#138023])
+- Refresh nest access token before before building subscriber Credentials ([@allenporter] - [#138259])
+- Fix BackupManager.async_delete_backup ([@emontnemery] - [#138286])
+- Fix next authentication token error handling ([@allenporter] - [#138299])
+- Bump pyenphase to 1.25.1 ([@catsmanac] - [#138327])
+- Bump sentry-sdk to 1.45.1 ([@edenhaus] - [#138349])
+- Bump zeroconf to 0.144.1 ([@bdraco] - [#138353])
+- Bump cryptography to 44.0.1 ([@edenhaus] - [#138371])
+- Fix tplink iot strip sensor refresh ([@sdb9696] - [#138375])
+- Bump deebot-client to 12.1.0 ([@edenhaus] - [#138382])
+- Bump hass-nabucasa from 0.89.0 to 0.90.0 ([@emontnemery] - [#138387])
+- Update cloud backup agent to use calculate_b64md5 from lib ([@emontnemery] - [#138391])
+
+[#137321]: https://github.com/home-assistant/core/pull/137321
+[#137416]: https://github.com/home-assistant/core/pull/137416
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137517]: https://github.com/home-assistant/core/pull/137517
+[#137623]: https://github.com/home-assistant/core/pull/137623
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#137773]: https://github.com/home-assistant/core/pull/137773
+[#138023]: https://github.com/home-assistant/core/pull/138023
+[#138231]: https://github.com/home-assistant/core/pull/138231
+[#138259]: https://github.com/home-assistant/core/pull/138259
+[#138286]: https://github.com/home-assistant/core/pull/138286
+[#138299]: https://github.com/home-assistant/core/pull/138299
+[#138327]: https://github.com/home-assistant/core/pull/138327
+[#138349]: https://github.com/home-assistant/core/pull/138349
+[#138353]: https://github.com/home-assistant/core/pull/138353
+[#138371]: https://github.com/home-assistant/core/pull/138371
+[#138375]: https://github.com/home-assistant/core/pull/138375
+[#138382]: https://github.com/home-assistant/core/pull/138382
+[#138387]: https://github.com/home-assistant/core/pull/138387
+[#138391]: https://github.com/home-assistant/core/pull/138391
+[@alfwro13]: https://github.com/alfwro13
+[@allenporter]: https://github.com/allenporter
+[@bdraco]: https://github.com/bdraco
+[@catsmanac]: https://github.com/catsmanac
+[@edenhaus]: https://github.com/edenhaus
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@jdanders]: https://github.com/jdanders
+[@ludeeus]: https://github.com/ludeeus
+[@sdb9696]: https://github.com/sdb9696
+
+## Release 2025.2.4 - February 14
+
+- Bump python-kasa to 0.10.2 ([@sdb9696] - [#138381])
+- Bump hass-nabucasa from 0.90.0 to 0.91.0 ([@ludeeus] - [#138441])
+- Bump aiowebostv to 0.6.2 ([@thecode] - [#138488])
+- Bump ZHA to 0.0.49 to fix Tuya TRV issues ([@TheJulianJES] - [#138492])
+- Bump pyseventeentrack to 1.0.2 ([@shaiu] - [#138506])
+- Bump hass-nabucasa from 0.91.0 to 0.92.0 ([@emontnemery] - [#138510])
+- Bump py-synologydsm-api to 2.6.3 ([@mib1185] - [#138516])
+- Update frontend to 20250214.0 ([@bramkragten] - [#138521])
+
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#138231]: https://github.com/home-assistant/core/pull/138231
+[#138381]: https://github.com/home-assistant/core/pull/138381
+[#138408]: https://github.com/home-assistant/core/pull/138408
+[#138441]: https://github.com/home-assistant/core/pull/138441
+[#138488]: https://github.com/home-assistant/core/pull/138488
+[#138492]: https://github.com/home-assistant/core/pull/138492
+[#138506]: https://github.com/home-assistant/core/pull/138506
+[#138510]: https://github.com/home-assistant/core/pull/138510
+[#138516]: https://github.com/home-assistant/core/pull/138516
+[#138521]: https://github.com/home-assistant/core/pull/138521
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@bramkragten]: https://github.com/bramkragten
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@ludeeus]: https://github.com/ludeeus
+[@mib1185]: https://github.com/mib1185
+[@sdb9696]: https://github.com/sdb9696
+[@shaiu]: https://github.com/shaiu
+[@thecode]: https://github.com/thecode
+
+## Release 2025.2.5 - February 21
+
+- Adjust Tuya Water Detector to support 1 as an alarm state ([@petacz] - [#135933])
+- Fix bug in set_preset_mode_with_end_datetime (wrong typo of frost_guard) ([@pectum83] - [#138402])
+- Bump pyhive-integration to 1.0.2 ([@KJonline] - [#138569])
+- Bump tesla-fleet-api to v0.9.10 ([@Bre77] - [#138575])
+- Bump pysmarty2 to 0.10.2 ([@lucab-91] - [#138625])
+- Rename "returned" state to "alert" ([@shaiu] - [#138676])
+- Bump pyvesync for vesync ([@cdnninja] - [#138681])
+- Opower: Fix unavailable "start date" and "end date" sensors ([@SaswatPadhi] - [#138694])
+- Correct backup filename on delete or download of cloud backup ([@emontnemery] - [#138704])
+- Correct invalid automatic backup settings when loading from store ([@emontnemery] - [#138716])
+- Bump airgradient to 0.9.2 ([@joostlek] - [#138725])
+- Clean up translations for mocked integrations inbetween tests ([@emontnemery] - [#138732])
+- Bump pyrympro from 0.0.8 to 0.0.9 ([@nivstein] - [#138753])
+- Don't allow setting backup retention to 0 days or copies ([@emontnemery] - [#138771])
+- Fix TV input source option for Sonos Arc Ultra ([@PeteRager] - [#138778])
+- Add assistant filter to expose entities list command ([@synesthesiam] - [#138817])
+- Fix playback for encrypted Reolink files ([@starkillerOG] - [#138852])
+- Correct backup date when reading a backup created by supervisor ([@emontnemery] - [#138860])
+- Bump pyfritzhome to 0.6.15 ([@mib1185] - [#138879])
+- Validate hassio backup settings ([@emontnemery] - [#138880])
+- Catch zeep fault as well on GetSystemDateAndTime call. ([@DmitryKuzmenko] - [#138916])
+- Fix Reolink callback id collision ([@starkillerOG] - [#138918])
+- Fix handling of min/max temperature presets in AVM Fritz!SmartHome ([@mib1185] - [#138954])
+- Bump pyprosegur to 0.0.13 ([@dgomes] - [#138960])
+- Bump reolink-aio to 0.12.0 ([@starkillerOG] - [#138985])
+- Bump deebot-client to 12.2.0 ([@edenhaus] - [#138986])
+- Omit unknown hue effects ([@joostlek] - [#138992])
+- Update frontend to 20250221.0 ([@bramkragten] - [#139006])
+
+[#135933]: https://github.com/home-assistant/core/pull/135933
+[#137448]: https://github.com/home-assistant/core/pull/137448
+[#137688]: https://github.com/home-assistant/core/pull/137688
+[#138231]: https://github.com/home-assistant/core/pull/138231
+[#138402]: https://github.com/home-assistant/core/pull/138402
+[#138408]: https://github.com/home-assistant/core/pull/138408
+[#138530]: https://github.com/home-assistant/core/pull/138530
+[#138569]: https://github.com/home-assistant/core/pull/138569
+[#138575]: https://github.com/home-assistant/core/pull/138575
+[#138625]: https://github.com/home-assistant/core/pull/138625
+[#138676]: https://github.com/home-assistant/core/pull/138676
+[#138681]: https://github.com/home-assistant/core/pull/138681
+[#138694]: https://github.com/home-assistant/core/pull/138694
+[#138704]: https://github.com/home-assistant/core/pull/138704
+[#138716]: https://github.com/home-assistant/core/pull/138716
+[#138725]: https://github.com/home-assistant/core/pull/138725
+[#138732]: https://github.com/home-assistant/core/pull/138732
+[#138753]: https://github.com/home-assistant/core/pull/138753
+[#138771]: https://github.com/home-assistant/core/pull/138771
+[#138778]: https://github.com/home-assistant/core/pull/138778
+[#138817]: https://github.com/home-assistant/core/pull/138817
+[#138852]: https://github.com/home-assistant/core/pull/138852
+[#138860]: https://github.com/home-assistant/core/pull/138860
+[#138879]: https://github.com/home-assistant/core/pull/138879
+[#138880]: https://github.com/home-assistant/core/pull/138880
+[#138916]: https://github.com/home-assistant/core/pull/138916
+[#138918]: https://github.com/home-assistant/core/pull/138918
+[#138954]: https://github.com/home-assistant/core/pull/138954
+[#138960]: https://github.com/home-assistant/core/pull/138960
+[#138985]: https://github.com/home-assistant/core/pull/138985
+[#138986]: https://github.com/home-assistant/core/pull/138986
+[#138992]: https://github.com/home-assistant/core/pull/138992
+[#139006]: https://github.com/home-assistant/core/pull/139006
+[@Bre77]: https://github.com/Bre77
+[@DmitryKuzmenko]: https://github.com/DmitryKuzmenko
+[@KJonline]: https://github.com/KJonline
+[@PeteRager]: https://github.com/PeteRager
+[@SaswatPadhi]: https://github.com/SaswatPadhi
+[@bramkragten]: https://github.com/bramkragten
+[@cdnninja]: https://github.com/cdnninja
+[@dgomes]: https://github.com/dgomes
+[@edenhaus]: https://github.com/edenhaus
+[@emontnemery]: https://github.com/emontnemery
+[@frenck]: https://github.com/frenck
+[@joostlek]: https://github.com/joostlek
+[@lucab-91]: https://github.com/lucab-91
+[@mib1185]: https://github.com/mib1185
+[@nivstein]: https://github.com/nivstein
+[@pectum83]: https://github.com/pectum83
+[@petacz]: https://github.com/petacz
+[@shaiu]: https://github.com/shaiu
+[@starkillerOG]: https://github.com/starkillerOG
+[@synesthesiam]: https://github.com/synesthesiam
+
[#112047]: https://github.com/home-assistant/core/pull/112047
[#121522]: https://github.com/home-assistant/core/pull/121522
[#121548]: https://github.com/home-assistant/core/pull/121548
diff --git a/source/dashboards/badges.markdown b/source/dashboards/badges.markdown
index 13a2673b1a9..3b775ea76f3 100644
--- a/source/dashboards/badges.markdown
+++ b/source/dashboards/badges.markdown
@@ -27,7 +27,8 @@ Badges are widgets that sit at the top of a panel, above all the cards.

7. Under **Interactions**, you can define the tap behavior.
-8. If you want this badge to be visible only to specific users or under a certain condition, open the **Visibility** tab to [define those conditions](/dashboards/cards/#showing-or-hiding-a-card-conditionally).
+8. If you want this badge to be visible only to specific users or under a certain condition, open the **Visibility** tab to [define those conditions](/dashboards/cards/#showing-or-hiding-a-card-or-badge-conditionally).
+ - The [available conditions](/dashboards/conditional/#conditions-options) are the same as the ones for the conditional card.
9. Select **Save**.
diff --git a/source/dashboards/cards.markdown b/source/dashboards/cards.markdown
index 77ff05d27eb..bfb3acccb34 100644
--- a/source/dashboards/cards.markdown
+++ b/source/dashboards/cards.markdown
@@ -53,7 +53,7 @@ A card can be added to a dashboard directly [from the view](#to-add-a-card-from-
- Then, select **Continue**.

-3. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-conditionally).
+3. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-or-badge-conditionally).
4. If you are adding this card to a [sections view](/dashboards/sections/), on the **Layout** tab, you can [resize the card](#resizing-a-card).
5. If you like, define [card actions, features, header and footer widgets](#card-actions-features-header-and-footer-widgets).
- Not all cards support these elements. Refer to the documentation of the specific card type.
@@ -78,7 +78,7 @@ This method is useful if you are on the **Device** page and want to create a car

5. To edit the card configuration, open the view to which you added the card.
- Select **Edit card**.
-6. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-conditionally).
+6. If you want this card to be visible only to specific users or under a certain condition, you can [define those conditions](#showing-or-hiding-a-card-or-badge-conditionally).
7. If you are adding this card to a [sections view](/dashboards/sections/), on the **Layout** tab, you can [resize the card](#resizing-a-card).
8. If you like, define [card actions, features, header and footer widgets](#card-actions-features-header-and-footer-widgets).
@@ -88,10 +88,11 @@ This method is useful if you are on the **Device** page and want to create a car
You can choose to show or hide certain cards or [badges](/dashboards/badges/) based on different conditions. The [available conditions](/dashboards/conditional/#card-conditions) are the same as the ones for the conditional card.
-1. On the **Visibility** tab, select **Add condition**.
- - Don't see a **Visibility** tab?
+1. On the **Visibility** tab, select **Add condition**./dashboards/conditional/#conditions-options
+ - **Troubleshooting**: Don't see a **Visibility** tab?
- It is not available inside nested cards: vertical stack, horizontal stack, and grid card
2. Select the type of condition, and enter the parameters.
+ - The [available conditions](/dashboards/conditional/#conditions-options) are the same as the ones for the conditional card.
- If you define multiple conditions, the section is only shown when all conditions are met.
- If you did not define any conditions, the section is always shown, to all users.
3. Select **Save**.
diff --git a/source/images/blog/2025-02-voice-chapter-9/art.jpg b/source/images/blog/2025-02-voice-chapter-9/art.jpg
new file mode 100644
index 00000000000..02897333d19
Binary files /dev/null and b/source/images/blog/2025-02-voice-chapter-9/art.jpg differ
diff --git a/source/images/blog/2025-02-voice-chapter-9/green-pe.png b/source/images/blog/2025-02-voice-chapter-9/green-pe.png
new file mode 100644
index 00000000000..440c6ccc5fa
Binary files /dev/null and b/source/images/blog/2025-02-voice-chapter-9/green-pe.png differ
diff --git a/source/images/blog/2025-02-voice-chapter-9/shared-history.png b/source/images/blog/2025-02-voice-chapter-9/shared-history.png
new file mode 100644
index 00000000000..097ad046de8
Binary files /dev/null and b/source/images/blog/2025-02-voice-chapter-9/shared-history.png differ
diff --git a/source/images/blog/2025-02-voice-chapter-9/stp-logo.jpg b/source/images/blog/2025-02-voice-chapter-9/stp-logo.jpg
new file mode 100644
index 00000000000..84fa1ea077e
Binary files /dev/null and b/source/images/blog/2025-02-voice-chapter-9/stp-logo.jpg differ
diff --git a/source/images/distributors/inet.webp b/source/images/distributors/inet.webp
new file mode 100644
index 00000000000..106f75dce60
Binary files /dev/null and b/source/images/distributors/inet.webp differ
diff --git a/source/images/integrations/onedrive/onedrive-app-registration.png b/source/images/integrations/onedrive/onedrive-app-registration.png
new file mode 100644
index 00000000000..2f0427dda07
Binary files /dev/null and b/source/images/integrations/onedrive/onedrive-app-registration.png differ
diff --git a/source/installation/raspberrypi.markdown b/source/installation/raspberrypi.markdown
index 15f64a8990f..51408e31c81 100644
--- a/source/installation/raspberrypi.markdown
+++ b/source/installation/raspberrypi.markdown
@@ -29,11 +29,10 @@ Remember to ensure you're using an [appropriate power supply](https://www.raspbe
This guide shows how to install the {% term "Home Assistant Operating System" %} onto your Raspberry Pi using Raspberry Pi Imager.
-If Raspberry Pi Imager is not supported by your platform, you can [download the Home Assistant image](#downloading-the-home-assistant-image) and use another imaging tool.
-
### Write the image to your SD card
1. Download and install the Raspberry Pi Imager on your computer as described under [https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/).
+ - **Troubleshooting**: If Raspberry Pi Imager is not supported by your platform, you can [download the Home Assistant image](#downloading-the-home-assistant-image) and use another imaging tool, such as Balena Etcher.
2. Open the Raspberry Pi Imager and select your Raspberry Pi device.

3. Choose the operating system:
diff --git a/source/more-info/backup-emergency-kit.markdown b/source/more-info/backup-emergency-kit.markdown
index 241e0d95299..4a78659a55f 100644
--- a/source/more-info/backup-emergency-kit.markdown
+++ b/source/more-info/backup-emergency-kit.markdown
@@ -23,7 +23,9 @@ Encryption is a method of converting data into a coded format so that it can onl

3. Store the kit somewhere safe, outside the Home Assistant system.
- - Without the encryption key, there is no way to [restore an encrypted backup](/common-tasks/general/#restoring-a-backup).
+ - Home Assistant keeps track of the current encryption key. If you download from Home Assistant, it can decrypt your backup.
+ - But if you have changed the encryption key in the meantime, you still need the old key that matches old backups.
+ Without the encryption key, there is no way to [restore an encrypted backup](/common-tasks/general/#restoring-a-backup).
## Changing your encryption key
@@ -33,9 +35,12 @@ When you set up your [backups](/common-tasks/general/#backups), an encryption ke
2. Select **Configure automatic backups** and under **Encryption key**, select **Change**.
3. If you haven't downloaded the old emergency kit yet, do it now.
- As the new encryption key won't work for the backups you've taken until now, keep it somewhere safe and make a note of which backups it applies to.
-4. To generate a new encryption key, select **Change encryption key**.
+4. To generate a new encryption key, select **Next**, then select **Change encryption key**.
5. Download the new encryption key and store it in a safe place.
## I lost my backup encryption key - how can I retrieve it?
-If you still have access to your Home Assistant instance you can download the encryption key again from the backup settings. If you have lost the encryption key, and have no access to your Home Assistant instance, there is no way to restore the backup.
+If you still have access to your Home Assistant instance you can download the encryption key again from the backup settings.
+
+- **If you have not changed the encryption key**: Home Assistant still has it. If you download the backup from the Home Assistant Backup page, it decrypts the backup on the fly.
+- **If you have changed the encryption key**: Home Assistant can not decrypt it on the fly. You need the encryption key that is related to that backup. If you have lost the encryption key, and have no access to your Home Assistant instance, there is no way to restore the backup.
diff --git a/source/security/index.markdown b/source/security/index.markdown
index bbf351a07d8..ec00ba65c02 100644
--- a/source/security/index.markdown
+++ b/source/security/index.markdown
@@ -62,6 +62,13 @@ As an open source project, Home Assistant cannot offer bounties for security vul
The following is a list of past security advisories that have been published by the Home Assistant project.
+**2025-02-18: SSL validation for outgoing requests in core and used libs not correct**
+Severity: _High (CVSS: 7.0)_
+Detailed information: _[Security advisory](https://github.com/home-assistant/core/security/advisories/GHSA-m3pm-rpgg-5wj6)_
+Assigned CVE: _[CVE-2025-25305](https://nvd.nist.gov/vuln/detail/CVE-2025-25305)_
+Discovered by: _[ReneNulschDE](https://github.com/ReneNulschDE)_
+Fixed in: _Home Assistant Core 2024.1.6_
+
**2023-12-14: User accounts disclosed to unauthenticated actors on the LAN**
Severity: _Moderate (CVSS: 4.2)_
Detailed information: _[Security advisory](https://github.com/home-assistant/core/security/advisories/GHSA-jqpc-rc7g-vf83)_
diff --git a/source/voice_control/builtin_sentences.markdown b/source/voice_control/builtin_sentences.markdown
index 67e06d91fb4..c73ff8191fd 100644
--- a/source/voice_control/builtin_sentences.markdown
+++ b/source/voice_control/builtin_sentences.markdown
@@ -147,27 +147,6 @@ Unlike regular voice timers, delayed commands cannot be canceled or modified.
- *Pause TV in 10 minutes*
- *Open the blinds in 5 minutes*
-## Questions
-
-### Get information about a state
-
-- *What is the amount of energy from solar production?*
-- *what is the heat pump co2 sensor's co2 level?*
-- *what is the battery level of my phone?*
-
-### Ask about the weather
-
-- *What is the weather*
-- Struggling with this one? Check the [troubleshooting section](/voice_control/troubleshooting/).
-
-### Ask about people
-
-(that have device tracking activated in Home Assistant)
-
-- *How many people are in the kitchen*
-- *Who is in the garage*
-- *Where is Anne*
-
## Aborting
- *Nevermind*: If you triggered the wake word by mistake and want to stop Home Assistant from listening
diff --git a/source/voice_control/create_wake_word.markdown b/source/voice_control/create_wake_word.markdown
index ba44fb124d0..326ab52201e 100644
--- a/source/voice_control/create_wake_word.markdown
+++ b/source/voice_control/create_wake_word.markdown
@@ -41,9 +41,9 @@ Enabling a wake word consists of 2 steps:
1. Go to {% my supervisor_addon addon="core_openwakeword" title="**Settings** > **Add-ons** > **openWakeWord**" %} and select **Install**.
2. **Start** the add-on.
3. Go to {% my integrations title="**Settings** > **Devices & Services**" %}.
- - Under **Discovered**, you should now see the **openWakeWord** integration.
+ - Under **Discovered**, you should now see the **openWakeWord** component of the **Wyoming** integration.
- Select **Configure** and **Submit**.
- - **Result**: You have successfully installed the **openWakeWord** add-on and Wyoming integration.
+ - **Result**: You have successfully installed the **openWakeWord** add-on and **Wyoming** integration.
### To enable wake word for your voice assistant
@@ -56,8 +56,10 @@ Enabling a wake word consists of 2 steps:
- If the **Text-to-speech** and **Speech-to-text** sections do not provide language selectors, this means you do not have an Assist pipeline set up.
- Set up [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist pipeline](/voice_control/voice_remote_local_assistant).
5. Under **Text-to-speech**, select the language and voice you want Home Assistant to use when speaking to you.
-6. To define the wake word engine, under **Wake word**, select **openwakeword**.
- - Then, select **ok nabu**.
+6. To define the wake word engine, in the top-right corner of the dialog, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Add streaming wake word**.
+ - **Troubleshooting**: If you don't see the three dots {% icon "mdi:dots-vertical" %} menu, go to {% my integrations title="**Settings** > **Devices & Services**" %} and make sure the **openWakeWord** component of the **Wyoming** integration is added.
+ - **Result**: on the bottom of the page, you now see a new section **Streaming wake word engine**.
+ - Select **openwakeword**, then select **ok nabu**.
- If you created a new assistant, select **Create**.
- If you edited an existing assistant, select **Update**.
- **Result**: You now have a voice assistant that listens to a wake word.
diff --git a/source/voice_control/index.markdown b/source/voice_control/index.markdown
index 69beced6a2b..bbae36654bd 100644
--- a/source/voice_control/index.markdown
+++ b/source/voice_control/index.markdown
@@ -19,19 +19,26 @@ This section will help you set up Assist, which is Home Assistant voice assistan
Assist allows you to control Home Assistant using natural language. It is built on top of an open voice foundation and powered by knowledge provided by our community.
-Assist is available to use on most platforms that can interface with Home Assistant. Look for the Assist icon
:
+The simplest way to try out Assist is inside our companion app. Look for the Assist icon
at the top right of your dashboard.
+
+The simplest way to get started with Assist is with our recommended voice assistant hardware, the [Home Assistant Voice Preview Edition](/voice-pe/).
As for the rest of Home Assistant core functionalities, Assist can be personalized and extended to fit your needs.
+
- It can work locally or leverage the greatest LLMs of the moment.
- It can work on your phone or tablet or other custom voice devices.
-Although adding voice to your smart home configuration is exciting, it will require you to check your existing setup of Home Assistant, especially if you made a lot of customization. But we have prepared a guide of steps and best practices to help you out, as well as our [Troubleshooting](/voice_control/troubleshooting/) guides.
+## Getting Started
-Ready? Now let's get started
+When you configure voice assistant hardware made for Home Assistant, it will use a wizard to help you configure your system and get started to use voice.
-- [I plan to use a local speech-to-text/text-to-speech setup](/voice_control/voice_remote_local_assistant/)
+Our recommended voice assistant hardware is the [Home Assistant Voice Preview Edition](/voice-pe/).
+
+In case your hardware does not support our wizard, do not worry. Here are two detailed guides based on how you plan to process your voice (Locally, or using Home Assistant Cloud voice services)
+
+- [I plan to process my voice locally](/voice_control/voice_remote_local_assistant/)
- [I plan to use Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) (recommended as it is the simplest)
## Expand and Experiment
diff --git a/source/voice_control/install_wake_word_add_on.markdown b/source/voice_control/install_wake_word_add_on.markdown
index fe8b3a327c7..593e0a083c9 100644
--- a/source/voice_control/install_wake_word_add_on.markdown
+++ b/source/voice_control/install_wake_word_add_on.markdown
@@ -23,7 +23,7 @@ Enabling a wake word consists of 2 steps:
1. Go to {% my supervisor_addon addon="core_openwakeword" title="**Settings** > **Add-ons** > **openWakeWord**" %} and select **Install**.
2. **Start** the add-on.
3. Go to {% my integrations title="**Settings** > **Devices & Services**" %}.
- - Under **Discovered**, you should now see the **openWakeWord** integration.
+ - Under **Discovered**, you should now see the **openWakeWord** component of the **Wyoming** integration.
- Select **Configure** and **Submit**.
- **Result**: You have successfully installed the openWakeWord add-on and Wyoming integration.
@@ -38,8 +38,10 @@ Enabling a wake word consists of 2 steps:
- If the **Text-to-speech** and **Speech-to-text** sections do not provide language selectors, this means you do not have an Assist pipeline set up.
- Set up [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist pipeline](/voice_control/voice_remote_local_assistant).
5. Under **Text-to-speech**, select the language and voice you want Home Assistant to use when speaking to you.
-6. To define the wake word engine, under **Wake word**, select **openwakeword**.
- - Then, select **ok nabu**.
+6. To define the wake word engine, in the top-right corner of the dialog, select the three dots {% icon "mdi:dots-vertical" %} menu and select **Add streaming wake word**.
+ - **Troubleshooting**: If you don't see the three dots {% icon "mdi:dots-vertical" %} menu, go to {% my integrations title="**Settings** > **Devices & Services**" %} and make sure the **openWakeWord** component of the **Wyoming** integration is added.
+ - **Result**: on the bottom of the page, you now see a new section **Streaming wake word engine**.
+ - Select **openwakeword**, then select **ok nabu**.
- If you created a new assistant, select **Create**.
- If you edited an existing assistant, select **Update**.
- **Result**: You now have a voice assistant that listens to a wake word.
diff --git a/source/voice_control/troubleshooting.markdown b/source/voice_control/troubleshooting.markdown
index 7d316d56117..d87dbbf42ea 100644
--- a/source/voice_control/troubleshooting.markdown
+++ b/source/voice_control/troubleshooting.markdown
@@ -92,6 +92,7 @@ My voice assistant understands me and processes the command, but I don't get a v
The voice response is generated in Home Assistant by one of our supported text-to-speech (or {% term TTS %}) engines.
The voice assistant device then fetches the audio file from Home Assistant and plays it back.
+### Local Network Settings
For this fetching process to work, Home Assistant must communicate its own URL to the device.
If you have a complex network setup, or if you changed this setting in the past, the URL communicated could be wrong.
@@ -103,6 +104,8 @@ To fix the URL, follow these steps:
- For most users, the **Automatic** option works and is recommended.

+### Missing Media Source
+If you are using YAML configuration and do not have `default_config:` make sure `media_source:` is present.
## Tweaking the Assist audio configuration for your device
diff --git a/source/voice_control/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown
index 4c01878a9cf..8861e4a7157 100644
--- a/source/voice_control/voice_remote_local_assistant.markdown
+++ b/source/voice_control/voice_remote_local_assistant.markdown
@@ -30,9 +30,37 @@ In Home Assistant, the Assist pipelines are made up of various components that t
## Some options for speech-to-text and text-to-speech
-There is a speech-to-text and text-to-speech option that runs entirely local. No data is sent to external servers for processing.
+There are speech-to-text and text-to-speech options that run entirely local. No data is sent to external servers for processing.
+
+### Speech-to-text engines
+
+There are currently two options to run speech-to-text locally: **Speech-to-Phrase** and **Whisper**.
+
+#### Speech-to-Phrase
+[Speech-to-Phrase](https://github.com/OHF-voice/speech-to-phrase) is a close-ended speech model.
+
+- It transcribes what it knows.
+- Extremely fast transcription even on a Home Assistant Green or Raspberry Pi 4 (under one second).
+- Only supports a subset of Assist’s voice commands.
+ - More open-ended items such as shopping lists, naming a timer, and broadcasts are *not* usable out of the box.
+- Speech-to-Phrase supports [various languages](https://github.com/OHF-voice/speech-to-phrase?tab=readme-ov-file#supported-languages).
+- These qualities make it a great option for Home control!
+
+#### Whisper
+
+[Whisper](https://github.com/openai/whisper) is an open-ended speech model.
+
+- It will try to transcribe everything.
+- The cost is slower processing speed:
+ - On a Raspberry Pi 4, it takes around 8 seconds to process incoming voice commands.
+ - On an Intel NUC, it is done in under a second.
+- Supports [various languages](https://github.com/openai/whisper#available-models-and-languages).
+- Whisper is only a great option in the following case:
+ 1. You have powerful hardware at home.
+ 2. You plan to extend your voice set-up beyond simple home control. For example, by pairing your assistant with an LLM-based agent.
+
+### Text-to-speech engine
-The speech-to-text option is [Whisper](https://github.com/openai/whisper). It’s an open source AI model that supports [various languages](https://github.com/openai/whisper#available-models-and-languages). We use a forked version called [faster-whisper](https://github.com/SYSTRAN/faster-whisper). On a Raspberry Pi 4, it takes around 8 seconds to process incoming voice commands. On an Intel NUC, it is done in under a second.
For text-to-speech, we have developed [Piper](https://github.com/rhasspy/piper). Piper is a fast, local neural text-to-speech system that sounds great and is optimized for the Raspberry Pi 4. It supports [many languages](https://rhasspy.github.io/piper-samples/). On a Raspberry Pi, using medium quality models, it can generate 1.6s of voice in a second.
Please be sure to check how either option will work in your language, since quality can change quite a bit.
@@ -42,20 +70,15 @@ Please be sure to check how either option will work in your language, since qual
For the quickest way to get your local Assist pipeline started, follow these steps:
1. Install the add-ons to convert text into speech and vice versa.
- - Install the {% my supervisor_addon addon="core_whisper" title="**Whisper**" %} and the {% my supervisor_addon addon="core_piper" title="**Piper**" %} add-ons.
- 
- - If you want to use a wake word, also install the {% my supervisor_addon addon="core_openwakeword" title="**openWakeWord**" %} add-on.
+ - Install the speech-to-text add-on of your choice, either {% my supervisor_addon addon="core_speech-to-phrase" title="**Speech-to-Phrase**" %} or {% my supervisor_addon addon="core_whisper" title="**Whisper**" %}.
+ - Install {% my supervisor_addon addon="core_piper" title="**Piper**" %} for text-to-speech.
- Start the add-ons.
- Once the add-ons are started, head over to the integrations under {% my integrations title="**Settings** > **Devices & Services**" %}.
- - You should now see Piper and Whisper being discovered by the [Wyoming integration](/integrations/wyoming/).
+ - You should now see both services being discovered by the [Wyoming integration](/integrations/wyoming/).

- For each integration, select **Add**.
- - Once the setup is complete, you should see both Piper and Whisper (and, optionally, also openWakeword) in one integration.
-
- 
- - **Whisper** converts speech into text.
- - **Piper** converts text into speech.
- - **Wyoming** is the protocol they are both using to communicate.
+ - You now have integrated a local speech-to-text engine of your choice (either {% my supervisor_addon addon="core_speech-to-phrase" title="**Speech-to-Phrase**" %} or {% my supervisor_addon addon="core_whisper" title="**Whisper**" %}) and a text-to-speech engine ({% my supervisor_addon addon="core_piper" title="**Piper**" %}).
+
2. Setup your assistant.
- Go to {% my voice_assistants title="**Settings** > **Voice assistants**" %} and select **Add assistant**.
@@ -71,13 +94,9 @@ For the quickest way to get your local Assist pipeline started, follow these ste
- Enter a name. You can pick any name that is meaningful to you.
- Select the language that you want to speak.
- Under **Conversation agent**, select **Home Assistant**.
- - Under **Speech-to-text**, select **faster-whisper**. Select the language.
- - Under **Text-to-speech**, select **piper**. Select the language.
+ - Under **Speech-to-text**, select the speech-to-text engine you choose in the previous step (either **Whisper** or **Speech-to-Phrase**). Select the language.
+ - Under **Text-to-speech**, select **Piper**. Select the language.
- Depending on your language, you may be able to select different language variants.
- - If you like, pick one of the predefined wake words.
- 
- - You can even [define your own wake word](/voice_control/create_wake_word/). This is not difficult to do, but you will need to set aside a bit of time for this.
- - Once you defined your own wake word, it will show in this pick list.
3. That's it. You ensured your voice commands can be processed locally on your device.
4. If you haven't done so yet, [expose your devices to Assist](/voice_control/voice_remote_expose_devices/#exposing-your-devices).
@@ -94,6 +113,12 @@ The options are also documented in the add-on itself. Go to the {% my supervisor
Also be sure to check the specific tutorial for [using Piper in Automations](voice_control/using_tts_in_automation/)
+## Learning more about Speech-to-Phrase
+
+You can check out [Voice Chapter 9](/blog/2025/02/13/voice-chapter-9-speech-to-phrase/) to learn more about why we introduced Speech-to-Phrase, and why it's a great option for home control.
+
+
+
## Next steps
Once Assist is configured, now can now start using it. You can now talk through your device ([Android](/voice_control/android/), [iOS](/voice_control/apple/) or [Voice Preview edition](https://voice-pe.home-assistant.io/getting-started/)).