diff --git a/CODEOWNERS b/CODEOWNERS
index 0bef020a6fa..d034a60427a 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -84,7 +84,7 @@ source/_integrations/bge.markdown @tronikos
source/_integrations/binary_sensor.markdown @home-assistant/core
source/_integrations/bizkaibus.markdown @UgaitzEtxebarria
source/_integrations/blebox.markdown @bbx-a @riokuu
-source/_integrations/blink.markdown @fronzbot
+source/_integrations/blink.markdown @fronzbot @mkmer
source/_integrations/bliss_automation.markdown @starkillerOG
source/_integrations/bloc_blinds.markdown @starkillerOG
source/_integrations/bluemaestro.markdown @bdraco
@@ -155,6 +155,7 @@ source/_integrations/deluge.markdown @tkdrob
source/_integrations/demo.markdown @home-assistant/core
source/_integrations/denonavr.markdown @ol-iver @starkillerOG
source/_integrations/derivative.markdown @afaucogney
+source/_integrations/devialet.markdown @fwestenberg
source/_integrations/device_automation.markdown @home-assistant/core
source/_integrations/device_tracker.markdown @home-assistant/core
source/_integrations/devolo_home_control.markdown @2Fake @Shutgun
@@ -183,9 +184,9 @@ source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @an
source/_integrations/dynalite.markdown @ziv1234
source/_integrations/eastron.markdown @DCSBL
source/_integrations/easyenergy.markdown @klaasnicolaas
-source/_integrations/ecobee.markdown @marthoc @marcolivierarsenault
+source/_integrations/ecobee.markdown @marcolivierarsenault
source/_integrations/ecoforest.markdown @pjanuario
-source/_integrations/econet.markdown @vangorra @w1ll1am23
+source/_integrations/econet.markdown @w1ll1am23
source/_integrations/ecovacs.markdown @OverloadUT @mib1185
source/_integrations/ecowitt.markdown @pvizeli
source/_integrations/efergy.markdown @tkdrob
@@ -207,14 +208,12 @@ source/_integrations/energyzero.markdown @klaasnicolaas
source/_integrations/enigma2.markdown @fbradyirl
source/_integrations/enmax.markdown @tronikos
source/_integrations/enocean.markdown @bdurrer
-source/_integrations/enphase_envoy.markdown @bdraco @cgarwood @dgomes @joostlek
+source/_integrations/enphase_envoy.markdown @bdraco @cgarwood @dgomes @joostlek @catsmanac
source/_integrations/entur_public_transport.markdown @hfurubotten
source/_integrations/environment_canada.markdown @gwww @michaeldavie
-source/_integrations/envisalink.markdown @ufodone
source/_integrations/ephember.markdown @ttroy50
source/_integrations/epson.markdown @pszafer
source/_integrations/epsonworkforce.markdown @ThaStealth
-source/_integrations/eq3btsmart.markdown @rytilahti
source/_integrations/escea.markdown @lazdavila
source/_integrations/esera_onewire.markdown @garbled1 @epenet
source/_integrations/esphome.markdown @OttoWinter @jesserockz @kbx81 @bdraco
@@ -226,7 +225,7 @@ source/_integrations/evohome.markdown @zxdavb
source/_integrations/ezviz.markdown @RenierM26 @baqs
source/_integrations/faa_delays.markdown @ntilley905
source/_integrations/fan.markdown @home-assistant/core
-source/_integrations/fastdotcom.markdown @rohankapoorcom
+source/_integrations/fastdotcom.markdown @rohankapoorcom @erwindouna
source/_integrations/fibaro.markdown @rappenze
source/_integrations/file.markdown @fabaff
source/_integrations/file_upload.markdown @home-assistant/core
@@ -290,7 +289,6 @@ source/_integrations/gpsd.markdown @fabaff
source/_integrations/gree.markdown @cmroche
source/_integrations/greeneye_monitor.markdown @jkeljo
source/_integrations/group.markdown @home-assistant/core
-source/_integrations/growatt_server.markdown @muppet3000
source/_integrations/guardian.markdown @bachya
source/_integrations/habitica.markdown @ASMfreaK @leikoilja
source/_integrations/hardware.markdown @home-assistant/core
@@ -387,6 +385,7 @@ source/_integrations/kitchen_sink.markdown @home-assistant/core
source/_integrations/kmtronic.markdown @dgomes
source/_integrations/knx.markdown @Julius2342 @farmio @marvin-w
source/_integrations/kodi.markdown @OnFreund
+source/_integrations/komfovent.markdown @ProstoSanja
source/_integrations/konnected.markdown @heythisisnate
source/_integrations/kostal_plenticore.markdown @stegm
source/_integrations/kraken.markdown @eifinger
@@ -407,6 +406,7 @@ source/_integrations/lg_netcast.markdown @Drafteed
source/_integrations/lidarr.markdown @tkdrob
source/_integrations/life360.markdown @pnbruckner
source/_integrations/light.markdown @home-assistant/core
+source/_integrations/linear_garage_door.markdown @IceBotYT
source/_integrations/linux_battery.markdown @fabaff
source/_integrations/litejet.markdown @joncar
source/_integrations/litterrobot.markdown @natekspencer @tkdrob
@@ -471,7 +471,7 @@ source/_integrations/msteams.markdown @peroyvind
source/_integrations/mullvad.markdown @meichthys
source/_integrations/mutesync.markdown @currentoor
source/_integrations/my.markdown @home-assistant/core
-source/_integrations/mypermobil @IsakNyberg
+source/_integrations/mypermobil.markdown @IsakNyberg
source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer
source/_integrations/mystrom.markdown @fabaff
source/_integrations/nam.markdown @bieniu
@@ -538,6 +538,7 @@ source/_integrations/oralb.markdown @bdraco @Lash-L
source/_integrations/oru.markdown @bvlaicu
source/_integrations/oru_opower.markdown @tronikos
source/_integrations/otbr.markdown @home-assistant/core
+source/_integrations/ourgroceries.markdown @OnFreund
source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne @nyroDev
source/_integrations/ovo_energy.markdown @timmo001
source/_integrations/p1_monitor.markdown @klaasnicolaas
@@ -569,6 +570,7 @@ source/_integrations/profiler.markdown @bdraco
source/_integrations/progettihwsw.markdown @ardaseremet
source/_integrations/prometheus.markdown @knyar
source/_integrations/prosegur.markdown @dgomes
+source/_integrations/proximity.markdown @mib1185
source/_integrations/proxmoxve.markdown @jhollowe @Corbeno
source/_integrations/prusalink.markdown @balloob
source/_integrations/ps4.markdown @ktnrg45
@@ -610,12 +612,13 @@ source/_integrations/renault.markdown @epenet
source/_integrations/renson.markdown @jimmyd-be
source/_integrations/reolink.markdown @starkillerOG
source/_integrations/repairs.markdown @home-assistant/core
-source/_integrations/repetier.markdown @MTrab @ShadowBr0ther
+source/_integrations/repetier.markdown @ShadowBr0ther
source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev
source/_integrations/rflink.markdown @javicalle
source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221
source/_integrations/rhasspy.markdown @balloob @synesthesiam
source/_integrations/ridwell.markdown @bachya
+source/_integrations/ring.markdown @sdb9696
source/_integrations/risco.markdown @OnFreund
source/_integrations/rituals_perfume_genie.markdown @milanmeu @frenck
source/_integrations/rmvtransport.markdown @cgtobi
@@ -716,7 +719,7 @@ source/_integrations/stiebel_eltron.markdown @fucm
source/_integrations/stookalert.markdown @fwestenberg @frenck
source/_integrations/stookwijzer.markdown @fwestenberg
source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter
-source/_integrations/stt.markdown @home-assistant/core @pvizeli
+source/_integrations/stt.markdown @home-assistant/core
source/_integrations/subaru.markdown @G-Two
source/_integrations/suez_water.markdown @ooii
source/_integrations/sun.markdown @Swamp-Ig
@@ -766,7 +769,7 @@ source/_integrations/todoist.markdown @boralyl
source/_integrations/tolo.markdown @MatthiasLohr
source/_integrations/tomorrowio.markdown @raman325 @lymanepp
source/_integrations/totalconnect.markdown @austinmroczek
-source/_integrations/tplink.markdown @rytilahti @thegardenmonkey
+source/_integrations/tplink.markdown @rytilahti @thegardenmonkey @bdraco
source/_integrations/tplink_omada.markdown @MarkGodwin
source/_integrations/traccar.markdown @ludeeus
source/_integrations/tractive.markdown @Danielhiversen @zhulik @bieniu
@@ -776,7 +779,7 @@ source/_integrations/trafikverket_train.markdown @gjohansson-ST
source/_integrations/trafikverket_weatherstation.markdown @gjohansson-ST
source/_integrations/transmission.markdown @engrbm87 @JPHutchins
source/_integrations/trend.markdown @jpbede
-source/_integrations/tts.markdown @home-assistant/core @pvizeli
+source/_integrations/tts.markdown @home-assistant/core
source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck
source/_integrations/twentemilieu.markdown @frenck
source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 @Olen
@@ -797,16 +800,17 @@ source/_integrations/uptimerobot.markdown @ludeeus @chemelli74
source/_integrations/usb.markdown @bdraco
source/_integrations/usgs_earthquakes_feed.markdown @exxamalte
source/_integrations/utility_meter.markdown @dgomes
+source/_integrations/v2c.markdown @dgomes
source/_integrations/vacuum.markdown @home-assistant/core
source/_integrations/vallox.markdown @andre-richter @slovdahl @viiru-
source/_integrations/velbus.markdown @Cereal2nd @brefra
source/_integrations/velux.markdown @Julius2342
source/_integrations/venstar.markdown @garbled1 @jhollowe
-source/_integrations/verisure.markdown @frenck
source/_integrations/vermont_castings.markdown @jeeftor
source/_integrations/versasense.markdown @imstevenxyz
source/_integrations/version.markdown @ludeeus
source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey
+source/_integrations/vicare.markdown @CFenner
source/_integrations/vilfo.markdown @ManneW
source/_integrations/vivotek.markdown @HarlemSquirrel
source/_integrations/vizio.markdown @raman325
@@ -869,7 +873,7 @@ source/_integrations/zengge.markdown @emontnemery
source/_integrations/zeroconf.markdown @bdraco
source/_integrations/zerproc.markdown @emlove
source/_integrations/zeversolar.markdown @kvanzuijlen
-source/_integrations/zha.markdown @dmulcahey @adminiuga @puddly
+source/_integrations/zha.markdown @dmulcahey @adminiuga @puddly @TheJulianJES
source/_integrations/zodiac.markdown @JulienTant
source/_integrations/zone.markdown @home-assistant/core
source/_integrations/zoneminder.markdown @rohankapoorcom
diff --git a/_config.yml b/_config.yml
index f2e57eee1b8..b4eb79256c6 100644
--- a/_config.yml
+++ b/_config.yml
@@ -109,9 +109,9 @@ social:
# Home Assistant release details
current_major_version: 2023
-current_minor_version: 11
-current_patch_version: 3
-date_released: 2023-11-22
+current_minor_version: 12
+current_patch_version: 0
+date_released: 2023-12-06
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml
index f492dab06ed..15436a4a85a 100644
--- a/source/_data/glossary.yml
+++ b/source/_data/glossary.yml
@@ -126,6 +126,8 @@
excerpt: >
Each integration in Home Assistant has a unique identifier: The domain.
It is often shown as the first part (before the dot) of entity IDs.
+ aliases:
+ - domains
- term: Entity
definition: |-
An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. Entities have states.
@@ -159,6 +161,8 @@
definition: >-
Groups are a way to organize your entities into a single unit.
link: /integrations/group/
+ aliases:
+ - groups
- term: HASS
definition: >-
HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for
@@ -255,10 +259,14 @@
definition: >-
You can use notifications to send messages, pictures, and more, to devices.
link: /integrations/#notifications
-- term: Packages
+ aliases:
+ - notifications
+- term: Package
definition: >
Packages allow you to bundle different component configurations together.
link: /docs/configuration/packages/
+ aliases:
+ - packages
- term: Platform
definition: >-
Platforms are building blocks provided by some integrations to be used by
@@ -270,6 +278,8 @@
Platforms are building blocks provided by some integrations to be used by
other integrations.
link: /docs/configuration/platform_options/
+ aliases:
+ - platforms
- term: Reload
definition: >-
Applies the changes made to the Home Assistant configuration files. Changes
@@ -306,7 +316,7 @@
link: /integrations/sensor/
aliases:
- sensors
-- term: Selectors
+- term: Selector
definition: >-
Selectors are components for the user interface. Some selectors can,
for example, show a toggle button to turn something on or off, while another
@@ -316,6 +326,8 @@
Selectors are components for the user interface. Like toggle, dropdown,
and more.
link: /docs/blueprint/selectors/
+ aliases:
+ - selectors
- term: Service
definition: |-
The term service has 2 meanings in Home Assistant:
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index 574196db954..791294ae44b 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -115,7 +115,7 @@ Not supported in [limited templates](#limited-templates).
- `states.sensor.temperature` returns the state object for `sensor.temperature` (avoid when possible, see note below).
- `states` can also be used as a function, `states(entity_id, rounded=False, with_unit=False)`, which returns the state string (not the state object) of the given entity, `unknown` if it doesn't exist, and `unavailable` if the object exists but is not available.
- The optional arguments `rounded` and `with_unit` control the formatting of sensor state strings, please see the [examples](#formatting-sensor-states) below.
-- `states.sensor.temperature.state_with_unit` formats the state string in the same was is if calling `states('sensor.temperature', rounded=True, with_unit=True)`.
+- `states.sensor.temperature.state_with_unit` formats the state string in the same way as if calling `states('sensor.temperature', rounded=True, with_unit=True)`.
- `is_state` compares an entity's state with a specified state or list of states and returns `True` or `False`. `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state. `is_state('device_tracker.paulus', ['home', 'work'])` will test if the given entity is any of the states in the list.
- `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist.
- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions).
diff --git a/source/_docs/energy/battery.markdown b/source/_docs/energy/battery.markdown
index 986a041dc17..06a03199132 100644
--- a/source/_docs/energy/battery.markdown
+++ b/source/_docs/energy/battery.markdown
@@ -17,12 +17,4 @@ Some battery vendors have an API to integrate the data into your Home Assistant
### Using a CT clamp sensor
-CT clamp sensors measure your energy usage by looking at the current passing through an electrical wire. This makes it possible to calculate the energy usage. In Home Assistant we have support for off-the-shelf CT clamp sensors and you can build your own.
-
-The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/en/products/shop/shelly-em-120a/shelly-em-50a?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
-
-You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started.
-
-_Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring. Your qualified installer will know how to do this._
-
-_Disclaimer: Some links on this page are affiliate links._
+{% include energy/ct_clamp.md %}
diff --git a/source/_docs/energy/electricity-grid.markdown b/source/_docs/energy/electricity-grid.markdown
index c82d03a3e69..22639959080 100644
--- a/source/_docs/energy/electricity-grid.markdown
+++ b/source/_docs/energy/electricity-grid.markdown
@@ -63,13 +63,7 @@ In countries like Germany, SML (Smart Message Language) is used typically. ESPHo
### Using a CT clamp sensor
-CT clamp sensors measure your energy usage by looking at the current passing through an electrical wire. This makes it possible to calculate the energy usage. In Home Assistant we have support for off-the-shelf CT clamp sensors and you can build your own.
-
-The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/en/products/shop/shelly-em-120a/shelly-em-50a?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
-
-You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html) or [PZEM-004T V3](https://esphome.io/components/sensor/pzemac.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started.
-
-_Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring. Your qualified installer will know how to do this._
+{% include energy/ct_clamp.md %}
### Data provided by your energy provider
diff --git a/source/_docs/energy/solar-panels.markdown b/source/_docs/energy/solar-panels.markdown
index c5c39112eaf..0c9d1545a26 100644
--- a/source/_docs/energy/solar-panels.markdown
+++ b/source/_docs/energy/solar-panels.markdown
@@ -15,15 +15,7 @@ Home Assistant will need to know the amount of energy that is being produced. Th
### Using a CT clamp sensor
-CT clamp sensors measure the instantaneous current passing through an electrical wire. To translate this into electrical power (W) you also need a voltage measurement, because Power = Current x Voltage.
-
-In Home Assistant we have support for off-the-shelf CT clamp sensors and you can build your own with ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html).
-
-The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/en/products/shop/shelly-em-120a/shelly-em-50a?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
-
-_Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring. Your qualified installer will know how to do this._
-
-_Disclaimer: Some links on this page are affiliate links._
+{% include energy/ct_clamp.md %}
### Connecting to your inverter
diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown
index edcf56f9401..14b849223f5 100644
--- a/source/_docs/z-wave/controllers.markdown
+++ b/source/_docs/z-wave/controllers.markdown
@@ -45,6 +45,7 @@ Users should upgrade the firmware on all 700 series controllers to version 7.17.
- Z-Wave.Me RaZberry 7 (ZME_RAZBERRY7, 700 series)
- Z-Wave.Me RaZberry 7 Pro (ZMEERAZBERRY7_PRO or ZMEURAZBERRY7_PRO, 700 series)
- Z-Wave.Me Razberry 2 (500 series)
+ - Z-Wave.Me Razberry 1 (300 series)
If you are just starting out, we recommend that you purchase a 700 series controller or a Raspberry Pi module. The 700 series controllers are the more recent version (when compared to the 500 series). The 700 series controllers support SmartStart, which allows you to add a device by scanning a QR code.
diff --git a/source/_includes/energy/ct_clamp.md b/source/_includes/energy/ct_clamp.md
new file mode 100644
index 00000000000..5eb0f2919f4
--- /dev/null
+++ b/source/_includes/energy/ct_clamp.md
@@ -0,0 +1,8 @@
+Current transformer (CT) clamp sensors measure your energy usage by looking at the current passing through an electrical wire. This makes it possible to calculate the energy usage. In Home Assistant we have support for off-the-shelf CT clamp sensors or you can build your own.
+
+- The off-the-shelf solution that we advise is the [Shelly EM](https://www.shelly.com/en/products/shop/shelly-em-120a/shelly-em-50a?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality [integration](/integrations/shelly/).
+- You can build your own using ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html) or energy meter sensors like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html). For the DIY route, check out [this video by digiblur](https://www.youtube.com/watch?v=n2XZzciz0s4) to get started.
+
+_Attention! Installing CT clamp sensor devices requires opening your electrical cabinet. This work should be done by someone familiar with electrical wiring and may require a licensed professional in some regions. Your qualified installer will know how to do this._
+
+_Disclaimer: Some links in this section are affiliate links._
\ No newline at end of file
diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md
index baa9f24338a..b3f7c2aadb9 100644
--- a/source/_includes/installation/operating_system.md
+++ b/source/_includes/installation/operating_system.md
@@ -6,7 +6,7 @@
Follow this guide if you want to get started with Home Assistant easily or if you have little to no Linux experience.
-{% if page.installation_type == 'ODROID' %}
+{% if page.installation_type == 'odroid' %}
## Suggested hardware
@@ -161,7 +161,7 @@ Use this method only if Method 1 does not work for you.
- This means you will lose all the data as well as the previously installed operating system.
- Back up your data before continuing with the next step.
2. Attach the Home Assistant boot medium ({{site.installation.types[page.installation_type].installation_media}}) to your computer.
- {% if page.installation_type == 'ODROID' %}
+ {% if page.installation_type == 'odroid' %}
If you are using ODROID M1, note that booting from NVMe is not supported. If you want to boot from eMMC, [update the firmware](https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/hardkernel/odroid-m1.md) before installing the image.
If you are using a [Home Assistant Blue](/blue) or ODROID N2+, you can [attach your device directly](/common-tasks/os/#flashing-an-odroid-n2).
@@ -265,14 +265,14 @@ If you are running an older Windows version or have a stricter network configura
### Download the appropriate image
- [VirtualBox][vdi] (.vdi)
-{% if page.installation_type == 'windows' or page.installation_type == 'Linux' %}
+{% if page.installation_type == 'linux' %}
- [KVM][qcow2] (.qcow2)
-- [Vmware Workstation][vmdk] (.vmdk)
{% elsif page.installation_type == 'alternative' %}
- [KVM/Proxmox][qcow2] (.qcow2)
- [VMware ESXi/vSphere][Virtual Appliance] (.ova)
{% endif %}
{% if page.installation_type == 'windows' %}
+- [VMware Workstation][vmdk] (.vmdk)
- [Hyper-V][vhdx] (.vhdx)
{% endif %}
@@ -280,7 +280,7 @@ After downloading, decompress the image. If the image comes in a ZIP file, for e
Follow this guide if you already are running a supported virtual machine hypervisor. If you are not familiar with virtual machines, install Home Assistant OS directly on a [Home Assistant Yellow](/installation/yellow), a [Raspberry Pi](/installation/raspberrypi), or an [ODROID](/installation/odroid).
-{% if page.installation_type == 'macOS' %}
+{% if page.installation_type == 'macos' %}
- If VirtualBox is not supported on your Mac, and you have experience using virtual machines, you can try running the Home Assistant Operating System on [UTM](https://mac.getutm.app/).
{% endif %}
@@ -305,14 +305,15 @@ Minimum recommended assignments:
content: |
1. Create a new virtual machine.
2. Select type **Linux** and version **Linux 2.6 / 3.x / 4.x (64-bit)**.
- 3. Select **Use an existing virtual hard disk file**, select the unzipped VDI file from above.
- 4. Edit the **Settings** of the VM and go to **System** > **Motherboard**. Select **Enable EFI**.
+ 3. Under **Hardware**, select the amount of memory and number of CPUs. Then, select **Enable EFI**.
+ - Make sure **EFI** is enabled. If EFI is not enabled, HAOS won't boot.
+ 4. Under **Hard Disk**, select **Use an existing virtual hard disk file**, select the unzipped VDI file from above.
5. Then go to **Network** > **Adapter 1**. Choose **Bridged Adapter** and choose your network adapter.
Please keep in mind that the bridged adapter only functions over a hardwired Ethernet connection.
Using Wi-Fi on your VirtualBox host is unsupported.
- 6. Then go to **Audio** and choose **Intel HD Audio** as audio controller.
+ 6. Then go to Audio and choose Intel HD Audio as audio controller.
By default, VirtualBox does not free up unused disk space. To automatically shrink the vdi disk image
@@ -326,6 +327,8 @@ Minimum recommended assignments:
+{% unless page.installation_type == 'macos' %}
+
- title: Unraid
content: |
1. Download the **.qcow2** image above and decompress it. (**Extract all** in Windows)
@@ -344,8 +347,6 @@ Minimum recommended assignments:
14. Select the name of your new VM and select the capacity number for your disk. Here, you can expand the disk to whatever your needs are. The default is 32 GB.
15. Select the icon of your new VM and select **start with console (VNC)**.
-{% unless page.installation_type == 'macOS' %}
-
- title: KVM (virt-manager)
content: |
1. Create a new virtual machine in `virt-manager`.
@@ -393,17 +394,42 @@ Minimum recommended assignments:
{% endunless %}
-{% if page.installation_type == 'windows' or page.installation_type == 'Linux' %}
+{% if page.installation_type == 'windows' %}
-- title: Vmware Workstation
+- title: VMware Workstation
content: |
- 1. Create a new virtual machine.
- 2. Select **Custom**, make it compatible with the default of Workstation and ESX.
- 3. Choose **I will install the operating system later**, select **Linux** > **Other Linux 5.x or later kernel 64-bit**.
- 4. Select **Use Bridged Networking**.
- 5. Select **Use an existing virtual disk** and select the VMDK file above.
+ 1. Start VMware Workstation and select **Create a New Virtual Machine**.
+ - Note: the exact name and location of the settings below depend on the VMware version. This procedure is based on version 17.
+ 2. Select **I will install the operating system later**, then select **Linux** > **Other Linux 5.x kernel 64-bit**.
+ 3. Give the VM a name, `home-assistant`, and define an easy to reach storage location, such as `C:\home-assistant`.
+ 4. Specify the disk size and select **Store virtual disk as a single file**.
+ 5. Select **Customize Hardware**.
+ 6. Define the amount of memory and the number of cores the VM is allowed to use.
+ 7. Remove the **New CD/DVD** entry. It will not be used.
+ 8. Connect an Ethernet cable and make sure it is connected to your network.
+ 9. Under **Network adapter**, select **Bridged: Connected directly to the physical network**.
+ - Make sure **Replicate physical network connection state** is not selected.
+ - Select **Configure Adapters**.
+ - Make sure all virtual adapters and Bluetooth devices are deselected.
+ - Select your host network adapter. Most likely, this is one of the first 2 checkboxes in the list:
+ - Select the one for Ethernet.
+ - The exact names of these adapters depend on your hardware.
+ 10. At the end of the wizard, select **Finish**.
+
+ ## Edit the VM settings
+
+ 11. In Windows Explorer, navigate to the storage location of your newly created VM, for example under `C:\home-assistant`.
+ 12. Delete the `home-assistant.vmdk` file.
+ 3. In the `Downloads` folder, find the `haos_ova_xx.x.vmdk` file.
+ - If you haven't unzipped the archive, unzip it.
+ - Within the folder, find the `.vmdk` file and rename it to `home-assistant.vmdk`.
+ - Paste the file (not the unzipped folder) into the `C:\home-assistant` folder.
+ 4. Right-click the `.vmx` file and select **Open with** > **Notepad**.
+ 5. Under `.encoding`, add a line. Enter `firmware = "efi"`.
+ 6. Now continue with the next step to start your VM.
+ - If you see a message about side channel mitigations, select **OK**.
+ - If you see a message stating that the `.vmdk` file could not be found, in step 3, you likely pasted the folder, not the file. Repeat step 3.
- After the VM has been created, go to **Settings** > **Options** > **Advanced**. Under **Firmware type** select **UEFI**.
{% elsif page.installation_type == 'alternative' %}
diff --git a/source/_includes/integrations/google_client_secret.md b/source/_includes/integrations/google_client_secret.md
index 71daa330a5d..5e5bf5b0303 100644
--- a/source/_includes/integrations/google_client_secret.md
+++ b/source/_includes/integrations/google_client_secret.md
@@ -49,6 +49,6 @@ This section explains how to generate a client ID and client secret on
- Once you have noted these strings, select **OK**.
- If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**.
- To view both the **Client ID** and **Client secret**, select the pencil icon. This will take you to the settings page for these credentials, and the information will be on the right-hand side of the page.
-16. Congratulations! You are now the keeper of a client secret. Guard it in your treasure box.
+16. Congratulations! You are now the keeper of a client secret. Guard it in your treasure box. In most cases your new credentials will be active within a few moments. However, Google states that activation may take up to five hours in some circumstances.
{% enddetails %}
diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown
index 2429faf9e48..1507a7f14cc 100644
--- a/source/_integrations/abode.markdown
+++ b/source/_integrations/abode.markdown
@@ -30,7 +30,7 @@ ha_platforms:
ha_integration_type: integration
---
-The **Abode** {% term integration %} will allow users to integrate their Abode Home Security systems into Home Assistant and use its alarm system and sensors to automate their homes.
+The **Abode** {% term integration %} allows you to integrate your Abode Home Security systems into Home Assistant and use its alarm system and sensors to trigger automations.
Please visit the [Abode website](https://goabode.com/) for further information about Abode Security.
diff --git a/source/_integrations/acmeda.markdown b/source/_integrations/acmeda.markdown
index f4c9e365720..821db1bf53f 100644
--- a/source/_integrations/acmeda.markdown
+++ b/source/_integrations/acmeda.markdown
@@ -34,5 +34,5 @@ If the IP address for the hub changes, you will need to re-register it with Home
The integration has the following limitations:
-- covers with position as well as tilt are not supported.
-- the integration doesn't make use of rooms and scenes configured in the hub, use the equivalent functionality in Home Assistant instead.
+- Covers with position as well as tilt are not supported.
+- The integration doesn't make use of rooms and scenes configured in the hub, use the equivalent functionality in Home Assistant instead.
diff --git a/source/_integrations/actiontec.markdown b/source/_integrations/actiontec.markdown
index 3db8925a0fc..e916c02befc 100644
--- a/source/_integrations/actiontec.markdown
+++ b/source/_integrations/actiontec.markdown
@@ -11,7 +11,7 @@ ha_platforms:
ha_integration_type: integration
---
-The **Actiontec** {% term integration %} allows you to detect presence by looking at connected devices to an [Actiontec](https://www.actiontec.com/) device.
+The **Actiontec** {% term integration %} allows you to detect presence by looking at devices connected to an [Actiontec](https://www.actiontec.com/) device.
Supported devices (tested):
diff --git a/source/_integrations/adax.markdown b/source/_integrations/adax.markdown
index 7bac67e956c..35d3ee3a7c2 100644
--- a/source/_integrations/adax.markdown
+++ b/source/_integrations/adax.markdown
@@ -14,13 +14,21 @@ ha_platforms:
ha_integration_type: integration
---
-The **Adax** {% term integration %} integrates Adax heater into Home Assistant.
+The **Adax** {% term integration %} integrates Adax heaters into Home Assistant and can be configured to use a local or cloud interface.
-You can configure the heaters to use a local or cloud interface.
+## Local integration
-The local integrations only works with newer Adax heaters with both Bluetooth and wifi. Home Assistant uses Bluetooth LE to configure the heaters, this means your machine running “Home Assistant” needs to have a Bluetooth adapter and the heater needs to be in range during setup. For the local integration, you have to reset the heater by pressing + and OK until the display shows 'Reset'. Then press and hold the OK button on the heater until the blue LED starts blinking before pressing Submit. Configuring the heater might take some minutes. Using the local integration will disable cloud communication and the Adax app will not work.
+The local integration only works with newer Adax heaters with both Bluetooth and Wi-Fi. Home Assistant uses Bluetooth LE to configure the heaters, this means the machine _running_ Home Assistant needs to have a Bluetooth adapter and the heater needs to be in range during setup. Using local control will disable cloud communication and the Adax app will not work.
-For the cloud integration, you'll need the Account ID (which can be found in the Adax Wifi app, pressing 'Account'. Which you will find as a number between the "log out" and "close account" buttons).
+1. Reset the heater by pressing **+** and **OK** until the display shows **Reset**.
+2. Press and hold the **OK** button on the heater until the blue LED starts blinking.
+3. Press **Submit**.
+
+This process may take several minutes.
+
+## Cloud integration
+
+For the cloud integration, you'll need your Account ID. This can be found in the Adax WiFi app by pressing **Account**. The ID will be shown as a number between the **log out** and **close account** buttons.
You will also need a credential, which you can create in the Adax app:
diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown
index 982ce5280d5..6919048433f 100644
--- a/source/_integrations/adguard.markdown
+++ b/source/_integrations/adguard.markdown
@@ -17,9 +17,9 @@ ha_platforms:
ha_integration_type: service
---
-AdGuard Home is a network-wide ad- and tracker-blocking DNS server with parental
-control (adult content blocking) capabilities. The **AdGuard** integration allows
-you to control and monitor your AdGuard Home instance in Home Assistant.
+AdGuard Home is a network-wide DNS server that supports ad, tracker,
+and adult content blocking. The **AdGuard** integration allows you to control and
+monitor your AdGuard Home instance in Home Assistant.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/agent_dvr.markdown b/source/_integrations/agent_dvr.markdown
index 2661385a858..0604a98c4d2 100644
--- a/source/_integrations/agent_dvr.markdown
+++ b/source/_integrations/agent_dvr.markdown
@@ -16,7 +16,7 @@ ha_platforms:
ha_integration_type: integration
---
-[Agent DVR](https://www.ispyconnect.com/download.aspx/) is a free* software DVR solution for windows 10, Mac and Linux. Agent DVR runs as a service or console application and can access and control a huge range of third party cameras with advanced motion detection, including DeepStack integration for object recognition. The iSpyConnect website provides secured (SSL) remote access without port forwarding needed.
+[Agent DVR](https://www.ispyconnect.com/download.aspx/) is a free* software DVR solution for Windows 10, Mac and Linux. Agent DVR runs as a service or console application and can access and control a huge range of third party cameras with advanced motion detection, including DeepStack integration for object recognition. The iSpyConnect website provides secured (SSL) remote access without port forwarding needed.
You can add Agent DVR via integrations using the IP address and port of the server, e.g.,: `http://192.168.1.3:8090/`.
@@ -63,7 +63,7 @@ Service data attribute | Optional | Description
-|-|-
`entity_id` | no | Name(s) of entities, e.g., `camera.living_room_camera`.
-## IFrame
+## Iframe
- Using the Webpage Card you can embed the Agent DVR viewer directly in Home Assistant. Just point it to
diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown
index 2733e4cb7a5..41c8821fc21 100644
--- a/source/_integrations/alert.markdown
+++ b/source/_integrations/alert.markdown
@@ -32,7 +32,7 @@ State | Description
### Basic example
The `alert` integration makes use of any of the `notification` integrations. To
-setup the `alert` integration, first, you must setup a `notification` integration.
+setup the `alert` integration, first, you must set up a [notification integration](/integrations/#notifications).
Then, add the following to your configuration file:
```yaml
diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown
index da69c54853a..722ff93b33a 100644
--- a/source/_integrations/apcupsd.markdown
+++ b/source/_integrations/apcupsd.markdown
@@ -15,6 +15,7 @@ ha_platforms:
- binary_sensor
- sensor
ha_integration_type: integration
+ha_quality_scale: silver
---
[apcupsd](http://www.apcupsd.org/) status information can be integrated into Home Assistant when the Network Information Server (NIS) [is configured](http://www.apcupsd.org/manual/manual.html#nis-server-client-configuration-using-the-net-driver) on the APC device.
diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown
index 9b657aa9214..71211479769 100644
--- a/source/_integrations/blink.markdown
+++ b/source/_integrations/blink.markdown
@@ -11,13 +11,16 @@ ha_release: '0.40'
ha_iot_class: Cloud Polling
ha_codeowners:
- '@fronzbot'
+ - '@mkmer'
ha_domain: blink
ha_config_flow: true
ha_platforms:
- alarm_control_panel
- binary_sensor
- camera
+ - diagnostics
- sensor
+ - switch
ha_dhcp: true
ha_integration_type: integration
---
diff --git a/source/_integrations/brandt.markdown b/source/_integrations/brandt.markdown
index 039ff5c6386..b70781dba27 100644
--- a/source/_integrations/brandt.markdown
+++ b/source/_integrations/brandt.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown
index 30f80f575f7..9b42213f718 100644
--- a/source/_integrations/broadlink.markdown
+++ b/source/_integrations/broadlink.markdown
@@ -17,6 +17,7 @@ ha_codeowners:
ha_domain: broadlink
ha_config_flow: true
ha_platforms:
+ - climate
- light
- remote
- sensor
diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown
index 3a889b1a119..e71b85de055 100644
--- a/source/_integrations/caldav.markdown
+++ b/source/_integrations/caldav.markdown
@@ -11,6 +11,7 @@ ha_platforms:
- calendar
- todo
ha_integration_type: integration
+ha_config_flow: true
---
The CalDAV integration allows you to connect your WebDAV calendar to Home Assistant
@@ -196,4 +197,4 @@ You may be required to use [app specific passwords](https://support.apple.com/en
to generate a new password for use by Home Assistant to avoid sharing your iCloud account
password.
-{% enddetails %}
\ No newline at end of file
+{% enddetails %}
diff --git a/source/_integrations/cozytouch.markdown b/source/_integrations/cozytouch.markdown
index 3df1696c140..d057a1905de 100644
--- a/source/_integrations/cozytouch.markdown
+++ b/source/_integrations/cozytouch.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown
index 34e9ee24ef6..15767eac74f 100644
--- a/source/_integrations/cups.markdown
+++ b/source/_integrations/cups.markdown
@@ -13,7 +13,7 @@ ha_platforms:
ha_integration_type: integration
---
-The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the information using a CUPS server or communicating directly with the printer with the Internet Printing Protocol.
+The `cups` sensor platform uses the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the information using a CUPS server or by communicating directly with the printer with the Internet Printing Protocol.
## Setup
@@ -40,7 +40,7 @@ sensor:
{% configuration %}
printers:
- description: List of printers to add. If you're not using a CUPS server, add here your "Printer Name".
+ description: List of printers to add. If you're not using a CUPS server, add your "Printer Name" here.
required: true
type: list
host:
@@ -73,9 +73,3 @@ sensor:
printers:
- ipp/print
```
-
-
-
-You will need to install the `python3-dev` or `python3-devel` and the development files for CUPS (`libcups2-dev` or`cups-devel`) package on your system manually (eg. `sudo apt-get install python3-dev libcups2-dev` or `sudo dnf -y install python3-devel cups-devel`) along with a compiler (`gcc`).
-
-
diff --git a/source/_integrations/debugpy.markdown b/source/_integrations/debugpy.markdown
index 96b71089ce0..26b811c2c79 100644
--- a/source/_integrations/debugpy.markdown
+++ b/source/_integrations/debugpy.markdown
@@ -1,5 +1,5 @@
---
-title: Remote Python debugger
+title: Remote Python Debugger
description: Remote Python debugger (debugpy) for Visual Studio Code
ha_category:
- Utility
diff --git a/source/_integrations/decora_wifi.markdown b/source/_integrations/decora_wifi.markdown
index 50abc84bc18..7b9e20e6a15 100644
--- a/source/_integrations/decora_wifi.markdown
+++ b/source/_integrations/decora_wifi.markdown
@@ -40,4 +40,3 @@ password:
required: true
type: string
{% endconfiguration %}
-
diff --git a/source/_integrations/devialet.markdown b/source/_integrations/devialet.markdown
index 55a9cbdd6a1..077ee62441e 100644
--- a/source/_integrations/devialet.markdown
+++ b/source/_integrations/devialet.markdown
@@ -8,12 +8,12 @@ ha_iot_class: Local Polling
ha_config_flow: true
ha_domain: devialet
ha_codeowners:
- - '@westenbergf'
-ha_zeroconf:
+ - '@fwestenberg'
+ha_zeroconf: true
+ha_integration_type: device
+ha_platforms:
- diagnostics
- media_player
-ha_zeroconf: true
-ha_integration_type: integration
---
The **Devialet** integration lets you control your [Devialet](https://www.devialet.com) wireless speakers from Home Assistant.
diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown
index ce7aaefcf18..ba7c19bc3bc 100644
--- a/source/_integrations/dwd_weather_warnings.markdown
+++ b/source/_integrations/dwd_weather_warnings.markdown
@@ -13,7 +13,7 @@ ha_codeowners:
- '@andarotajo'
ha_platforms:
- sensor
-ha_integration_type: integration
+ha_integration_type: service
---
The **Deutscher Wetterdienst Weather Warnings** {% term integration %} uses the [Deutscher Wetterdienst (DWD)](https://www.dwd.de) as a source for current and advance weather warnings. The configured sensor checks for data every 15 minutes.
diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown
index 4accedf96bb..9d5cd2ef4ee 100644
--- a/source/_integrations/ecobee.markdown
+++ b/source/_integrations/ecobee.markdown
@@ -14,7 +14,6 @@ ha_release: 0.9
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - '@marthoc'
- '@marcolivierarsenault'
ha_domain: ecobee
ha_platforms:
diff --git a/source/_integrations/econet.markdown b/source/_integrations/econet.markdown
index 6307339546d..f036a5c0a76 100644
--- a/source/_integrations/econet.markdown
+++ b/source/_integrations/econet.markdown
@@ -10,7 +10,6 @@ ha_release: 0.61
ha_iot_class: Cloud Push
ha_domain: econet
ha_codeowners:
- - '@vangorra'
- '@w1ll1am23'
ha_config_flow: true
ha_platforms:
diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown
index 51ff02646d0..5a3556bb38d 100644
--- a/source/_integrations/enphase_envoy.markdown
+++ b/source/_integrations/enphase_envoy.markdown
@@ -13,6 +13,7 @@ ha_codeowners:
- '@cgarwood'
- '@dgomes'
- '@joostlek'
+ - '@catsmanac'
ha_platforms:
- binary_sensor
- diagnostics
diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown
index b216a6a6e5f..23cead9621d 100644
--- a/source/_integrations/envisalink.markdown
+++ b/source/_integrations/envisalink.markdown
@@ -13,8 +13,6 @@ ha_platforms:
- binary_sensor
- sensor
- switch
-ha_codeowners:
- - '@ufodone'
ha_integration_type: integration
---
diff --git a/source/_integrations/ezviz.markdown b/source/_integrations/ezviz.markdown
index 19e0e176f62..0d7143d64dc 100644
--- a/source/_integrations/ezviz.markdown
+++ b/source/_integrations/ezviz.markdown
@@ -169,4 +169,4 @@ The image entity represents the last detected event from a camera and visually r
## Related topics
-- [Controlling the camera from the dashboard](/dashboards/picture-glance/#creating-a-card-to-control-the-camera)
\ No newline at end of file
+- [Controlling the camera from the dashboard](/dashboards/picture-glance/#creating-a-card-to-control-the-camera)
diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown
index 89101da1386..a50bef73de9 100644
--- a/source/_integrations/fastdotcom.markdown
+++ b/source/_integrations/fastdotcom.markdown
@@ -35,4 +35,4 @@ By default, a speed test will be run every hour. The user can manually run a spe
- When running on Raspberry Pi 3 or older, the maximum speed is limited by its 100 Mbit/s LAN adapter.
- The sensor will return the maximum measured speed during a 15-second test.
-- Speed tests consume data depending on your internet speed. Make sure to consider this if your internet connection has limited bandwidth.
\ No newline at end of file
+- Speed tests consume data depending on your internet speed. Make sure to consider this if your internet connection has limited bandwidth.
diff --git a/source/_integrations/fints.markdown b/source/_integrations/fints.markdown
index 3d6e35d815b..8d2713f6fc2 100644
--- a/source/_integrations/fints.markdown
+++ b/source/_integrations/fints.markdown
@@ -8,7 +8,7 @@ ha_iot_class: Cloud Polling
ha_domain: fints
ha_platforms:
- sensor
-ha_integration_type: integration
+ha_integration_type: service
---
With the FinTS sensor, you can fetch your account information from your bank. This only works with banks that support the FinTS (aka. HBCI) standard. The FinTS standard used by many German banks. So if you do not have a German bank account, this will most likely not work for you. To find out if your bank supports FinTS, check the bank's website or call their hotline.
diff --git a/source/_integrations/flexom.markdown b/source/_integrations/flexom.markdown
index 922025b7c4f..9233095870e 100644
--- a/source/_integrations/flexom.markdown
+++ b/source/_integrations/flexom.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown
index e7b33483dd6..736a8cd00d8 100644
--- a/source/_integrations/freebox.markdown
+++ b/source/_integrations/freebox.markdown
@@ -2,12 +2,12 @@
title: Freebox
description: Instructions on how to integrate Freebox routers into Home Assistant.
ha_category:
+ - Alarm Control Panel
- Camera
- Network
- Presence detection
- Sensor
- Switch
- - Alarm Control Panel
ha_release: 0.85
ha_iot_class: Local Polling
ha_codeowners:
@@ -16,13 +16,13 @@ ha_codeowners:
ha_config_flow: true
ha_domain: freebox
ha_platforms:
+ - alarm_control_panel
- binary_sensor
- button
- camera
- device_tracker
- sensor
- switch
- - alarm_control_panel
ha_zeroconf: true
ha_integration_type: integration
---
diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown
index 4ebe54b3828..98ece22c989 100644
--- a/source/_integrations/google_assistant.markdown
+++ b/source/_integrations/google_assistant.markdown
@@ -363,7 +363,7 @@ If you receive 404 errors linked to reporting state in your log, Home Assistant
#### Error during linking: "Could not update the setting. Please check your connection"
-Your fulfillment URL may be invalid or unreachable. Recheck the `Fulfillment URL` as specified in [Manual Setup](#manual-setup) and verify that it's publicly reachable.
+Your fulfillment URL may be invalid or unreachable. Recheck the `Fulfillment URL` as specified in [Manual Setup](#manual-setup-if-you-dont-have-home-assistant-cloud) and verify that it's publicly reachable.
#### 500 / 429 error on request sync
diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown
index 2b829ad7b0a..3063255ff78 100644
--- a/source/_integrations/growatt_server.markdown
+++ b/source/_integrations/growatt_server.markdown
@@ -6,8 +6,6 @@ ha_category:
- Sensor
ha_release: 0.99
ha_iot_class: Cloud Polling
-ha_codeowners:
- - '@muppet3000'
ha_domain: growatt_server
ha_platforms:
- sensor
diff --git a/source/_integrations/hexaom.markdown b/source/_integrations/hexaom.markdown
index 91774307654..861d0d6059f 100644
--- a/source/_integrations/hexaom.markdown
+++ b/source/_integrations/hexaom.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/hi_kumo.markdown b/source/_integrations/hi_kumo.markdown
index e7f1f05863b..9b2cfffa373 100644
--- a/source/_integrations/hi_kumo.markdown
+++ b/source/_integrations/hi_kumo.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown
index 0e049759958..7f3a44c8aa9 100644
--- a/source/_integrations/idasen_desk.markdown
+++ b/source/_integrations/idasen_desk.markdown
@@ -12,9 +12,11 @@ ha_bluetooth: true
ha_platforms:
- button
- cover
+ - sensor
ha_integration_type: integration
ha_codeowners:
- '@abmantis'
+ha_quality_scale: silver
---
The IKEA IDÅSEN integration allows you to connect your IKEA Idåsen motorized desk to Home Assistant, making it possible to control the desk height and also monitor height changes from the physical controller.
@@ -49,4 +51,3 @@ Height:
description: The current height of the desk, in meters.
{% endconfiguration_basic %}
-
diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown
index 067f6799edb..774b013eb4d 100644
--- a/source/_integrations/light.mqtt.markdown
+++ b/source/_integrations/light.mqtt.markdown
@@ -711,7 +711,7 @@ state_topic:
required: false
type: string
supported_color_modes:
- description: A list of color modes supported by the list. This is required if `color_mode` is `True`. Possible color modes are `onoff`, `brightness`, `color_temp`, `hs`, `xy`, `rgb`, `rgbw`, `rgbww`, `white`.
+ description: A list of color modes supported by the list. This is required if `color_mode` is `True`. Possible color modes are `onoff`, `brightness`, `color_temp`, `hs`, `xy`, `rgb`, `rgbw`, `rgbww`, `white`. Note that if `onoff` **or** `brightness` are used, that must be the _only_ value in the list.
required: false
type: list
unique_id:
diff --git a/source/_integrations/linear_garage_door.markdown b/source/_integrations/linear_garage_door.markdown
index 5057584bc0a..e7671374725 100644
--- a/source/_integrations/linear_garage_door.markdown
+++ b/source/_integrations/linear_garage_door.markdown
@@ -1,15 +1,18 @@
---
-title: "Linear garage door"
-description: "Control Linear garage doors"
-ha_release: "2023.12"
+title: Linear Garage Door
+description: Control Linear garage doors
+ha_release: '2023.12'
ha_category:
- Cover
-ha_iot_class: "Cloud Polling"
-ha_quality_scale: gold
+ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- '@IceBotYT'
ha_domain: linear_garage_door
+ha_platforms:
+ - cover
+ - diagnostics
+ha_integration_type: integration
---
The Linear integration lets you control Linear garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Linear mobile app.
diff --git a/source/_integrations/litejet.markdown b/source/_integrations/litejet.markdown
index 616093d57f4..bc94e8acf56 100644
--- a/source/_integrations/litejet.markdown
+++ b/source/_integrations/litejet.markdown
@@ -24,7 +24,7 @@ LiteJet is a centralized lighting system that predates most home automation tech
## Prerequisites
-Your LiteJet MCP should be configured for 19.2 K baud, 8 data bits, 1 stop bit, no parity, and to transmit a 'CR' after each response. These settings can be configured using the [LiteJet programming software](https://www.centralite.com/helpdesk/knowledgebase.php?article=735). Connect the LiteJet's RS232-2 port to your computer.
+Your LiteJet MCP should be configured for 19.2 K baud, 8 data bits, 1 stop bit, no parity, and to transmit a 'CR' after each response. These settings can be configured using the LiteJet programming software from the [Dragon Technologies](https://www.dragontechinc.com/) Programming page. Connect the LiteJet's RS232-2 port to your computer.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/moehlenhoff_alpha2.markdown b/source/_integrations/moehlenhoff_alpha2.markdown
index fd477bc63ac..1e3f70951c8 100644
--- a/source/_integrations/moehlenhoff_alpha2.markdown
+++ b/source/_integrations/moehlenhoff_alpha2.markdown
@@ -18,7 +18,7 @@ ha_integration_type: integration
---
The Möhlenhoff Alpha 2 integration allows you to control a
-[Möhlenhoff Alpha 2](https://www.moehlenhoff.de/en/products/room-by-room-control/oem-alpha-2-system)
+[Möhlenhoff Alpha 2](https://www.moehlenhoff.de/fileadmin/user_upload/Download/Broschueren/125297_1705_Broschuere_Alpha2_DEU_final_web.pdf)
temperature control system.
## Prerequisites
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index c1bee54563e..d9c3334e15d 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -685,6 +685,7 @@ The following software has built-in support for MQTT discovery:
- [EMS-ESP32 (and EMS-ESP)](https://github.com/emsesp/EMS-ESP32)
- [ESPHome](https://esphome.io)
- [ESPurna](https://github.com/xoseperez/espurna)
+- [go-iotdevice](https://github.com/koestler/go-iotdevice)
- [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent)
- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0)
- [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon)
@@ -843,7 +844,7 @@ Setting up a light, switch etc. is similar but requires a `command_topic` as men
```bash
mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \
- -m '{"name": "Irrigation", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}}'
+ -m '{"name": "Irrigation", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}'
```
Set the state:
diff --git a/source/_integrations/namecheapdns.markdown b/source/_integrations/namecheapdns.markdown
index 9b630c879d4..53029f0ee8f 100644
--- a/source/_integrations/namecheapdns.markdown
+++ b/source/_integrations/namecheapdns.markdown
@@ -9,10 +9,10 @@ ha_domain: namecheapdns
ha_integration_type: integration
---
-With the `namecheapdns` integration you can automatically update your dynamic DNS entry at [namecheapdns](https://www.namecheap.com/store/domains/freedns/).
+With the `namecheapdns` integration you can automatically update your dynamic DNS entry hosted by Namecheap's [FreeDNS](https://www.namecheap.com/store/domains/freedns/) service.
-Namecheap only supports IPv4 addresses to update.
+Namecheap only supports updating IPv4 addresses.
## Configuration
@@ -32,13 +32,13 @@ namecheapdns:
required: false
type: string
domain:
- description: Your namecheap TLD (example.com).
+ description: Your root domain (example.com).
required: true
type: string
password:
- description: The namecheap "Dynamic DNS Password" you can find under the "Advanced DNS" tab.
+ description: The Namecheap "Dynamic DNS Password" you can find under the "Advanced DNS" tab.
required: true
type: string
{% endconfiguration %}
-See the [How do I set up a Host for Dynamic DNS?](https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns) for further instructions
+See Namecheap's [How do I set up a Host for Dynamic DNS?](https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns) guide for further instructions.
diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown
index f50b7417eec..511ae508cf4 100644
--- a/source/_integrations/nest.markdown
+++ b/source/_integrations/nest.markdown
@@ -533,6 +533,8 @@ authentication process.
- *Something went wrong: Please contact the developer of this app if the issue persists*: This typically means you are using the wrong type of credential (e.g. *Desktop Auth*). Make sure the credential in the [Google Cloud Console](https://console.developers.google.com/apis/credentials) is a *Web Application* credential following the instructions above.
+- *Something went wrong, please try again in a few minutes*: According to Google's [Partner Connections Manager Error Reference](https://developers.google.com/nest/device-access/reference/errors/pcm), this error covers all other undocumented internal errors within Partner Connections. One of the issues that cause this error is synchronization problems between the Nest and Google Home apps. Confirm that your Nest device is visible within both apps under the same Home. If it is missing within Google Home, create a new dummy home on the Nest app, which triggers the synchronization process. (This is the workaround recommended by the Google support team). The dummy entry can be deleted once the Nest device is visible within the Google Home app.
+
- *Can’t link to [Project Name]: Please contact [Project Name] if the issue persists*: This typically means that the *OAuth Client ID* used is mismatched
{% details "Resolving mismatched OAuth Client ID" %}
diff --git a/source/_integrations/nexity.markdown b/source/_integrations/nexity.markdown
index 12259170936..2f6e7788926 100644
--- a/source/_integrations/nexity.markdown
+++ b/source/_integrations/nexity.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/nobo_hub.markdown b/source/_integrations/nobo_hub.markdown
index 6c50f0a77e8..bafdc24839d 100644
--- a/source/_integrations/nobo_hub.markdown
+++ b/source/_integrations/nobo_hub.markdown
@@ -14,7 +14,7 @@ ha_platforms:
- climate
- select
- sensor
-ha_integration_type: integration
+ha_integration_type: hub
---
Integrates [Nobø Ecohub](https://www.glendimplex.no/produkter/varmestyring/11123610/noboe-hub/c-77/p-330)
diff --git a/source/_integrations/notify.tts.markdown b/source/_integrations/notify.tts.markdown
index 267b50a05df..eea95023dc7 100644
--- a/source/_integrations/notify.tts.markdown
+++ b/source/_integrations/notify.tts.markdown
@@ -25,8 +25,6 @@ notify:
media_player: media_player.living_room
```
-Please note that the `tts_service` parameter, must match the `service_name` defined in the TTS integration.
-
{% configuration %}
name:
description: The name of the notify service.
diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown
index ef4cd485fdd..101c396e29d 100644
--- a/source/_integrations/openai_conversation.markdown
+++ b/source/_integrations/openai_conversation.markdown
@@ -35,7 +35,7 @@ Prompt Template:
description: The starting text for the AI language model to generate new text from. This text can include information about your Home Assistant instance, devices, and areas and is written using [Home Assistant Templating](/docs/configuration/templating/).
Completion Model:
- description: The GPT-3 language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3 Documentation](https://platform.openai.com/docs/models/gpt-3).
+ description: The GPT language model is used for text generation. You can find more details on the available models in the [OpenAI GPT-3 Documentation](https://platform.openai.com/docs/models/gpt-3), [OpenAI GPT-3.5 Documentation](https://platform.openai.com/docs/models/gpt-3-5), or [OpenAI GPT-4 and GPT-4 Turbo Documentation](https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo). The default is "gpt-3.5-turbo".
Maximum Tokens to Return in Response:
description: The maximum number of words or "tokens" that the AI model should generate in its completion of the prompt. For more information, see the [OpenAI Completion Documentation](https://platform.openai.com/docs/guides/completion/introduction).
diff --git a/source/_integrations/overkiz.markdown b/source/_integrations/overkiz.markdown
index 060c188e947..9c41f6d850d 100644
--- a/source/_integrations/overkiz.markdown
+++ b/source/_integrations/overkiz.markdown
@@ -125,4 +125,4 @@ If your hub (e.g. Somfy Connectivity Kit) supports HomeKit natively, your setup
#### Local API via Velux KLF200 hub
-If you are only using Somfy IO-compatible devices, you could purchase a Velux KLF200 hub and use [the Velux integration](/integrations/velux/) which has a local API.
+If you are only using Somfy IO-compatible devices, you could purchase a Velux KLF200 hub and use [the Velux integration](/integrations/velux/) which has a local API.
diff --git a/source/_integrations/philips_js.markdown b/source/_integrations/philips_js.markdown
index fbba06a5e05..6aa7f42be68 100644
--- a/source/_integrations/philips_js.markdown
+++ b/source/_integrations/philips_js.markdown
@@ -2,10 +2,10 @@
title: Philips TV
description: Instructions on how to add Philips TVs to Home Assistant.
ha_category:
+ - Binary sensor
- Light
- Media player
- Remote
- - Binary sensor
ha_iot_class: Local Polling
ha_release: 0.34
ha_codeowners:
@@ -13,12 +13,12 @@ ha_codeowners:
ha_domain: philips_js
ha_config_flow: true
ha_platforms:
+ - binary_sensor
- diagnostics
- light
- media_player
- remote
- switch
- - binary_sensor
ha_integration_type: integration
---
diff --git a/source/_integrations/picnic.markdown b/source/_integrations/picnic.markdown
index ee743ee8f68..dd9c65f2471 100644
--- a/source/_integrations/picnic.markdown
+++ b/source/_integrations/picnic.markdown
@@ -11,6 +11,7 @@ ha_codeowners:
ha_domain: picnic
ha_platforms:
- sensor
+ - todo
ha_integration_type: integration
---
diff --git a/source/_integrations/piper.markdown b/source/_integrations/piper.markdown
index ff9ae6dcf0c..2a672d44763 100644
--- a/source/_integrations/piper.markdown
+++ b/source/_integrations/piper.markdown
@@ -15,6 +15,7 @@ ha_config_flow: true
ha_platforms:
- stt
- tts
+ - wake_word
ha_iot_class: Local Push
---
diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown
index a2d4f4178f7..b63cf2a915e 100644
--- a/source/_integrations/proximity.markdown
+++ b/source/_integrations/proximity.markdown
@@ -9,6 +9,8 @@ ha_quality_scale: internal
ha_domain: proximity
ha_iot_class: Calculated
ha_integration_type: integration
+ha_codeowners:
+ - '@mib1185'
---
The `proximity` integration allows you to monitor the proximity of devices or persons to a particular [zone](/integrations/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data.
diff --git a/source/_integrations/prusalink.markdown b/source/_integrations/prusalink.markdown
index d4453e1bd3c..06448fe253f 100644
--- a/source/_integrations/prusalink.markdown
+++ b/source/_integrations/prusalink.markdown
@@ -32,4 +32,4 @@ To obtain the host name and API key/password:
## Related topics
-- [PrusaLink documentation](https://help.prusa3d.com/article/prusa-connect-and-prusalink-explained_302608)
\ No newline at end of file
+- [PrusaLink documentation](https://help.prusa3d.com/article/prusa-connect-and-prusalink-explained_302608)
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index 0303c750e27..0670a25773b 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -14,6 +14,7 @@ ha_platforms:
- binary_sensor
- button
- camera
+ - diagnostics
- light
- number
- select
@@ -174,6 +175,13 @@ Depending on the supported features of the camera, switch entities are added for
For NVRs, a global switch for **Record**, **Push**, **Buzzer**, **Email**, and **FTP** will be available under the NVR device as well as a switch per channel of the NVR under the camera device. The respective feature will only be active for a given channel if both the global and that channel switch are enabled (as is also the case in the Reolink app/client).
+**Push** notifications to a phone will only be provided if the following conditions are met:
+- The **Push notifications** switch in Home Assistant is ON.
+- For NVRs, both the global and channel switch are ON.
+- The Push-notification in the Reolink App of that phone is ON.
+
+The Push-notification in the Reolink app is independent of the Home Assistant setting. It is also independent of the settings on other phones connected to the same camera. Reolink does this so you have an independent way of turning off push notifications per phone.
+
## Light entities
Depending on the supported features of the camera, light entities are added for:
diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown
index ead521e0b13..2d4ca749e93 100644
--- a/source/_integrations/repetier.markdown
+++ b/source/_integrations/repetier.markdown
@@ -7,7 +7,6 @@ ha_category:
ha_release: 0.94
ha_iot_class: Local Polling
ha_codeowners:
- - '@MTrab'
- '@ShadowBr0ther'
ha_domain: repetier
ha_platforms:
diff --git a/source/_integrations/rexel.markdown b/source/_integrations/rexel.markdown
index 6eb06749944..d0aba1f3771 100644
--- a/source/_integrations/rexel.markdown
+++ b/source/_integrations/rexel.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown
index 1a0874e0b33..8bcd79fce2e 100644
--- a/source/_integrations/ring.markdown
+++ b/source/_integrations/ring.markdown
@@ -16,11 +16,14 @@ ha_dhcp: true
ha_platforms:
- binary_sensor
- camera
+ - diagnostics
- light
- sensor
- siren
- switch
ha_integration_type: integration
+ha_codeowners:
+ - '@sdb9696'
---
The Ring integration allows you to integrate your [Ring.com](https://ring.com/) devices in Home Assistant. Due to recent authentication changes of Ring, you will need to run at least Home Assistant 0.104.
diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown
index f224ff86816..87900867f6c 100644
--- a/source/_integrations/roborock.markdown
+++ b/source/_integrations/roborock.markdown
@@ -21,8 +21,8 @@ ha_domain: roborock
ha_platforms:
- binary_sensor
- button
- - image
- diagnostics
+ - image
- number
- select
- sensor
diff --git a/source/_integrations/roon.markdown b/source/_integrations/roon.markdown
index c4e28814e5b..57587a60ca0 100644
--- a/source/_integrations/roon.markdown
+++ b/source/_integrations/roon.markdown
@@ -117,4 +117,3 @@ action:
mode: queued
```
-
diff --git a/source/_integrations/schlage.markdown b/source/_integrations/schlage.markdown
index 35776692c40..ff28e393d3f 100644
--- a/source/_integrations/schlage.markdown
+++ b/source/_integrations/schlage.markdown
@@ -12,6 +12,7 @@ ha_codeowners:
- '@dknowles2'
ha_platforms:
- binary_sensor
+ - diagnostics
- lock
- sensor
- switch
diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown
index 5615c0357fb..7a224533802 100644
--- a/source/_integrations/sensor.rest.markdown
+++ b/source/_integrations/sensor.rest.markdown
@@ -411,7 +411,7 @@ rest:
{% endraw %}
-The example below shows how to extract multiple values from a dictionary from the XML file of a Steamist Steambath Wi-Fi interface. The values are used to create a switch and multiple sensors without having to poll the endpoint numerous times.
+The example below shows how to extract multiple values from a dictionary from the XML file of a Steamist Steambath Wi-Fi interface. The values are used to create multiple sensors without having to poll the endpoint numerous times.
{% raw %}
@@ -431,32 +431,6 @@ rest:
value_template: "{{ json_value['response']['time0'] }}"
unit_of_measurement: "minutes"
- switch:
- - name: "Steam"
- value_template: "{{ json_value['response']['usr0'] | int >= 1 }}"
- turn_on:
- - service: rest_command.set_steam_led
- data:
- led: 6
- - service: homeassistant.update_entity
- target:
- entity_id: sensor.steam_system_data
- - delay: 00:00:15
- - service: homeassistant.update_entity
- target:
- entity_id: sensor.steam_system_data
- turn_off:
- - service: rest_command.set_steam_led
- data:
- led: 7
- - service: homeassistant.update_entity
- target:
- entity_id: sensor.steam_system_data
- - delay: 00:00:15
- - service: homeassistant.update_entity
- target:
- entity_id: sensor.steam_system_data
-
rest_command:
set_steam_led:
url: http://192.168.1.105/leds.cgi?led={{ led }}
diff --git a/source/_integrations/simu.markdown b/source/_integrations/simu.markdown
index 7d1312feb20..c78717b9585 100644
--- a/source/_integrations/simu.markdown
+++ b/source/_integrations/simu.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown
index 8ad84e6e844..67d966f0b8e 100644
--- a/source/_integrations/slack.markdown
+++ b/source/_integrations/slack.markdown
@@ -119,7 +119,7 @@ sequence:
mode: single
```
-Update the blocks array with valid Slack blocks. The easiest way to create this is using [Slack Block Kit Builder](https://app.slack.com/block-kit-builder)
+Update the blocks array with valid Slack blocks. The easiest way to create this is using [Slack Block Kit Builder](https://app.slack.com/block-kit-builder). Up to 50 blocks may be included per message.
Create a duplicate of this script to use for different messages, and different channels (the door was opened in #security, the light was left on on #lights, etc).
@@ -142,7 +142,7 @@ The following attributes can be placed inside the `data` key of the service call
| `username` | yes | The username of the Slack bot.
| `icon` | yes | The icon of the Slack bot.
| `file` | yes | A file to include with the message; see below.
-| `blocks` | yes | Array of [Slack blocks](https://api.slack.com/messaging/composing/layouts). *NOTE*: if using `blocks`, they are shown **in place of** the `message` (note that the `message` is required nonetheless).
+| `blocks` | yes | Array of [Slack blocks](https://api.slack.com/messaging/composing/layouts). *NOTE*: if using `blocks`, they are shown **in place of** the `message` within Slack apps. The message field will be used as notification text and anywhere else Slack is unable to display blocks. `message` is required regardless of whether this field is used.
| `blocks_template` | yes | The same as `blocks`, but able to support [templates](https://www.home-assistant.io/docs/configuration/templating).
| `thread_ts` | yes | Sends the message as a reply to a specified parent message.
@@ -162,6 +162,16 @@ To include a remote file with the Slack message, use these attributes underneath
| `username` | yes | An optional username if the URL is protected by HTTP Basic Auth.
| `password` | yes | An optional password if the URL is protected by HTTP Basic Auth.
+### Obtaining a member ID
+
+Some of the examples below use a member ID. This is a unique string assigned by Slack to all users (members and guests) and not a username set by the user. To get a member ID:
+
+1. Select a Slack user (both name and profile image work) to bring up their profile side panel.
+2. Open the context menu by selecting the three dots.
+3. Select **Copy member ID**.
+
+
+
### Examples
To send a file from local path:
@@ -199,7 +209,7 @@ data:
To use the block framework:
```yaml
-message: Fallback message in case the blocks don't display anything.
+message: Fallback message for notifications or in case the blocks don't display anything.
title: Title of the file.
data:
blocks:
@@ -227,7 +237,9 @@ data:
1.0
```
-Send a message directly to a user by setting the target to their member ID. Here are [instructions](https://www.workast.com/help/articles/61000165203/) to obtain a member ID.
+
+Send a message directly to a user by setting the target to their member ID.
+
```yaml
message: "Hello there!"
@@ -237,10 +249,10 @@ data:
blocks: []
```
-Send a message to a channel that mentions (@username, highlights a users name in yellow) a user. Here are [instructions](https://www.workast.com/help/articles/61000165203/) to obtain a member ID.
+Send a message to a channel that mentions (@username, highlights a users name in yellow) a user.
```yaml
-message: "<@U12345> your appointment starts soon"
+message: "<@MEMBER_ID> your appointment starts soon"
target: "#general"
title: "Reminder"
data:
diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown
index 0df60e43ffd..268b6ef67b4 100644
--- a/source/_integrations/smartthings.markdown
+++ b/source/_integrations/smartthings.markdown
@@ -49,7 +49,7 @@ SmartThings is integrated into Home Assistant through the SmartThings Cloud API.
The PAT is used to create a Home Assistant SmartApp in your SmartThings account during setup of the integration.
-1. Log into the [personal access tokens page](https://account.smartthings.com/tokens) and click '[Generate new token](https://account.smartthings.com/tokens/new)'
+1. Log into the [personal access tokens page](https://account.smartthings.com/tokens) and select **[Generate new token](https://account.smartthings.com/tokens/new)**.
2. Enter a token name (can be whatever you want), for example, 'Home Assistant' and select the following authorized scopes:
- Devices (all)
- Installed Applications (all)
@@ -57,7 +57,7 @@ The PAT is used to create a Home Assistant SmartApp in your SmartThings account
- Locations (all)
- Scenes (all)
- Schedules (all)
-3. Click 'Generate token'. When the token is displayed copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again.
+3. Select **Generate token**. When the token is displayed copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again.
### Webhook
@@ -72,15 +72,15 @@ After completing the prerequisite steps above, you are ready to setup the integr
{% include integrations/config_flow.md %}
-1. Confirm the callback URL is correct. If using Home Assistant Cloud, it will start with `https://hooks.nabuca.casa`. If the URL is not correct, update your Home Assistant configuration, restart, and try again.
+1. Confirm the callback URL is correct. If using Home Assistant Cloud, it will start with `https://hooks.nabu.casa`. If the URL is not correct, update your Home Assistant configuration, restart, and try again.
2. Enter your Personal Access Token.
3. Select the SmartThings Location to add to Home Assistant.
4. On the window that opens:
1. Login with your SmartThings account (if not already logged in).
- 2. Optionally change the display name and click 'Done' at the bottom of the screen.
- 3. Authorize the integration by clicking 'Allow' on the bottom right of the screen.
- 4. Click 'Close Window' or close it manually.
-5. Back in Home Assistant click 'Finish'.
+ 2. Optionally change the display name and select **Done** at the bottom of the screen.
+ 3. Authorize the integration by selecting **Allow** on the bottom right of the screen.
+ 4. Select **Close Window** or close it manually.
+5. Back in Home Assistant select **Finish**.
@@ -90,7 +90,7 @@ If you want to integrate additional SmartThings accounts or locations, repeat th
## Removal instructions
-To remove the integration from Home Assistant, select the instance from the Home Assistant Integrations page and click the trash icon on the upper right corner. Alternatively, you can remove the SmartApp from the location within the SmartThings application. If the Home Assistant instance that setup the integration is no longer running or functioning, you will need to use this [utility to remove the orphaned SmartApps in your SmartThings account](https://pypi.org/project/hass-smartthings-remove/).
+To remove the integration from Home Assistant, select the instance from the Home Assistant Integrations page and select the trash icon on the upper right corner. Alternatively, you can remove the SmartApp from the location within the SmartThings application. If the Home Assistant instance that setup the integration is no longer running or functioning, you will need to use this [utility to remove the orphaned SmartApps in your SmartThings account](https://pypi.org/project/hass-smartthings-remove/).
## Events
@@ -306,11 +306,11 @@ The personal access token does not match the expected format. Make sure you are
#### Error: `pysmartthings.errors.APIInvalidGrant: Invalid refresh token:` (after a restore)
You can fix this by using the SmartThings App to re-grant authorization to the API token you created before.
-1. Open SmartThings app on your mobile device (not HA)
-2. Select `Automations` from bottom
-3. Select your Home Assistant automation from the list
-4. Click "Done", then click "Allow"
-5. Reload your SmartThings integration from Home Assistant Devices panel
+1. Open SmartThings app on your mobile device (not HA).
+2. Select **Automations** from bottom.
+3. Select your Home Assistant automation from the list.
+4. Select **Done**, then select **Allow**.
+5. Reload your SmartThings integration from Home Assistant Devices panel.
#### Error: The token is invalid or no longer authorized (not solved by above)
diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown
index 3902e8785dc..f4256e6e7f1 100644
--- a/source/_integrations/smtp.markdown
+++ b/source/_integrations/smtp.markdown
@@ -204,13 +204,18 @@ notify:
sender: "YOUR_USERNAME@gmail.com"
encryption: starttls
username: "YOUR_USERNAME@gmail.com"
- password: "YOUR_PASSWORD"
+ password: "YOUR_APP_PASSWORD"
recipient:
- "RECIPIENT_1@example.com"
- "RECIPIENT_N@example.com"
sender_name: "SENDER_NAME"
```
-Keep in mind that Google has some extra layers of protection that need special attention. By default, the usage by external applications is limited so you will need to visit the [less secure apps](https://myaccount.google.com/lesssecureapps) page and enable it to be able to send e-mails. Be aware that Google will periodically turn it off if it is not used (no e-mail is sent).
+Google has some extra layers of protection that need special attention. You must use [an application-specific password](https://support.google.com/mail/answer/185833) in your notification configuration.
-To avoid having your e-mail notifications broken due to the less secure app's behavior, it is recommended that you enable 2-step verification on your Google account, and use [an application-specific password](https://support.google.com/mail/answer/185833) in your notification configuration.
+If any of the following conditions are met you will not be able to create an app password:
+
+- You do not have 2-step verification enabled on your account.
+- You have 2-step verification enabled but have only added a security key as an authentication mechanism.
+- Your Google account is enrolled in Google's [Advanced Protection Program](https://landing.google.com/advancedprotection/).
+- Your Google account belongs to a Google Workspace that has disabled this feature. Accounts owned by a school, business, or other organization are examples of Google Workspace accounts.
diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown
index f21952807b2..d9242f74588 100644
--- a/source/_integrations/somfy.markdown
+++ b/source/_integrations/somfy.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown
index bb6c40df04d..b773f286afa 100644
--- a/source/_integrations/stt.markdown
+++ b/source/_integrations/stt.markdown
@@ -4,7 +4,6 @@ description: Instructions on how to set up speech-to-text (STT) with Home Assist
ha_release: '0.102'
ha_codeowners:
- '@home-assistant/core'
- - '@pvizeli'
ha_domain: stt
ha_quality_scale: internal
ha_category: []
diff --git a/source/_integrations/switch.template.markdown b/source/_integrations/switch.template.markdown
index e473b8cdab6..f372081c176 100644
--- a/source/_integrations/switch.template.markdown
+++ b/source/_integrations/switch.template.markdown
@@ -212,7 +212,7 @@ switch:
- platform: template
switches:
garage:
- value_template: "{{ is_state('cover.garage_door', 'on') }}"
+ value_template: "{{ is_state('cover.garage_door', 'open') }}"
turn_on:
service: cover.open_cover
target:
@@ -242,7 +242,7 @@ switch:
- platform: template
switches:
garage:
- value_template: "{{ is_state('cover.garage_door', 'on') }}"
+ value_template: "{{ is_state('cover.garage_door', 'open') }}"
turn_on:
service: cover.open_cover
target:
diff --git a/source/_integrations/synology_dsm.markdown b/source/_integrations/synology_dsm.markdown
index 7e9153cb4fa..e94ea8c6a07 100644
--- a/source/_integrations/synology_dsm.markdown
+++ b/source/_integrations/synology_dsm.markdown
@@ -37,20 +37,19 @@ This sensor will wake up your Synology NAS if it's in hibernation mode.
You can change the scan interval within the configuration options (default is 15 min).
-Having cameras or the Home mode toggle from [Surveillance Station](https://www.synology.com/en-us/surveillance) will fetch every 30 seconds. Disable those entities if you don't want your NAS to be fetch as frequently.
+Having cameras or the Home mode toggle from [Surveillance Station](https://www.synology.com/en-us/surveillance) will fetch every 30 seconds. Disable those entities if you don't want your NAS to be fetched as frequently.
-If you have two or more NICs with different IP addresses from the same subnet and SSDP is activated, this leads to problems with this integration, as the NAS is detected several times with different IPs and the integration always adopts the new "detected" IP address in its configuration and then reloads it.
-In this case, it is recommended to use NIC bonding instead or to deactivate SSDP.
+When SSDP is activated on a NAS with two or more NICs with different IP addresses on the same subnet an adoption loop will occur. The NAS will be detected several times with different IP addresses and the integration will adopt the "newly" detected IP causing a reload. To resolve this either
deactivate SSDP on the NAS or use NIC bonding so that only one IP address is present.
## Separate User Configuration
-Due to the nature of the Synology DSM API, it is required to grant the user admin rights. This is related to the fact that utilization information is stored in the core module.
+You must grant the user admin rights in order to access utilization information since it's stored in the core module.
When creating the user, it is possible to deny access to all locations and applications. By doing this, the user will not be able to login to the web interface or view any of the files on the Synology NAS. It is still able to read the utilization and storage information using the API.
@@ -58,9 +57,9 @@ If you want to add cameras from [Surveillance Station](https://www.synology.com/
### If you utilize 2-Step Verification or Two Factor Authentication (2FA) with your Synology NAS
-If you have the "Enforce 2-step verification for the following users" option checked under **Control Panel > Security > Account > 2-Factor Authentication**, you'll need to configure the 2-step verification/one-time password (OTP) for the user you just created before the credentials for this user will work with Home Assistant.
+If you have the "Enforce 2-step verification for the following users" option checked under **Control Panel > Security > Account > 2-Factor Authentication**, you'll need to configure the 2-step verification/one-time password (OTP) for the user you just created before the credentials for this user will work with Home Assistant.
-Make sure to log out of your "normal" user's account and then login with the separate user you created specifically for Home Assistant. DSM will walk you through the process of setting up the one-time password for this user which you'll then be able to use in Home Assistant's frontend configuration screen.
+Make sure to log out of your "normal" user's account and then login with the separate user you created specifically for Home Assistant. DSM will walk you through the process of setting up the one-time password for this user which you'll then be able to use in Home Assistant's frontend configuration screen.
If you denied access to all locations and applications it is normal to receive a message indicating you do not have access to DSM when trying to login with this separate user. As noted above, you do not need access to the DSM and Home Assistant will still be able to read statistics from your NAS.
@@ -68,15 +67,15 @@ If you denied access to all locations and applications it is normal to receive a
## Sensors
-### CPU Utilisation sensors
+### CPU utilization sensors
-Entities reporting the current and combined CPU utilization of the NAS. There are sensors the report the current CPU load, separated by User, System and others. By default, only the User sensor is enabled.
+Entities reporting the current and combined CPU utilization of the NAS. There are sensors that report the current CPU load separated by User, System, and others. By default only the User sensor is enabled.
There are also combined CPU load sensors. These report the total CPU load for the entire NAS. Available as current, 1min, 5min and 15min load sensors. By default the 1min load sensor is disabled.
-### Memory Utilisation sensors
+### Memory utilization sensors
-Entities reporting the current and combined memory and swap utilization of the NAS. These sensors include the total installed amount, the currently free amount and the % of memory used.
+Entities reporting the current and combined memory and swap utilization of the NAS. These sensors include the total installed amount, the currently free amount, and the % of memory used.
### Network sensors
@@ -116,7 +115,7 @@ A switch is available to enable/disable the [Surveillance Station](https://www.s
## Cameras
-For each camera added in [Surveillance Station](https://www.synology.com/surveillance), a camera will be created in Home Assistant.
+For each camera added in [Surveillance Station](https://www.synology.com/surveillance) a camera will be created in Home Assistant.
## Buttons
@@ -134,7 +133,7 @@ A media source is provided for your [Synology Photos](https://www.synology.com/e
The media source URIs will look like `media-source://synology_dsm/
//`.
-This media browser supports multiple Synology Photos instances. `` is the Home Assistant ID for the NAS (_usually the serial number of the NAS_). You can find this id when using the media browser, when you hover over the NAS name, you get shown the simple name followed by the unique id ex: `192.168.0.100:5001 - 18C0PEN253705`.
+This media browser supports multiple Synology Photos instances. `` is the Home Assistant ID for the NAS (_usually the serial number of the NAS_). You can find this id when using the media browser by hovering over the NAS name. It will show the simple name followed by the unique id ex: `192.168.0.100:5001 - 18C0PEN253705`.
To find the `` you need to go to the album in your photos instance, and the id will be in the URL ex: `https://192.168.0.100:5001/#/album/19`, where 19 is the album id. An `` of 0 will contain all images.
diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown
index de66f82144d..e8bf158277d 100644
--- a/source/_integrations/system_bridge.markdown
+++ b/source/_integrations/system_bridge.markdown
@@ -4,6 +4,7 @@ description: How to integrate the System Bridge integration into Home Assistant.
ha_category:
- Sensor
- System monitor
+ - Update
ha_release: 2021.6
ha_iot_class: Local Push
ha_config_flow: true
diff --git a/source/_integrations/thethingsnetwork.markdown b/source/_integrations/thethingsnetwork.markdown
index cafd148021f..16ecca77052 100644
--- a/source/_integrations/thethingsnetwork.markdown
+++ b/source/_integrations/thethingsnetwork.markdown
@@ -16,6 +16,7 @@ ha_integration_type: integration
This integration only supports TTNv2 that has been definitively switched off in 2022 (deprecated).
+ For TTNv3, use the [MQTT integration](/integrations/mqtt).
The `thethingsnetwork` integration allows one to interact with the [The Things Network](https://www.thethingsnetwork.org). This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long range (~5 to 15 km) communication with a low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfers the received data from the sensors to the The Things Network.
diff --git a/source/_integrations/todo.markdown b/source/_integrations/todo.markdown
index aa411027535..1351684b099 100644
--- a/source/_integrations/todo.markdown
+++ b/source/_integrations/todo.markdown
@@ -76,6 +76,7 @@ data:
item: "Submit Income Tax Return"
due_date: "2024-04-10"
description: "Collect all necessary documents and submit the final return."
+```
### Service `todo.update_item`
@@ -130,4 +131,4 @@ This is a full example of a service call that deletes all completed to-do items.
service: todo.remove_completed_items
target:
entity_id: todo.personal_tasks
-```
\ No newline at end of file
+```
diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown
index d4e012633d6..3cd7a9da1f9 100644
--- a/source/_integrations/tplink.markdown
+++ b/source/_integrations/tplink.markdown
@@ -12,6 +12,7 @@ ha_config_flow: true
ha_codeowners:
- '@rytilahti'
- '@thegardenmonkey'
+ - '@bdraco'
ha_domain: tplink
ha_platforms:
- diagnostics
diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown
index 38094e944f5..f676fc5e4c2 100644
--- a/source/_integrations/tts.markdown
+++ b/source/_integrations/tts.markdown
@@ -7,7 +7,6 @@ ha_category:
ha_release: 0.35
ha_codeowners:
- '@home-assistant/core'
- - '@pvizeli'
ha_domain: tts
ha_quality_scale: internal
ha_platforms:
diff --git a/source/_integrations/ubiwizz.markdown b/source/_integrations/ubiwizz.markdown
index 538bfcf2282..bfe5429960b 100644
--- a/source/_integrations/ubiwizz.markdown
+++ b/source/_integrations/ubiwizz.markdown
@@ -44,7 +44,7 @@ ha_platforms:
- siren
- switch
- water_heater
-ha_iot_class: Cloud Polling
+ha_iot_class: Local Polling
ha_dhcp: true
ha_zeroconf: true
---
diff --git a/source/_integrations/ubus.markdown b/source/_integrations/ubus.markdown
index a5f1549a946..4571e82e39e 100644
--- a/source/_integrations/ubus.markdown
+++ b/source/_integrations/ubus.markdown
@@ -20,17 +20,33 @@ opkg update
opkg install rpcd-mod-file uhttpd-mod-ubus
```
-And create on your OpenWrt device a read-only user to be used by setting up the ACL file `/usr/share/rpcd/acl.d/user.json`.
+Add a new system user `hass` (or do it in any other way that you prefer):
+
+- Add line to /etc/passwd: hass:x:10001:10001:hass:/var:/bin/false
+- Add line to /etc/shadow: hass:x:0:0:99999:7:::
+
+Edit the `/etc/config/rpcd` and add the following lines:
+
+```yaml
+config login
+ option username 'hass'
+ option password '$p$hass'
+ list read hass
+ list read unauthenticated
+ list write hass
+```
+
+Then, create an ACL file at `/usr/share/rpcd/acl.d/hass.json` for the user `hass`:
```json
{
- "user": {
- "description": "Read only user access role",
+ "hass": {
+ "description": "Access role for OpenWrt ubus integration",
"read": {
"ubus": {
- "*": [ "*" ]
+ "hostapd.*": ["get_clients"],
+ "uci": ["get"]
},
- "uci": [ "*" ]
},
"write": {}
}
diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown
index cfcbb8bf313..5eb34fc687d 100644
--- a/source/_integrations/unifiprotect.markdown
+++ b/source/_integrations/unifiprotect.markdown
@@ -59,39 +59,11 @@ UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware `[
The absolute **minimal** software version is `[v1.20.0](https://community.ui.com/releases/UniFi-Protect-Application-1-20-0/d43c0905-3fb4-456b-a7ca-73aa830cb011)` for UniFi Protect. If you have an older version, you will get errors trying to set up the integration. However, the general advice is the latest 2 minor versions of UniFi Protect and hardware supported by those are supported.
-#### About UniFi Early Access
-
-**Early Access releases are not supported by Home Assistant.**
+**Early Access and Release Candidate versions are not supported by Home Assistant.**
-Using Early Access versions will likely cause your UniFi Protect {% term integration %} to break unexpectedly.
-
-
-
-#### Downgrading UniFi Protect
-
-In the event you accidentally upgrade to an Early Access version of UniFi Protect, you can downgrade to a stable version by either [restoring a backup](https://help.ui.com/hc/articles/360008976393) or by manually downgrading your UniFi Protect.
-
-##### Manually downgrade
-
-Manually downgrading comes with its own risks and it is not recommended unless you do not have a backup available. Some Protect versions cannot be downgraded from (like `v2.0` to `v1.21`). To downgrade, you can access your [UniFi OS Console via SSH](https://help.ui.com/hc/articles/204909374) and then do the following:
-
-```bash
-# Run this command first _only_ if you are on a 1.x firmware of the UDM Pro.
-# It is not needed for the UDM SE, UNVR, etc.
-unifi-os shell
-
-# Downgrade UniFi Protect.
-apt-get update
-apt-get install --reinstall --allow-downgrades unifi-protect=2.0.0~beta.5 -y
-```
-
-You can replace `2.0.0~beta.5` with whatever version of UniFi Protect you want to downgrade to. Any dashes in the version (`-`), replace with tilde (`~`).
-
-
-
-If you want to downgrade to another Early Access version, you must have [Remote Access enabled](https://help.ui.com/hc/articles/115012240067) and have the Early Access release channel enabled.
+Using Early Access Release Candidate versions of UniFi Protect or UniFi OS will likely cause your UniFi Protect {% term integration %} to break unexpectedly. If you choose to opt into either the Early Access or the Release Candidate release channel and anything breaks in Home Assistant, you will need to wait until that version goes to the official Stable Release channel before it is expected to work.
diff --git a/source/_integrations/v2c.markdown b/source/_integrations/v2c.markdown
index 1550afabceb..5840a1f1961 100644
--- a/source/_integrations/v2c.markdown
+++ b/source/_integrations/v2c.markdown
@@ -1,5 +1,5 @@
---
-title: V2C
+title: V2C
description: Instructions on how to integrate V2C Trydan EVSE with Home Assistant.
ha_category:
- Car
@@ -10,14 +10,14 @@ ha_codeowners:
- '@dgomes'
ha_domain: v2c
ha_platforms:
- - number
- binary_sensor
+ - number
- sensor
- switch
ha_integration_type: integration
---
-The V2C integration allows monitoring and control of a local [V2C](https://v2c.com) Trydan EVSE in Home Assistant.
+The V2C integration allows monitoring and control of a local [V2C](https://v2charge.com/trydan/) Trydan EVSE in Home Assistant.
There is currently support for the following platforms within Home Assistant:
diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown
index 3554e9e6902..82bb1bb2131 100644
--- a/source/_integrations/verisure.markdown
+++ b/source/_integrations/verisure.markdown
@@ -12,8 +12,6 @@ ha_category:
ha_release: pre 0.7
ha_iot_class: Cloud Polling
ha_domain: verisure
-ha_codeowners:
- - '@frenck'
ha_platforms:
- alarm_control_panel
- binary_sensor
diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown
index e97865938d1..bdd639d6bbf 100644
--- a/source/_integrations/vicare.markdown
+++ b/source/_integrations/vicare.markdown
@@ -17,6 +17,8 @@ ha_platforms:
- water_heater
ha_dhcp: true
ha_integration_type: integration
+ha_codeowners:
+ - '@CFenner'
---
The **Viessmann ViCare** {% term integration %} lets you control [Viessmann](https://www.viessmann.com) devices via the Viessmann ViCare (REST) API.
diff --git a/source/_integrations/weather.template.markdown b/source/_integrations/weather.template.markdown
index a320bd28b07..3787862b5f1 100644
--- a/source/_integrations/weather.template.markdown
+++ b/source/_integrations/weather.template.markdown
@@ -116,6 +116,10 @@ visibility_unit:
description: Unit for visibility_template output. Valid options are km, mi, ft, m, cm, mm, in, yd.
required: false
type: string
+forecast_template:
+ description: Forecast data.
+ required: false
+ type: template
forecast_daily_template:
description: Daily forecast data.
required: false
diff --git a/source/_integrations/yolink.markdown b/source/_integrations/yolink.markdown
index 23f18be8520..4acd6d4bdb9 100644
--- a/source/_integrations/yolink.markdown
+++ b/source/_integrations/yolink.markdown
@@ -58,3 +58,4 @@ The integration is tested and verified for the following devices from YoLink:
- YS3604 (FlexFob)
- YS7106 (PowerFailureAlar)
- YS4908 (Finger)
+- YS7805 (Outdoor Motion Detector Sensor)
diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown
index 2719deb670a..81bf1a9bd4d 100644
--- a/source/_integrations/zha.markdown
+++ b/source/_integrations/zha.markdown
@@ -24,6 +24,7 @@ ha_codeowners:
- '@dmulcahey'
- '@adminiuga'
- '@puddly'
+ - '@TheJulianJES'
ha_domain: zha
ha_platforms:
- alarm_control_panel
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index 5adf9da8776..1c8f82fbc06 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -132,7 +132,7 @@ The Z-Wave integration provides several special entities, some of which are avai
### Entities available for every Z-Wave device
-1. **Node status** sensor: This sensor shows the node status for a given Z-Wave device. The sensor is disabled by default. The available node statuses are explained in the [Z-Wave JS documentation](https://zwave-js.github.io/node-zwave-js/#/api/node?id=status). They can be used in state change automations. For example to ping a device when it is dead, or refresh values when it wakes up.
+1. **Node status** sensor: This sensor shows the node status for a given Z-Wave device. The sensor is disabled by default. The available node statuses are explained in the [Z-Wave JS documentation](https://zwave-js.github.io/node-zwave-js/#/api/node?id=status). They can be used in state change automations. For example to ping a device when it is dead, or refresh values when it wakes up.
2. **Ping** button: This button can be pressed to ping a device. It is an alternative to the `zwave_js.ping` service.
3. **Controller/node statistics** sensors: Z-Wave JS collects statistics about communications between [nodes](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot) and the [controller](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot). The statistics can be used to troubleshoot RF issues in your environment. These statistics are available in the network configuration and device info panels. But they are also available as sensors which are disabled by default.
@@ -692,7 +692,7 @@ trigger:
# `event_source` and `event` are required
event_source: node # options are node, controller, and driver
event: "interview failed" # event names can be retrieved from the Z-Wave JS docs (see links above)
- # `event_data` and `partial_dict_match` are optional. If `event_data` isn't included, all events of a given type for the given context will trigger the automation. When the `interview failed` event is fired, all argument live in a dictionary within the `event_data` dictionary under the `args` key. The default behavior is to require a full match of the event_data dictionary below and the dictionary that is passed to the event. By setting `partial_dict_match` to true, Home Assistant will check if the isFinal argument is true and ignore any other values in the dictionary. If this setting was false, this trigger would never fire because the dictionary always contains more keys than `isFinal` so the comparsion check would never evaluate to true.
+ # `event_data` and `partial_dict_match` are optional. If `event_data` isn't included, all events of a given type for the given context will trigger the automation. When the `interview failed` event is fired, all argument live in a dictionary within the `event_data` dictionary under the `args` key. The default behavior is to require a full match of the event_data dictionary below and the dictionary that is passed to the event. By setting `partial_dict_match` to true, Home Assistant will check if the isFinal argument is true and ignore any other values in the dictionary. If this setting was false, this trigger would never fire because the dictionary always contains more keys than `isFinal` so the comparison check would never evaluate to true.
event_data:
args:
isFinal: true
@@ -903,7 +903,7 @@ When trying to determine why something isn't working as you expect, or when repo
1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}.
2. Select the **Z-Wave** integration. Then, select the three dots.
-3. From he dropdown menu, select **Download diagnostics**.
+3. From the dropdown menu, select **Download diagnostics**.
### How do I address interference issues?
diff --git a/source/_posts/2023-12-04-nabu-casa-at-the-matter-member-meeting.markdown b/source/_posts/2023-12-04-nabu-casa-at-the-matter-member-meeting.markdown
new file mode 100644
index 00000000000..ae64f195c43
--- /dev/null
+++ b/source/_posts/2023-12-04-nabu-casa-at-the-matter-member-meeting.markdown
@@ -0,0 +1,37 @@
+---
+layout: post
+title: "Nabu Casa at the Matter Member Meeting"
+description: "Nabu Casa represented Home Assistant, our community, and the Open Home vision at the Matter Member Meeting in Geneva. And we’ll have a dedicated live stream about Matter in January!"
+date: 2023-12-04 00:00:02
+date_formatted: "December 4, 2023"
+author: Marcel van der Veldt
+comments: true
+categories: Matter
+og_image: /images/blog/2023-11-matter-member-meeting/matter-image.jpg
+---
+
+TL;DR: We represented Home Assistant, our community, and the Open Home vision at the Matter member meeting in Geneva. We’re hosting a live stream to talk Matter in January to update you about our progress and answer your questions. Leave your questions in the comments below!
+
+Two weeks ago me, Marcel van der Veldt, and Stefan Agner, traveled to Geneva to represent Home Assistant, our community and the Open Home Vision at the Member Meeting of the Connectivity Standards Alliance (CSA). This is an important meeting where companies from all over the world meet to talk and decide about the Matter standard and how to implement it.
+
+_(Matter is the new smart home standard that promises to make everyone’s smart home devices work with each other across platforms and ecosystems, locally and privately. It’s being developed by the CSA, which is also responsible for Zigbee)._
+
+
+
+Stefan and Marcel
+
+
+We were able to attend because [Nabu Casa](https://www.nabucasa.com) is a member of the CSA. We pay for this with the revenue from your Home Assistant Cloud subscriptions (thank you!). CSA membership ensures that we have access to official technical documentation and support to build Matter into Home Assistant. It also gives us a voice inside the CSA, which we use to advocate for the interests of Home Assistant users and our Open Home vision.
+
+
+We love to attend these events and hear amazing stories from the people we meet. When talking with engineers working on Matter in the CSA, we noticed a lot of them run Home Assistant at their own homes and are enthusiastic supporters of the project! Talking to device manufacturers made us realize that Home Assistant is used as a test platform because our Matter server is the most flexible. This is great because it increases the likelihood that Matter devices work great in Home Assistant, as devices will have been implemented and tested on it!
+
+Our participation in the development of Matter also means we’re in touch with engineers at other companies on a regular basis. One of the most popular Matter devices on the market right now, the Eve Energy Plug, has custom support for energy metering - a function not yet supported in the current Matter standard. The only way to see your energy usage was inside Eve’s own app. We’ve worked together with Eve, so we can now read the measurements from their plugs via custom Matter clusters and show them in Home Assistant! This feature will be available in the December release of Home Assistant. If you own Eve Energy Plugs, this is our early Christmas present for you.
+
+## Home Assistant and Matter
+
+We haven’t just joined the CSA; we also have dedicated developers working on making sure that Matter is a first-class citizen within Home Assistant. In our eyes, it’s ideal for Home Assistant users because of the local nature of the protocol. It is our goal to make Home Assistant an officially certified Matter controller registered with the CSA.
+
+To talk more about our ongoing progress with Matter, we’ll host a live stream in January. It will contain a full update on the state of Matter and go in-depth about what we have planned. We’ll announce the date soon.
+
+We don’t want it to be just a stream of us talking Matter to you. We know you have many questions about Matter, things that are unclear, or that you want our help to understand. So please send us your burning questions in the comments below!
diff --git a/source/_posts/2023-12-06-release-202312.markdown b/source/_posts/2023-12-06-release-202312.markdown
new file mode 100644
index 00000000000..24b73aa5be8
--- /dev/null
+++ b/source/_posts/2023-12-06-release-202312.markdown
@@ -0,0 +1,587 @@
+---
+layout: post
+title: "2023.12: Welcome home!"
+description: "2023.12: A beautiful new login page, new design for the thermostat card, numeric input feature for tile cards, options for the default dashboard, history dashboard showing long-term statistics, and more!"
+date: 2023-12-06 00:00:00
+date_formatted: "December 6, 2023"
+author: Franck Nijhof
+author_twitter: frenck
+comments: true
+categories:
+ - Release-Notes
+ - Core
+og_image: /images/blog/2023-12/social.png
+---
+
+
+
+Home Assistant Core 2023.12! 🎄
+
+The last release of 2023 is here, and we are going out with a bang! 🎉
+
+2023 has been the [Year of the Voice](/blog/2022/12/20/year-of-voice/), and
+please stay tuned, as we will host a [final 5th chapter live stream on our YouTube channel](https://www.youtube.com/watch?v=djEkgoS5dDQ)
+on 13 December 2023, at 12:00 PST / 21:00 CET! But that is not the
+end of the voice journey... Be sure to tune in!
+
+This release has some nice quality-of-life improvements, making it feel
+like Christmas already! The thermostat card has been redesigned to match
+the gorgeous new entity dialog introduced, a new feature for the ever-improving
+tile card, re-importing blueprints, and much more!
+
+I'm most excited about the new login page that this release brings. It is
+beautiful, modern, and literally welcomes you into your own home! 🏡
+Home is where Home Assistant is, right? 😃
+
+This is it for 2023! What a year it has been! I just got one last
+thing to say this year:
+
+**Thank you for using Home Assistant! ❤️**
+
+Happy holidays & enjoy the release!
+
+../Frenck
+
+
+
+- [A beautiful new login page](#a-beautiful-new-login-page)
+- [New design for the thermostat card](#new-design-for-the-thermostat-card)
+- [Numeric input feature for tile cards](#numeric-input-feature-for-tile-cards)
+- [Options for the default dashboard](#options-for-the-default-dashboard)
+- [History dashboard showing long-term statistics](#history-dashboard-showing-long-term-statistics)
+- [More to-do!](#more-to-do)
+- [Re-import blueprints](#re-import-blueprints)
+- [Other noteworthy changes](#other-noteworthy-changes)
+- [New integrations](#new-integrations)
+- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui)
+- [Need help? Join the community!](#need-help-join-the-community)
+- [Backward-incompatible changes](#backward-incompatible-changes)
+- [Farewell to the following](#farewell-to-the-following)
+- [All changes](#all-changes)
+
+Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=2o-Uw5ZGd0M)
+6 December 2023, at 12:00 PST / 21:00 CET!
+
+
+
+## A beautiful new login page
+
+The login page of Home Assistant has been redesigned to be more modern and
+match the [recent redesign of the Home Assistant onboarding](/blog/2023/09/06/release-20239/#onboarding).
+
+When Home Assistant detects you are accessing it via your local home network,
+it means you are in your trusted home environment; you will be greeted by this
+beautiful new login page, which resembles how most platforms, like Windows,
+macOS, Netflix, and others, handle this: by showing your user profiles.
+
+
+
+It is also much smarter! It works seamlessly with [trusted networks](/docs/authentication/providers/#trusted-networks),
+and when home, we automatically remember your login. So, no more forgetting
+to check the "keep me logged in" checkbox. 👊
+
+Of course, when logging in from outside your home network, we can't do this
+as that would give away privacy-sensitive information about your system
+and who is in it. So, when you are outside of your home network,
+the login page will ask for your username and password, just like before.
+
+
+
+Oh! And you can now change the language straight from the login page! 🌍
+
+## New design for the thermostat card
+
+[Home Assistant 2023.9 introduced](/blog/2023/09/06/release-20239/#new-climate-humidifier-and-water-heater-entity-dialogs)
+a gorgeous new entity dialog for thermostat entities. As a result of that, many
+have been asking for a similar design for the thermostat card. Well, here it is!
+
+
+
+There is nothing you have to do to use this new card. Once you upgrade to this
+release, the thermostat card will automatically use this gorgeous new design.
+
+We took it one step further and added support for features. Features are
+additional functionality that you can add to a card, previously only available
+for the tile card. This release adds support for features to the
+thermostat card as well!
+
+
+
+For the thermostat card, it allows you to add HVAC mode buttons and presets.
+By default, these features are hidden, giving it the cleanest look possible.
+
+Oh! The same design has been applied to the (de)humidifer card, of course,
+including its respective tile features 😎.
+
+
+
+## Numeric input feature for tile cards
+
+The [tile card](/dashboards/tile/) is very powerful, and [@JosephAbbey]
+is even extending it this release by adding a new "numeric input" feature.
+
+The numeric input feature works with all number entities and number helpers.
+It allows you to control the number entity from the tile card directly
+and provides the choice to use it as a slider or as an input with up/down
+buttons.
+
+
+
+[@JosephAbbey]: https://github.com/JosephAbbey
+
+## Options for the default dashboard
+
+The default dashboard now has options that will allow you to change its behavior.
+You can now configure the default dashboard to hide certain areas,
+hide entities that don't belong to an area, and the option to hide the
+energy summary card.
+
+
+
+When selecting **Areas**, you can choose to hide the areas but also change
+the display order of the areas by dragging them around.
+
+A first step in making the dashboards configurable, but above all,
+it gives you more control over the default dashboard, especially when you have
+just started with using Home Assistant.
+
+When adding a new dashboard, we added a dialog similar to the ones we show
+when you create new automations or scripts. It gives you the option to start
+with an empty manual dashboard or create a new default dashboard.
+
+
+
+## History dashboard showing long-term statistics
+
+The history dashboard did get some love from [@karwosts] this release; he
+added a big improvement to _all_ the graphs shown there.
+
+Previously, the graphs would only show the state history, limited to a few days,
+until the data is removed. This is not always very useful, for example,
+when you want to look back further in time.
+
+[@karwosts] came up with a solution for this, and the history dashboard now
+combines the state history with the recorded long-term statistics to provide
+insights into the past.
+
+
+
+The right and darker part of the graph line is provided by the state history
+(like before), and the long-term statistics provide the left and lighter part
+of the graph line (and is thus downsampled hourly data).
+
+If you have manually modified the [days to keep before purging](/integrations/recorder#configuration-variables)
+recorder on your system, consider removing that customization. With the
+long-term statistics and new feature, you most likely don’t need it anymore,
+resulting in a smaller database and, thus, faster and smaller backups.
+
+[@karwosts]: https://github.com/karwosts
+
+## More to-do!
+
+The first iteration for support for to-do lists was added in the [last release](/blog/2023/11/01/release-202311/#there-is-a-lot-to-do),
+and there has been continued work on this feature in this release.
+
+First of all, there are two new services available. A much-requested service
+to [list all items on a to-do list](/integrations/todo/#service-todoget_items)
+and a helpful service to [remove all completed items from a to-do list](/integrations/todo/#service-todoclear_items).
+
+It is nice to see integrations adding support for the to-do list feature.
+For example, the [CalDAV] integration now supports adding to-do items to your
+CalDAV server, and with [Picnic] and [OurGroceries] you can now manage your
+shopping list. In the case of Picnic, it will even look up the product you add
+in their store to your shopping list and add the product to your shopping cart.
+
+Also, when viewing a to-do list from the Home Assistant interface,
+you can copy/paste or bookmark the URL, which will always bring you back
+to the same one—a small but very helpful improvement.
+
+[CalDAV]: /integrations/caldav
+[Picnic]: /integrations/picnic
+[OurGroceries]: /integrations/ourgroceries
+
+## Re-import blueprints
+
+This release adds the ability to re-import the blueprint from the source from
+which you originally imported it. The newly downloaded blueprint will overwrite
+the existing blueprint, providing a simple "update" feature for blueprints.
+
+If you use Blueprints, for example, the ones
+[created by our incredible community](https://community.home-assistant.io/c/blueprints/38),
+you might have noticed that when you import a blueprint, it will not update
+when the author updates it. The only option you had was to manually adjust the
+YAML of the blueprint to make it match the latest version published
+by the author. To make this last bit easier, we added this re-import ability.
+
+
+
+A helpful feature that will make it easier to keep your blueprints in
+sync with the latest version published by the blueprint author.
+
+## Other noteworthy changes
+
+There are many more improvements in this release; here are some of the other
+noteworthy changes this release:
+
+- We have a brand new [trigger selector] for you to use in your Blueprints
+ and scripts. Thanks, [@piitaya]!
+- That is not all for selectors, [@schelv] added support for Kelvin to the
+ [color temperature selector]. Nice!
+- If you use the [IKEA IDÅSEN] desk, you will now have a height sensor!
+ Thanks [@abmantis]!
+- The [ESPHome] integration had many performance improvements, making it faster
+ and more reliable. Thanks [@bdraco]!
+- [@Lash-L] added support for displaying maps from your [Roborock] vacuums!
+ Awesome!
+- Services with a response now support handling responses when multiple entities
+ are targeted. Nice! Thanks [@eifinger]!
+- [@iMicknl] added _local API_ support for the Somfy TaHoma to the [Overkiz]
+ integration! Also, thanks [Somfy]! It's nice to see a manufacturer adding
+ local API support!
+- The [ViCare] received tons of love from [@CFenner]; keep up the good work!
+- The media browser now has support for toggling between grid and list view.
+ Thanks [@karwosts]!
+- [@emontnemery] worked hard to improve all error messages originating from
+ manual YAML configuration. The messages should now be more detailed, readable,
+ and correctly pinpoint which file and file line the error is located at. Awesome!
+- [@karwosts] created a UI when you want to add selectors to your script field!
+ Very nicely done!
+- Errors shown by Home Assistant can now be translated! While many places
+ still need to adopt this, it is a big and user-friendly step forward!
+ Outstanding job [@jbouwh]!
+
+[@abmantis]: https://github.com/abmantis
+[@bdraco]: https://github.com/bdraco
+[@CFenner]: https://github.com/CFenner
+[@eifinger]: https://github.com/eifinger
+[@emontnemery]: https://github.com/emontnemery
+[@iMicknl]: https://github.com/iMicknl
+[@jbouwh]: https://github.com/jbouwh
+[@Lash-L]: https://github.com/Lash-L
+[@piitaya]: https://github.com/piitaya
+[@schelv]: https://github.com/schelv
+[color temperature selector]: /docs/blueprint/selectors/#color-temperature-selector
+[ESPHome]: /integrations/esphome
+[IKEA IDÅSEN]: /integrations/idasen_desk
+[Overkiz]: /integrations/overkiz
+[Roborock]: /integrations/roborock
+[Somfy]: https://www.somfy.com/
+[trigger selector]: /docs/blueprint/selectors/#trigger-selector
+[ViCare]: /integrations/vicare
+
+## New integrations
+
+We welcome the following new integrations in this release:
+
+- **[Devialet]**, added by [@fwestenberg]
+ Control your wireless Devialet speakers.
+- **[Linear Garage Door]**, added by [@IceBotYT]
+ Lets you control and automate your Linear garage doors.
+- **[MyPermobil]**, added by [@IsakNyberg]
+ Provides various sensors for your Permobil wheelchair.
+- **[OurGroceries]**, added by [@OnFreund]
+ Integrate with the OurGroceries shopping lists.
+- **[V2C]**, added by [@dgomes]
+ Monitoring and control of a local V2C Trydan EVSE.
+
+[@dgomes]: https://github.com/dgomes
+[@fwestenberg]: https://github.com/fwestenberg
+[@IceBotYT]: https://github.com/IceBotYT
+[@IsakNyberg]: https://github.com/IsakNyberg
+[@OnFreund]: https://github.com/OnFreund
+[Devialet]: /integrations/devialet
+[V2C]: /integrations/v2c
+[Linear Garage Door]: /integrations/linear_garage_door
+[MyPermobil]: /integrations/mypermobil
+[OurGroceries]: /integrations/ourgroceries
+
+## Integrations now available to set up from the UI
+
+The following integrations are now available via the Home Assistant UI:
+
+- **[CalDAV]**, done by [@allenporter]
+- **[Fast.com]**, done by [@erwindouna]
+- **[Ping]**, done by [@jpbede]
+
+[@allenporter]: https://github.com/allenporter
+[@erwindouna]: https://github.com/erwindouna
+[@jpbede]: https://github.com/jpbede
+[CalDAV]: /integrations/caldav
+[Fast.com]: /integrations/fastdotcom
+[Ping]: /integrations/ping
+
+## Need help? Join the community!
+
+Home Assistant has a great community of users who are all more than willing
+to help each other out. So, join us!
+
+Our very active [Discord chat server](/join-chat) is an excellent place to be
+at, and don't forget to join our amazing [forums](https://community.home-assistant.io/).
+
+Found a bug or issue? Please report it in our [issue tracker](https://github.com/home-assistant/core/issues),
+to get it fixed! Or, check [our help page](/help) for guidance for more
+places you can go.
+
+Are you more into email? [Sign-up for our Building the Open Home Newsletter](/newsletter)
+to get the latest news about features, things happening in our community and
+other news about building an Open Home; straight into your inbox.
+
+## Backward-incompatible changes
+
+{% details "Calendar" %}
+
+`calendar.list_events` uses an outdated response data format and is now
+deprecated, pending removal in Home Assistant 2024.6.
+
+Please use `calendar.get_events`, which supports multiple entities, instead.
+
+The output of this newer service changed slightly, as it now returns a mapping
+of entity IDs to lists of events instead of a list of events.
+
+([@eifinger] - [#102481]) ([documentation](/integrations/calendar))
+
+[@eifinger]: https://github.com/eifinger
+[#102481]: https://github.com/home-assistant/core/pull/102481
+
+{% enddetails %}
+
+{% details "Counter" %}
+
+The previously deprecated `counter.configure` service has been removed.
+
+([@gjohansson-ST] - [#103204]) ([documentation](/integrations/counter))
+
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[#103204]: https://github.com/home-assistant/core/pull/103204
+
+{% enddetails %}
+
+{% details "DSMR" %}
+
+DSMR entities will not automatically update on each received DSMR telegram
+when the value between telegrams has not changed.
+
+If you rely on this, for example, for graphing, please refer to the
+[statistics integration](/integrations/statistics/).
+
+([@gigatexel] - [#104037]) ([documentation](/integrations/dsmr))
+
+[@gigatexel]: https://github.com/gigatexel
+[#104037]: https://github.com/home-assistant/core/pull/104037
+
+---
+
+For users using the 5B version: The previous gas sensor (Gas consumption)
+will change to Gas consumption mbusX. Also, multiple gas sensors will
+be possible.
+
+([@dupondje] - [#84097]) ([documentation](/integrations/dsmr))
+
+[@dupondje]: https://github.com/dupondje
+[#84097]: https://github.com/home-assistant/core/pull/84097
+
+{% enddetails %}
+
+{% details "EZVIZ" %}
+
+The previously deprecated detection sensitivity service has been removed.
+
+([@gjohansson-ST] - [#103392]) ([documentation](/integrations/ezviz))
+
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[#103392]: https://github.com/home-assistant/core/pull/103392
+
+{% enddetails %}
+
+{% details "Genius Hub" %}
+
+The initial state of the smart plug did not reflect the same state as in the
+Genius Hub application. Correcting this creates a backward-incompatible change
+in that the behavior is now correct but different.
+
+If you have an automation that relies on this state, you should check if your
+automation or script is still behaving as expected.
+
+([@GeoffAtHome] - [#102110]) ([documentation](/integrations/geniushub))
+
+[@GeoffAtHome]: https://github.com/GeoffAtHome
+[#102110]: https://github.com/home-assistant/core/pull/102110
+
+{% enddetails %}
+
+{% details "Home Assistant API" %}
+
+When calling a service via the Home Assistant REST API, the service used to be
+canceled on connection drop, which is no longer the case. If you relied on that
+behavior, you would need to revisit the logic. With this change, a connection
+drop will not cancel the service call.
+
+Also, a REST post to call a service with the `/api/services//`
+endpoint will no longer timeout after 10 seconds.
+
+([@Shulyaka] - [#102657]) ([@MartinHjelmare] - [#104709]) ([documentation](/integrations/api))
+
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@Shulyaka]: https://github.com/Shulyaka
+[#102657]: https://github.com/home-assistant/core/pull/102657
+[#104709]: https://github.com/home-assistant/core/pull/104709
+
+{% enddetails %}
+
+{% details "HomeWizard Energy" %}
+
+The HomeWizard HWE-SKE (the wall plugs), SDM230, and SDM630 provided duplicate
+sensors for energy import and export: A total and a tariff of 1.
+
+As only a single tariff is available on those, the total and tariff 1 are
+always the same. To clean this up, tariff 1 has been removed.
+
+If you used this sensor in your energy dashboard, you will need to configure
+your energy dashboard to use the total import/export sensor instead.
+
+([@frenck] - [#104493]) ([documentation](/integrations/homewizard))
+
+[@frenck]: https://github.com/frenck
+[#104493]: https://github.com/home-assistant/core/pull/104493
+
+{% enddetails %}
+
+{% details "Nibe Heat Pump" %}
+
+S-Series entities priority-3102, hot-water-demand-mode-40057, and oper-mode-40238
+are changed from a number entity to a select entity with mapping values for the
+possible choices.
+
+If you have the old number entities enabled, you can delete them since they
+will no longer be provided by the integration.
+
+([@elupus] - [#103788]) ([documentation](/integrations/nibe_heatpump))
+
+[@elupus]: https://github.com/elupus
+[#103788]: https://github.com/home-assistant/core/pull/103788
+
+{% enddetails %}
+
+{% details "Open Exchange Rates" %}
+
+Remove rounding of the exchange rate.
+
+Exchange rates are generally more sensitive to small changes, and some quotes
+need many decimal numbers to be accurate. The Open Exchange Rates service will
+provide different significant digits for different quotes.
+
+You can change the display precision or use a template sensor to customize
+the rounding of the value.
+
+([@MartinHjelmare] - [#103972]) ([documentation](/integrations/openexchangerates))
+
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[#103972]: https://github.com/home-assistant/core/pull/103972
+
+{% enddetails %}
+
+{% details "Ping" %}
+
+The option to set a custom polling interval has been removed. If you are using
+custom interval and really need it, you can use the `homeassistant.update_entity`
+in an automation to poll at your custom pace. See our documentation on
+[defining a custom polling interval](/common-tasks/general/#defining-a-custom-polling-interval)
+for more information.
+
+([@jpbede] - [#103743]) ([documentation](/integrations/ping))
+
+[@jpbede]: https://github.com/jpbede
+[#103743]: https://github.com/home-assistant/core/pull/103743
+
+{% enddetails %}
+
+{% details "Scenes" %}
+
+Support for the, in November 2019 deprecated, attributes `brightness_pct`,
+`color_name`, `flash`, `kelvin`, `profile`, and `transition` have
+been removed from light scenes.
+
+If you have used these attributes in your scenes, you will need to adjust
+those to this change.
+
+([@emontnemery] - [#104254]) ([documentation](/integrations/scene))
+
+[@emontnemery]: https://github.com/emontnemery
+[#104254]: https://github.com/home-assistant/core/pull/104254
+
+{% enddetails %}
+
+{% details "SMTP" %}
+
+The SMTP integration will send images as attachments to a plain text email
+instead of HTML in-line when the `html` field is not set.
+
+Previous behavior was to send all images as HTML in-line even when the `html`
+field was not set. To continue sending images as in-line, please set the
+optional `html` field and include the images
+as `
` within the HTML block as described in the
+[documentation](/integrations/smtp/#usage).
+
+([@aptalca] - [#93562]) ([documentation](/integrations/smtp))
+
+[@aptalca]: https://github.com/aptalca
+[#93562]: https://github.com/home-assistant/core/pull/93562
+
+{% enddetails %}
+
+{% details "Trafikverket Weather Station" %}
+
+Trafikverket Weather has changed its endpoint and is no longer providing the
+information for wind direction and precipitation in plain text, so
+therefore, these sensors have been removed:
+
+- Wind direction text
+- Precipitation name
+
+([@gjohansson-ST] - [#104165]) ([documentation](/integrations/trafikverket_weatherstation))
+
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[#104165]: https://github.com/home-assistant/core/pull/104165
+
+{% enddetails %}
+
+{% details "Weather" %}
+
+`weather.get_forecast` uses an outdated response data format and is now
+deprecated, pending removal in Home Assistant 2024.6.
+
+Please use `weather.get_forecasts`, which supports multiple entities instead.
+
+The output of this newer service changed slightly, as it now returns a mapping
+of entity IDs to lists of forecasts instead of a list of forecasts.
+
+([@eifinger] - [#102534]) ([documentation](/integrations/weather))
+
+[@eifinger]: https://github.com/eifinger
+[#102534]: https://github.com/home-assistant/core/pull/102534
+
+{% enddetails %}
+
+If you are a custom integration developer and want to learn about breaking
+changes and new features available for your integration: Be sure to follow our
+[developer blog][devblog]. The following are the most notable for this release:
+
+- [Config processing and error handling](https://developers.home-assistant.io/blog/2023/11/27/config-validation-and-error-handling/)
+- [Exception handling during service calls and translation support](https://developers.home-assistant.io/blog/2023/11/30/service-exceptions-and-translations/)
+- [New scaling utils and import changes](https://developers.home-assistant.io/blog/2023/12/05/scaling-utils/)
+- [Public Addon Config](https://developers.home-assistant.io/blog/2023/11/06/public-addon-config)
+
+[devblog]: https://developers.home-assistant.io/blog/
+
+## Farewell to the following
+
+The following integrations are also no longer available as of this release:
+
+- **MyQ** has been removed. Read all about it in our [blog post](/blog/2023/11/06/removal-of-myq-integration/).
+- **eQ-3 Bluetooth Smart Thermostats** have been removed. The integration has
+ been in a non-functional state for a long time.
+
+## All changes
+
+Of course, there is a lot more in this release. You can find a list of
+all changes made here: [Full changelog for Home Assistant Core 2023.12](/changelogs/core-2023.12)
diff --git a/source/changelogs/core-2023.12.markdown b/source/changelogs/core-2023.12.markdown
new file mode 100644
index 00000000000..6adeee60405
--- /dev/null
+++ b/source/changelogs/core-2023.12.markdown
@@ -0,0 +1,1718 @@
+---
+title: Full changelog for Home Assistant Core 2023.12
+description: Detailed changelog for the Home Assistant Core 2023.12 release
+replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$
+---
+
+These are all the changes included in the Home Assistant Core 2023.12 release.
+
+For a summary in a more readable format:
+[Release notes blog for this release](/blog/2023/12/06/release-202312/).
+
+## All changes
+
+- Bump version to 2023.12.0dev0 ([@frenck] - [#102798])
+- Add myself as a code owner for ZHA ([@TheJulianJES] - [#102812])
+- Remove code owner. ([@vangorra] - [#102829])
+- Bump homematicip to 1.0.16 ([@hahn-th] - [#102822])
+- Improve docstrings for time related event helpers ([@emontnemery] - [#102839])
+- Add Freebox Home alarm panel ([@nachonam] - [#102607])
+- Update goodwe library to 0.2.32 ([@mletenay] - [#102868])
+- Cleanup exception logging in Idasen Desk ([@abmantis] - [#102617])
+- Use present wording in version bump script ([@joostlek] - [#102897])
+- Bump python-ecobee-api to 0.2.17 ([@myztillx] - [#102900])
+- Add entity translations to Airzone ([@joostlek] - [#99054])
+- Add test for check_config helper ([@emontnemery] - [#102898])
+- Improve dlna_dmr tests ([@emontnemery] - [#102905])
+- Fix inner callback decorators with partials ([@bdraco] - [#102873])
+- Update prettier to 3.0.3 ([@scop] - [#102929])
+- Small cleanups to mobile_app encryption ([@bdraco] - [#102883])
+- Reduce string copy needed to subscribe to entities ([@bdraco] - [#102870])
+- Move has entity name to parent entity in Airzone Cloud ([@Noltari] - [#102961])
+- Small cleanup of legacy groups ([@emontnemery] - [#102918])
+- Add AEMET library data to coordinator and use it for weather platform ([@Noltari] - [#102954])
+- Add current temperature to master climate entity in Advantage Air ([@Bre77] - [#102938])
+- Update caldav to use an DataUpdateCoordinator for fetching data ([@allenporter] - [#102089])
+- Move caldav coordinator to its own file ([@allenporter] - [#102976])
+- Cleanup caldav test fixtures ([@allenporter] - [#102982])
+- Clean up two year old entity migration from Tuya ([@frenck] - [#103003])
+- Use built in config entry from coordinator in HomeWizard ([@joostlek] - [#102959])
+- Clean up old config entry migration from Tuya ([@frenck] - [#103026])
+- Give mqtt test more time to process subscriptions ([@jbouwh] - [#103006])
+- Bump github/codeql-action from 2.22.4 to 2.22.5 (@dependabot - [#103045])
+- Rename Starlink Idle to Sleep ([@boswelja] - [#103048])
+- Add additional sensors to ecoforest integration ([@pjanuario] - [#102734])
+- Show proper name on Airzone Cloud errors ([@Noltari] - [#102998])
+- Show proper name on Airzone errors ([@Noltari] - [#102997])
+- Avoid looking up the callable type for HassJob when we already know it ([@bdraco] - [#102962])
+- Rewrite HomeWizard Energy tests ([@frenck] - [#103000])
+- Update AEMET-OpenData to v0.4.6 ([@Noltari] - [#102996])
+- Rename power to energy in HomeWizard ([@DCSBL] - [#102948])
+- Allow setting hvac mode through set_temperature climate method in Gree integration ([@MislavMandaric] - [#101196])
+- Bump pytrafikverket to 0.3.8 ([@gjohansson-ST] - [#103080])
+- Bumb python-homewizard-energy to 3.1.0 ([@DCSBL] - [#103011])
+- Add serial to Sensibo ([@gjohansson-ST] - [#103089])
+- Add strict typing for input_text ([@jbouwh] - [#103095])
+- No aliases in workday ([@gjohansson-ST] - [#103091])
+- Move Freebox tests to fixtures ([@Narmishka] - [#103128])
+- Use right functions for fixtures in Freebox test ([@joostlek] - [#103135])
+- Create update component for System Bridge ([@timmo001] - [#102966])
+- Avoid path construction for static files cache hit ([@bdraco] - [#102882])
+- Improve reload of legacy groups ([@emontnemery] - [#102925])
+- Avoid enumerating the whole state machine on api service calls ([@bdraco] - [#103147])
+- Move base entity of system_bridge to own module ([@jpbede] - [#103167])
+- Add hardware version to Roomba ([@Xitee1] - [#103171])
+- Support HassTurnOn/Off intents for lock domain ([@tetele] - [#93231])
+- Add reset filter counter button to Renson integration ([@jimmyd-be] - [#103126])
+- Use shorthand device info attribute for roomba ([@jpbede] - [#103176])
+- Add MAC address to roborock device info ([@jpbede] - [#103175])
+- Add bluetooth address to august ([@bdraco] - [#103177])
+- Add MAC address to bsblan device info ([@jpbede] - [#103180])
+- Use constant instead of plain key name for device info connections in roborock and roomba ([@jpbede] - [#103182])
+- Add button platform to Roborock ([@Lash-L] - [#103010])
+- Add modernized fitbit battery level sensor ([@allenporter] - [#102500])
+- Shield service call from cancellation on REST API connection loss ([@Shulyaka] - [#102657])
+- Remove icon in Random ([@joostlek] - [#103235])
+- Use shorthand attributes in Random ([@joostlek] - [#103206])
+- Fix fibaro event handling ([@rappenze] - [#103199])
+- Speed up websocket and ingress with aiohttp-zlib-ng ([@bdraco] - [#103247])
+- Reduce overhead to run event triggers ([@bdraco] - [#103172])
+- Use constant instead of plain key name for device info attributes ([@jpbede] - [#103188])
+- Add buttons to connect/disconnect the Idasen Desk ([@abmantis] - [#102433])
+- Optmize timing excecutor timeout test ([@jbouwh] - [#103276])
+- Support multiple responses for service calls ([@eifinger] - [#96370])
+- Add config flow to CalDAV ([@allenporter] - [#103215])
+- Cleanup weather test ([@gjohansson-ST] - [#103090])
+- Quote entity ids in entity excpetions ([@emontnemery] - [#103286])
+- Add MAC adress to devolo Home Network DeviceInfo ([@Shutgun] - [#103290])
+- Add trigger selector for blueprint ([@piitaya] - [#103050])
+- Add loggers to the duotecno integration ([@Cereal2nd] - [#103300])
+- Remove useless inner function in the base Bluetooth coordinator ([@bdraco] - [#103305])
+- Bump SQLAlchemy to 2.0.23 ([@bdraco] - [#103313])
+- Add translations to Workday state attributes ([@jrieger] - [#103320])
+- Bump pytraccar from 1.0.0 to 2.0.0 ([@ludeeus] - [#103318])
+- Cache the mime type of static files ([@bdraco] - [#103281])
+- Small speed up to async_listen ([@bdraco] - [#103307])
+- Prevent accidentally reusing an entity object ([@emontnemery] - [#102911])
+- Fix failing entity reuse test ([@jpbede] - [#103342])
+- Nextbus: Listify directions ([@ViViDboarder] - [#103337])
+- Reduce template render overhead ([@bdraco] - [#103343])
+- Use `setdefault()` in scaffold script for setting `hass.data` ([@farmio] - [#103338])
+- Add translations to DWD state attributes ([@jrieger] - [#103359])
+- Use pyatmo device type enum instead of string ([@cgtobi] - [#103030])
+- Change log level to debug in Netatmo ([@cgtobi] - [#103365])
+- Add test for firmware update scenario ([@raman325] - [#103314])
+- Add translations to Tankerkoenig state attributes ([@jrieger] - [#103363])
+- AirNow sensors should share device identifier ([@chrisx8] - [#103279])
+- Add DeviceInfo to NINA ([@jpbede] - [#103361])
+- Add translations to speedtest.net state attributes ([@jrieger] - [#103362])
+- Replace/restructure HomeWizard device fixtures to reflect reality ([@frenck] - [#103311])
+- Address late review for NINA ([@jpbede] - [#103367])
+- Set device entry type for dwd_weather_warnings ([@jpbede] - [#103370])
+- Remove deprecated /config/server_control redirect ([@jpbede] - [#103331])
+- Set suggested display precision for HomeWizard Energy power sensors ([@frenck] - [#103369])
+- Remove platform YAML from Command line ([@gjohansson-ST] - [#103202])
+- Remove counter configure service ([@gjohansson-ST] - [#103204])
+- Address late review for blink ([@mkmer] - [#103376])
+- Remove platform yaml from myStrom ([@gjohansson-ST] - [#103378])
+- Add diagnostics support to Schlage ([@dknowles2] - [#103347])
+- Remove unreachable code in logbook ([@bdraco] - [#103309])
+- Bump protobuf to 4.25.0 ([@bdraco] - [#103373])
+- Remove platform YAML from Qnap ([@gjohansson-ST] - [#103377])
+- Remove platform YAML from DWD Weather Warnings ([@gjohansson-ST] - [#103379])
+- Remove platform YAML from LastFM ([@gjohansson-ST] - [#103391])
+- Bump vallox_websocket_api to 4.0.2 ([@slovdahl] - [#103339])
+- Fix CalDAV supported components check when configured from the UI ([@allenporter] - [#103411])
+- Differentiate between warnings and errors in check_config helper ([@emontnemery] - [#102902])
+- Bump zeroconf to 0.120.0 ([@bdraco] - [#103412])
+- Use local variables in Blink ([@mkmer] - [#103430])
+- Fix fritz entity category binary sensor is invalid ([@jbouwh] - [#103470])
+- Remove platform YAML from GeoJSON ([@gjohansson-ST] - [#103393])
+- Refactor fibaro config flow test ([@rappenze] - [#102604])
+- Allow setting HVAC mode through set_temperature service in Airzone integration ([@Noltari] - [#103185])
+- Allow setting HVAC mode through set_temperature service in Airzone Cloud integration ([@Noltari] - [#103184])
+- Refactor tests for Islamic Prayer Times ([@engrbm87] - [#103439])
+- Store Islamic Prayer Times coordinator in 'entry_id' key ([@engrbm87] - [#103405])
+- Bump evohome-async to 0.4.4 ([@zxdavb] - [#103084])
+- Add Check date service for Workday ([@gjohansson-ST] - [#97280])
+- Validate entity category for binary_sensor ([@jbouwh] - [#103464])
+- On Airzone cloud unload logout ([@Noltari] - [#103487])
+- Bump pycfdns from 2.0.1 to 3.0.0 ([@ludeeus] - [#103426])
+- Split out coordinator and add tests for nibe_heatpump ([@elupus] - [#103452])
+- Remove redundant code from the evohome integration ([@zxdavb] - [#103508])
+- Add ServiceValidationError and translation support ([@jbouwh] - [#102592])
+- Update systembridgeconnector to 3.9.4 ([@timmo001] - [#103425])
+- Add device fixtures and tests for HomeWizard Energy Watersensor ([@frenck] - [#103383])
+- Update elgato to 5.1.0 ([@frenck] - [#103530])
+- Bump nextdns to version 2.0.1 ([@bieniu] - [#103531])
+- Bump gios to version 3.2.1 ([@bieniu] - [#103533])
+- Try to avoid re-parsing the content-type in hassio ingress if possible ([@bdraco] - [#103477])
+- Update systembridgeconnector version to 3.9.5 ([@timmo001] - [#103515])
+- Bump nettigo-air-monitor to 2.2.1 ([@joostlek] - [#103529])
+- Automatically convert TTS audio to MP3 on demand ([@synesthesiam] - [#102814])
+- Fix entry data typing in bsblan ([@jpbede] - [#103544])
+- Bump evohome-async to 0.4.6 ([@zxdavb] - [#103534])
+- Update vehicle to 2.2.0 ([@frenck] - [#103545])
+- Add processes count sensor to System Bridge ([@timmo001] - [#103516])
+- Bump reolink_aio to 0.7.15 ([@starkillerOG] - [#103548])
+- Allow WeatherFlow devices to be removed ([@natekspencer] - [#103556])
+- Update pvo to 2.1.0 ([@frenck] - [#103551])
+- Add diagnostics tests to Overkiz integration ([@iMicknl] - [#103560])
+- Update aioairzone-cloud to v0.3.6 ([@Noltari] - [#103535])
+- Bump transmission-rpc to version 7.0.3 ([@engrbm87] - [#103502])
+- Add read-only Caldav todo platform ([@allenporter] - [#103415])
+- Add hvac_action support to melcloud ([@ffourcot] - [#103372])
+- Small cleanups to process_success_login ([@bdraco] - [#103282])
+- Remove Ezviz detection sensitivity service ([@gjohansson-ST] - [#103392])
+- Add select for partial position (garage door) in Overkiz ([@fetzerch] - [#99500])
+- Add support for SomfyHeatingTemperatureInterface in Overkiz integration ([@egguy] - [#83514])
+- Retrieve manufacturer and configuration_url from client in Overkiz integration ([@iMicknl] - [#103585])
+- Add geofencing mode for Somfy Thermostat in Overkiz ([@bilak] - [#103160])
+- Remove MyQ Integration ([@Lash-L] - [#103565])
+- Parametrize DSMR serial config flow tests ([@joostlek] - [#103524])
+- Bump python-songpal to 0.16 ([@rytilahti] - [#103561])
+- Add `zwave_js.refresh_notifications` service ([@raman325] - [#101370])
+- Add file and line annotation to strings when loading yaml ([@emontnemery] - [#103586])
+- Validate empty sentence triggers ([@tetele] - [#103579])
+- Ensure large payloads are compressed in the executor with aiohttp 3.9.0 ([@bdraco] - [#103592])
+- Small code clean up ([@synesthesiam] - [#103603])
+- Add V2C Trydan EVSE integration ([@dgomes] - [#103478])
+- Fix metoffice test_forecast_subscription raises key error ([@jbouwh] - [#103598])
+- Update open-meteo to v0.3.1 ([@frenck] - [#103613])
+- Correct line numbers in yaml node annotations ([@emontnemery] - [#103605])
+- Fix yaml loader tests to test both C and Python implementations ([@emontnemery] - [#103606])
+- Remove obstruction detected property for covers in Overkiz ([@iMicknl] - [#103597])
+- Add instance id to the cloud integration ([@ludeeus] - [#103162])
+- Update radios to v0.2.0 ([@frenck] - [#103614])
+- Remove myself from verisure codeowners ([@frenck] - [#103625])
+- Support continue_on_error for command execution in Overkiz ([@iMicknl] - [#103591])
+- Fix entity category for sensor fails mqtt sensor platform setup ([@jbouwh] - [#103449])
+- Use EntityDescription for Transmission entities ([@engrbm87] - [#103581])
+- Improve HomeKit description of what the PIN looks like ([@gladhorn] - [#103170])
+- Rename YAML loader classes ([@emontnemery] - [#103609])
+- Update sentry-sdk to 1.34.0 ([@frenck] - [#103623])
+- Small cleanup in conftest mocks of PVOutput ([@frenck] - [#103628])
+- Update syrupy to 4.6.0 ([@frenck] - [#103626])
+- Update cryptography to 40.0.5 ([@frenck] - [#103624])
+- Small cleanup in conftest mocks of Sensors.Community ([@frenck] - [#103630])
+- Add HDR switch to Reolink ([@starkillerOG] - [#103550])
+- Bump dbus-fast to 2.13.1 ([@bdraco] - [#103621])
+- Add 4 new sensors to V2C ([@dgomes] - [#103634])
+- Update pytest-picked to 0.5.0 ([@frenck] - [#103631])
+- Bump awesomeversion from 23.8.0 to 23.11.0 ([@ludeeus] - [#103641])
+- Bump pydrawise to 2023.11.0 ([@dknowles2] - [#103638])
+- Reduce modbus validator by using table ([@janiversen] - [#103488])
+- Humanize core config errors in check_config helper ([@emontnemery] - [#103635])
+- Remove illegal int8 from modbus config ([@janiversen] - [#103489])
+- Bump sigstore/cosign-installer from 3.1.2 to 3.2.0 (@dependabot - [#103640])
+- Add vscode task to run changed tests ([@vhartikainen] - [#103501])
+- Remove redundant exception and catch NotSuchTokenException in Overkiz integration ([@iMicknl] - [#103584])
+- Extend climate tests for nibe heatpump ([@elupus] - [#103522])
+- Add duotecno OFF hvac mode ([@Cereal2nd] - [#103223])
+- Bump python-roborock to 0.36.0 ([@Lash-L] - [#103465])
+- Allow removing an entity more than once ([@emontnemery] - [#102904])
+- Update black to 23.11.0 ([@frenck] - [#103644])
+- Wallbox Add Authentication Decorator ([@hesselonline] - [#102520])
+- Fix entity category for binary_sensor fails setup ([@jbouwh] - [#103511])
+- Change NP, NO code to Disarmed ([@ccrepin] - [#103617])
+- Move met coordinator to own module ([@jpbede] - [#103546])
+- Add support for deleting To-do items in Google Tasks ([@allenporter] - [#102967])
+- Bump Python-Roborock to 0.36.1 ([@Lash-L] - [#103662])
+- Expand `zwave_js.set_config_parameter` with additional parameters ([@raman325] - [#102092])
+- Attach correct platform config in check_config warnings and errors ([@emontnemery] - [#103633])
+- Bump aioesphomeapi to 18.2.7 ([@bdraco] - [#103676])
+- Improve AsusWRT integration tests ([@ollo69] - [#102810])
+- Bump pytrydan to 0.3.0 ([@dgomes] - [#103691])
+- Add switch platform to V2C ([@dgomes] - [#103678])
+- Add type annotation for service functions with response ([@tronikos] - [#102813])
+- Migrate to using aiohttp-fast-url-dispatcher ([@bdraco] - [#103656])
+- Update deconz tests to use device & entity registry fixtures ([@frenck] - [#103703])
+- Update nut sensor tests to use parametrize ([@jpbede] - [#103707])
+- Bump zeroconf to 0.122.3 ([@bdraco] - [#103657])
+- Update bond tests to use entity & device registry fixtures ([@jpbede] - [#103708])
+- Update a* tests to use device & entity registry fixtures ([@frenck] - [#103711])
+- Add script_mode parameter to custom intent scripts ([@tetele] - [#102203])
+- Bump pytrydan to 0.4.0 ([@dgomes] - [#103721])
+- Bump aioesphomeapi to 18.3.0 ([@bdraco] - [#103730])
+- Update helper tests to use device & entity registry fixtures ([@frenck] - [#103710])
+- Address flume post merge review comments ([@tronikos] - [#102807])
+- Add myself to vicare codeowners ([@CFenner] - [#103738])
+- Add number to V2C ([@dgomes] - [#103681])
+- Fix Freebox flaky tests ([@Quentame] - [#103745])
+- Fix DST handling in TOD ([@jmwhite5] - [#84931])
+- Bump dbus-fast to 2.14.0 ([@bdraco] - [#103754])
+- Conversation reload with language=None clears all languages ([@synesthesiam] - [#103757])
+- Add helper method to get matter device info ([@marcelveldt] - [#103765])
+- Add myself as code owner for ring integration ([@sdb9696] - [#103767])
+- Add support for responses to `call_service` WS cmd ([@raman325] - [#98610])
+- Add translations for update entity components ([@piitaya] - [#103752])
+- Add support to Google Calendar for Web auth credentials ([@allenporter] - [#103570])
+- Improve OAuth error handling in configuration flows ([@allenporter] - [#103157])
+- Add Komfovent ([@ProstoSanja] - [#95722])
+- Handle BaseException from asyncio gather ([@cdce8p] - [#103814])
+- Update ReadOnlyEntityOptions typing ([@cdce8p] - [#103813])
+- Update mypy to 1.7.0 ([@cdce8p] - [#103800])
+- Improve local calendar based on local todo review feedback ([@allenporter] - [#103483])
+- Bump aioesphomeapi to 18.4.0 ([@bdraco] - [#103817])
+- Bump zeroconf to 0.123.0 ([@bdraco] - [#103830])
+- Update d-e* tests to use entity & device registry fixtures ([@jpbede] - [#103804])
+- Small cleanup in HomeWizard tests ([@frenck] - [#103837])
+- Add Roon volume hooks ([@pavoni] - [#102470])
+- Address late V2C review comments ([@dgomes] - [#103808])
+- Update f-g* tests to use entity & device registry fixtures ([@jpbede] - [#103841])
+- Add entity description mixin to transmission switches ([@engrbm87] - [#103843])
+- Complete tests for HomeWizard kWh Meter SDM230 ([@frenck] - [#103840])
+- More useful message on services.yaml parse error ([@KapJI] - [#103847])
+- Tweak loader.resolve_dependencies ([@emontnemery] - [#103851])
+- Implement update coordinator in Proximity ([@mib1185] - [#103443])
+- Remove useless code from entity helper tests ([@emontnemery] - [#103854])
+- Tweak config._recursive_merge ([@emontnemery] - [#103850])
+- Small improvement of yaml util tests ([@emontnemery] - [#103853])
+- Deduplicate some code in `helpers.check_config.async_check_ha_config_file` ([@emontnemery] - [#103852])
+- Add binary sensors to V2C ([@dgomes] - [#103722])
+- Update a-c* tests to use entity & device registry fixtures ([@jpbede] - [#103793])
+- Add Hitachi Heat Pumps outdoor temperature sensors ([@dotvav] - [#103806])
+- Update h* tests to use entity & device registry fixtures ([@jpbede] - [#103866])
+- Update nibe heatpump to 2.5.0 ([@elupus] - [#103788])
+- Fix invalid oauth2_unauthorized translation ref ([@jbouwh] - [#103873])
+- Address late proximity coordinator review comments ([@mib1185] - [#103879])
+- Hydrawise: Explicitly set switch state on toggle ([@dknowles2] - [#103827])
+- Bump zeroconf to 0.125.0 ([@bdraco] - [#103877])
+- Add tests for configuration validation errors ([@emontnemery] - [#103848])
+- Add tests for package errors ([@emontnemery] - [#103902])
+- Update i-j* tests to use entity & device registry fixtures ([@jpbede] - [#103900])
+- Add Risco communication delay ([@FredericMa] - [#101349])
+- Workday add languages ([@gjohansson-ST] - [#103127])
+- Use decorator for AsusWrt api calls ([@ollo69] - [#103690])
+- Add reauth flow to ViCare integration ([@CFenner] - [#103109])
+- Add tests for yaml syntax errors ([@emontnemery] - [#103908])
+- Bump Islamic prayer times library to 0.0.10 ([@engrbm87] - [#103420])
+- Reset mypy ci cache ([@cdce8p] - [#103910])
+- Remove trailing space from configuration error messages ([@emontnemery] - [#103909])
+- Fix including yaml files with scalar values ([@emontnemery] - [#103914])
+- Cleanup CalDAV test fixtures ([@allenporter] - [#103893])
+- Add `number` state to prometheus metrics ([@maximweb] - [#102518])
+- Prefer IPv4 locations over IPv6 locations for upnp devices/component ([@StevenLooman] - [#103792])
+- Add HTTPS support for Fully Kiosk ([@r01k] - [#89592])
+- Add support to fints for configuring unsupported account_types ([@mricharz] - [#83537])
+- Add 'do not edit' comment to generated files ([@KapJI] - [#103923])
+- Update icmplib privilege detection function to be async in ping integration ([@jpbede] - [#103925])
+- Fix typing for entity_platform.async_register_entity_service ([@KapJI] - [#103777])
+- Update k-l* tests to use entity & device registry fixtures ([@jpbede] - [#103929])
+- Exchange co2signal package with aioelectricitymaps ([@jpbede] - [#101955])
+- Add diagnostic platform and tests to Blink ([@mkmer] - [#102650])
+- Bump intents and hassil ([@synesthesiam] - [#103927])
+- Bump zeroconf to 0.126.0 ([@bdraco] - [#103934])
+- Remove unneeded self.async_write_ha_state() in Blink ([@mkmer] - [#103932])
+- Bump ring_doorbell to 0.8.0 and handle new exceptions ([@sdb9696] - [#103904])
+- Bump dessant/lock-threads from 4.0.1 to 5.0.0 (@dependabot - [#103954])
+- Improve print of line numbers when there are configuration errors ([@emontnemery] - [#103216])
+- Add Vicare volumetric flow and compressor phase sensors ([@fb22] - [#103875])
+- Add device info to generic camera ([@jpbede] - [#103715])
+- Add tests for component configuration with extra keys ([@emontnemery] - [#103959])
+- Add additional test for package errors ([@emontnemery] - [#103955])
+- Improve formatting of config validation errors ([@emontnemery] - [#103957])
+- Improve docstring of config.stringify_invalid ([@emontnemery] - [#103965])
+- Add tests for component configuration with multiple errors ([@emontnemery] - [#103964])
+- Add broadlink climate ([@eifinger] - [#91183])
+- Removed codeowner for growatt_server ([@muppet3000] - [#103970])
+- Add reply_to_message_id to all telegram_bot message types ([@TheKalpit] - [#103566])
+- Add tests for component configuration with documentation links ([@emontnemery] - [#103971])
+- Add HassListAddItem intent ([@synesthesiam] - [#103716])
+- Remove openexchangerates sensor rounding ([@MartinHjelmare] - [#103972])
+- Improve errors for component configuration with multiple errors ([@emontnemery] - [#103969])
+- Bump aiohttp to 3.9.0rc0 for python 3.12 only ([@bdraco] - [#103507])
+- Remove Plugwise entity descriptions required fields mixins ([@frenck] - [#104004])
+- Remove DSMR entity descriptions required fields mixins ([@frenck] - [#104002])
+- Remove LaMetric entity descriptions required fields mixins ([@frenck] - [#104001])
+- Remove Rituals Parfume Genie entity descriptions required fields mixins ([@frenck] - [#103999])
+- Remove Tailscale entity descriptions required fields mixins ([@frenck] - [#103998])
+- Remove Whois entity descriptions required fields mixins ([@frenck] - [#103997])
+- Remove WLED entity descriptions required fields mixins ([@frenck] - [#103996])
+- Remove PVOutput entity descriptions required fields mixins ([@frenck] - [#103993])
+- Remove Elgato entity descriptions required fields mixins ([@frenck] - [#103989])
+- Remove TwenteMilieu entity descriptions required fields mixins ([@frenck] - [#103990])
+- Remove AdGuard entity descriptions required fields mixins ([@frenck] - [#103991])
+- Add reauth flow to ring integration ([@sdb9696] - [#103758])
+- Remove Withings entity descriptions required fields mixins ([@frenck] - [#104008])
+- Remove HomeWizard entity descriptions required fields mixins ([@frenck] - [#103994])
+- Bump github/codeql-action from 2.22.5 to 2.22.6 (@dependabot - [#104016])
+- Remove Reolink entity descriptions required fields mixins ([@frenck] - [#104006])
+- Remove RDW entity descriptions required fields mixins ([@frenck] - [#103995])
+- Update systembridgeconnector to 3.10.0 ([@timmo001] - [#103983])
+- Speed up connecting to ESPHome devices ([@bdraco] - [#104018])
+- Bump zeroconf to 0.127.0 ([@bdraco] - [#104017])
+- Update m* tests to use entity & device registry fixtures ([@jpbede] - [#103980])
+- Add test checking ZHA light restores with `None` attributes ([@TheJulianJES] - [#102806])
+- Improve errors for component configuration with missing keys ([@emontnemery] - [#103982])
+- Correct typo in evohome service call description ([@zxdavb] - [#103986])
+- Add the todo.get_items service ([@allenporter] - [#103285])
+- Remove Discovergy entity description required fields mixin ([@jpbede] - [#104028])
+- Add tests for components with custom validators ([@emontnemery] - [#104024])
+- Remove CO2Signal entity description required fields mixin ([@jpbede] - [#104031])
+- Add reauth flow to Trafikverket Weatherstation ([@joostlek] - [#104027])
+- Refactor tests for discovergy ([@jpbede] - [#103667])
+- Add `release_url` property of Shelly update entities ([@bieniu] - [#103739])
+- Add support for lupusec smoke and water sensor ([@suaveolent] - [#103905])
+- Bumb python-homewizard-energy to 4.0.0 ([@DCSBL] - [#104032])
+- Disable options flow for Shelly Wall Display ([@bieniu] - [#103988])
+- Add zwave_js.set_lock_configuration service ([@raman325] - [#103595])
+- Refactor config.async_log_exception ([@emontnemery] - [#104034])
+- Add HassGetWeather intent ([@synesthesiam] - [#102613])
+- Migrate Hydrawise to an async client library ([@dknowles2] - [#103636])
+- Bump python-holidays to 0.36 ([@jrieger] - [#104055])
+- Add CalDAV To-do item support for Add, Update, and Delete ([@allenporter] - [#103922])
+- Attach relevant config to check_config errors ([@emontnemery] - [#104048])
+- Add reauth support to Schlage ([@dknowles2] - [#103351])
+- Remove force_update from all DSMR entities ([@gigatexel] - [#104037])
+- Improve formatting of package errors ([@emontnemery] - [#103976])
+- Use relative paths in configuration validation error messages ([@emontnemery] - [#104064])
+- Use core domain constant in bootstrap ([@emontnemery] - [#104061])
+- Add HTTP protocol support to AsusWRT ([@ollo69] - [#95720])
+- Add diagnostics platform to ring integration ([@sdb9696] - [#104049])
+- Fix mock typing for Discovergy ([@jpbede] - [#104047])
+- Refer to domain configuration in custom validator errors ([@emontnemery] - [#104065])
+- Remove Deconz entity descriptions required fields mixins ([@frenck] - [#104009])
+- Add tests for Discovergy to reach full test coverage ([@jpbede] - [#104039])
+- Remove mock_entity_platform test helper ([@emontnemery] - [#104073])
+- Add websocket command to capture audio from a device ([@synesthesiam] - [#103936])
+- Add "Jasco Products" manufacturer to ZHA `ForceOnLight` ([@TheJulianJES] - [#104089])
+- Add catsmanac to enphase_envoy codeowners ([@catsmanac] - [#104086])
+- Replace deprecated linting and formatting settings by extensions ([@mib1185] - [#104050])
+- Add myself as codeowner for Proximity ([@mib1185] - [#104100])
+- Bump aioesphomeapi to 18.5.1 ([@bdraco] - [#104085])
+- Set nextcloud integration sensors as numerical values ([@laurentriffard] - [#103856])
+- Bump pyinsteon to 1.5.2 ([@teharris1] - [#104098])
+- Adjust logbook message for assist pipeline recording ([@synesthesiam] - [#104105])
+- Avoid duplicate calls to color_supported and color_temp_supported in emulated_hue ([@bdraco] - [#104096])
+- Add device fixtures and tests for HomeWizard Energy 3-phase kWh meter ([@frenck] - [#104118])
+- Bump github/codeql-action from 2.22.6 to 2.22.7 (@dependabot - [#104114])
+- Bump aioesphomeapi to 18.5.2 ([@bdraco] - [#104113])
+- Update RestrictedPython to 7.0 ([@cdce8p] - [#104117])
+- Bumb python-homewizard-energy to 4.1.0 ([@DCSBL] - [#104121])
+- Use device area as context during intent recognition ([@synesthesiam] - [#103939])
+- Fix typo in Netatmo homekit auto-discovery ([@codyc1515] - [#104060])
+- Improve formatting of package errors ([@emontnemery] - [#104078])
+- Remove marthoc as ecobee code owner ([@marthoc] - [#104053])
+- Context slot decisions moved into hassil ([@synesthesiam] - [#104132])
+- Fix ZHA covering mode for Aqara E1 curtain driver not initialized ([@TheJulianJES] - [#102749])
+- Change ZHA Tuya plugs to use quirk IDs ([@TheJulianJES] - [#102489])
+- Fix ZHA VZM35-SN attributes ([@codyhackw] - [#102924])
+- Add constants to ring integration ([@sdb9696] - [#104134])
+- Fix colors in check_config script ([@emontnemery] - [#104069])
+- Reduce nesting in discovergy setup ([@jpbede] - [#104127])
+- Add config flow for Ping ([@jpbede] - [#103743])
+- Use relative paths in yaml syntax error messages ([@emontnemery] - [#104084])
+- Improve formatting of component errors ([@emontnemery] - [#104081])
+- Fix zeroconf mocking ([@bdraco] - [#104144])
+- Bump aioesphomeapi to 18.5.3 ([@bdraco] - [#104141])
+- Update aiohttp to 3.9.0 (Python 3.12) ([@cdce8p] - [#104152])
+- Add update coordinator to ping ([@jpbede] - [#104148])
+- Add Image to Roborock to display maps ([@Lash-L] - [#102941])
+- Update Idasen Desk to fulfill Silver requirements ([@abmantis] - [#102979])
+- Pickup tplink codeowner ([@bdraco] - [#104189])
+- Add entity tests for ping ([@jpbede] - [#104168])
+- Fix integration failed when freebox is configured in bridge mode ([@jflefebvre06] - [#103221])
+- Bump mopeka-iot-ble to 0.5.0 ([@coffeehorn] - [#104186])
+- Refactor async_update in Honeywell ([@mkmer] - [#103069])
+- New api endpoint for Trafikverket Weather ([@gjohansson-ST] - [#104165])
+- Small speed up to constructing Bluetooth service_uuids ([@bdraco] - [#104193])
+- Deprecate calendar.list_events ([@eifinger] - [#102481])
+- Reolink update current firmware state after install attempt ([@starkillerOG] - [#104210])
+- Change name of universal media player to sentence case ([@joostlek] - [#104204])
+- Bump reolink_aio to 0.8.0 ([@starkillerOG] - [#104211])
+- Add new sensors to Trafikverket Weather ([@gjohansson-ST] - [#104199])
+- Add Reolink firmware version for IPC cams ([@starkillerOG] - [#104212])
+- Deprecate weather.get_forecast ([@eifinger] - [#102534])
+- Add Reolink day night switch threshold ([@starkillerOG] - [#104219])
+- Add listeners for roborock ([@Lash-L] - [#103651])
+- Use ulid_now instead of ulid_at_timestamp if no timestamp is passed ([@bdraco] - [#104226])
+- Bump aioesphomeapi to 18.5.4 ([@bdraco] - [#104187])
+- Add height sensor to Idasen Desk integration ([@abmantis] - [#103324])
+- Reolink: fix typo in UI strings ([@c0ffeeca7] - [#104236])
+- Fix docstring in yaml util ([@emontnemery] - [#104240])
+- Bump protobuf to 4.25.1 ([@bdraco] - [#104231])
+- Quote domain name in setup logs ([@emontnemery] - [#104239])
+- Don't mutate config in the check_config helper ([@emontnemery] - [#104241])
+- Rename some check_config test cases ([@emontnemery] - [#104244])
+- Small improvement of config tests ([@emontnemery] - [#104243])
+- Update twentemilieu to 2.0.1 ([@frenck] - [#104250])
+- Fix Freebox Home alarm & improve platform tests ([@Quentame] - [#103475])
+- Discover new added device at runtime in AVM Fritz!Smarthome ([@mib1185] - [#103859])
+- Use send_json_auto_id in todo tests ([@emontnemery] - [#104245])
+- Use entity description for Reolink cameras ([@starkillerOG] - [#104139])
+- Address late fritzbox coordinator runtime device discover review comments ([@mib1185] - [#104267])
+- Update elgato to 5.1.1 ([@frenck] - [#104252])
+- Use more specific exception type for imap decoding ([@jbouwh] - [#104227])
+- Update pvo to 2.1.1 ([@frenck] - [#104271])
+- Bump yt-dlp to 2023.11.16 ([@blastoise186] - [#104255])
+- Fix default lock code for lock services ([@oyvindwe] - [#103463])
+- Add `todo.remove_completed_items` service call ([@edenhaus] - [#104035])
+- Bump pyOverkiz to 1.13.3 ([@iMicknl] - [#104280])
+- Update adguardhome to 0.6.3 ([@frenck] - [#104253])
+- Bump aioesphomeapi to 18.5.5 ([@bdraco] - [#104285])
+- Remove support for deprecated light attributes from light scenes ([@emontnemery] - [#104254])
+- Bump easyenergy lib to v1.0.0 ([@klaasnicolaas] - [#104289])
+- Bump energyzero lib to v1.0.0 ([@klaasnicolaas] - [#104288])
+- Change confusing parameter naming in reload helper ([@emontnemery] - [#104257])
+- Set unique_id by base entity in ViCare integration ([@CFenner] - [#104277])
+- Add Fastdotcom config flow ([@erwindouna] - [#98686])
+- Update vehicle to 2.2.1 ([@frenck] - [#104299])
+- Clean stt and tts codeowners ([@MartinHjelmare] - [#104307])
+- Reolink add animal detection ([@starkillerOG] - [#104216])
+- Bump aiowaqi to 3.0.1 ([@joostlek] - [#104314])
+- Reolink improve error handeling ([@starkillerOG] - [#104301])
+- Set Motion Blinds battery sensor as a diagnostic ([@allenporter] - [#104329])
+- Make non-selected Roborock images diagnostic ([@Lash-L] - [#104233])
+- Rewrite APCUPSD sensors using DataUpdateCoordinator ([@yuxincs] - [#88467])
+- Move to asyncio.timeout for APC integration ([@klaasnicolaas] - [#104340])
+- Reolink add media browser for playback of recordings ([@starkillerOG] - [#103407])
+- Add reauthentication to Roborock ([@Lash-L] - [#104215])
+- Bump aiounifi to v66 ([@Kane610] - [#104336])
+- Add PoE power cycle button to UniFi integration ([@Kane610] - [#104332])
+- Add RGB, RGBW and RGBWW capability to template.light ([@Vaarlion] - [#86047])
+- Add Picnic shopping cart as Todo list ([@DCSBL] - [#102855])
+- Bump aioesphomeapi to 18.5.6 ([@bdraco] - [#104341])
+- Reolink use parenthesis for multi-line lambda ([@starkillerOG] - [#104321])
+- Add Linear Garage Door integration ([@IceBotYT] - [#91436])
+- Update sentry-sdk to 1.36.0 ([@frenck] - [#104317])
+- Support tilt commands for DynamicVenetianBlind in Overkiz ([@iMicknl] - [#104330])
+- Update odp-amsterdam lib to v6.0.0 ([@klaasnicolaas] - [#104339])
+- Plugwise: limit _attr_max_temp to 35.0 for thermostats that report a max of 100. ([@bouwew] - [#104324])
+- Remove MTrab from Repetier CodeOwners ([@MTrab] - [#104356])
+- Fix idasen_desk coordinator typing ([@cdce8p] - [#104361])
+- Add recording status for Philips TV ([@Floyer007] - [#94691])
+- Add local API support to Overkiz integration (Somfy TaHoma Developer Mode) ([@iMicknl] - [#71644])
+- Add better error handling for Roborock initialization ([@Lash-L] - [#104181])
+- Remove Overkiz config flow constructor ([@joostlek] - [#104375])
+- Rename variable in Overkiz config flow ([@joostlek] - [#104377])
+- Add binary sensor tests to Skybell ([@tkdrob] - [#79568])
+- Migrate Aurora_ABB_Powerone to DataUpdateCoordinator ([@davet2001] - [#72363])
+- Support for more features on smartthings AC ([@jakubcermak] - [#99424])
+- Improve Unifi switch entity unique ID naming function ([@akx] - [#104370])
+- Bump reolink-aio to 0.8.1 ([@starkillerOG] - [#104382])
+- Test platform setup errors are notified ([@jbouwh] - [#104384])
+- Add Nobø Hub week profiles and global override ([@oyvindwe] - [#80866])
+- Add Reolink serial number ([@starkillerOG] - [#104383])
+- Speed up ESPHome connection setup ([@bdraco] - [#104304])
+- Add number entities to adjust heating curve in ViCare integration ([@CFenner] - [#103901])
+- Update p1monitor lib to v3.0.0 ([@klaasnicolaas] - [#104395])
+- Add Netatmo temperature services ([@deosrc] - [#104124])
+- Bump dessant/lock-threads from 5.0.0 to 5.0.1 (@dependabot - [#104403])
+- Add pvpc hourly pricing optional API Token support ([@azogue] - [#85767])
+- Bump pysuez to 0.2.0 ([@nachonam] - [#104338])
+- Update gridnet lib to v5.0.0 ([@klaasnicolaas] - [#104396])
+- Force IPv4 when getting location information ([@ludeeus] - [#104363])
+- Add re-auth config flow strings for Sure Petcare ([@klaasnicolaas] - [#104357])
+- Add support to fully_kiosk for hybrid local push/pull switches using MQTT ([@mheath] - [#89010])
+- Blebox update IP address if already configured via zeroconf ([@riokuu] - [#90511])
+- Add select entity for zwave_js Door Lock CC ([@raman325] - [#104292])
+- Add diagnostics platform to Reolink ([@starkillerOG] - [#104378])
+- Make SMTP notify send images as attachments if html is disabled ([@aptalca] - [#93562])
+- Add Huawei LTE restart and clear traffic statistics buttons ([@scop] - [#91967])
+- Handle 403 errors in UniFi ([@Kane610] - [#104387])
+- Bump aioesphomeapi to 18.5.7 ([@bdraco] - [#104426])
+- Bump yeelight to 0.7.14 ([@dsypniewski] - [#104439])
+- Bump Python Roborock to 0.36.2 ([@Lash-L] - [#104441])
+- Update mypy to 1.7.1 ([@cdce8p] - [#104434])
+- Update nibe heatpump dependency to 2.5.1 ([@elupus] - [#104429])
+- Add Mypermobil integration ([@IsakNyberg] - [#95613])
+- Clean mqtt patch.dict config entries ([@MartinHjelmare] - [#104449])
+- Bump github/codeql-action from 2.22.7 to 2.22.8 (@dependabot - [#104444])
+- Add Z-wave climate sensor override for Heatit Z-TRM6 ([@geirra] - [#103896])
+- Rework some UniFi unique IDs ([@Kane610] - [#104390])
+- Introduce base entity for ping ([@jpbede] - [#104197])
+- Remove Wiz entity descriptions required fields mixins ([@frenck] - [#104005])
+- Await step in config-flow instead of moving to another form ([@azogue] - [#104412])
+- Support new deCONZ Particulate Matter endpoint ([@Kane610] - [#104276])
+- Chunk purging attributes and data ids for old SQLite versions ([@bdraco] - [#104296])
+- Reolink ptz service to specify move speed ([@starkillerOG] - [#104350])
+- Deprecate Harmony switch platform ([@tkdrob] - [#92787])
+- Allow for manual config entry of Insteon PLM path ([@teharris1] - [#103705])
+- Only show Google Tasks that are parents and fix ordering ([@allenporter] - [#103820])
+- Attach Matter info to Google Assistant serialize ([@balloob] - [#103768])
+- Add support for Shelly Wall Display in thermostat mode ([@bieniu] - [#103937])
+- Allow adding items Picnic shopping cart by searching ([@DCSBL] - [#102862])
+- Enumerate openai.Models to validate config ([@joseph39] - [#99438])
+- Support for group into command_line auth provider ([@Hejki] - [#92906])
+- Support HitachiAirToAirHeatPump (hlrrwifi:HLinkMainController) in Overkiz ([@dotvav] - [#103803])
+- Add Switch platform for motion detection in Blink ([@mkmer] - [#102789])
+- Extend `auth/providers` endpoint and add `/api/person/list` endpoint for local ip requests ([@edenhaus] - [#103906])
+- Raise and suppress stack trace when reloading yaml fails ([@jbouwh] - [#102410])
+- Add compWaterHeater to ecobee HVAC actions ([@marcolivierarsenault] - [#103278])
+- Add toggle switch to Daikin HVAC units ([@disforw] - [#95954])
+- Use AsyncMock and fixtures in co2signal tests ([@jpbede] - [#104041])
+- Bump aioshelly to version 6.1.0 ([@bieniu] - [#104456])
+- Add HVACMode.OFF to Plugwise Adam ([@bouwew] - [#103360])
+- Do not notify config errors during logging ([@jbouwh] - [#104466])
+- Add sensor tests to co2signal ([@jpbede] - [#104464])
+- Fix HomeWizard sensors unavailable when value is '0' ([@DCSBL] - [#104302])
+- Fix hassio mqtt discovery CI test ([@jbouwh] - [#104463])
+- Bump ring_doorbell to 0.8.2 with listen extra ([@sdb9696] - [#104033])
+- Bump aioesphomeapi to 18.5.9 ([@bdraco] - [#104465])
+- Complete tests for HomeWizard energy plug HWE-SKT ([@frenck] - [#104474])
+- Bump bluetooth-data-tools to 1.15.0 ([@bdraco] - [#104480])
+- Rename ex to exc as name for exceptions ([@jbouwh] - [#104479])
+- Improve test coverage for ESPHome deep sleep entities ([@bdraco] - [#104476])
+- Remove chatty ESPHome state debug logging ([@bdraco] - [#104477])
+- Change to language selector in Workday ([@gjohansson-ST] - [#104472])
+- Add long term statistics for IPP ink/toner levels ([@tronikos] - [#102632])
+- Add available state to OctoPrint camera ([@Xitee1] - [#104162])
+- Fix link in Tibber configuration menu ([@Danielhiversen] - [#104322])
+- Allow overriding blueprints on import ([@balloob] - [#103340])
+- Add translation keys to ViCare integration ([@CFenner] - [#104425])
+- Use iso8601 format when fetching prayer times ([@engrbm87] - [#104458])
+- Bump aiolifx and aiolifx-themes to support new LIFX devices ([@Djelibeybi] - [#104498])
+- Update sentry-sdk to 1.37.1 ([@frenck] - [#104499])
+- Add HassClimateGetTemperature intent ([@synesthesiam] - [#102831])
+- Add additional sensors for Tuya DIN ([@cronjefourie] - [#98752])
+- Add reuse functions to access circuits, burners and compressors in ViCare integration ([@CFenner] - [#104371])
+- Add scene.delete service for dynamically created scenes (with scene.create) ([@tetele] - [#89090])
+- Bump aioesphomeapi to 19.0.0 ([@bdraco] - [#104512])
+- Add address to error text in modbus ([@janiversen] - [#104520])
+- Bump aioesphomeapi to 19.0.1 ([@bdraco] - [#104527])
+- Bump PyViCare to 2.29.0 ([@CFenner] - [#104516])
+- Bump aiowithings to 1.0.3 ([@joostlek] - [#104530])
+- Update nibe heatpump dependency to 2.5.2 ([@elupus] - [#104526])
+- Add alert to zwave_js device info page for custom device config ([@raman325] - [#104115])
+- Fix translation key in ViCare integration ([@CFenner] - [#104536])
+- Adjust HomeWizard test fixtures to match actual devices ([@frenck] - [#104537])
+- Migrate Epson to has entity name ([@joostlek] - [#98164])
+- Remove duplicate sensors on single phase HomeWizard meters ([@frenck] - [#104493])
+- Move APCUPSd coordinator to separate file ([@joostlek] - [#104540])
+- Add entity translations to Balboa ([@joostlek] - [#104543])
+- Plugwise: bug-fix for Anna + Techneco Elga combination ([@bouwew] - [#104521])
+- Bump `nextdns` to version 2.1.0 ([@bieniu] - [#104545])
+- Remove Shelly Wall Display switch entity only if the relay is used as the thermostat actuator ([@bieniu] - [#104506])
+- Fix async issue in ViCare integration ([@CFenner] - [#104541])
+- Cleanup Discovergy a bit ([@jpbede] - [#104552])
+- Add translation key for some mqtt exceptions ([@jbouwh] - [#104550])
+- Add OurGroceries integration ([@OnFreund] - [#103387])
+- Update modbus validate table to be 3 state, to simplify the code ([@janiversen] - [#104514])
+- Add Hitachi air to air heat pumps to the Climate platform ([@dotvav] - [#104517])
+- Bump aioesphomeapi to 19.1.0 ([@bdraco] - [#104557])
+- Wallbox Change Minimum Value Charging Current ([@hesselonline] - [#104553])
+- Add reauth flow to co2signal ([@jpbede] - [#104507])
+- Bump `nettigo-air-monitor` to version 2.2.2 ([@bieniu] - [#104562])
+- Improve user-facing error messages in HomeWizard Energy ([@frenck] - [#104547])
+- Bump aioesphomeapi to 19.1.1 ([@bdraco] - [#104569])
+- Bump `accuweather` to version 2.1.1 ([@bieniu] - [#104563])
+- Remove code owner for envisalink integration ([@ufodone] - [#103864])
+- Bump aiowithings to 2.0.0 ([@joostlek] - [#104579])
+- Add init test to Blink ([@mkmer] - [#103263])
+- Poll econet water heater once an hour ([@CodingSquirrel] - [#90961])
+- Bump `gios` to version 3.2.2 ([@bieniu] - [#104582])
+- Improve picnic typing ([@cdce8p] - [#104587])
+- Add textual representation entities for Fronius status codes ([@farmio] - [#94155])
+- Deprecate legacy api auth provider ([@edenhaus] - [#104409])
+- Switch formatting from black to ruff-format ([@akx] - [#102893])
+- Handle preset change errors in ViCare integration ([@CFenner] - [#103992])
+- Bump aiohttp-fast-url-dispatcher to 0.3.0 ([@bdraco] - [#104592])
+- Support HTTPS connections to Huawei LTE devices ([@scop] - [#86119])
+- Use non-persistent connection for MPD ([@thijsputman] - [#94507])
+- OurGroceries review comments ([@OnFreund] - [#104606])
+- CI: simplify Ruff-related things ([@akx] - [#104602])
+- Remove duplicate fixture from bsblan ([@jpbede] - [#104612])
+- Update leftover comment reference from black to ruff ([@scop] - [#104605])
+- Bump ring_doorbell to 0.8.3 ([@sdb9696] - [#104611])
+- Issue bytes vs str related warnings from tests ([@scop] - [#101186])
+- Upgrade huawei-lte-api to 1.7.3 ([@scop] - [#104613])
+- Bump aioesphomeapi to 19.1.3 ([@bdraco] - [#104628])
+- Bump aioesphomeapi to 19.1.4 ([@bdraco] - [#104629])
+- Add websocket `todo/item/subscribe` for subscribing to changes to todo list items ([@allenporter] - [#103952])
+- Move to new service handeling methods in Blink ([@mkmer] - [#103435])
+- Remove eq3btsmart integration ([@rytilahti] - [#94698])
+- Add field description for Roku host ([@frenck] - [#104631])
+- Fix async issue in ViCare climate entity ([@CFenner] - [#104619])
+- Set min, max, and step for ViCare number entities ([@CFenner] - [#104593])
+- Fix Tractive switch availability ([@bieniu] - [#104502])
+- Update cryptography to 41.0.7 ([@frenck] - [#104632])
+- Add To-do due date and description fields ([@allenporter] - [#104128])
+- Update stookwijzer api to atlas leefomgeving ([@fwestenberg] - [#103323])
+- Use shorthand attributes in HVV departures ([@jpbede] - [#104637])
+- Add Devialet integration ([@fwestenberg] - [#86551])
+- Add tag name to `tag_scanned` event data ([@glanch] - [#97553])
+- Bump aiosomecomfort to 0.0.23 ([@mkmer] - [#104641])
+- Add info what to enter into host field ([@c0ffeeca7] - [#104658])
+- Bump aiosomecomfort to 0.0.24 ([@mkmer] - [#104649])
+- Bump pyAdax to 0.4.0 ([@Danielhiversen] - [#104660])
+- Bump aioesphomeapi to 19.1.7 ([@bdraco] - [#104644])
+- Add DeviceInfo to Wolf SmartSet Entities ([@Adi146] - [#104642])
+- Fix human readable huawei_lte sensor names ([@scop] - [#104672])
+- Significantly improve performance for some cases of the history start time state query ([@gaaf] - [#99450])
+- Remove BLE connection state unsubscribe workaround from ESPHome ([@bdraco] - [#104674])
+- Bump aioesphomeapi to 19.2.0 ([@bdraco] - [#104677])
+- Add humidity and aux heat support to ESPHome climate entities ([@kroimon] - [#103807])
+- Revert "Introduce base entity for ping" ([@jpbede] - [#104682])
+- Bump aioairq to 0.3.1 ([@Sibgatulin] - [#104659])
+- Host field description: implement review from #104658 ([@c0ffeeca7] - [#104685])
+- Add field description for Shelly host ([@bieniu] - [#104686])
+- Add PECO smart meter binary_sensor ([@IceBotYT] - [#71034])
+- Agent DVR and Android IP webcam: Add description of host field ([@c0ffeeca7] - [#104688])
+- Fix HA state update in ViCare number platform ([@CFenner] - [#104687])
+- Bump zha-quirks to 0.0.107 ([@TheJulianJES] - [#104683])
+- Optimize async executor use in ViCare integration ([@CFenner] - [#104645])
+- ASUSWRT: add description of host field. Fix title ([@c0ffeeca7] - [#104690])
+- Add a host field description for Bravia, Brother and NAM ([@bieniu] - [#104689])
+- Add Tuya Smart Water Timer ([@syepes] - [#95053])
+- Atag: add host field description ([@c0ffeeca7] - [#104691])
+- Make huawei_lte operator search and preferred network modes translatable ([@scop] - [#104673])
+- Send localization info on websocket_api script errors ([@jbouwh] - [#104638])
+- Balboa, Bond, Bosch: add host field description ([@c0ffeeca7] - [#104695])
+- Autogenerate Dockerfile ([@emontnemery] - [#104669])
+- Bump ZHA dependencies ([@puddly] - [#104335])
+- Add proj dependency to our wheels builder ([@frenck] - [#104699])
+- Partially revert #103807: Remove deprecated aux heat support from ESPHome climate entities ([@kroimon] - [#104694])
+- Add Option For Kelvin Unit To Color Temperature Selector ([@schelv] - [#103799])
+- Add proj-util dependency to our wheels builder ([@frenck] - [#104708])
+- Assign specific error code for HomeAssistantError on websocket_api connection exceptions ([@jbouwh] - [#104700])
+- Rename todo due_date_time parameter to due_datetime ([@MartinHjelmare] - [#104698])
+- Add proj-dev dependency to our wheels builder ([@frenck] - [#104711])
+- Use id as location data in Trafikverket Camera ([@gjohansson-ST] - [#104473])
+- Update frontend to 20231129.0 ([@bramkragten] - [#104710])
+- Use ServiceValidationError for invalid fan preset_mode and move check to fan entity component ([@jbouwh] - [#104560])
+- Improve devialet coordinator typing ([@cdce8p] - [#104707])
+- Add new sensors of Kostal Plenticore integration ([@stegm] - [#103802])
+- Remove rest api service call timeout ([@MartinHjelmare] - [#104709])
+- Revert "Update stookwijzer api to atlas leefomgeving (#103323)" ([@frenck] - [#104705])
+- Tweak dockerfile generation ([@emontnemery] - [#104717])
+- Bump aioesphomeapi to 19.2.1 ([@kroimon] - [#104703])
+- Rename variable in Epson tests ([@joostlek] - [#104722])
+- Add support for multiple mbus devices in dsmr ([@dupondje] - [#84097])
+- Bump aiohttp to 3.9.1 ([@bdraco] - [#104176])
+- Avoid double refresh when adding entities in bsblan ([@jpbede] - [#104647])
+- Update frontend to 20231129.1 ([@bramkragten] - [#104723])
+- Fix mqtt cover state is open after receiving stopped payload ([@jbouwh] - [#104726])
+- Change super class order in Withings Calendar ([@joostlek] - [#104721])
+- Improve MQTT json light brightness scaling ([@jbouwh] - [#104510])
+- Remove redundant websocket_api exception handler ([@jbouwh] - [#104727])
+- Fix TTS streaming for VoIP ([@synesthesiam] - [#104620])
+- Bump bimmer-connected to 0.14.5 ([@rikroe] - [#104715])
+- Remove aiohttp enable_compression helper ([@bdraco] - [#104174])
+- Add multiple option to text selector ([@piitaya] - [#104635])
+- Address review comments for Picnic ([@DCSBL] - [#104732])
+- Remove HomeAssistantAccessLogger ([@bdraco] - [#104173])
+- Bump intents to 2023.11.29 ([@synesthesiam] - [#104738])
+- Use config entry callbacks in Gree ([@joostlek] - [#104740])
+- Avoid db hit and executor job for impossible history queries ([@bdraco] - [#104724])
+- Remove aiohttp cancel on disconnect workaround ([@bdraco] - [#104175])
+- Add due date and description to CalDAV To-do ([@allenporter] - [#104656])
+- Fix wirelesstag unique_id to use uuid instead of tag_id ([@sergeymaysak] - [#104394])
+- Fix Philips TV none recordings_list ([@Floyer007] - [#104665])
+- Bump pynws to 1.6.0 ([@cgarwood] - [#104679])
+- Axis: add host and user name field description ([@c0ffeeca7] - [#104693])
+- Update initial translation for ViCare water heater entity ([@CFenner] - [#104696])
+- Revert "Add proj dependency to our wheels builder (#104699)" ([@frenck] - [#104704])
+- Skip TTS when text is empty ([@synesthesiam] - [#104741])
+- Bump zamg to 0.3.3 ([@killer0071234] - [#104756])
+- Debug level logging for DSMR migration code ([@jbouwh] - [#104757])
+- Fix bug in rainbird device ids that are int serial numbers ([@allenporter] - [#104768])
+- Broadlink, BSB-Lan: add host field description ([@c0ffeeca7] - [#104770])
+- Comelit, Coolmaster: add host field description ([@c0ffeeca7] - [#104771])
+- Deconz to DoorBird: add host field description ([@c0ffeeca7] - [#104772])
+- Dremel to Duotecno: add host field description ([@c0ffeeca7] - [#104776])
+- Ecoforest to Emonitor: add host field description ([@c0ffeeca7] - [#104778])
+- Enphase to Evil: add host field description ([@c0ffeeca7] - [#104779])
+- FiveM to Foscam: add host field description ([@c0ffeeca7] - [#104782])
+- Freebox to FRITZ!Box add host field description ([@c0ffeeca7] - [#104784])
+- Fix Fastdotcom no entity ([@erwindouna] - [#104785])
+- Goalzero to HEOS: add host field description ([@c0ffeeca7] - [#104786])
+- Frontier to Glances: add host field description ([@c0ffeeca7] - [#104787])
+- HLK to Hyperion: add host field description ([@c0ffeeca7] - [#104789])
+- iAlarm to Keenetic: add host field description ([@c0ffeeca7] - [#104791])
+- KMtronic to LG Soundbar: add host field description ([@c0ffeeca7] - [#104792])
+- Fix device sync to Google Assistant if Matter integration is active ([@marcelveldt] - [#104796])
+- Fix runtime error in CalDAV ([@mib1185] - [#104800])
+- Use .get for Fully Kiosk SSL settings in coordinator ([@cgarwood] - [#104801])
+- Bump python-matter-server to version 5.0.0 ([@marcelveldt] - [#104805])
+- Add NodeStrClass.__voluptuous_compile__ ([@emontnemery] - [#104808])
+- Make Shelly Wall Display thermostat implementation compatible with firmware 1.2.5 ([@bieniu] - [#104812])
+- Add Humidity device class to LaCross humidity sensor ([@Mappenhei] - [#104814])
+- Address late review for the host field description in Shelly integration ([@bieniu] - [#104815])
+- Update frontend to 20231130.0 ([@bramkragten] - [#104816])
+- Restore renamed yaml loader classes and warn when used ([@emontnemery] - [#104818])
+- Revert "Add Komfovent (#95722)" ([@frenck] - [#104819])
+- Add CB3 descriptor to ZHA manifest ([@Haerteleric] - [#104071])
+- Late review updates for Blink ([@mkmer] - [#104755])
+- Update Matter test fixtures to schema version 5 ([@marcelveldt] - [#104829])
+- Use deprecated_class decorator in deprecated YAML loader classes ([@emontnemery] - [#104835])
+- Bump Mill library ([@Danielhiversen] - [#104836])
+- Fix Harmony switch removal version ([@tkdrob] - [#104838])
+- Filter out zero readings for DSMR enery sensors ([@jbouwh] - [#104843])
+- Fix handling of unrecognized mimetypes in Synology DSM photos integration ([@mib1185] - [#104848])
+- Lifx, Lutron: add host field description ([@c0ffeeca7] - [#104855])
+- Modern Forms to MyStrom: add host field description ([@c0ffeeca7] - [#104856])
+- Nanoleaf to Nut: add host field description ([@c0ffeeca7] - [#104857])
+- Obihai to OpenGarage: add host field description ([@c0ffeeca7] - [#104858])
+- Ping to Qnap: add host field description ([@c0ffeeca7] - [#104859])
+- Radio Thermostat to Renson: add host field description ([@c0ffeeca7] - [#104860])
+- Reolink to Ruckus: add host field description ([@c0ffeeca7] - [#104861])
+- SamsungTV to Snapcast: add host field description ([@c0ffeeca7] - [#104862])
+- Solar-Log to Soundtouch: add host field description ([@c0ffeeca7] - [#104863])
+- Reolink schedule update after firmware update ([@starkillerOG] - [#104867])
+- T-add host field description ([@c0ffeeca7] - [#104871])
+- U-V add host field description ([@c0ffeeca7] - [#104872])
+- Link second Hue host field description ([@jbouwh] - [#104885])
+- Fix incompatible 'measurement' state and 'volume' device class warnings in Overkiz ([@pdecat] - [#104896])
+- Fix dsmr zero reconnect interval option could crash HA ([@jbouwh] - [#104900])
+- Fix get_events name in calendar strings ([@gjohansson-ST] - [#104902])
+- Fix Lyric HVAC mode reset on temperature change ([@apt-itude] - [#104910])
+- Only raise issue if switch used in Logitech Harmony Hub ([@gjohansson-ST] - [#104941])
+- Do not fail if Reolink ONVIF cannot be connected ([@starkillerOG] - [#104947])
+- Bump bimmer-connected to 0.14.6 ([@rikroe] - [#104961])
+- Do not allow smtp to access insecure files ([@jbouwh] - [#104972])
+- Raise on smtp notification if attachment is not allowed ([@jbouwh] - [#104981])
+- Update frontend to 20231204.0 ([@bramkragten] - [#104990])
+- W-Z: add host field description ([@c0ffeeca7] - [#104996])
+- Fix geniushub smart plug state at start-up ([@GeoffAtHome] - [#102110])
+- Add due date and description to Google Tasks ([@allenporter] - [#104654])
+- Add due date and description fields to Todoist To-do entity ([@allenporter] - [#104655])
+- Add Wyoming satellite ([@synesthesiam] - [#104759])
+- Add Matter custom cluster sensors (Eve Energy Plug energy measurements) ([@marcelveldt] - [#104830])
+- Exclude Todoist sub-tasks for the todo platform ([@boralyl] - [#104914])
+- Fix Mikrotik rename from wifiwave2 to wifi for upcoming RouterOS 7.13 ([@Marco98] - [#104966])
+- Minor improvements of deprecation helper ([@emontnemery] - [#104980])
+- Update Todoist config flow URL ([@MrBartusek] - [#104992])
+- Make unifi RX-/TX-sensors diagnostic entities ([@Kane610] - [#105022])
+- Fix stuck clients in UniFi options ([@Kane610] - [#105028])
+- Make UniFi WiFi clients numerical ([@Kane610] - [#105032])
+- Don't use deprecated_class decorator on deprecated YAML classes ([@emontnemery] - [#105063])
+- Remove device from known_devices upon import in ping device tracker ([@jpbede] - [#105009])
+- Update frontend to 20231205.0 ([@bramkragten] - [#105081])
+- Update apple_weatherkit to 1.1.1 ([@tjhorner] - [#105079])
+- Fix overkiz measurement sensor returns None if 0 ([@jbouwh] - [#105090])
+- Bump aiounifi to v67 ([@Kane610] - [#105099])
+- Fix typo in v2c strings.json ([@lunmay] - [#105104])
+- Bump intents to 2023.12.05 ([@synesthesiam] - [#105116])
+
+[#101186]: https://github.com/home-assistant/core/pull/101186
+[#101196]: https://github.com/home-assistant/core/pull/101196
+[#101349]: https://github.com/home-assistant/core/pull/101349
+[#101370]: https://github.com/home-assistant/core/pull/101370
+[#101955]: https://github.com/home-assistant/core/pull/101955
+[#102089]: https://github.com/home-assistant/core/pull/102089
+[#102092]: https://github.com/home-assistant/core/pull/102092
+[#102110]: https://github.com/home-assistant/core/pull/102110
+[#102203]: https://github.com/home-assistant/core/pull/102203
+[#102410]: https://github.com/home-assistant/core/pull/102410
+[#102433]: https://github.com/home-assistant/core/pull/102433
+[#102470]: https://github.com/home-assistant/core/pull/102470
+[#102481]: https://github.com/home-assistant/core/pull/102481
+[#102489]: https://github.com/home-assistant/core/pull/102489
+[#102500]: https://github.com/home-assistant/core/pull/102500
+[#102518]: https://github.com/home-assistant/core/pull/102518
+[#102520]: https://github.com/home-assistant/core/pull/102520
+[#102534]: https://github.com/home-assistant/core/pull/102534
+[#102592]: https://github.com/home-assistant/core/pull/102592
+[#102604]: https://github.com/home-assistant/core/pull/102604
+[#102607]: https://github.com/home-assistant/core/pull/102607
+[#102613]: https://github.com/home-assistant/core/pull/102613
+[#102617]: https://github.com/home-assistant/core/pull/102617
+[#102632]: https://github.com/home-assistant/core/pull/102632
+[#102650]: https://github.com/home-assistant/core/pull/102650
+[#102657]: https://github.com/home-assistant/core/pull/102657
+[#102734]: https://github.com/home-assistant/core/pull/102734
+[#102749]: https://github.com/home-assistant/core/pull/102749
+[#102789]: https://github.com/home-assistant/core/pull/102789
+[#102798]: https://github.com/home-assistant/core/pull/102798
+[#102806]: https://github.com/home-assistant/core/pull/102806
+[#102807]: https://github.com/home-assistant/core/pull/102807
+[#102810]: https://github.com/home-assistant/core/pull/102810
+[#102812]: https://github.com/home-assistant/core/pull/102812
+[#102813]: https://github.com/home-assistant/core/pull/102813
+[#102814]: https://github.com/home-assistant/core/pull/102814
+[#102822]: https://github.com/home-assistant/core/pull/102822
+[#102829]: https://github.com/home-assistant/core/pull/102829
+[#102831]: https://github.com/home-assistant/core/pull/102831
+[#102839]: https://github.com/home-assistant/core/pull/102839
+[#102855]: https://github.com/home-assistant/core/pull/102855
+[#102862]: https://github.com/home-assistant/core/pull/102862
+[#102868]: https://github.com/home-assistant/core/pull/102868
+[#102870]: https://github.com/home-assistant/core/pull/102870
+[#102873]: https://github.com/home-assistant/core/pull/102873
+[#102882]: https://github.com/home-assistant/core/pull/102882
+[#102883]: https://github.com/home-assistant/core/pull/102883
+[#102893]: https://github.com/home-assistant/core/pull/102893
+[#102897]: https://github.com/home-assistant/core/pull/102897
+[#102898]: https://github.com/home-assistant/core/pull/102898
+[#102900]: https://github.com/home-assistant/core/pull/102900
+[#102902]: https://github.com/home-assistant/core/pull/102902
+[#102904]: https://github.com/home-assistant/core/pull/102904
+[#102905]: https://github.com/home-assistant/core/pull/102905
+[#102911]: https://github.com/home-assistant/core/pull/102911
+[#102918]: https://github.com/home-assistant/core/pull/102918
+[#102924]: https://github.com/home-assistant/core/pull/102924
+[#102925]: https://github.com/home-assistant/core/pull/102925
+[#102929]: https://github.com/home-assistant/core/pull/102929
+[#102938]: https://github.com/home-assistant/core/pull/102938
+[#102941]: https://github.com/home-assistant/core/pull/102941
+[#102948]: https://github.com/home-assistant/core/pull/102948
+[#102954]: https://github.com/home-assistant/core/pull/102954
+[#102959]: https://github.com/home-assistant/core/pull/102959
+[#102961]: https://github.com/home-assistant/core/pull/102961
+[#102962]: https://github.com/home-assistant/core/pull/102962
+[#102966]: https://github.com/home-assistant/core/pull/102966
+[#102967]: https://github.com/home-assistant/core/pull/102967
+[#102976]: https://github.com/home-assistant/core/pull/102976
+[#102979]: https://github.com/home-assistant/core/pull/102979
+[#102982]: https://github.com/home-assistant/core/pull/102982
+[#102996]: https://github.com/home-assistant/core/pull/102996
+[#102997]: https://github.com/home-assistant/core/pull/102997
+[#102998]: https://github.com/home-assistant/core/pull/102998
+[#103000]: https://github.com/home-assistant/core/pull/103000
+[#103003]: https://github.com/home-assistant/core/pull/103003
+[#103006]: https://github.com/home-assistant/core/pull/103006
+[#103010]: https://github.com/home-assistant/core/pull/103010
+[#103011]: https://github.com/home-assistant/core/pull/103011
+[#103026]: https://github.com/home-assistant/core/pull/103026
+[#103030]: https://github.com/home-assistant/core/pull/103030
+[#103045]: https://github.com/home-assistant/core/pull/103045
+[#103048]: https://github.com/home-assistant/core/pull/103048
+[#103050]: https://github.com/home-assistant/core/pull/103050
+[#103069]: https://github.com/home-assistant/core/pull/103069
+[#103080]: https://github.com/home-assistant/core/pull/103080
+[#103084]: https://github.com/home-assistant/core/pull/103084
+[#103089]: https://github.com/home-assistant/core/pull/103089
+[#103090]: https://github.com/home-assistant/core/pull/103090
+[#103091]: https://github.com/home-assistant/core/pull/103091
+[#103095]: https://github.com/home-assistant/core/pull/103095
+[#103109]: https://github.com/home-assistant/core/pull/103109
+[#103126]: https://github.com/home-assistant/core/pull/103126
+[#103127]: https://github.com/home-assistant/core/pull/103127
+[#103128]: https://github.com/home-assistant/core/pull/103128
+[#103135]: https://github.com/home-assistant/core/pull/103135
+[#103147]: https://github.com/home-assistant/core/pull/103147
+[#103157]: https://github.com/home-assistant/core/pull/103157
+[#103160]: https://github.com/home-assistant/core/pull/103160
+[#103162]: https://github.com/home-assistant/core/pull/103162
+[#103167]: https://github.com/home-assistant/core/pull/103167
+[#103170]: https://github.com/home-assistant/core/pull/103170
+[#103171]: https://github.com/home-assistant/core/pull/103171
+[#103172]: https://github.com/home-assistant/core/pull/103172
+[#103175]: https://github.com/home-assistant/core/pull/103175
+[#103176]: https://github.com/home-assistant/core/pull/103176
+[#103177]: https://github.com/home-assistant/core/pull/103177
+[#103180]: https://github.com/home-assistant/core/pull/103180
+[#103182]: https://github.com/home-assistant/core/pull/103182
+[#103184]: https://github.com/home-assistant/core/pull/103184
+[#103185]: https://github.com/home-assistant/core/pull/103185
+[#103188]: https://github.com/home-assistant/core/pull/103188
+[#103199]: https://github.com/home-assistant/core/pull/103199
+[#103202]: https://github.com/home-assistant/core/pull/103202
+[#103204]: https://github.com/home-assistant/core/pull/103204
+[#103206]: https://github.com/home-assistant/core/pull/103206
+[#103215]: https://github.com/home-assistant/core/pull/103215
+[#103216]: https://github.com/home-assistant/core/pull/103216
+[#103221]: https://github.com/home-assistant/core/pull/103221
+[#103223]: https://github.com/home-assistant/core/pull/103223
+[#103235]: https://github.com/home-assistant/core/pull/103235
+[#103247]: https://github.com/home-assistant/core/pull/103247
+[#103263]: https://github.com/home-assistant/core/pull/103263
+[#103276]: https://github.com/home-assistant/core/pull/103276
+[#103278]: https://github.com/home-assistant/core/pull/103278
+[#103279]: https://github.com/home-assistant/core/pull/103279
+[#103281]: https://github.com/home-assistant/core/pull/103281
+[#103282]: https://github.com/home-assistant/core/pull/103282
+[#103285]: https://github.com/home-assistant/core/pull/103285
+[#103286]: https://github.com/home-assistant/core/pull/103286
+[#103290]: https://github.com/home-assistant/core/pull/103290
+[#103300]: https://github.com/home-assistant/core/pull/103300
+[#103305]: https://github.com/home-assistant/core/pull/103305
+[#103307]: https://github.com/home-assistant/core/pull/103307
+[#103309]: https://github.com/home-assistant/core/pull/103309
+[#103311]: https://github.com/home-assistant/core/pull/103311
+[#103313]: https://github.com/home-assistant/core/pull/103313
+[#103314]: https://github.com/home-assistant/core/pull/103314
+[#103318]: https://github.com/home-assistant/core/pull/103318
+[#103320]: https://github.com/home-assistant/core/pull/103320
+[#103323]: https://github.com/home-assistant/core/pull/103323
+[#103324]: https://github.com/home-assistant/core/pull/103324
+[#103331]: https://github.com/home-assistant/core/pull/103331
+[#103337]: https://github.com/home-assistant/core/pull/103337
+[#103338]: https://github.com/home-assistant/core/pull/103338
+[#103339]: https://github.com/home-assistant/core/pull/103339
+[#103340]: https://github.com/home-assistant/core/pull/103340
+[#103342]: https://github.com/home-assistant/core/pull/103342
+[#103343]: https://github.com/home-assistant/core/pull/103343
+[#103347]: https://github.com/home-assistant/core/pull/103347
+[#103351]: https://github.com/home-assistant/core/pull/103351
+[#103359]: https://github.com/home-assistant/core/pull/103359
+[#103360]: https://github.com/home-assistant/core/pull/103360
+[#103361]: https://github.com/home-assistant/core/pull/103361
+[#103362]: https://github.com/home-assistant/core/pull/103362
+[#103363]: https://github.com/home-assistant/core/pull/103363
+[#103365]: https://github.com/home-assistant/core/pull/103365
+[#103367]: https://github.com/home-assistant/core/pull/103367
+[#103369]: https://github.com/home-assistant/core/pull/103369
+[#103370]: https://github.com/home-assistant/core/pull/103370
+[#103372]: https://github.com/home-assistant/core/pull/103372
+[#103373]: https://github.com/home-assistant/core/pull/103373
+[#103376]: https://github.com/home-assistant/core/pull/103376
+[#103377]: https://github.com/home-assistant/core/pull/103377
+[#103378]: https://github.com/home-assistant/core/pull/103378
+[#103379]: https://github.com/home-assistant/core/pull/103379
+[#103383]: https://github.com/home-assistant/core/pull/103383
+[#103387]: https://github.com/home-assistant/core/pull/103387
+[#103391]: https://github.com/home-assistant/core/pull/103391
+[#103392]: https://github.com/home-assistant/core/pull/103392
+[#103393]: https://github.com/home-assistant/core/pull/103393
+[#103405]: https://github.com/home-assistant/core/pull/103405
+[#103407]: https://github.com/home-assistant/core/pull/103407
+[#103411]: https://github.com/home-assistant/core/pull/103411
+[#103412]: https://github.com/home-assistant/core/pull/103412
+[#103415]: https://github.com/home-assistant/core/pull/103415
+[#103420]: https://github.com/home-assistant/core/pull/103420
+[#103425]: https://github.com/home-assistant/core/pull/103425
+[#103426]: https://github.com/home-assistant/core/pull/103426
+[#103430]: https://github.com/home-assistant/core/pull/103430
+[#103435]: https://github.com/home-assistant/core/pull/103435
+[#103439]: https://github.com/home-assistant/core/pull/103439
+[#103443]: https://github.com/home-assistant/core/pull/103443
+[#103449]: https://github.com/home-assistant/core/pull/103449
+[#103452]: https://github.com/home-assistant/core/pull/103452
+[#103463]: https://github.com/home-assistant/core/pull/103463
+[#103464]: https://github.com/home-assistant/core/pull/103464
+[#103465]: https://github.com/home-assistant/core/pull/103465
+[#103470]: https://github.com/home-assistant/core/pull/103470
+[#103475]: https://github.com/home-assistant/core/pull/103475
+[#103477]: https://github.com/home-assistant/core/pull/103477
+[#103478]: https://github.com/home-assistant/core/pull/103478
+[#103483]: https://github.com/home-assistant/core/pull/103483
+[#103487]: https://github.com/home-assistant/core/pull/103487
+[#103488]: https://github.com/home-assistant/core/pull/103488
+[#103489]: https://github.com/home-assistant/core/pull/103489
+[#103501]: https://github.com/home-assistant/core/pull/103501
+[#103502]: https://github.com/home-assistant/core/pull/103502
+[#103507]: https://github.com/home-assistant/core/pull/103507
+[#103508]: https://github.com/home-assistant/core/pull/103508
+[#103511]: https://github.com/home-assistant/core/pull/103511
+[#103515]: https://github.com/home-assistant/core/pull/103515
+[#103516]: https://github.com/home-assistant/core/pull/103516
+[#103522]: https://github.com/home-assistant/core/pull/103522
+[#103524]: https://github.com/home-assistant/core/pull/103524
+[#103529]: https://github.com/home-assistant/core/pull/103529
+[#103530]: https://github.com/home-assistant/core/pull/103530
+[#103531]: https://github.com/home-assistant/core/pull/103531
+[#103533]: https://github.com/home-assistant/core/pull/103533
+[#103534]: https://github.com/home-assistant/core/pull/103534
+[#103535]: https://github.com/home-assistant/core/pull/103535
+[#103544]: https://github.com/home-assistant/core/pull/103544
+[#103545]: https://github.com/home-assistant/core/pull/103545
+[#103546]: https://github.com/home-assistant/core/pull/103546
+[#103548]: https://github.com/home-assistant/core/pull/103548
+[#103550]: https://github.com/home-assistant/core/pull/103550
+[#103551]: https://github.com/home-assistant/core/pull/103551
+[#103556]: https://github.com/home-assistant/core/pull/103556
+[#103560]: https://github.com/home-assistant/core/pull/103560
+[#103561]: https://github.com/home-assistant/core/pull/103561
+[#103565]: https://github.com/home-assistant/core/pull/103565
+[#103566]: https://github.com/home-assistant/core/pull/103566
+[#103570]: https://github.com/home-assistant/core/pull/103570
+[#103579]: https://github.com/home-assistant/core/pull/103579
+[#103581]: https://github.com/home-assistant/core/pull/103581
+[#103584]: https://github.com/home-assistant/core/pull/103584
+[#103585]: https://github.com/home-assistant/core/pull/103585
+[#103586]: https://github.com/home-assistant/core/pull/103586
+[#103591]: https://github.com/home-assistant/core/pull/103591
+[#103592]: https://github.com/home-assistant/core/pull/103592
+[#103595]: https://github.com/home-assistant/core/pull/103595
+[#103597]: https://github.com/home-assistant/core/pull/103597
+[#103598]: https://github.com/home-assistant/core/pull/103598
+[#103603]: https://github.com/home-assistant/core/pull/103603
+[#103605]: https://github.com/home-assistant/core/pull/103605
+[#103606]: https://github.com/home-assistant/core/pull/103606
+[#103609]: https://github.com/home-assistant/core/pull/103609
+[#103613]: https://github.com/home-assistant/core/pull/103613
+[#103614]: https://github.com/home-assistant/core/pull/103614
+[#103617]: https://github.com/home-assistant/core/pull/103617
+[#103621]: https://github.com/home-assistant/core/pull/103621
+[#103623]: https://github.com/home-assistant/core/pull/103623
+[#103624]: https://github.com/home-assistant/core/pull/103624
+[#103625]: https://github.com/home-assistant/core/pull/103625
+[#103626]: https://github.com/home-assistant/core/pull/103626
+[#103628]: https://github.com/home-assistant/core/pull/103628
+[#103630]: https://github.com/home-assistant/core/pull/103630
+[#103631]: https://github.com/home-assistant/core/pull/103631
+[#103633]: https://github.com/home-assistant/core/pull/103633
+[#103634]: https://github.com/home-assistant/core/pull/103634
+[#103635]: https://github.com/home-assistant/core/pull/103635
+[#103636]: https://github.com/home-assistant/core/pull/103636
+[#103638]: https://github.com/home-assistant/core/pull/103638
+[#103640]: https://github.com/home-assistant/core/pull/103640
+[#103641]: https://github.com/home-assistant/core/pull/103641
+[#103644]: https://github.com/home-assistant/core/pull/103644
+[#103651]: https://github.com/home-assistant/core/pull/103651
+[#103656]: https://github.com/home-assistant/core/pull/103656
+[#103657]: https://github.com/home-assistant/core/pull/103657
+[#103662]: https://github.com/home-assistant/core/pull/103662
+[#103667]: https://github.com/home-assistant/core/pull/103667
+[#103676]: https://github.com/home-assistant/core/pull/103676
+[#103678]: https://github.com/home-assistant/core/pull/103678
+[#103681]: https://github.com/home-assistant/core/pull/103681
+[#103690]: https://github.com/home-assistant/core/pull/103690
+[#103691]: https://github.com/home-assistant/core/pull/103691
+[#103703]: https://github.com/home-assistant/core/pull/103703
+[#103705]: https://github.com/home-assistant/core/pull/103705
+[#103707]: https://github.com/home-assistant/core/pull/103707
+[#103708]: https://github.com/home-assistant/core/pull/103708
+[#103710]: https://github.com/home-assistant/core/pull/103710
+[#103711]: https://github.com/home-assistant/core/pull/103711
+[#103715]: https://github.com/home-assistant/core/pull/103715
+[#103716]: https://github.com/home-assistant/core/pull/103716
+[#103721]: https://github.com/home-assistant/core/pull/103721
+[#103722]: https://github.com/home-assistant/core/pull/103722
+[#103730]: https://github.com/home-assistant/core/pull/103730
+[#103738]: https://github.com/home-assistant/core/pull/103738
+[#103739]: https://github.com/home-assistant/core/pull/103739
+[#103743]: https://github.com/home-assistant/core/pull/103743
+[#103745]: https://github.com/home-assistant/core/pull/103745
+[#103752]: https://github.com/home-assistant/core/pull/103752
+[#103754]: https://github.com/home-assistant/core/pull/103754
+[#103757]: https://github.com/home-assistant/core/pull/103757
+[#103758]: https://github.com/home-assistant/core/pull/103758
+[#103765]: https://github.com/home-assistant/core/pull/103765
+[#103767]: https://github.com/home-assistant/core/pull/103767
+[#103768]: https://github.com/home-assistant/core/pull/103768
+[#103777]: https://github.com/home-assistant/core/pull/103777
+[#103788]: https://github.com/home-assistant/core/pull/103788
+[#103792]: https://github.com/home-assistant/core/pull/103792
+[#103793]: https://github.com/home-assistant/core/pull/103793
+[#103799]: https://github.com/home-assistant/core/pull/103799
+[#103800]: https://github.com/home-assistant/core/pull/103800
+[#103802]: https://github.com/home-assistant/core/pull/103802
+[#103803]: https://github.com/home-assistant/core/pull/103803
+[#103804]: https://github.com/home-assistant/core/pull/103804
+[#103806]: https://github.com/home-assistant/core/pull/103806
+[#103807]: https://github.com/home-assistant/core/pull/103807
+[#103808]: https://github.com/home-assistant/core/pull/103808
+[#103813]: https://github.com/home-assistant/core/pull/103813
+[#103814]: https://github.com/home-assistant/core/pull/103814
+[#103817]: https://github.com/home-assistant/core/pull/103817
+[#103820]: https://github.com/home-assistant/core/pull/103820
+[#103827]: https://github.com/home-assistant/core/pull/103827
+[#103830]: https://github.com/home-assistant/core/pull/103830
+[#103837]: https://github.com/home-assistant/core/pull/103837
+[#103840]: https://github.com/home-assistant/core/pull/103840
+[#103841]: https://github.com/home-assistant/core/pull/103841
+[#103843]: https://github.com/home-assistant/core/pull/103843
+[#103847]: https://github.com/home-assistant/core/pull/103847
+[#103848]: https://github.com/home-assistant/core/pull/103848
+[#103850]: https://github.com/home-assistant/core/pull/103850
+[#103851]: https://github.com/home-assistant/core/pull/103851
+[#103852]: https://github.com/home-assistant/core/pull/103852
+[#103853]: https://github.com/home-assistant/core/pull/103853
+[#103854]: https://github.com/home-assistant/core/pull/103854
+[#103856]: https://github.com/home-assistant/core/pull/103856
+[#103859]: https://github.com/home-assistant/core/pull/103859
+[#103864]: https://github.com/home-assistant/core/pull/103864
+[#103866]: https://github.com/home-assistant/core/pull/103866
+[#103873]: https://github.com/home-assistant/core/pull/103873
+[#103875]: https://github.com/home-assistant/core/pull/103875
+[#103877]: https://github.com/home-assistant/core/pull/103877
+[#103879]: https://github.com/home-assistant/core/pull/103879
+[#103893]: https://github.com/home-assistant/core/pull/103893
+[#103896]: https://github.com/home-assistant/core/pull/103896
+[#103900]: https://github.com/home-assistant/core/pull/103900
+[#103901]: https://github.com/home-assistant/core/pull/103901
+[#103902]: https://github.com/home-assistant/core/pull/103902
+[#103904]: https://github.com/home-assistant/core/pull/103904
+[#103905]: https://github.com/home-assistant/core/pull/103905
+[#103906]: https://github.com/home-assistant/core/pull/103906
+[#103908]: https://github.com/home-assistant/core/pull/103908
+[#103909]: https://github.com/home-assistant/core/pull/103909
+[#103910]: https://github.com/home-assistant/core/pull/103910
+[#103914]: https://github.com/home-assistant/core/pull/103914
+[#103922]: https://github.com/home-assistant/core/pull/103922
+[#103923]: https://github.com/home-assistant/core/pull/103923
+[#103925]: https://github.com/home-assistant/core/pull/103925
+[#103927]: https://github.com/home-assistant/core/pull/103927
+[#103929]: https://github.com/home-assistant/core/pull/103929
+[#103932]: https://github.com/home-assistant/core/pull/103932
+[#103934]: https://github.com/home-assistant/core/pull/103934
+[#103936]: https://github.com/home-assistant/core/pull/103936
+[#103937]: https://github.com/home-assistant/core/pull/103937
+[#103939]: https://github.com/home-assistant/core/pull/103939
+[#103952]: https://github.com/home-assistant/core/pull/103952
+[#103954]: https://github.com/home-assistant/core/pull/103954
+[#103955]: https://github.com/home-assistant/core/pull/103955
+[#103957]: https://github.com/home-assistant/core/pull/103957
+[#103959]: https://github.com/home-assistant/core/pull/103959
+[#103964]: https://github.com/home-assistant/core/pull/103964
+[#103965]: https://github.com/home-assistant/core/pull/103965
+[#103969]: https://github.com/home-assistant/core/pull/103969
+[#103970]: https://github.com/home-assistant/core/pull/103970
+[#103971]: https://github.com/home-assistant/core/pull/103971
+[#103972]: https://github.com/home-assistant/core/pull/103972
+[#103976]: https://github.com/home-assistant/core/pull/103976
+[#103980]: https://github.com/home-assistant/core/pull/103980
+[#103982]: https://github.com/home-assistant/core/pull/103982
+[#103983]: https://github.com/home-assistant/core/pull/103983
+[#103986]: https://github.com/home-assistant/core/pull/103986
+[#103988]: https://github.com/home-assistant/core/pull/103988
+[#103989]: https://github.com/home-assistant/core/pull/103989
+[#103990]: https://github.com/home-assistant/core/pull/103990
+[#103991]: https://github.com/home-assistant/core/pull/103991
+[#103992]: https://github.com/home-assistant/core/pull/103992
+[#103993]: https://github.com/home-assistant/core/pull/103993
+[#103994]: https://github.com/home-assistant/core/pull/103994
+[#103995]: https://github.com/home-assistant/core/pull/103995
+[#103996]: https://github.com/home-assistant/core/pull/103996
+[#103997]: https://github.com/home-assistant/core/pull/103997
+[#103998]: https://github.com/home-assistant/core/pull/103998
+[#103999]: https://github.com/home-assistant/core/pull/103999
+[#104001]: https://github.com/home-assistant/core/pull/104001
+[#104002]: https://github.com/home-assistant/core/pull/104002
+[#104004]: https://github.com/home-assistant/core/pull/104004
+[#104005]: https://github.com/home-assistant/core/pull/104005
+[#104006]: https://github.com/home-assistant/core/pull/104006
+[#104008]: https://github.com/home-assistant/core/pull/104008
+[#104009]: https://github.com/home-assistant/core/pull/104009
+[#104016]: https://github.com/home-assistant/core/pull/104016
+[#104017]: https://github.com/home-assistant/core/pull/104017
+[#104018]: https://github.com/home-assistant/core/pull/104018
+[#104024]: https://github.com/home-assistant/core/pull/104024
+[#104027]: https://github.com/home-assistant/core/pull/104027
+[#104028]: https://github.com/home-assistant/core/pull/104028
+[#104031]: https://github.com/home-assistant/core/pull/104031
+[#104032]: https://github.com/home-assistant/core/pull/104032
+[#104033]: https://github.com/home-assistant/core/pull/104033
+[#104034]: https://github.com/home-assistant/core/pull/104034
+[#104035]: https://github.com/home-assistant/core/pull/104035
+[#104037]: https://github.com/home-assistant/core/pull/104037
+[#104039]: https://github.com/home-assistant/core/pull/104039
+[#104041]: https://github.com/home-assistant/core/pull/104041
+[#104047]: https://github.com/home-assistant/core/pull/104047
+[#104048]: https://github.com/home-assistant/core/pull/104048
+[#104049]: https://github.com/home-assistant/core/pull/104049
+[#104050]: https://github.com/home-assistant/core/pull/104050
+[#104053]: https://github.com/home-assistant/core/pull/104053
+[#104055]: https://github.com/home-assistant/core/pull/104055
+[#104060]: https://github.com/home-assistant/core/pull/104060
+[#104061]: https://github.com/home-assistant/core/pull/104061
+[#104064]: https://github.com/home-assistant/core/pull/104064
+[#104065]: https://github.com/home-assistant/core/pull/104065
+[#104069]: https://github.com/home-assistant/core/pull/104069
+[#104071]: https://github.com/home-assistant/core/pull/104071
+[#104073]: https://github.com/home-assistant/core/pull/104073
+[#104078]: https://github.com/home-assistant/core/pull/104078
+[#104081]: https://github.com/home-assistant/core/pull/104081
+[#104084]: https://github.com/home-assistant/core/pull/104084
+[#104085]: https://github.com/home-assistant/core/pull/104085
+[#104086]: https://github.com/home-assistant/core/pull/104086
+[#104089]: https://github.com/home-assistant/core/pull/104089
+[#104096]: https://github.com/home-assistant/core/pull/104096
+[#104098]: https://github.com/home-assistant/core/pull/104098
+[#104100]: https://github.com/home-assistant/core/pull/104100
+[#104105]: https://github.com/home-assistant/core/pull/104105
+[#104113]: https://github.com/home-assistant/core/pull/104113
+[#104114]: https://github.com/home-assistant/core/pull/104114
+[#104115]: https://github.com/home-assistant/core/pull/104115
+[#104117]: https://github.com/home-assistant/core/pull/104117
+[#104118]: https://github.com/home-assistant/core/pull/104118
+[#104121]: https://github.com/home-assistant/core/pull/104121
+[#104124]: https://github.com/home-assistant/core/pull/104124
+[#104127]: https://github.com/home-assistant/core/pull/104127
+[#104128]: https://github.com/home-assistant/core/pull/104128
+[#104132]: https://github.com/home-assistant/core/pull/104132
+[#104134]: https://github.com/home-assistant/core/pull/104134
+[#104139]: https://github.com/home-assistant/core/pull/104139
+[#104141]: https://github.com/home-assistant/core/pull/104141
+[#104144]: https://github.com/home-assistant/core/pull/104144
+[#104148]: https://github.com/home-assistant/core/pull/104148
+[#104152]: https://github.com/home-assistant/core/pull/104152
+[#104162]: https://github.com/home-assistant/core/pull/104162
+[#104165]: https://github.com/home-assistant/core/pull/104165
+[#104168]: https://github.com/home-assistant/core/pull/104168
+[#104173]: https://github.com/home-assistant/core/pull/104173
+[#104174]: https://github.com/home-assistant/core/pull/104174
+[#104175]: https://github.com/home-assistant/core/pull/104175
+[#104176]: https://github.com/home-assistant/core/pull/104176
+[#104181]: https://github.com/home-assistant/core/pull/104181
+[#104186]: https://github.com/home-assistant/core/pull/104186
+[#104187]: https://github.com/home-assistant/core/pull/104187
+[#104189]: https://github.com/home-assistant/core/pull/104189
+[#104193]: https://github.com/home-assistant/core/pull/104193
+[#104197]: https://github.com/home-assistant/core/pull/104197
+[#104199]: https://github.com/home-assistant/core/pull/104199
+[#104204]: https://github.com/home-assistant/core/pull/104204
+[#104210]: https://github.com/home-assistant/core/pull/104210
+[#104211]: https://github.com/home-assistant/core/pull/104211
+[#104212]: https://github.com/home-assistant/core/pull/104212
+[#104215]: https://github.com/home-assistant/core/pull/104215
+[#104216]: https://github.com/home-assistant/core/pull/104216
+[#104219]: https://github.com/home-assistant/core/pull/104219
+[#104226]: https://github.com/home-assistant/core/pull/104226
+[#104227]: https://github.com/home-assistant/core/pull/104227
+[#104231]: https://github.com/home-assistant/core/pull/104231
+[#104233]: https://github.com/home-assistant/core/pull/104233
+[#104236]: https://github.com/home-assistant/core/pull/104236
+[#104239]: https://github.com/home-assistant/core/pull/104239
+[#104240]: https://github.com/home-assistant/core/pull/104240
+[#104241]: https://github.com/home-assistant/core/pull/104241
+[#104243]: https://github.com/home-assistant/core/pull/104243
+[#104244]: https://github.com/home-assistant/core/pull/104244
+[#104245]: https://github.com/home-assistant/core/pull/104245
+[#104250]: https://github.com/home-assistant/core/pull/104250
+[#104252]: https://github.com/home-assistant/core/pull/104252
+[#104253]: https://github.com/home-assistant/core/pull/104253
+[#104254]: https://github.com/home-assistant/core/pull/104254
+[#104255]: https://github.com/home-assistant/core/pull/104255
+[#104257]: https://github.com/home-assistant/core/pull/104257
+[#104267]: https://github.com/home-assistant/core/pull/104267
+[#104271]: https://github.com/home-assistant/core/pull/104271
+[#104276]: https://github.com/home-assistant/core/pull/104276
+[#104277]: https://github.com/home-assistant/core/pull/104277
+[#104280]: https://github.com/home-assistant/core/pull/104280
+[#104285]: https://github.com/home-assistant/core/pull/104285
+[#104288]: https://github.com/home-assistant/core/pull/104288
+[#104289]: https://github.com/home-assistant/core/pull/104289
+[#104292]: https://github.com/home-assistant/core/pull/104292
+[#104296]: https://github.com/home-assistant/core/pull/104296
+[#104299]: https://github.com/home-assistant/core/pull/104299
+[#104301]: https://github.com/home-assistant/core/pull/104301
+[#104302]: https://github.com/home-assistant/core/pull/104302
+[#104304]: https://github.com/home-assistant/core/pull/104304
+[#104307]: https://github.com/home-assistant/core/pull/104307
+[#104314]: https://github.com/home-assistant/core/pull/104314
+[#104317]: https://github.com/home-assistant/core/pull/104317
+[#104321]: https://github.com/home-assistant/core/pull/104321
+[#104322]: https://github.com/home-assistant/core/pull/104322
+[#104324]: https://github.com/home-assistant/core/pull/104324
+[#104329]: https://github.com/home-assistant/core/pull/104329
+[#104330]: https://github.com/home-assistant/core/pull/104330
+[#104332]: https://github.com/home-assistant/core/pull/104332
+[#104335]: https://github.com/home-assistant/core/pull/104335
+[#104336]: https://github.com/home-assistant/core/pull/104336
+[#104338]: https://github.com/home-assistant/core/pull/104338
+[#104339]: https://github.com/home-assistant/core/pull/104339
+[#104340]: https://github.com/home-assistant/core/pull/104340
+[#104341]: https://github.com/home-assistant/core/pull/104341
+[#104350]: https://github.com/home-assistant/core/pull/104350
+[#104356]: https://github.com/home-assistant/core/pull/104356
+[#104357]: https://github.com/home-assistant/core/pull/104357
+[#104361]: https://github.com/home-assistant/core/pull/104361
+[#104363]: https://github.com/home-assistant/core/pull/104363
+[#104370]: https://github.com/home-assistant/core/pull/104370
+[#104371]: https://github.com/home-assistant/core/pull/104371
+[#104375]: https://github.com/home-assistant/core/pull/104375
+[#104377]: https://github.com/home-assistant/core/pull/104377
+[#104378]: https://github.com/home-assistant/core/pull/104378
+[#104382]: https://github.com/home-assistant/core/pull/104382
+[#104383]: https://github.com/home-assistant/core/pull/104383
+[#104384]: https://github.com/home-assistant/core/pull/104384
+[#104387]: https://github.com/home-assistant/core/pull/104387
+[#104390]: https://github.com/home-assistant/core/pull/104390
+[#104394]: https://github.com/home-assistant/core/pull/104394
+[#104395]: https://github.com/home-assistant/core/pull/104395
+[#104396]: https://github.com/home-assistant/core/pull/104396
+[#104403]: https://github.com/home-assistant/core/pull/104403
+[#104409]: https://github.com/home-assistant/core/pull/104409
+[#104412]: https://github.com/home-assistant/core/pull/104412
+[#104425]: https://github.com/home-assistant/core/pull/104425
+[#104426]: https://github.com/home-assistant/core/pull/104426
+[#104429]: https://github.com/home-assistant/core/pull/104429
+[#104434]: https://github.com/home-assistant/core/pull/104434
+[#104439]: https://github.com/home-assistant/core/pull/104439
+[#104441]: https://github.com/home-assistant/core/pull/104441
+[#104444]: https://github.com/home-assistant/core/pull/104444
+[#104449]: https://github.com/home-assistant/core/pull/104449
+[#104456]: https://github.com/home-assistant/core/pull/104456
+[#104458]: https://github.com/home-assistant/core/pull/104458
+[#104463]: https://github.com/home-assistant/core/pull/104463
+[#104464]: https://github.com/home-assistant/core/pull/104464
+[#104465]: https://github.com/home-assistant/core/pull/104465
+[#104466]: https://github.com/home-assistant/core/pull/104466
+[#104472]: https://github.com/home-assistant/core/pull/104472
+[#104473]: https://github.com/home-assistant/core/pull/104473
+[#104474]: https://github.com/home-assistant/core/pull/104474
+[#104476]: https://github.com/home-assistant/core/pull/104476
+[#104477]: https://github.com/home-assistant/core/pull/104477
+[#104479]: https://github.com/home-assistant/core/pull/104479
+[#104480]: https://github.com/home-assistant/core/pull/104480
+[#104493]: https://github.com/home-assistant/core/pull/104493
+[#104498]: https://github.com/home-assistant/core/pull/104498
+[#104499]: https://github.com/home-assistant/core/pull/104499
+[#104502]: https://github.com/home-assistant/core/pull/104502
+[#104506]: https://github.com/home-assistant/core/pull/104506
+[#104507]: https://github.com/home-assistant/core/pull/104507
+[#104510]: https://github.com/home-assistant/core/pull/104510
+[#104512]: https://github.com/home-assistant/core/pull/104512
+[#104514]: https://github.com/home-assistant/core/pull/104514
+[#104516]: https://github.com/home-assistant/core/pull/104516
+[#104517]: https://github.com/home-assistant/core/pull/104517
+[#104520]: https://github.com/home-assistant/core/pull/104520
+[#104521]: https://github.com/home-assistant/core/pull/104521
+[#104526]: https://github.com/home-assistant/core/pull/104526
+[#104527]: https://github.com/home-assistant/core/pull/104527
+[#104530]: https://github.com/home-assistant/core/pull/104530
+[#104536]: https://github.com/home-assistant/core/pull/104536
+[#104537]: https://github.com/home-assistant/core/pull/104537
+[#104540]: https://github.com/home-assistant/core/pull/104540
+[#104541]: https://github.com/home-assistant/core/pull/104541
+[#104543]: https://github.com/home-assistant/core/pull/104543
+[#104545]: https://github.com/home-assistant/core/pull/104545
+[#104547]: https://github.com/home-assistant/core/pull/104547
+[#104550]: https://github.com/home-assistant/core/pull/104550
+[#104552]: https://github.com/home-assistant/core/pull/104552
+[#104553]: https://github.com/home-assistant/core/pull/104553
+[#104557]: https://github.com/home-assistant/core/pull/104557
+[#104560]: https://github.com/home-assistant/core/pull/104560
+[#104562]: https://github.com/home-assistant/core/pull/104562
+[#104563]: https://github.com/home-assistant/core/pull/104563
+[#104569]: https://github.com/home-assistant/core/pull/104569
+[#104579]: https://github.com/home-assistant/core/pull/104579
+[#104582]: https://github.com/home-assistant/core/pull/104582
+[#104587]: https://github.com/home-assistant/core/pull/104587
+[#104592]: https://github.com/home-assistant/core/pull/104592
+[#104593]: https://github.com/home-assistant/core/pull/104593
+[#104602]: https://github.com/home-assistant/core/pull/104602
+[#104605]: https://github.com/home-assistant/core/pull/104605
+[#104606]: https://github.com/home-assistant/core/pull/104606
+[#104611]: https://github.com/home-assistant/core/pull/104611
+[#104612]: https://github.com/home-assistant/core/pull/104612
+[#104613]: https://github.com/home-assistant/core/pull/104613
+[#104619]: https://github.com/home-assistant/core/pull/104619
+[#104620]: https://github.com/home-assistant/core/pull/104620
+[#104628]: https://github.com/home-assistant/core/pull/104628
+[#104629]: https://github.com/home-assistant/core/pull/104629
+[#104631]: https://github.com/home-assistant/core/pull/104631
+[#104632]: https://github.com/home-assistant/core/pull/104632
+[#104635]: https://github.com/home-assistant/core/pull/104635
+[#104637]: https://github.com/home-assistant/core/pull/104637
+[#104638]: https://github.com/home-assistant/core/pull/104638
+[#104641]: https://github.com/home-assistant/core/pull/104641
+[#104642]: https://github.com/home-assistant/core/pull/104642
+[#104644]: https://github.com/home-assistant/core/pull/104644
+[#104645]: https://github.com/home-assistant/core/pull/104645
+[#104647]: https://github.com/home-assistant/core/pull/104647
+[#104649]: https://github.com/home-assistant/core/pull/104649
+[#104654]: https://github.com/home-assistant/core/pull/104654
+[#104655]: https://github.com/home-assistant/core/pull/104655
+[#104656]: https://github.com/home-assistant/core/pull/104656
+[#104658]: https://github.com/home-assistant/core/pull/104658
+[#104659]: https://github.com/home-assistant/core/pull/104659
+[#104660]: https://github.com/home-assistant/core/pull/104660
+[#104665]: https://github.com/home-assistant/core/pull/104665
+[#104669]: https://github.com/home-assistant/core/pull/104669
+[#104672]: https://github.com/home-assistant/core/pull/104672
+[#104673]: https://github.com/home-assistant/core/pull/104673
+[#104674]: https://github.com/home-assistant/core/pull/104674
+[#104677]: https://github.com/home-assistant/core/pull/104677
+[#104679]: https://github.com/home-assistant/core/pull/104679
+[#104682]: https://github.com/home-assistant/core/pull/104682
+[#104683]: https://github.com/home-assistant/core/pull/104683
+[#104685]: https://github.com/home-assistant/core/pull/104685
+[#104686]: https://github.com/home-assistant/core/pull/104686
+[#104687]: https://github.com/home-assistant/core/pull/104687
+[#104688]: https://github.com/home-assistant/core/pull/104688
+[#104689]: https://github.com/home-assistant/core/pull/104689
+[#104690]: https://github.com/home-assistant/core/pull/104690
+[#104691]: https://github.com/home-assistant/core/pull/104691
+[#104693]: https://github.com/home-assistant/core/pull/104693
+[#104694]: https://github.com/home-assistant/core/pull/104694
+[#104695]: https://github.com/home-assistant/core/pull/104695
+[#104696]: https://github.com/home-assistant/core/pull/104696
+[#104698]: https://github.com/home-assistant/core/pull/104698
+[#104699]: https://github.com/home-assistant/core/pull/104699
+[#104700]: https://github.com/home-assistant/core/pull/104700
+[#104703]: https://github.com/home-assistant/core/pull/104703
+[#104704]: https://github.com/home-assistant/core/pull/104704
+[#104705]: https://github.com/home-assistant/core/pull/104705
+[#104707]: https://github.com/home-assistant/core/pull/104707
+[#104708]: https://github.com/home-assistant/core/pull/104708
+[#104709]: https://github.com/home-assistant/core/pull/104709
+[#104710]: https://github.com/home-assistant/core/pull/104710
+[#104711]: https://github.com/home-assistant/core/pull/104711
+[#104715]: https://github.com/home-assistant/core/pull/104715
+[#104717]: https://github.com/home-assistant/core/pull/104717
+[#104721]: https://github.com/home-assistant/core/pull/104721
+[#104722]: https://github.com/home-assistant/core/pull/104722
+[#104723]: https://github.com/home-assistant/core/pull/104723
+[#104724]: https://github.com/home-assistant/core/pull/104724
+[#104726]: https://github.com/home-assistant/core/pull/104726
+[#104727]: https://github.com/home-assistant/core/pull/104727
+[#104732]: https://github.com/home-assistant/core/pull/104732
+[#104738]: https://github.com/home-assistant/core/pull/104738
+[#104740]: https://github.com/home-assistant/core/pull/104740
+[#104741]: https://github.com/home-assistant/core/pull/104741
+[#104755]: https://github.com/home-assistant/core/pull/104755
+[#104756]: https://github.com/home-assistant/core/pull/104756
+[#104757]: https://github.com/home-assistant/core/pull/104757
+[#104759]: https://github.com/home-assistant/core/pull/104759
+[#104768]: https://github.com/home-assistant/core/pull/104768
+[#104770]: https://github.com/home-assistant/core/pull/104770
+[#104771]: https://github.com/home-assistant/core/pull/104771
+[#104772]: https://github.com/home-assistant/core/pull/104772
+[#104776]: https://github.com/home-assistant/core/pull/104776
+[#104778]: https://github.com/home-assistant/core/pull/104778
+[#104779]: https://github.com/home-assistant/core/pull/104779
+[#104782]: https://github.com/home-assistant/core/pull/104782
+[#104784]: https://github.com/home-assistant/core/pull/104784
+[#104785]: https://github.com/home-assistant/core/pull/104785
+[#104786]: https://github.com/home-assistant/core/pull/104786
+[#104787]: https://github.com/home-assistant/core/pull/104787
+[#104789]: https://github.com/home-assistant/core/pull/104789
+[#104791]: https://github.com/home-assistant/core/pull/104791
+[#104792]: https://github.com/home-assistant/core/pull/104792
+[#104796]: https://github.com/home-assistant/core/pull/104796
+[#104800]: https://github.com/home-assistant/core/pull/104800
+[#104801]: https://github.com/home-assistant/core/pull/104801
+[#104805]: https://github.com/home-assistant/core/pull/104805
+[#104808]: https://github.com/home-assistant/core/pull/104808
+[#104812]: https://github.com/home-assistant/core/pull/104812
+[#104814]: https://github.com/home-assistant/core/pull/104814
+[#104815]: https://github.com/home-assistant/core/pull/104815
+[#104816]: https://github.com/home-assistant/core/pull/104816
+[#104818]: https://github.com/home-assistant/core/pull/104818
+[#104819]: https://github.com/home-assistant/core/pull/104819
+[#104829]: https://github.com/home-assistant/core/pull/104829
+[#104830]: https://github.com/home-assistant/core/pull/104830
+[#104835]: https://github.com/home-assistant/core/pull/104835
+[#104836]: https://github.com/home-assistant/core/pull/104836
+[#104838]: https://github.com/home-assistant/core/pull/104838
+[#104843]: https://github.com/home-assistant/core/pull/104843
+[#104848]: https://github.com/home-assistant/core/pull/104848
+[#104855]: https://github.com/home-assistant/core/pull/104855
+[#104856]: https://github.com/home-assistant/core/pull/104856
+[#104857]: https://github.com/home-assistant/core/pull/104857
+[#104858]: https://github.com/home-assistant/core/pull/104858
+[#104859]: https://github.com/home-assistant/core/pull/104859
+[#104860]: https://github.com/home-assistant/core/pull/104860
+[#104861]: https://github.com/home-assistant/core/pull/104861
+[#104862]: https://github.com/home-assistant/core/pull/104862
+[#104863]: https://github.com/home-assistant/core/pull/104863
+[#104867]: https://github.com/home-assistant/core/pull/104867
+[#104871]: https://github.com/home-assistant/core/pull/104871
+[#104872]: https://github.com/home-assistant/core/pull/104872
+[#104885]: https://github.com/home-assistant/core/pull/104885
+[#104896]: https://github.com/home-assistant/core/pull/104896
+[#104900]: https://github.com/home-assistant/core/pull/104900
+[#104902]: https://github.com/home-assistant/core/pull/104902
+[#104910]: https://github.com/home-assistant/core/pull/104910
+[#104914]: https://github.com/home-assistant/core/pull/104914
+[#104941]: https://github.com/home-assistant/core/pull/104941
+[#104947]: https://github.com/home-assistant/core/pull/104947
+[#104961]: https://github.com/home-assistant/core/pull/104961
+[#104966]: https://github.com/home-assistant/core/pull/104966
+[#104972]: https://github.com/home-assistant/core/pull/104972
+[#104980]: https://github.com/home-assistant/core/pull/104980
+[#104981]: https://github.com/home-assistant/core/pull/104981
+[#104990]: https://github.com/home-assistant/core/pull/104990
+[#104992]: https://github.com/home-assistant/core/pull/104992
+[#104996]: https://github.com/home-assistant/core/pull/104996
+[#105009]: https://github.com/home-assistant/core/pull/105009
+[#105022]: https://github.com/home-assistant/core/pull/105022
+[#105028]: https://github.com/home-assistant/core/pull/105028
+[#105032]: https://github.com/home-assistant/core/pull/105032
+[#105063]: https://github.com/home-assistant/core/pull/105063
+[#105079]: https://github.com/home-assistant/core/pull/105079
+[#105081]: https://github.com/home-assistant/core/pull/105081
+[#105090]: https://github.com/home-assistant/core/pull/105090
+[#105099]: https://github.com/home-assistant/core/pull/105099
+[#105104]: https://github.com/home-assistant/core/pull/105104
+[#105116]: https://github.com/home-assistant/core/pull/105116
+[#71034]: https://github.com/home-assistant/core/pull/71034
+[#71644]: https://github.com/home-assistant/core/pull/71644
+[#72363]: https://github.com/home-assistant/core/pull/72363
+[#79568]: https://github.com/home-assistant/core/pull/79568
+[#80866]: https://github.com/home-assistant/core/pull/80866
+[#83514]: https://github.com/home-assistant/core/pull/83514
+[#83537]: https://github.com/home-assistant/core/pull/83537
+[#84097]: https://github.com/home-assistant/core/pull/84097
+[#84931]: https://github.com/home-assistant/core/pull/84931
+[#85767]: https://github.com/home-assistant/core/pull/85767
+[#86047]: https://github.com/home-assistant/core/pull/86047
+[#86119]: https://github.com/home-assistant/core/pull/86119
+[#86551]: https://github.com/home-assistant/core/pull/86551
+[#88467]: https://github.com/home-assistant/core/pull/88467
+[#89010]: https://github.com/home-assistant/core/pull/89010
+[#89090]: https://github.com/home-assistant/core/pull/89090
+[#89592]: https://github.com/home-assistant/core/pull/89592
+[#90511]: https://github.com/home-assistant/core/pull/90511
+[#90961]: https://github.com/home-assistant/core/pull/90961
+[#91183]: https://github.com/home-assistant/core/pull/91183
+[#91436]: https://github.com/home-assistant/core/pull/91436
+[#91967]: https://github.com/home-assistant/core/pull/91967
+[#92787]: https://github.com/home-assistant/core/pull/92787
+[#92906]: https://github.com/home-assistant/core/pull/92906
+[#93231]: https://github.com/home-assistant/core/pull/93231
+[#93562]: https://github.com/home-assistant/core/pull/93562
+[#94155]: https://github.com/home-assistant/core/pull/94155
+[#94507]: https://github.com/home-assistant/core/pull/94507
+[#94691]: https://github.com/home-assistant/core/pull/94691
+[#94698]: https://github.com/home-assistant/core/pull/94698
+[#95053]: https://github.com/home-assistant/core/pull/95053
+[#95613]: https://github.com/home-assistant/core/pull/95613
+[#95720]: https://github.com/home-assistant/core/pull/95720
+[#95722]: https://github.com/home-assistant/core/pull/95722
+[#95954]: https://github.com/home-assistant/core/pull/95954
+[#96370]: https://github.com/home-assistant/core/pull/96370
+[#97280]: https://github.com/home-assistant/core/pull/97280
+[#97553]: https://github.com/home-assistant/core/pull/97553
+[#98164]: https://github.com/home-assistant/core/pull/98164
+[#98610]: https://github.com/home-assistant/core/pull/98610
+[#98686]: https://github.com/home-assistant/core/pull/98686
+[#98752]: https://github.com/home-assistant/core/pull/98752
+[#99054]: https://github.com/home-assistant/core/pull/99054
+[#99424]: https://github.com/home-assistant/core/pull/99424
+[#99438]: https://github.com/home-assistant/core/pull/99438
+[#99450]: https://github.com/home-assistant/core/pull/99450
+[#99500]: https://github.com/home-assistant/core/pull/99500
+[@Adi146]: https://github.com/Adi146
+[@Bre77]: https://github.com/Bre77
+[@CFenner]: https://github.com/CFenner
+[@Cereal2nd]: https://github.com/Cereal2nd
+[@CodingSquirrel]: https://github.com/CodingSquirrel
+[@DCSBL]: https://github.com/DCSBL
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@Djelibeybi]: https://github.com/Djelibeybi
+[@Floyer007]: https://github.com/Floyer007
+[@FredericMa]: https://github.com/FredericMa
+[@GeoffAtHome]: https://github.com/GeoffAtHome
+[@Haerteleric]: https://github.com/Haerteleric
+[@Hejki]: https://github.com/Hejki
+[@IceBotYT]: https://github.com/IceBotYT
+[@IsakNyberg]: https://github.com/IsakNyberg
+[@Kane610]: https://github.com/Kane610
+[@KapJI]: https://github.com/KapJI
+[@Lash-L]: https://github.com/Lash-L
+[@MTrab]: https://github.com/MTrab
+[@Mappenhei]: https://github.com/Mappenhei
+[@Marco98]: https://github.com/Marco98
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@MislavMandaric]: https://github.com/MislavMandaric
+[@MrBartusek]: https://github.com/MrBartusek
+[@Narmishka]: https://github.com/Narmishka
+[@Noltari]: https://github.com/Noltari
+[@OnFreund]: https://github.com/OnFreund
+[@ProstoSanja]: https://github.com/ProstoSanja
+[@Quentame]: https://github.com/Quentame
+[@Shulyaka]: https://github.com/Shulyaka
+[@Shutgun]: https://github.com/Shutgun
+[@Sibgatulin]: https://github.com/Sibgatulin
+[@StevenLooman]: https://github.com/StevenLooman
+[@TheJulianJES]: https://github.com/TheJulianJES
+[@TheKalpit]: https://github.com/TheKalpit
+[@Vaarlion]: https://github.com/Vaarlion
+[@ViViDboarder]: https://github.com/ViViDboarder
+[@Xitee1]: https://github.com/Xitee1
+[@abmantis]: https://github.com/abmantis
+[@akx]: https://github.com/akx
+[@allenporter]: https://github.com/allenporter
+[@apt-itude]: https://github.com/apt-itude
+[@aptalca]: https://github.com/aptalca
+[@azogue]: https://github.com/azogue
+[@balloob]: https://github.com/balloob
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@bilak]: https://github.com/bilak
+[@blastoise186]: https://github.com/blastoise186
+[@boralyl]: https://github.com/boralyl
+[@boswelja]: https://github.com/boswelja
+[@bouwew]: https://github.com/bouwew
+[@bramkragten]: https://github.com/bramkragten
+[@c0ffeeca7]: https://github.com/c0ffeeca7
+[@catsmanac]: https://github.com/catsmanac
+[@ccrepin]: https://github.com/ccrepin
+[@cdce8p]: https://github.com/cdce8p
+[@cgarwood]: https://github.com/cgarwood
+[@cgtobi]: https://github.com/cgtobi
+[@chrisx8]: https://github.com/chrisx8
+[@codyc1515]: https://github.com/codyc1515
+[@codyhackw]: https://github.com/codyhackw
+[@coffeehorn]: https://github.com/coffeehorn
+[@cronjefourie]: https://github.com/cronjefourie
+[@davet2001]: https://github.com/davet2001
+[@deosrc]: https://github.com/deosrc
+[@dgomes]: https://github.com/dgomes
+[@disforw]: https://github.com/disforw
+[@dknowles2]: https://github.com/dknowles2
+[@dotvav]: https://github.com/dotvav
+[@dsypniewski]: https://github.com/dsypniewski
+[@dupondje]: https://github.com/dupondje
+[@edenhaus]: https://github.com/edenhaus
+[@egguy]: https://github.com/egguy
+[@eifinger]: https://github.com/eifinger
+[@elupus]: https://github.com/elupus
+[@emontnemery]: https://github.com/emontnemery
+[@engrbm87]: https://github.com/engrbm87
+[@erwindouna]: https://github.com/erwindouna
+[@farmio]: https://github.com/farmio
+[@fb22]: https://github.com/fb22
+[@fetzerch]: https://github.com/fetzerch
+[@ffourcot]: https://github.com/ffourcot
+[@frenck]: https://github.com/frenck
+[@fwestenberg]: https://github.com/fwestenberg
+[@gaaf]: https://github.com/gaaf
+[@geirra]: https://github.com/geirra
+[@gigatexel]: https://github.com/gigatexel
+[@gjohansson-ST]: https://github.com/gjohansson-ST
+[@gladhorn]: https://github.com/gladhorn
+[@glanch]: https://github.com/glanch
+[@hahn-th]: https://github.com/hahn-th
+[@hesselonline]: https://github.com/hesselonline
+[@iMicknl]: https://github.com/iMicknl
+[@jakubcermak]: https://github.com/jakubcermak
+[@janiversen]: https://github.com/janiversen
+[@jbouwh]: https://github.com/jbouwh
+[@jflefebvre06]: https://github.com/jflefebvre06
+[@jimmyd-be]: https://github.com/jimmyd-be
+[@jmwhite5]: https://github.com/jmwhite5
+[@joostlek]: https://github.com/joostlek
+[@joseph39]: https://github.com/joseph39
+[@jpbede]: https://github.com/jpbede
+[@jrieger]: https://github.com/jrieger
+[@killer0071234]: https://github.com/killer0071234
+[@klaasnicolaas]: https://github.com/klaasnicolaas
+[@kroimon]: https://github.com/kroimon
+[@laurentriffard]: https://github.com/laurentriffard
+[@ludeeus]: https://github.com/ludeeus
+[@lunmay]: https://github.com/lunmay
+[@marcelveldt]: https://github.com/marcelveldt
+[@marcolivierarsenault]: https://github.com/marcolivierarsenault
+[@marthoc]: https://github.com/marthoc
+[@maximweb]: https://github.com/maximweb
+[@mheath]: https://github.com/mheath
+[@mib1185]: https://github.com/mib1185
+[@mkmer]: https://github.com/mkmer
+[@mletenay]: https://github.com/mletenay
+[@mricharz]: https://github.com/mricharz
+[@muppet3000]: https://github.com/muppet3000
+[@myztillx]: https://github.com/myztillx
+[@nachonam]: https://github.com/nachonam
+[@natekspencer]: https://github.com/natekspencer
+[@ollo69]: https://github.com/ollo69
+[@oyvindwe]: https://github.com/oyvindwe
+[@pavoni]: https://github.com/pavoni
+[@pdecat]: https://github.com/pdecat
+[@piitaya]: https://github.com/piitaya
+[@pjanuario]: https://github.com/pjanuario
+[@puddly]: https://github.com/puddly
+[@r01k]: https://github.com/r01k
+[@raman325]: https://github.com/raman325
+[@rappenze]: https://github.com/rappenze
+[@rikroe]: https://github.com/rikroe
+[@riokuu]: https://github.com/riokuu
+[@rytilahti]: https://github.com/rytilahti
+[@schelv]: https://github.com/schelv
+[@scop]: https://github.com/scop
+[@sdb9696]: https://github.com/sdb9696
+[@sergeymaysak]: https://github.com/sergeymaysak
+[@slovdahl]: https://github.com/slovdahl
+[@starkillerOG]: https://github.com/starkillerOG
+[@stegm]: https://github.com/stegm
+[@suaveolent]: https://github.com/suaveolent
+[@syepes]: https://github.com/syepes
+[@synesthesiam]: https://github.com/synesthesiam
+[@teharris1]: https://github.com/teharris1
+[@tetele]: https://github.com/tetele
+[@thijsputman]: https://github.com/thijsputman
+[@timmo001]: https://github.com/timmo001
+[@tjhorner]: https://github.com/tjhorner
+[@tkdrob]: https://github.com/tkdrob
+[@tronikos]: https://github.com/tronikos
+[@ufodone]: https://github.com/ufodone
+[@vangorra]: https://github.com/vangorra
+[@vhartikainen]: https://github.com/vhartikainen
+[@yuxincs]: https://github.com/yuxincs
+[@zxdavb]: https://github.com/zxdavb
diff --git a/source/images/assist/assist_create_alias.png b/source/images/assist/assist_create_alias.png
new file mode 100644
index 00000000000..87887f2a4ff
Binary files /dev/null and b/source/images/assist/assist_create_alias.png differ
diff --git a/source/images/assist/expose_entity_dialog.png b/source/images/assist/expose_entity_dialog.png
new file mode 100644
index 00000000000..67a11cfc3c6
Binary files /dev/null and b/source/images/assist/expose_entity_dialog.png differ
diff --git a/source/images/assist/metno_weather_entity.png b/source/images/assist/metno_weather_entity.png
new file mode 100644
index 00000000000..a548e5ac78c
Binary files /dev/null and b/source/images/assist/metno_weather_entity.png differ
diff --git a/source/images/assist/weather_entity_voice_assistant.png b/source/images/assist/weather_entity_voice_assistant.png
new file mode 100644
index 00000000000..9e5f3a7dba4
Binary files /dev/null and b/source/images/assist/weather_entity_voice_assistant.png differ
diff --git a/source/images/blog/2023-11-matter-member-meeting/matter-image.jpg b/source/images/blog/2023-11-matter-member-meeting/matter-image.jpg
new file mode 100644
index 00000000000..b3e9339eef9
Binary files /dev/null and b/source/images/blog/2023-11-matter-member-meeting/matter-image.jpg differ
diff --git a/source/images/blog/2023-12/create-new-dashboard-dialog.png b/source/images/blog/2023-12/create-new-dashboard-dialog.png
new file mode 100644
index 00000000000..64554a64f4f
Binary files /dev/null and b/source/images/blog/2023-12/create-new-dashboard-dialog.png differ
diff --git a/source/images/blog/2023-12/dashboard-options.png b/source/images/blog/2023-12/dashboard-options.png
new file mode 100644
index 00000000000..5d85bc18961
Binary files /dev/null and b/source/images/blog/2023-12/dashboard-options.png differ
diff --git a/source/images/blog/2023-12/humidifier-card.png b/source/images/blog/2023-12/humidifier-card.png
new file mode 100644
index 00000000000..44bf6abc99d
Binary files /dev/null and b/source/images/blog/2023-12/humidifier-card.png differ
diff --git a/source/images/blog/2023-12/long-term-history-dashboard.png b/source/images/blog/2023-12/long-term-history-dashboard.png
new file mode 100644
index 00000000000..aa46bbffd3e
Binary files /dev/null and b/source/images/blog/2023-12/long-term-history-dashboard.png differ
diff --git a/source/images/blog/2023-12/new-login-external-network.png b/source/images/blog/2023-12/new-login-external-network.png
new file mode 100644
index 00000000000..d6505aafcbf
Binary files /dev/null and b/source/images/blog/2023-12/new-login-external-network.png differ
diff --git a/source/images/blog/2023-12/new-login-screen.png b/source/images/blog/2023-12/new-login-screen.png
new file mode 100644
index 00000000000..bf05d8a7acf
Binary files /dev/null and b/source/images/blog/2023-12/new-login-screen.png differ
diff --git a/source/images/blog/2023-12/re-import-blueprint.png b/source/images/blog/2023-12/re-import-blueprint.png
new file mode 100644
index 00000000000..21269d82ad7
Binary files /dev/null and b/source/images/blog/2023-12/re-import-blueprint.png differ
diff --git a/source/images/blog/2023-12/social.png b/source/images/blog/2023-12/social.png
new file mode 100644
index 00000000000..a6b391d3031
Binary files /dev/null and b/source/images/blog/2023-12/social.png differ
diff --git a/source/images/blog/2023-12/thermostat-card-features.png b/source/images/blog/2023-12/thermostat-card-features.png
new file mode 100644
index 00000000000..0bb2c6a1f96
Binary files /dev/null and b/source/images/blog/2023-12/thermostat-card-features.png differ
diff --git a/source/images/blog/2023-12/thermostat-card.png b/source/images/blog/2023-12/thermostat-card.png
new file mode 100644
index 00000000000..a77728378ee
Binary files /dev/null and b/source/images/blog/2023-12/thermostat-card.png differ
diff --git a/source/images/blog/2023-12/tile-card-numberic-input-feature.png b/source/images/blog/2023-12/tile-card-numberic-input-feature.png
new file mode 100644
index 00000000000..d5e4103e1f2
Binary files /dev/null and b/source/images/blog/2023-12/tile-card-numberic-input-feature.png differ
diff --git a/source/images/integrations/slack/slack-member-id.png b/source/images/integrations/slack/slack-member-id.png
new file mode 100644
index 00000000000..37c3c7c038a
Binary files /dev/null and b/source/images/integrations/slack/slack-member-id.png differ
diff --git a/source/voice_control/builtin_sentences.markdown b/source/voice_control/builtin_sentences.markdown
index 671d05661c2..5472f89fbe3 100644
--- a/source/voice_control/builtin_sentences.markdown
+++ b/source/voice_control/builtin_sentences.markdown
@@ -9,18 +9,44 @@ These sentences allow you, for example, to:
- **Turn entities on and off**
- *"turn on the living room light"*
- *"turn off ceiling fan"*
+ - *"turn on the TV"*
+ - *"lock all the doors"*
+ - *"open the main door"*
- **Open and close covers**
- *"Close the garage door"*
- *"Open kitchen window"*
- **Set the brightness and color of lights**
- *"Change kitchen lights brightness to 50%"*
- *"Set bed light to green"*
-
-In addition to individual entities, commands can target **areas**:
+- **Ask about the weather**
+ - *"What is the weather"*
+ - Struggling with this one? Check the [troubleshooting section](/voice_control/troubleshooting/).
+- **Add items to a list**
+ - *"Add bread to my shopping list"*
+ - *"Add decorating christmas tree to my december chores list"*
+- **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?"*
+- **Run a script**
+ - *"Run stealth mode script"*
+- **Activate a scene**
+ - *"Activate dinner scence"*
+ - *"Turn kitchen dinner scene on"*
+- **Inquire 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"*
+- **Abort wake word**
+ - *"Nevermind"*: If you triggered the wake word by mistake and want to stop Home Assistant from listening
+
+The sentences only work, if the {% term entities %} are available and are named exactly the way you call them. Check the [troubleshooting section](/voice_control/troubleshooting/) to see common errors when asking for the weather forecast.
+
+In addition to individual {% term entities %}, commands can target **areas**:
- *"turn on all lights in the living room"*
- *"open windows in the kitchen"*
-- *"change kitchen brightness to 50%"*
+- *"change office brightness to 50%"*
- *"set bedroom lights to green"*
Entity [aliases](/voice_control/aliases) are also matched so that multiple names can be used, even in different languages.
@@ -29,21 +55,20 @@ You can extend the [built-in sentences](https://github.com/home-assistant/intent
## View existing sentences
-Broadly speaking, you can use your voice to turn things on or off, inquire about a state, or change the brightness or color of a light.
+The list of supported sentences is constantly being updated for each language. There are so many possible sentences that they cannot be all listed here. To find out what works in your language, follow these steps.
-If the voice assistant doesn't understand you, you may need to rephrase your sentence a bit.
-To get an idea of the specific sentences that are supported for your language, you can do the following:
+**Note**: If the voice assistant doesn't understand you, you may need to rephrase your sentence a bit. Or check if the {% term entity %} or {% term area %} name is correct for your environment.
1. Take a look at the test sentences:
- On GitHub, in the [tests](https://github.com/home-assistant/intents/tree/main/sentences) folder, open the subfolder for your language.
- Look through the test files to see the example sentences that have been tested.
- - The second part of the file name shows the {% term intent %}, the first part shows the domain. For some domains, such as covers, fans, and light, there are specific sentences.
- The other domains are covered by the generic *homeassistant_*.
+ - The second part of the file name shows the {% term intent %}, the first part shows the {% term domain %}. For some {% term domains %}, such as covers, fans, and light, there are specific sentences.
+ The other {% term domains %} are covered by the generic *homeassistant_*.

- The screenshot below shows sentences used to test the command to turn on the lights. Note that *Living room* here is just a place holder.
- It could be any area that you have in your home.
+ It could be any {% term area %} that you have in your home.

@@ -68,3 +93,4 @@ To get an idea of the specific sentences that are supported for your language, y
- [Built-in response definitions](https://github.com/home-assistant/intents/tree/main/responses)
- [Template sentence syntax documentation](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax/)
- [Sentence test cases](https://github.com/home-assistant/intents/tree/main/sentences)
+- [Sentence troubleshooting](/voice_control/troubleshooting/)
diff --git a/source/voice_control/troubleshooting.markdown b/source/voice_control/troubleshooting.markdown
index f0743d7c2d3..2c1cd691de3 100644
--- a/source/voice_control/troubleshooting.markdown
+++ b/source/voice_control/troubleshooting.markdown
@@ -47,7 +47,7 @@ If you want to test if a sentence works with a specific assistant while actively
## I do not see any assistant
-If under {% my voice_assistants title="**Settings** > **Voice assistants**" %} you do not see any assistants, you are not using the default configuration. The image below shows the **Assist** section.
+If under {% my voice_assistants title="**Settings** > **Voice assistants**" %} you do not see any assistants, you are not using the default configuration. The image below shows the **Assist** section.

@@ -57,3 +57,34 @@ If the **Assist** section is missing entirely, you need to add the following to
# Example configuration.yaml entry
assist_pipeline:
```
+
+## Assist does not understand my question about the weather forecast
+
+The example below shows common pitfalls when enquiring about the weather. While some steps are specific to the weather, the general mechanics apply to other entities as well.
+
+1. Make sure you have a [weather service](/integrations/#weather) installed.
+ - By default, [Met.no](/integrations/met/) is installed.
+2. Make sure you have an entity set up for the location you are interested in.
+ - For example, if you are interested in the weather in Berlin, add an entity for Berlin.
+
+ 
+3. Make sure the entity is exposed to Assist:
+ - Under {% my entities title="**Settings** > **Devices & services** > **Entities**" %}, select the weather entity for that location.
+ - In the details view that opens, select the cogwheel, then select **Voice Assistant**.
+
+ 
+
+ - Make sure the entity is exposed to Assist.
+
+ 
+
+4. Make sure you use the exact entity name when talking to Assist.
+ - To view the entity name, check the list under {% my entities title="**Settings** > **Devices & services** > **Entities**" %}.
+ - For example, if the entity is called *Forecast Berlin*, you have to say "What is the weather in forecast Berlin like".
+ - Assist would not recognize it if you ask "What is the weather in Berlin like".
+ - If you want to use Berlin instead of *Forecast Berlin*, you can create an entity name alias.
+ - You can create as many aliases as you like.
+
+ 
+5. If you just ask "What is the weather" when you have forecast entities for multiple entities, Assist always returns the data for the place that was first added. Currently, there is no way to change that.
+