From 838c54431cec9230780ae825fac57c0eb631c5ab Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Wed, 30 Aug 2023 19:28:01 +0200 Subject: [PATCH 001/109] Add new board type (#28736) * Add new board type * Update source/_integrations/homeassistant_green.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- .../homeassistant_green.markdown | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 source/_integrations/homeassistant_green.markdown diff --git a/source/_integrations/homeassistant_green.markdown b/source/_integrations/homeassistant_green.markdown new file mode 100644 index 00000000000..6222a02d105 --- /dev/null +++ b/source/_integrations/homeassistant_green.markdown @@ -0,0 +1,20 @@ +--- +title: Home Assistant Green +description: Home Assistant Green provides hardware information for the hardware configuration page. +ha_release: 2023.9 +ha_category: + - Other +ha_codeowners: + - '@home-assistant/core' +ha_domain: homeassistant_green +ha_integration_type: hardware +--- + +The Home Assistant Green integration provides hardware information for the hardware configuration page. + +For documentation on the Home Assistant Green, please visit the [documentation page](https://green.home-assistant.io/). +If you are looking to buy one, please visit the [product page](https://home-assistant.io/green). + +## Configuration + +This integration is not user configurable. From 48f8de4237d238dcff69f37819755c826a3a6cb9 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Thu, 31 Aug 2023 22:01:39 +0200 Subject: [PATCH 002/109] Timer start service remove duration parameter (#28754) --- source/_integrations/timer.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 97beeeed51c..994e54dd1bb 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -91,13 +91,12 @@ Pick an icon from [Material Design Icons](https://pictogrammers.com/library/mdi/ ### Service `timer.start` -Starts or restarts a timer with the provided duration. If no duration is given, it will either restart with its initial value, or continue a paused timer with the remaining duration. If a new duration is provided, this will be the new default for the timer until Home Assistant is restarted (which loads your default values). The duration can be specified as a number of seconds or the easier to read `01:23:45` format. +Starts or restarts a timer. It will either restart with its initial value, or continue a paused timer with the remaining duration. You can also use `entity_id: all` and all active timers will be started. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | -| `duration` | yes | Duration in seconds or `01:23:45` format until the timer finishes. | ### Service `timer.change` From e0b20d403da7daa8a6b6743aee5d3a330981e302 Mon Sep 17 00:00:00 2001 From: jimmyd-be <34766203+jimmyd-be@users.noreply.github.com> Date: Thu, 31 Aug 2023 22:25:25 +0200 Subject: [PATCH 003/109] Renson binary sensor (#27802) * add Renson endura delta integration documentation * Fixed text lint error in renson endura delta * Changed metadata header * Changed integration domain to renson * Removed manual configuration Changed intro a bit * Add binary sensor to renson --- source/_integrations/renson.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index 36c9ba8d828..442da8e8388 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -2,6 +2,7 @@ title: Renson description: Instructions on how to integrate Renson Endura Delta sensors into Home Assistant. ha_category: + - Binary Sensor - Sensor ha_release: 2023.7 ha_iot_class: Local Polling @@ -10,6 +11,7 @@ ha_codeowners: - '@jimmyd-be' ha_domain: renson ha_platforms: + - binary_sensor - sensor ha_integration_type: integration --- From 91635588cbda369a5d15143ff4af7b9dba3dc065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Huryn?= Date: Thu, 31 Aug 2023 22:27:42 +0200 Subject: [PATCH 004/109] blebox: sensor types extended (#26801) * chore: update functionality status * chore: added humitidySensor, moved airSensor --- source/_integrations/blebox.markdown | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/source/_integrations/blebox.markdown b/source/_integrations/blebox.markdown index 2c2299e57df..2bf5e29769b 100644 --- a/source/_integrations/blebox.markdown +++ b/source/_integrations/blebox.markdown @@ -48,7 +48,7 @@ This integration adds BleBox device as a binary_sensor in Home Assistant. Currently, this includes support for the following product classes: - BleBox rainSensor -- BleBox wind&rainSensor (rain only) +- BleBox wind&rainSensor ## Sensors @@ -57,6 +57,8 @@ This integration adds the BleBox device as a sensor in Home Assistant. Currently, this includes support for the following product classes and their features: - BleBox tempSensor (temperature only) +- Blebox humiditySensor +- BleBox airSensor ## Switches @@ -76,13 +78,6 @@ Currently, this includes support for the following product classes: - BleBox saunaBox - BleBox thermoBox -## Air Quality - -This integration adds the BleBox device as an air quality entity in Home Assistant. - -Currently, this includes support for the following product classes: - -- BleBox airSensor ## Lights From 11f80e7ec071f1d1fba3a95dcdde1ad515b89f6a Mon Sep 17 00:00:00 2001 From: Jc2k Date: Sat, 2 Sep 2023 15:32:27 +0100 Subject: [PATCH 005/109] Add Private BLE Device integration docs (#28761) Co-authored-by: J. Nick Koston --- .../_integrations/private_ble_device.markdown | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 source/_integrations/private_ble_device.markdown diff --git a/source/_integrations/private_ble_device.markdown b/source/_integrations/private_ble_device.markdown new file mode 100644 index 00000000000..4918ea4dbcf --- /dev/null +++ b/source/_integrations/private_ble_device.markdown @@ -0,0 +1,42 @@ +--- +title: Private BLE Device +description: Instructions on how to integrate private BLE devices into Home Assistant. +ha_category: + - Device Tracker +ha_release: '2023.10' +ha_iot_class: Local Push +ha_domain: private_ble_device +ha_platforms: + - device_tracker +ha_config_flow: true +ha_integration_type: integration +ha_codeowners: + - '@Jc2k' +--- + +Some BLE devices use a privacy feature called Resolvable Private Addresses to stop businesses from tracking you when you are out with your smart devices. Instead of having a single static address that can be used to track you, its Bluetooth address changes frequently. If you have [Bluetooth](/integrations/bluetooth) enabled and functioning and know your device's Identity Resolving Key, you can add it to Home Assistant as a Private BLE Device. We can then work out which random MAC addresses are related to the IRK and track those. + +{% include integrations/config_flow.md %} + +Your device must be on and broadcasting in range before adding it to Home Assistant - we check that it's visible to validate that your IRK is correct. + +There are two common representations for encoding an IRK - base64 encoding or hex encoding. This integration supports both. + +## Getting your Identity Resolving Key (IRK) + +### On macOS + +If you are trying to get the IRK for your iPhone or Apple Watch, you must be logged in to the Mac with the same iCloud account on those devices. This procedure should also work for devices that you pair with macOS. + +1. Start the **Keychain Acess** application. +2. In the left sidebar, make sure iCloud is selected. +3. In the search bar in the upper right, type Bluetooth. +4. A list of GUIDs is shown. +5. Double-click on a record. As part of the **Account** field, it will say `Public: XX:XX:XX:XX:XX:XX`. This MAC address should match the device you are trying to work with. +6. Click on show password +7. You will have to enter your password, then enter your username and password. +8. macOS will show some XML. You are looking for the "Remote IRK" field. After there is a data field that contains a base64 encoded version of your Identity Resolving Key. + +## ESPresense + +If you already use Identity Resolving Key tracking with ESPresence then you already have a hex-encoded version of your Identity Resolving Key. Home Assistant can use the key in this format directly. From befdc62324af2927344df0594133a22f3db59a5c Mon Sep 17 00:00:00 2001 From: Jc2k Date: Sat, 2 Sep 2023 23:45:58 +0100 Subject: [PATCH 006/109] Document sensor for private_ble_device (#28769) --- source/_integrations/private_ble_device.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/private_ble_device.markdown b/source/_integrations/private_ble_device.markdown index 4918ea4dbcf..68b4b5b0391 100644 --- a/source/_integrations/private_ble_device.markdown +++ b/source/_integrations/private_ble_device.markdown @@ -8,6 +8,7 @@ ha_iot_class: Local Push ha_domain: private_ble_device ha_platforms: - device_tracker + - sensor ha_config_flow: true ha_integration_type: integration ha_codeowners: @@ -16,6 +17,8 @@ ha_codeowners: Some BLE devices use a privacy feature called Resolvable Private Addresses to stop businesses from tracking you when you are out with your smart devices. Instead of having a single static address that can be used to track you, its Bluetooth address changes frequently. If you have [Bluetooth](/integrations/bluetooth) enabled and functioning and know your device's Identity Resolving Key, you can add it to Home Assistant as a Private BLE Device. We can then work out which random MAC addresses are related to the IRK and track those. +In addition to telling you if your device is home or away, it can also tell you an estimated distance to the nearest Bluetooth dongle or proxy and its signal strength. + {% include integrations/config_flow.md %} Your device must be on and broadcasting in range before adding it to Home Assistant - we check that it's visible to validate that your IRK is correct. From 4df34872321afddadda1e739a452b467fc437e00 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Mon, 4 Sep 2023 09:35:57 -0700 Subject: [PATCH 007/109] Add template entity script action documentation (#28768) * Add template entity script action documentation * Update source/_integrations/template.markdown Co-authored-by: Erik Montnemery * Focus action explanation on variables avaiable in templates * Remove whitespace * tiny tweak --------- Co-authored-by: Erik Montnemery Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/template.markdown | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index caab7a606b2..153eee1a261 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -112,6 +112,10 @@ unique_id: description: The unique ID for this config block. This will be prefixed to all unique IDs of all entities in this block. required: false type: string +action: + description: Define actions to be executed when the trigger fires. Optional. Variables set by the action script are available when evaluating entity templates. This can be used to interact with anything via services, in particular services with [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data). [See action documentation](/docs/automation/action). + required: false + type: list sensor: description: List of sensors required: true @@ -660,6 +664,36 @@ template: {% endraw %} +### Trigger based handling of service response data + +This example demonstrates how to use an `action` to call a [service with response data](/docs/scripts/service-calls/#use-templates-to-handle-response-data) +and use the response in a template. + +{% raw %} + +```yaml +template: + - trigger: + - platform: time_pattern + hours: /1 + action: + - service: weather.get_forecast + data: + type: hourly + target: + entity_id: weather.home + response_variable: hourly + sensor: + - name: Weather Forecast Hourly + unique_id: weather_forecast_hourly + state: "{{ now().isoformat() }}" + attributes: + forecast: "{{ hourly.forecast }}" +``` + +{% endraw %} + + ## Legacy binary sensor configuration format _This format still works but is no longer recommended. [Use modern configuration](#configuration-variables)._ From 3bb5658b839c489c7e0ecd0fad611239ce988fd3 Mon Sep 17 00:00:00 2001 From: Erik Montnemery Date: Mon, 4 Sep 2023 20:17:46 +0200 Subject: [PATCH 008/109] Revert "Timer start service remove duration parameter (#28754)" (#28783) This reverts commit 48f8de4237d238dcff69f37819755c826a3a6cb9. --- source/_integrations/timer.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 994e54dd1bb..97beeeed51c 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -91,12 +91,13 @@ Pick an icon from [Material Design Icons](https://pictogrammers.com/library/mdi/ ### Service `timer.start` -Starts or restarts a timer. It will either restart with its initial value, or continue a paused timer with the remaining duration. +Starts or restarts a timer with the provided duration. If no duration is given, it will either restart with its initial value, or continue a paused timer with the remaining duration. If a new duration is provided, this will be the new default for the timer until Home Assistant is restarted (which loads your default values). The duration can be specified as a number of seconds or the easier to read `01:23:45` format. You can also use `entity_id: all` and all active timers will be started. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | +| `duration` | yes | Duration in seconds or `01:23:45` format until the timer finishes. | ### Service `timer.change` From 13b78b4cad08f65ff08a566767735f5ebf1696b5 Mon Sep 17 00:00:00 2001 From: David Knowles Date: Thu, 7 Sep 2023 19:43:12 -0400 Subject: [PATCH 009/109] Add binary_sensor to Schlage documentation (#28784) * Add binary_sensor to Schlage documentation * Apply suggestions from code review Co-authored-by: Joost Lekkerkerker --------- Co-authored-by: Joost Lekkerkerker --- source/_integrations/schlage.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_integrations/schlage.markdown b/source/_integrations/schlage.markdown index f89f178ae34..315b163df62 100644 --- a/source/_integrations/schlage.markdown +++ b/source/_integrations/schlage.markdown @@ -11,6 +11,7 @@ ha_config_flow: true ha_codeowners: - '@dknowles2' ha_platforms: + - binary_sensor - lock - sensor - switch @@ -23,10 +24,17 @@ The Schlage integration provides connectivity with Schlage WiFi smart locks thro There is currently support for the following device types within Home Assistant: +- Binary sensor - Lock - Sensor - Switch +## Binary sensor + +Once you have enabled the Schlage integration, you should see the following binary sensor: + +- **Keypad disabled** - Indicates that the keypad has been disabled, typically due to too many incorrect lock codes being attempted. + ## Sensor Once you have enabled the Schlage integration, you should see the following sensors: From 6b801072a315805a618287fa8ad357296cf3bc72 Mon Sep 17 00:00:00 2001 From: Luke Lashley Date: Sat, 9 Sep 2023 12:20:18 -0400 Subject: [PATCH 010/109] Add binary sensors to Roborock (#28852) * Update roborock.markdown * Update source/_integrations/roborock.markdown Co-authored-by: Joost Lekkerkerker * Update roborock.markdown --------- Co-authored-by: Joost Lekkerkerker --- source/_integrations/roborock.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index 1466c99f98b..470d0cc052a 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Roborock vacuums into Home Assista ha_category: - Number - Select + - Binary Sensor - Sensor - Switch - Time @@ -18,6 +19,7 @@ ha_domain: roborock ha_platforms: - diagnostics - number + - binary_sensor - select - sensor - switch @@ -49,6 +51,15 @@ Mop mode - Describes how to mop the floor. On some firmware, it is called 'mop r Mop intensity - How hard you would like your vacuum to mop. +### Binary sensor + +Mop attached - States if the mop is currently attached. + +Mop drying status - Only available on docks with drying capabilites - States if the mop is currently being driven. + +Water box attached - States if the water box is currently attached. + + ### Sensor Cleaning area - How much area the vacuum has cleaned in its current run. If the vacuum is not currently cleaning, how much area it has cleaned during its last run. From fbf93d0b224df71e487240cb09cbe504b2fb9294 Mon Sep 17 00:00:00 2001 From: Luke Lashley Date: Sat, 9 Sep 2023 18:40:42 -0400 Subject: [PATCH 011/109] Add new sensors to Roborock (#28850) * Update roborock.markdown * fix typo --- source/_integrations/roborock.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index 470d0cc052a..b6ea49f14c5 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -66,8 +66,14 @@ Cleaning area - How much area the vacuum has cleaned in its current run. If the Cleaning time - How long the vacuum has been cleaning for. If the vacuum is not currently cleaning, how long it cleaned for in its last run. +Cleaning progress - Only available on some newer devices - what percent of the current cleaning is completed. + +Dock error - Only available on the non-basic docks - The current error of the vacuum or 'Ok' if none exist + Main brush time left - How much time is left before Roborock recommends you replace your main brush. +Mop drying remaining time - Only available on the non-basic docks - How much time is left until the mop is dry and ready to continue cleaning. + Side brush time left - How much time is left before Roborock recommends you replace your side brush. Filter time left - How much time is left before Roborock recommends you replace your vacuum's air filter. From b7acdc73b7b1b4c50bc879e81507dae49a198414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 11 Sep 2023 02:31:21 +0900 Subject: [PATCH 012/109] Document Airzone water heater entities (#28579) --- source/_integrations/airzone.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/airzone.markdown b/source/_integrations/airzone.markdown index e9d967e830e..50d0ace7272 100644 --- a/source/_integrations/airzone.markdown +++ b/source/_integrations/airzone.markdown @@ -7,6 +7,7 @@ ha_category: - Climate - Select - Sensor + - Water Heater ha_iot_class: Local Polling ha_config_flow: true ha_domain: airzone @@ -16,6 +17,7 @@ ha_platforms: - diagnostics - select - sensor + - water_heater ha_codeowners: - '@Noltari' ha_integration_type: integration @@ -94,3 +96,7 @@ For each Airzone zone (Thermostat), the following *sensors* are created: | :------------------ | :--------------------------------- | | humidity | Current zone relative humidity. | | temperature | Current zone temperature. | + +## Water Heater + +For each Airzone device a *water heater entity* is created if supported. From 5f87e8211321ec02edf55b600d7e8e8492654aea Mon Sep 17 00:00:00 2001 From: jan iversen Date: Sun, 10 Sep 2023 22:02:30 +0200 Subject: [PATCH 013/109] Deprecate close_comm_on_error. (#28853) --- source/_integrations/modbus.markdown | 7 ------- 1 file changed, 7 deletions(-) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 2addac68763..e9f28a1c898 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -37,13 +37,6 @@ The modbus integration allows you to use multiple connections each with multiple The modbus integration provides a number of parameters to help communicate with "difficult" devices, these parameters are independent of the type of communication. {% configuration %} -close_comm_on_error: - description: "Close connection when an error occurs. - Some serial-rs485 adapters deliver garble when opened, this leads to a disconnect and a new connect, which can continue. - If the log contains a message from pymodbus, with the text 'cleaning....', then try this parameter." - required: false - default: true - type: boolean delay: description: "Time to delay sending messages in seconds after connecting. Some modbus devices need a delay of typically 1-2 seconds after connection is established to prepare the communication. From 23333752995ad333b39b0ba778bd5b790d531635 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Mon, 11 Sep 2023 01:12:34 +0200 Subject: [PATCH 014/109] Add binary sensor to Trafikverket Camera (#28865) --- source/_integrations/trafikverket_camera.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/trafikverket_camera.markdown b/source/_integrations/trafikverket_camera.markdown index c8b62483e53..92c60cf4a83 100644 --- a/source/_integrations/trafikverket_camera.markdown +++ b/source/_integrations/trafikverket_camera.markdown @@ -2,6 +2,7 @@ title: Trafikverket Camera description: Instructions how to integrate Trafikverket Camera within Home Assistant. ha_category: + - Binary sensor - Camera ha_release: 2023.9 ha_iot_class: Cloud Polling @@ -10,6 +11,7 @@ ha_codeowners: - '@gjohansson-ST' ha_domain: trafikverket_camera ha_platforms: + - binary_sensor - camera ha_integration_type: integration --- @@ -24,6 +26,10 @@ Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obt {% include integrations/config_flow.md %} +## Binary sensor + +- Active + ## Additional attributes - Location (placement of camera) From 79950190974ce3211a7400417771d1407ad112fc Mon Sep 17 00:00:00 2001 From: jimmyd-be <34766203+jimmyd-be@users.noreply.github.com> Date: Mon, 11 Sep 2023 01:26:05 +0200 Subject: [PATCH 015/109] Add number to renson docs (#28741) --- source/_integrations/renson.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index 442da8e8388..a5d3fcd21cc 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Renson Endura Delta sensors into H ha_category: - Binary Sensor - Sensor + - Number ha_release: 2023.7 ha_iot_class: Local Polling ha_config_flow: true @@ -13,6 +14,7 @@ ha_domain: renson ha_platforms: - binary_sensor - sensor + - number ha_integration_type: integration --- From 80fab3504d348c18155072d5afd7508ca4b284c3 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Mon, 11 Sep 2023 08:58:51 +0200 Subject: [PATCH 016/109] Search for name or location in Trafikverket Camera (#28828) * Search for name or location * tiny tweaks --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/trafikverket_camera.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/trafikverket_camera.markdown b/source/_integrations/trafikverket_camera.markdown index 92c60cf4a83..1732b97da02 100644 --- a/source/_integrations/trafikverket_camera.markdown +++ b/source/_integrations/trafikverket_camera.markdown @@ -18,7 +18,9 @@ ha_integration_type: integration Retrieve camera feed from [Trafikverket](https://www.trafikverket.se/). -The name of the location needs to be precisely as Trafikverket has them. See examples and look for your camera [here](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=personalTraffic&map=0%2F650778%2F7200000%2F&Layers=TrafficCameras%2B=) +The input provided will be used to search for both the name and the location of the camera. See examples and look for your camera [here](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=personalTraffic&map=0%2F650778%2F7200000%2F&Layers=TrafficCameras%2B=). + +When more than one camera has the same name, use the more precise location in your search. Example: If searching for ["Hisingsleden"](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=personalTraffic&map=12%2F312855%2F6401262.65%2F&Layers=TrafficCameras%2B=), then use the more detailed location in your search, for example "Hisingsleden norrut". ## Prerequisites From d2e766985ee710c2b4684dc26fd6c5994a3d11b7 Mon Sep 17 00:00:00 2001 From: TJ Horner Date: Mon, 11 Sep 2023 10:07:17 -0700 Subject: [PATCH 017/109] Add documentation for Apple WeatherKit integration (#28833) --- source/_integrations/weatherkit.markdown | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 source/_integrations/weatherkit.markdown diff --git a/source/_integrations/weatherkit.markdown b/source/_integrations/weatherkit.markdown new file mode 100644 index 00000000000..f280a8f7235 --- /dev/null +++ b/source/_integrations/weatherkit.markdown @@ -0,0 +1,52 @@ +--- +title: Apple WeatherKit +description: Instructions on how to set up Apple WeatherKit with Home Assistant. +ha_category: + - Weather +ha_release: "2023.10" +ha_iot_class: "Cloud Polling" +ha_config_flow: true +ha_codeowners: + - '@tjhorner' +ha_domain: weatherkit +ha_integration_type: integration +ha_platforms: + - weather +--- + +The Apple WeatherKit integration obtains current weather and forecasts (hourly and daily) from Apple Weather. It is the most direct replacement for those coming from the Dark Sky API since Apple bought Dark Sky and implemented its technology into their weather service. + +There is currently support for the following device types within Home Assistant: + +- Weather + +## Requirements + +You will need a [paid Apple Developer Program account](https://developer.apple.com/support/compare-memberships/) to use this integration. + +{% include integrations/config_flow.md %} + +### Credentials + +You will need to obtain the appropriate credentials which you will use to connect to Apple WeatherKit. We need to register a few things in your Apple Developer account: + +1. Go to [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/certificates/list) in your Apple Developer account. +2. In the [Keys](https://developer.apple.com/account/resources/authkeys/list) section, add a new key. + 1. Name it whatever you want. + 2. Select "WeatherKit" from the list. + 3. Download the `.p8` file provided. This is your **Private Key**. + 4. Write down the **Key ID**. You will need it later. +3. In the [Identifiers](https://developer.apple.com/account/resources/identifiers/list) section, add a new identifier. + 1. Select "Services IDs" from the drop-down in the top-right. + 2. Enter whatever you'd like for the description. + 3. For the identifier, Apple recommends using a reverse-DNS style name, like `com.example.homeassistant`. + 4. Save the identifier you used. This is your **Service ID**. + +You can add a new WeatherKit integration entry now that you have all the credentials. Using the details from earlier, it should look something like this: + +- **Key ID**: `ABC123DEFG` +- **Service ID**: `com.example.homeassistant` +- **Apple team ID**: `ABC123DEFG` + - This value can be found in the top-right of the Apple Developer website. +- **Private key**: `-----BEGIN PRIVATE KEY----- [...]` + - Open the `.p8` file you downloaded earlier in a text editor and copy the contents into this field. From 4f28fc863b75da3cf1be9a5e6780ec5d26aa7108 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Tue, 12 Sep 2023 07:25:38 +0200 Subject: [PATCH 018/109] Add sensors to Trafikverket Camera (#28863) * Add sensors to Trafikverket Camera * URL * Update trafikverket_camera.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/trafikverket_camera.markdown | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/source/_integrations/trafikverket_camera.markdown b/source/_integrations/trafikverket_camera.markdown index 1732b97da02..17f9b4a3af8 100644 --- a/source/_integrations/trafikverket_camera.markdown +++ b/source/_integrations/trafikverket_camera.markdown @@ -4,6 +4,7 @@ description: Instructions how to integrate Trafikverket Camera within Home Assis ha_category: - Binary sensor - Camera + - Sensor ha_release: 2023.9 ha_iot_class: Cloud Polling ha_config_flow: true @@ -13,6 +14,7 @@ ha_domain: trafikverket_camera ha_platforms: - binary_sensor - camera + - sensor ha_integration_type: integration --- @@ -32,7 +34,17 @@ Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obt - Active -## Additional attributes +## Sensors + +- Active +- Direction (degree of angle the camera is pointing towards) +- Modified (date and time when the record last changed) +- Photo time +- Photo URL +- Status +- Camera type + +## Additional attributes available on camera - Location (placement of camera) - Description (free text description) From ba809beda1edbd11b8ef49da9b38aa7cc76c9ac2 Mon Sep 17 00:00:00 2001 From: Alex Yao <33379584+alexyao2015@users.noreply.github.com> Date: Tue, 12 Sep 2023 04:57:07 -0400 Subject: [PATCH 019/109] Document Life360 Location Button (#28798) --- source/_integrations/life360.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index 90ac1b46d07..3bb15aa82eb 100644 --- a/source/_integrations/life360.markdown +++ b/source/_integrations/life360.markdown @@ -67,6 +67,10 @@ See [Zone documentation](/integrations/zone/#home-zone) for details about how Ho radius: ZZZ ``` +## Polling Location + +A button is also provided that has the ability to poll for a user's location when pressed. + ## Disclaimer It does not appear that Life360 officially supports its REST API for use with other than its own apps. This integration is based on reverse engineering that has been done by the open source community, and an API token that was somehow discovered by the same community. At any time Life360 could disable that token or otherwise change its REST API such that this integration would no longer work. From 1131ff668818045a5844e67fcb70fac6aebf729a Mon Sep 17 00:00:00 2001 From: jan iversen Date: Tue, 12 Sep 2023 11:31:34 +0200 Subject: [PATCH 020/109] Slave unit removed in modbus service calls. (#28871) Co-authored-by: Erik Montnemery --- source/_integrations/modbus.markdown | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index e9f28a1c898..3712b0df2ac 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -1538,8 +1538,7 @@ Description: | Attribute | Description | | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | hub | Hub name (defaults to 'modbus_hub' when omitted) | -| unit | Slave address (0-255), alternative to slave | -| slave | Slave address (0-255), alternative to unit | +| slave | Slave address (0-255) | | address | Address of the Register (e.g. 138) | | value | (write_register) A single value or an array of 16-bit values. Single value will call modbus function code 0x06. Array will call modbus function code 0x10. Values might need reverse ordering. E.g., to set 0x0004 you might need to set `[4,0]`, this depend on the byte order of your CPU | | state | (write_coil) A single boolean or an array of booleans. Single boolean will call modbus function code 0x05. Array will call modbus function code 0x0F | @@ -1565,7 +1564,7 @@ To write a float32 datatype register use network format like `10.0` == `0x412000 service: modbus.write_register data: address: - unit: + slave: hub: value: [0x4120, 0x0000] ``` From f311c110eff8ae84fed2a2c06b88b1d3f5e63614 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Tue, 12 Sep 2023 19:29:44 +0200 Subject: [PATCH 021/109] Add config flow to WAQI (#28643) --- source/_integrations/waqi.markdown | 48 ++++++------------------------ 1 file changed, 9 insertions(+), 39 deletions(-) diff --git a/source/_integrations/waqi.markdown b/source/_integrations/waqi.markdown index d25fb5c263e..421cfbba469 100644 --- a/source/_integrations/waqi.markdown +++ b/source/_integrations/waqi.markdown @@ -19,45 +19,15 @@ The `waqi` sensor platform will query [World Air Quality Index](https://aqicn.or This sensor requires an API token. Please obtain one at [AQICN API token](https://aqicn.org/data-platform/token/#/). -The locations field is a search for a location. E.g., "brisbane" or "Brisban" would find Brisbane, Australia and all associated stations in the area. - -The format for station fields is exactly from the website, e.g., you would provide the location string "[South Brisbane, Australia](http://aqicn.org/city/australia/queensland/south-brisbane/)" for the linked location. - -## Configuration - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: waqi - token: AQICN_API_TOKEN - locations: - - beijing -``` - -{% configuration %} -token: - description: The token for the AQICN public API. - required: true - type: string -locations: - description: A list of location names to look for air quality data. In case a specific location has multiple registered stations all of them will be added to Home Assistant. - required: true - type: list -stations: - description: A list of station names to look for air quality data. Station should be within locations specified above. - required: false - type: list -{% endconfiguration %} +{% include integrations/config_flow.md %} The value reported is an overall AQ index for the location. The values of the index can be interpreted as following: -AQI | Status | Description -------- | :----------------: | ---------- -0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk -51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution -101 - 150 | **Unhealthy for Sensitive Groups** | Members of sensitive groups may experience health effects. The general public is not likely to be affected -151 - 200 | **Unhealthy** | Everyone may begin to experience health effects; members of sensitive groups may experience more serious health effects -201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected -301+ | **Hazardous** | Health alert: everyone may experience more serious health effects +| AQI | Status | Description | +|-----------|:----------------------------------:|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk | +| 51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution | +| 101 - 150 | **Unhealthy for Sensitive Groups** | Members of sensitive groups may experience health effects. The general public is not likely to be affected | +| 151 - 200 | **Unhealthy** | Everyone may begin to experience health effects; members of sensitive groups may experience more serious health effects | +| 201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected | +| 301+ | **Hazardous** | Health alert: everyone may experience more serious health effects | From de38ea9d2164537e3b4b6c3e93322171079a3a0f Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Tue, 12 Sep 2023 18:48:28 +0100 Subject: [PATCH 022/109] System Bridge - Notifications documentation (#28038) Co-authored-by: Franck Nijhof --- source/_integrations/system_bridge.markdown | 149 ++++++++++++-------- 1 file changed, 92 insertions(+), 57 deletions(-) diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown index 94130ececfd..be4fbbbcc12 100644 --- a/source/_integrations/system_bridge.markdown +++ b/source/_integrations/system_bridge.markdown @@ -15,70 +15,59 @@ ha_platforms: - binary_sensor - sensor ha_zeroconf: true -ha_integration_type: device +ha_integration_type: integration --- - [System Bridge](https://system-bridge.timmo.dev) is an application that runs on your local machine to share system information via its API/WebSocket. You can also send commands to the device such as opening a URL or sending keyboard keypresses. - ## Prerequisites - ### Version - This integration requires System Bridge 3.1.1 and above. Any older version will not work. - ### API Key - You will need your API key. This can be found following the documentation [here](https://system-bridge.timmo.dev/docs/running). - {% include integrations/config_flow.md %} - ## Binary Sensors - This integration provides the following binary sensors: - | Name | Description | | --------------------- | ---------------------------------- | | Battery Is Charging | Whether the battery is charging | | New Version Available | Whether a new version is available | - ## Sensors This integration provides the following sensors: -| Name | Description | -| ---------------------- | --------------------------------------------------- | -| Battery | Battery level of the device | -| Boot Time | Time the device was turned on | -| CPU Speed | The current CPU speed | -| Displays Connected | Number of displays connected | -| Display Resolution X | Display resolution (across) | -| Display Resolution Y | Display resolution (down) | -| Display Refresh Rate | Display refresh rate | -| Filesystem(s) | Space used for each drive letter / filesystem mount | -| GPU Memory Free | GPU memory free in GB | -| GPU Usage % | GPU usage percentage | -| Kernel | Version information of the Kernel | -| Latest Version | System Bridge Latest Version | -| Load | System load percentage | -| Memory Free | Memory (RAM) free in GB | -| Memory Used | Memory (RAM) used in GB | -| Memory Used % | Memory (RAM) % used | -| Operating System | Version information of the Operating System | -| Version | System Bridge Version | +| Name | Description | +| -------------------- | --------------------------------------------------- | +| Battery | Battery level of the device | +| Boot Time | Time the device was turned on | +| CPU Speed | The current CPU speed | +| Displays Connected | Number of displays connected | +| Display Resolution X | Display resolution (across) | +| Display Resolution Y | Display resolution (down) | +| Display Refresh Rate | Display refresh rate | +| Filesystem(s) | Space used for each drive letter / filesystem mount | +| GPU Memory Free | GPU memory free in GB | +| GPU Usage % | GPU usage percentage | +| Kernel | Version information of the Kernel | +| Latest Version | System Bridge Latest Version | +| Load | System load percentage | +| Memory Free | Memory (RAM) free in GB | +| Memory Used | Memory (RAM) used in GB | +| Memory Used % | Memory (RAM) % used | +| Operating System | Version information of the Operating System | +| Version | System Bridge Version | These sensors are also available, but are not enabled by default: -| Name | Description | -| ---------------------- | ---------------------------------------- | -| CPU Temperature | The current temperature of the CPU | -| CPU Voltage | The current voltage of the CPU | -| GPU Core Clock Speed | GPU core clock speed in MHz | -| GPU Memory Clock Speed | GPU memory clock speed in MHz | -| GPU Fan Speed | GPU fan speed percentage | -| GPU Memory Used | GPU memory used in GB | -| GPU Memory Used % | GPU memory used percentage | -| GPU Power Usage | GPU power usage | -| GPU Temperature | The current temperature of the GPU | +| Name | Description | +| ---------------------- | ---------------------------------- | +| CPU Temperature | The current temperature of the CPU | +| CPU Voltage | The current voltage of the CPU | +| GPU Core Clock Speed | GPU core clock speed in MHz | +| GPU Memory Clock Speed | GPU memory clock speed in MHz | +| GPU Fan Speed | GPU fan speed percentage | +| GPU Memory Used | GPU memory used in GB | +| GPU Memory Used % | GPU memory used percentage | +| GPU Power Usage | GPU power usage | +| GPU Temperature | The current temperature of the GPU | ## Media Source @@ -86,51 +75,97 @@ This integration is available as a media source to use with the media browser in ## Services +### Notifications `notify.system_bridge_hostname` + +You can send notifications to the device using the `notify` platform. + +```yaml +service: notify.system_bridge_hostname +data: + data: + image: "https://brands.home-assistant.io/system_bridge/logo@2x.png" + timeout: 30 + actions: + - command: api + data: + endpoint: open + method: POST + body: + url: "http://homeassistant.local:8123/lovelace/cameras" + label: "Open Cameras" + audio: + source: "https://d3qhmae9zx9eb.cloudfront.net/home/amzn_sfx_doorbell_chime_02.mp3" + volume: 80 + title: "Test Title" + message: "This is a message" +``` + +#### Parameters + +| Parameter | Description | +| --------- | ------------------------------------------------------------ | +| target | The target to send the notification to. This can be ignored. | +| title | The title of the notification. | +| message | The message of the notification. | +| data | The data to send to the device. See below for info. | + +##### Actions (`data` parameter) + +This is an array of actions that can be sent to the device. These are buttons that show below the title, message and image. + +| Parameter | Description | +| --------- | -------------------------------------------------------------------------------------------------------------------------- | +| command | The command to send to the device. For example `api` will send a request to the System Bridge API. | +| label | The label of the button. | +| data | The data to send to the device. The available parameters for the `api` command are: `endpoint`, `method` `body`, `params`. | + +Here is an example action that will open a URL in the device's browser: + +```yaml +- command: api + label: "Open Cameras" + data: + endpoint: open + method: POST + body: + url: "http://homeassistant.local:8123/lovelace/cameras" +``` + +##### Audio (`data` parameter) + +This is an object containing the `source` and `volume` (0-100). The source must be a URL to a playable audio file (an MP3 for example). + ### Service `system_bridge.open_path` Open a URL or file on the server using the default application. - {% my developer_call_service service="system_bridge.open_path" title="Show service in your Home Assistant instance." %} - ```yaml service: system_bridge.open_path data: bridge: "deviceid" path: "C:\\image.jpg" ``` - ### Service `system_bridge.open_url` - Open a URL or file on the server using the default application. - {% my developer_call_service service="system_bridge.open_url" title="Show service in your Home Assistant instance." %} - ```yaml service: system_bridge.open_url data: bridge: "deviceid" url: "https://home-assistant.io" ``` - ### Service `system_bridge.send_keypress` - Send a keypress to the server. - {% my developer_call_service service="system_bridge.send_keypress" title="Show service in your Home Assistant instance." %} - ```yaml service: system_bridge.send_keypress data: bridge: "deviceid" key: "a" ``` - ### Service `system_bridge.send_text` - Sends text for the server to type. - {% my developer_call_service service="system_bridge.send_text" title="Show service in your Home Assistant instance." %} - ```yaml service: system_bridge.send_text data: From be20c69ffdc2f8669b686035824e1abfb0c329e1 Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Tue, 12 Sep 2023 10:50:08 -0700 Subject: [PATCH 023/109] Update todoist documentation for configuration flow (#28886) --- source/_integrations/todoist.markdown | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index e735b575c7b..6f3d6675d6e 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -13,22 +13,17 @@ ha_platforms: ha_integration_type: integration --- -This platform allows you to connect to your [Todoist Projects](https://todoist.com) and generate binary sensors. A different sensor will be created for each individual project, or you can specify "custom" projects which match against criteria you set (more on that below). These sensors will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. +This platform allows you to connect to your [Todoist Projects](https://todoist.com) as [calendar](/integrations/calendar/) entities. A calendar entity will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. -### Prerequisites +## Prerequisites You need to determine your Todoist API token. This is fairly simple to do; just go [to the Integrations section on your Todoist settings page](https://todoist.com/app/settings/integrations) and find the section labeled "API token" at the bottom of the page. Copy that token and use it in your configuration file. -### Basic Setup +{% include integrations/config_flow.md %} -To integrate Todoist in Home Assistant, add the following section to your `configuration.yaml` file: +## Custom Projects -```yaml -# Example configuration.yaml entry -calendar: - - platform: todoist - token: YOUR_API_TOKEN -``` +You can manually configure the integration using `configuration.yaml` which can specify "custom" projects which match against criteria you set. {% configuration %} token: @@ -58,8 +53,7 @@ custom_projects: type: list {% endconfiguration %} -### Custom Projects -Creating custom projects is super-easy and quite powerful. All you need to run the basic Todoist projects is your API token, but if you wanted, you could go even deeper. Here's an example: +Here's an example of a more advanced `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -94,7 +88,7 @@ You can mix-and-match these attributes to create all sorts of custom projects. Y Home Assistant does its best to [determine what task in each project is "most" important](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/todoist/calendar.py), and it's that task which has its state reported. You can access the other tasks you have due soon via the `all_tasks` array (see below). -### Sensor attributes +## Calendar Entity attributes - **offset_reached**: Not used. @@ -122,7 +116,7 @@ Home Assistant does its best to [determine what task in each project is "most" i - **due_today**: Whether the reported task is due today. -### Services +## Services Todoist also comes with access to a service, `todoist.new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project. From 21e9088d677806a6ea80bdb49e8e4090f965470e Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Wed, 13 Sep 2023 10:21:59 +0200 Subject: [PATCH 024/109] Add initial property to imap email_content event (#28882) * Add initial property to imap email_content event * Improve documentation on triggering the scope * Update source/_integrations/imap.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> * Update source/_integrations/imap.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/imap.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index 6471c32ccec..ff070eb97dd 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -86,7 +86,7 @@ Email providers may limit the number of reported emails. The number may be less ### Using events -When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation. +When a new message arrives or a message is removed within the defined search command scope, the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation. It is also possible to use to create a template [`binary_sensor` or `sensor`](/integrations/template/#trigger-based-template-binary-sensors-buttons-numbers-selects-and-sensors) based the [event data](/docs/automation/templating/#event). The table below shows what attributes come with `trigger.event.data`. The data is a dictionary that has the keys that are shown below. @@ -120,6 +120,8 @@ headers: description: The `headers` of the message in the for of a dictionary. The values are iterable as headers can occur more than once. custom: description: Holds the result of the custom event data [template](/docs/configuration/templating). All attributes are available as a variable in the template. +initial: + description: Returns `True` if this is the initial event for the last message received. When a message within the search scope is removed and the last message received has not been changed, then an `imap_content` event is generated and the `initial` property is set to `False`. Note that if no `Message-ID` header was set on the triggering email, the `initial` property will always be set to `True`. {% endconfiguration_basic %} @@ -153,6 +155,7 @@ template: Sender: "{{ trigger.event.data['sender'] }}" Date: "{{ trigger.event.data['date'] }}" Subject: "{{ trigger.event.data['subject'] }}" + Initial: "{{ trigger.event.data['initial'] }}" To: "{{ trigger.event.data['headers'].get('Delivered-To', ['n/a'])[0] }}" Return-Path: "{{ trigger.event.data['headers'].get('Return-Path',['n/a'])[0] }}" Received-first: "{{ trigger.event.data['headers'].get('Received',['n/a'])[0] }}" @@ -175,6 +178,7 @@ template: id: "custom_event" event_data: sender: "no-reply@smartconnect.apc.com" + initial: true sensor: - name: house_electricity state: >- From a1ca73a8fc7e3840f920777272304a4a13443aa0 Mon Sep 17 00:00:00 2001 From: Jan Rieger Date: Wed, 13 Sep 2023 18:10:16 +0200 Subject: [PATCH 025/109] Add `elevation` in service `homeassistant.set_location` (#28900) --- source/_integrations/homeassistant.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 74175fa4c64..503b5790943 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -72,6 +72,7 @@ Update the location of the Home Assistant default zone (usually "Home"). |---------------------------|----------|-------------------------------------------------------| | `latitude` | no | Latitude of your location. | | `longitude` | no | Longitude of your location. | +| `elevation` | yes | Elevation of your location. | #### Example @@ -81,6 +82,7 @@ action: data: latitude: 32.87336 longitude: 117.22743 + elevation: 120 ``` ### Service `homeassistant.toggle` From f281432d41347890d0cb9f668e651ba57addb799 Mon Sep 17 00:00:00 2001 From: Ravaka Razafimanantsoa <3774520+SeraphicRav@users.noreply.github.com> Date: Sat, 16 Sep 2023 23:02:10 +0900 Subject: [PATCH 026/109] Add switchbot cloud integration (#28782) * Adding switchbot_cloud * Review changes * Update source/_integrations/switchbot_cloud.markdown Co-authored-by: Joost Lekkerkerker * Adding more categories * Update source/_integrations/switchbot_cloud.markdown Co-authored-by: J. Nick Koston * Update source/_integrations/switchbot_cloud.markdown Co-authored-by: J. Nick Koston --------- Co-authored-by: Joost Lekkerkerker Co-authored-by: J. Nick Koston --- source/_integrations/switchbot_cloud.markdown | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 source/_integrations/switchbot_cloud.markdown diff --git a/source/_integrations/switchbot_cloud.markdown b/source/_integrations/switchbot_cloud.markdown new file mode 100644 index 00000000000..661224d3fea --- /dev/null +++ b/source/_integrations/switchbot_cloud.markdown @@ -0,0 +1,38 @@ +--- +title: SwitchBot Cloud +description: Instructions on how to set up SwitchBot Devices. +ha_category: + - Hub + - Plug + - Remote + - Switch +ha_release: '2023.10' +ha_iot_class: Cloud Polling +ha_codeowners: + - '@SeraphicRav' +ha_domain: switchbot_cloud +ha_platforms: + - switch +ha_config_flow: true +ha_integration_type: integration +--- + +The SwitchBot Cloud integration allows you to control SwitchBot [devices](https://www.switch-bot.com/) connected through the SwitchBot hub. + +## Prerequisites + +In order to use this integration, you will need at least a SwitchBot Hub and a SwitchBot account to get a token and secret key from the SwitchBot mobile app in Profiles>Preferences>Developer Options. + +Please note, device names configured in the SwitchBot app are transferred into Home Assistant. + +{% include integrations/config_flow.md %} + +## Supported devices + +- Plug (Wi-Fi only, only available in Japan) +- Plug Mini, both the original and HomeKit-enabled +- Remotes exposed through the different hubs excepted "Others" (State is inferred from previous commands in Home Assistant and might not reflect reality if you use other ways to control the device) + +
+Only the switch platform is currently supported. +
From 4bbe0a21e8ffa33bc344ebdf243588caadbb998c Mon Sep 17 00:00:00 2001 From: jan iversen Date: Sat, 16 Sep 2023 21:18:39 +0200 Subject: [PATCH 027/109] remove retry_on_empty. (#28899) --- source/_integrations/modbus.markdown | 9 --------- 1 file changed, 9 deletions(-) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 3736653b2a6..dfc450181f3 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -59,11 +59,6 @@ retries: required: false default: 3 type: integer -retry_on_empty: - description: "Retry request, when receiving an empty message." - required: false - default: false - type: boolean timeout: description: "Timeout while waiting for a response in seconds." required: false @@ -126,7 +121,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -175,7 +169,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -220,7 +213,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -317,7 +309,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` From f890d2db1df2539b540d4b29bc86bab5addaa6cc Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Mon, 18 Sep 2023 21:32:14 +0200 Subject: [PATCH 028/109] Add sensor platform to Vodafone Station (#28916) * add sensor platform to Vodafone Station * cleanup --- source/_integrations/vodafone_station.markdown | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/source/_integrations/vodafone_station.markdown b/source/_integrations/vodafone_station.markdown index 10d8d63bca0..984a51a1f4a 100644 --- a/source/_integrations/vodafone_station.markdown +++ b/source/_integrations/vodafone_station.markdown @@ -12,6 +12,8 @@ ha_codeowners: ha_iot_class: Local Polling ha_platforms: - device_tracker + - sensor +ha_ssdp: false ha_integration_type: integration --- @@ -20,15 +22,9 @@ The Vodafone Station integration allows you to control your [Vodafone Station](h There is support for the following platform types within Home Assistant: - **Device tracker** - presence detection by looking at connected devices. +- **Sensor** - external IP address, uptime, firmware, resources and network monitors. {% include integrations/config_flow.md %} -## Configuration - -The configuration in the UI asks for a a few information: host, username, password and SSL. -Depending on the model of the router, the login URL can be based on http:// or https://. -The default username is `vodafone`. - - ## Integration options It is possible to change some behaviors through the integration options. @@ -42,10 +38,9 @@ To change the settings, go to {% my integrations title="**Settings** > **Devices **Note**: If you don't want to automatically track newly detected devices, disable the integration system option `Enable new added entities`. - ### Tested models -This integartion was tested against the following models: +This integration was tested against the following models: - - Vodafone Power Station - - Vodafone WiFi 6 Station +- Vodafone Power Station +- Vodafone WiFi 6 Station From 2ef936c632fe7e6a8222b9f08215147ceac9a1fb Mon Sep 17 00:00:00 2001 From: jan iversen Date: Tue, 19 Sep 2023 09:13:43 +0200 Subject: [PATCH 029/109] Add device_address to configuration. (#28911) --- source/_integrations/modbus.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index dfc450181f3..ad339f5e1e1 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -383,6 +383,11 @@ scan_interval: type: integer default: 15 slave: + description: "Identical to `device_address`" + required: false + type: integer + default: 0 +device_address: description: "Id of the device. Used to address multiple devices on a rs485 bus or devices connected to a modbus repeater." required: false type: integer From 7b7ed7a7d75f4ba2d585c21533c3256b5517f219 Mon Sep 17 00:00:00 2001 From: jan iversen Date: Tue, 19 Sep 2023 09:16:21 +0200 Subject: [PATCH 030/109] added virtual_count. (#28910) --- source/_integrations/modbus.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index ad339f5e1e1..852d0d82075 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -469,6 +469,10 @@ binary_sensors: default: coil type: string slave_count: + description: "Identical to `virtual_count`." + required: false + type: integer + virtual_count: description: "Generate count+1 binary sensors (master + slaves). Addresses are automatically incremented. The parameter simplifies configuration and provides a much better performance by not using count+1 requests but a single request." @@ -1266,6 +1270,10 @@ sensors: type: float default: 1 slave_count: + description: "Identical to `virtual_count`." + required: false + type: integer + virtual_count: description: "Generates x+1 sensors (master + slaves), allowing read of multiple registers with a single read messsage." required: false type: integer @@ -1281,6 +1289,10 @@ sensors: type: string default: ">f" slave_count: + description: "Identical to `virtual_count`." + required: false + type: integer + virtual_count: description: Generates x-1 slave sensors, allowing read of multiple registers with a single read message. required: false type: integer @@ -1514,6 +1526,7 @@ Some parameters exclude other parameters, the following tables show what can be | count | Yes | Yes | No | No | No | | structure | Yes | No | No | No | No | | slave_count | No | No | Yes | Yes | Yes | +| virtual_count | No | No | Yes | Yes | Yes | | swap: none | Yes | Yes | Yes | Yes | Yes | | swap: byte | No | No | Yes | Yes | Yes | | swap: word | No | No | No | Yes | Yes | From 3e3f1cfa299bc54475e8b0fbcf715f83275ab520 Mon Sep 17 00:00:00 2001 From: Ian Date: Tue, 19 Sep 2023 08:11:11 -0700 Subject: [PATCH 031/109] Update nextbus docs for config flow (#27198) --- source/_integrations/nextbus.markdown | 40 ++------------------------- 1 file changed, 2 insertions(+), 38 deletions(-) diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 641bbd01467..105671d6b92 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -6,6 +6,7 @@ ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.93 +ha_config_flow: true ha_codeowners: - '@vividboarder' ha_domain: nextbus @@ -16,41 +17,4 @@ ha_integration_type: integration The `nextbus` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from [NextBus](https://www.nextbus.com), which provides real time transit data for a number of transit authorities. -It is possible to get the tag information from the NextBus website. - - 1. Visit https://www.nextbus.com/ - 2. Use the drop downs to select the transit system, route, direction, and stop - 3. Extract the tags from the URL. It is constructed with the following pattern: - - https://www.nextbus.com/#!//// - -If tags are incorrect, valid ones will be displayed in the logs as a convenience. Note that the `` tag is not used in this integration. - -```yaml -# Example configuration.yaml entry -sensor: - - platform: nextbus - agency: AGENCY_TAG - route: ROUTE_TAG - stop: STOP_TAG -``` - -{% configuration %} -agency: - description: The agency tag from NextBus. - required: true - type: string -route: - description: The route tag from NextBus. - required: true - type: string -stop: - description: The stop tag from NextBus. - required: true - type: string -name: - description: Name to use in the frontend. - required: false - default: - - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} \ No newline at end of file From 99ab1dda47bd9cfcaa6312495c650c8a0f4b13a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ab=C3=ADlio=20Costa?= Date: Wed, 20 Sep 2023 01:46:38 +0100 Subject: [PATCH 032/109] Add integration for IKEA Idasen Desk (#28718) Co-authored-by: J. Nick Koston --- source/_integrations/idasen_desk.markdown | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 source/_integrations/idasen_desk.markdown diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown new file mode 100644 index 00000000000..88251d9e3a2 --- /dev/null +++ b/source/_integrations/idasen_desk.markdown @@ -0,0 +1,24 @@ +--- +title: IKEA IDÅSEN Desk +description: Control and monitor your IKEA Idåsen standing desk. +ha_iot_class: Local Push +ha_config_flow: true +ha_release: '2023.10' +ha_category: + - Cover +ha_domain: idasen_desk +ha_bluetooth: true +ha_platforms: + - cover +ha_integration_type: integration +--- + +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. + +{% include integrations/config_flow.md %} + +Home Assistant will display a list of addresses of the available desks, and you just need to select the one you want to add. Repeat the process to add more than one desk. + +
+If you see an "No unconfigured devices found" message, make sure that the desk is in Bluetooth pairing mode. For that, press the small button with the Bluetooth logo on the controller until it starts blinking (about 3 seconds). +
From cf41cc0ecaf9a01aa105cf5f627bfa0f580c98e9 Mon Sep 17 00:00:00 2001 From: anonion Date: Thu, 21 Sep 2023 00:58:20 -0700 Subject: [PATCH 033/109] Add documentation for Enmax (virtual integration) (#28927) --- source/_integrations/enmax.markdown | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 source/_integrations/enmax.markdown diff --git a/source/_integrations/enmax.markdown b/source/_integrations/enmax.markdown new file mode 100644 index 00000000000..ddf7e10784a --- /dev/null +++ b/source/_integrations/enmax.markdown @@ -0,0 +1,20 @@ +--- +title: Enmax Energy +description: Get energy usage from Enmax Energy using the Opower integration +ha_category: + - Energy + - Sensor +ha_release: '2023.10' +ha_domain: enmax +ha_integration_type: virtual +ha_supporting_domain: opower +ha_supporting_integration: Opower +ha_codeowners: + - '@tronikos' +ha_config_flow: true +ha_platforms: + - sensor +ha_iot_class: Cloud Polling +--- + +{% include integrations/supported_brand.md %} From 7f2c0e03ebcf30c51401152e675fcf52be31a3fa Mon Sep 17 00:00:00 2001 From: Bruno Enten Date: Thu, 21 Sep 2023 11:21:42 +0200 Subject: [PATCH 034/109] add write_registers to climate target temperature (#28376) Co-authored-by: Franck Nijhof --- source/_integrations/modbus.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 852d0d82075..2ff756a62b0 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -712,6 +712,11 @@ climates: description: "Register address for target temperature (Setpoint)." required: true type: integer + target_temp_write_registers: + description: "If `true` use `write_registers` for target temperature." + required: false + type: boolean + default: false temp_step: description: "Step size target temperature." required: false @@ -758,6 +763,7 @@ modbus: max_temp: 30 structure: ">f" target_temp_register: 2782 + target_temp_write_registers: true temp_step: 1 temperature_unit: C ``` From b52dde1d1e3d87bd14f527581dd364bfba8a3c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Janu=C3=A1rio?= Date: Thu, 21 Sep 2023 14:19:30 +0100 Subject: [PATCH 035/109] Add documentation to ecoforest integration (#28953) * Add documentation for ecoforest integration * Update sensor info Co-authored-by: Joost Lekkerkerker * rephrase Co-authored-by: Joost Lekkerkerker * update ha release Co-authored-by: Joost Lekkerkerker * update documentation * remove the list Co-authored-by: Joost Lekkerkerker * fix typo Co-authored-by: Joost Lekkerkerker * Test --------- Co-authored-by: Joost Lekkerkerker --- source/_integrations/ecoforest.markdown | 47 ++++++++++++++++++ .../integrations/ecoforest/credentials.png | Bin 0 -> 31562 bytes 2 files changed, 47 insertions(+) create mode 100644 source/_integrations/ecoforest.markdown create mode 100644 source/images/integrations/ecoforest/credentials.png diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown new file mode 100644 index 00000000000..de4a796c6d8 --- /dev/null +++ b/source/_integrations/ecoforest.markdown @@ -0,0 +1,47 @@ +--- +title: Ecoforest +description: Instructions on how to integrate Ecoforest fireplaces with Home Assistant. +ha_category: + - Climate +ha_release: 2023.10 +ha_iot_class: Local Polling +ha_config_flow: true +ha_codeowners: + - '@pjanuario' +ha_domain: ecoforest +ha_platforms: + - sensor +ha_integration_type: integration +--- + +The Ecoforest integration allows monitoring and control of local [Ecoforest](https://ecoforest.com) fireplaces in Home Assistant. These fireplaces are manufactured in Spain. + +There is currently support for the following device platforms within Home Assistant: + +- [Sensor](#sensor) + +{% include integrations/config_flow.md %} + +
+Devices must first be connected to Wi-Fi or LAN using the app or website provided by the device manufacturer. It is not possible to connect devices to Wi-Fi using this integration. +
+ +### Credentials + +To configure the Ecoforest integration you will need to enter your Ecoforest credentials which are the same ones you would use with the manufacturer app. The image below shows how to obtain the credentials: + +- Username: use the serial number of the device as identified by 1. +- Password: use the first 8 characters of the wifi password as identified by 4. + +![Ecoforest Credentials](/images/integrations/ecoforest/credentials.png) + + +## Supported models + +Any Ecoforest device working with [Ecoforest Home](https://ecoforesthome.com/) should be supported, this integration is confirmed to support: + +- Ecoforest Cordoba Glass (using firmware version `30Abr19_v2z`) + +## Sensor + +The Ecoforest integration exposes a sensor for the current ambient temperature diff --git a/source/images/integrations/ecoforest/credentials.png b/source/images/integrations/ecoforest/credentials.png new file mode 100644 index 0000000000000000000000000000000000000000..43429c038c047ae1d6b6a58008f742b335485133 GIT binary patch literal 31562 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 literal 0 HcmV?d00001 From d410e8157e960093698a8c81f0122c355f9eca07 Mon Sep 17 00:00:00 2001 From: jimmyd-be <34766203+jimmyd-be@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:23:49 +0200 Subject: [PATCH 036/109] Add button category and platfrom to Renson (#28762) Co-authored-by: G Johansson --- source/_integrations/renson.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index a5d3fcd21cc..907765e761d 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -3,6 +3,7 @@ title: Renson description: Instructions on how to integrate Renson Endura Delta sensors into Home Assistant. ha_category: - Binary Sensor + - Button - Sensor - Number ha_release: 2023.7 @@ -13,6 +14,7 @@ ha_codeowners: ha_domain: renson ha_platforms: - binary_sensor + - button - sensor - number ha_integration_type: integration @@ -20,5 +22,4 @@ ha_integration_type: integration The Renson integration pulls in data from the Renson Endura delta device. Most of the sensors that can be monitored from inside the Android/iOS application can be monitored with this integration. - {% include integrations/config_flow.md %} From 28b66015ef36b88fcb79e579e5e359f6bd69d934 Mon Sep 17 00:00:00 2001 From: Luke Lashley Date: Thu, 21 Sep 2023 12:24:36 -0400 Subject: [PATCH 037/109] Add last clean sensors to Roborock (#28966) --- source/_integrations/roborock.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index b6ea49f14c5..f62de0d4fee 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -80,6 +80,10 @@ Filter time left - How much time is left before Roborock recommends you replace Status - The current status of your vacuum. This typically describes the action that is currently being run. For example, 'spot_cleaning' or 'docking'. +Last clean begin - the last time that your vacuum started cleaning. + +Last clean end - The last time that your vacuum finished cleaning. + Total cleaning time - The lifetime cleaning duration of your vacuum. Total cleaning area - The lifetime cleaning area of your vacuum. From 9dff28371aa5be5ec7daf1f00299cb09e09b1317 Mon Sep 17 00:00:00 2001 From: Luke Lashley Date: Thu, 21 Sep 2023 12:25:04 -0400 Subject: [PATCH 038/109] Add water shortage binary sensor to Roborock (#28967) --- source/_integrations/roborock.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index f62de0d4fee..45c66b7d283 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -59,6 +59,8 @@ Mop drying status - Only available on docks with drying capabilites - States if Water box attached - States if the water box is currently attached. +Water shortage - States if the water box is low on water - 'Ok' if it has not detected a water shortage. + ### Sensor From d8cf4bb7b75d34e6f502c903ffc44f4c93c099b1 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 21 Sep 2023 16:29:21 +0000 Subject: [PATCH 039/109] Add information about an event platform for Shelly Gen2 devices (#28800) Co-authored-by: Franck Nijhof --- source/_integrations/shelly.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 75076820b6d..0fb4026ce4c 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -28,6 +28,7 @@ ha_platforms: - climate - cover - diagnostics + - event - light - number - sensor @@ -121,6 +122,10 @@ Depending on how a device's button type is configured, the integration will crea For generation 2 hardware it's possible to select if a device's input is connected to a button or a switch. Binary sensors are created only if the input mode is set to `switch`. When the input is of type `button` you need to use events for your automations. +## Event entities (generation 2) + +If the **Input Mode** of the switch connected to the device is set to `Button`, the integration creates an event entity for this switch. You can use this entity in your automations. + ## Events If the **BUTTON TYPE** of the switch connected to the device is set to `momentary` or `detached switch`, integration fires events under the type `shelly.click` when the switch is used. You can use these events in your automations. From d85a1c57c0d4e816553da6eb33ee2aa87dc8a393 Mon Sep 17 00:00:00 2001 From: Zuhaib Siddique Date: Thu, 21 Sep 2023 09:31:34 -0700 Subject: [PATCH 040/109] Update Islamic Prayer time integration with new configurations (#28538) --- .../islamic_prayer_times.markdown | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown index 7a3bcd2cb61..223185dae55 100644 --- a/source/_integrations/islamic_prayer_times.markdown +++ b/source/_integrations/islamic_prayer_times.markdown @@ -48,3 +48,28 @@ sensors: - maghrib: Show the maghrib prayer time for today. - isha: Show the isha prayer time for today. - midnight: Show the midnight for today which is the end of isha prayer. This is a calculated field and is not the same as 12AM. + +## Configuration + +### Prayer calcuation method + +Default: Islamic Society of North America + +A prayer times calculation method. Methods identify various schools of thought about how to compute the timings. If not specified, it defaults to Islamic Society of North America. + +### Latatude Adjustment Method + +Default: Middle of the night + +Method for adjusting times higher latitudes - for instance, if you are checking timings in the UK or Sweden. + +### Midnight mode + +Default: Standard (mid sunset to sunrise) + +### School + +Default: Shafi + +Method for adjusting Asr time calcuation, if not specified, it defaults to Shafi. + From ce49cc7eca3e63d779766759afcae628b30b40bb Mon Sep 17 00:00:00 2001 From: Fletcher Date: Fri, 22 Sep 2023 00:31:57 +0800 Subject: [PATCH 041/109] Document slack thread/reply support (#27490) Co-authored-by: Franck Nijhof --- source/_integrations/slack.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown index b3375534094..d9f0a4c719d 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -9,6 +9,7 @@ ha_domain: slack ha_iot_class: Cloud Push ha_codeowners: - '@tkdrob' + - '@fletcherau' ha_platforms: - notify - sensor @@ -142,6 +143,7 @@ The following attributes can be placed inside the `data` key of the service call | `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_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. Note that using `file` will ignore all usage of `blocks` and `blocks_template` (as Slack does not support those frameworks in messages that accompany uploaded files). @@ -243,3 +245,12 @@ title: "Reminder" data: blocks: [] ``` + +Send a message as reply to an existing message. `thread_ts` can be retrieved via a script utilising [Bolt](https://slack.dev/bolt-python/tutorial/getting-started), any other Slack library, or the Slack API directly. + +```yaml +message: "Here's some supplementary information that doesn't need to be present in the channel directly." +target: "#general" +data: + thread_ts: "1684736481.064129" +``` From 6abc8aab4acada9d040187836d0b32ad77816feb Mon Sep 17 00:00:00 2001 From: jimmyd-be <34766203+jimmyd-be@users.noreply.github.com> Date: Thu, 21 Sep 2023 18:32:17 +0200 Subject: [PATCH 042/109] Renson fan (#27801) Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/renson.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index 907765e761d..28682559396 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -6,6 +6,7 @@ ha_category: - Button - Sensor - Number + - Fan ha_release: 2023.7 ha_iot_class: Local Polling ha_config_flow: true @@ -17,6 +18,7 @@ ha_platforms: - button - sensor - number + - fan ha_integration_type: integration --- From a02e4087eec6961b11ca1bea063bc4507fbe0255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Janu=C3=A1rio?= Date: Thu, 21 Sep 2023 19:08:37 +0100 Subject: [PATCH 043/109] added changes suggested by frenk in previous merged documentation (#28975) --- source/_integrations/ecoforest.markdown | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown index de4a796c6d8..7f33be60acd 100644 --- a/source/_integrations/ecoforest.markdown +++ b/source/_integrations/ecoforest.markdown @@ -14,19 +14,13 @@ ha_platforms: ha_integration_type: integration --- -The Ecoforest integration allows monitoring and control of local [Ecoforest](https://ecoforest.com) fireplaces in Home Assistant. These fireplaces are manufactured in Spain. +The Ecoforest integration allows monitoring and control of local [Ecoforest](https://ecoforest.com) fireplaces in Home Assistant. There is currently support for the following device platforms within Home Assistant: - [Sensor](#sensor) -{% include integrations/config_flow.md %} - -
-Devices must first be connected to Wi-Fi or LAN using the app or website provided by the device manufacturer. It is not possible to connect devices to Wi-Fi using this integration. -
- -### Credentials +## Prerequisites To configure the Ecoforest integration you will need to enter your Ecoforest credentials which are the same ones you would use with the manufacturer app. The image below shows how to obtain the credentials: @@ -35,6 +29,7 @@ To configure the Ecoforest integration you will need to enter your Ecoforest cre ![Ecoforest Credentials](/images/integrations/ecoforest/credentials.png) +{% include integrations/config_flow.md %} ## Supported models From bd0d62a99d342bbe43747ba8f6a3200f19cd6fd5 Mon Sep 17 00:00:00 2001 From: tronikos Date: Thu, 21 Sep 2023 14:19:20 -0700 Subject: [PATCH 044/109] Update opower.markdown (#28926) --- source/_integrations/opower.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/opower.markdown b/source/_integrations/opower.markdown index 580c5044de3..c5c7d17f4f7 100644 --- a/source/_integrations/opower.markdown +++ b/source/_integrations/opower.markdown @@ -21,6 +21,7 @@ More than 175 utilities use Opower. Currently only the following utilities are s - Consolidated Edison (ConEd) and subsidiaries - Orange & Rockland Utilities (ORU) +- Enmax Energy - Evergy - Exelon subsidiaries - Atlantic City Electric @@ -30,6 +31,7 @@ More than 175 utilities use Opower. Currently only the following utilities are s - PECO Energy Company (PECO) - Potomac Electric Power Company (Pepco) - Pacific Gas & Electric (PG&E) +- Portland General Electric (PGE) - Puget Sound Energy (PSE) When you add the Opower integration to Home Assistant, you will need to provide your utility account's authentication details to enable retrieving your energy data. From b977210046b30fb44dd0664de6da19c770ce97da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Janu=C3=A1rio?= Date: Fri, 22 Sep 2023 07:47:02 +0100 Subject: [PATCH 045/109] Added number platform documentation for ecoforest integration (#28976) --- source/_integrations/ecoforest.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown index 7f33be60acd..4f3069e6e74 100644 --- a/source/_integrations/ecoforest.markdown +++ b/source/_integrations/ecoforest.markdown @@ -18,6 +18,7 @@ The Ecoforest integration allows monitoring and control of local [Ecoforest](htt There is currently support for the following device platforms within Home Assistant: +- [Number](#number) - [Sensor](#sensor) ## Prerequisites @@ -37,6 +38,10 @@ Any Ecoforest device working with [Ecoforest Home](https://ecoforesthome.com/) s - Ecoforest Cordoba Glass (using firmware version `30Abr19_v2z`) +## Number + +The Ecoforest integration exposes a number entity for the device power level. + ## Sensor The Ecoforest integration exposes a sensor for the current ambient temperature From 631640daf5c02a64b5707a2b64e4668c61fbdafa Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Sat, 23 Sep 2023 14:22:02 +0000 Subject: [PATCH 046/109] Add information about event platform for gen1 devices (#28979) --- source/_integrations/shelly.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 0fb4026ce4c..68f2c458206 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -122,6 +122,10 @@ Depending on how a device's button type is configured, the integration will crea For generation 2 hardware it's possible to select if a device's input is connected to a button or a switch. Binary sensors are created only if the input mode is set to `switch`. When the input is of type `button` you need to use events for your automations. +## Event entities (generation 1) + +If the **BUTTON TYPE** of the switch connected to the device is set to `momentary` or `detached switch`, the integration creates an event entity for this switch. You can use this entity in your automations. + ## Event entities (generation 2) If the **Input Mode** of the switch connected to the device is set to `Button`, the integration creates an event entity for this switch. You can use this entity in your automations. From f6e42741736c04346836094e23ceebfc8b79e01d Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Sat, 23 Sep 2023 19:31:29 +0200 Subject: [PATCH 047/109] Update ecoforest.markdown (#28997) --- source/_integrations/ecoforest.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown index 4f3069e6e74..2ee3810928f 100644 --- a/source/_integrations/ecoforest.markdown +++ b/source/_integrations/ecoforest.markdown @@ -3,7 +3,7 @@ title: Ecoforest description: Instructions on how to integrate Ecoforest fireplaces with Home Assistant. ha_category: - Climate -ha_release: 2023.10 +ha_release: '2023.10' ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: From d3ef019217218841e5c034ea10a7aa273c3b3bb5 Mon Sep 17 00:00:00 2001 From: Scott Colby Date: Sun, 24 Sep 2023 10:23:47 -0400 Subject: [PATCH 048/109] Document workday integration with no country specified. (#28641) * Update workday binary_sensor documentation for usage with no specified country. The first documentation example was incorrect and its described functionality was impossible until the below PR was implemented. See: - https://github.com/home-assistant/core/issues/85996 - https://github.com/home-assistant/core/pull/87222 * Modify language for the `None` country option to be less colloquial. --------- Co-authored-by: G Johansson --- source/_integrations/workday.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 84113a6be04..7a7785048b5 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -19,7 +19,7 @@ ha_integration_type: integration The `workday` binary sensor indicates whether the current day is a workday or not. -It allows specifying which days of the week will count as workdays and also uses the Python module [holidays](https://pypi.org/project/holidays/) to incorporate information about region-specific public holidays. +It allows specifying which days of the week will count as workdays and also uses the Python module [holidays](https://pypi.org/project/holidays/) to incorporate information about region-specific public holidays. This can be used to make daily automations that act differently on workdays than non-workdays. For example, you could make your bedroom lights turn on (gently) at 7 in the morning if it is a workday but wait until 11 if it is a non-working day. @@ -30,7 +30,7 @@ Check the [country list](https://github.com/dr-prodigy/python-holidays#available {% include integrations/config_flow.md %} Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. -The keyword `holiday` is used for public holidays identified by the holidays module. +The keyword `holiday` is used for public holidays identified by the holidays module and holidays added by the `add_holidays` configuration option.
@@ -40,7 +40,7 @@ Take note of the `holiday` keyword. Your first instinct might be to add it to th ## Specific field information -Country code must be given according to [holidays](https://pypi.org/project/holidays/) notation. +Country code must be given according to [holidays](https://pypi.org/project/holidays/) notation. The country can also be set to `None` to start with an empty set of holidays. This is useful in conjunction with the add holidays field. Subdivision code must be given according to [holidays](https://pypi.org/project/holidays/) notation. From 07a03b7bc7cee17c290c8a8ce86f40503a3494e6 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Mon, 25 Sep 2023 08:29:58 -0700 Subject: [PATCH 049/109] New options for map card markers (#29017) --- source/_dashboards/map.markdown | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/source/_dashboards/map.markdown b/source/_dashboards/map.markdown index 1608dd20535..890e9535a0f 100644 --- a/source/_dashboards/map.markdown +++ b/source/_dashboards/map.markdown @@ -27,7 +27,7 @@ type: type: string entities: required: true - description: List of entity IDs. Either this or the `geo_location_sources` configuration option is required. + description: List of entity IDs or `entity` objects (see below). Either this or the `geo_location_sources` configuration option is required. type: list geo_location_sources: required: true @@ -75,6 +75,31 @@ hours_to_show:
+## Options For Entities + +If you define entities as objects instead of strings (by adding `entity:` before entity ID), you can add more customization and configuration. + +{% configuration %} +entity: + required: true + description: Entity ID. + type: string +name: + required: false + description: Replace the default label for the marker. + type: string +label_mode: + required: false + default: name + description: When set to `state`, renders the entity's state as the label for the map marker instead of the entity's name. + type: string +focus: + required: false + default: true + description: When set to `false`, this entity will not be considered for determining the default zoom or fit of the map. + type: boolean +{% endconfiguration %} + ## Examples ```yaml @@ -99,5 +124,8 @@ entities: type: map entities: - device_tracker.demo_paulus + - entity: sensor.gas_station_gas_price + label_mode: state + focus: false hours_to_show: 48 ``` From d4e8e8cf23418866c2cb97c430ac0ebd1185a75f Mon Sep 17 00:00:00 2001 From: Nathan Tilley Date: Mon, 25 Sep 2023 23:54:04 -0700 Subject: [PATCH 050/109] Update FAA Delays Documentation (#28978) * Update FAA Delays Documentation * Update for changes to parent PR * Update due to changes in parent PR --- source/_integrations/faa_delays.markdown | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/source/_integrations/faa_delays.markdown b/source/_integrations/faa_delays.markdown index 25e9e16250e..9f6ad2804ca 100644 --- a/source/_integrations/faa_delays.markdown +++ b/source/_integrations/faa_delays.markdown @@ -30,12 +30,7 @@ Data measured includes: The airport entered must be a valid IATA airport code for an airport in the US. You can find this by looking up the -FAA Identifier at [Airnav](https://airnav.com/airports/). Officially the FAA -only supports the airports listed below, but all airports will return data. - -Supported airports: BOS, LGA, TEB, EWR, JFK, PHL, PIT, IAD, BWI, DCA, RDU, -CLT, ATL, MCO, TPA, MCO, FLL, MIA, DTW, CLE, MDW, ORD, IND, CVG, BNA, MEM, -STL, MCI, MSP, DFW, IAH, DEN, SLC, PHX, LAS, SAN, LAX, SJC, SFO, PDX, SEA +FAA Identifier at [Airnav](https://airnav.com/airports/). ## Additional Delay Information @@ -57,4 +52,3 @@ listed below: - Closure - Start of closure (begin) - End of closure (end) - - Closure reason From 3616500cc718f755d6617e237c925ecadd391c5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Janu=C3=A1rio?= Date: Tue, 26 Sep 2023 07:57:21 +0100 Subject: [PATCH 051/109] add ecoforest switch platform documentation (#28986) --- source/_integrations/ecoforest.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown index 2ee3810928f..e562a5d54e0 100644 --- a/source/_integrations/ecoforest.markdown +++ b/source/_integrations/ecoforest.markdown @@ -19,6 +19,7 @@ The Ecoforest integration allows monitoring and control of local [Ecoforest](htt There is currently support for the following device platforms within Home Assistant: - [Number](#number) +- [Switch](#switch) - [Sensor](#sensor) ## Prerequisites @@ -42,6 +43,10 @@ Any Ecoforest device working with [Ecoforest Home](https://ecoforesthome.com/) s The Ecoforest integration exposes a number entity for the device power level. +## Switch + +The Ecoforest integration exposes a switch entity to turn status of the device to on and off. + ## Sensor The Ecoforest integration exposes a sensor for the current ambient temperature From 95d284514324f12b4ae03e95576cc058314c51d0 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 26 Sep 2023 02:06:16 -0500 Subject: [PATCH 052/109] Add support for receivers to HomeKit (#28988) --- source/_integrations/homekit.markdown | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 48bca8beded..70c2177b1ff 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -324,7 +324,7 @@ It is recommended to only edit a HomeKit instance in the UI that was created in ### Accessory mode -When exposing a Camera, Activity based remote (a `remote` that supports activities), Lock, or Television media player (a `media_player` with device class `tv`) to HomeKit, `mode` must be set to `accessory`, and the relevant `include` filter should be setup to only include a single entity. +When exposing a Camera, Activity based remote (a `remote` that supports activities), Lock, or Television media player (a `media_player` with device class `tv` or `receiver`) to HomeKit, `mode` must be set to `accessory`, and the relevant `include` filter should be setup to only include a single entity. To quickly add all accessory mode entities in the UI: @@ -412,6 +412,7 @@ The following integrations are currently supported: | lock | DoorLock | Support for `lock / unlock`. | | media_player | MediaPlayer | Represented as a series of switches which control `on / off`, `play / pause`, `play / stop`, or `mute` depending on `supported_features` of entity and the `mode` list specified in `entity_config`. | | media_player | TelevisionMediaPlayer | All media players that have `tv` as their `device_class`. Represented as Television and Remote accessories in HomeKit to control `on / off`, `play / pause`, `select source`, or `volume increase / decrease`, depending on `supported_features` of entity. Requires iOS 12.2/macOS 10.14.4 or later. | +| media_player | ReceiverMediaPlayer | All media players that have `receiver` as their `device_class`. Represented as Receiver and Remote accessories in HomeKit to control `on / off`, `play / pause`, `select source`, or `volume increase / decrease`, depending on `supported_features` of entity. Requires iOS 12.2/macOS 10.14.4 or later. | | sensor | TemperatureSensor | All sensors that have `°C` or `°F` as their `unit_of_measurement` and `temperature` as their `device_class`. | | sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. | | sensor | AirQualitySensor | All sensors that have `gas`/`pm10`/`pm25` as part of their `entity_id` or `gas`/`pm10`/`pm25`/`nitrogen_dioxide`/`volatile_organic_compounds` as their `device_class`. The VOC mappings use the IAQ guidelines for Europe released by the WHO (World Health Organization). | @@ -430,7 +431,7 @@ Bridged device triggers are represented as a single press button on stateless pr ## iOS Remote Widget -Entities exposed as `TelevisionMediaPlayer` are controllable within the Apple Remote widget in +Entities exposed as `TelevisionMediaPlayer` and `ReceiverMediaPlayer` are controllable within the Apple Remote widget in Control Center. Play, pause, volume up and volume down should work out of the box depending on the `supported_features` of the entity. However, if your television can be controlled in other ways outside of the `media_player` entity, (e.g., service calls to an IR blaster), it is possible to build an automation to take advantage of these events. @@ -594,7 +595,7 @@ To use the HomeKit integration with multiple different Home Assistant instances Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works, unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [core/issues/new](https://github.com/home-assistant/core/issues/new) -If you have any iOS 12.x devices signed into your iCloud account, media player entities with `device_class: tv` may trigger this condition. Filtering the entity or signing the iOS 12.x device out of iCloud should resolve the issue after restarting other devices. +If you have any iOS 12.x devices signed into your iCloud account, media player entities with `device_class: tv` or `device_class: receiver` may trigger this condition. Filtering the entity or signing the iOS 12.x device out of iCloud should resolve the issue after restarting other devices. #### Accessories are all listed as not responding @@ -610,9 +611,9 @@ See [resetting accessories](#resetting-accessories) and [Unpairing and Re-pairin Try removing the entity from HomeKit and then adding it again. If you are adding this configuration option to an existing entity in HomeKit, any changes you make to this entity's configuration options won't appear until the accessory is removed from HomeKit and then re-added. See [resetting accessories](#resetting-accessories). -#### My media player is not showing up as a television accessory +#### My media player is not showing up as a television or receiver accessory -Media Player entities with `device_class: tv` will show up as Television accessories on devices running iOS 12.2/macOS 10.14.4 or later. If needed, try removing the entity from HomeKit and then adding it again, especially if the `media_player` was previously exposed as a series of switches. Any changes, including changed supported features, made to an existing accessory won't appear until the accessory is removed from HomeKit and then re-added. See [resetting accessories](#resetting-accessories). +Media Player entities with `device_class: tv` or `device_class: receiver` will show up as Television or Receiver accessories on devices running iOS 12.2/macOS 10.14.4 or later. If needed, try removing the entity from HomeKit and then adding it again, especially if the `media_player` was previously exposed as a series of switches. Any changes, including changed supported features, made to an existing accessory won't appear until the accessory is removed from HomeKit and then re-added. See [resetting accessories](#resetting-accessories). The [Universal Media Player](/integrations/universal/#harmony-remote-example) has an example of how it can be used to wrap existing entities to enable them to be used as a Television accessory in HomeKit. From 5f3db4bfd9e24800f05d1e34adede9e45cdfcbed Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Tue, 26 Sep 2023 09:08:41 +0200 Subject: [PATCH 053/109] Add doorbell event support to google_assistant (#28990) --- source/_integrations/google_assistant.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 89a8bc040b2..378de56a7d0 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -274,6 +274,7 @@ Currently, the following domains are available to be used with Google Assistant, - camera (streaming, requires compatible camera) - climate (temperature setting, hvac_mode) - cover (on/off/set position) +- event (only entities with device class `doorbell` are supported) - fan (on/off/speed percentage/preset mode) - group (on/off) - humidifier (humidity setting/on/off/mode) From 830940399e425e2d7aca01ce7244919d46ddf84d Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Tue, 26 Sep 2023 09:10:18 +0200 Subject: [PATCH 054/109] Add binary sensor (#29015) --- source/_integrations/duotecno.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/duotecno.markdown b/source/_integrations/duotecno.markdown index 20e400685f4..f223c20e88b 100644 --- a/source/_integrations/duotecno.markdown +++ b/source/_integrations/duotecno.markdown @@ -15,6 +15,7 @@ ha_platforms: - cover - light - switch + - binary sensor ha_integration_type: integration --- From 056c406ae5ec5ed72ca3dc5ba1ffc4edb4125d6e Mon Sep 17 00:00:00 2001 From: G Johansson Date: Tue, 26 Sep 2023 09:15:39 +0200 Subject: [PATCH 055/109] Workday add date range (#28157) --- source/_integrations/workday.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 7a7785048b5..689b3d79eb6 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -44,9 +44,9 @@ Country code must be given according to [holidays](https://pypi.org/project/holi Subdivision code must be given according to [holidays](https://pypi.org/project/holidays/) notation. -Add holidays will only take dates formatted with `YYYY-MM-DD`. +Add holidays will only take dates formatted with `YYYY-MM-DD` or a date range formatted with `YYYY-MM-DD,YYYY-MM-DD`. -Remove holidays will take dates formatted with `YYYY-MM-DD` or partial of name, for example, `christmas` will exclude `Christmas Day`. +Remove holidays will take dates formatted with `YYYY-MM-DD`, a date range formatted with `YYYY-MM-DD,YYYY-MM-DD` or partial of name, for example, `christmas` will exclude `Christmas Day`. The offset can be used to see if future days are workdays. For example, put `1` to see if tomorrow is a workday. From e615a9d5a7f127af3c65ca3ab50836bbf173903b Mon Sep 17 00:00:00 2001 From: Allen Porter Date: Tue, 26 Sep 2023 00:20:54 -0700 Subject: [PATCH 056/109] Add Rain Bird irrigation calendar documentation (#26151) * Add Rain Bird calendar documentation * tiny tweak --------- Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/rainbird.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown index cff1d64f344..f4cefff0abd 100644 --- a/source/_integrations/rainbird.markdown +++ b/source/_integrations/rainbird.markdown @@ -3,6 +3,7 @@ title: Rain Bird description: Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant. ha_category: - Binary Sensor + - Calendar - Irrigation - Sensor - Switch @@ -15,6 +16,7 @@ ha_codeowners: ha_domain: rainbird ha_platforms: - binary_sensor + - calendar - number - sensor - switch @@ -26,6 +28,7 @@ This `rainbird` integration allows interacting with [LNK WiFi](https://www.rainb There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) +- [Calendar](#calendar) - [Number](#number) - [Switch](#switch) @@ -40,6 +43,12 @@ will run when turning on a zone switch (default is 6 minutes). This can be overr The `rainsensor` sensor will tell if you if the device has detected rain. +## Calendar + +Some Rain Bird devices support automatic irrigation schedules configured with the Rain Bird app. +and are available in Home Assistant as a [Calendar](https://www.home-assistant.io/integrations/calendar/) entity. You can view the program schedule in the UI, or trigger other automations +based on the irrigation start or end time. + ## Number The Rain Delay Number Entity lets you set and view the number of days, if any, the automatic irrigation schedule has been delayed. From 00712a94688ee8fd6b3cd2c6b98a92b8ad22117c Mon Sep 17 00:00:00 2001 From: G Johansson Date: Tue, 26 Sep 2023 10:49:39 +0200 Subject: [PATCH 057/109] Timer adapt duration for `timer.start` service call (#28875) --- source/_integrations/timer.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 97beeeed51c..be5bf9b7eee 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -91,7 +91,7 @@ Pick an icon from [Material Design Icons](https://pictogrammers.com/library/mdi/ ### Service `timer.start` -Starts or restarts a timer with the provided duration. If no duration is given, it will either restart with its initial value, or continue a paused timer with the remaining duration. If a new duration is provided, this will be the new default for the timer until Home Assistant is restarted (which loads your default values). The duration can be specified as a number of seconds or the easier to read `01:23:45` format. +Starts or restarts a timer with the provided duration. If no duration is given, it will either restart with its initial value, or continue a paused timer with the remaining duration. If a new duration is provided, this will be the duration for the timer until it finishes or is canceled, which then will reset the duration back to the original configured value. The duration can be specified as a number of seconds or the easier to read `01:23:45` format. You can also use `entity_id: all` and all active timers will be started. | Service data attribute | Optional | Description | From cdf5b71d0a02c5cb2f1e316d45ed3f3ffef1c9af Mon Sep 17 00:00:00 2001 From: Robert Svensson Date: Tue, 26 Sep 2023 10:50:11 +0200 Subject: [PATCH 058/109] Add UniFi device uptime and temperature sensors (#28814) --- source/_integrations/unifi.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 5aea3a86b45..89373e7671d 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -130,12 +130,16 @@ Entities reporting connected clients to a WLAN. ### Uptime sensor -Get entities reporting uptime per network client. +Get entities reporting uptime per network client or UniFi Network device. ### Power Outlet sensor Get entities reporting the power utilization for outlets that support metrics (such as the AC outlets on the USP-PDU-Pro). +### Device temperature sensor + +Get entities reporting the general temperature of a UniFi Network device. + ## Firmware updates This will show if there are firmware updates available for the UniFi network devices connected to the controller. If the configured user has admin privileges, the firmware upgrades can also be installed directly from Home Assistant. From 2c188600798a9dd3794e9313fa0bac3c320c74f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20Janu=C3=A1rio?= Date: Tue, 26 Sep 2023 10:23:39 +0100 Subject: [PATCH 059/109] Add additional sensors to ecoforest integration. (#28974) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> Co-authored-by: Franck Nijhof --- source/_integrations/ecoforest.markdown | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown index e562a5d54e0..2b82ce4896e 100644 --- a/source/_integrations/ecoforest.markdown +++ b/source/_integrations/ecoforest.markdown @@ -49,4 +49,11 @@ The Ecoforest integration exposes a switch entity to turn status of the device t ## Sensor -The Ecoforest integration exposes a sensor for the current ambient temperature +The Ecoforest integration exposes multiple sensors to monitor various features: + +- temperature: a sensor for the current ambient temperature +- cpu_temperature: a sensor for the current CPU temperature +- gas_temperature: a sensor for the current gas temperature +- ntc_temperature: a sensor for the current NTC probe temperature +- status: a sensor for the current status of the device. Possible values are: off, starting, pre-heating, on, shutting down, standby, alarm. +- alarm: a sensor for the current alarm of the device. Possible values are: air depression, pellets, CPU overheating, unknown. From f420329f805021ca82abcfdb9ea7d8f43db9ac51 Mon Sep 17 00:00:00 2001 From: Maikel Punie Date: Tue, 26 Sep 2023 12:52:04 +0200 Subject: [PATCH 060/109] Add duotecno climate platform (#28734) Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/duotecno.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/duotecno.markdown b/source/_integrations/duotecno.markdown index f223c20e88b..b39ddd09e51 100644 --- a/source/_integrations/duotecno.markdown +++ b/source/_integrations/duotecno.markdown @@ -2,6 +2,7 @@ title: Duotecno description: Access and control your Duotecno nodes. ha_category: + - Climate - Cover - Light - Switch @@ -12,6 +13,7 @@ ha_codeowners: - '@cereal2nd' ha_domain: duotecno ha_platforms: + - climate - cover - light - switch @@ -21,4 +23,13 @@ ha_integration_type: integration The Duotecno integration can be used to control [Duotecno](https://www.duotecno.be/) nodes in Home Assistant. +There is currently support for the following device types within Home Assistant: + +- Climate +- Cover +- Light +- Switch + {% include integrations/config_flow.md %} + +The information needed is the connection info to your Smart Box. From c96b446adbe28d2d1a74f1f36078ea023c1c52ae Mon Sep 17 00:00:00 2001 From: David Knowles Date: Tue, 26 Sep 2023 06:52:52 -0400 Subject: [PATCH 061/109] Update Hydrawise for config flow (#28108) Co-authored-by: Franck Nijhof --- source/_integrations/hydrawise.markdown | 119 ++++-------------------- 1 file changed, 18 insertions(+), 101 deletions(-) diff --git a/source/_integrations/hydrawise.markdown b/source/_integrations/hydrawise.markdown index 02eefaaff7a..07a8e338a42 100644 --- a/source/_integrations/hydrawise.markdown +++ b/source/_integrations/hydrawise.markdown @@ -6,6 +6,7 @@ ha_category: - Irrigation - Sensor - Switch +ha_config_flow: true ha_release: 0.71 ha_iot_class: Cloud Polling ha_domain: hydrawise @@ -27,114 +28,44 @@ There is currently support for the following device types within Home Assistant: - [Sensor](#sensor) - [Switch](#switch) -## Configuration +## Prerequisites -To enable it, add the following to your `configuration.yaml` file: +To set up the Hydrawise integration, you must first obtain an API Key. -```yaml -# Example configuration.yaml entry -hydrawise: - access_token: YOUR_API_KEY -``` +1. Login at [https://app.hydrawise.com](https://app.hydrawise.com). +2. Go to **Account Details** under the **My Account** menu (in the upper-right-hand corner). +3. Under the **Account Settings** section, copy the **API Key**. + 1. If no API Key is present, select the **Generate API Key** button. -{% configuration %} -access_token: - description: The API KEY assigned to your Hydrawise account. - required: true - type: string -scan_interval: - description: The time interval, in seconds, to poll the Hydrawise cloud. - required: false - type: integer - default: 120 -{% endconfiguration %} - -To get your API access token log into your [Hydrawise account](https://app.hydrawise.com/config/login) and in the 'My Account Details' section under Account Settings click 'Generate API Key'. Enter that key in your configuration file as `YOUR_API_KEY`. +{% include integrations/config_flow.md %} ## Binary Sensor -Once you have enabled the `hydrawise` integration, add the following to your `configuration.yaml` file: +Binary sensor entities are created for the controller: -```yaml -# Example configuration.yaml entry -binary_sensor: - - platform: hydrawise -``` - -{% configuration %} -monitored_conditions: - description: The binary sensors that should be displayed on the frontend. - required: false - type: list - default: All binary sensors are enabled. - keys: - is_watering: - description: The binary sensor is `on` when the zone is actively watering. - status: - description: This will indicate `on` when there is a connection to the Hydrawise cloud. It is not an indication of whether the irrigation controller hardware is online. -{% endconfiguration %} +- Cloud API availability
The Hydrawise API removed the ability to read the rain sensor status. Therefore it is no longer supported by the Hydrawise integration to Home Assistant.
-
+Binary sensor entities are created for each zone: -The Hydrawise API uses rate limiting and might throw errors in case the `scan_interval` is too low or too many manual service calls are triggered: -The limit is 3 calls to start/stop/suspend a zone per 30 seconds and an additional limit across the entire API of 30 calls in a 5-minute period per user. - -
+- Running status ## Sensor -Once you have enabled the `hydrawise` integration, add the following to your `configuration.yaml` file: +Sensor entities are added to each zone: -```yaml -# Example configuration.yaml entry -sensor: - - platform: hydrawise -``` - -{% configuration %} -monitored_conditions: - description: The sensors that should be displayed on the frontend. - required: false - type: list - default: All sensors are enabled. - keys: - watering_time: - description: The amount of time left if the zone is actively watering. Otherwise the time is 0. - next_cycle: - description: The day and time when the next scheduled automatic watering cycle will start. - {% endconfiguration %} +- Timestamp for the next scheduled automatic watering cycle +- Remaining time for the current watering cycle ## Switch -Once you have enabled the `hydrawise` integration, add the following to your `configuration.yaml` file: +Switches are added for each zone, controlling: -```yaml -# Example configuration.yaml entry -switch: - - platform: hydrawise -``` - -{% configuration %} -watering_minutes: - description: When manual watering is enabled this will determine the length of time in minutes that the irrigation zone will run. The allowed values are 5, 10, 15, 30, 45, or 60. - required: false - type: integer - default: 15 -monitored_conditions: - description: Selects the set of switches that should be enabled on the frontend. Also sets the length of time a zone will run under manual control. - required: false - type: list - default: All switches are enabled. - keys: - auto_watering: - description: Enables the Smart Watering features for this zone. - manual_watering: - description: Enables the manual watering control for this zone. -{% endconfiguration %} +- Smart watering features +- Manual watering ### Switch Operation @@ -145,17 +76,3 @@ When `manual_watering` is `on` the zone will run for the amount of time set by `
Due to changes in the Hydrawise API the status of the Auto Watering switches has changed. Under normal conditions the Auto Watering switches correctly reflect the Smart Watering schedule on the Hydrawise mobile or web app. However, if a rain sensor is connected to the system and it is active (rain detected), or the zone is running the Auto Watering switch will turn off. After both of those conditions are removed the switch will again show the correct Auto Watering condition.
- -```yaml -# An example that enables all the switches, and sets the manual watering time to 20 minutes. -switch: - - platform: hydrawise - watering_minutes: 20 -``` - -```yaml -# An example that enables only the manual control switches. -switch: - - platform: hydrawise - monitored_conditions: manual_watering -``` From 698ab320d678f68a9e092c554c9a740beba6ee2f Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Tue, 26 Sep 2023 18:11:10 +0200 Subject: [PATCH 062/109] Add config flow to AfterShip (#29033) --- source/_integrations/aftership.markdown | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index 15f79e4d5e2..3fb6088debf 100644 --- a/source/_integrations/aftership.markdown +++ b/source/_integrations/aftership.markdown @@ -23,27 +23,7 @@ To use this sensor, you need an [AfterShip Account](https://accounts.aftership.c AfterShip recently removed the tracking API functionality from the Forever Free plan. The tracking API functionality requires at least the Essentials plan. -## Configuration - -To enable this sensor, add the following lines to your `configuration.yaml`: - -```yaml -sensor: - - platform: aftership - api_key: AFTERSHIP_APIKEY -``` - -{% configuration %} -name: - description: The sensor name to use in the frontend. - required: false - default: "aftership" - type: string -api_key: - description: The API key for AfterShip. - required: true - type: string -{% endconfiguration %} +{% include integrations/config_flow.md %} ## Service `add_tracking` From 03e098566653cca2589e278fc4ae759aa6b1e92d Mon Sep 17 00:00:00 2001 From: Edouard Lafargue Date: Tue, 26 Sep 2023 11:41:55 -0700 Subject: [PATCH 063/109] New integration: Medcom Bluetooth radiation monitors (#28956) Co-authored-by: J. Nick Koston --- source/_integrations/medcom_ble.markdown | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 source/_integrations/medcom_ble.markdown diff --git a/source/_integrations/medcom_ble.markdown b/source/_integrations/medcom_ble.markdown new file mode 100644 index 00000000000..d2d44bdd26c --- /dev/null +++ b/source/_integrations/medcom_ble.markdown @@ -0,0 +1,37 @@ +--- +title: Medcom Bluetooth +description: Integrate International Medcom radiation monitors +ha_category: + - Environment + - Sensor +ha_release: '2023.10' +ha_iot_class: Local Polling +ha_codeowners: + - '@elafargue' +ha_domain: medcom_ble +ha_bluetooth: true +ha_platforms: + - sensor +ha_config_flow: true +ha_integration_type: integration +--- + +Integrates International Medcom Bluetooth-enabled radiation monitors into Home Assistant. + +[International Medcom](https://medcom.com/) is an American company that manufactures radiation detection instruments that are used in professional environments, for home and office, and by community projects worldwide. + +This integration supports the Medcom [Inspector BLE](https://medcom.com/product/inspector-ble/) via a Bluetooth low-energy interface. + +{% include integrations/config_flow.md %} + +The Medcom Bluetooth integration will automatically discover devices once the [Bluetooth](integrations/bluetooth) integration is enabled and working. It will list each detected Inspector using its Bluetooth MAC address as the serial number. + +To limit the load on the Bluetooth radio on the Home Assistant side, the integration only polls for a reading every 5 minutes, which should be adequate for ongoing background monitoring. An Inspector BLE battery should last several months with continuous use before needing replacement. + +## Supported Devices + +- Medcom Inspector BLE + +## Sensors + +This integration adds a counts-per-minute ("CPM") sensor for each detected Inspector BLE device. See the Inspector BLE manual for how to convert this CPM reading into another unit if desired, which can be done via a custom [template sensor](integrations/template) \ No newline at end of file From 93b5fe9f8f4eb359b314f245850acf06bf4d2300 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Tue, 26 Sep 2023 18:51:58 -0400 Subject: [PATCH 064/109] Document addition of endpoint to zwave_js_notification event (#29037) --- source/_integrations/zwave_js.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 4c88af14feb..a783cc8942b 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -437,6 +437,7 @@ These are notification events fired by devices using the Notification command cl { "domain": "zwave_js", "node_id": 1, + "endpoint": 0, "home_id": "974823419", "device_id": "ad8098fe80980974", "command_class": 113, @@ -459,6 +460,7 @@ These are notification events fired by devices using the Multilevel Switch comma { "domain": "zwave_js", "node_id": 1, + "endpoint": 0, "home_id": 974823419, "device_id": "2f44f0d4152be3123f7ad40cf3abd095", "command_class": 38, @@ -475,6 +477,7 @@ These are notification events fired by devices using the Multilevel Switch comma { "domain": "zwave_js", "node_id": 8, + "endpoint": 0, "home_id": 3803689189, "device_id": "2f44f0d4152be3123f7ad40cf3abd095", "command_class": 38, @@ -493,6 +496,7 @@ These are notification events fired by devices using the Entry Control command c { "domain": "zwave_js", "node_id": 1, + "endpoint": 0, "home_id": "974823419", "device_id": "ad8098fe80980974", "command_class": 111, From cf23df232706f292da0bd58922f795e3b548c709 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Tue, 26 Sep 2023 18:58:35 -0400 Subject: [PATCH 065/109] Document zwave_js changes for lib bump to 0.52.0 (#29036) --- source/_integrations/zwave_js.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index a783cc8942b..145186faf3c 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -152,7 +152,7 @@ The following features can be accessed from the integration configuration panel: - **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network. - **Remove device:** Starts the exclusion process for removing a device from your network. -- **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. +- **Rebuild network routes:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. - **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality. - **Third-party data opt-in/out:** Allows you to opt-in or out of telemetry that the Z-Wave JS project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated. @@ -171,7 +171,7 @@ The following features can be accessed from the device panel of a Z-Wave device: - **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one-off changes. - **Re-interview:** Forces the device to go through the interview process again so that Z-Wave-JS can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device. -- **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. +- **Rebuild routes:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. - **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process. - **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device. - **Update:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class). @@ -826,7 +826,7 @@ _Many_ reported issues result from RF interference caused by the system's USB po **All users are encouraged to use a USB extension cable to prevent such interference.** Please try such a cable before opening an issue or requesting support on Discord. It will nearly always be the first troubleshooting step that we ask you to take anyway. -After ensuring you are using an extension cable, perform a network heal. +After ensuring you are using an extension cable, rebuild network routes. The combination of these two steps corrects a large number of reported difficulties. From bc7654633cfdef3eb0fcf819d8eb5be250bb9d0a Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Wed, 27 Sep 2023 08:01:32 +0200 Subject: [PATCH 066/109] Add button platform to Vodafone Station (#29034) --- source/_integrations/vodafone_station.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/vodafone_station.markdown b/source/_integrations/vodafone_station.markdown index 984a51a1f4a..54abb726f15 100644 --- a/source/_integrations/vodafone_station.markdown +++ b/source/_integrations/vodafone_station.markdown @@ -11,6 +11,7 @@ ha_codeowners: - '@chemelli74' ha_iot_class: Local Polling ha_platforms: + - button - device_tracker - sensor ha_ssdp: false @@ -23,6 +24,7 @@ There is support for the following platform types within Home Assistant: - **Device tracker** - presence detection by looking at connected devices. - **Sensor** - external IP address, uptime, firmware, resources and network monitors. +- **Button** - restart router, dsl/fiber/internet key connections. {% include integrations/config_flow.md %} ## Integration options From 106a2b346cb729b4c4d5b8a241fcd9f1aeb33650 Mon Sep 17 00:00:00 2001 From: karwosts <32912880+karwosts@users.noreply.github.com> Date: Tue, 26 Sep 2023 23:26:47 -0700 Subject: [PATCH 067/109] Update picture-entity.markdown for fit_mode (#29041) --- source/_dashboards/picture-entity.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_dashboards/picture-entity.markdown b/source/_dashboards/picture-entity.markdown index 2fa63308b7b..a3b2b9a6c54 100644 --- a/source/_dashboards/picture-entity.markdown +++ b/source/_dashboards/picture-entity.markdown @@ -52,6 +52,11 @@ aspect_ratio: required: false description: 'Forces the height of the image to be a ratio of the width. Valid formats: Height percentage value (`23%`) or ratio expressed with colon or "x" separator (`16:9` or `16x9`). For a ratio, the second element can be omitted and will default to "1" (`1.78` equals `1.78:1`).' type: string +fit_mode: + required: false + description: 'Defines the manner in which the image is stretched/clipped to fit the card area. `cover`: The image keeps its aspect ratio and fills the given dimension. The image will be clipped to fit. `contain`: The image keeps its aspect ratio, but is resized to fit within the given dimension. `fill`: The image is resized to fill the given dimension. If necessary, the image will be stretched or squished to fit.' + type: string + default: cover name: required: false description: Overwrite entity name. From cee818aecc5439a91e542c2c338300e23fb97e7a Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Wed, 27 Sep 2023 11:02:18 +0200 Subject: [PATCH 068/109] Add config flow to color extractor (#29018) --- source/_integrations/color_extractor.markdown | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/source/_integrations/color_extractor.markdown b/source/_integrations/color_extractor.markdown index cdebda20b26..172ca2b77da 100644 --- a/source/_integrations/color_extractor.markdown +++ b/source/_integrations/color_extractor.markdown @@ -7,20 +7,14 @@ ha_category: ha_domain: color_extractor ha_codeowners: - '@GenericStudent' +ha_config_flow: true ha_integration_type: integration --- -The `color_extractor` integration will extract the predominant color from a given image and apply that color to a target light. +The color extractor integration will extract the predominant color from a given image and apply that color to a target light. Useful as part of an automation. -## Configuration - -To enable the `color_extractor` service in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -color_extractor: -``` +{% include integrations/config_flow.md %} ## Services From 763f3041409e1fc37317a33d68d9170b0cd313e8 Mon Sep 17 00:00:00 2001 From: G Johansson Date: Wed, 27 Sep 2023 11:02:59 +0200 Subject: [PATCH 069/109] Trigger Weather template (#29035) --- source/_integrations/template.markdown | 87 +++++++++++++++++++++++++- 1 file changed, 86 insertions(+), 1 deletion(-) diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index a7aeb2db892..9a6f1985ee7 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -268,7 +268,92 @@ image: required: false type: boolean default: true -"[all sensor, binary sensor, button, image, number, select entities]": +weather: + description: List of weather entities + required: true + type: map + keys: + condition_template: + description: The current weather condition. + required: true + type: template + temperature_template: + description: The current temperature. + required: true + type: template + dew_point_template: + description: The current dew point. + required: false + type: template + apparent_temperature_template: + description: The current apparent (feels-like) temperature. + required: false + type: template + temperature_unit: + description: Unit for temperature_template output. Valid options are °C, °F, and K. + required: false + type: string + humidity_template: + description: The current humidity. + required: true + type: template + pressure_template: + description: The current air pressure. + required: false + type: template + pressure_unit: + description: Unit for pressure_template output. Valid options are Pa, hPa, kPa, bar, cbar, mbar, mmHg, inHg, psi. + required: false + type: string + wind_speed_template: + description: The current wind speed. + required: false + type: template + wind_gust_speed_template: + description: The current wind gust speed. + required: false + type: template + wind_speed_unit: + description: Unit for wind_speed_template output. Valid options are m/s, km/h, mph, mm/d, in/d, and in/h. + required: false + type: string + wind_bearing_template: + description: The current wind bearing. + required: false + type: template + ozone_template: + description: The current ozone level. + required: false + type: template + cloud_coverage_template: + description: The current cloud coverage. + required: false + type: template + visibility_template: + description: The current visibility. + required: false + type: template + visibility_unit: + description: Unit for visibility_template output. Valid options are km, mi, ft, m, cm, mm, in, yd. + required: false + type: string + forecast_daily_template: + description: Daily forecast data. + required: false + type: template + forecast_hourly_template: + description: Hourly forecast data. + required: false + type: template + forecast_twice_daily_template: + description: Twice daily forecast data. + required: false + type: template + precipitation_unit: + description: Unit for precipitation output. Valid options are km, mi, ft, m, cm, mm, in, yd. + required: false + type: string +"[all sensor, binary sensor, button, image, number, select, weather entities]": description: Fields that can be used above for sensors, binary sensors, buttons, numbers, and selects. required: false type: map From 5cdcccd047b7428cc4829bc0561a43ab50e1b896 Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Wed, 27 Sep 2023 11:03:25 +0200 Subject: [PATCH 070/109] Add payload reset option to mqtt lock (#29044) --- source/_integrations/lock.mqtt.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index d632a06668b..341980e0efe 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -192,6 +192,11 @@ payload_open: required: false type: string default: OPEN +payload_reset: + description: A special payload that resets the state to `unknown` when received on the `state_topic`. + required: false + type: string + default: '"None"' qos: description: The maximum QoS level to be used when receiving and publishing messages. required: false From 55fa6099d71cbb9b5955eaf89fc9ea5d8cac24ef Mon Sep 17 00:00:00 2001 From: Marty Sun Date: Wed, 27 Sep 2023 17:04:17 +0800 Subject: [PATCH 071/109] Add "start_irrigation" service for Yardian (#28892) --- source/_integrations/yardian.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/yardian.markdown b/source/_integrations/yardian.markdown index 770b114cece..7f481273e0a 100644 --- a/source/_integrations/yardian.markdown +++ b/source/_integrations/yardian.markdown @@ -26,3 +26,14 @@ There is currently support for the following platform within Home Assistant: During the configuration, you will have to manually set the **Host** and the **Access Token**. You can find them inside your [Yardian App](https://yardian.com/app/). ![Yardian Host/Token Location](/images/integrations/yardian/yardian_config_flow.jpg) + +## Services + +### yardian.start_irrigation + +Start a zone for a given number of minutes. This service accepts an Yardian Zone switch entity and allows a given duration. + +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------- | +| `entity_id` | yes | The Yardian Zone switch to turn on. | +| `duration` | no | Number of minutes for this zone to be turned on. | From 841c0ee19edbbb25ffa13d34c3bd3535484f1b46 Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Wed, 27 Sep 2023 11:04:48 +0200 Subject: [PATCH 072/109] Add cover platform to Comelit (#29032) --- source/_integrations/comelit.markdown | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/source/_integrations/comelit.markdown b/source/_integrations/comelit.markdown index 53425c769ca..fef2e19c328 100644 --- a/source/_integrations/comelit.markdown +++ b/source/_integrations/comelit.markdown @@ -11,6 +11,7 @@ ha_codeowners: ha_iot_class: Local Polling ha_platforms: - light + - cover ha_ssdp: false ha_integration_type: integration --- @@ -19,9 +20,5 @@ The Comelit SimpleHome integration allows you to control your [Comelit home auto There is support for the following platform types within Home Assistant: -- **Comelit Serial Bridge** - allows local control for climate, light and cover devices. +- **Comelit Serial Bridge** - allows local control for light and cover devices. {% include integrations/config_flow.md %} - -## Configuration - -The configuration in the UI asks for a a few information: host, alarm_pin. From ba6184f0ee764e7d6b0cb30ad6031b50e9a3426f Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Wed, 27 Sep 2023 05:12:07 -0400 Subject: [PATCH 073/109] Document logging changes for zwave_js (#29038) Co-authored-by: Franck Nijhof --- source/_integrations/zwave_js.markdown | 33 ++++++++++++++++++++------ 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 145186faf3c..cc38bdd6c29 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -868,18 +868,37 @@ When trying to determine why something isn't working as you expect, or when repo 2. Select the **Z-Wave** integration. Then, select the three dots. 3. From he dropdown menu, select **Download diagnostics**. -### Interference issues +#### How do I address interference issues? Many users have reported issues with interference when the USB stick was directly connected to the machine (proximity). If you are having issues, try to use a short USB 2.0 A (male to female) extension cord. -#### How to access the Z-Wave logs +#### How do I access the Z-Wave logs? -Z-Wave JS writes details to its logs. To access these logs, follow these steps: +##### The easy way -1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. -2. Select the **Z-Wave** integration. Then, select **Configure**. -3. Open the **Logs** tab. -4. Make sure to keep this browser tab open. Otherwise the logging is not active. +###### Enable Z-Wave JS logging + +1. Go to the Z-Wave integration panel: {% my integration badge domain="zwave_js" %} +2. Select `Enable debug logging` on the left-hand side of the screen. + +The log level will be set to `debug` for the integration, library, and optionally the driver (if the driver log level is not already set to `verbose`, `debug`, or `silly`), and all Z-Wave JS logs will be added to the Home Assistant logs. + +###### Disable Z-Wave JS logging + +1. Go to the Z-Wave integration panel: {% my integration badge domain="zwave_js" %} +2. Click `Disable debug logging` on the left hand side of the screen. + +The log level will be reset to its previous value for the integration, library, and driver, and the Home Assistant frontend will automatically send you the Z-Wave logs generated during that time period for download. + +##### The advanced way + +###### Enable Z-Wave JS logging manually, or via an automation + +Set the log level for `zwave_js_server` to `debug`. This can either be done in your `configuration.yaml` in the `logger` section, or using the `logger.set_level` service. When the integration detects that the log level has been set to `debug`, it will also set the Z-Wave JS logs to `debug` if the level isn't already `verbose`, `debug`, or `silly` and will include those logs in the Home Assistant logs. The Z-Wave JS logs can be found under the logger name `zwave_js_server.server`. + +###### Disable Z-Wave JS logging manually, or via an automation + +Set the log level for `zwave_js_server` to a level higher than `debug`. This can either be done in your `configuration.yaml` in the `logger` section, or using the `logger.set_level` service. The Z-Wave JS logs will no longer be included in the Home Assistant logs, and if the log level of Z-Wave JS was changed by the integration, it will automatically change back to its original level. ## Z-Wave terminology From b368ad9f55c352962198a34e9078420bb84b6ab6 Mon Sep 17 00:00:00 2001 From: elmurato <1382097+elmurato@users.noreply.github.com> Date: Wed, 27 Sep 2023 12:13:09 +0300 Subject: [PATCH 074/109] Add configuration hints in Minecraft Server documentation (#29000) --- .../_integrations/minecraft_server.markdown | 40 +++++++++++++++++-- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/source/_integrations/minecraft_server.markdown b/source/_integrations/minecraft_server.markdown index fedf5c1f1a6..a2fe53b797b 100644 --- a/source/_integrations/minecraft_server.markdown +++ b/source/_integrations/minecraft_server.markdown @@ -17,18 +17,48 @@ ha_platforms: ha_integration_type: integration --- -Minecraft servers allow players to play the sandbox video game [Minecraft](https://www.minecraft.net/en-us) by Mojang Studios online or via a local area network with other players. The `Minecraft Server` integration lets you retrieve information from a Minecraft server within Home Assistant. +[Minecraft](https://www.minecraft.net/en-us) is a sandbox video game developed by Mojang Studios. Minecraft servers allow players to play the game online or via a local area network with other players. The **Minecraft Server** integration lets you retrieve information from a Minecraft server within Home Assistant.
-Minecraft Java edition servers must be version 1.7 or newer, since older versions don't expose any information. + +Minecraft Java Edition servers must be version 1.7 or newer, since older versions don't expose any information. +
-
-Minecraft Bedrock edition servers are not supported yet. +
+ +Minecraft Bedrock Edition servers are not supported yet. +
{% include integrations/config_flow.md %} +During setup you will be prompted to enter the **name** and the **address** of the server. + +### Server name + +The **server name** can be chosen freely. + +
+ +Default is `Minecraft Server`. + +
+ +### Server address + +The **server address** is a combination of the hostname and the port, where the port is optional. For SRV records, the port is automatically extracted. For all other cases the default port **25565** is used, if the port is omitted. Here are some server address examples: + +- **SRV record**: `hypixel.net` +- **Hostname**: `mc.hypixel.net:25565` or `mc.hypixel.net` +- **IP address**: `192.168.0.123:25565` or `192.168.0.123` + +
+ +Default is `localhost:25565`. + +
+ ## Binary sensors This integration provides a binary sensor for the following information from a Minecraft server: @@ -48,5 +78,7 @@ This integration provides sensors for the following information from a Minecraft - World Message / Message of the Day (MOTD)
+ Depending on the server, the player names list may not be shown completely. Some servers and plugins limit or completely hide this list or even replace the player names with fake ones to show some custom messages there. +
From 4b20078f9df9d64fac3e40e91094b5e139f7f715 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Wed, 27 Sep 2023 15:44:42 +0200 Subject: [PATCH 075/109] Add config flow to Twitch (#29049) --- source/_integrations/twitch.markdown | 52 ++-------------------------- 1 file changed, 3 insertions(+), 49 deletions(-) diff --git a/source/_integrations/twitch.markdown b/source/_integrations/twitch.markdown index 3ad57ca98c7..5c810b4631b 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -13,56 +13,10 @@ ha_codeowners: - '@joostlek' --- -The `twitch` platform will allow you to monitor [Twitch](https://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. +The Twitch integration will allow you to monitor [Twitch](https://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. -## Setup Client ID and Client secret +## Get Twitch application credentials Create a new app at "Register Your Application" in the [Twitch developer portal](https://dev.twitch.tv/console/apps). Then get the __Client ID__ and __Client secret__ for the new application. -## Setup OAuth Token - -To enable the follow and subscription attributes, the OAuth token is needed to get the right permissions on the Twitch API. -If you don't need those, ignore the configuration setting: `token`. - -To get the OAuth token, visit the [OAuth Token Generator](https://twitchapps.com/tokengen/#), insert your __Client ID__ and `user:read:subscriptions` inside __scopes__. - -Before clicking Summit (the broken image below the form), visit the [Twitch dev console](https://dev.twitch.tv/console) and add a new application. - -As __OAuth Redirect URLs__ add `https://twitchapps.com/tokengen/` and click __Create__ -. -Back at the Token Generator, click the __Connect__ button, accept the consent screen and get your __OAuth Token__. - -## Configuration - -To use Twitch with your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - platform: twitch - client_id: YOUR_TWITCH_CLIENT_ID - client_secret: YOUR_TWITCH_CLIENT_SECRET - token: YOUR_TWITCH_OAUTH_TOKEN - channels: - - channel1 - - channel2 -``` - -{% configuration %} -client_id: - description: Your Twitch client ID. - required: true - type: string -client_secret: - description: Your Twitch client secret. - required: true - type: string -token: - description: Your Twitch OAuth Token. - required: false - type: string -channels: - description: List of channels names - required: true - type: list -{% endconfiguration %} +{% include integrations/config_flow.md %} From 7804f9875208328227133ab61b37ffdacb205228 Mon Sep 17 00:00:00 2001 From: nachonam Date: Wed, 27 Sep 2023 17:11:51 +0200 Subject: [PATCH 076/109] Add Freebox Home binary sensors (#27194) Co-authored-by: Quentame --- source/_integrations/freebox.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index dc866de85f6..af50b51613c 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -34,6 +34,7 @@ There is currently support for the following device types within Home Assistant: - [Device tracker](#presence-detection) for connected devices - [Switch](#switch) to control Wi-Fi - [Camera](#camera) +- [Binary sensors](#binary) {% include integrations/config_flow.md %} @@ -127,6 +128,12 @@ The health status of each RAID array can be monitored with a diagnostics binary Cameras are only available in Freebox V7 (also known as Freebox Delta). +## Binary +This platform offers you sensors to monitor: +- motion sensor +- door opener +- plastic cover + ## Service ### Service `freebox.reboot` From 91f8e66dd1e6d2d8723131c24ba34e4ea6c640e3 Mon Sep 17 00:00:00 2001 From: Diogo Morgado Date: Wed, 27 Sep 2023 16:50:33 +0100 Subject: [PATCH 077/109] Add IPMA UV Index sensor (#28909) --- source/_integrations/ipma.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index c72e650a8a8..85351853890 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -19,7 +19,9 @@ The `ipma` weather platform uses the [Instituto Português do Mar e Atmosfera](h There is currently support for the following device types within Home Assistant: -- Sensor (Risk of Fire for your location) +- Sensor + - Risk of Fire for your location + - UV Index for your district - Weather (current state and forecast) {% include integrations/config_flow.md %} From ed6fd0a965fea49ed6626e6324be254ca11007f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 27 Sep 2023 17:51:43 +0200 Subject: [PATCH 078/109] Document Airzone Cloud Zone climate entities (#29002) Co-authored-by: Franck Nijhof --- source/_integrations/airzone_cloud.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_integrations/airzone_cloud.markdown b/source/_integrations/airzone_cloud.markdown index af097818820..f646d1217f3 100644 --- a/source/_integrations/airzone_cloud.markdown +++ b/source/_integrations/airzone_cloud.markdown @@ -10,6 +10,7 @@ ha_config_flow: true ha_domain: airzone_cloud ha_platforms: - binary_sensor + - climate - diagnostics - sensor ha_codeowners: @@ -58,6 +59,14 @@ For each Airzone zone (thermostat), the following *binary sensors* are created: | :------------------ | :------------------------------------------------------ | | problems | Indicates that the current zone has errors or warnings. | +## Climate + +For each Airzone zone (thermostat), a climate entity is created. + +**HVAC mode can only be changed on a *parent zone*.** + +*Child zones* can only enable/disable the current HVAC mode selected on the corresponding *parent zone*. Attempting to change the HVAC mode on a *child zone* will result in a Home Assistant error. + ## Sensors For each Airzone Aidoo (HVAC Wi-Fi controller), the following *sensors* are created: From 2bea17bf9ed9b9b2c06db9c1985041567544b19b Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Wed, 27 Sep 2023 17:52:37 +0200 Subject: [PATCH 079/109] Update withings info (#29048) --- source/_integrations/withings.markdown | 37 +++++--------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index e02cfe51da0..5da73dc9799 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -16,11 +16,11 @@ ha_platforms: ha_integration_type: integration --- -The `withings` sensor platform consumes data from various health products produced by [Withings](https://www.withings.com). +The Withings integration consumes data from various health products produced by [Withings](https://www.withings.com). -## Create a Withings Account +## Create a Withings developer account -You must have a developer account to distribute the data. [Create a free development account](https://account.withings.com/partner/add_oauth2). +You must have a developer account to distribute the data. [Create a free developer account](https://account.withings.com/partner/add_oauth2). Values for your account: @@ -52,32 +52,7 @@ Withings will validate (with HTTP HEAD) these requirements each time you save yo {% include integrations/config_flow.md %} -The integration configuration will ask for the *Client ID* and *Client Secret* created above. See [Application Credentials](/integrations/application_credentials) for more details. +## Data updates -Once authorized, the tab/window will close and the integration page will prompt to select a profile. Select the profile you chose while on the Withings site. - - Note: It's important you select the same profile from the previous step. Choosing a different one will result in Home Assistant displaying the wrong data. - -Data will synchronize immediately and update under the following conditions: - - If `use_webhook` is enabled: - - Each time Withings notifies Home Assistant of a data change. - - Every 120 minutes. - - If `use_webhook` is not enabled: - - Every 10 minutes. - -## Configuration - -There are additional configuration options available: - -```yaml -# Example configuration.yaml entry -withings: - use_webhook: true -``` - -{% configuration %} -use_webhook: - description: "Configure Withings to notify Home Assistant when data changes. This also required to populate the in_bed sensor. Note: In order for this to work, your Home Assistant install must be accessible to the internet." - required: false - default: false - type: boolean -{% endconfiguration %} +The integration will automatically detect if you can use webhooks. This will enable the integration only to update when there is new data. +The binary sensor for sleep will only work if the integration can establish webhooks with Withings. From d4a7d5026c34444715bd2dbd328ccef31f6c22db Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 27 Sep 2023 18:46:52 +0200 Subject: [PATCH 080/109] 2023.10: Beta release notes --- CODEOWNERS | 43 +- _config.yml | 6 +- source/_integrations/aftership.markdown | 1 + source/_integrations/airthings_ble.markdown | 1 + source/_integrations/airtouch4.markdown | 2 + source/_integrations/aladdin_connect.markdown | 1 + source/_integrations/co2signal.markdown | 4 +- source/_integrations/duotecno.markdown | 2 +- source/_integrations/ecoforest.markdown | 2 + source/_integrations/esphome.markdown | 1 + source/_integrations/fitbit.markdown | 2 + source/_integrations/flux_led.markdown | 2 - .../homeassistant_sky_connect.markdown | 1 + source/_integrations/honeywell.markdown | 1 + source/_integrations/idasen_desk.markdown | 4 +- .../islamic_prayer_times.markdown | 1 - source/_integrations/life360.markdown | 1 + source/_integrations/lifx.markdown | 3 - .../_integrations/london_underground.markdown | 2 + source/_integrations/matrix.markdown | 2 + source/_integrations/medcom_ble.markdown | 2 +- source/_integrations/modbus.markdown | 2 - source/_integrations/myq.markdown | 1 + source/_integrations/nextbus.markdown | 2 +- source/_integrations/renson.markdown | 8 +- source/_integrations/roborock.markdown | 4 +- .../_integrations/ruckus_unleashed.markdown | 3 +- source/_integrations/spotify.markdown | 1 + source/_integrations/switchbot.markdown | 2 +- source/_integrations/system_bridge.markdown | 4 +- source/_integrations/todoist.markdown | 1 + source/_integrations/trend.markdown | 4 +- source/_integrations/twinkly.markdown | 2 + source/_integrations/twitch.markdown | 1 + source/_integrations/venstar.markdown | 1 + source/_integrations/verisure.markdown | 1 - source/_integrations/versasense.markdown | 2 +- .../_integrations/vodafone_station.markdown | 1 - source/_integrations/waqi.markdown | 3 +- source/_integrations/weatherkit.markdown | 4 +- source/_integrations/withings.markdown | 1 + .../_posts/2023-10-04-release-202310.markdown | 389 ++++ source/changelogs/core-2023.10.markdown | 1816 +++++++++++++++++ source/images/blog/2023-10/social.png | Bin 0 -> 34872 bytes 44 files changed, 2290 insertions(+), 47 deletions(-) create mode 100644 source/_posts/2023-10-04-release-202310.markdown create mode 100644 source/changelogs/core-2023.10.markdown create mode 100644 source/images/blog/2023-10/social.png diff --git a/CODEOWNERS b/CODEOWNERS index 10fb240d8bf..e77adf5d0ee 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -22,7 +22,8 @@ source/_integrations/airly.markdown @bieniu source/_integrations/airnow.markdown @asymworks source/_integrations/airq.markdown @Sibgatulin @dl2080 source/_integrations/airthings.markdown @danielhiversen -source/_integrations/airthings_ble.markdown @vincegio +source/_integrations/airthings_ble.markdown @vincegio @LaStrada +source/_integrations/airtouch4.markdown @samsinnamon source/_integrations/airvisual.markdown @bachya source/_integrations/airvisual_pro.markdown @bachya source/_integrations/airzone.markdown @Noltari @@ -120,6 +121,7 @@ source/_integrations/cisco_webex_teams.markdown @fbradyirl source/_integrations/climate.markdown @home-assistant/core source/_integrations/cloud.markdown @home-assistant/cloud source/_integrations/cloudflare.markdown @ludeeus @ctalkington +source/_integrations/co2signal.markdown @jpbede source/_integrations/coinbase.markdown @tombrien source/_integrations/color_extractor.markdown @GenericStudent source/_integrations/comed.markdown @tronikos @@ -180,6 +182,7 @@ source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @an source/_integrations/dynalite.markdown @ziv1234 source/_integrations/easyenergy.markdown @klaasnicolaas source/_integrations/ecobee.markdown @marthoc @marcolivierarsenault +source/_integrations/ecoforest.markdown @pjanuario source/_integrations/econet.markdown @vangorra @w1ll1am23 source/_integrations/ecovacs.markdown @OverloadUT @mib1185 source/_integrations/ecowitt.markdown @pvizeli @@ -201,6 +204,7 @@ source/_integrations/energie_vanons.markdown @klaasnicolaas source/_integrations/energy.markdown @home-assistant/core 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/entur_public_transport.markdown @hfurubotten @@ -212,7 +216,7 @@ 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 @bdraco +source/_integrations/esphome.markdown @OttoWinter @jesserockz @kbx81 @bdraco source/_integrations/eufylife_ble.markdown @bdr99 source/_integrations/event.markdown @home-assistant/core source/_integrations/evergy.markdown @tronikos @@ -230,6 +234,7 @@ source/_integrations/filter.markdown @dgomes source/_integrations/fire_tv.markdown @JeffLIrion @ollo69 source/_integrations/fireservicerota.markdown @cyberjunky source/_integrations/firmata.markdown @DaAwesomeP +source/_integrations/fitbit.markdown @allenporter source/_integrations/fivem.markdown @Sander0542 source/_integrations/fjaraskupan.markdown @elupus source/_integrations/flexom.markdown @imicknl @vlebourl @tetienne @nyroDev @@ -237,7 +242,7 @@ source/_integrations/flick_electric.markdown @ZephireNZ source/_integrations/flipr.markdown @cnico source/_integrations/flo.markdown @dmulcahey source/_integrations/flume.markdown @ChrisMandich @bdraco @jeeftor -source/_integrations/flux_led.markdown @icemanch @bdraco +source/_integrations/flux_led.markdown @icemanch source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck source/_integrations/forked_daapd.markdown @uvjustin source/_integrations/fortios.markdown @kimfrellsen @@ -307,6 +312,7 @@ source/_integrations/home_connect.markdown @DavidMStraub source/_integrations/home_plus_control.markdown @chemaaa source/_integrations/homeassistant.markdown @home-assistant/core source/_integrations/homeassistant_alerts.markdown @home-assistant/core +source/_integrations/homeassistant_green.markdown @home-assistant/core source/_integrations/homeassistant_hardware.markdown @home-assistant/core source/_integrations/homeassistant_sky_connect.markdown @home-assistant/core source/_integrations/homeassistant_yellow.markdown @home-assistant/core @@ -330,6 +336,7 @@ source/_integrations/iammeter.markdown @lewei50 source/_integrations/iaqualink.markdown @flz source/_integrations/ibeacon.markdown @bdraco source/_integrations/icloud.markdown @Quentame @nzapponi +source/_integrations/idasen_desk.markdown @abmantis source/_integrations/ign_sismologia.markdown @exxamalte source/_integrations/image.markdown @home-assistant/core source/_integrations/image_processing.markdown @home-assistant/core @@ -396,7 +403,6 @@ source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave source/_integrations/lg_netcast.markdown @Drafteed source/_integrations/lidarr.markdown @tkdrob source/_integrations/life360.markdown @pnbruckner -source/_integrations/lifx.markdown @bdraco source/_integrations/light.markdown @home-assistant/core source/_integrations/linux_battery.markdown @fabaff source/_integrations/litejet.markdown @joncar @@ -408,6 +414,7 @@ source/_integrations/lock.markdown @home-assistant/core source/_integrations/logbook.markdown @home-assistant/core source/_integrations/logger.markdown @home-assistant/core source/_integrations/logi_circle.markdown @evanjd +source/_integrations/london_underground.markdown @jpbede source/_integrations/lookin.markdown @ANMalko @bdraco source/_integrations/loqed.markdown @mikewoudenberg source/_integrations/luci.markdown @mzdrale @@ -420,9 +427,11 @@ source/_integrations/lyric.markdown @timmo001 source/_integrations/marantz.markdown @ol-iver @starkillerOG source/_integrations/martec.markdown @starkillerOG source/_integrations/mastodon.markdown @fabaff +source/_integrations/matrix.markdown @PaarthShah source/_integrations/matter.markdown @home-assistant/matter source/_integrations/mazda.markdown @bdr99 source/_integrations/meater.markdown @Sotolotl @emontnemery +source/_integrations/medcom_ble.markdown @elafargue source/_integrations/media_extractor.markdown @joostlek source/_integrations/media_player.markdown @home-assistant/core source/_integrations/media_source.markdown @hunterjm @@ -444,7 +453,7 @@ source/_integrations/minecraft_server.markdown @elmurato source/_integrations/minio.markdown @tkislan source/_integrations/moat.markdown @bdraco source/_integrations/mobile_app.markdown @home-assistant/core -source/_integrations/modbus.markdown @adamchengtkc @janiversen @vzahradnik +source/_integrations/modbus.markdown @janiversen source/_integrations/modem_callerid.markdown @tkdrob source/_integrations/modern_forms.markdown @wonderslug source/_integrations/moehlenhoff_alpha2.markdown @j-a-n @@ -459,7 +468,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/myq.markdown @ehendrix23 +source/_integrations/myq.markdown @ehendrix23 @Lash-L source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer source/_integrations/mystrom.markdown @fabaff source/_integrations/nam.markdown @bieniu @@ -550,6 +559,7 @@ source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa source/_integrations/point.markdown @fredrike source/_integrations/poolsense.markdown @haemishkyd source/_integrations/powerwall.markdown @bdraco @jrester @daniel-simpson +source/_integrations/private_ble_device.markdown @Jc2k source/_integrations/profiler.markdown @bdraco source/_integrations/progettihwsw.markdown @ardaseremet source/_integrations/prometheus.markdown @knyar @@ -610,7 +620,7 @@ source/_integrations/roon.markdown @pavoni source/_integrations/rpi_power.markdown @shenxn @swetoast source/_integrations/rss_feed_template.markdown @home-assistant/core source/_integrations/rtsp_to_webrtc.markdown @allenporter -source/_integrations/ruckus_unleashed.markdown @gabe565 @lanrat +source/_integrations/ruckus_unleashed.markdown @lanrat @ms264556 @gabe565 source/_integrations/ruuvi_gateway.markdown @akx source/_integrations/ruuvitag_ble.markdown @akx source/_integrations/rympro.markdown @OnFreund @elad-bar @maorcc @@ -657,7 +667,7 @@ source/_integrations/siren.markdown @home-assistant/core @raman325 source/_integrations/sisyphus.markdown @jkeljo source/_integrations/sky_hub.markdown @rogerselwyn source/_integrations/skybell.markdown @tkdrob -source/_integrations/slack.markdown @tkdrob +source/_integrations/slack.markdown @tkdrob @fletcherau source/_integrations/sleepiq.markdown @mfugate1 @kbickar source/_integrations/slide.markdown @ualex73 source/_integrations/slimproto.markdown @marcelveldt @@ -688,7 +698,7 @@ source/_integrations/spaceapi.markdown @fabaff source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87 source/_integrations/spider.markdown @peternijssen source/_integrations/splunk.markdown @Bre77 -source/_integrations/spotify.markdown @frenck +source/_integrations/spotify.markdown @frenck @joostlek source/_integrations/sql.markdown @gjohansson-ST @dougiteixeira source/_integrations/squeezebox.markdown @rajlaud source/_integrations/srp_energy.markdown @briglx @@ -713,6 +723,7 @@ source/_integrations/switch.markdown @home-assistant/core source/_integrations/switch_as_x.markdown @home-assistant/core source/_integrations/switchbee.markdown @jafar-atili source/_integrations/switchbot.markdown @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski +source/_integrations/switchbot_cloud.markdown @SeraphicRav source/_integrations/switcher_kis.markdown @thecode source/_integrations/switchmate.markdown @danielhiversen @qiz-li source/_integrations/symfonisk.markdown @cgtobi @jjlawren @@ -757,10 +768,11 @@ source/_integrations/trafikverket_ferry.markdown @gjohansson-ST source/_integrations/trafikverket_train.markdown @endor-force @gjohansson-ST source/_integrations/trafikverket_weatherstation.markdown @endor-force @gjohansson-ST source/_integrations/transmission.markdown @engrbm87 @JPHutchins +source/_integrations/trend.markdown @jpbede source/_integrations/tts.markdown @home-assistant/core @pvizeli source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck source/_integrations/twentemilieu.markdown @frenck -source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 +source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 @Olen source/_integrations/twitch.markdown @joostlek source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ukraine_alarm.markdown @PaulAnnekov @@ -782,10 +794,10 @@ 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 -source/_integrations/verisure.markdown @frenck @niro1987 +source/_integrations/venstar.markdown @garbled1 @jhollowe +source/_integrations/verisure.markdown @frenck source/_integrations/vermont_castings.markdown @jeeftor -source/_integrations/versasense.markdown @flamm3blemuff1n +source/_integrations/versasense.markdown @imstevenxyz source/_integrations/version.markdown @ludeeus source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey source/_integrations/vilfo.markdown @ManneW @@ -800,12 +812,13 @@ source/_integrations/volvooncall.markdown @molobrakos source/_integrations/vulcan.markdown @Antoni-Czaplicki source/_integrations/wake_on_lan.markdown @ntilley905 source/_integrations/wallbox.markdown @hesselonline -source/_integrations/waqi.markdown @andrey-git +source/_integrations/waqi.markdown @joostlek source/_integrations/water_heater.markdown @home-assistant/core source/_integrations/watson_tts.markdown @rutkai source/_integrations/watttime.markdown @bachya source/_integrations/waze_travel_time.markdown @eifinger source/_integrations/weather.markdown @home-assistant/core +source/_integrations/weatherkit.markdown @tjhorner source/_integrations/webhook.markdown @home-assistant/core source/_integrations/webostv.markdown @thecode source/_integrations/websocket_api.markdown @home-assistant/core @@ -816,7 +829,7 @@ source/_integrations/whois.markdown @frenck source/_integrations/wiffi.markdown @mampfes source/_integrations/wilight.markdown @leofig-rj source/_integrations/wirelesstag.markdown @sergeymaysak -source/_integrations/withings.markdown @vangorra +source/_integrations/withings.markdown @vangorra @joostlek source/_integrations/wiz.markdown @sbidy source/_integrations/wled.markdown @frenck source/_integrations/wolflink.markdown @adamkrol93 diff --git a/_config.yml b/_config.yml index f70093ee624..c2f26720623 100644 --- a/_config.yml +++ b/_config.yml @@ -109,9 +109,9 @@ social: # Home Assistant release details current_major_version: 2023 -current_minor_version: 9 -current_patch_version: 3 -date_released: 2023-09-24 +current_minor_version: 10 +current_patch_version: 0 +date_released: 2023-10-04 # 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/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index 3fb6088debf..daecab16041 100644 --- a/source/_integrations/aftership.markdown +++ b/source/_integrations/aftership.markdown @@ -9,6 +9,7 @@ ha_domain: aftership ha_platforms: - sensor ha_integration_type: integration +ha_config_flow: true --- The `aftership` platform allows one to track deliveries by [AfterShip](https://www.aftership.com), a service that supports 490+ couriers worldwide. To use the tracking API functionality, the Essentials plan is required. This plan includes 100 shipments per month. There are various paid-for tiers after that. diff --git a/source/_integrations/airthings_ble.markdown b/source/_integrations/airthings_ble.markdown index 8461db06dc1..a3ab479ed66 100644 --- a/source/_integrations/airthings_ble.markdown +++ b/source/_integrations/airthings_ble.markdown @@ -8,6 +8,7 @@ ha_release: '2022.11' ha_iot_class: Local Polling ha_codeowners: - '@vincegio' + - '@LaStrada' ha_domain: airthings_ble ha_bluetooth: true ha_platforms: diff --git a/source/_integrations/airtouch4.markdown b/source/_integrations/airtouch4.markdown index 2660789f7fe..f11355c9548 100644 --- a/source/_integrations/airtouch4.markdown +++ b/source/_integrations/airtouch4.markdown @@ -10,6 +10,8 @@ ha_domain: airtouch4 ha_platforms: - climate ha_integration_type: integration +ha_codeowners: + - '@samsinnamon' --- The AirTouch 4 integration allows you to control Ducted Air Conditioning Systems that are using the [AirTouch 4](https://www.airtouch.net.au/airtouch/airtouch-4/) Controller. Currently, this integration only supports AirTouch 4 controllers with the Individual Temperature Control (ITC) modules. diff --git a/source/_integrations/aladdin_connect.markdown b/source/_integrations/aladdin_connect.markdown index c220ae879ca..1c2b01eb3ec 100644 --- a/source/_integrations/aladdin_connect.markdown +++ b/source/_integrations/aladdin_connect.markdown @@ -8,6 +8,7 @@ ha_iot_class: Cloud Polling ha_domain: aladdin_connect ha_platforms: - cover + - diagnostics - sensor ha_integration_type: integration ha_codeowners: diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown index 3cb1f8adcac..cb805740ad8 100644 --- a/source/_integrations/co2signal.markdown +++ b/source/_integrations/co2signal.markdown @@ -12,7 +12,9 @@ ha_platforms: - diagnostics - sensor ha_config_flow: true -ha_integration_type: integration +ha_integration_type: service +ha_codeowners: + - '@jpbede' --- The `Electricity Maps` sensor platform (formerly known as CO2Signal) queries the [Electricity Maps](https://www.electricitymaps.com/) API for the CO2 intensity of a specific region. Data can be collected for your home by using the latitude/longitude or a country code. This API uses the same data as . Not all countries/regions in the world are supported, so please consult the app to check local availability. diff --git a/source/_integrations/duotecno.markdown b/source/_integrations/duotecno.markdown index b39ddd09e51..861ea3190e7 100644 --- a/source/_integrations/duotecno.markdown +++ b/source/_integrations/duotecno.markdown @@ -13,11 +13,11 @@ ha_codeowners: - '@cereal2nd' ha_domain: duotecno ha_platforms: + - binary_sensor - climate - cover - light - switch - - binary sensor ha_integration_type: integration --- diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown index 2b82ce4896e..f1253b7371c 100644 --- a/source/_integrations/ecoforest.markdown +++ b/source/_integrations/ecoforest.markdown @@ -10,7 +10,9 @@ ha_codeowners: - '@pjanuario' ha_domain: ecoforest ha_platforms: + - number - sensor + - switch ha_integration_type: integration --- diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index d495ab855a1..6aaa850d84a 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -12,6 +12,7 @@ ha_config_flow: true ha_codeowners: - '@OttoWinter' - '@jesserockz' + - '@kbx81' - '@bdraco' ha_domain: esphome ha_zeroconf: true diff --git a/source/_integrations/fitbit.markdown b/source/_integrations/fitbit.markdown index 9e37e2afcaa..6995b7c2163 100644 --- a/source/_integrations/fitbit.markdown +++ b/source/_integrations/fitbit.markdown @@ -9,6 +9,8 @@ ha_domain: fitbit ha_platforms: - sensor ha_integration_type: integration +ha_codeowners: + - '@allenporter' --- The Fitbit sensor allows you to expose data from [Fitbit](https://fitbit.com/) to Home Assistant. diff --git a/source/_integrations/flux_led.markdown b/source/_integrations/flux_led.markdown index afb9a83edb5..faa7176ef6a 100644 --- a/source/_integrations/flux_led.markdown +++ b/source/_integrations/flux_led.markdown @@ -21,8 +21,6 @@ ha_platforms: - switch ha_codeowners: - '@icemanch' - - '@bdraco' -ha_quality_scale: platinum ha_config_flow: true ha_dhcp: true ha_integration_type: integration diff --git a/source/_integrations/homeassistant_sky_connect.markdown b/source/_integrations/homeassistant_sky_connect.markdown index ed2dbdcca34..5c9f45a03ec 100644 --- a/source/_integrations/homeassistant_sky_connect.markdown +++ b/source/_integrations/homeassistant_sky_connect.markdown @@ -8,6 +8,7 @@ ha_codeowners: - '@home-assistant/core' ha_domain: homeassistant_sky_connect ha_integration_type: hardware +ha_config_flow: true --- The Home Assistant SkyConnect integration provides hardware information for the hardware configuration page. diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 643383e652c..7d5d147de2a 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -13,6 +13,7 @@ ha_codeowners: ha_domain: honeywell ha_platforms: - climate + - diagnostics - sensor ha_integration_type: integration --- diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown index 88251d9e3a2..0aa5a09bd33 100644 --- a/source/_integrations/idasen_desk.markdown +++ b/source/_integrations/idasen_desk.markdown @@ -1,5 +1,5 @@ --- -title: IKEA IDÅSEN Desk +title: IKEA Idasen Desk description: Control and monitor your IKEA Idåsen standing desk. ha_iot_class: Local Push ha_config_flow: true @@ -11,6 +11,8 @@ ha_bluetooth: true ha_platforms: - cover ha_integration_type: integration +ha_codeowners: + - '@abmantis' --- 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. diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown index 223185dae55..a9297517183 100644 --- a/source/_integrations/islamic_prayer_times.markdown +++ b/source/_integrations/islamic_prayer_times.markdown @@ -72,4 +72,3 @@ Default: Standard (mid sunset to sunrise) Default: Shafi Method for adjusting Asr time calcuation, if not specified, it defaults to Shafi. - diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index 83adfb63c90..f7f5c29e309 100644 --- a/source/_integrations/life360.markdown +++ b/source/_integrations/life360.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@pnbruckner' ha_domain: life360 ha_platforms: + - button - device_tracker ha_integration_type: integration --- diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index 5371bc535ce..2f99c8c79f8 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -17,9 +17,6 @@ ha_platforms: - select - sensor ha_integration_type: integration -ha_codeowners: - - '@bdraco' -ha_quality_scale: platinum ha_dhcp: true --- diff --git a/source/_integrations/london_underground.markdown b/source/_integrations/london_underground.markdown index 3d7a6bff502..ffc47e7bb56 100644 --- a/source/_integrations/london_underground.markdown +++ b/source/_integrations/london_underground.markdown @@ -9,6 +9,8 @@ ha_domain: london_underground ha_platforms: - sensor ha_integration_type: integration +ha_codeowners: + - '@jpbede' --- The `london_underground` sensor will display the status of London underground lines, as well as the Overground and DLR. diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown index 5ced1b42f3d..5afc3e2c370 100644 --- a/source/_integrations/matrix.markdown +++ b/source/_integrations/matrix.markdown @@ -10,6 +10,8 @@ ha_domain: matrix ha_platforms: - notify ha_integration_type: integration +ha_codeowners: + - '@PaarthShah' --- This integration allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. diff --git a/source/_integrations/medcom_ble.markdown b/source/_integrations/medcom_ble.markdown index d2d44bdd26c..668520810ff 100644 --- a/source/_integrations/medcom_ble.markdown +++ b/source/_integrations/medcom_ble.markdown @@ -34,4 +34,4 @@ To limit the load on the Bluetooth radio on the Home Assistant side, the integra ## Sensors -This integration adds a counts-per-minute ("CPM") sensor for each detected Inspector BLE device. See the Inspector BLE manual for how to convert this CPM reading into another unit if desired, which can be done via a custom [template sensor](integrations/template) \ No newline at end of file +This integration adds a counts-per-minute ("CPM") sensor for each detected Inspector BLE device. See the Inspector BLE manual for how to convert this CPM reading into another unit if desired, which can be done via a custom [template sensor](integrations/template) diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 2ff756a62b0..11c3825cc03 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -6,9 +6,7 @@ ha_category: ha_release: pre 0.7 ha_iot_class: Local Polling ha_codeowners: - - '@adamchengtkc' - '@janiversen' - - '@vzahradnik' ha_domain: modbus ha_platforms: - binary_sensor diff --git a/source/_integrations/myq.markdown b/source/_integrations/myq.markdown index 560fc428e26..38eddb81660 100644 --- a/source/_integrations/myq.markdown +++ b/source/_integrations/myq.markdown @@ -10,6 +10,7 @@ ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@ehendrix23' + - '@Lash-L' ha_domain: myq ha_homekit: true ha_platforms: diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 105671d6b92..4cae5a00aba 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -17,4 +17,4 @@ ha_integration_type: integration The `nextbus` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from [NextBus](https://www.nextbus.com), which provides real time transit data for a number of transit authorities. -{% include integrations/config_flow.md %} \ No newline at end of file +{% include integrations/config_flow.md %} diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index 28682559396..02574e6e9a5 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -4,9 +4,9 @@ description: Instructions on how to integrate Renson Endura Delta sensors into H ha_category: - Binary Sensor - Button - - Sensor - - Number - Fan + - Number + - Sensor ha_release: 2023.7 ha_iot_class: Local Polling ha_config_flow: true @@ -16,9 +16,9 @@ ha_domain: renson ha_platforms: - binary_sensor - button - - sensor - - number - fan + - number + - sensor ha_integration_type: integration --- diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index b0bcea17830..1b9a13dec44 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -2,9 +2,9 @@ title: Roborock description: Instructions on how to integrate Roborock vacuums into Home Assistant ha_category: + - Binary Sensor - Number - Select - - Binary Sensor - Sensor - Switch - Time @@ -17,9 +17,9 @@ ha_codeowners: - '@Lash-L' ha_domain: roborock ha_platforms: + - binary_sensor - diagnostics - number - - binary_sensor - select - sensor - switch diff --git a/source/_integrations/ruckus_unleashed.markdown b/source/_integrations/ruckus_unleashed.markdown index ba77a7ad606..970bf2232fa 100644 --- a/source/_integrations/ruckus_unleashed.markdown +++ b/source/_integrations/ruckus_unleashed.markdown @@ -7,8 +7,9 @@ ha_release: 0.117 ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - - '@gabe565' - '@lanrat' + - '@ms264556' + - '@gabe565' ha_domain: ruckus_unleashed ha_platforms: - device_tracker diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index e14caf3600d..ddd213ae8f3 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -9,6 +9,7 @@ ha_config_flow: true ha_quality_scale: silver ha_codeowners: - '@frenck' + - '@joostlek' ha_domain: spotify ha_zeroconf: true ha_platforms: diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 22bfc112342..32b8039342e 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -1,5 +1,5 @@ --- -title: SwitchBot +title: SwitchBot Bluetooth description: Instructions on how to set up SwitchBot Devices. ha_category: - Binary Sensor diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown index be4fbbbcc12..5a2669680cc 100644 --- a/source/_integrations/system_bridge.markdown +++ b/source/_integrations/system_bridge.markdown @@ -13,10 +13,12 @@ ha_domain: system_bridge ha_quality_scale: silver ha_platforms: - binary_sensor + - notify - sensor ha_zeroconf: true -ha_integration_type: integration +ha_integration_type: device --- + [System Bridge](https://system-bridge.timmo.dev) is an application that runs on your local machine to share system information via its API/WebSocket. You can also send commands to the device such as opening a URL or sending keyboard keypresses. ## Prerequisites ### Version diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index 6f3d6675d6e..be1bc87f931 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -11,6 +11,7 @@ ha_domain: todoist ha_platforms: - calendar ha_integration_type: integration +ha_config_flow: true --- This platform allows you to connect to your [Todoist Projects](https://todoist.com) as [calendar](/integrations/calendar/) entities. A calendar entity will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index 53bec3d66d1..55372e82287 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -5,12 +5,14 @@ ha_category: - Binary Sensor - Utility ha_release: 0.28 -ha_iot_class: Local Push +ha_iot_class: Calculated ha_quality_scale: internal ha_domain: trend ha_platforms: - binary_sensor ha_integration_type: integration +ha_codeowners: + - '@jpbede' --- The `trend` platform allows you to create sensors which show the trend of diff --git a/source/_integrations/twinkly.markdown b/source/_integrations/twinkly.markdown index 5ae2074a4c7..9fa2cd95a1b 100644 --- a/source/_integrations/twinkly.markdown +++ b/source/_integrations/twinkly.markdown @@ -10,7 +10,9 @@ ha_iot_class: Local Polling ha_codeowners: - '@dr1rrb' - '@Robbie1221' + - '@Olen' ha_platforms: + - diagnostics - light ha_dhcp: true ha_integration_type: integration diff --git a/source/_integrations/twitch.markdown b/source/_integrations/twitch.markdown index 5c810b4631b..f7be57a6554 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -11,6 +11,7 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@joostlek' +ha_config_flow: true --- The Twitch integration will allow you to monitor [Twitch](https://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index d42f794c171..5774e108376 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -14,6 +14,7 @@ ha_platforms: - sensor ha_codeowners: - '@garbled1' + - '@jhollowe' ha_config_flow: true ha_integration_type: integration --- diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index 020021a5a2b..d3fa2ed9664 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -14,7 +14,6 @@ ha_iot_class: Cloud Polling ha_domain: verisure ha_codeowners: - '@frenck' - - '@niro1987' ha_platforms: - alarm_control_panel - binary_sensor diff --git a/source/_integrations/versasense.markdown b/source/_integrations/versasense.markdown index 4e906c65d1d..6703b7cf3a3 100644 --- a/source/_integrations/versasense.markdown +++ b/source/_integrations/versasense.markdown @@ -9,7 +9,7 @@ ha_category: - Switch ha_iot_class: Local Polling ha_codeowners: - - '@flamm3blemuff1n' + - '@imstevenxyz' ha_domain: versasense ha_platforms: - sensor diff --git a/source/_integrations/vodafone_station.markdown b/source/_integrations/vodafone_station.markdown index 54abb726f15..bcd6268da59 100644 --- a/source/_integrations/vodafone_station.markdown +++ b/source/_integrations/vodafone_station.markdown @@ -14,7 +14,6 @@ ha_platforms: - button - device_tracker - sensor -ha_ssdp: false ha_integration_type: integration --- diff --git a/source/_integrations/waqi.markdown b/source/_integrations/waqi.markdown index 421cfbba469..80f4e750057 100644 --- a/source/_integrations/waqi.markdown +++ b/source/_integrations/waqi.markdown @@ -6,11 +6,12 @@ ha_category: ha_release: 0.34 ha_iot_class: Cloud Polling ha_codeowners: - - '@andrey-git' + - '@joostlek' ha_domain: waqi ha_platforms: - sensor ha_integration_type: integration +ha_config_flow: true --- The `waqi` sensor platform will query [World Air Quality Index](https://aqicn.org/city/beijing/) service to check AQI value for a specific set of locations. The resulting indexes will be added to the Home Assistant as sensor outputs. diff --git a/source/_integrations/weatherkit.markdown b/source/_integrations/weatherkit.markdown index f280a8f7235..e727fc57986 100644 --- a/source/_integrations/weatherkit.markdown +++ b/source/_integrations/weatherkit.markdown @@ -3,8 +3,8 @@ title: Apple WeatherKit description: Instructions on how to set up Apple WeatherKit with Home Assistant. ha_category: - Weather -ha_release: "2023.10" -ha_iot_class: "Cloud Polling" +ha_release: '2023.10' +ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@tjhorner' diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 5da73dc9799..1ec754681fd 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -9,6 +9,7 @@ ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@vangorra' + - '@joostlek' ha_domain: withings ha_platforms: - binary_sensor diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown new file mode 100644 index 00000000000..cc98551b044 --- /dev/null +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -0,0 +1,389 @@ +--- +layout: post +title: "2023.10: Beta release notes" +description: "The beta release notes for Home Assistant 2023.10" +date: 2023-09-27 00:00:00 +date_formatted: "October 4, 2023" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2023-10/social.png +--- + + + + + +These are the beta release notes for Home Assistant Core 2023.10 (and is thus a +work in progress). + +If you encounter any issues with the beta release, please report them on GitHub: + +- Issues with integrations, automations and such (Core related):
+ +- Issues with the frontend/UI/dashboards:
+ +- Issues with the documentation:
+ + +Please be sure to include the beta version you are running in the issue +version field (not title), so we can classify your issue correctly. + +Issues introduced in the beta are processed with priority. + +--- + + + +Home Assistant Core 2023.10! 🎉 + +Thanks for helping out testing the beta! ❤️ + +Enjoy the (beta) release! + + + +- [A beautiful updated logo!](#a-beautiful-updated-logo) +- [New tile features for climate](#new-tile-features-for-climate) +- [Tile card select feature](#tile-card-select-feature) +- [Map entity markers options](#map-entity-markers-options) +- [Password managers and Home Assistant](#password-managers-and-home-assistant) +- [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) +- [Breaking changes](#breaking-changes) +- [All changes](#all-changes) + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=-GDonruFfKc) +4 October 2023, at 12:00 PDT / 21:00 CEST! + + + +## A beautiful updated logo! + +In case you've missed it, we have refreshed the Home Assistant logo! 🤩 + +The new Home Assistant logo on a gray background. + +This was done for the [10th anniversary of Home Assistant](/blog/2023/09/17/10-years-home-assistant/), and you can [read all about this iteration in this blog post](/blog/2023/09/17/a-refreshed-logo-for-home-assistant/). + +You will start seeing this logo in many more places in the upcoming weeks, but, it is already included this release! + +## New tile features for climate + +Last release, we added [lots of new features for the Tile card](/blog/2023/09/06/release-20239/#lots-of-new-tile-features), +including features specifically for controlling your climate devices. This release, we are adding even more! + +[@Weissnix4711] contributed a feature that allows you to add buttons for the presets of your climate device to the tile card. + +

+ +Temporary screenshot that needs to be replaced. +

+ +[@piitaya] took it a step further and added the ability to select which presets you want to show, and allow showing them in a dropdown list instead of series of buttons. + +

+ +Temporary screenshot that needs to be replaced. +

+ +[@piitaya]: https://github.com/piitaya +[@Weissnix4711]: https://github.com/Weissnix4711 + +## Tile card select feature + +But there is more goodness for the Tile card this release. [@piitaya] added a select feature to the tile card, allowing you to select an option from a list of options. + +This feature can be used for any `select` entity, but also for your dropdown helpers! (also known as `input_select` entities). + +

+ +Temporary screenshot that needs to be replaced. +

+ +## Map entity markers options + +The [map card](/dashboards/map/), received new options for your entity markers that are shown on the map. + +For example, you can now choose if you want the entity name to be rendered on +the map, or the entity state but you could also override the name all together. +You can now also exclude entities to be not taking into account when centering +the map. + +

+ +Temporary screenshot that needs to be replaced. +

+ +## Password managers and Home Assistant + +There has been a long standing issue with using password managers with the Home Assistant login. +This release addresses this issue: + +

+ +Temporary screenshot that needs to be replaced. +

+ +## Other noteworthy changes + +**Note**: Changes processed up to PR 100967 + +There are many more improvements in this release; here are some of the other +noteworthy changes this release: + +- If you are using [ESPHome], you will notice much smaller Home Assistant + backups when you have [the latest version] installed! +- The [HomeKit Bridge] integration now support media receivers! Thanks, [@bdraco]! +- [@Lash-L] keeps extending the [Roborock] integration. + In this release, water and last clean sensors have been added. Sweet! +- [Withings] received lots of love this release, thanks [@joostlek]! It is now + easier to set up, and now also works with the [Home Assistant Cloud] webhooks + for push updates! +- [@allenporter] added calendar support to the [Rain Bird](/integrations/rainbird) + integration, allowing you to see your irrigation schedule in Home Assistant! + Nice! +- The [System Bridge] integration now supports notifications! Thanks, [@timmo001]! +- [@alexyao2015] added a button to [Life360] to trigger a poll to update the + location information. Cool! + +To process: + +- [Add an image fit mode to hui-image and picture-entity-card](https://github.com/home-assistant/frontend/pull/17959) + +[@alexyao2015]: https://github.com/alexyao2015 +[Life360]: /integrations/life360 +[@timmo001]: https://github.com/timmo001 +[System Bridge]: /integrations/system_bridge +[Home Assistant Cloud]: https://www.nabucasa.com +[@allenporter]: https://github.com/allenporter +[@Lash-L]: https://github.com/Lash-L +[Roborock]: /integrations/roborock +[@bdraco]: https://github.com/bdraco +[@joostlek]: https://github.com/joostlek +[ESPHome]: https://esphome.io +[HomeKit Bridge]: /integrations/homekit +[the latest version]: https://esphome.io/changelog/2023.9.0.html#esphome-2023-9-0-27th-september-2023 +[Withings]: /integrations/withings + +## New integrations + +We welcome the following new integrations in this release: + +- **[Apple WeatherKit]**, added by [@tjhorner]
+ Track the weather using Apple's WeatherKit API. +- **[Ecoforest]**, added by [@pjanuario]
+ Monitor and control your Ecoforest fireplace. +- **[IKEA IDÅSEN Desk]**, added by [@abmantis]
+ Connect and control the height of your IKEA IDÅSEN motorized desk. +- **[Medcom Bluetooth]**, added by [@elafargue]
+ Integrates you Medcom radiation monitors. +- **[Private BLE Device]**, added by [@Jc2k]
+ Track your BLE devices that change their MAC address frequently. +- **[SwitchBot Cloud]**, added by [@SeraphicRav]
+ Control your SwitchBot devices using the SwitchBot Cloud API. +- **[WeatherFlow]**, added by [@jeeftor]
+ Integrate your WeatherFlow Tempest Weather System. + +This release also has a new virtual integration. Virtual integrations are stubs that are handled by other (existing) integrations to help with findability. The following virtual integration has been added: + +- **[Enmax Energy]** provided by [Opower] + +[@abmantis]: https://github.com/abmantis +[@elafargue]: https://github.com/elafargue +[@Jc2k]: https://github.com/Jc2k +[@jeeftor]: https://github.com/jeeftor +[@pjanuario]: https://github.com/pjanuario +[@SeraphicRav]: https://github.com/SeraphicRav +[@tjhorner]: https://github.com/tjhorner +[Apple WeatherKit]: /integrations/weatherkit +[Ecoforest]: /integrations/ecoforest +[Enmax Energy]: /integrations/enmax +[IKEA IDÅSEN Desk]: /integrations/idasen_desk +[Medcom Bluetooth]: /integrations/medcom_ble +[Opower]: /integrations/opower +[Private BLE Device]: /integrations/private_ble_device +[SwitchBot Cloud]: /integrations/switchbot_cloud +[WeatherFlow]: /integrations/weatherflow + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[AfterShip]**, done by [@joostlek] +- **[Color extractor]**, done by [@joostlek] +- **[Hunter Hydrawise]**, done by [@dknowles2] +- **[NextBus]**, done by [@ViViDboarder] +- **[Todoist]**, done by [@allenporter] +- **[Twitch]**, done by [@joostlek] +- **[World Air Quality Index (WAQI)]**, done by [@joostlek] + +[@allenporter]: https://github.com/allenporter +[@dknowles2]: https://github.com/dknowles2 +[@joostlek]: https://github.com/joostlek +[@ViViDboarder]: https://github.com/ViViDboarder +[Aftership]: /integrations/aftership +[Color extractor]: /integrations/color_extractor +[Hunter Hydrawise]: /integrations/hydrawise +[NextBus]: /integrations/nextbus +[Todoist]: /integrations/todoist +[Twitch]: /integrations/twitch +[World Air Quality Index (WAQI)]: /integrations/waqi + +## 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. + +## Breaking changes + +**Note**: Breaking changes processed up to PR 100959 + +{% details "HomeKit Bridge" %} + +The HomeKit integration now supports media player receivers. HomeKit expects +receivers to be paired in accessory mode. Existing receivers that were paired +in bridge mode should be re-added in [accessory mode](/integrations/homekit/#accessory-mode). + +([@bdraco] - [#100717]) ([documentation](/integrations/homekit)) + +[@bdraco]: https://github.com/bdraco +[#100717]: https://github.com/home-assistant/core/pull/100717 + +{% enddetails %} + +{% details "Modbus" %} + +The `close_comm_on_error` configuration is no optional, sockets will always +be closed on error. Therefore, the `close_comm_on_error` is now deprecated, +and will be removed in Home Assistant 2024.3. + +([@janiversen] - [#99946]) ([documentation](/integrations/modbus)) + +[@janiversen]: https://github.com/janiversen +[#99946]: https://github.com/home-assistant/core/pull/99946 + +{% enddetails %} + +{% details "MQTT" %} + +An MQTT lock with a configured state topic will initialize with state +`unknown` instead of state `unlocked` unless the lock is set to optimistic mode. + +MQTT locks set to optimistic mode will still be initialized with +state `unlocked`. You should check if your automations are affected. + +([@jbouwh] - [#100943]) ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#100943]: https://github.com/home-assistant/core/pull/100943 + +{% enddetails %} + +{% details "NZBGet" %} + +The option to set a custom scan interval in NZBGet via configuring the entry +is removed. The update interval is now every 5 seconds. + +If you want to restore the custom scan interval behavior, +please checkout [the `homeassistant.update_entity` service](/common-tasks/general/#defining-a-custom-polling-interval). + +([@joostlek] - [#98869]) ([documentation](/integrations/nzbget)) + +[@joostlek]: https://github.com/joostlek +[#98869]: https://github.com/home-assistant/core/pull/98869 + +{% enddetails %} + +{% details "OpenTherm Gateway" %} + +Some of the older binary sensors and sensors from OpenTherm gateway have been +deprecated since January 2021. They have now been removed. Please use +the new binary sensors and sensors that have been created since. + +([@joostlek] - [#99712]) ([documentation](/integrations/opentherm_gw)) + +[@joostlek]: https://github.com/joostlek +[#99712]: https://github.com/home-assistant/core/pull/99712 + +{% enddetails %} + +{% details "Pentair ScreenLogic" %} + +Some entity names have changed. The integration will migrate old entities +to new names/ids. You may have to manually update old entities used +in, for example, your dashboards. + +Invalid entities such as "Saturation Index" are removed +if the required equipment is not configured. + +([@dieselrabbit] - [#92475]) ([documentation](/integrations/screenlogic)) + +[@dieselrabbit]: https://github.com/dieselrabbit +[#92475]: https://github.com/home-assistant/core/pull/92475 + +{% enddetails %} + +{% details "Supervisor" %} + +The default name given to backups created with the `hassio.full_backup` +and `hassio.partial_backup` services is no longer the UTC date and time the +backup was initiated (`%Y-%m-%d %H:%M:%S`) but instead the local date and +time the backup was initiated (`%Y-%m-%d %H:%M:%S`). + +([@jpbede] - [#100959]) ([documentation](/integrations/hassio)) + +[@jpbede]: https://github.com/jpbede +[#100959]: https://github.com/home-assistant/core/pull/100959 + +{% enddetails %} + +{% details "Z-Wave" %} + +Multiple websocket commands have been renamed based on [this change in Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/getting-started/migrating-to-v12?id=renamed-network-heal-to-rebuild-routes). + +With this release, you will need to update your zwave-js-server instance. +You must use zwave-js-server `1.32.0` or greater (schema `32`). + + - If you use the Z-Wave JS add-on, you need at least version `0.1.91`. + - If you use the Z-Wave JS UI add-on, you need at least version `2.0.0`. + - If you use the Z-Wave JS UI Docker container, you need at least version `9.0.0`. + - If you run your own Docker container or some other installation method, + you will need to update your zwave-js-server instance to at least `1.32.0`. + +([@raman325] - [#100833]) ([documentation](/integrations/zwave_js)) + +[@raman325]: https://github.com/raman325 +[#100833]: https://github.com/home-assistant/core/pull/100833 + +{% 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: + +- [New way of excluding state attributes from recording](https://developers.home-assistant.io/blog/2023/09/20/excluding-state-attributes-from-recording) +- [The websocket command entity/source has been modified](https://developers.home-assistant.io/blog/2023/09/12/ws-entity-source-simplified/) + +[devblog]: https://developers.home-assistant.io/blog/ + +## 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.10](/changelogs/core-2023.10) \ No newline at end of file diff --git a/source/changelogs/core-2023.10.markdown b/source/changelogs/core-2023.10.markdown new file mode 100644 index 00000000000..cbd7f78a122 --- /dev/null +++ b/source/changelogs/core-2023.10.markdown @@ -0,0 +1,1816 @@ +--- +title: Full changelog for Home Assistant Core 2023.10 +description: Detailed changelog for the Home Assistant Core 2023.10 release +replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ +--- + +These are all the changes included in the Home Assistant Core 2023.10 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2023/09/27/release-202310/). + +## All changes + +- Bump version to 2023.10.0dev0 ([@joostlek] - [#99349]) +- Add explicit test of template config entry setup ([@emontnemery] - [#99345]) +- Revert "Remove the virtual integration for ultraloq" ([@b-uwe] - [#99302]) +- Minor improvement in tests of hardware integrations ([@emontnemery] - [#99361]) +- Move octoprint coordinator to its own file ([@jpbede] - [#99359]) +- Escape core version [ci] ([@cdce8p] - [#99364]) +- Collapse supported features list in Deconz ([@joostlek] - [#99233]) +- Address late review for bsblan ([@jpbede] - [#99360]) +- Add entity translations to Mill ([@joostlek] - [#96541]) +- Use shorthand attributes in iCloud ([@joostlek] - [#99390]) +- Move tankerkoenig coordinator and base entity to its own file ([@jpbede] - [#99416]) +- Add @kbx81 as esphome codeowner ([@kbx81] - [#99427]) +- Use shorthand attributes in Isy994 ([@joostlek] - [#99395]) +- Update google-nest-sdm to 3.0.2 ([@allenporter] - [#99175]) +- Move airnow coordinator to its own file ([@jpbede] - [#99423]) +- Use shorthand attributes in Insteon ([@joostlek] - [#99392]) +- Use shorthand attributes in iZone ([@joostlek] - [#99397]) +- Discover more power and energy sensors in fibaro integration ([@rappenze] - [#98253]) +- Turn off Mill heaters using local API ([@ricmik] - [#99348]) +- Use snapshot assertion for netatmo diagnostics test ([@jpbede] - [#99159]) +- Avoid linear search of MQTT SUPPORTED_COMPONENTS ([@bdraco] - [#99459]) +- Refactor MQTT discovery to avoid creating closure if hash already in discovery_pending_discovered ([@bdraco] - [#99458]) +- Reduce overhead to process and publish MQTT messages ([@bdraco] - [#99457]) +- Freeze time for MQTT sensor expire tests ([@jbouwh] - [#99496]) +- Use shorthand attributes in Hunterdouglas powerview ([@joostlek] - [#99386]) +- Change matrix component to use matrix-nio instead of matrix_client ([@PaarthShah] - [#72797]) +- Support tracking private bluetooth devices ([@Jc2k] - [#99465]) +- Use shorthand attributes in hlk_sw16 ([@joostlek] - [#99383]) +- Don't compile missing statistics when running tests ([@emontnemery] - [#99446]) +- Switch mqtt to use async_call_later where possible ([@bdraco] - [#99486]) +- Speed up calls to the all states api ([@bdraco] - [#99462]) +- Switch isy994 to use async_call_later ([@bdraco] - [#99487]) +- Rework on mqtt certificate tests ([@jbouwh] - [#99503]) +- Code cleanup for nest device info ([@allenporter] - [#99511]) +- Improve lingering timer checks ([@bdraco] - [#99472]) +- Motion blinds duplication reduction using entity baseclass ([@starkillerOG] - [#99444]) +- Motion blinds add translations ([@starkillerOG] - [#99078]) +- Add long-term statistics to BMW sensors ([@rikroe] - [#99506]) +- Reduce overhead to retry config entry setup ([@bdraco] - [#99471]) +- Add sensors to private_ble_device ([@Jc2k] - [#99515]) +- Fix zha test RuntimeWarning ([@cdce8p] - [#99519]) +- Update pytest warning filter ([@cdce8p] - [#99521]) +- Add suggest_display_precision to private_ble_device ([@Jc2k] - [#99529]) +- Refactor async_call_at and async_call_later event helpers to avoid creating closures ([@bdraco] - [#99469]) +- Handle gracefully when unloading apcupsd config entries ([@yuxincs] - [#99513]) +- Reduce Bluetooth coordinator/processor overhead ([@bdraco] - [#99526]) +- Change calculation methods to a fixed list ([@engrbm87] - [#99535]) +- Speed up fetching states by domain ([@bdraco] - [#99467]) +- Rename nest test_sensor_sdm.py to test_sensor.py ([@allenporter] - [#99512]) +- Allow glances entries with same IP but different ports ([@engrbm87] - [#99536]) +- Make bond BPUP callback a HassJob ([@bdraco] - [#99470]) +- Make validator for modbus table controlled ([@janiversen] - [#99092]) +- Remove nest legacy service descriptions and translations ([@allenporter] - [#99510]) +- Fix tolo test warning ([@cdce8p] - [#99555]) +- Fix sql test warning ([@cdce8p] - [#99556]) +- Use shorthand attributes for Heos ([@joostlek] - [#99344]) +- Add strict typing to glances ([@engrbm87] - [#99537]) +- Move static shorthand devolo attributes outside of constructor ([@joostlek] - [#99234]) +- Remove unused attributes from Econet ([@joostlek] - [#99242]) +- Use shorthand attributes in Home connect ([@joostlek] - [#99385]) +- Use shorthand attributes for DLNA dmr ([@joostlek] - [#99236]) +- Move london underground coordinator to its own file ([@jpbede] - [#99550]) +- Use shorthand attributes in Laundrify ([@joostlek] - [#99586]) +- Use shorthand attributes in LCN ([@joostlek] - [#99587]) +- Use shorthand attributes in Juicenet ([@joostlek] - [#99575]) +- Use shorthand attributes in Kulersky ([@joostlek] - [#99583]) +- Use shorthand attributes in Keenetic ([@joostlek] - [#99577]) +- Add loader.async_get_loaded_integration ([@emontnemery] - [#99440]) +- Use `CONF_SALT` correctly in config_flow validation ([@engrbm87] - [#99597]) +- Use shorthand attributes in Lyric ([@joostlek] - [#99593]) +- Use shorthand attributes in Motion eye ([@joostlek] - [#99596]) +- Use shorthand attributes in Nanoleaf ([@joostlek] - [#99601]) +- Use shorthand attributes in Mutesync ([@joostlek] - [#99600]) +- Bumb python-homewizard-energy to 2.1.0 ([@DCSBL] - [#99598]) +- Bump simplepush api to 2.2.3 ([@engrbm87] - [#99599]) +- Remove default state from Nibe ([@joostlek] - [#99611]) +- Use shorthand attributes in Nest ([@joostlek] - [#99606]) +- Use shorthand attributes in Octoprint ([@joostlek] - [#99623]) +- Remove slugify from tomorrowio unique id ([@joostlek] - [#99006]) +- Move variables out of constructor in Nobo hub ([@joostlek] - [#99617]) +- Move variables out of constructor in nightscout ([@joostlek] - [#99612]) +- Speed up responding to states being polled via API ([@bdraco] - [#99621]) +- Move non legacy stt models out from legacy module ([@MartinHjelmare] - [#99582]) +- Fix Bluetooth passive update processor dispatching updates to unchanged entities ([@bdraco] - [#99527]) +- Improve performance of google assistant supported checks ([@bdraco] - [#99454]) +- Use shorthand attributes for Picnic ([@joostlek] - [#99633]) +- Bump actions/checkout from 3.6.0 to 4.0.0 (@dependabot - [#99651]) +- Use shorthand attributes in Nuheat ([@joostlek] - [#99618]) +- Use shorthand attributes in Openhome ([@joostlek] - [#99629]) +- Use shorthand attributes in Kodi ([@joostlek] - [#99578]) +- Use shorthand attributes in Konnected ([@joostlek] - [#99580]) +- Use shorthand attributes in Kostal Plenticore ([@joostlek] - [#99581]) +- Use shorthand attributes in Logi circle ([@joostlek] - [#99592]) +- Use shorthand attributes in NZBGet ([@joostlek] - [#99622]) +- Use shorthand attributes in Omnilogic ([@joostlek] - [#99626]) +- Use shorthand attributes in Ondilo ico ([@joostlek] - [#99627]) +- Use shorthand attributes in Neato ([@joostlek] - [#99605]) +- Replace lambda with attrgetter in hassfest ([@bdraco] - [#99662]) +- Replace lambda with attrgetter in device_tracker device_trigger ([@bdraco] - [#99663]) +- Replace lambda with itemgetter in script/gen_requirements_all.py ([@bdraco] - [#99661]) +- Replace lambda with attrgetter in homekit_controller ([@bdraco] - [#99666]) +- Use shorthand attributes for Plaato ([@joostlek] - [#99634]) +- Remove imap_email_content integration ([@jbouwh] - [#99484]) +- Replace lambda in script/gen_requirements_all.py with str.lower ([@bdraco] - [#99665]) +- Switch lambda to attrgetter in zha ([@bdraco] - [#99660]) +- Refactor dispatcher to reduce run time and memory overhead ([@bdraco] - [#99676]) +- Switch homekit config flow sorted to use itemgetter ([@bdraco] - [#99658]) +- Add codeowner for Withings ([@joostlek] - [#99681]) +- Show OTA update progress for Shelly gen2 devices ([@bieniu] - [#99534]) +- Display channel number in Bravia TV if title is not available ([@engrbm87] - [#99567]) +- Add a comment why state_class=total ([@tronikos] - [#99703]) +- Move template coordinator to its own file ([@jpbede] - [#99419]) +- Use shorthand attributes in Trend ([@jpbede] - [#99695]) +- Yellow LED controls: rename LEDs ([@c0ffeeca7] - [#99710]) +- Use loop time to set context ([@bdraco] - [#99701]) +- Fix pylint plugin test DeprecationWarning ([@cdce8p] - [#99711]) +- Revert "Remove imap_email_content integration" ([@jbouwh] - [#99713]) +- Postpone Imap_email_content removal ([@jbouwh] - [#99721]) +- Add binary_sensor to Schlage ([@dknowles2] - [#99637]) +- Fix asyncio.wait typing ([@cdce8p] - [#99726]) +- Update pre-commit to 3.4.0 ([@cdce8p] - [#99737]) +- Improve blink config_flow typing ([@cdce8p] - [#99579]) +- Update pytest-aiohttp to 1.0.5 ([@cdce8p] - [#99744]) +- Enable strict typing for Climate component ([@loopj] - [#99301]) +- Raise error on open/close failure in Aladdin Connect ([@mkmer] - [#99746]) +- Add additional fields for 3-phase UPS to nut ([@Vantomas] - [#98625]) +- Improve typing of trend component ([@jpbede] - [#99719]) +- Remove deprecated entities from OpenTherm Gateway ([@joostlek] - [#99712]) +- Use shorthand attributes in Progetti ([@joostlek] - [#99772]) +- Use shorthand attributes in Plum ([@joostlek] - [#99770]) +- Add energy meter sensors for Shelly Pro EM ([@bieniu] - [#99747]) +- Add my self as codeowner for airthings_ble ([@LaStrada] - [#99799]) +- Bump ProgettiHWSW to 0.1.3 ([@ArdaSeremet] - [#92668]) +- Add strict typing to islamic prayer times ([@engrbm87] - [#99585]) +- Use config entry ID as unique ID and remove dependency to getmac in Minecraft Server ([@elmurato] - [#97837]) +- Fix typo in TrackTemplateResultInfo ([@emontnemery] - [#99809]) +- Use shorthand attributes in Hisense ([@joostlek] - [#99355]) +- Use shorthand attributes in Plex ([@joostlek] - [#99769]) +- Update coverage to 7.3.1 ([@cdce8p] - [#99805]) +- Change AVM FRITZ!Box Call monitor sensor into an enum ([@jrieger] - [#99762]) +- Remove unused variable from rainbird ([@joostlek] - [#99824]) +- Use shorthand attributes in Sense ([@joostlek] - [#99833]) +- Use shorthand attributes in Roomba ([@joostlek] - [#99831]) +- Use shorthand attributes in SharkIQ ([@joostlek] - [#99836]) +- Use shorthand attributes in Rachio ([@joostlek] - [#99823]) +- Use shorthand attributes in Snapcast ([@joostlek] - [#99840]) +- Move shorthand attributes out of constructor in Sensibo ([@joostlek] - [#99834]) +- Move unit of temperature to descriptions in Sensibo ([@joostlek] - [#99835]) +- Use shorthand attributes in Opentherm gateway ([@joostlek] - [#99630]) +- Use shorthand attributes in Sonarr ([@joostlek] - [#99844]) +- Move shorthand attributes out of Snooz constructor ([@joostlek] - [#99842]) +- Use shorthand attributes in Ring ([@joostlek] - [#99829]) +- Use shorthand attributes in Rainforest eagle ([@joostlek] - [#99825]) +- Use str instead of string placeholders in solaredge ([@joostlek] - [#99843]) +- Bump zeroconf to 0.99.0 ([@bdraco] - [#99853]) +- Add device class and UoM in Sensibo Number entities ([@gjohansson-ST] - [#99861]) +- Renson fan ([@jimmyd-be] - [#94495]) +- Modbus scale parameter cuts decimals ([@janiversen] - [#99758]) +- Add Diagnostic platform to Aladdin Connect ([@mkmer] - [#99682]) +- Bump zeroconf to 0.102.0 ([@bdraco] - [#99875]) +- Use shorthand attributes in Telldus live ([@joostlek] - [#99887]) +- Use shorthand attributes in Tp-link Omada ([@joostlek] - [#99889]) +- Use shorthand attributes in Tradfri ([@joostlek] - [#99890]) +- Use shorthand attributes in Tado ([@joostlek] - [#99886]) +- Use shorthand attributes in Syncthru ([@joostlek] - [#99884]) +- Use shorthand attributes in Syncthing ([@joostlek] - [#99883]) +- Use shorthand attributes in Starline ([@joostlek] - [#99882]) +- Use shorthand attributes in SRP Energy ([@joostlek] - [#99881]) +- Allow exporting of `update` domain to Prometheus ([@samcrang] - [#99400]) +- Use shorthand attributes in UPB ([@joostlek] - [#99892]) +- Use shorthand attributes in Tp-link ([@joostlek] - [#99888]) +- Add more options to Islamic Prayer Times ([@alyyousuf7] - [#95156]) +- Bump actions/cache from 3.3.1 to 3.3.2 (@dependabot - [#99903]) +- Use aliases when listing pipeline languages ([@synesthesiam] - [#99672]) +- Use shorthand attributes in Wilight ([@joostlek] - [#99920]) +- Use shorthand attributes in Wolflink ([@joostlek] - [#99921]) +- Use shorthand attributes in Zerproc ([@joostlek] - [#99926]) +- Use shorthand attributes in Volumio ([@joostlek] - [#99918]) +- Refactor entity service calls to reduce complexity ([@bdraco] - [#99783]) +- Migrate elkm1 to use a dataclass for integration data ([@bdraco] - [#99830]) +- Avoid many hass.is_stopping calls in the discovery helper ([@bdraco] - [#99929]) +- Switch a few ssdp calls to use get_lower ([@bdraco] - [#99931]) +- Bump orjson to 3.9.7 ([@bdraco] - [#99938]) +- Add tests for Minecraft Server entry migration from v1 to v2 ([@elmurato] - [#99954]) +- Use device class translations for Devolo Update entity ([@joostlek] - [#99235]) +- Bump dbus-fast to 2.0.1 ([@bdraco] - [#99894]) +- Add UniFi device uptime and temperature sensors ([@Kane610] - [#99307]) +- Update black to 23.9.0 ([@cdce8p] - [#99965]) +- Add black caching [ci] ([@cdce8p] - [#99967]) +- Add zdb5100 light to zwave_js ([@Roagert] - [#97586]) +- Bump pytrafikverket to 0.3.6 ([@gjohansson-ST] - [#99869]) +- Change SSDP discovery scan interval to 10 minutes ([@bdraco] - [#99975]) +- Add config flow to WAQI ([@joostlek] - [#98220]) +- Add binary sensors to Roborock ([@Lash-L] - [#99990]) +- Deprecate CLOSE_COMM_ON_ERROR ([@janiversen] - [#99946]) +- Add entity translations to withings ([@joostlek] - [#99194]) +- Decouple Withings sensor tests from yaml ([@joostlek] - [#99691]) +- Fix late review findings in Minecraft Server ([@elmurato] - [#99865]) +- Use shorthand attributes in Vicare ([@joostlek] - [#99915]) +- Restore airtouch4 codeowner ([@joostlek] - [#99984]) +- Switch ESPHome Bluetooth to use loop.create_future() ([@bdraco] - [#100010]) +- Switch config_entries to use loop.create_future() ([@bdraco] - [#100011]) +- Use snapshot assertion in Plugwise diagnostic test ([@joostlek] - [#100008]) +- Move static attributes outside of ws66i constructor ([@joostlek] - [#99922]) +- Fix renamed code owner for Versasense ([@joostlek] - [#99976]) +- Bump screenlogicpy to v0.9.0 ([@dieselrabbit] - [#92475]) +- Add new sensors to Roborock ([@Lash-L] - [#99983]) +- Bump zeroconf to 0.103.0 ([@bdraco] - [#100012]) +- Bump aiodiscover to 1.5.1 ([@bdraco] - [#100020]) +- Add sensor entity descriptions in Minecraft Server ([@elmurato] - [#99971]) +- Add Plugwise temperature_offset number ([@bouwew] - [#100029]) +- Enable strict typing in Plugwise ([@bouwew] - [#100033]) +- Add debug message to doods ([@fender4645] - [#100002]) +- Speed up serializing event messages ([@bdraco] - [#100017]) +- Avoid json_decoder_fallback in /api/states ([@bdraco] - [#100018]) +- Update bthome-ble to 3.1.1 ([@cdce8p] - [#100042]) +- Add diagnostic platform to Honeywell ([@mkmer] - [#100046]) +- Raise HomeAssistantError/ValueError for service calls in Honeywell ([@mkmer] - [#100041]) +- Make homekit RTP/RTCP source ports more deterministic ([@vfreex] - [#99989]) +- Improve Withings config flow tests ([@joostlek] - [#99697]) +- Add device to OpenUV ([@joostlek] - [#100027]) +- Uer hass.loop.create_future() for MQTT client ([@jbouwh] - [#100053]) +- Use hass.loop.create_future() for bluetooth ([@jbouwh] - [#100054]) +- Add System Bridge notifications ([@timmo001] - [#82318]) +- Create recorder futures with loop.create_future() ([@bdraco] - [#100049]) +- Use hass.loop.create_future() in envisalink ([@jbouwh] - [#100057]) +- Remove unnecessary argument from discovergy coordinator ([@jpbede] - [#100058]) +- Address ruckus_unleashed late review ([@ms264556] - [#99411]) +- Bump aiohomekit to 3.0.3 ([@bdraco] - [#100047]) +- Add water heater support to Airzone ([@Noltari] - [#98401]) +- Add __slots__ to translation cache ([@bdraco] - [#100069]) +- Bump zeroconf to 0.104.0 ([@bdraco] - [#100068]) +- Bump flux_led to 1.0.4 ([@bdraco] - [#100050]) +- Bump tibdex/github-app-token from 1.8.0 to 1.8.2 (@dependabot - [#99434]) +- Bump dbus-fast to 2.2.0 ([@bdraco] - [#100076]) +- Add yolink siren battery entity ([@matrixd2] - [#99310]) +- Add sensors to Trafikverket Camera ([@gjohansson-ST] - [#100078]) +- Fix missed name to translation key in Sensibo ([@gjohansson-ST] - [#100080]) +- Add binary sensors to Trafikverket Camera ([@gjohansson-ST] - [#100082]) +- Fix incorrect docstring in TV Camera sensor test ([@gjohansson-ST] - [#100083]) +- Renson number entity ([@jimmyd-be] - [#99358]) +- Add unit tests for sensors Electric Kiwi ([@mikey0000] - [#97723]) +- Use shorthand attributes in ZAMG ([@joostlek] - [#99925]) +- Move smtp constants to const.py ([@engrbm87] - [#99542]) +- Add TYPE_CHECKING condition on type assertions for mqtt ([@jbouwh] - [#100107]) +- Also handle DiscovergyClientError as UpdateFailed ([@jpbede] - [#100038]) +- Update black to 23.9.1 ([@cdce8p] - [#100108]) +- Use json to store Withings test data fixtures ([@joostlek] - [#99998]) +- Decouple Withings binary sensor test from YAML ([@joostlek] - [#100120]) +- Bump pyunifiprotect to 4.20.0 ([@bdraco] - [#100092]) +- Bump zeroconf to 0.105.0 ([@bdraco] - [#100084]) +- Cleanup isinstance checks in zeroconf ([@bdraco] - [#100090]) +- UniFi streamline loading platforms ([@Kane610] - [#100071]) +- Remove AEMET daily precipitation sensor test ([@Noltari] - [#100118]) +- Fix ScrapeSensor.async_added_to_hass ([@emontnemery] - [#100125]) +- Fix inverse naming of function in Reolink ([@starkillerOG] - [#100113]) +- Guard expensive debug logging with isEnabledFor in alexa ([@bdraco] - [#100137]) +- Add Apple WeatherKit integration ([@tjhorner] - [#99895]) +- Migrate mobile_app to use json helper ([@bdraco] - [#100136]) +- Bump zeroconf to 0.107.0 ([@bdraco] - [#100134]) +- Remove code owner Verisure ([@niro1987] - [#100145]) +- Decouple Withings webhook tests from YAML ([@joostlek] - [#100143]) +- Migrate internal ZHA data to a dataclasses ([@puddly] - [#100127]) +- Bump zeroconf to 0.108.0 ([@bdraco] - [#100148]) +- Refactor discovergy config flow test to use parametrize ([@jpbede] - [#100115]) +- Split Withings common file out to their own file ([@joostlek] - [#100150]) +- Use library for condition/wind direction conversions ([@Noltari] - [#100117]) +- Let the discovergy config flow test end with create entry ([@jpbede] - [#100153]) +- Bump dbus-fast to 2.4.0 ([@bdraco] - [#100158]) +- Move airly coordinator to its own file ([@jpbede] - [#99545]) +- Add configuration flow to Todoist integration ([@allenporter] - [#100094]) +- Bump dbus-fast to 2.6.0 ([@bdraco] - [#100163]) +- Add missing AEMET wind gust speed ([@Noltari] - [#100157]) +- Add Life360 Location Update Button ([@alexyao2015] - [#99559]) +- Use shorthand attributes in Smart meter texas ([@joostlek] - [#99838]) +- Bump tibdex/github-app-token from 1.8.2 to 2.0.0 (@dependabot - [#100099]) +- Bring modbus naming in sync with standard ([@janiversen] - [#99285]) +- Remove unnecessary block use of pylint disable in components a-o ([@emontnemery] - [#100190]) +- Remove default from deprecated close_comm_on_error ([@janiversen] - [#100188]) +- Use shorthand attributes in Wiffi ([@joostlek] - [#99919]) +- Use shorthand attributes in Songpal ([@joostlek] - [#99849]) +- Use shorthand attributes in Squeezebox ([@joostlek] - [#99863]) +- Use shorthand attributes in Twinkly ([@joostlek] - [#99891]) +- Use shorthand attributes in Smarttub ([@joostlek] - [#99839]) +- Use shorthand attributes in Vera ([@joostlek] - [#99893]) +- Simplify WS command entity/source ([@emontnemery] - [#99439]) +- Remove unnecessary block use of pylint disable in onvif ([@emontnemery] - [#100194]) +- Use shorthand attribute in Bloomsky ([@joostlek] - [#100203]) +- Use shorthand attributes in geniushub sensor ([@bdraco] - [#100208]) +- Use shorthand attributes in buienradar camera ([@bdraco] - [#100205]) +- Use shorthand attributes in garadget cover ([@bdraco] - [#100207]) +- Enable asyncio debug mode in tests ([@emontnemery] - [#100197]) +- Use shorthand attributes in Isy994 ([@joostlek] - [#100209]) +- Use shorthand attributes in Point ([@joostlek] - [#100214]) +- Improve type annotations in websocket_api tests ([@emontnemery] - [#100198]) +- Use shorthand attributes in Universal ([@joostlek] - [#100219]) +- Use shorthand attributes in Yamaha Musiccast ([@joostlek] - [#100220]) +- Use shorthand attributes in SPC ([@joostlek] - [#100217]) +- Add Entity Descriptions to SMA integration ([@rklomp] - [#58707]) +- Add intial property to imap_content event data ([@jbouwh] - [#100171]) +- Use shorthand attributes in Smartthings ([@joostlek] - [#100215]) +- Remove unnecessary pylint disable in tado ([@emontnemery] - [#100196]) +- Bump homematicip_cloud to 1.0.15 ([@hahn-th] - [#99387]) +- Set TriggerBaseEntity device_class in init ([@bdraco] - [#100216]) +- Update Stream logging on EVENT_LOGGING_CHANGED ([@uvjustin] - [#99256]) +- Use more common translations ([@jrieger] - [#100135]) +- Use more shorthand attributes in huawei_lte binary_sensor ([@bdraco] - [#100211]) +- Use more shorthand properties in homematicip_cloud ([@bdraco] - [#100210]) +- Set roku media player device class in constructor ([@bdraco] - [#100225]) +- Use shorthand attributes in NWS ([@joostlek] - [#99620]) +- Update Deprecated Selector Syntax ([@SirGoodenough] - [#99308]) +- Bump sigstore/cosign-installer from 3.1.1 to 3.1.2 (@dependabot - [#99563]) +- Use short hand entity_registry_enabled_default in nws ([@bdraco] - [#100227]) +- Add entity translations to WLED ([@joostlek] - [#99056]) +- Clean up device registry for climate devices that no longer exist in Honeywell ([@mkmer] - [#100072]) +- Use short handle attributes for device class in netatmo cover ([@bdraco] - [#100228]) +- Improve typing of entity.entity_sources ([@emontnemery] - [#99407]) +- Use shorthanded attributes for MQTT cover ([@jbouwh] - [#100230]) +- Remove unnecessary block use of pylint disable in components p-z ([@emontnemery] - [#100192]) +- Introduce base class for Trafikverket camera ([@joostlek] - [#100114]) +- Set dynalite cover device class in constructor ([@bdraco] - [#100232]) +- Clean up variables in Soundtouch ([@joostlek] - [#99859]) +- Improve Entity._suggest_report_issue ([@emontnemery] - [#100204]) +- Remove the uniqueid from todoist ([@allenporter] - [#100206]) +- Add meteoclimatic sensor statistics ([@Noltari] - [#100186]) +- Support for Insteon 4 button KeypadLink device ([@teharris1] - [#100132]) +- Remove restore functionality in Speedtest.net ([@joostlek] - [#96950]) +- User shorthand attr for mqtt alarm_control_panel ([@jbouwh] - [#100234]) +- Use shorthand attr for mqtt assumed_state ([@jbouwh] - [#100241]) +- Add strict typing to GPSD ([@jrieger] - [#100030]) +- Upgrade ruff to 0.0.289 ([@scop] - [#100238]) +- Update ecobee zeroconf/homekit discovery ([@bdraco] - [#100091]) +- Use shorthand attributes in VLC telnet ([@joostlek] - [#99916]) +- Bump async-upnp-client to 0.35.1 ([@bdraco] - [#100248]) +- Disable always responding to all SSDP M-SEARCH requests with the root device ([@bdraco] - [#100224]) +- SamsungTV: Add unique_id for when missing (legacy models) ([@chemelli74] - [#96829]) +- Update jsonpath to 0.82.2 ([@cdce8p] - [#100252]) +- Fix pylint config warning ([@cdce8p] - [#100251]) +- Update apple_weatherkit to 1.0.2 ([@tjhorner] - [#100254]) +- Correct Venstar firmware version to use device's FW version instead of API version ([@jhollowe] - [#98493]) +- Address weatherkit late review comments ([@tjhorner] - [#100265]) +- Bump docker/login-action from 2.2.0 to 3.0.0 (@dependabot - [#100264]) +- Tweak entity/source WS command handler ([@emontnemery] - [#100272]) +- Test speedtest.net config entry lifecycle ([@joostlek] - [#100280]) +- Improve type hint in entity_registry ([@emontnemery] - [#100278]) +- Add diagnostics to Twinkly ([@Olen] - [#100146]) +- Use shorthanded attrs for yamaha_musiccast select ([@jbouwh] - [#100273]) +- Move sms coordinators to their own file ([@jpbede] - [#100276]) +- Limit waze_travel_time to 1 call every 0.5s ([@eifinger] - [#100191]) +- Use hass.loop.create_future() in zha ([@jbouwh] - [#100056]) +- Use shorthanded attrs for vera sensor ([@jbouwh] - [#100269]) +- Remove NZBGet configurable scan interval ([@joostlek] - [#98869]) +- Update syrupy to 4.5.0 ([@frenck] - [#100283]) +- Update mutagen to 1.47.0 ([@frenck] - [#100284]) +- Use shorthand attrs for xbox base_sensor ([@jbouwh] - [#100290]) +- Remove profile from Withings config flow ([@joostlek] - [#100202]) +- Use shorthand attrs in iaqualink ([@jbouwh] - [#100281]) +- Use shorthand attrs for velux ([@jbouwh] - [#100294]) +- Fix missing super async_added_to_hass in lookin ([@bdraco] - [#100296]) +- Replace StateMachine._domain_index with a UserDict ([@emontnemery] - [#100270]) +- Add options flow to Withings ([@joostlek] - [#100300]) +- Allow setting the elevation in `set_location` ([@jrieger] - [#99978]) +- Improve UserDict in device and entity registries ([@emontnemery] - [#100307]) +- Update debugpy to 1.8.0 ([@frenck] - [#100311]) +- Use shorthand attrs in template integration ([@jbouwh] - [#100301]) +- Update Roborock entity categories ([@balloob] - [#100316]) +- Remove legacy UniFi PoE client clean up ([@Kane610] - [#100318]) +- Use short hand attributes in onvif camera ([@bdraco] - [#100319]) +- Add some tests to Freebox ([@Quentame] - [#99755]) +- Bump dbus-fast to 2.7.0 ([@bdraco] - [#100321]) +- Use cached_property in entity_registry ([@bdraco] - [#100302]) +- Use snapshot assertion for nexia diagnostics test ([@jpbede] - [#100328]) +- Bump python-amcrest to 1.9.8 ([@bdraco] - [#100324]) +- Add missing sms coordinator to .coveragerc ([@jpbede] - [#100327]) +- Use cached_property in device registry ([@bdraco] - [#100309]) +- Update sentry-sdk to 1.31.0 ([@frenck] - [#100293]) +- Use shorthand atts for met_eireann ([@jbouwh] - [#100335]) +- Shorthanded attrs for met integration ([@jbouwh] - [#100334]) +- Use shorthand attributes for supla cover device class ([@bdraco] - [#100337]) +- Bump protobuf to 4.24.3 ([@bdraco] - [#100329]) +- Use shorthand attributes in saj ([@bdraco] - [#100317]) +- Bump grpcio to 1.58.0 ([@bdraco] - [#100314]) +- Make core States use cached_property ([@bdraco] - [#100312]) +- Late review for honeywell ([@mkmer] - [#100299]) +- Bump zeroconf to 0.111.0 ([@bdraco] - [#100340]) +- Use more shorthand attributes in threshold binary_sensor ([@bdraco] - [#100343]) +- Add missing __init__.py file in yardian test folder ([@h3l1o5] - [#100345]) +- Use shorthand attributes in Smappee ([@joostlek] - [#99837]) +- Add icon to GPSD ([@jrieger] - [#100347]) +- Use f-string instead of concatenation in Velux ([@joostlek] - [#100353]) +- Update awesomeversion to 23.8.0 ([@frenck] - [#100349]) +- Drop useless passing of update_method to DataUpdateCoordinator ([@emontnemery] - [#100355]) +- Update apprise to 1.5.0 ([@frenck] - [#100351]) +- Netgear cleanup ([@starkillerOG] - [#99505]) +- Change service `set_location` to use number input selectors ([@jrieger] - [#100360]) +- Remove useless timeout guards in devolo_home_network ([@Shutgun] - [#100364]) +- Extract Withings API specifics in own class ([@joostlek] - [#100363]) +- Add Netgear entity translations ([@starkillerOG] - [#100367]) +- Solve racing problem in modbus test ([@janiversen] - [#100287]) +- Use shorthand device_type attr for plaato sensors ([@jbouwh] - [#100385]) +- Short handed device class for overkiz cover ([@jbouwh] - [#100394]) +- Use shorthand attrs for tasmota ([@jbouwh] - [#100390]) +- Bump zeroconf to 0.112.0 ([@bdraco] - [#100386]) +- Remove hard coded Icon from Unifi device scanner ([@Kane610] - [#100401]) +- Remove obsolete strings from Withings ([@joostlek] - [#100396]) +- Move solarlog coordinator to own file ([@jpbede] - [#100402]) +- Reload on Withings options flow update ([@joostlek] - [#100397]) +- Avoid multiline ternary use ([@jbouwh] - [#100381]) +- Bump bleak-retry-connector to 3.2.1 ([@bdraco] - [#100377]) +- Cache entity properties that are never expected to change in the base class ([@bdraco] - [#95315]) +- Improve performance of mqtt_room ([@bdraco] - [#100408]) +- Use more shorthand attributes in hyperion ([@bdraco] - [#100213]) +- Move awair coordinators to their own file ([@jpbede] - [#100411]) +- Tweak datetime service schema ([@emontnemery] - [#100380]) +- Bump apple_weatherkit to 1.0.3 ([@tjhorner] - [#100416]) +- Move airtouch4 coordinator to its own file ([@jpbede] - [#100424]) +- Revert "Cache entity properties that are never expected to change in the base class" ([@emontnemery] - [#100422]) +- Generate withings webhook ID in config flow ([@joostlek] - [#100395]) +- Add device_address to modbus configuration ([@janiversen] - [#100399]) +- Add virtual_count == slave_count in modbus configuration ([@janiversen] - [#100398]) +- Remove state class from RainMachine TIMESTAMP sensors ([@WillCodeForCats] - [#100400]) +- Test VIRTUAL_COUNT parameter ([@janiversen] - [#100434]) +- Add test for modbus CONF_DEVICE_ADDR ([@janiversen] - [#100435]) +- Bump sense-energy to 0.12.2 ([@bdraco] - [#100459]) +- Make codespell ignore snapshots ([@joostlek] - [#100463]) +- Harden modbus against lib errors ([@janiversen] - [#100469]) +- Use shorthand attrs for device_class zwave_js sensor ([@jbouwh] - [#100414]) +- Move co2signal exceptions to their own file ([@jpbede] - [#100473]) +- Move cert_expiry coordinator to its own file ([@jpbede] - [#100472]) +- Move flipr coordinator to its own file ([@jpbede] - [#100467]) +- Move co2signal models to their own file ([@jpbede] - [#100478]) +- Move flipr base entity to its own file ([@jpbede] - [#100481]) +- Use central logger in Withings ([@joostlek] - [#100406]) +- Simplify code, due to better error catching in modbus. ([@janiversen] - [#100483]) +- Modbus 100% test coverage (again) ([@janiversen] - [#100482]) +- Add switchbot cloud integration ([@SeraphicRav] - [#99607]) +- Pass function correctly to Withings API ([@joostlek] - [#100391]) +- Avoid writing unifiprotect state when nothing has changed ([@bdraco] - [#100439]) +- Bump python-androidtv to 0.0.72 ([@kevin-kraus] - [#100441]) +- Add fan modes in Lyric integration ([@jerry0317] - [#100420]) +- Deprecate modbus parameter retry_on_empty ([@janiversen] - [#100292]) +- Added device class to speedtestdotnet sensor entities. ([@dirrgang] - [#100500]) +- Update numpy to 1.26.0 ([@cdce8p] - [#100512]) +- Bump opower to 0.0.34 ([@tronikos] - [#100501]) +- Fix huawei_lte current month up/download sensor error on delete ([@scop] - [#100506]) +- Fix full black run condition [ci] ([@cdce8p] - [#100532]) +- Add `event` platform for Shelly gen2 devices ([@bieniu] - [#99659]) +- Bump elkm1-lib to 2.2.6 ([@gwww] - [#100537]) +- Remove duplicate mobile_app client fixture ([@cdce8p] - [#100530]) +- Fix google invalid token expiry test init for UTC offsets > 0 ([@scop] - [#100533]) +- Add missing conversation service translation ([@steffenrapp] - [#100308]) +- Move co2signal coordinator to its own file ([@jpbede] - [#100541]) +- Update typing-extensions to 4.8.0 ([@cdce8p] - [#100545]) +- Update pytest warnings filter ([@cdce8p] - [#100546]) +- Adjust codeowners in modbus ([@janiversen] - [#100474]) +- Clean up lyric sensor platform ([@joostlek] - [#100495]) +- Set co2signal integration type to service ([@jpbede] - [#100543]) +- Drop codeowner for Magic Home/flux_led ([@bdraco] - [#100557]) +- Drop codeowner for LIFX ([@bdraco] - [#100556]) +- Fibaro streamline hass.data entry ([@rappenze] - [#100547]) +- Add pylint plugin to check for calls to base implementation ([@cdce8p] - [#100432]) +- Add Vodafone Station sensor platform ([@chemelli74] - [#99948]) +- Move uptimerobot coordinator to its own file ([@jpbede] - [#100558]) +- Fix lyric feedback ([@joostlek] - [#100586]) +- Change Hue zigbee connectivity sensor into an enum ([@joostlek] - [#98632]) +- Remove platform const in co2signal coordinator ([@jpbede] - [#100592]) +- Add DataUpdateCoordinator to Minecraft Server ([@elmurato] - [#100075]) +- Add Spotify code owner ([@joostlek] - [#100597]) +- Add config-flow to NextBus ([@ViViDboarder] - [#92149]) +- Call async added to hass super in Livisi ([@joostlek] - [#100446]) +- Update zeroconf discovery to use IPAddress objects to avoid conversions ([@bdraco] - [#100567]) +- Add missing translations for Shelly event type states ([@bieniu] - [#100608]) +- Clean-up Minecraft Server tests ([@elmurato] - [#100615]) +- Use is for UNDEFINED check in async_update_entry ([@bdraco] - [#100599]) +- Switch config flows use newer zeroconf methods to check IP Addresses ([@bdraco] - [#100568]) +- Add integration for IKEA Idasen Desk ([@abmantis] - [#99173]) +- Move renson coordinator to its own file ([@jpbede] - [#100610]) +- Move faa_delays coordinator to its own file ([@jpbede] - [#100548]) +- Update enphase_envoy zeroconf checks to use stdlib ipaddress methods ([@bdraco] - [#100624]) +- Update dhcp to use stdlib ipaddress methods ([@bdraco] - [#100625]) +- Avoid double lookups with data_entry_flow indices ([@bdraco] - [#100627]) +- Bump dbus-fast to 2.9.0 ([@bdraco] - [#100638]) +- Bump SQLAlchemy to 2.0.21 ([@bdraco] - [#99745]) +- Add second test device for Roborock ([@Lash-L] - [#100565]) +- Fix hkid matching in homekit_controller when zeroconf value is not upper case ([@bdraco] - [#100641]) +- Move attributes to be excluded from recording to entity classes ([@emontnemery] - [#100239]) +- Update doorbird zeroconf checks to use stdlib ipaddress methods ([@bdraco] - [#100623]) +- Avoid ConfigEntry lookups in hass.config_entries.async_entries for domain index ([@bdraco] - [#100598]) +- Bump ismartgate to 5.0.1 ([@unDemian] - [#100636]) +- Bump tibdex/github-app-token from 2.0.0 to 2.1.0 (@dependabot - [#100632]) +- Add Enmax virtual integration to Opower ([@aman207] - [#100503]) +- Clean-up Minecraft Server constants ([@elmurato] - [#100666]) +- Avoid calling extract_stack in system_log since it does blocking I/O ([@bdraco] - [#100455]) +- Add test to london underground ([@jpbede] - [#100562]) +- Add support for Levoit Vital200s purifier ([@mike391] - [#100613]) +- Fix missspelled package names ([@edenhaus] - [#100670]) +- Add Slack thread/reply support ([@FletcherAU] - [#93384]) +- Avoid redundant calls to `async_ha_write_state` in MQTT (binary) sensor ([@jbouwh] - [#100438]) +- Move definition of attributes excluded from history to entity classes ([@emontnemery] - [#100430]) +- Add ecoforest integration ([@pjanuario] - [#100647]) +- Move coolmaster coordinator to its own file ([@jpbede] - [#100425]) +- Add water shortage binary sensor ([@Lash-L] - [#100662]) +- Add last clean sensors to Roborock ([@Lash-L] - [#100661]) +- ZHA multiprotocol detected - fix typo ([@c0ffeeca7] - [#100683]) +- Remove async_process_integration_platform_for_component ([@emontnemery] - [#100680]) +- Add Renson button entity ([@jimmyd-be] - [#99494]) +- Update plugwise to v0.33.0 ([@bouwew] - [#100689]) +- ZHA multiprotocol detected message: add info ([@c0ffeeca7] - [#100686]) +- Add missing step-differentiation for the Plugwise temperature_offset ([@bouwew] - [#100654]) +- Add number platform to ecoforest ([@pjanuario] - [#100694]) +- Add additional sensors to ecoforest integration ([@pjanuario] - [#100681]) +- Avoid polling in sun sensor entities ([@bdraco] - [#100693]) +- Avoid redundant calls to `async_write_ha_state` in MQTT mqtt alarm_control_panel ([@jbouwh] - [#100691]) +- Avoid redundant calls to `async_write_ha_state` in MQTT climate & water_heater ([@jbouwh] - [#100696]) +- Assign color_mode for mqtt light as ColorMode ([@jbouwh] - [#100709]) +- Add switch platform to ecoforest integration ([@pjanuario] - [#100708]) +- Move samsung tv device class outside of constructor ([@joostlek] - [#100712]) +- Avoid redundant calls to `async_write_ha_state` in MQTT light ([@jbouwh] - [#100690]) +- Add device class to denonavr ([@DanielWeeber] - [#100711]) +- Use shorthand attrs for MQTT cover ([@jbouwh] - [#100710]) +- Reolink remove unneeded str() ([@starkillerOG] - [#100718]) +- Add more august actions ([@Olen] - [#100667]) +- Remove obsolete methods in HVV departures ([@joostlek] - [#100451]) +- Bump aiovodafone to 0.3.0 ([@chemelli74] - [#100729]) +- Only get state once for all August sensor-tests ([@Olen] - [#100721]) +- Avoid redundant calls to async_write_ha_state in mqtt cover ([@jbouwh] - [#100720]) +- Remove unneeded instance check ([@rappenze] - [#100736]) +- Improve Idasen Desk "no devices found" message ([@abmantis] - [#100742]) +- Bump screenlogicpy to v0.9.1 ([@dieselrabbit] - [#100744]) +- Fix Shelly Gen2 event get input name method ([@thecode] - [#100733]) +- Add `event` platform for Shelly gen1 devices ([@bieniu] - [#100655]) +- Correct some typo's in MQTT issue string ([@jbouwh] - [#100759]) +- Fibaro finish separation of scenes ([@rappenze] - [#100734]) +- Add myself as a fitbit codeowner ([@allenporter] - [#100766]) +- Add media extractor tests ([@joostlek] - [#100462]) +- Add tests for fitbit integration ([@allenporter] - [#100765]) +- Call async added to hass super in Flo ([@joostlek] - [#100453]) +- Fix fitbit test code owner ([@joostlek] - [#100772]) +- Bump pysensibo 1.0.35 ([@gjohansson-ST] - [#100245]) +- Refactor Sensibo tests to use snapshot ([@gjohansson-ST] - [#100775]) +- Add config flow to Hydrawise ([@dknowles2] - [#95589]) +- Bump faadelays to 2023.8.0 ([@ntilley905] - [#100700]) +- Add more test coverage for fitbit sensors ([@allenporter] - [#100776]) +- Clean up FAA Delays constants ([@ntilley905] - [#100788]) +- Update powerwall password description ([@AtomBrake] - [#100389]) +- Expose bluetooth availability tracking interval controls to integrations ([@Jc2k] - [#100774]) +- Avoid redundant calls to async_write_ha_state in mqtt device_tracker ([@jbouwh] - [#100767]) +- Remove support for excluding attributes in recorder platforms ([@emontnemery] - [#100679]) +- Allow workday sensor to be configured without a country ([@scolby33] - [#93048]) +- Preserve private ble device broadcast interval when MAC address rotates ([@Jc2k] - [#100796]) +- Bump bluetooth-data-tools to 0.12.0 ([@bdraco] - [#100794]) +- Update AEMET-OpenData to v0.4.5 ([@Noltari] - [#100818]) +- Rewrite fitbit sensor API response value parsing ([@allenporter] - [#100782]) +- Add Mysensors battery sensor ([@trnila] - [#100749]) +- Change duration for timer.start service to only change running duration ([@gjohansson-ST] - [#99628]) +- Create repairs in Workday if country or province is wrong ([@gjohansson-ST] - [#98753]) +- Bump actions/checkout from 4.0.0 to 4.1.0 (@dependabot - [#100836]) +- Add duotecno climate ([@Cereal2nd] - [#99333]) +- Address late review on Life360 button ([@alexyao2015] - [#100740]) +- Explicitly define ScreenLogic entity descriptions ([@dieselrabbit] - [#100173]) +- Add binary sensors for duotecno ([@Cereal2nd] - [#100844]) +- Allow passing a wake word ID to detect wake word ([@balloob] - [#100832]) +- Add a select entity for homekit temperature display units ([@Jc2k] - [#100853]) +- Store wakeword settings in assist pipelines ([@emontnemery] - [#100847]) +- Update pylint to 2.17.6 ([@cdce8p] - [#100849]) +- Add valve position sensor for Eve Thermo ([@Jc2k] - [#100856]) +- Provide a better model for HomeKit service entries ([@bdraco] - [#100848]) +- Add support for receivers to HomeKit ([@bdraco] - [#100717]) +- Add duration and sensitivity configuration for Eve Motion ([@Jc2k] - [#100861]) +- Rename wake_word.async_default_engine to wake_word.async_default_entity ([@emontnemery] - [#100855]) +- Simplify Minecraft Server SRV handling ([@elmurato] - [#100726]) +- Avoid redundant calls to async_write_ha_state for mqtt fan ([@jbouwh] - [#100777]) +- Avoid redundant calls to async_write_ha_state in mqtt humidifier ([@jbouwh] - [#100781]) +- Rework and added tests for mqtt event ([@jbouwh] - [#100769]) +- Fix missing device class on Velux Windows ([@Jc2k] - [#100863]) +- Avoid redundant calls to async_write_ha_state in mqtt lawn_mower ([@jbouwh] - [#100795]) +- Avoid redundant calls to async_write_ha_state in mqtt lock ([@jbouwh] - [#100802]) +- Avoid redundant calls to async_write_ha_state in mqtt number ([@jbouwh] - [#100808]) +- Avoid redundant calls to async_write_ha_state in mqtt select ([@jbouwh] - [#100809]) +- Avoid redundant calls to async_ha_write_state in mqtt switch ([@jbouwh] - [#100815]) +- Avoid redundant calls to async_ha_write_state in mqtt text ([@jbouwh] - [#100816]) +- Avoid redundant calls to async_ha_write_state mqtt update platform ([@jbouwh] - [#100819]) +- Update types packages ([@cdce8p] - [#100850]) +- Use wake word settings in assist pipeline runs ([@emontnemery] - [#100864]) +- Rework and fix mqtt siren writing state and attributes ([@jbouwh] - [#100871]) +- Handle json decode exception in co2signal ([@jpbede] - [#100857]) +- Bump led-ble to 1.0.1 ([@bdraco] - [#100873]) +- Avoid redundant calls to async_write_ha_state in mqtt vacuum ([@jbouwh] - [#100799]) +- Add tests for mqtt image ([@jbouwh] - [#100793]) +- Parametrize more co2signal config flow tests ([@jpbede] - [#100882]) +- Avoid redundant calls to async_write_ha_state in mqtt siren ([@jbouwh] - [#100813]) +- Add type hints for intent_script integration ([@jbouwh] - [#99393]) +- Bump yt-dlp to 2023.9.24 ([@joostlek] - [#100884]) +- Bump dbus-fast to 2.10.0 ([@bdraco] - [#100879]) +- Bump zeroconf to 0.114.0 ([@bdraco] - [#100880]) +- Bump async-upnp-client to 0.36.0 ([@bdraco] - [#100881]) +- Add doorbell event to google_assistant ([@jbouwh] - [#97123]) +- Simplify homekit_controller tests with snapshots ([@Jc2k] - [#100885]) +- Bump aiohomekit to 3.0.5 ([@Jc2k] - [#100886]) +- Make sure time is changed in mqtt event test ([@jbouwh] - [#100889]) +- Use webrtc-noise-gain for audio enhancement in Assist pipelines ([@synesthesiam] - [#100698]) +- Simplify fitbit unit system and conversions ([@allenporter] - [#100825]) +- Add Rain Bird irrigation calendar ([@allenporter] - [#87604]) +- Allow fetching wake word entity info ([@balloob] - [#100893]) +- Enable strict typing in london underground ([@jpbede] - [#100563]) +- Add date range to Workday ([@gjohansson-ST] - [#96255]) +- Add device info to Hydrawise ([@dknowles2] - [#100828]) +- Add coordinator to Withings ([@joostlek] - [#100378]) +- Bump pyduotecno to 2023.9.0 ([@Cereal2nd] - [#100900]) +- Rename Withings coordinator file ([@joostlek] - [#100899]) +- Rename PipelineData.pipeline_runs to pipeline_debug ([@emontnemery] - [#100907]) +- Add entity translations to Wallbox ([@joostlek] - [#99021]) +- Mark Bluetooth scanner as not scanning when watchdog timeout is reached ([@bdraco] - [#100738]) +- Add state classes to Tomorrowio sensors ([@dirrgang] - [#100692]) +- Remove duplicated call to `PipelineRun.end` from `PipelineInput.execute` ([@emontnemery] - [#100909]) +- Remove async-timeout as core dependency ([@cdce8p] - [#100912]) +- Cleanup Withings const import ([@joostlek] - [#100914]) +- Add missing input_button service translation ([@steffenrapp] - [#100387]) +- Bump aioairzone-cloud to 0.2.2 ([@Noltari] - [#100915]) +- Make Hydrawise compliant with new naming standards ([@dknowles2] - [#100921]) +- Add entity translations to SRP Energy ([@joostlek] - [#99011]) +- Handle authorization error in glances config flow ([@engrbm87] - [#100866]) +- Tweak pipeline.multiply_volume ([@emontnemery] - [#100905]) +- Update fitbit client to use asyncio ([@allenporter] - [#100933]) +- Small cleanup to isy994 extra_state_attributes ([@bdraco] - [#100935]) +- Cache the latest short term stat id for each metadata_id on each run ([@bdraco] - [#100535]) +- Bump zeroconf to 0.115.0 ([@bdraco] - [#100931]) +- Tweak test wake_word.test_init.test_detected_entity ([@emontnemery] - [#100910]) +- Add re-auth flow to glances integration ([@engrbm87] - [#100929]) +- Add body_exists to MockRequest in aiohttp util ([@joostlek] - [#100932]) +- Update frontend manifest for new icons ([@bramkragten] - [#100936]) +- Add support to remove orphan devices in AVM FRITZ!SmartHome ([@mib1185] - [#100739]) +- Add config flow to AfterShip ([@joostlek] - [#100872]) +- Rename WakeWord.ww_id to WakeWord.id ([@emontnemery] - [#100903]) +- Intialize mqtt lock in an unknown state in pessimistic mode ([@jbouwh] - [#100943]) +- Remove setting name in AnthemAV config flow ([@joostlek] - [#99148]) +- Use automatic title during config flow setup in Aurora ([@joostlek] - [#99199]) +- Call async added to hass super in Smart Meter Texas ([@joostlek] - [#100445]) +- Call async added to hass super in Risco ([@joostlek] - [#100444]) +- Use snapshot assertion for wiz diagnostics test ([@jpbede] - [#99154]) +- Call async added to hass super in Airvisual ([@joostlek] - [#100449]) +- Move fetching of sw_version for Twinkly ([@Olen] - [#100286]) +- Remove redundant initial assigment for mqtt siren ([@jbouwh] - [#100945]) +- Remove unused attribute for MQTT lawn_mower ([@jbouwh] - [#100946]) +- Abort wake word detection when assist pipeline is modified ([@emontnemery] - [#100918]) +- Bump aiovodafone to 0.3.1 ([@chemelli74] - [#100944]) +- Add Medcom Bluetooth integration ([@elafargue] - [#100289]) +- Simplify wake_word/info + improve test coverage ([@emontnemery] - [#100902]) +- Update MyQ to use python-myq 3.1.9 ([@Lash-L] - [#100949]) +- Support cloudhooks in Withings ([@joostlek] - [#100916]) +- Allow discovery config update mqtt update entities ([@jbouwh] - [#100957]) +- Move motion blinds coordinator to its own file ([@jpbede] - [#100952]) +- Cleanup redundant mqtt entity constructors ([@jbouwh] - [#100939]) +- Bump zwave-js-server-python to 0.52.0 ([@raman325] - [#100833]) +- KNX: Provide project data and parser version via websocket ([@mueli] - [#100676]) +- Add audio_settings for pipeline from ESPHome device ([@jesserockz] - [#100894]) +- Move poolsense coordinator to its own file ([@jpbede] - [#100964]) +- Bump async-upnp-client to 0.36.1 ([@StevenLooman] - [#100961]) +- Add button platform to Vodafone Station ([@chemelli74] - [#100941]) +- Bump to webrtc-noise-gain 1.2.1 for 32-bit builds ([@synesthesiam] - [#100942]) +- Add endpoint to `zwave_js_notification` event ([@raman325] - [#100951]) +- Update frontend to 20230926.0 ([@bramkragten] - [#100969]) +- Send Wyoming Detect message during wake word detection ([@synesthesiam] - [#100968]) +- Bump zha-quirks to 0.0.104 ([@TheJulianJES] - [#100975]) +- Bump ZHA dependencies ([@puddly] - [#100979]) +- Move poolsense base entity to its own file ([@jpbede] - [#100981]) +- Move EVENT_LOGGING_CHANGED to constants ([@raman325] - [#100974]) +- Automatically enable/disable zwave_js server logging in lib ([@raman325] - [#100837]) +- Deprecate Withings YAML ([@joostlek] - [#100967]) +- Add cover support to Comelit ([@chemelli74] - [#100904]) +- Add "start_irrigation" service for Yardian ([@h3l1o5] - [#100257]) +- Set device name as entity name for Comelit lights ([@joostlek] - [#100986]) +- Allow to reset an mqtt lock to an unknown state ([@jbouwh] - [#100985]) +- Add config flow to color extractor ([@joostlek] - [#100862]) +- Add trigger weather template ([@gjohansson-ST] - [#100824]) +- Add typing to poolsense ([@jpbede] - [#100984]) +- Rework UniFi websocket ([@Kane610] - [#100614]) +- Use local time instead of UTC time as default backup filenames ([@jpbede] - [#100959]) +- Use async_at_started in Withings ([@joostlek] - [#100994]) +- Exclude manifest files from youtube media extraction ([@joostlek] - [#100771]) +- Increase MyQ update interval ([@Lash-L] - [#100977]) +- Skip timestamp check of the SIA events ([@amitfin] - [#100660]) +- Add config flow to Twitch ([@joostlek] - [#93451]) +- Add test helper for cloud status updates ([@joostlek] - [#100993]) +- Add Freebox Home binary sensors ([@nachonam] - [#92196]) +- Fix additional test cases for Python 3.12 ([@cdce8p] - [#101006]) +- Implement Airzone Cloud Zone climate support ([@Noltari] - [#100792]) +- Bump dbus-fast to 2.11.0 ([@bdraco] - [#101005]) +- Add WeatherFlow integration ([@jeeftor] - [#75530]) +- Address Comelit cover late review ([@chemelli74] - [#101008]) +- Add "UV Index" to IPMA ([@tokenize47] - [#100383]) + +[#100002]: https://github.com/home-assistant/core/pull/100002 +[#100008]: https://github.com/home-assistant/core/pull/100008 +[#100010]: https://github.com/home-assistant/core/pull/100010 +[#100011]: https://github.com/home-assistant/core/pull/100011 +[#100012]: https://github.com/home-assistant/core/pull/100012 +[#100017]: https://github.com/home-assistant/core/pull/100017 +[#100018]: https://github.com/home-assistant/core/pull/100018 +[#100020]: https://github.com/home-assistant/core/pull/100020 +[#100027]: https://github.com/home-assistant/core/pull/100027 +[#100029]: https://github.com/home-assistant/core/pull/100029 +[#100030]: https://github.com/home-assistant/core/pull/100030 +[#100033]: https://github.com/home-assistant/core/pull/100033 +[#100038]: https://github.com/home-assistant/core/pull/100038 +[#100041]: https://github.com/home-assistant/core/pull/100041 +[#100042]: https://github.com/home-assistant/core/pull/100042 +[#100046]: https://github.com/home-assistant/core/pull/100046 +[#100047]: https://github.com/home-assistant/core/pull/100047 +[#100049]: https://github.com/home-assistant/core/pull/100049 +[#100050]: https://github.com/home-assistant/core/pull/100050 +[#100053]: https://github.com/home-assistant/core/pull/100053 +[#100054]: https://github.com/home-assistant/core/pull/100054 +[#100056]: https://github.com/home-assistant/core/pull/100056 +[#100057]: https://github.com/home-assistant/core/pull/100057 +[#100058]: https://github.com/home-assistant/core/pull/100058 +[#100068]: https://github.com/home-assistant/core/pull/100068 +[#100069]: https://github.com/home-assistant/core/pull/100069 +[#100071]: https://github.com/home-assistant/core/pull/100071 +[#100072]: https://github.com/home-assistant/core/pull/100072 +[#100075]: https://github.com/home-assistant/core/pull/100075 +[#100076]: https://github.com/home-assistant/core/pull/100076 +[#100078]: https://github.com/home-assistant/core/pull/100078 +[#100080]: https://github.com/home-assistant/core/pull/100080 +[#100082]: https://github.com/home-assistant/core/pull/100082 +[#100083]: https://github.com/home-assistant/core/pull/100083 +[#100084]: https://github.com/home-assistant/core/pull/100084 +[#100090]: https://github.com/home-assistant/core/pull/100090 +[#100091]: https://github.com/home-assistant/core/pull/100091 +[#100092]: https://github.com/home-assistant/core/pull/100092 +[#100094]: https://github.com/home-assistant/core/pull/100094 +[#100099]: https://github.com/home-assistant/core/pull/100099 +[#100107]: https://github.com/home-assistant/core/pull/100107 +[#100108]: https://github.com/home-assistant/core/pull/100108 +[#100113]: https://github.com/home-assistant/core/pull/100113 +[#100114]: https://github.com/home-assistant/core/pull/100114 +[#100115]: https://github.com/home-assistant/core/pull/100115 +[#100117]: https://github.com/home-assistant/core/pull/100117 +[#100118]: https://github.com/home-assistant/core/pull/100118 +[#100120]: https://github.com/home-assistant/core/pull/100120 +[#100125]: https://github.com/home-assistant/core/pull/100125 +[#100127]: https://github.com/home-assistant/core/pull/100127 +[#100132]: https://github.com/home-assistant/core/pull/100132 +[#100134]: https://github.com/home-assistant/core/pull/100134 +[#100135]: https://github.com/home-assistant/core/pull/100135 +[#100136]: https://github.com/home-assistant/core/pull/100136 +[#100137]: https://github.com/home-assistant/core/pull/100137 +[#100143]: https://github.com/home-assistant/core/pull/100143 +[#100145]: https://github.com/home-assistant/core/pull/100145 +[#100146]: https://github.com/home-assistant/core/pull/100146 +[#100148]: https://github.com/home-assistant/core/pull/100148 +[#100150]: https://github.com/home-assistant/core/pull/100150 +[#100153]: https://github.com/home-assistant/core/pull/100153 +[#100157]: https://github.com/home-assistant/core/pull/100157 +[#100158]: https://github.com/home-assistant/core/pull/100158 +[#100163]: https://github.com/home-assistant/core/pull/100163 +[#100171]: https://github.com/home-assistant/core/pull/100171 +[#100173]: https://github.com/home-assistant/core/pull/100173 +[#100186]: https://github.com/home-assistant/core/pull/100186 +[#100188]: https://github.com/home-assistant/core/pull/100188 +[#100190]: https://github.com/home-assistant/core/pull/100190 +[#100191]: https://github.com/home-assistant/core/pull/100191 +[#100192]: https://github.com/home-assistant/core/pull/100192 +[#100194]: https://github.com/home-assistant/core/pull/100194 +[#100196]: https://github.com/home-assistant/core/pull/100196 +[#100197]: https://github.com/home-assistant/core/pull/100197 +[#100198]: https://github.com/home-assistant/core/pull/100198 +[#100202]: https://github.com/home-assistant/core/pull/100202 +[#100203]: https://github.com/home-assistant/core/pull/100203 +[#100204]: https://github.com/home-assistant/core/pull/100204 +[#100205]: https://github.com/home-assistant/core/pull/100205 +[#100206]: https://github.com/home-assistant/core/pull/100206 +[#100207]: https://github.com/home-assistant/core/pull/100207 +[#100208]: https://github.com/home-assistant/core/pull/100208 +[#100209]: https://github.com/home-assistant/core/pull/100209 +[#100210]: https://github.com/home-assistant/core/pull/100210 +[#100211]: https://github.com/home-assistant/core/pull/100211 +[#100213]: https://github.com/home-assistant/core/pull/100213 +[#100214]: https://github.com/home-assistant/core/pull/100214 +[#100215]: https://github.com/home-assistant/core/pull/100215 +[#100216]: https://github.com/home-assistant/core/pull/100216 +[#100217]: https://github.com/home-assistant/core/pull/100217 +[#100219]: https://github.com/home-assistant/core/pull/100219 +[#100220]: https://github.com/home-assistant/core/pull/100220 +[#100224]: https://github.com/home-assistant/core/pull/100224 +[#100225]: https://github.com/home-assistant/core/pull/100225 +[#100227]: https://github.com/home-assistant/core/pull/100227 +[#100228]: https://github.com/home-assistant/core/pull/100228 +[#100230]: https://github.com/home-assistant/core/pull/100230 +[#100232]: https://github.com/home-assistant/core/pull/100232 +[#100234]: https://github.com/home-assistant/core/pull/100234 +[#100238]: https://github.com/home-assistant/core/pull/100238 +[#100239]: https://github.com/home-assistant/core/pull/100239 +[#100241]: https://github.com/home-assistant/core/pull/100241 +[#100245]: https://github.com/home-assistant/core/pull/100245 +[#100248]: https://github.com/home-assistant/core/pull/100248 +[#100251]: https://github.com/home-assistant/core/pull/100251 +[#100252]: https://github.com/home-assistant/core/pull/100252 +[#100254]: https://github.com/home-assistant/core/pull/100254 +[#100257]: https://github.com/home-assistant/core/pull/100257 +[#100264]: https://github.com/home-assistant/core/pull/100264 +[#100265]: https://github.com/home-assistant/core/pull/100265 +[#100269]: https://github.com/home-assistant/core/pull/100269 +[#100270]: https://github.com/home-assistant/core/pull/100270 +[#100272]: https://github.com/home-assistant/core/pull/100272 +[#100273]: https://github.com/home-assistant/core/pull/100273 +[#100276]: https://github.com/home-assistant/core/pull/100276 +[#100278]: https://github.com/home-assistant/core/pull/100278 +[#100280]: https://github.com/home-assistant/core/pull/100280 +[#100281]: https://github.com/home-assistant/core/pull/100281 +[#100283]: https://github.com/home-assistant/core/pull/100283 +[#100284]: https://github.com/home-assistant/core/pull/100284 +[#100286]: https://github.com/home-assistant/core/pull/100286 +[#100287]: https://github.com/home-assistant/core/pull/100287 +[#100289]: https://github.com/home-assistant/core/pull/100289 +[#100290]: https://github.com/home-assistant/core/pull/100290 +[#100292]: https://github.com/home-assistant/core/pull/100292 +[#100293]: https://github.com/home-assistant/core/pull/100293 +[#100294]: https://github.com/home-assistant/core/pull/100294 +[#100296]: https://github.com/home-assistant/core/pull/100296 +[#100299]: https://github.com/home-assistant/core/pull/100299 +[#100300]: https://github.com/home-assistant/core/pull/100300 +[#100301]: https://github.com/home-assistant/core/pull/100301 +[#100302]: https://github.com/home-assistant/core/pull/100302 +[#100307]: https://github.com/home-assistant/core/pull/100307 +[#100308]: https://github.com/home-assistant/core/pull/100308 +[#100309]: https://github.com/home-assistant/core/pull/100309 +[#100311]: https://github.com/home-assistant/core/pull/100311 +[#100312]: https://github.com/home-assistant/core/pull/100312 +[#100314]: https://github.com/home-assistant/core/pull/100314 +[#100316]: https://github.com/home-assistant/core/pull/100316 +[#100317]: https://github.com/home-assistant/core/pull/100317 +[#100318]: https://github.com/home-assistant/core/pull/100318 +[#100319]: https://github.com/home-assistant/core/pull/100319 +[#100321]: https://github.com/home-assistant/core/pull/100321 +[#100324]: https://github.com/home-assistant/core/pull/100324 +[#100327]: https://github.com/home-assistant/core/pull/100327 +[#100328]: https://github.com/home-assistant/core/pull/100328 +[#100329]: https://github.com/home-assistant/core/pull/100329 +[#100334]: https://github.com/home-assistant/core/pull/100334 +[#100335]: https://github.com/home-assistant/core/pull/100335 +[#100337]: https://github.com/home-assistant/core/pull/100337 +[#100340]: https://github.com/home-assistant/core/pull/100340 +[#100343]: https://github.com/home-assistant/core/pull/100343 +[#100345]: https://github.com/home-assistant/core/pull/100345 +[#100347]: https://github.com/home-assistant/core/pull/100347 +[#100349]: https://github.com/home-assistant/core/pull/100349 +[#100351]: https://github.com/home-assistant/core/pull/100351 +[#100353]: https://github.com/home-assistant/core/pull/100353 +[#100355]: https://github.com/home-assistant/core/pull/100355 +[#100360]: https://github.com/home-assistant/core/pull/100360 +[#100363]: https://github.com/home-assistant/core/pull/100363 +[#100364]: https://github.com/home-assistant/core/pull/100364 +[#100367]: https://github.com/home-assistant/core/pull/100367 +[#100377]: https://github.com/home-assistant/core/pull/100377 +[#100378]: https://github.com/home-assistant/core/pull/100378 +[#100380]: https://github.com/home-assistant/core/pull/100380 +[#100381]: https://github.com/home-assistant/core/pull/100381 +[#100383]: https://github.com/home-assistant/core/pull/100383 +[#100385]: https://github.com/home-assistant/core/pull/100385 +[#100386]: https://github.com/home-assistant/core/pull/100386 +[#100387]: https://github.com/home-assistant/core/pull/100387 +[#100389]: https://github.com/home-assistant/core/pull/100389 +[#100390]: https://github.com/home-assistant/core/pull/100390 +[#100391]: https://github.com/home-assistant/core/pull/100391 +[#100394]: https://github.com/home-assistant/core/pull/100394 +[#100395]: https://github.com/home-assistant/core/pull/100395 +[#100396]: https://github.com/home-assistant/core/pull/100396 +[#100397]: https://github.com/home-assistant/core/pull/100397 +[#100398]: https://github.com/home-assistant/core/pull/100398 +[#100399]: https://github.com/home-assistant/core/pull/100399 +[#100400]: https://github.com/home-assistant/core/pull/100400 +[#100401]: https://github.com/home-assistant/core/pull/100401 +[#100402]: https://github.com/home-assistant/core/pull/100402 +[#100406]: https://github.com/home-assistant/core/pull/100406 +[#100408]: https://github.com/home-assistant/core/pull/100408 +[#100411]: https://github.com/home-assistant/core/pull/100411 +[#100414]: https://github.com/home-assistant/core/pull/100414 +[#100416]: https://github.com/home-assistant/core/pull/100416 +[#100420]: https://github.com/home-assistant/core/pull/100420 +[#100422]: https://github.com/home-assistant/core/pull/100422 +[#100424]: https://github.com/home-assistant/core/pull/100424 +[#100425]: https://github.com/home-assistant/core/pull/100425 +[#100430]: https://github.com/home-assistant/core/pull/100430 +[#100432]: https://github.com/home-assistant/core/pull/100432 +[#100434]: https://github.com/home-assistant/core/pull/100434 +[#100435]: https://github.com/home-assistant/core/pull/100435 +[#100438]: https://github.com/home-assistant/core/pull/100438 +[#100439]: https://github.com/home-assistant/core/pull/100439 +[#100441]: https://github.com/home-assistant/core/pull/100441 +[#100444]: https://github.com/home-assistant/core/pull/100444 +[#100445]: https://github.com/home-assistant/core/pull/100445 +[#100446]: https://github.com/home-assistant/core/pull/100446 +[#100449]: https://github.com/home-assistant/core/pull/100449 +[#100451]: https://github.com/home-assistant/core/pull/100451 +[#100453]: https://github.com/home-assistant/core/pull/100453 +[#100455]: https://github.com/home-assistant/core/pull/100455 +[#100459]: https://github.com/home-assistant/core/pull/100459 +[#100462]: https://github.com/home-assistant/core/pull/100462 +[#100463]: https://github.com/home-assistant/core/pull/100463 +[#100467]: https://github.com/home-assistant/core/pull/100467 +[#100469]: https://github.com/home-assistant/core/pull/100469 +[#100472]: https://github.com/home-assistant/core/pull/100472 +[#100473]: https://github.com/home-assistant/core/pull/100473 +[#100474]: https://github.com/home-assistant/core/pull/100474 +[#100478]: https://github.com/home-assistant/core/pull/100478 +[#100481]: https://github.com/home-assistant/core/pull/100481 +[#100482]: https://github.com/home-assistant/core/pull/100482 +[#100483]: https://github.com/home-assistant/core/pull/100483 +[#100495]: https://github.com/home-assistant/core/pull/100495 +[#100500]: https://github.com/home-assistant/core/pull/100500 +[#100501]: https://github.com/home-assistant/core/pull/100501 +[#100503]: https://github.com/home-assistant/core/pull/100503 +[#100506]: https://github.com/home-assistant/core/pull/100506 +[#100512]: https://github.com/home-assistant/core/pull/100512 +[#100530]: https://github.com/home-assistant/core/pull/100530 +[#100532]: https://github.com/home-assistant/core/pull/100532 +[#100533]: https://github.com/home-assistant/core/pull/100533 +[#100535]: https://github.com/home-assistant/core/pull/100535 +[#100537]: https://github.com/home-assistant/core/pull/100537 +[#100541]: https://github.com/home-assistant/core/pull/100541 +[#100543]: https://github.com/home-assistant/core/pull/100543 +[#100545]: https://github.com/home-assistant/core/pull/100545 +[#100546]: https://github.com/home-assistant/core/pull/100546 +[#100547]: https://github.com/home-assistant/core/pull/100547 +[#100548]: https://github.com/home-assistant/core/pull/100548 +[#100556]: https://github.com/home-assistant/core/pull/100556 +[#100557]: https://github.com/home-assistant/core/pull/100557 +[#100558]: https://github.com/home-assistant/core/pull/100558 +[#100562]: https://github.com/home-assistant/core/pull/100562 +[#100563]: https://github.com/home-assistant/core/pull/100563 +[#100565]: https://github.com/home-assistant/core/pull/100565 +[#100567]: https://github.com/home-assistant/core/pull/100567 +[#100568]: https://github.com/home-assistant/core/pull/100568 +[#100586]: https://github.com/home-assistant/core/pull/100586 +[#100592]: https://github.com/home-assistant/core/pull/100592 +[#100597]: https://github.com/home-assistant/core/pull/100597 +[#100598]: https://github.com/home-assistant/core/pull/100598 +[#100599]: https://github.com/home-assistant/core/pull/100599 +[#100608]: https://github.com/home-assistant/core/pull/100608 +[#100610]: https://github.com/home-assistant/core/pull/100610 +[#100613]: https://github.com/home-assistant/core/pull/100613 +[#100614]: https://github.com/home-assistant/core/pull/100614 +[#100615]: https://github.com/home-assistant/core/pull/100615 +[#100623]: https://github.com/home-assistant/core/pull/100623 +[#100624]: https://github.com/home-assistant/core/pull/100624 +[#100625]: https://github.com/home-assistant/core/pull/100625 +[#100627]: https://github.com/home-assistant/core/pull/100627 +[#100632]: https://github.com/home-assistant/core/pull/100632 +[#100636]: https://github.com/home-assistant/core/pull/100636 +[#100638]: https://github.com/home-assistant/core/pull/100638 +[#100641]: https://github.com/home-assistant/core/pull/100641 +[#100647]: https://github.com/home-assistant/core/pull/100647 +[#100654]: https://github.com/home-assistant/core/pull/100654 +[#100655]: https://github.com/home-assistant/core/pull/100655 +[#100660]: https://github.com/home-assistant/core/pull/100660 +[#100661]: https://github.com/home-assistant/core/pull/100661 +[#100662]: https://github.com/home-assistant/core/pull/100662 +[#100666]: https://github.com/home-assistant/core/pull/100666 +[#100667]: https://github.com/home-assistant/core/pull/100667 +[#100670]: https://github.com/home-assistant/core/pull/100670 +[#100676]: https://github.com/home-assistant/core/pull/100676 +[#100679]: https://github.com/home-assistant/core/pull/100679 +[#100680]: https://github.com/home-assistant/core/pull/100680 +[#100681]: https://github.com/home-assistant/core/pull/100681 +[#100683]: https://github.com/home-assistant/core/pull/100683 +[#100686]: https://github.com/home-assistant/core/pull/100686 +[#100689]: https://github.com/home-assistant/core/pull/100689 +[#100690]: https://github.com/home-assistant/core/pull/100690 +[#100691]: https://github.com/home-assistant/core/pull/100691 +[#100692]: https://github.com/home-assistant/core/pull/100692 +[#100693]: https://github.com/home-assistant/core/pull/100693 +[#100694]: https://github.com/home-assistant/core/pull/100694 +[#100696]: https://github.com/home-assistant/core/pull/100696 +[#100698]: https://github.com/home-assistant/core/pull/100698 +[#100700]: https://github.com/home-assistant/core/pull/100700 +[#100708]: https://github.com/home-assistant/core/pull/100708 +[#100709]: https://github.com/home-assistant/core/pull/100709 +[#100710]: https://github.com/home-assistant/core/pull/100710 +[#100711]: https://github.com/home-assistant/core/pull/100711 +[#100712]: https://github.com/home-assistant/core/pull/100712 +[#100717]: https://github.com/home-assistant/core/pull/100717 +[#100718]: https://github.com/home-assistant/core/pull/100718 +[#100720]: https://github.com/home-assistant/core/pull/100720 +[#100721]: https://github.com/home-assistant/core/pull/100721 +[#100726]: https://github.com/home-assistant/core/pull/100726 +[#100729]: https://github.com/home-assistant/core/pull/100729 +[#100733]: https://github.com/home-assistant/core/pull/100733 +[#100734]: https://github.com/home-assistant/core/pull/100734 +[#100736]: https://github.com/home-assistant/core/pull/100736 +[#100738]: https://github.com/home-assistant/core/pull/100738 +[#100739]: https://github.com/home-assistant/core/pull/100739 +[#100740]: https://github.com/home-assistant/core/pull/100740 +[#100742]: https://github.com/home-assistant/core/pull/100742 +[#100744]: https://github.com/home-assistant/core/pull/100744 +[#100749]: https://github.com/home-assistant/core/pull/100749 +[#100759]: https://github.com/home-assistant/core/pull/100759 +[#100765]: https://github.com/home-assistant/core/pull/100765 +[#100766]: https://github.com/home-assistant/core/pull/100766 +[#100767]: https://github.com/home-assistant/core/pull/100767 +[#100769]: https://github.com/home-assistant/core/pull/100769 +[#100771]: https://github.com/home-assistant/core/pull/100771 +[#100772]: https://github.com/home-assistant/core/pull/100772 +[#100774]: https://github.com/home-assistant/core/pull/100774 +[#100775]: https://github.com/home-assistant/core/pull/100775 +[#100776]: https://github.com/home-assistant/core/pull/100776 +[#100777]: https://github.com/home-assistant/core/pull/100777 +[#100781]: https://github.com/home-assistant/core/pull/100781 +[#100782]: https://github.com/home-assistant/core/pull/100782 +[#100788]: https://github.com/home-assistant/core/pull/100788 +[#100792]: https://github.com/home-assistant/core/pull/100792 +[#100793]: https://github.com/home-assistant/core/pull/100793 +[#100794]: https://github.com/home-assistant/core/pull/100794 +[#100795]: https://github.com/home-assistant/core/pull/100795 +[#100796]: https://github.com/home-assistant/core/pull/100796 +[#100799]: https://github.com/home-assistant/core/pull/100799 +[#100802]: https://github.com/home-assistant/core/pull/100802 +[#100808]: https://github.com/home-assistant/core/pull/100808 +[#100809]: https://github.com/home-assistant/core/pull/100809 +[#100813]: https://github.com/home-assistant/core/pull/100813 +[#100815]: https://github.com/home-assistant/core/pull/100815 +[#100816]: https://github.com/home-assistant/core/pull/100816 +[#100818]: https://github.com/home-assistant/core/pull/100818 +[#100819]: https://github.com/home-assistant/core/pull/100819 +[#100824]: https://github.com/home-assistant/core/pull/100824 +[#100825]: https://github.com/home-assistant/core/pull/100825 +[#100828]: https://github.com/home-assistant/core/pull/100828 +[#100832]: https://github.com/home-assistant/core/pull/100832 +[#100833]: https://github.com/home-assistant/core/pull/100833 +[#100836]: https://github.com/home-assistant/core/pull/100836 +[#100837]: https://github.com/home-assistant/core/pull/100837 +[#100844]: https://github.com/home-assistant/core/pull/100844 +[#100847]: https://github.com/home-assistant/core/pull/100847 +[#100848]: https://github.com/home-assistant/core/pull/100848 +[#100849]: https://github.com/home-assistant/core/pull/100849 +[#100850]: https://github.com/home-assistant/core/pull/100850 +[#100853]: https://github.com/home-assistant/core/pull/100853 +[#100855]: https://github.com/home-assistant/core/pull/100855 +[#100856]: https://github.com/home-assistant/core/pull/100856 +[#100857]: https://github.com/home-assistant/core/pull/100857 +[#100861]: https://github.com/home-assistant/core/pull/100861 +[#100862]: https://github.com/home-assistant/core/pull/100862 +[#100863]: https://github.com/home-assistant/core/pull/100863 +[#100864]: https://github.com/home-assistant/core/pull/100864 +[#100866]: https://github.com/home-assistant/core/pull/100866 +[#100871]: https://github.com/home-assistant/core/pull/100871 +[#100872]: https://github.com/home-assistant/core/pull/100872 +[#100873]: https://github.com/home-assistant/core/pull/100873 +[#100879]: https://github.com/home-assistant/core/pull/100879 +[#100880]: https://github.com/home-assistant/core/pull/100880 +[#100881]: https://github.com/home-assistant/core/pull/100881 +[#100882]: https://github.com/home-assistant/core/pull/100882 +[#100884]: https://github.com/home-assistant/core/pull/100884 +[#100885]: https://github.com/home-assistant/core/pull/100885 +[#100886]: https://github.com/home-assistant/core/pull/100886 +[#100889]: https://github.com/home-assistant/core/pull/100889 +[#100893]: https://github.com/home-assistant/core/pull/100893 +[#100894]: https://github.com/home-assistant/core/pull/100894 +[#100899]: https://github.com/home-assistant/core/pull/100899 +[#100900]: https://github.com/home-assistant/core/pull/100900 +[#100902]: https://github.com/home-assistant/core/pull/100902 +[#100903]: https://github.com/home-assistant/core/pull/100903 +[#100904]: https://github.com/home-assistant/core/pull/100904 +[#100905]: https://github.com/home-assistant/core/pull/100905 +[#100907]: https://github.com/home-assistant/core/pull/100907 +[#100909]: https://github.com/home-assistant/core/pull/100909 +[#100910]: https://github.com/home-assistant/core/pull/100910 +[#100912]: https://github.com/home-assistant/core/pull/100912 +[#100914]: https://github.com/home-assistant/core/pull/100914 +[#100915]: https://github.com/home-assistant/core/pull/100915 +[#100916]: https://github.com/home-assistant/core/pull/100916 +[#100918]: https://github.com/home-assistant/core/pull/100918 +[#100921]: https://github.com/home-assistant/core/pull/100921 +[#100929]: https://github.com/home-assistant/core/pull/100929 +[#100931]: https://github.com/home-assistant/core/pull/100931 +[#100932]: https://github.com/home-assistant/core/pull/100932 +[#100933]: https://github.com/home-assistant/core/pull/100933 +[#100935]: https://github.com/home-assistant/core/pull/100935 +[#100936]: https://github.com/home-assistant/core/pull/100936 +[#100939]: https://github.com/home-assistant/core/pull/100939 +[#100941]: https://github.com/home-assistant/core/pull/100941 +[#100942]: https://github.com/home-assistant/core/pull/100942 +[#100943]: https://github.com/home-assistant/core/pull/100943 +[#100944]: https://github.com/home-assistant/core/pull/100944 +[#100945]: https://github.com/home-assistant/core/pull/100945 +[#100946]: https://github.com/home-assistant/core/pull/100946 +[#100949]: https://github.com/home-assistant/core/pull/100949 +[#100951]: https://github.com/home-assistant/core/pull/100951 +[#100952]: https://github.com/home-assistant/core/pull/100952 +[#100957]: https://github.com/home-assistant/core/pull/100957 +[#100959]: https://github.com/home-assistant/core/pull/100959 +[#100961]: https://github.com/home-assistant/core/pull/100961 +[#100964]: https://github.com/home-assistant/core/pull/100964 +[#100967]: https://github.com/home-assistant/core/pull/100967 +[#100968]: https://github.com/home-assistant/core/pull/100968 +[#100969]: https://github.com/home-assistant/core/pull/100969 +[#100974]: https://github.com/home-assistant/core/pull/100974 +[#100975]: https://github.com/home-assistant/core/pull/100975 +[#100977]: https://github.com/home-assistant/core/pull/100977 +[#100979]: https://github.com/home-assistant/core/pull/100979 +[#100981]: https://github.com/home-assistant/core/pull/100981 +[#100984]: https://github.com/home-assistant/core/pull/100984 +[#100985]: https://github.com/home-assistant/core/pull/100985 +[#100986]: https://github.com/home-assistant/core/pull/100986 +[#100993]: https://github.com/home-assistant/core/pull/100993 +[#100994]: https://github.com/home-assistant/core/pull/100994 +[#101005]: https://github.com/home-assistant/core/pull/101005 +[#101006]: https://github.com/home-assistant/core/pull/101006 +[#101008]: https://github.com/home-assistant/core/pull/101008 +[#58707]: https://github.com/home-assistant/core/pull/58707 +[#72797]: https://github.com/home-assistant/core/pull/72797 +[#75530]: https://github.com/home-assistant/core/pull/75530 +[#82318]: https://github.com/home-assistant/core/pull/82318 +[#87604]: https://github.com/home-assistant/core/pull/87604 +[#92149]: https://github.com/home-assistant/core/pull/92149 +[#92196]: https://github.com/home-assistant/core/pull/92196 +[#92475]: https://github.com/home-assistant/core/pull/92475 +[#92668]: https://github.com/home-assistant/core/pull/92668 +[#93048]: https://github.com/home-assistant/core/pull/93048 +[#93384]: https://github.com/home-assistant/core/pull/93384 +[#93451]: https://github.com/home-assistant/core/pull/93451 +[#94495]: https://github.com/home-assistant/core/pull/94495 +[#95156]: https://github.com/home-assistant/core/pull/95156 +[#95315]: https://github.com/home-assistant/core/pull/95315 +[#95589]: https://github.com/home-assistant/core/pull/95589 +[#96255]: https://github.com/home-assistant/core/pull/96255 +[#96541]: https://github.com/home-assistant/core/pull/96541 +[#96829]: https://github.com/home-assistant/core/pull/96829 +[#96950]: https://github.com/home-assistant/core/pull/96950 +[#97123]: https://github.com/home-assistant/core/pull/97123 +[#97586]: https://github.com/home-assistant/core/pull/97586 +[#97723]: https://github.com/home-assistant/core/pull/97723 +[#97837]: https://github.com/home-assistant/core/pull/97837 +[#98220]: https://github.com/home-assistant/core/pull/98220 +[#98253]: https://github.com/home-assistant/core/pull/98253 +[#98401]: https://github.com/home-assistant/core/pull/98401 +[#98493]: https://github.com/home-assistant/core/pull/98493 +[#98625]: https://github.com/home-assistant/core/pull/98625 +[#98632]: https://github.com/home-assistant/core/pull/98632 +[#98753]: https://github.com/home-assistant/core/pull/98753 +[#98869]: https://github.com/home-assistant/core/pull/98869 +[#99006]: https://github.com/home-assistant/core/pull/99006 +[#99011]: https://github.com/home-assistant/core/pull/99011 +[#99021]: https://github.com/home-assistant/core/pull/99021 +[#99056]: https://github.com/home-assistant/core/pull/99056 +[#99078]: https://github.com/home-assistant/core/pull/99078 +[#99092]: https://github.com/home-assistant/core/pull/99092 +[#99148]: https://github.com/home-assistant/core/pull/99148 +[#99154]: https://github.com/home-assistant/core/pull/99154 +[#99159]: https://github.com/home-assistant/core/pull/99159 +[#99173]: https://github.com/home-assistant/core/pull/99173 +[#99175]: https://github.com/home-assistant/core/pull/99175 +[#99194]: https://github.com/home-assistant/core/pull/99194 +[#99199]: https://github.com/home-assistant/core/pull/99199 +[#99233]: https://github.com/home-assistant/core/pull/99233 +[#99234]: https://github.com/home-assistant/core/pull/99234 +[#99235]: https://github.com/home-assistant/core/pull/99235 +[#99236]: https://github.com/home-assistant/core/pull/99236 +[#99242]: https://github.com/home-assistant/core/pull/99242 +[#99256]: https://github.com/home-assistant/core/pull/99256 +[#99285]: https://github.com/home-assistant/core/pull/99285 +[#99301]: https://github.com/home-assistant/core/pull/99301 +[#99302]: https://github.com/home-assistant/core/pull/99302 +[#99307]: https://github.com/home-assistant/core/pull/99307 +[#99308]: https://github.com/home-assistant/core/pull/99308 +[#99310]: https://github.com/home-assistant/core/pull/99310 +[#99333]: https://github.com/home-assistant/core/pull/99333 +[#99344]: https://github.com/home-assistant/core/pull/99344 +[#99345]: https://github.com/home-assistant/core/pull/99345 +[#99348]: https://github.com/home-assistant/core/pull/99348 +[#99349]: https://github.com/home-assistant/core/pull/99349 +[#99355]: https://github.com/home-assistant/core/pull/99355 +[#99358]: https://github.com/home-assistant/core/pull/99358 +[#99359]: https://github.com/home-assistant/core/pull/99359 +[#99360]: https://github.com/home-assistant/core/pull/99360 +[#99361]: https://github.com/home-assistant/core/pull/99361 +[#99364]: https://github.com/home-assistant/core/pull/99364 +[#99383]: https://github.com/home-assistant/core/pull/99383 +[#99385]: https://github.com/home-assistant/core/pull/99385 +[#99386]: https://github.com/home-assistant/core/pull/99386 +[#99387]: https://github.com/home-assistant/core/pull/99387 +[#99390]: https://github.com/home-assistant/core/pull/99390 +[#99392]: https://github.com/home-assistant/core/pull/99392 +[#99393]: https://github.com/home-assistant/core/pull/99393 +[#99395]: https://github.com/home-assistant/core/pull/99395 +[#99397]: https://github.com/home-assistant/core/pull/99397 +[#99400]: https://github.com/home-assistant/core/pull/99400 +[#99407]: https://github.com/home-assistant/core/pull/99407 +[#99411]: https://github.com/home-assistant/core/pull/99411 +[#99416]: https://github.com/home-assistant/core/pull/99416 +[#99419]: https://github.com/home-assistant/core/pull/99419 +[#99423]: https://github.com/home-assistant/core/pull/99423 +[#99427]: https://github.com/home-assistant/core/pull/99427 +[#99434]: https://github.com/home-assistant/core/pull/99434 +[#99439]: https://github.com/home-assistant/core/pull/99439 +[#99440]: https://github.com/home-assistant/core/pull/99440 +[#99444]: https://github.com/home-assistant/core/pull/99444 +[#99446]: https://github.com/home-assistant/core/pull/99446 +[#99454]: https://github.com/home-assistant/core/pull/99454 +[#99457]: https://github.com/home-assistant/core/pull/99457 +[#99458]: https://github.com/home-assistant/core/pull/99458 +[#99459]: https://github.com/home-assistant/core/pull/99459 +[#99462]: https://github.com/home-assistant/core/pull/99462 +[#99465]: https://github.com/home-assistant/core/pull/99465 +[#99467]: https://github.com/home-assistant/core/pull/99467 +[#99469]: https://github.com/home-assistant/core/pull/99469 +[#99470]: https://github.com/home-assistant/core/pull/99470 +[#99471]: https://github.com/home-assistant/core/pull/99471 +[#99472]: https://github.com/home-assistant/core/pull/99472 +[#99484]: https://github.com/home-assistant/core/pull/99484 +[#99486]: https://github.com/home-assistant/core/pull/99486 +[#99487]: https://github.com/home-assistant/core/pull/99487 +[#99494]: https://github.com/home-assistant/core/pull/99494 +[#99496]: https://github.com/home-assistant/core/pull/99496 +[#99503]: https://github.com/home-assistant/core/pull/99503 +[#99505]: https://github.com/home-assistant/core/pull/99505 +[#99506]: https://github.com/home-assistant/core/pull/99506 +[#99510]: https://github.com/home-assistant/core/pull/99510 +[#99511]: https://github.com/home-assistant/core/pull/99511 +[#99512]: https://github.com/home-assistant/core/pull/99512 +[#99513]: https://github.com/home-assistant/core/pull/99513 +[#99515]: https://github.com/home-assistant/core/pull/99515 +[#99519]: https://github.com/home-assistant/core/pull/99519 +[#99521]: https://github.com/home-assistant/core/pull/99521 +[#99526]: https://github.com/home-assistant/core/pull/99526 +[#99527]: https://github.com/home-assistant/core/pull/99527 +[#99529]: https://github.com/home-assistant/core/pull/99529 +[#99534]: https://github.com/home-assistant/core/pull/99534 +[#99535]: https://github.com/home-assistant/core/pull/99535 +[#99536]: https://github.com/home-assistant/core/pull/99536 +[#99537]: https://github.com/home-assistant/core/pull/99537 +[#99542]: https://github.com/home-assistant/core/pull/99542 +[#99545]: https://github.com/home-assistant/core/pull/99545 +[#99550]: https://github.com/home-assistant/core/pull/99550 +[#99555]: https://github.com/home-assistant/core/pull/99555 +[#99556]: https://github.com/home-assistant/core/pull/99556 +[#99559]: https://github.com/home-assistant/core/pull/99559 +[#99563]: https://github.com/home-assistant/core/pull/99563 +[#99567]: https://github.com/home-assistant/core/pull/99567 +[#99575]: https://github.com/home-assistant/core/pull/99575 +[#99577]: https://github.com/home-assistant/core/pull/99577 +[#99578]: https://github.com/home-assistant/core/pull/99578 +[#99579]: https://github.com/home-assistant/core/pull/99579 +[#99580]: https://github.com/home-assistant/core/pull/99580 +[#99581]: https://github.com/home-assistant/core/pull/99581 +[#99582]: https://github.com/home-assistant/core/pull/99582 +[#99583]: https://github.com/home-assistant/core/pull/99583 +[#99585]: https://github.com/home-assistant/core/pull/99585 +[#99586]: https://github.com/home-assistant/core/pull/99586 +[#99587]: https://github.com/home-assistant/core/pull/99587 +[#99592]: https://github.com/home-assistant/core/pull/99592 +[#99593]: https://github.com/home-assistant/core/pull/99593 +[#99596]: https://github.com/home-assistant/core/pull/99596 +[#99597]: https://github.com/home-assistant/core/pull/99597 +[#99598]: https://github.com/home-assistant/core/pull/99598 +[#99599]: https://github.com/home-assistant/core/pull/99599 +[#99600]: https://github.com/home-assistant/core/pull/99600 +[#99601]: https://github.com/home-assistant/core/pull/99601 +[#99605]: https://github.com/home-assistant/core/pull/99605 +[#99606]: https://github.com/home-assistant/core/pull/99606 +[#99607]: https://github.com/home-assistant/core/pull/99607 +[#99611]: https://github.com/home-assistant/core/pull/99611 +[#99612]: https://github.com/home-assistant/core/pull/99612 +[#99617]: https://github.com/home-assistant/core/pull/99617 +[#99618]: https://github.com/home-assistant/core/pull/99618 +[#99620]: https://github.com/home-assistant/core/pull/99620 +[#99621]: https://github.com/home-assistant/core/pull/99621 +[#99622]: https://github.com/home-assistant/core/pull/99622 +[#99623]: https://github.com/home-assistant/core/pull/99623 +[#99626]: https://github.com/home-assistant/core/pull/99626 +[#99627]: https://github.com/home-assistant/core/pull/99627 +[#99628]: https://github.com/home-assistant/core/pull/99628 +[#99629]: https://github.com/home-assistant/core/pull/99629 +[#99630]: https://github.com/home-assistant/core/pull/99630 +[#99633]: https://github.com/home-assistant/core/pull/99633 +[#99634]: https://github.com/home-assistant/core/pull/99634 +[#99637]: https://github.com/home-assistant/core/pull/99637 +[#99651]: https://github.com/home-assistant/core/pull/99651 +[#99658]: https://github.com/home-assistant/core/pull/99658 +[#99659]: https://github.com/home-assistant/core/pull/99659 +[#99660]: https://github.com/home-assistant/core/pull/99660 +[#99661]: https://github.com/home-assistant/core/pull/99661 +[#99662]: https://github.com/home-assistant/core/pull/99662 +[#99663]: https://github.com/home-assistant/core/pull/99663 +[#99665]: https://github.com/home-assistant/core/pull/99665 +[#99666]: https://github.com/home-assistant/core/pull/99666 +[#99672]: https://github.com/home-assistant/core/pull/99672 +[#99676]: https://github.com/home-assistant/core/pull/99676 +[#99681]: https://github.com/home-assistant/core/pull/99681 +[#99682]: https://github.com/home-assistant/core/pull/99682 +[#99691]: https://github.com/home-assistant/core/pull/99691 +[#99695]: https://github.com/home-assistant/core/pull/99695 +[#99697]: https://github.com/home-assistant/core/pull/99697 +[#99701]: https://github.com/home-assistant/core/pull/99701 +[#99703]: https://github.com/home-assistant/core/pull/99703 +[#99710]: https://github.com/home-assistant/core/pull/99710 +[#99711]: https://github.com/home-assistant/core/pull/99711 +[#99712]: https://github.com/home-assistant/core/pull/99712 +[#99713]: https://github.com/home-assistant/core/pull/99713 +[#99719]: https://github.com/home-assistant/core/pull/99719 +[#99721]: https://github.com/home-assistant/core/pull/99721 +[#99726]: https://github.com/home-assistant/core/pull/99726 +[#99737]: https://github.com/home-assistant/core/pull/99737 +[#99744]: https://github.com/home-assistant/core/pull/99744 +[#99745]: https://github.com/home-assistant/core/pull/99745 +[#99746]: https://github.com/home-assistant/core/pull/99746 +[#99747]: https://github.com/home-assistant/core/pull/99747 +[#99755]: https://github.com/home-assistant/core/pull/99755 +[#99758]: https://github.com/home-assistant/core/pull/99758 +[#99762]: https://github.com/home-assistant/core/pull/99762 +[#99769]: https://github.com/home-assistant/core/pull/99769 +[#99770]: https://github.com/home-assistant/core/pull/99770 +[#99772]: https://github.com/home-assistant/core/pull/99772 +[#99783]: https://github.com/home-assistant/core/pull/99783 +[#99799]: https://github.com/home-assistant/core/pull/99799 +[#99805]: https://github.com/home-assistant/core/pull/99805 +[#99809]: https://github.com/home-assistant/core/pull/99809 +[#99823]: https://github.com/home-assistant/core/pull/99823 +[#99824]: https://github.com/home-assistant/core/pull/99824 +[#99825]: https://github.com/home-assistant/core/pull/99825 +[#99829]: https://github.com/home-assistant/core/pull/99829 +[#99830]: https://github.com/home-assistant/core/pull/99830 +[#99831]: https://github.com/home-assistant/core/pull/99831 +[#99833]: https://github.com/home-assistant/core/pull/99833 +[#99834]: https://github.com/home-assistant/core/pull/99834 +[#99835]: https://github.com/home-assistant/core/pull/99835 +[#99836]: https://github.com/home-assistant/core/pull/99836 +[#99837]: https://github.com/home-assistant/core/pull/99837 +[#99838]: https://github.com/home-assistant/core/pull/99838 +[#99839]: https://github.com/home-assistant/core/pull/99839 +[#99840]: https://github.com/home-assistant/core/pull/99840 +[#99842]: https://github.com/home-assistant/core/pull/99842 +[#99843]: https://github.com/home-assistant/core/pull/99843 +[#99844]: https://github.com/home-assistant/core/pull/99844 +[#99849]: https://github.com/home-assistant/core/pull/99849 +[#99853]: https://github.com/home-assistant/core/pull/99853 +[#99859]: https://github.com/home-assistant/core/pull/99859 +[#99861]: https://github.com/home-assistant/core/pull/99861 +[#99863]: https://github.com/home-assistant/core/pull/99863 +[#99865]: https://github.com/home-assistant/core/pull/99865 +[#99869]: https://github.com/home-assistant/core/pull/99869 +[#99875]: https://github.com/home-assistant/core/pull/99875 +[#99881]: https://github.com/home-assistant/core/pull/99881 +[#99882]: https://github.com/home-assistant/core/pull/99882 +[#99883]: https://github.com/home-assistant/core/pull/99883 +[#99884]: https://github.com/home-assistant/core/pull/99884 +[#99886]: https://github.com/home-assistant/core/pull/99886 +[#99887]: https://github.com/home-assistant/core/pull/99887 +[#99888]: https://github.com/home-assistant/core/pull/99888 +[#99889]: https://github.com/home-assistant/core/pull/99889 +[#99890]: https://github.com/home-assistant/core/pull/99890 +[#99891]: https://github.com/home-assistant/core/pull/99891 +[#99892]: https://github.com/home-assistant/core/pull/99892 +[#99893]: https://github.com/home-assistant/core/pull/99893 +[#99894]: https://github.com/home-assistant/core/pull/99894 +[#99895]: https://github.com/home-assistant/core/pull/99895 +[#99903]: https://github.com/home-assistant/core/pull/99903 +[#99915]: https://github.com/home-assistant/core/pull/99915 +[#99916]: https://github.com/home-assistant/core/pull/99916 +[#99918]: https://github.com/home-assistant/core/pull/99918 +[#99919]: https://github.com/home-assistant/core/pull/99919 +[#99920]: https://github.com/home-assistant/core/pull/99920 +[#99921]: https://github.com/home-assistant/core/pull/99921 +[#99922]: https://github.com/home-assistant/core/pull/99922 +[#99925]: https://github.com/home-assistant/core/pull/99925 +[#99926]: https://github.com/home-assistant/core/pull/99926 +[#99929]: https://github.com/home-assistant/core/pull/99929 +[#99931]: https://github.com/home-assistant/core/pull/99931 +[#99938]: https://github.com/home-assistant/core/pull/99938 +[#99946]: https://github.com/home-assistant/core/pull/99946 +[#99948]: https://github.com/home-assistant/core/pull/99948 +[#99954]: https://github.com/home-assistant/core/pull/99954 +[#99965]: https://github.com/home-assistant/core/pull/99965 +[#99967]: https://github.com/home-assistant/core/pull/99967 +[#99971]: https://github.com/home-assistant/core/pull/99971 +[#99975]: https://github.com/home-assistant/core/pull/99975 +[#99976]: https://github.com/home-assistant/core/pull/99976 +[#99978]: https://github.com/home-assistant/core/pull/99978 +[#99983]: https://github.com/home-assistant/core/pull/99983 +[#99984]: https://github.com/home-assistant/core/pull/99984 +[#99989]: https://github.com/home-assistant/core/pull/99989 +[#99990]: https://github.com/home-assistant/core/pull/99990 +[#99998]: https://github.com/home-assistant/core/pull/99998 +[@ArdaSeremet]: https://github.com/ArdaSeremet +[@AtomBrake]: https://github.com/AtomBrake +[@Cereal2nd]: https://github.com/Cereal2nd +[@DCSBL]: https://github.com/DCSBL +[@DanielWeeber]: https://github.com/DanielWeeber +[@FletcherAU]: https://github.com/FletcherAU +[@Jc2k]: https://github.com/Jc2k +[@Kane610]: https://github.com/Kane610 +[@LaStrada]: https://github.com/LaStrada +[@Lash-L]: https://github.com/Lash-L +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@Noltari]: https://github.com/Noltari +[@Olen]: https://github.com/Olen +[@PaarthShah]: https://github.com/PaarthShah +[@Quentame]: https://github.com/Quentame +[@Roagert]: https://github.com/Roagert +[@SeraphicRav]: https://github.com/SeraphicRav +[@Shutgun]: https://github.com/Shutgun +[@SirGoodenough]: https://github.com/SirGoodenough +[@StevenLooman]: https://github.com/StevenLooman +[@TheJulianJES]: https://github.com/TheJulianJES +[@Vantomas]: https://github.com/Vantomas +[@ViViDboarder]: https://github.com/ViViDboarder +[@WillCodeForCats]: https://github.com/WillCodeForCats +[@abmantis]: https://github.com/abmantis +[@alexyao2015]: https://github.com/alexyao2015 +[@allenporter]: https://github.com/allenporter +[@alyyousuf7]: https://github.com/alyyousuf7 +[@aman207]: https://github.com/aman207 +[@amitfin]: https://github.com/amitfin +[@b-uwe]: https://github.com/b-uwe +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@c0ffeeca7]: https://github.com/c0ffeeca7 +[@cdce8p]: https://github.com/cdce8p +[@chemelli74]: https://github.com/chemelli74 +[@dieselrabbit]: https://github.com/dieselrabbit +[@dirrgang]: https://github.com/dirrgang +[@dknowles2]: https://github.com/dknowles2 +[@edenhaus]: https://github.com/edenhaus +[@eifinger]: https://github.com/eifinger +[@elafargue]: https://github.com/elafargue +[@elmurato]: https://github.com/elmurato +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@fender4645]: https://github.com/fender4645 +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gwww]: https://github.com/gwww +[@h3l1o5]: https://github.com/h3l1o5 +[@hahn-th]: https://github.com/hahn-th +[@janiversen]: https://github.com/janiversen +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jerry0317]: https://github.com/jerry0317 +[@jesserockz]: https://github.com/jesserockz +[@jhollowe]: https://github.com/jhollowe +[@jimmyd-be]: https://github.com/jimmyd-be +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@jrieger]: https://github.com/jrieger +[@kbx81]: https://github.com/kbx81 +[@kevin-kraus]: https://github.com/kevin-kraus +[@loopj]: https://github.com/loopj +[@matrixd2]: https://github.com/matrixd2 +[@mib1185]: https://github.com/mib1185 +[@mike391]: https://github.com/mike391 +[@mikey0000]: https://github.com/mikey0000 +[@mkmer]: https://github.com/mkmer +[@ms264556]: https://github.com/ms264556 +[@mueli]: https://github.com/mueli +[@nachonam]: https://github.com/nachonam +[@niro1987]: https://github.com/niro1987 +[@ntilley905]: https://github.com/ntilley905 +[@pjanuario]: https://github.com/pjanuario +[@puddly]: https://github.com/puddly +[@raman325]: https://github.com/raman325 +[@rappenze]: https://github.com/rappenze +[@ricmik]: https://github.com/ricmik +[@rikroe]: https://github.com/rikroe +[@rklomp]: https://github.com/rklomp +[@samcrang]: https://github.com/samcrang +[@scolby33]: https://github.com/scolby33 +[@scop]: https://github.com/scop +[@starkillerOG]: https://github.com/starkillerOG +[@steffenrapp]: https://github.com/steffenrapp +[@synesthesiam]: https://github.com/synesthesiam +[@teharris1]: https://github.com/teharris1 +[@thecode]: https://github.com/thecode +[@timmo001]: https://github.com/timmo001 +[@tjhorner]: https://github.com/tjhorner +[@tokenize47]: https://github.com/tokenize47 +[@trnila]: https://github.com/trnila +[@tronikos]: https://github.com/tronikos +[@unDemian]: https://github.com/unDemian +[@uvjustin]: https://github.com/uvjustin +[@vfreex]: https://github.com/vfreex +[@yuxincs]: https://github.com/yuxincs +[aemet docs]: /integrations/aemet/ +[aftership docs]: /integrations/aftership/ +[airly docs]: /integrations/airly/ +[airnow docs]: /integrations/airnow/ +[airthings_ble docs]: /integrations/airthings_ble/ +[airtouch4 docs]: /integrations/airtouch4/ +[airvisual docs]: /integrations/airvisual/ +[airzone docs]: /integrations/airzone/ +[airzone_cloud docs]: /integrations/airzone_cloud/ +[aladdin_connect docs]: /integrations/aladdin_connect/ +[alexa docs]: /integrations/alexa/ +[amcrest docs]: /integrations/amcrest/ +[androidtv docs]: /integrations/androidtv/ +[anthemav docs]: /integrations/anthemav/ +[apcupsd docs]: /integrations/apcupsd/ +[api docs]: /integrations/api/ +[apple_tv docs]: /integrations/apple_tv/ +[apprise docs]: /integrations/apprise/ +[assist_pipeline docs]: /integrations/assist_pipeline/ +[august docs]: /integrations/august/ +[aurora docs]: /integrations/aurora/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[baf docs]: /integrations/baf/ +[blink docs]: /integrations/blink/ +[bloomsky docs]: /integrations/bloomsky/ +[bluetooth docs]: /integrations/bluetooth/ +[bluetooth_tracker docs]: /integrations/bluetooth_tracker/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[braviatv docs]: /integrations/braviatv/ +[bsblan docs]: /integrations/bsblan/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[climate docs]: /integrations/climate/ +[co2signal docs]: /integrations/co2signal/ +[color_extractor docs]: /integrations/color_extractor/ +[comelit docs]: /integrations/comelit/ +[conversation docs]: /integrations/conversation/ +[coolmaster docs]: /integrations/coolmaster/ +[datetime docs]: /integrations/datetime/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[denonavr docs]: /integrations/denonavr/ +[device_tracker docs]: /integrations/device_tracker/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[dhcp docs]: /integrations/dhcp/ +[discovergy docs]: /integrations/discovergy/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[dlna_dms docs]: /integrations/dlna_dms/ +[doods docs]: /integrations/doods/ +[doorbird docs]: /integrations/doorbird/ +[duotecno docs]: /integrations/duotecno/ +[dynalite docs]: /integrations/dynalite/ +[ecobee docs]: /integrations/ecobee/ +[ecoforest docs]: /integrations/ecoforest/ +[econet docs]: /integrations/econet/ +[electric_kiwi docs]: /integrations/electric_kiwi/ +[elkm1 docs]: /integrations/elkm1/ +[emulated_kasa docs]: /integrations/emulated_kasa/ +[enmax docs]: /integrations/enmax/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[envisalink docs]: /integrations/envisalink/ +[esphome docs]: /integrations/esphome/ +[faa_delays docs]: /integrations/faa_delays/ +[fibaro docs]: /integrations/fibaro/ +[fitbit docs]: /integrations/fitbit/ +[flipr docs]: /integrations/flipr/ +[flo docs]: /integrations/flo/ +[flux_led docs]: /integrations/flux_led/ +[freebox docs]: /integrations/freebox/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ +[frontend docs]: /integrations/frontend/ +[garadget docs]: /integrations/garadget/ +[geniushub docs]: /integrations/geniushub/ +[glances docs]: /integrations/glances/ +[gogogate2 docs]: /integrations/gogogate2/ +[goodwe docs]: /integrations/goodwe/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[gpsd docs]: /integrations/gpsd/ +[hardkernel docs]: /integrations/hardkernel/ +[hassio docs]: /integrations/hassio/ +[hdmi_cec docs]: /integrations/hdmi_cec/ +[heos docs]: /integrations/heos/ +[hisense_aehw4a1 docs]: /integrations/hisense_aehw4a1/ +[hlk_sw16 docs]: /integrations/hlk_sw16/ +[home_connect docs]: /integrations/home_connect/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_green docs]: /integrations/homeassistant_green/ +[homeassistant_hardware docs]: /integrations/homeassistant_hardware/ +[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[homewizard docs]: /integrations/homewizard/ +[honeywell docs]: /integrations/honeywell/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[hvv_departures docs]: /integrations/hvv_departures/ +[hydrawise docs]: /integrations/hydrawise/ +[hyperion docs]: /integrations/hyperion/ +[iaqualink docs]: /integrations/iaqualink/ +[icloud docs]: /integrations/icloud/ +[idasen_desk docs]: /integrations/idasen_desk/ +[imap docs]: /integrations/imap/ +[imap_email_content docs]: /integrations/imap_email_content/ +[input_button docs]: /integrations/input_button/ +[insteon docs]: /integrations/insteon/ +[intent_script docs]: /integrations/intent_script/ +[ios docs]: /integrations/ios/ +[ipma docs]: /integrations/ipma/ +[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ +[isy994 docs]: /integrations/isy994/ +[izone docs]: /integrations/izone/ +[juicenet docs]: /integrations/juicenet/ +[keenetic_ndms2 docs]: /integrations/keenetic_ndms2/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[konnected docs]: /integrations/konnected/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[kulersky docs]: /integrations/kulersky/ +[laundrify docs]: /integrations/laundrify/ +[lcn docs]: /integrations/lcn/ +[ld2410_ble docs]: /integrations/ld2410_ble/ +[led_ble docs]: /integrations/led_ble/ +[life360 docs]: /integrations/life360/ +[lifx docs]: /integrations/lifx/ +[limitlessled docs]: /integrations/limitlessled/ +[livisi docs]: /integrations/livisi/ +[logger docs]: /integrations/logger/ +[logi_circle docs]: /integrations/logi_circle/ +[london_underground docs]: /integrations/london_underground/ +[lookin docs]: /integrations/lookin/ +[lyric docs]: /integrations/lyric/ +[matrix docs]: /integrations/matrix/ +[medcom_ble docs]: /integrations/medcom_ble/ +[media_extractor docs]: /integrations/media_extractor/ +[met docs]: /integrations/met/ +[met_eireann docs]: /integrations/met_eireann/ +[meteoclimatic docs]: /integrations/meteoclimatic/ +[mill docs]: /integrations/mill/ +[minecraft_server docs]: /integrations/minecraft_server/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[motion_blinds docs]: /integrations/motion_blinds/ +[motioneye docs]: /integrations/motioneye/ +[mqtt docs]: /integrations/mqtt/ +[mqtt_room docs]: /integrations/mqtt_room/ +[mutesync docs]: /integrations/mutesync/ +[myq docs]: /integrations/myq/ +[mysensors docs]: /integrations/mysensors/ +[nanoleaf docs]: /integrations/nanoleaf/ +[neato docs]: /integrations/neato/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[nexia docs]: /integrations/nexia/ +[nextbus docs]: /integrations/nextbus/ +[nibe_heatpump docs]: /integrations/nibe_heatpump/ +[nightscout docs]: /integrations/nightscout/ +[nobo_hub docs]: /integrations/nobo_hub/ +[nuheat docs]: /integrations/nuheat/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[nx584 docs]: /integrations/nx584/ +[nzbget docs]: /integrations/nzbget/ +[octoprint docs]: /integrations/octoprint/ +[omnilogic docs]: /integrations/omnilogic/ +[ondilo_ico docs]: /integrations/ondilo_ico/ +[onvif docs]: /integrations/onvif/ +[openhome docs]: /integrations/openhome/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[opower docs]: /integrations/opower/ +[overkiz docs]: /integrations/overkiz/ +[picnic docs]: /integrations/picnic/ +[plaato docs]: /integrations/plaato/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[plum_lightpad docs]: /integrations/plum_lightpad/ +[point docs]: /integrations/point/ +[poolsense docs]: /integrations/poolsense/ +[powerwall docs]: /integrations/powerwall/ +[private_ble_device docs]: /integrations/private_ble_device/ +[progettihwsw docs]: /integrations/progettihwsw/ +[prometheus docs]: /integrations/prometheus/ +[rachio docs]: /integrations/rachio/ +[rainbird docs]: /integrations/rainbird/ +[rainforest_eagle docs]: /integrations/rainforest_eagle/ +[rainmachine docs]: /integrations/rainmachine/ +[raspberry_pi docs]: /integrations/raspberry_pi/ +[recorder docs]: /integrations/recorder/ +[renson docs]: /integrations/renson/ +[reolink docs]: /integrations/reolink/ +[rest docs]: /integrations/rest/ +[ring docs]: /integrations/ring/ +[risco docs]: /integrations/risco/ +[roborock docs]: /integrations/roborock/ +[roku docs]: /integrations/roku/ +[roomba docs]: /integrations/roomba/ +[ruckus_unleashed docs]: /integrations/ruckus_unleashed/ +[saj docs]: /integrations/saj/ +[samsungtv docs]: /integrations/samsungtv/ +[schlage docs]: /integrations/schlage/ +[scrape docs]: /integrations/scrape/ +[screenlogic docs]: /integrations/screenlogic/ +[script docs]: /integrations/script/ +[search docs]: /integrations/search/ +[sense docs]: /integrations/sense/ +[sensibo docs]: /integrations/sensibo/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[sia docs]: /integrations/sia/ +[simplepush docs]: /integrations/simplepush/ +[slack docs]: /integrations/slack/ +[sma docs]: /integrations/sma/ +[smappee docs]: /integrations/smappee/ +[smart_meter_texas docs]: /integrations/smart_meter_texas/ +[smartthings docs]: /integrations/smartthings/ +[smarttub docs]: /integrations/smarttub/ +[sms docs]: /integrations/sms/ +[smtp docs]: /integrations/smtp/ +[snapcast docs]: /integrations/snapcast/ +[snooz docs]: /integrations/snooz/ +[solaredge docs]: /integrations/solaredge/ +[solarlog docs]: /integrations/solarlog/ +[sonarr docs]: /integrations/sonarr/ +[songpal docs]: /integrations/songpal/ +[soundtouch docs]: /integrations/soundtouch/ +[spc docs]: /integrations/spc/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[srp_energy docs]: /integrations/srp_energy/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[stream docs]: /integrations/stream/ +[stt docs]: /integrations/stt/ +[sun docs]: /integrations/sun/ +[supla docs]: /integrations/supla/ +[switchbot_cloud docs]: /integrations/switchbot_cloud/ +[syncthing docs]: /integrations/syncthing/ +[syncthru docs]: /integrations/syncthru/ +[system_bridge docs]: /integrations/system_bridge/ +[system_log docs]: /integrations/system_log/ +[tado docs]: /integrations/tado/ +[tankerkoenig docs]: /integrations/tankerkoenig/ +[tasmota docs]: /integrations/tasmota/ +[tellduslive docs]: /integrations/tellduslive/ +[template docs]: /integrations/template/ +[threshold docs]: /integrations/threshold/ +[timer docs]: /integrations/timer/ +[todoist docs]: /integrations/todoist/ +[tolo docs]: /integrations/tolo/ +[tomorrowio docs]: /integrations/tomorrowio/ +[tplink docs]: /integrations/tplink/ +[tplink_omada docs]: /integrations/tplink_omada/ +[tradfri docs]: /integrations/tradfri/ +[trafikverket_camera docs]: /integrations/trafikverket_camera/ +[trafikverket_ferry docs]: /integrations/trafikverket_ferry/ +[trafikverket_train docs]: /integrations/trafikverket_train/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[trend docs]: /integrations/trend/ +[tts docs]: /integrations/tts/ +[twinkly docs]: /integrations/twinkly/ +[twitch docs]: /integrations/twitch/ +[ultraloq docs]: /integrations/ultraloq/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[universal docs]: /integrations/universal/ +[upb docs]: /integrations/upb/ +[upnp docs]: /integrations/upnp/ +[uptimerobot docs]: /integrations/uptimerobot/ +[velux docs]: /integrations/velux/ +[venstar docs]: /integrations/venstar/ +[vera docs]: /integrations/vera/ +[versasense docs]: /integrations/versasense/ +[vesync docs]: /integrations/vesync/ +[vicare docs]: /integrations/vicare/ +[vizio docs]: /integrations/vizio/ +[vlc_telnet docs]: /integrations/vlc_telnet/ +[vodafone_station docs]: /integrations/vodafone_station/ +[volumio docs]: /integrations/volumio/ +[wake_word docs]: /integrations/wake_word/ +[wallbox docs]: /integrations/wallbox/ +[waqi docs]: /integrations/waqi/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[weatherflow docs]: /integrations/weatherflow/ +[weatherkit docs]: /integrations/weatherkit/ +[websocket_api docs]: /integrations/websocket_api/ +[wiffi docs]: /integrations/wiffi/ +[wilight docs]: /integrations/wilight/ +[withings docs]: /integrations/withings/ +[wiz docs]: /integrations/wiz/ +[wled docs]: /integrations/wled/ +[wolflink docs]: /integrations/wolflink/ +[workday docs]: /integrations/workday/ +[ws66i docs]: /integrations/ws66i/ +[wyoming docs]: /integrations/wyoming/ +[xbox docs]: /integrations/xbox/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yardian docs]: /integrations/yardian/ +[yeelight docs]: /integrations/yeelight/ +[yolink docs]: /integrations/yolink/ +[zamg docs]: /integrations/zamg/ +[zeroconf docs]: /integrations/zeroconf/ +[zerproc docs]: /integrations/zerproc/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ diff --git a/source/images/blog/2023-10/social.png b/source/images/blog/2023-10/social.png new file mode 100644 index 0000000000000000000000000000000000000000..09c5552626a84610ff44648fba585c36d6062379 GIT binary patch literal 34872 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

<@%1@5gw#hu~?MK0YZ% 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 DXt7)< literal 0 HcmV?d00001 From 0792915a9f07cd9dab2ecd95c6941818f811d425 Mon Sep 17 00:00:00 2001 From: Jeef Date: Mon, 2 Oct 2023 02:33:44 -0600 Subject: [PATCH 081/109] WeatherFlow documentation (#23478) Co-authored-by: Franck Nijhof Co-authored-by: Joost Lekkerkerker Co-authored-by: J. Nick Koston --- source/_integrations/weatherflow.markdown | 58 +++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 source/_integrations/weatherflow.markdown diff --git a/source/_integrations/weatherflow.markdown b/source/_integrations/weatherflow.markdown new file mode 100644 index 00000000000..f096cf951a7 --- /dev/null +++ b/source/_integrations/weatherflow.markdown @@ -0,0 +1,58 @@ +--- +title: "WeatherFlow" +description: "Instructions on how to integrate your WeatherFlow tempest into Home Assistant." +ha_release: "2023.10" +ha_category: + - Sensor + - Environment +ha_platforms: + - sensor +ha_iot_class: "Local Push" +ha_config_flow: true +ha_codeowners: + - '@natekspencer' + - '@jeeftor' +ha_domain: weatherflow +--- + +This integration is a local-only WeatherFlow integration that reads weather data from all [WeatherFlow Tempest](https://weatherflow.com/tempest-weather-system/) compatible weather station on the local network. + +

+You may see slight deviations between the values reported in Home Assistant and the values in the WeatherFlow App. This is because the WeatherFlow app considers both forecasts and neighboring weather stations in addition to the local data used in this integration. +
+ +{% include integrations/config_flow.md %} + +## Sensors + +This integration will expose the following sensors: + +- Air density +- Air pressure +- Dew point +- Feels like +- Humidity +- Illuminance +- Irradiance +- Lightning average distance +- Lightning count +- Precipitation +- Precipitation amount +- Precipitation type +- Temperature +- UV index +- Vapor pressure +- Wet bulb temperature +- Wind direction +- Wind direction average +- Wind gust +- Wind lull +- Wind speed + +## Diagnostic sensors + +Additionally the following diagnostic sensors are available: + +- Battery voltage +- Signal strength +- Uptime From 3939257a37640366a187fe7b5f2e6d66654c32cc Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Wed, 27 Sep 2023 12:21:22 -0400 Subject: [PATCH 082/109] Add @frenck's Z-Wave grammar changes from #29038 elsewhere (#29051) --- source/_integrations/zwave_js.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index cc38bdd6c29..62aa4a16eb8 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -886,7 +886,7 @@ The log level will be set to `debug` for the integration, library, and optionall ###### Disable Z-Wave JS logging 1. Go to the Z-Wave integration panel: {% my integration badge domain="zwave_js" %} -2. Click `Disable debug logging` on the left hand side of the screen. +2. Select `Disable debug logging` on the left-hand side of the screen. The log level will be reset to its previous value for the integration, library, and driver, and the Home Assistant frontend will automatically send you the Z-Wave logs generated during that time period for download. From 54ccd6a16c47ffb7901a290dbf40c32a69a2f5e5 Mon Sep 17 00:00:00 2001 From: Tereza Tomcova Date: Fri, 29 Sep 2023 00:34:28 +0300 Subject: [PATCH 083/109] List Switchbot Curtain 3 as supported (#29059) --- source/_integrations/switchbot.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 32b8039342e..b086f75d11f 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -53,6 +53,7 @@ Please note, device names configured in the SwitchBot app are not transferred in - [Bot (WoHand)](https://switch-bot.com/pages/switchbot-bot) - [Contact Sensor (WoContact)](https://switch-bot.com/pages/switchbot-contact-sensor) - [Curtain (WoCurtain)](https://switch-bot.com/pages/switchbot-curtain) (version 1 & 2) +- [Curtain 3 (WoCtn3)](https://switch-bot.com/pages/switchbot-curtain-3) - [Humidifier (WoHumi)](https://eu.switch-bot.com/products/switchbot-smart-humidifier) - Light Strip (WoStrip) - [Meter](https://switch-bot.com/pages/switchbot-meter)/[Meter Plus 70BB](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH) From 856914a71bf10e7c56d6a73759a89e94a7a2846c Mon Sep 17 00:00:00 2001 From: Paul Bottein Date: Tue, 3 Oct 2023 15:03:27 +0200 Subject: [PATCH 084/109] Explain how label mode options works with zone entities (#29118) --- source/_dashboards/map.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_dashboards/map.markdown b/source/_dashboards/map.markdown index 890e9535a0f..32557e1065e 100644 --- a/source/_dashboards/map.markdown +++ b/source/_dashboards/map.markdown @@ -91,7 +91,7 @@ name: label_mode: required: false default: name - description: When set to `state`, renders the entity's state as the label for the map marker instead of the entity's name. + description: When set to `state`, renders the entity's state as the label for the map marker instead of the entity's name. This option doesn't apply to [zone](/integrations/zone/) entities because they don't use a label but an icon. type: string focus: required: false From 8f501b4a064d0a628c65edc33667890d64c75c80 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:45:44 -0400 Subject: [PATCH 085/109] Add notable change about zwave_js (#29109) --- source/_posts/2023-10-04-release-202310.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index cc98551b044..681362bb661 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -151,6 +151,7 @@ noteworthy changes this release: - The [System Bridge] integration now supports notifications! Thanks, [@timmo001]! - [@alexyao2015] added a button to [Life360] to trigger a poll to update the location information. Cool! +- It's now easier than ever to collect Z-Wave logs for troubleshooting. Just [enable debug logging](/integrations/zwave_js#how-do-i-access-the-z-wave-logs)! To process: From 9c384e657f3f3106565d93a8e00bc57b437874c2 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 Oct 2023 21:08:58 +0200 Subject: [PATCH 086/109] 2023.10: Update changelog to beta 6 --- source/changelogs/core-2023.10.markdown | 476 ++++++++---------------- 1 file changed, 157 insertions(+), 319 deletions(-) diff --git a/source/changelogs/core-2023.10.markdown b/source/changelogs/core-2023.10.markdown index cbd7f78a122..085144997a5 100644 --- a/source/changelogs/core-2023.10.markdown +++ b/source/changelogs/core-2023.10.markdown @@ -702,6 +702,78 @@ For a summary in a more readable format: - Add WeatherFlow integration ([@jeeftor] - [#75530]) - Address Comelit cover late review ([@chemelli74] - [#101008]) - Add "UV Index" to IPMA ([@tokenize47] - [#100383]) +- Restore state of trend sensor ([@jpbede] - [#100332]) +- Add homeassistant reload_all translatable service name and description ([@steffenrapp] - [#100437]) +- Adopt Hue integration to latest changes in Hue firmware ([@marcelveldt] - [#101001]) +- Fix handling reload with invalid mqtt config ([@jbouwh] - [#101015]) +- Fix HomeKit handling of unavailable state ([@bdraco] - [#101021]) +- Update pyweatherflowudp to 1.4.3 ([@cdce8p] - [#101022]) +- Use webrtc-noise-gain without AVX2 ([@synesthesiam] - [#101028]) +- Add shutter_tilt support for Fibaro FGR 223 ([@lennart24] - [#96283]) +- Fix google maps device_tracker same last seen timestamp ([@tyjtyj] - [#99963]) +- Add feature to add measuring station via number in waqi ([@joostlek] - [#99992]) +- Bump PySwitchbot to 0.40.0 to support Curtain 3 ([@the-ress] - [#100619]) +- Add LED control support to Home Assistant Green ([@emontnemery] - [#100922]) +- ESPHome: dont send error when wake word is aborted ([@jesserockz] - [#101032]) +- Fix onvif creating a new entity for every new event ([@joostlek] - [#101035]) +- Pin pydantic to 1.10.12 ([@joostlek] - [#101044]) +- Update aioairzone-cloud to v0.2.3 ([@Noltari] - [#101052]) +- Don't show withings repair if it's not in YAML ([@joostlek] - [#101054]) +- Bump apple_weatherkit to 1.0.4 ([@tjhorner] - [#101057]) +- Remove fma instructions from webrtc-noise-gain ([@synesthesiam] - [#101060]) +- Bump aiowaqi to 1.1.0 ([@joostlek] - [#99751]) +- Update frontend to 20230928.0 ([@piitaya] - [#101067]) +- Bump opower to 0.0.35 ([@tronikos] - [#101072]) +- Add native precipitation unit for weatherkit ([@tjhorner] - [#101073]) +- Use wake word description if available ([@synesthesiam] - [#101079]) +- Update xknxproject to 3.3.0 ([@farmio] - [#101081]) +- Fix ZHA exception when writing `cie_addr` during configuration ([@TheJulianJES] - [#101087]) +- Bump plexapi to 4.15.3 ([@jjlawren] - [#101088]) +- Update Home Assistant base image to 2023.09.0 ([@frenck] - [#101092]) +- Use pep 503 compatible wheels index for builds ([@frenck] - [#101096]) +- Fix circular dependency on homeassistant ([@cdce8p] - [#101099]) +- Ignore binary distribution wheels for charset-normalizer ([@frenck] - [#101104]) +- Stop the Home Assistant Core container by default ([@agners] - [#101105]) +- Correct binary ignore for charset-normalizer to charset_normalizer ([@frenck] - [#101106]) +- Pin charset-normalizer in our package constraints ([@frenck] - [#101107]) +- Migrate WAQI unique id ([@joostlek] - [#101112]) +- Add logging to media extractor to know the selected stream ([@joostlek] - [#101117]) +- Correct youtube stream selector in media extractor ([@joostlek] - [#101119]) +- Revert pin on AlexaPy ([@frenck] - [#101123]) +- Return None when value is not known in OpenHardwareMonitor ([@joostlek] - [#101127]) +- Bump aiowaqi to 1.1.1 ([@joostlek] - [#101129]) +- Fix zwave_js firmware update logic ([@raman325] - [#101143]) +- Terminology: Rename Multi-PAN to Multiprotocol to be consistent ([@c0ffeeca7] - [#99262]) +- Report unavailability for yolink sensor and binary_sensor ([@hlyi] - [#100743]) +- Bump zwave-js-server-python to 0.52.1 ([@raman325] - [#101162]) +- Bump PySwitchbot to 0.40.1 ([@the-ress] - [#101164]) +- Fix rainbird entity unique ids ([@allenporter] - [#101168]) +- Update denonavr to `0.11.4` ([@ol-iver] - [#101169]) +- Clear calendar alarms after scheduling and add debug loggging ([@allenporter] - [#101176]) +- Update Mill library to 0.11.6 ([@Danielhiversen] - [#101180]) +- Add config entry name to Withings webhook name ([@joostlek] - [#101205]) +- Correct JSONDecodeError in co2signal ([@joostlek] - [#101206]) +- Fix loop in progress config flow ([@silamon] - [#97229]) +- Bump python-roborock to 0.34.6 ([@Lash-L] - [#101147]) +- Split get users into chunks of 100 for Twitch sensors ([@timmo001] - [#101211]) +- Bump zeroconf to 0.115.1 ([@bdraco] - [#101213]) +- Bump aioesphomeapi to 17.0.1 ([@bdraco] - [#101214]) +- Remove invalid doc about multi origin/dest in google_travel_time ([@eifinger] - [#101215]) +- Fix withings webhook name ([@joostlek] - [#101221]) +- ESPHome: fix voice assistant default audio settings ([@jesserockz] - [#101241]) +- Remove dead code from broadlink light ([@emontnemery] - [#101063]) +- Fix color temperature setting in broadlink light ([@emontnemery] - [#101251]) +- Add extra validation in private_ble_device config flow ([@Jc2k] - [#101254]) +- Downgrade pylitterbot to 2023.4.5 ([@joostlek] - [#101255]) +- Add missing device class to sensor.DEVICE_CLASS_UNITS ([@emontnemery] - [#101256]) +- Bump aiowaqi to 2.0.0 ([@joostlek] - [#101259]) +- Add documentation URL for the Home Assistant Green ([@frenck] - [#101263]) +- Bump python-myq to 3.1.11 ([@Lash-L] - [#101266]) +- Bump intents to 2023.10.2 ([@synesthesiam] - [#101277]) +- Revert "Use shorthand attributes in Telldus live" ([@joostlek] - [#101281]) +- Bump pylitterbot to 2023.4.9 ([@natekspencer] - [#101285]) +- Update frontend to 20231002.0 ([@bramkragten] - [#101294]) +- Update Lokalise CLI to v2.6.8 ([@frenck] - [#101297]) [#100002]: https://github.com/home-assistant/core/pull/100002 [#100008]: https://github.com/home-assistant/core/pull/100008 @@ -850,6 +922,7 @@ For a summary in a more readable format: [#100327]: https://github.com/home-assistant/core/pull/100327 [#100328]: https://github.com/home-assistant/core/pull/100328 [#100329]: https://github.com/home-assistant/core/pull/100329 +[#100332]: https://github.com/home-assistant/core/pull/100332 [#100334]: https://github.com/home-assistant/core/pull/100334 [#100335]: https://github.com/home-assistant/core/pull/100335 [#100337]: https://github.com/home-assistant/core/pull/100337 @@ -898,6 +971,7 @@ For a summary in a more readable format: [#100432]: https://github.com/home-assistant/core/pull/100432 [#100434]: https://github.com/home-assistant/core/pull/100434 [#100435]: https://github.com/home-assistant/core/pull/100435 +[#100437]: https://github.com/home-assistant/core/pull/100437 [#100438]: https://github.com/home-assistant/core/pull/100438 [#100439]: https://github.com/home-assistant/core/pull/100439 [#100441]: https://github.com/home-assistant/core/pull/100441 @@ -955,6 +1029,7 @@ For a summary in a more readable format: [#100613]: https://github.com/home-assistant/core/pull/100613 [#100614]: https://github.com/home-assistant/core/pull/100614 [#100615]: https://github.com/home-assistant/core/pull/100615 +[#100619]: https://github.com/home-assistant/core/pull/100619 [#100623]: https://github.com/home-assistant/core/pull/100623 [#100624]: https://github.com/home-assistant/core/pull/100624 [#100625]: https://github.com/home-assistant/core/pull/100625 @@ -1005,6 +1080,7 @@ For a summary in a more readable format: [#100739]: https://github.com/home-assistant/core/pull/100739 [#100740]: https://github.com/home-assistant/core/pull/100740 [#100742]: https://github.com/home-assistant/core/pull/100742 +[#100743]: https://github.com/home-assistant/core/pull/100743 [#100744]: https://github.com/home-assistant/core/pull/100744 [#100749]: https://github.com/home-assistant/core/pull/100749 [#100759]: https://github.com/home-assistant/core/pull/100759 @@ -1084,6 +1160,7 @@ For a summary in a more readable format: [#100916]: https://github.com/home-assistant/core/pull/100916 [#100918]: https://github.com/home-assistant/core/pull/100918 [#100921]: https://github.com/home-assistant/core/pull/100921 +[#100922]: https://github.com/home-assistant/core/pull/100922 [#100929]: https://github.com/home-assistant/core/pull/100929 [#100931]: https://github.com/home-assistant/core/pull/100931 [#100932]: https://github.com/home-assistant/core/pull/100932 @@ -1117,9 +1194,70 @@ For a summary in a more readable format: [#100986]: https://github.com/home-assistant/core/pull/100986 [#100993]: https://github.com/home-assistant/core/pull/100993 [#100994]: https://github.com/home-assistant/core/pull/100994 +[#101001]: https://github.com/home-assistant/core/pull/101001 [#101005]: https://github.com/home-assistant/core/pull/101005 [#101006]: https://github.com/home-assistant/core/pull/101006 [#101008]: https://github.com/home-assistant/core/pull/101008 +[#101015]: https://github.com/home-assistant/core/pull/101015 +[#101021]: https://github.com/home-assistant/core/pull/101021 +[#101022]: https://github.com/home-assistant/core/pull/101022 +[#101028]: https://github.com/home-assistant/core/pull/101028 +[#101032]: https://github.com/home-assistant/core/pull/101032 +[#101035]: https://github.com/home-assistant/core/pull/101035 +[#101044]: https://github.com/home-assistant/core/pull/101044 +[#101052]: https://github.com/home-assistant/core/pull/101052 +[#101054]: https://github.com/home-assistant/core/pull/101054 +[#101057]: https://github.com/home-assistant/core/pull/101057 +[#101060]: https://github.com/home-assistant/core/pull/101060 +[#101063]: https://github.com/home-assistant/core/pull/101063 +[#101067]: https://github.com/home-assistant/core/pull/101067 +[#101072]: https://github.com/home-assistant/core/pull/101072 +[#101073]: https://github.com/home-assistant/core/pull/101073 +[#101079]: https://github.com/home-assistant/core/pull/101079 +[#101081]: https://github.com/home-assistant/core/pull/101081 +[#101087]: https://github.com/home-assistant/core/pull/101087 +[#101088]: https://github.com/home-assistant/core/pull/101088 +[#101092]: https://github.com/home-assistant/core/pull/101092 +[#101096]: https://github.com/home-assistant/core/pull/101096 +[#101099]: https://github.com/home-assistant/core/pull/101099 +[#101104]: https://github.com/home-assistant/core/pull/101104 +[#101105]: https://github.com/home-assistant/core/pull/101105 +[#101106]: https://github.com/home-assistant/core/pull/101106 +[#101107]: https://github.com/home-assistant/core/pull/101107 +[#101112]: https://github.com/home-assistant/core/pull/101112 +[#101117]: https://github.com/home-assistant/core/pull/101117 +[#101119]: https://github.com/home-assistant/core/pull/101119 +[#101123]: https://github.com/home-assistant/core/pull/101123 +[#101127]: https://github.com/home-assistant/core/pull/101127 +[#101129]: https://github.com/home-assistant/core/pull/101129 +[#101143]: https://github.com/home-assistant/core/pull/101143 +[#101147]: https://github.com/home-assistant/core/pull/101147 +[#101162]: https://github.com/home-assistant/core/pull/101162 +[#101164]: https://github.com/home-assistant/core/pull/101164 +[#101168]: https://github.com/home-assistant/core/pull/101168 +[#101169]: https://github.com/home-assistant/core/pull/101169 +[#101176]: https://github.com/home-assistant/core/pull/101176 +[#101180]: https://github.com/home-assistant/core/pull/101180 +[#101205]: https://github.com/home-assistant/core/pull/101205 +[#101206]: https://github.com/home-assistant/core/pull/101206 +[#101211]: https://github.com/home-assistant/core/pull/101211 +[#101213]: https://github.com/home-assistant/core/pull/101213 +[#101214]: https://github.com/home-assistant/core/pull/101214 +[#101215]: https://github.com/home-assistant/core/pull/101215 +[#101221]: https://github.com/home-assistant/core/pull/101221 +[#101241]: https://github.com/home-assistant/core/pull/101241 +[#101251]: https://github.com/home-assistant/core/pull/101251 +[#101254]: https://github.com/home-assistant/core/pull/101254 +[#101255]: https://github.com/home-assistant/core/pull/101255 +[#101256]: https://github.com/home-assistant/core/pull/101256 +[#101259]: https://github.com/home-assistant/core/pull/101259 +[#101263]: https://github.com/home-assistant/core/pull/101263 +[#101266]: https://github.com/home-assistant/core/pull/101266 +[#101277]: https://github.com/home-assistant/core/pull/101277 +[#101281]: https://github.com/home-assistant/core/pull/101281 +[#101285]: https://github.com/home-assistant/core/pull/101285 +[#101294]: https://github.com/home-assistant/core/pull/101294 +[#101297]: https://github.com/home-assistant/core/pull/101297 [#58707]: https://github.com/home-assistant/core/pull/58707 [#72797]: https://github.com/home-assistant/core/pull/72797 [#75530]: https://github.com/home-assistant/core/pull/75530 @@ -1137,10 +1275,12 @@ For a summary in a more readable format: [#95315]: https://github.com/home-assistant/core/pull/95315 [#95589]: https://github.com/home-assistant/core/pull/95589 [#96255]: https://github.com/home-assistant/core/pull/96255 +[#96283]: https://github.com/home-assistant/core/pull/96283 [#96541]: https://github.com/home-assistant/core/pull/96541 [#96829]: https://github.com/home-assistant/core/pull/96829 [#96950]: https://github.com/home-assistant/core/pull/96950 [#97123]: https://github.com/home-assistant/core/pull/97123 +[#97229]: https://github.com/home-assistant/core/pull/97229 [#97586]: https://github.com/home-assistant/core/pull/97586 [#97723]: https://github.com/home-assistant/core/pull/97723 [#97837]: https://github.com/home-assistant/core/pull/97837 @@ -1171,6 +1311,7 @@ For a summary in a more readable format: [#99236]: https://github.com/home-assistant/core/pull/99236 [#99242]: https://github.com/home-assistant/core/pull/99242 [#99256]: https://github.com/home-assistant/core/pull/99256 +[#99262]: https://github.com/home-assistant/core/pull/99262 [#99285]: https://github.com/home-assistant/core/pull/99285 [#99301]: https://github.com/home-assistant/core/pull/99301 [#99302]: https://github.com/home-assistant/core/pull/99302 @@ -1318,6 +1459,7 @@ For a summary in a more readable format: [#99745]: https://github.com/home-assistant/core/pull/99745 [#99746]: https://github.com/home-assistant/core/pull/99746 [#99747]: https://github.com/home-assistant/core/pull/99747 +[#99751]: https://github.com/home-assistant/core/pull/99751 [#99755]: https://github.com/home-assistant/core/pull/99755 [#99758]: https://github.com/home-assistant/core/pull/99758 [#99762]: https://github.com/home-assistant/core/pull/99762 @@ -1383,6 +1525,7 @@ For a summary in a more readable format: [#99946]: https://github.com/home-assistant/core/pull/99946 [#99948]: https://github.com/home-assistant/core/pull/99948 [#99954]: https://github.com/home-assistant/core/pull/99954 +[#99963]: https://github.com/home-assistant/core/pull/99963 [#99965]: https://github.com/home-assistant/core/pull/99965 [#99967]: https://github.com/home-assistant/core/pull/99967 [#99971]: https://github.com/home-assistant/core/pull/99971 @@ -1393,12 +1536,14 @@ For a summary in a more readable format: [#99984]: https://github.com/home-assistant/core/pull/99984 [#99989]: https://github.com/home-assistant/core/pull/99989 [#99990]: https://github.com/home-assistant/core/pull/99990 +[#99992]: https://github.com/home-assistant/core/pull/99992 [#99998]: https://github.com/home-assistant/core/pull/99998 [@ArdaSeremet]: https://github.com/ArdaSeremet [@AtomBrake]: https://github.com/AtomBrake [@Cereal2nd]: https://github.com/Cereal2nd [@DCSBL]: https://github.com/DCSBL [@DanielWeeber]: https://github.com/DanielWeeber +[@Danielhiversen]: https://github.com/Danielhiversen [@FletcherAU]: https://github.com/FletcherAU [@Jc2k]: https://github.com/Jc2k [@Kane610]: https://github.com/Kane610 @@ -1419,6 +1564,7 @@ For a summary in a more readable format: [@ViViDboarder]: https://github.com/ViViDboarder [@WillCodeForCats]: https://github.com/WillCodeForCats [@abmantis]: https://github.com/abmantis +[@agners]: https://github.com/agners [@alexyao2015]: https://github.com/alexyao2015 [@allenporter]: https://github.com/allenporter [@alyyousuf7]: https://github.com/alyyousuf7 @@ -1442,12 +1588,14 @@ For a summary in a more readable format: [@elmurato]: https://github.com/elmurato [@emontnemery]: https://github.com/emontnemery [@engrbm87]: https://github.com/engrbm87 +[@farmio]: https://github.com/farmio [@fender4645]: https://github.com/fender4645 [@frenck]: https://github.com/frenck [@gjohansson-ST]: https://github.com/gjohansson-ST [@gwww]: https://github.com/gwww [@h3l1o5]: https://github.com/h3l1o5 [@hahn-th]: https://github.com/hahn-th +[@hlyi]: https://github.com/hlyi [@janiversen]: https://github.com/janiversen [@jbouwh]: https://github.com/jbouwh [@jeeftor]: https://github.com/jeeftor @@ -1455,12 +1603,15 @@ For a summary in a more readable format: [@jesserockz]: https://github.com/jesserockz [@jhollowe]: https://github.com/jhollowe [@jimmyd-be]: https://github.com/jimmyd-be +[@jjlawren]: https://github.com/jjlawren [@joostlek]: https://github.com/joostlek [@jpbede]: https://github.com/jpbede [@jrieger]: https://github.com/jrieger [@kbx81]: https://github.com/kbx81 [@kevin-kraus]: https://github.com/kevin-kraus +[@lennart24]: https://github.com/lennart24 [@loopj]: https://github.com/loopj +[@marcelveldt]: https://github.com/marcelveldt [@matrixd2]: https://github.com/matrixd2 [@mib1185]: https://github.com/mib1185 [@mike391]: https://github.com/mike391 @@ -1469,8 +1620,11 @@ For a summary in a more readable format: [@ms264556]: https://github.com/ms264556 [@mueli]: https://github.com/mueli [@nachonam]: https://github.com/nachonam +[@natekspencer]: https://github.com/natekspencer [@niro1987]: https://github.com/niro1987 [@ntilley905]: https://github.com/ntilley905 +[@ol-iver]: https://github.com/ol-iver +[@piitaya]: https://github.com/piitaya [@pjanuario]: https://github.com/pjanuario [@puddly]: https://github.com/puddly [@raman325]: https://github.com/raman325 @@ -1481,336 +1635,20 @@ For a summary in a more readable format: [@samcrang]: https://github.com/samcrang [@scolby33]: https://github.com/scolby33 [@scop]: https://github.com/scop +[@silamon]: https://github.com/silamon [@starkillerOG]: https://github.com/starkillerOG [@steffenrapp]: https://github.com/steffenrapp [@synesthesiam]: https://github.com/synesthesiam [@teharris1]: https://github.com/teharris1 +[@the-ress]: https://github.com/the-ress [@thecode]: https://github.com/thecode [@timmo001]: https://github.com/timmo001 [@tjhorner]: https://github.com/tjhorner [@tokenize47]: https://github.com/tokenize47 [@trnila]: https://github.com/trnila [@tronikos]: https://github.com/tronikos +[@tyjtyj]: https://github.com/tyjtyj [@unDemian]: https://github.com/unDemian [@uvjustin]: https://github.com/uvjustin [@vfreex]: https://github.com/vfreex [@yuxincs]: https://github.com/yuxincs -[aemet docs]: /integrations/aemet/ -[aftership docs]: /integrations/aftership/ -[airly docs]: /integrations/airly/ -[airnow docs]: /integrations/airnow/ -[airthings_ble docs]: /integrations/airthings_ble/ -[airtouch4 docs]: /integrations/airtouch4/ -[airvisual docs]: /integrations/airvisual/ -[airzone docs]: /integrations/airzone/ -[airzone_cloud docs]: /integrations/airzone_cloud/ -[aladdin_connect docs]: /integrations/aladdin_connect/ -[alexa docs]: /integrations/alexa/ -[amcrest docs]: /integrations/amcrest/ -[androidtv docs]: /integrations/androidtv/ -[anthemav docs]: /integrations/anthemav/ -[apcupsd docs]: /integrations/apcupsd/ -[api docs]: /integrations/api/ -[apple_tv docs]: /integrations/apple_tv/ -[apprise docs]: /integrations/apprise/ -[assist_pipeline docs]: /integrations/assist_pipeline/ -[august docs]: /integrations/august/ -[aurora docs]: /integrations/aurora/ -[automation docs]: /integrations/automation/ -[awair docs]: /integrations/awair/ -[baf docs]: /integrations/baf/ -[blink docs]: /integrations/blink/ -[bloomsky docs]: /integrations/bloomsky/ -[bluetooth docs]: /integrations/bluetooth/ -[bluetooth_tracker docs]: /integrations/bluetooth_tracker/ -[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ -[bond docs]: /integrations/bond/ -[braviatv docs]: /integrations/braviatv/ -[bsblan docs]: /integrations/bsblan/ -[bthome docs]: /integrations/bthome/ -[buienradar docs]: /integrations/buienradar/ -[cast docs]: /integrations/cast/ -[cert_expiry docs]: /integrations/cert_expiry/ -[climate docs]: /integrations/climate/ -[co2signal docs]: /integrations/co2signal/ -[color_extractor docs]: /integrations/color_extractor/ -[comelit docs]: /integrations/comelit/ -[conversation docs]: /integrations/conversation/ -[coolmaster docs]: /integrations/coolmaster/ -[datetime docs]: /integrations/datetime/ -[debugpy docs]: /integrations/debugpy/ -[deconz docs]: /integrations/deconz/ -[denonavr docs]: /integrations/denonavr/ -[device_tracker docs]: /integrations/device_tracker/ -[devolo_home_control docs]: /integrations/devolo_home_control/ -[devolo_home_network docs]: /integrations/devolo_home_network/ -[dhcp docs]: /integrations/dhcp/ -[discovergy docs]: /integrations/discovergy/ -[dlna_dmr docs]: /integrations/dlna_dmr/ -[dlna_dms docs]: /integrations/dlna_dms/ -[doods docs]: /integrations/doods/ -[doorbird docs]: /integrations/doorbird/ -[duotecno docs]: /integrations/duotecno/ -[dynalite docs]: /integrations/dynalite/ -[ecobee docs]: /integrations/ecobee/ -[ecoforest docs]: /integrations/ecoforest/ -[econet docs]: /integrations/econet/ -[electric_kiwi docs]: /integrations/electric_kiwi/ -[elkm1 docs]: /integrations/elkm1/ -[emulated_kasa docs]: /integrations/emulated_kasa/ -[enmax docs]: /integrations/enmax/ -[enphase_envoy docs]: /integrations/enphase_envoy/ -[envisalink docs]: /integrations/envisalink/ -[esphome docs]: /integrations/esphome/ -[faa_delays docs]: /integrations/faa_delays/ -[fibaro docs]: /integrations/fibaro/ -[fitbit docs]: /integrations/fitbit/ -[flipr docs]: /integrations/flipr/ -[flo docs]: /integrations/flo/ -[flux_led docs]: /integrations/flux_led/ -[freebox docs]: /integrations/freebox/ -[fritz docs]: /integrations/fritz/ -[fritzbox docs]: /integrations/fritzbox/ -[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ -[frontend docs]: /integrations/frontend/ -[garadget docs]: /integrations/garadget/ -[geniushub docs]: /integrations/geniushub/ -[glances docs]: /integrations/glances/ -[gogogate2 docs]: /integrations/gogogate2/ -[goodwe docs]: /integrations/goodwe/ -[google docs]: /integrations/google/ -[google_assistant docs]: /integrations/google_assistant/ -[gpsd docs]: /integrations/gpsd/ -[hardkernel docs]: /integrations/hardkernel/ -[hassio docs]: /integrations/hassio/ -[hdmi_cec docs]: /integrations/hdmi_cec/ -[heos docs]: /integrations/heos/ -[hisense_aehw4a1 docs]: /integrations/hisense_aehw4a1/ -[hlk_sw16 docs]: /integrations/hlk_sw16/ -[home_connect docs]: /integrations/home_connect/ -[homeassistant docs]: /integrations/homeassistant/ -[homeassistant_green docs]: /integrations/homeassistant_green/ -[homeassistant_hardware docs]: /integrations/homeassistant_hardware/ -[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ -[homekit docs]: /integrations/homekit/ -[homekit_controller docs]: /integrations/homekit_controller/ -[homematicip_cloud docs]: /integrations/homematicip_cloud/ -[homewizard docs]: /integrations/homewizard/ -[honeywell docs]: /integrations/honeywell/ -[huawei_lte docs]: /integrations/huawei_lte/ -[hue docs]: /integrations/hue/ -[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ -[hvv_departures docs]: /integrations/hvv_departures/ -[hydrawise docs]: /integrations/hydrawise/ -[hyperion docs]: /integrations/hyperion/ -[iaqualink docs]: /integrations/iaqualink/ -[icloud docs]: /integrations/icloud/ -[idasen_desk docs]: /integrations/idasen_desk/ -[imap docs]: /integrations/imap/ -[imap_email_content docs]: /integrations/imap_email_content/ -[input_button docs]: /integrations/input_button/ -[insteon docs]: /integrations/insteon/ -[intent_script docs]: /integrations/intent_script/ -[ios docs]: /integrations/ios/ -[ipma docs]: /integrations/ipma/ -[islamic_prayer_times docs]: /integrations/islamic_prayer_times/ -[isy994 docs]: /integrations/isy994/ -[izone docs]: /integrations/izone/ -[juicenet docs]: /integrations/juicenet/ -[keenetic_ndms2 docs]: /integrations/keenetic_ndms2/ -[knx docs]: /integrations/knx/ -[kodi docs]: /integrations/kodi/ -[konnected docs]: /integrations/konnected/ -[kostal_plenticore docs]: /integrations/kostal_plenticore/ -[kulersky docs]: /integrations/kulersky/ -[laundrify docs]: /integrations/laundrify/ -[lcn docs]: /integrations/lcn/ -[ld2410_ble docs]: /integrations/ld2410_ble/ -[led_ble docs]: /integrations/led_ble/ -[life360 docs]: /integrations/life360/ -[lifx docs]: /integrations/lifx/ -[limitlessled docs]: /integrations/limitlessled/ -[livisi docs]: /integrations/livisi/ -[logger docs]: /integrations/logger/ -[logi_circle docs]: /integrations/logi_circle/ -[london_underground docs]: /integrations/london_underground/ -[lookin docs]: /integrations/lookin/ -[lyric docs]: /integrations/lyric/ -[matrix docs]: /integrations/matrix/ -[medcom_ble docs]: /integrations/medcom_ble/ -[media_extractor docs]: /integrations/media_extractor/ -[met docs]: /integrations/met/ -[met_eireann docs]: /integrations/met_eireann/ -[meteoclimatic docs]: /integrations/meteoclimatic/ -[mill docs]: /integrations/mill/ -[minecraft_server docs]: /integrations/minecraft_server/ -[mobile_app docs]: /integrations/mobile_app/ -[modbus docs]: /integrations/modbus/ -[motion_blinds docs]: /integrations/motion_blinds/ -[motioneye docs]: /integrations/motioneye/ -[mqtt docs]: /integrations/mqtt/ -[mqtt_room docs]: /integrations/mqtt_room/ -[mutesync docs]: /integrations/mutesync/ -[myq docs]: /integrations/myq/ -[mysensors docs]: /integrations/mysensors/ -[nanoleaf docs]: /integrations/nanoleaf/ -[neato docs]: /integrations/neato/ -[nest docs]: /integrations/nest/ -[netatmo docs]: /integrations/netatmo/ -[netgear docs]: /integrations/netgear/ -[nexia docs]: /integrations/nexia/ -[nextbus docs]: /integrations/nextbus/ -[nibe_heatpump docs]: /integrations/nibe_heatpump/ -[nightscout docs]: /integrations/nightscout/ -[nobo_hub docs]: /integrations/nobo_hub/ -[nuheat docs]: /integrations/nuheat/ -[nut docs]: /integrations/nut/ -[nws docs]: /integrations/nws/ -[nx584 docs]: /integrations/nx584/ -[nzbget docs]: /integrations/nzbget/ -[octoprint docs]: /integrations/octoprint/ -[omnilogic docs]: /integrations/omnilogic/ -[ondilo_ico docs]: /integrations/ondilo_ico/ -[onvif docs]: /integrations/onvif/ -[openhome docs]: /integrations/openhome/ -[opentherm_gw docs]: /integrations/opentherm_gw/ -[openuv docs]: /integrations/openuv/ -[opower docs]: /integrations/opower/ -[overkiz docs]: /integrations/overkiz/ -[picnic docs]: /integrations/picnic/ -[plaato docs]: /integrations/plaato/ -[plex docs]: /integrations/plex/ -[plugwise docs]: /integrations/plugwise/ -[plum_lightpad docs]: /integrations/plum_lightpad/ -[point docs]: /integrations/point/ -[poolsense docs]: /integrations/poolsense/ -[powerwall docs]: /integrations/powerwall/ -[private_ble_device docs]: /integrations/private_ble_device/ -[progettihwsw docs]: /integrations/progettihwsw/ -[prometheus docs]: /integrations/prometheus/ -[rachio docs]: /integrations/rachio/ -[rainbird docs]: /integrations/rainbird/ -[rainforest_eagle docs]: /integrations/rainforest_eagle/ -[rainmachine docs]: /integrations/rainmachine/ -[raspberry_pi docs]: /integrations/raspberry_pi/ -[recorder docs]: /integrations/recorder/ -[renson docs]: /integrations/renson/ -[reolink docs]: /integrations/reolink/ -[rest docs]: /integrations/rest/ -[ring docs]: /integrations/ring/ -[risco docs]: /integrations/risco/ -[roborock docs]: /integrations/roborock/ -[roku docs]: /integrations/roku/ -[roomba docs]: /integrations/roomba/ -[ruckus_unleashed docs]: /integrations/ruckus_unleashed/ -[saj docs]: /integrations/saj/ -[samsungtv docs]: /integrations/samsungtv/ -[schlage docs]: /integrations/schlage/ -[scrape docs]: /integrations/scrape/ -[screenlogic docs]: /integrations/screenlogic/ -[script docs]: /integrations/script/ -[search docs]: /integrations/search/ -[sense docs]: /integrations/sense/ -[sensibo docs]: /integrations/sensibo/ -[sensor docs]: /integrations/sensor/ -[sentry docs]: /integrations/sentry/ -[sharkiq docs]: /integrations/sharkiq/ -[shelly docs]: /integrations/shelly/ -[sia docs]: /integrations/sia/ -[simplepush docs]: /integrations/simplepush/ -[slack docs]: /integrations/slack/ -[sma docs]: /integrations/sma/ -[smappee docs]: /integrations/smappee/ -[smart_meter_texas docs]: /integrations/smart_meter_texas/ -[smartthings docs]: /integrations/smartthings/ -[smarttub docs]: /integrations/smarttub/ -[sms docs]: /integrations/sms/ -[smtp docs]: /integrations/smtp/ -[snapcast docs]: /integrations/snapcast/ -[snooz docs]: /integrations/snooz/ -[solaredge docs]: /integrations/solaredge/ -[solarlog docs]: /integrations/solarlog/ -[sonarr docs]: /integrations/sonarr/ -[songpal docs]: /integrations/songpal/ -[soundtouch docs]: /integrations/soundtouch/ -[spc docs]: /integrations/spc/ -[speedtestdotnet docs]: /integrations/speedtestdotnet/ -[spotify docs]: /integrations/spotify/ -[sql docs]: /integrations/sql/ -[squeezebox docs]: /integrations/squeezebox/ -[srp_energy docs]: /integrations/srp_energy/ -[ssdp docs]: /integrations/ssdp/ -[starline docs]: /integrations/starline/ -[stream docs]: /integrations/stream/ -[stt docs]: /integrations/stt/ -[sun docs]: /integrations/sun/ -[supla docs]: /integrations/supla/ -[switchbot_cloud docs]: /integrations/switchbot_cloud/ -[syncthing docs]: /integrations/syncthing/ -[syncthru docs]: /integrations/syncthru/ -[system_bridge docs]: /integrations/system_bridge/ -[system_log docs]: /integrations/system_log/ -[tado docs]: /integrations/tado/ -[tankerkoenig docs]: /integrations/tankerkoenig/ -[tasmota docs]: /integrations/tasmota/ -[tellduslive docs]: /integrations/tellduslive/ -[template docs]: /integrations/template/ -[threshold docs]: /integrations/threshold/ -[timer docs]: /integrations/timer/ -[todoist docs]: /integrations/todoist/ -[tolo docs]: /integrations/tolo/ -[tomorrowio docs]: /integrations/tomorrowio/ -[tplink docs]: /integrations/tplink/ -[tplink_omada docs]: /integrations/tplink_omada/ -[tradfri docs]: /integrations/tradfri/ -[trafikverket_camera docs]: /integrations/trafikverket_camera/ -[trafikverket_ferry docs]: /integrations/trafikverket_ferry/ -[trafikverket_train docs]: /integrations/trafikverket_train/ -[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ -[trend docs]: /integrations/trend/ -[tts docs]: /integrations/tts/ -[twinkly docs]: /integrations/twinkly/ -[twitch docs]: /integrations/twitch/ -[ultraloq docs]: /integrations/ultraloq/ -[unifi docs]: /integrations/unifi/ -[unifiprotect docs]: /integrations/unifiprotect/ -[universal docs]: /integrations/universal/ -[upb docs]: /integrations/upb/ -[upnp docs]: /integrations/upnp/ -[uptimerobot docs]: /integrations/uptimerobot/ -[velux docs]: /integrations/velux/ -[venstar docs]: /integrations/venstar/ -[vera docs]: /integrations/vera/ -[versasense docs]: /integrations/versasense/ -[vesync docs]: /integrations/vesync/ -[vicare docs]: /integrations/vicare/ -[vizio docs]: /integrations/vizio/ -[vlc_telnet docs]: /integrations/vlc_telnet/ -[vodafone_station docs]: /integrations/vodafone_station/ -[volumio docs]: /integrations/volumio/ -[wake_word docs]: /integrations/wake_word/ -[wallbox docs]: /integrations/wallbox/ -[waqi docs]: /integrations/waqi/ -[waze_travel_time docs]: /integrations/waze_travel_time/ -[weatherflow docs]: /integrations/weatherflow/ -[weatherkit docs]: /integrations/weatherkit/ -[websocket_api docs]: /integrations/websocket_api/ -[wiffi docs]: /integrations/wiffi/ -[wilight docs]: /integrations/wilight/ -[withings docs]: /integrations/withings/ -[wiz docs]: /integrations/wiz/ -[wled docs]: /integrations/wled/ -[wolflink docs]: /integrations/wolflink/ -[workday docs]: /integrations/workday/ -[ws66i docs]: /integrations/ws66i/ -[wyoming docs]: /integrations/wyoming/ -[xbox docs]: /integrations/xbox/ -[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ -[yardian docs]: /integrations/yardian/ -[yeelight docs]: /integrations/yeelight/ -[yolink docs]: /integrations/yolink/ -[zamg docs]: /integrations/zamg/ -[zeroconf docs]: /integrations/zeroconf/ -[zerproc docs]: /integrations/zerproc/ -[zha docs]: /integrations/zha/ -[zwave_js docs]: /integrations/zwave_js/ From b1d61f532ce6ca703c2e6f98ce6ccd94bc806f2a Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 Oct 2023 21:09:17 +0200 Subject: [PATCH 087/109] 2023.10: Update social graph image --- source/images/blog/2023-10/social.png | Bin 34872 -> 37474 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/source/images/blog/2023-10/social.png b/source/images/blog/2023-10/social.png index 09c5552626a84610ff44648fba585c36d6062379..97fc322318f6a361cab450d93cdd80b5e110e0dd 100644 GIT binary patch literal 37474 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

<@%1@5gw#hu~?MK0YZ% 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 DXt7)< From cb8b9fc8a9d87cc307a2d8ea5bcc5d1828915069 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Wed, 4 Oct 2023 04:29:48 -0500 Subject: [PATCH 088/109] Add wake_word integration docs (#28310) Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_integrations/wake_word.markdown | 20 ++++++++++++++++++++ source/_integrations/wyoming.markdown | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 source/_integrations/wake_word.markdown diff --git a/source/_integrations/wake_word.markdown b/source/_integrations/wake_word.markdown new file mode 100644 index 00000000000..d10e861aa65 --- /dev/null +++ b/source/_integrations/wake_word.markdown @@ -0,0 +1,20 @@ +--- +title: Wake-word-detection +description: Detect a wake word in streaming audio. +ha_category: + - Voice +ha_release: '2023.9' +ha_codeowners: + - '@balloob' + - '@synesthesiam' +ha_domain: wake_word +ha_integration_type: entity +--- + +A wake-word-detection entity allows other integrations or applications to detect wake words in streaming audio. + +The wake-word-detection entities cannot be implemented manually, but can be provided by integrations such as [Wyoming](/integrations/wyoming). The API in [Assist Pipelines](https://developers.home-assistant.io/docs/voice/pipelines/) enables wake-word-detection as part of [Assist](/voice_control/). + + + +{% include integrations/building_block_integration.md %} diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index 35cde5452d0..74cfc9d8e74 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -13,12 +13,14 @@ ha_integration_type: integration ha_platforms: - stt - tts + - wake_word ha_config_flow: true --- -The Wyoming integration connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/) and [text-to-speech](/integrations/tts/) systems, such as: +The Wyoming integration connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/), [text-to-speech](/integrations/tts/), and [wake-word-detection](/integrations/wake_word/) systems, such as: - Whisper {% my supervisor_addon badge addon="core_whisper" %} - Piper {% my supervisor_addon badge addon="core_piper" %} +- openWakeWord {% my supervisor_addon badge addon="core_openwakeword" %} {% include integrations/config_flow.md %} From 01014021daf45e03ca448cd38645406f514f5412 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 12:36:14 +0200 Subject: [PATCH 089/109] 2023.10: Update date --- source/_posts/2023-10-04-release-202310.markdown | 2 +- source/changelogs/core-2023.10.markdown | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 681362bb661..1f9c36fcbb5 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -2,7 +2,7 @@ layout: post title: "2023.10: Beta release notes" description: "The beta release notes for Home Assistant 2023.10" -date: 2023-09-27 00:00:00 +date: 2023-10-04 00:00:00 date_formatted: "October 4, 2023" author: Franck Nijhof author_twitter: frenck diff --git a/source/changelogs/core-2023.10.markdown b/source/changelogs/core-2023.10.markdown index 085144997a5..9ebf549d418 100644 --- a/source/changelogs/core-2023.10.markdown +++ b/source/changelogs/core-2023.10.markdown @@ -7,7 +7,7 @@ replace_regex: \s\(\[?[a-z0-9\-\s_]+\]?\)$ These are all the changes included in the Home Assistant Core 2023.10 release. For a summary in a more readable format: -[Release notes blog for this release](/blog/2023/09/27/release-202310/). +[Release notes blog for this release](/blog/2023/10/04/release-202310/). ## All changes From c45fca44fd9463ad659f053fff2c03506922adab Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 12:36:43 +0200 Subject: [PATCH 090/109] 2023.10: Finish breaking changes --- .../_posts/2023-10-04-release-202310.markdown | 36 +++++++++---------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 1f9c36fcbb5..bf252e76a65 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -254,13 +254,11 @@ other news about building an Open Home; straight into your inbox. ## Breaking changes -**Note**: Breaking changes processed up to PR 100959 - {% details "HomeKit Bridge" %} The HomeKit integration now supports media player receivers. HomeKit expects -receivers to be paired in accessory mode. Existing receivers that were paired -in bridge mode should be re-added in [accessory mode](/integrations/homekit/#accessory-mode). +receivers to be paired in accessory mode. Existing receivers paired in bridge +mode should be re-added in [accessory mode](/integrations/homekit/#accessory-mode). ([@bdraco] - [#100717]) ([documentation](/integrations/homekit)) @@ -271,9 +269,9 @@ in bridge mode should be re-added in [accessory mode](/integrations/homekit/#acc {% details "Modbus" %} -The `close_comm_on_error` configuration is no optional, sockets will always -be closed on error. Therefore, the `close_comm_on_error` is now deprecated, -and will be removed in Home Assistant 2024.3. +The `close_comm_on_error` configuration is no longer optional, sockets will +always be closed on error. Therefore, the `close_comm_on_error` is now +deprecated and will be removed in Home Assistant 2024.3. ([@janiversen] - [#99946]) ([documentation](/integrations/modbus)) @@ -288,7 +286,7 @@ An MQTT lock with a configured state topic will initialize with state `unknown` instead of state `unlocked` unless the lock is set to optimistic mode. MQTT locks set to optimistic mode will still be initialized with -state `unlocked`. You should check if your automations are affected. +the `unlocked` state. You should check if your automations are affected. ([@jbouwh] - [#100943]) ([documentation](/integrations/mqtt)) @@ -299,11 +297,11 @@ state `unlocked`. You should check if your automations are affected. {% details "NZBGet" %} -The option to set a custom scan interval in NZBGet via configuring the entry -is removed. The update interval is now every 5 seconds. +The option to set a custom scan interval in NZBGet via the options UI has been +removed. The update interval is now every 5 seconds. If you want to restore the custom scan interval behavior, -please checkout [the `homeassistant.update_entity` service](/common-tasks/general/#defining-a-custom-polling-interval). +please see [the `homeassistant.update_entity` service](/common-tasks/general/#defining-a-custom-polling-interval). ([@joostlek] - [#98869]) ([documentation](/integrations/nzbget)) @@ -314,8 +312,8 @@ please checkout [the `homeassistant.update_entity` service](/common-tasks/genera {% details "OpenTherm Gateway" %} -Some of the older binary sensors and sensors from OpenTherm gateway have been -deprecated since January 2021. They have now been removed. Please use +Some of the older binary sensors and sensors from the OpenTherm gateway have +been deprecated since January 2021. They have now been removed. Please use the new binary sensors and sensors that have been created since. ([@joostlek] - [#99712]) ([documentation](/integrations/opentherm_gw)) @@ -328,7 +326,7 @@ the new binary sensors and sensors that have been created since. {% details "Pentair ScreenLogic" %} Some entity names have changed. The integration will migrate old entities -to new names/ids. You may have to manually update old entities used +to new names/IDs. You may have to manually update old entities used in, for example, your dashboards. Invalid entities such as "Saturation Index" are removed @@ -344,9 +342,8 @@ if the required equipment is not configured. {% details "Supervisor" %} The default name given to backups created with the `hassio.full_backup` -and `hassio.partial_backup` services is no longer the UTC date and time the -backup was initiated (`%Y-%m-%d %H:%M:%S`) but instead the local date and -time the backup was initiated (`%Y-%m-%d %H:%M:%S`). +and `hassio.partial_backup` services are no longer the UTC date and time the +backup was initiated but use the local date and time instead. ([@jpbede] - [#100959]) ([documentation](/integrations/hassio)) @@ -357,7 +354,7 @@ time the backup was initiated (`%Y-%m-%d %H:%M:%S`). {% details "Z-Wave" %} -Multiple websocket commands have been renamed based on [this change in Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/getting-started/migrating-to-v12?id=renamed-network-heal-to-rebuild-routes). +Multiple WebSocket commands have been renamed based on [this change in Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/getting-started/migrating-to-v12?id=renamed-network-heal-to-rebuild-routes). With this release, you will need to update your zwave-js-server instance. You must use zwave-js-server `1.32.0` or greater (schema `32`). @@ -379,6 +376,7 @@ 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: +- [Home Assistant is participating in Hacktoberfest 2023!](https://developers.home-assistant.io/blog/2023/10/01/hacktoberfest-2023) - [New way of excluding state attributes from recording](https://developers.home-assistant.io/blog/2023/09/20/excluding-state-attributes-from-recording) - [The websocket command entity/source has been modified](https://developers.home-assistant.io/blog/2023/09/12/ws-entity-source-simplified/) @@ -387,4 +385,4 @@ changes and new features available for your integration: Be sure to follow our ## 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.10](/changelogs/core-2023.10) \ No newline at end of file +all changes made here: [Full changelog for Home Assistant Core 2023.10](/changelogs/core-2023.10) From a9b846b3e8459e40d6feed09e074688baf547752 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 14:03:03 +0200 Subject: [PATCH 091/109] 2023.10: Update changelog --- source/changelogs/core-2023.10.markdown | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/source/changelogs/core-2023.10.markdown b/source/changelogs/core-2023.10.markdown index 9ebf549d418..3b9c0e60af4 100644 --- a/source/changelogs/core-2023.10.markdown +++ b/source/changelogs/core-2023.10.markdown @@ -774,6 +774,18 @@ For a summary in a more readable format: - Bump pylitterbot to 2023.4.9 ([@natekspencer] - [#101285]) - Update frontend to 20231002.0 ([@bramkragten] - [#101294]) - Update Lokalise CLI to v2.6.8 ([@frenck] - [#101297]) +- Remove duplicated device before daikin migration ([@mover85] - [#99900]) +- Revert PR #99077 for Aussie Broadband ([@Bre77] - [#101314]) +- Fix reference error in Aussie Broadband ([@Bre77] - [#101315]) +- Bump pyW800rf32 to 0.4 ([@mib1185] - [#101317]) +- Increase pipeline timeout to 5 minutes ([@synesthesiam] - [#101327]) +- Pipeline runs are only equal with same id ([@synesthesiam] - [#101341]) +- Fix manual stopping of the voice assistant pipeline ([@jesserockz] - [#101351]) +- Allow esphome device to disable vad on stream ([@jesserockz] - [#101352]) +- Fix temperature when myZone is in use for Advantage air ([@Bre77] - [#101316]) +- Check that dock error status is not None for Roborock ([@Lash-L] - [#101321]) +- Increase update interval of update platform in devolo_home_network ([@Shutgun] - [#101366]) +- Update Pillow to 10.0.1 ([@frenck] - [#101368]) [#100002]: https://github.com/home-assistant/core/pull/100002 [#100008]: https://github.com/home-assistant/core/pull/100008 @@ -1258,6 +1270,17 @@ For a summary in a more readable format: [#101285]: https://github.com/home-assistant/core/pull/101285 [#101294]: https://github.com/home-assistant/core/pull/101294 [#101297]: https://github.com/home-assistant/core/pull/101297 +[#101314]: https://github.com/home-assistant/core/pull/101314 +[#101315]: https://github.com/home-assistant/core/pull/101315 +[#101316]: https://github.com/home-assistant/core/pull/101316 +[#101317]: https://github.com/home-assistant/core/pull/101317 +[#101321]: https://github.com/home-assistant/core/pull/101321 +[#101327]: https://github.com/home-assistant/core/pull/101327 +[#101341]: https://github.com/home-assistant/core/pull/101341 +[#101351]: https://github.com/home-assistant/core/pull/101351 +[#101352]: https://github.com/home-assistant/core/pull/101352 +[#101366]: https://github.com/home-assistant/core/pull/101366 +[#101368]: https://github.com/home-assistant/core/pull/101368 [#58707]: https://github.com/home-assistant/core/pull/58707 [#72797]: https://github.com/home-assistant/core/pull/72797 [#75530]: https://github.com/home-assistant/core/pull/75530 @@ -1509,6 +1532,7 @@ For a summary in a more readable format: [#99893]: https://github.com/home-assistant/core/pull/99893 [#99894]: https://github.com/home-assistant/core/pull/99894 [#99895]: https://github.com/home-assistant/core/pull/99895 +[#99900]: https://github.com/home-assistant/core/pull/99900 [#99903]: https://github.com/home-assistant/core/pull/99903 [#99915]: https://github.com/home-assistant/core/pull/99915 [#99916]: https://github.com/home-assistant/core/pull/99916 @@ -1540,6 +1564,7 @@ For a summary in a more readable format: [#99998]: https://github.com/home-assistant/core/pull/99998 [@ArdaSeremet]: https://github.com/ArdaSeremet [@AtomBrake]: https://github.com/AtomBrake +[@Bre77]: https://github.com/Bre77 [@Cereal2nd]: https://github.com/Cereal2nd [@DCSBL]: https://github.com/DCSBL [@DanielWeeber]: https://github.com/DanielWeeber @@ -1617,6 +1642,7 @@ For a summary in a more readable format: [@mike391]: https://github.com/mike391 [@mikey0000]: https://github.com/mikey0000 [@mkmer]: https://github.com/mkmer +[@mover85]: https://github.com/mover85 [@ms264556]: https://github.com/ms264556 [@mueli]: https://github.com/mueli [@nachonam]: https://github.com/nachonam From 86ce3b9a3e4135badbf3b8747e1f42ab33899af4 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 14:07:41 +0200 Subject: [PATCH 092/109] 2023.10: New and moved to UI integrations finalized --- source/_posts/2023-10-04-release-202310.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index bf252e76a65..ec60424f40b 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -183,7 +183,7 @@ We welcome the following new integrations in this release: - **[IKEA IDÅSEN Desk]**, added by [@abmantis]
Connect and control the height of your IKEA IDÅSEN motorized desk. - **[Medcom Bluetooth]**, added by [@elafargue]
- Integrates you Medcom radiation monitors. + Integrates your Medcom radiation monitors. - **[Private BLE Device]**, added by [@Jc2k]
Track your BLE devices that change their MAC address frequently. - **[SwitchBot Cloud]**, added by [@SeraphicRav]
From 1635b1c165331397c76785d502648feacdb9d035 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 14:09:10 +0200 Subject: [PATCH 093/109] 2023.10: Other noteworthy changes finalized --- .../_posts/2023-10-04-release-202310.markdown | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index ec60424f40b..f38f8fdcab1 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -132,18 +132,16 @@ Temporary screenshot that needs to be replaced. ## Other noteworthy changes -**Note**: Changes processed up to PR 100967 - There are many more improvements in this release; here are some of the other noteworthy changes this release: - If you are using [ESPHome], you will notice much smaller Home Assistant backups when you have [the latest version] installed! -- The [HomeKit Bridge] integration now support media receivers! Thanks, [@bdraco]! +- The [HomeKit Bridge] integration now supports media receivers! Thanks, [@bdraco]! - [@Lash-L] keeps extending the [Roborock] integration. - In this release, water and last clean sensors have been added. Sweet! + In this release, water and last cleaned sensors have been added. Sweet! - [Withings] received lots of love this release, thanks [@joostlek]! It is now - easier to set up, and now also works with the [Home Assistant Cloud] webhooks + easier to set up and now also works with the [Home Assistant Cloud] webhooks for push updates! - [@allenporter] added calendar support to the [Rain Bird](/integrations/rainbird) integration, allowing you to see your irrigation schedule in Home Assistant! @@ -151,26 +149,24 @@ noteworthy changes this release: - The [System Bridge] integration now supports notifications! Thanks, [@timmo001]! - [@alexyao2015] added a button to [Life360] to trigger a poll to update the location information. Cool! -- It's now easier than ever to collect Z-Wave logs for troubleshooting. Just [enable debug logging](/integrations/zwave_js#how-do-i-access-the-z-wave-logs)! - -To process: - -- [Add an image fit mode to hui-image and picture-entity-card](https://github.com/home-assistant/frontend/pull/17959) +- It's now easier than ever to collect [Z-Wave] logs for troubleshooting. + Just [enable debug logging](/integrations/zwave_js#how-do-i-access-the-z-wave-logs)! [@alexyao2015]: https://github.com/alexyao2015 -[Life360]: /integrations/life360 -[@timmo001]: https://github.com/timmo001 -[System Bridge]: /integrations/system_bridge -[Home Assistant Cloud]: https://www.nabucasa.com [@allenporter]: https://github.com/allenporter -[@Lash-L]: https://github.com/Lash-L -[Roborock]: /integrations/roborock [@bdraco]: https://github.com/bdraco [@joostlek]: https://github.com/joostlek +[@Lash-L]: https://github.com/Lash-L +[@timmo001]: https://github.com/timmo001 [ESPHome]: https://esphome.io +[Home Assistant Cloud]: https://www.nabucasa.com [HomeKit Bridge]: /integrations/homekit +[Life360]: /integrations/life360 +[Roborock]: /integrations/roborock +[System Bridge]: /integrations/system_bridge [the latest version]: https://esphome.io/changelog/2023.9.0.html#esphome-2023-9-0-27th-september-2023 [Withings]: /integrations/withings +[Z-Wave]: /integrations/zwave_js ## New integrations From 4700b37c0d091d140eb652fc13e8911cac4be453 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 14:31:34 +0200 Subject: [PATCH 094/109] 2023.10: Add intro text --- .../_posts/2023-10-04-release-202310.markdown | 34 +++++-------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index f38f8fdcab1..d7062263ebd 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -15,34 +15,18 @@ og_image: /images/blog/2023-10/social.png
- - -These are the beta release notes for Home Assistant Core 2023.10 (and is thus a -work in progress). - -If you encounter any issues with the beta release, please report them on GitHub: - -- Issues with integrations, automations and such (Core related):
- -- Issues with the frontend/UI/dashboards:
- -- Issues with the documentation:
- - -Please be sure to include the beta version you are running in the issue -version field (not title), so we can classify your issue correctly. - -Issues introduced in the beta are processed with priority. - ---- - - - Home Assistant Core 2023.10! 🎉 -Thanks for helping out testing the beta! ❤️ +October! 🎃 It means we've just celebrated our birthday; we are now 10 years old! 🎂 In case you've missed our +[birthday YouTube stream](https://www.youtube.com/watch?v=EmLV6lJLzSU&t=2538s) with all the cool announcements, we've summed it all up in our [10 year Home Assistant blog post](/blog/2023/09/17/10-years-home-assistant/). -Enjoy the (beta) release! +Even more exciting news, as this is [Home Assistant's year of the voice](/blog/2022/12/20/year-of-voice/): Chapter 4 of this endeavor has been announced and will be [streamed live on YouTube](https://www.youtube.com/watch?v=YzgYYkOrnhQ)! Be sure to tune in! I've seen some early demos... All I'm going to say is: It is mind-blowing! 🤯 + +As for this release, because of all of the above, it is a bit smaller than usual in terms of features. I promise that chapter 4 is going to make it all worth it. Yet, it contains tons of updates, bug fixes, and a couple of beautiful new features for the Tile card! 🤩 + +Enjoy the release! + +../Frenck From 67841cf4d627b66a6c13349b12808f40dbdad0b5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 14:51:29 +0200 Subject: [PATCH 095/109] 2023.10: Intro tweaks --- source/_posts/2023-10-04-release-202310.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index d7062263ebd..e5c446059b7 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -20,7 +20,7 @@ Home Assistant Core 2023.10! 🎉 October! 🎃 It means we've just celebrated our birthday; we are now 10 years old! 🎂 In case you've missed our [birthday YouTube stream](https://www.youtube.com/watch?v=EmLV6lJLzSU&t=2538s) with all the cool announcements, we've summed it all up in our [10 year Home Assistant blog post](/blog/2023/09/17/10-years-home-assistant/). -Even more exciting news, as this is [Home Assistant's year of the voice](/blog/2022/12/20/year-of-voice/): Chapter 4 of this endeavor has been announced and will be [streamed live on YouTube](https://www.youtube.com/watch?v=YzgYYkOrnhQ)! Be sure to tune in! I've seen some early demos... All I'm going to say is: It is mind-blowing! 🤯 +Even more exciting news, as this is [Home Assistant's year of the voice](/blog/2022/12/20/year-of-voice/): Chapter 4 of this endeavor has been announced and will be [streamed live on YouTube](https://www.youtube.com/watch?v=YzgYYkOrnhQ) on 12 October 2023, at 12:00 PDT / 21:00 CEST! Be sure to tune in! I've seen some early demos... All I'm going to say is: It is mind-blowing! 🤯 As for this release, because of all of the above, it is a bit smaller than usual in terms of features. I promise that chapter 4 is going to make it all worth it. Yet, it contains tons of updates, bug fixes, and a couple of beautiful new features for the Tile card! 🤩 From 29d4ffadfbd5bd7343daca54a21fb093654ad22d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 15:57:16 +0200 Subject: [PATCH 096/109] 2023.10: New logo section --- .../_posts/2023-10-04-release-202310.markdown | 5 ++++- .../blog/2023-10/home-assistant-about.png | Bin 0 -> 78969 bytes 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 source/images/blog/2023-10/home-assistant-about.png diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index e5c446059b7..16991eaaf59 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -53,7 +53,10 @@ In case you've missed it, we have refreshed the Home Assistant logo! 🤩 The new Home Assistant logo on a gray background. -This was done for the [10th anniversary of Home Assistant](/blog/2023/09/17/10-years-home-assistant/), and you can [read all about this iteration in this blog post](/blog/2023/09/17/a-refreshed-logo-for-home-assistant/). +This was done for the [10th anniversary of Home Assistant](/blog/2023/09/17/10-years-home-assistant/), and you can [read all about this iteration in this blog post](/blog/2023/09/17/a-refreshed-logo-for-home-assistant/). You will start seeing this logo in many more places in the upcoming weeks, but, it is already included this release! + +Screenshot showing the new logo showing on the about page in the Home Assistant interface. + You will start seeing this logo in many more places in the upcoming weeks, but, it is already included this release! diff --git a/source/images/blog/2023-10/home-assistant-about.png b/source/images/blog/2023-10/home-assistant-about.png new file mode 100644 index 0000000000000000000000000000000000000000..bab202c89c6262e98e61395c83aa12175991f7ca GIT binary patch literal 78969 zcmZ6y2UJsA^FEC9A|PF*LM^UTaXYo8ONudBgGf0>?)jEqt9;e*FyWE3l8 zWaJ*S)Mq0Cs%%bV=kDIqe4z5w|J+uK#JRJ<)+@N;ns(h6qG$jAuMEubZc7im^kA1+ z7ziMp#4pYqCKFA9q!)MC#PC-O`!W~(3RbRB1R?5m6 z;o#sN0edFp%cy?@w||s!uVG0^o=;v(fjxpD@n3ydtjA~bSLR2(j=y+XQNgf+L zua(B&q#D_p^pml5Yu#Oh)IDFISpKQAQo;@1{68U%5UTd{g74#fY6yafIE`@Hkwd~o z-j_4kiMIMeC!$*(A#c7a^o-$o28bYD4`*hXa$9KNwA=B~f21uMX@K@x0^0Y$EuS}9 z2B@v9(`p#swvu$`)37}Lh+N=1+C_1NXb>bx(TGE>90Wc>_6B7 zn}Njo1rU^E0hA?$W-n`en1<4%XaPJUY~7*cX}Vh%Q|i>ruZM&iB`-8b}Sth5d4SBDXuZ!r{YLD|H zMqvvG+?zJITH%wq{{TR|OH@fa%1BbjOCBM*fV;)p%p?mOL)r&sO0*vm;WzhWfIx2h z_FNO2#%oP2%W<#A_CwYGUKMLT7A?fR`QrTe)55cvp(;wQ>2 zO2%*#z8x9tYZSi#QMR`bn-u|5_Rf|f!D^N*(a6;C3Gl=yS=$-JG@q!)bt_a|+0y(G> zUQh&cVS*3f{TFr%B@u-Ek5HzM|4Bq$VTW%siqskDi(oVgzvb%&dGYR5(mXr-qTXYy`mo$MnxO71pl z0JS_9$)^mkGxe?@KU3jq9We9d5c(P(ywc@X{NFSRPEkUh#LNp3sUhL>gCRB6TENCQ z(j<{(wWs_LiNX9-k)zmSomWWXsvaAr60=;}^5f~nCh;(Ju?%W7iS~&$%V6S_PYMbt zM$m7t$A=>wte7mmGRqai>Tl}7dpse9|A`7rtfvf54R5mxQYD4p+rF=tA%O$m0lT%D zK@Z^wLI1skcf_?@AUAEcoA*uuBi;0=XB-j7M39v^~yMGK;K6V}{*K;Ou5;ri+D$2y_ zBSqr*!j?7X0D^={z}+|$_F(m!Y>l<}{g(aE$n3qOOZ$nQ5O;P#SB$87_GOf6@k@`A z{3k&+U2$lNxdf&m!0t&!-Fc!OUTCTfVQ7w#Ld9V{_45g0|FKQ7!B^=8Q?AmQ(AZ7T zge__;mFLE+7c`+T;)Y@T#Pik>p$`IjQ>S@7Y{5q>D2^8UuD7qp=JxWqw+{S2bZYR< zh*U_nT}ik7Axt|nRcRLz4k}c}O3frN)$V5oy~uF{;v*`|n!$@qu0C zLQ8;w2h7zmDtD3a*ekgrA5X#d_@8jU1bM?f`%vHo$T*sQuvZe*N`+AOlD#u@&{BDR z)A1&T&w`?`Oo*Ol+e9%~^tzyod zT-0JK*mB3z0(ugeZQ)U>JzjIr-0r3jJX*UiLg4usHgWi$qKd{K&%w3v=U{BvGOI*O8zpE!>&gQpH20He=hUl6*n`e zm)|Y%1q)~8zSujd{C8#DB3crjCvC!hUZ8FaTTmt_;Tv_aRKx@o>YBoqau8;l0Rjg6 zCzb%V-1Oj!j2_&C^EO}}H`<7U9KP`v_)8OmBewWUouRLqv<)@*WlS)pSc7BOK#CW_ zcg0&do!cEP)tjGeM;^+`r!b5Gg4f7yX$?PEd}2O(;J!Uy<1$^-zu-1~_Dh_oaY278 zZg|-+KhSQMvmVg=%da^)ZuRNhCbxX5ai&1dc3qBZ$ic9y@vkPW231EHF&8bzrn|na zU+x|b1(4*+jpUTe-(+zw`QoD(mqEmp|MLMlcafet9u(!8{-P`5eg4a_6jfmRZgZo4 z2pk&w^R=$yTH{Gho<n>8AKC_3Z`Oa(D#NV>*?|FzQd?=?zaD>aL zHMp7lVtWK09%OVKt{V!^YrO3}L389ii#ZP87|+vbZh+HBWJz75Sz~S2uWtNSR+t&- z#H&iiQz}~B71n^QKbdIcqDb_=(mC#f^4k|D{h!Z-C#j>aU0WI0bl2}#6N&61x*g9D zNOc=M2Z*2N@MYETG+%kO>Ou)lWZJ_|yJa7K1uj^v_$r*UXHPsX8G}3B=wZu?sINg> zn#=BIIeggEqJk9SHOUNBYnD^~T1~?|zrM;`Hw}gi%Sib)aBHtIG4zx7o)fluaQ<9N zK*{<0v{xf8oPDv<$UeXfU!JqpN_+8x>tfyhC<8MD;Uy%lfbJul+cNw$uZfz9J$Of} zY^^3`)W@x2kr53Uc(!@tnUe1~ya8$&N?R{#0DG>H;ObSRXp!`e(|S(Pnq;<(*dZ{j zV!DUtZ zb$HN=X*X*vX+ZAfP95c4iTO+LD$=+=)qxxv z)gq=Ho{7z@c5mf*>BGIs*kR*b61DEP1J^Vw!0grgFQ_DC%n**>&Y69O-Q4)*m{loC zcj~*!FZa?PQZ>xymFPl$~ePPeJ#!6Z}WOkK{)U8@iitheM&5qugOw zWf=*Va9CbRW=Ewa7lrrwo_^7*`n!I{+e0b{kL1rdLBq^)t$<>14PwS6($)Jwr*{I5 zJQCu{G9vvGqKJ%_f*F^awvRMiy}g(h#^00ZyXFAU z&FuRpKeGpVb<%qcoF34{Y<`E*zB~__&=a#&aqY8^baX^FZcBn7Kt;5*Uqg_@3+pR? zC>U|U%I1v*ve->wa}oyGxIzXf6867>R9cn(n%8y@d&gwaWyiFMq1le0W%{Y@k$O+P zM`NKn>PD$9<*^#L{RvioV0jmuSEqS>VJzuIr;};NHg;!!Fz+=v_rHs{@C>)v+@MrK z^Mlv#F^MWRZ@Of=Cy0iSX+U=AY0gYD^Co*I)x2+}H{x^I6Mo;=#N^P&L%gNJ{(SRh zLIUF|jx=*YWNyTBGR|gb&fs3PAD#b#|MZa2S_Un-vF9dKS$7()iS1LRS3?exg zMo-@R*JoOmT_sg>vOq^tO<|vtep6LMty(fMt}~8!_ge195%^usT6@#XLm$@Bpye

h%m3r>B0}C1z`DYs=?CF@wKF`! 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Ė=y~9CI>)SM-UpS+8G~*Us;y=7qaQH(d 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 XhdfY)a?Oc9j~zeiaHQ~$EBF2n`1C^+ literal 0 HcmV?d00001 From 2d26da4ca3eb627cd0caf6cd9749f0950036fdb6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 15:57:49 +0200 Subject: [PATCH 097/109] 2023.10: New my buttons --- .../_posts/2023-10-04-release-202310.markdown | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 16991eaaf59..5f012fe2465 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -31,6 +31,7 @@ Enjoy the release! - [A beautiful updated logo!](#a-beautiful-updated-logo) +- [Brand new My Home Assistant buttons](#brand-new-my-home-assistant-buttons) - [New tile features for climate](#new-tile-features-for-climate) - [Tile card select feature](#tile-card-select-feature) - [Map entity markers options](#map-entity-markers-options) @@ -57,8 +58,29 @@ This was done for the [10th anniversary of Home Assistant](/blog/2023/09/17/10-y Screenshot showing the new logo showing on the about page in the Home Assistant interface. +## Brand new My Home Assistant buttons -You will start seeing this logo in many more places in the upcoming weeks, but, it is already included this release! +It is not just the logo that got a facelift; we have beautiful new buttons for [My Home Assistant] as well 🤩. + +

+My Home Assistant logo as a button +

+ +In case you don't know what My Home Assistant is: It is a free online tool, that allows websites, documentation, chat, and blogs like these, to link into places in the Home Assistant server you run at your home, without them actually knowing the address of it and without being exposed to the internet, retaining your privacy. + +In our documentation you'll find those buttons to, for example, add a new integration to your Home Assistant with a single click! Try it yourself! This button below will open up your Home Assistant's interface and shows the integrations +you have installed: + +
+ +{% my integrations badge %} + +
+ +So, if you see these buttons showing up somewhere, you now know what they do! You can easily create your own buttons and links to share on the [create link] page. + +[create link]: https://my.home-assistant.io/create-link/ +[My Home Assistant]: https://my.home-assistant.io ## New tile features for climate From ee565fd5cbb4be268cb84bffe5b5a4ca7ae1030a Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 16:37:53 +0200 Subject: [PATCH 098/109] 2023.10: Climate presets for tile card --- .../_posts/2023-10-04-release-202310.markdown | 26 ++++++++---------- .../2023-10/tile-card-climate-presets.png | Bin 0 -> 77652 bytes 2 files changed, 11 insertions(+), 15 deletions(-) create mode 100644 source/images/blog/2023-10/tile-card-climate-presets.png diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 5f012fe2465..ee3b0429633 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -22,7 +22,7 @@ October! 🎃 It means we've just celebrated our birthday; we are now 10 years o Even more exciting news, as this is [Home Assistant's year of the voice](/blog/2022/12/20/year-of-voice/): Chapter 4 of this endeavor has been announced and will be [streamed live on YouTube](https://www.youtube.com/watch?v=YzgYYkOrnhQ) on 12 October 2023, at 12:00 PDT / 21:00 CEST! Be sure to tune in! I've seen some early demos... All I'm going to say is: It is mind-blowing! 🤯 -As for this release, because of all of the above, it is a bit smaller than usual in terms of features. I promise that chapter 4 is going to make it all worth it. Yet, it contains tons of updates, bug fixes, and a couple of beautiful new features for the Tile card! 🤩 +As for this release, because of all of the above, it is a bit smaller than usual in terms of features. I promise that chapter 4 is going to make it all worth it. Yet, it contains tons of updates, bug fixes, and a couple of beautiful new features for the tile card! 🤩 Enjoy the release! @@ -32,7 +32,7 @@ Enjoy the release! - [A beautiful updated logo!](#a-beautiful-updated-logo) - [Brand new My Home Assistant buttons](#brand-new-my-home-assistant-buttons) -- [New tile features for climate](#new-tile-features-for-climate) +- [New tile card features for climate entities](#new-tile-card-features-for-climate-entities) - [Tile card select feature](#tile-card-select-feature) - [Map entity markers options](#map-entity-markers-options) - [Password managers and Home Assistant](#password-managers-and-home-assistant) @@ -82,31 +82,27 @@ So, if you see these buttons showing up somewhere, you now know what they do! Yo [create link]: https://my.home-assistant.io/create-link/ [My Home Assistant]: https://my.home-assistant.io -## New tile features for climate +## New tile card features for climate entities -Last release, we added [lots of new features for the Tile card](/blog/2023/09/06/release-20239/#lots-of-new-tile-features), +In the last release, we added [lots of new features for the tile card](/blog/2023/09/06/release-20239/#lots-of-new-tile-features), including features specifically for controlling your climate devices. This release, we are adding even more! -[@Weissnix4711] contributed a feature that allows you to add buttons for the presets of your climate device to the tile card. +[@Weissnix4711] contributed a feature that allows you to add buttons for the presets of your climate device to the tile card. Next,[@piitaya] took it a step further and added the ability to select which presets you want to show and allow showing them in a dropdown list instead of a series of buttons. -

- -Temporary screenshot that needs to be replaced. -

+Screenshot showing the new preset feature of the tile cards in both button and dropdown variants. -[@piitaya] took it a step further and added the ability to select which presets you want to show, and allow showing them in a dropdown list instead of series of buttons. +The screenshot above shows the same tile card, but one with the buttons and one with the dropdown. -

- -Temporary screenshot that needs to be replaced. -

+In the options for this tile card feature, you'll be given the choice if you +prefer to show icons or if you rather have a dropdown. You can also pick +which presets you want to show/hide. [@piitaya]: https://github.com/piitaya [@Weissnix4711]: https://github.com/Weissnix4711 ## Tile card select feature -But there is more goodness for the Tile card this release. [@piitaya] added a select feature to the tile card, allowing you to select an option from a list of options. +But there is more goodness for the tile card this release. [@piitaya] added a select feature to the tile card, allowing you to select an option from a list of options. This feature can be used for any `select` entity, but also for your dropdown helpers! (also known as `input_select` entities). diff --git a/source/images/blog/2023-10/tile-card-climate-presets.png b/source/images/blog/2023-10/tile-card-climate-presets.png new file mode 100644 index 0000000000000000000000000000000000000000..60095a7ff1efbdd1816c6c87eb9c00bf19889076 GIT binary patch literal 77652 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 literal 0 HcmV?d00001 From 0c4b5f6910cab2ab012243a7bf46e210de24420c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 16:55:32 +0200 Subject: [PATCH 099/109] 2023.10: Tile card feature for select entities --- .../_posts/2023-10-04-release-202310.markdown | 11 ++++------- source/images/blog/2023-10/tile-card-select.png | Bin 0 -> 51135 bytes 2 files changed, 4 insertions(+), 7 deletions(-) create mode 100644 source/images/blog/2023-10/tile-card-select.png diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index ee3b0429633..3fc93a39a48 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -100,16 +100,13 @@ which presets you want to show/hide. [@piitaya]: https://github.com/piitaya [@Weissnix4711]: https://github.com/Weissnix4711 -## Tile card select feature +## Tile card feature select entities -But there is more goodness for the tile card this release. [@piitaya] added a select feature to the tile card, allowing you to select an option from a list of options. +But there is more goodness for the tile card. [@piitaya] also added the dropdown from above as a feature for the select entities, allowing you to select an option from a list of options. -This feature can be used for any `select` entity, but also for your dropdown helpers! (also known as `input_select` entities). +Screenshot showing the select feature for the tile card in the Home Assistant interface. -

- -Temporary screenshot that needs to be replaced. -

+This feature can be used for any select entity but also your custom dropdown helpers! (also known as `input_select` entities). ## Map entity markers options diff --git a/source/images/blog/2023-10/tile-card-select.png b/source/images/blog/2023-10/tile-card-select.png new file mode 100644 index 0000000000000000000000000000000000000000..767ac954cedf6a790d46c7ff81e4eff047680ecf GIT binary patch literal 51135 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

_xuT-&$F@QI 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 literal 0 HcmV?d00001 From 029b2e4ef51e8f0d8031dbb8eabb97d60db0d9fe Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 17:02:36 +0200 Subject: [PATCH 100/109] 2023.10: Finish password manager section --- .../_posts/2023-10-04-release-202310.markdown | 11 +++++++++-- .../home-assistant-works-with-1password.png | Bin 0 -> 56804 bytes 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 source/images/blog/2023-10/home-assistant-works-with-1password.png diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 3fc93a39a48..b5596358241 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -124,8 +124,15 @@ Temporary screenshot that needs to be replaced. ## Password managers and Home Assistant -There has been a long standing issue with using password managers with the Home Assistant login. -This release addresses this issue: +Using a password manager is arguably one of the best things you can do to +improve your online security. But using them with Home Assistant, depending on +which one you have been using, has been a bit of a pain. + +If you've been using one of these password managers that had issues with +Home Assistant, you'll be happy to know that this release fixes that! +For example, 1Password now works! + +Screenshot from the Home Assistant login screen, that show the use of 1Password

diff --git a/source/images/blog/2023-10/home-assistant-works-with-1password.png b/source/images/blog/2023-10/home-assistant-works-with-1password.png new file mode 100644 index 0000000000000000000000000000000000000000..68368eaed4a75ee00e91486717f895d06a943cee GIT binary patch literal 56804 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 literal 0 HcmV?d00001 From b983bbfc2f488bfbd3db3fb62e3ab4d87abc535c Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 17:19:29 +0200 Subject: [PATCH 101/109] 2023.10: Improve my home assistant description --- source/_posts/2023-10-04-release-202310.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index b5596358241..0e479da29c6 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -66,6 +66,8 @@ It is not just the logo that got a facelift; we have beautiful new buttons for [ My Home Assistant logo as a button
+If you're unfamiliar with My Home Assistant, it's a free online tool that enables websites, documentation, chat platforms, and blogs to link to places on your Home Assistant server without knowing its address or being exposed to the internet. This ensures your privacy while still allowing a seamless experience. + In case you don't know what My Home Assistant is: It is a free online tool, that allows websites, documentation, chat, and blogs like these, to link into places in the Home Assistant server you run at your home, without them actually knowing the address of it and without being exposed to the internet, retaining your privacy. In our documentation you'll find those buttons to, for example, add a new integration to your Home Assistant with a single click! Try it yourself! This button below will open up your Home Assistant's interface and shows the integrations From 15726b709009c6c562905f302f1ed2c76df89946 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 17:25:52 +0200 Subject: [PATCH 102/109] 2023.10: Set title and description --- source/_posts/2023-10-04-release-202310.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 0e479da29c6..26bb5bee27a 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -1,7 +1,7 @@ --- layout: post -title: "2023.10: Beta release notes" -description: "The beta release notes for Home Assistant 2023.10" +title: "2023.10: New looks and more tile card features!" +description: "We added more tile card features, added our beautiful new logo, shiny new My Home Assistant buttons, better password manager support and more!" date: 2023-10-04 00:00:00 date_formatted: "October 4, 2023" author: Franck Nijhof From e30d11c7356ba9be2eaba4597ff700f71261a57b Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 17:47:40 +0200 Subject: [PATCH 103/109] 2023.10: One more noteworthy change --- source/_posts/2023-10-04-release-202310.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 26bb5bee27a..049233f002f 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -160,6 +160,9 @@ noteworthy changes this release: - The [System Bridge] integration now supports notifications! Thanks, [@timmo001]! - [@alexyao2015] added a button to [Life360] to trigger a poll to update the location information. Cool! +- The [picture entity card] now has a fit mode option to control how the image + fits into the card. This lets you decide if the image is clipped, fitted, + or stretched into the displayed card. Thanks [@karwosts]! - It's now easier than ever to collect [Z-Wave] logs for troubleshooting. Just [enable debug logging](/integrations/zwave_js#how-do-i-access-the-z-wave-logs)! @@ -167,12 +170,14 @@ noteworthy changes this release: [@allenporter]: https://github.com/allenporter [@bdraco]: https://github.com/bdraco [@joostlek]: https://github.com/joostlek +[@karwosts]: https://github.com/karwosts [@Lash-L]: https://github.com/Lash-L [@timmo001]: https://github.com/timmo001 [ESPHome]: https://esphome.io [Home Assistant Cloud]: https://www.nabucasa.com [HomeKit Bridge]: /integrations/homekit [Life360]: /integrations/life360 +[picture entity card]: /dashboards/picture-entity/ [Roborock]: /integrations/roborock [System Bridge]: /integrations/system_bridge [the latest version]: https://esphome.io/changelog/2023.9.0.html#esphome-2023-9-0-27th-september-2023 From 913a9d058fa97dd26b10864fc3be454a5552dcf9 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 17:50:29 +0200 Subject: [PATCH 104/109] 2023.10: Map entity marker options --- .../_posts/2023-10-04-release-202310.markdown | 45 ++++++++++-------- .../blog/2023-10/map-features-prices.png | Bin 0 -> 60358 bytes 2 files changed, 25 insertions(+), 20 deletions(-) create mode 100644 source/images/blog/2023-10/map-features-prices.png diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 049233f002f..e4e902d37dd 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -33,9 +33,9 @@ Enjoy the release! - [A beautiful updated logo!](#a-beautiful-updated-logo) - [Brand new My Home Assistant buttons](#brand-new-my-home-assistant-buttons) - [New tile card features for climate entities](#new-tile-card-features-for-climate-entities) -- [Tile card select feature](#tile-card-select-feature) -- [Map entity markers options](#map-entity-markers-options) +- [Tile card feature select entities](#tile-card-feature-select-entities) - [Password managers and Home Assistant](#password-managers-and-home-assistant) +- [Map entity markers options](#map-entity-markers-options) - [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) @@ -110,20 +110,6 @@ But there is more goodness for the tile card. [@piitaya] also added the dropdown This feature can be used for any select entity but also your custom dropdown helpers! (also known as `input_select` entities). -## Map entity markers options - -The [map card](/dashboards/map/), received new options for your entity markers that are shown on the map. - -For example, you can now choose if you want the entity name to be rendered on -the map, or the entity state but you could also override the name all together. -You can now also exclude entities to be not taking into account when centering -the map. - -

- -Temporary screenshot that needs to be replaced. -

- ## Password managers and Home Assistant Using a password manager is arguably one of the best things you can do to @@ -136,10 +122,29 @@ For example, 1Password now works! Screenshot from the Home Assistant login screen, that show the use of 1Password -

- -Temporary screenshot that needs to be replaced. -

+## Map entity marker options + +The [map card](/dashboards/map/) received new options (thanks [@karwosts]!) +for your entity markers that are shown on the map. + +You can now choose if you want the entity name to be rendered on the map +or the entity state, but you could also override the name alltogether. You could, +for example, show state values, instead of the name, for the entities providing +gas prices, so you can see where the cheapest gas is. + +
+Screenshot of a map card showing gas prices on the map. +

+ +When centering the map all entities on the map are taken into account. +However, you can also exclude certain entities (for example, +known outliers) that should not be considered when doing that. + +This is currently only available in the YAML configuration of the map card. +See our [documentation for the map card](/dashboards/map/#label_mode) for +more information. + +[@karwosts]: https://github.com/karwosts ## Other noteworthy changes diff --git a/source/images/blog/2023-10/map-features-prices.png b/source/images/blog/2023-10/map-features-prices.png new file mode 100644 index 0000000000000000000000000000000000000000..c5386c1a204646363a10267fd730fd3d290c1ce0 GIT binary patch literal 60358 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 z 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 JPDHLkV1hzqP>TQn literal 0 HcmV?d00001 From 4d221ac7042939a2e34eb136ecbbdd6634ecc2cb Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 17:52:45 +0200 Subject: [PATCH 105/109] 2023.10: Update TOC --- source/_posts/2023-10-04-release-202310.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index e4e902d37dd..d68e82e34fb 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -35,7 +35,7 @@ Enjoy the release! - [New tile card features for climate entities](#new-tile-card-features-for-climate-entities) - [Tile card feature select entities](#tile-card-feature-select-entities) - [Password managers and Home Assistant](#password-managers-and-home-assistant) -- [Map entity markers options](#map-entity-markers-options) +- [Map entity marker options](#map-entity-marker-options) - [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) From e200514fc164a2f00c6d2597277e81de0168efa5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 18:10:22 +0200 Subject: [PATCH 106/109] 2023.10: Remove old my home assistant paragraph --- source/_posts/2023-10-04-release-202310.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index d68e82e34fb..09dc2514d75 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -68,8 +68,6 @@ It is not just the logo that got a facelift; we have beautiful new buttons for [ If you're unfamiliar with My Home Assistant, it's a free online tool that enables websites, documentation, chat platforms, and blogs to link to places on your Home Assistant server without knowing its address or being exposed to the internet. This ensures your privacy while still allowing a seamless experience. -In case you don't know what My Home Assistant is: It is a free online tool, that allows websites, documentation, chat, and blogs like these, to link into places in the Home Assistant server you run at your home, without them actually knowing the address of it and without being exposed to the internet, retaining your privacy. - In our documentation you'll find those buttons to, for example, add a new integration to your Home Assistant with a single click! Try it yourself! This button below will open up your Home Assistant's interface and shows the integrations you have installed: From 030001f8002ca2779d6ed9b00c020c904c80ae43 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 18:29:43 +0200 Subject: [PATCH 107/109] 2023.10: Remove time from birthday stream --- source/_posts/2023-10-04-release-202310.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 09dc2514d75..2d226f231b1 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -18,7 +18,7 @@ og_image: /images/blog/2023-10/social.png Home Assistant Core 2023.10! 🎉 October! 🎃 It means we've just celebrated our birthday; we are now 10 years old! 🎂 In case you've missed our -[birthday YouTube stream](https://www.youtube.com/watch?v=EmLV6lJLzSU&t=2538s) with all the cool announcements, we've summed it all up in our [10 year Home Assistant blog post](/blog/2023/09/17/10-years-home-assistant/). +[birthday YouTube stream](https://www.youtube.com/watch?v=EmLV6lJLzSU) with all the cool announcements, we've summed it all up in our [10 year Home Assistant blog post](/blog/2023/09/17/10-years-home-assistant/). Even more exciting news, as this is [Home Assistant's year of the voice](/blog/2022/12/20/year-of-voice/): Chapter 4 of this endeavor has been announced and will be [streamed live on YouTube](https://www.youtube.com/watch?v=YzgYYkOrnhQ) on 12 October 2023, at 12:00 PDT / 21:00 CEST! Be sure to tune in! I've seen some early demos... All I'm going to say is: It is mind-blowing! 🤯 From 7dc83a8b90365de0db1da2ba2edaee6558e6ad73 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 18:31:54 +0200 Subject: [PATCH 108/109] Apply suggestions from code review Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_posts/2023-10-04-release-202310.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 2d226f231b1..0766fbda173 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -1,7 +1,7 @@ --- layout: post title: "2023.10: New looks and more tile card features!" -description: "We added more tile card features, added our beautiful new logo, shiny new My Home Assistant buttons, better password manager support and more!" +description: "We added more tile card features, added our beautiful new logo, shiny new My Home Assistant buttons, better password manager support, and more!" date: 2023-10-04 00:00:00 date_formatted: "October 4, 2023" author: Franck Nijhof @@ -87,7 +87,7 @@ So, if you see these buttons showing up somewhere, you now know what they do! Yo In the last release, we added [lots of new features for the tile card](/blog/2023/09/06/release-20239/#lots-of-new-tile-features), including features specifically for controlling your climate devices. This release, we are adding even more! -[@Weissnix4711] contributed a feature that allows you to add buttons for the presets of your climate device to the tile card. Next,[@piitaya] took it a step further and added the ability to select which presets you want to show and allow showing them in a dropdown list instead of a series of buttons. +[@Weissnix4711] contributed a feature that allows you to add buttons for the presets of your climate device to the tile card. Next,[@piitaya] took it a step further: You can now select which presets you want to show and if you want them in a dropdown list instead of a series of buttons. Screenshot showing the new preset feature of the tile cards in both button and dropdown variants. @@ -126,7 +126,7 @@ The [map card](/dashboards/map/) received new options (thanks [@karwosts]!) for your entity markers that are shown on the map. You can now choose if you want the entity name to be rendered on the map -or the entity state, but you could also override the name alltogether. You could, +or the entity state, but you could also override the name altogether. You could, for example, show state values, instead of the name, for the entities providing gas prices, so you can see where the cheapest gas is. @@ -134,7 +134,7 @@ gas prices, so you can see where the cheapest gas is. Screenshot of a map card showing gas prices on the map.
-When centering the map all entities on the map are taken into account. +When centering the map, all entities on the map are taken into account. However, you can also exclude certain entities (for example, known outliers) that should not be considered when doing that. @@ -358,7 +358,7 @@ if the required equipment is not configured. The default name given to backups created with the `hassio.full_backup` and `hassio.partial_backup` services are no longer the UTC date and time the -backup was initiated but use the local date and time instead. +backup was initiated. Instead, the local date and time are used for the name. ([@jpbede] - [#100959]) ([documentation](/integrations/hassio)) From c7bf176aed17267b25079f875b9b546060cb4d2f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 4 Oct 2023 18:41:04 +0200 Subject: [PATCH 109/109] Update source/_posts/2023-10-04-release-202310.markdown Co-authored-by: c0ffeeca7 <38767475+c0ffeeca7@users.noreply.github.com> --- source/_posts/2023-10-04-release-202310.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2023-10-04-release-202310.markdown b/source/_posts/2023-10-04-release-202310.markdown index 0766fbda173..74f9d415f7a 100644 --- a/source/_posts/2023-10-04-release-202310.markdown +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -68,7 +68,7 @@ It is not just the logo that got a facelift; we have beautiful new buttons for [ If you're unfamiliar with My Home Assistant, it's a free online tool that enables websites, documentation, chat platforms, and blogs to link to places on your Home Assistant server without knowing its address or being exposed to the internet. This ensures your privacy while still allowing a seamless experience. -In our documentation you'll find those buttons to, for example, add a new integration to your Home Assistant with a single click! Try it yourself! This button below will open up your Home Assistant's interface and shows the integrations +In our documentation, you'll find those buttons to, for example, add a new integration to your Home Assistant with a single click! Try it yourself! This button below will open up your Home Assistant's interface and show the integrations you have installed:

!(%dkax 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 literal 34872 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