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/_dashboards/map.markdown b/source/_dashboards/map.markdown index 1608dd20535..32557e1065e 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. 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 + 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 ``` 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. diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index 15f79e4d5e2..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. @@ -23,27 +24,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` 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/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. 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: 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/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 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. diff --git a/source/_integrations/duotecno.markdown b/source/_integrations/duotecno.markdown index 20e400685f4..861ea3190e7 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,8 @@ ha_codeowners: - '@cereal2nd' ha_domain: duotecno ha_platforms: + - binary_sensor + - climate - cover - light - switch @@ -20,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. diff --git a/source/_integrations/ecoforest.markdown b/source/_integrations/ecoforest.markdown new file mode 100644 index 00000000000..f1253b7371c --- /dev/null +++ b/source/_integrations/ecoforest.markdown @@ -0,0 +1,61 @@ +--- +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: + - number + - sensor + - switch +ha_integration_type: integration +--- + +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: + +- [Number](#number) +- [Switch](#switch) +- [Sensor](#sensor) + +## 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: + +- 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) + +{% include integrations/config_flow.md %} + +## 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`) + +## Number + +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 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. 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 %} 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/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 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/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` 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) 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` 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. 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/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. 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/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 -``` diff --git a/source/_integrations/idasen_desk.markdown b/source/_integrations/idasen_desk.markdown new file mode 100644 index 00000000000..0aa5a09bd33 --- /dev/null +++ b/source/_integrations/idasen_desk.markdown @@ -0,0 +1,26 @@ +--- +title: IKEA Idasen 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 +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. + +{% 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). +
diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index b9dda766a26..f7f4cf7c4e1 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -96,7 +96,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. @@ -130,6 +130,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 %} @@ -163,6 +165,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] }}" @@ -185,6 +188,7 @@ template: id: "custom_event" event_data: sender: "no-reply@smartconnect.apc.com" + initial: true sensor: - name: house_electricity state: >- 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 %} diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown index 7a3bcd2cb61..a9297517183 100644 --- a/source/_integrations/islamic_prayer_times.markdown +++ b/source/_integrations/islamic_prayer_times.markdown @@ -48,3 +48,27 @@ 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. diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index a8f78006dba..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 --- @@ -69,6 +70,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. 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/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 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 new file mode 100644 index 00000000000..668520810ff --- /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) 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. +
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 448cd3c2e1d..3252cb3ac71 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 @@ -37,13 +35,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. @@ -66,11 +57,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 @@ -133,7 +119,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -182,7 +167,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -227,7 +211,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -324,7 +307,6 @@ modbus: delay: 0 message_wait_milliseconds: 30 retries: 3 - retry_on_empty: false timeout: 5 ``` @@ -399,6 +381,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 @@ -480,6 +467,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." @@ -719,6 +710,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 @@ -765,6 +761,7 @@ modbus: max_temp: 30 structure: ">f" target_temp_register: 2782 + target_temp_write_registers: true temp_step: 1 temperature_unit: C ``` @@ -1277,6 +1274,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 @@ -1292,6 +1293,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 @@ -1525,6 +1530,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 | @@ -1545,8 +1551,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 | @@ -1572,7 +1577,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] ``` 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 641bbd01467..4cae5a00aba 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 %} 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. diff --git a/source/_integrations/private_ble_device.markdown b/source/_integrations/private_ble_device.markdown new file mode 100644 index 00000000000..68b4b5b0391 --- /dev/null +++ b/source/_integrations/private_ble_device.markdown @@ -0,0 +1,45 @@ +--- +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 + - sensor +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. + +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. + +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. 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. diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index 442da8e8388..02574e6e9a5 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -3,6 +3,9 @@ title: Renson description: Instructions on how to integrate Renson Endura Delta sensors into Home Assistant. ha_category: - Binary Sensor + - Button + - Fan + - Number - Sensor ha_release: 2023.7 ha_iot_class: Local Polling @@ -12,11 +15,13 @@ ha_codeowners: ha_domain: renson ha_platforms: - binary_sensor + - button + - fan + - number - sensor 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 %} diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index a322895d056..1b9a13dec44 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -2,6 +2,7 @@ title: Roborock description: Instructions on how to integrate Roborock vacuums into Home Assistant ha_category: + - Binary Sensor - Number - Select - Sensor @@ -16,6 +17,7 @@ ha_codeowners: - '@Lash-L' ha_domain: roborock ha_platforms: + - binary_sensor - diagnostics - number - select @@ -49,20 +51,41 @@ 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. + +Water shortage - States if the water box is low on water - 'Ok' if it has not detected a water shortage. + + ### 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. 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. 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. 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/schlage.markdown b/source/_integrations/schlage.markdown index 0a2f367c2d8..35776692c40 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 @@ -24,10 +25,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: diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 5dcb16ae7b2..e58470b98d7 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,14 @@ 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. + ## 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. 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" +``` 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..b086f75d11f 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 @@ -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) 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. +
diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown index 94130ececfd..5a2669680cc 100644 --- a/source/_integrations/system_bridge.markdown +++ b/source/_integrations/system_bridge.markdown @@ -13,72 +13,63 @@ ha_domain: system_bridge ha_quality_scale: silver ha_platforms: - binary_sensor + - notify - sensor ha_zeroconf: true 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 - 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 +77,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: 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 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 | diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index e735b575c7b..be1bc87f931 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -11,24 +11,20 @@ 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) 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 +54,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 +89,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 +117,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. diff --git a/source/_integrations/trafikverket_camera.markdown b/source/_integrations/trafikverket_camera.markdown index c8b62483e53..17f9b4a3af8 100644 --- a/source/_integrations/trafikverket_camera.markdown +++ b/source/_integrations/trafikverket_camera.markdown @@ -2,7 +2,9 @@ title: Trafikverket Camera description: Instructions how to integrate Trafikverket Camera within Home Assistant. ha_category: + - Binary sensor - Camera + - Sensor ha_release: 2023.9 ha_iot_class: Cloud Polling ha_config_flow: true @@ -10,13 +12,17 @@ ha_codeowners: - '@gjohansson-ST' ha_domain: trafikverket_camera ha_platforms: + - binary_sensor - camera + - sensor 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 @@ -24,7 +30,21 @@ Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obt {% include integrations/config_flow.md %} -## Additional attributes +## Binary sensor + +- Active + +## 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) 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 3ad57ca98c7..f7be57a6554 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -11,58 +11,13 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@joostlek' +ha_config_flow: true --- -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 %} 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. 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 10d8d63bca0..bcd6268da59 100644 --- a/source/_integrations/vodafone_station.markdown +++ b/source/_integrations/vodafone_station.markdown @@ -11,7 +11,9 @@ ha_codeowners: - '@chemelli74' ha_iot_class: Local Polling ha_platforms: + - button - device_tracker + - sensor ha_integration_type: integration --- @@ -20,15 +22,10 @@ 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. +- **Button** - restart router, dsl/fiber/internet key connections. {% 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 +39,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 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/waqi.markdown b/source/_integrations/waqi.markdown index d25fb5c263e..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. @@ -19,45 +20,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 | 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 diff --git a/source/_integrations/weatherkit.markdown b/source/_integrations/weatherkit.markdown new file mode 100644 index 00000000000..e727fc57986 --- /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. diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index e02cfe51da0..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 @@ -16,11 +17,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 +53,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. diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 84113a6be04..689b3d79eb6 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,13 +40,13 @@ 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. -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. 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 %} 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. | diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 4c88af14feb..62aa4a16eb8 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). @@ -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, @@ -822,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. @@ -864,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. 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. + +##### 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 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..74f9d415f7a --- /dev/null +++ b/source/_posts/2023-10-04-release-202310.markdown @@ -0,0 +1,403 @@ +--- +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!" +date: 2023-10-04 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 +--- + + + +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) 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! 🤯 + +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 + + + +- [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 feature select entities](#tile-card-feature-select-entities) +- [Password managers and Home Assistant](#password-managers-and-home-assistant) +- [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) +- [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! + +Screenshot showing the new logo showing on the about page in the Home Assistant interface. + +## Brand new My Home Assistant buttons + +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 +

+ +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 show 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 card features for climate entities + +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: 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. + +The screenshot above shows the same tile card, but one with the buttons and one with the dropdown. + +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 feature select entities + +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. + +Screenshot showing the select feature for the tile card in the Home Assistant interface. + +This feature can be used for any select entity but also your custom dropdown helpers! (also known as `input_select` entities). + +## Password managers and Home Assistant + +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 + +## 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 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. + +
+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 + +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 supports media receivers! Thanks, [@bdraco]! +- [@Lash-L] keeps extending the [Roborock] integration. + 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 + 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! +- 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)! + +[@alexyao2015]: https://github.com/alexyao2015 +[@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 +[Withings]: /integrations/withings +[Z-Wave]: /integrations/zwave_js + +## 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 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]
+ 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 + +{% details "HomeKit Bridge" %} + +The HomeKit integration now supports media player receivers. HomeKit expects +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)) + +[@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 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)) + +[@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 +the `unlocked` state. 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 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 see [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 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)) + +[@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 are no longer the UTC date and time the +backup was initiated. Instead, the local date and time are used for the name. + +([@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: + +- [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/) + +[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) diff --git a/source/changelogs/core-2023.10.markdown b/source/changelogs/core-2023.10.markdown new file mode 100644 index 00000000000..3b9c0e60af4 --- /dev/null +++ b/source/changelogs/core-2023.10.markdown @@ -0,0 +1,1680 @@ +--- +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/10/04/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]) +- 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]) +- 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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[#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 +[@Bre77]: https://github.com/Bre77 +[@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 +[@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 +[@agners]: https://github.com/agners +[@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 +[@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 +[@jerry0317]: https://github.com/jerry0317 +[@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 +[@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 +[@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 +[@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 +[@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 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 00000000000..bab202c89c6 Binary files /dev/null and b/source/images/blog/2023-10/home-assistant-about.png differ 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 00000000000..68368eaed4a Binary files /dev/null and b/source/images/blog/2023-10/home-assistant-works-with-1password.png differ 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 00000000000..c5386c1a204 Binary files /dev/null and b/source/images/blog/2023-10/map-features-prices.png differ diff --git a/source/images/blog/2023-10/social.png b/source/images/blog/2023-10/social.png new file mode 100644 index 00000000000..97fc322318f Binary files /dev/null and b/source/images/blog/2023-10/social.png differ 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 00000000000..60095a7ff1e Binary files /dev/null and b/source/images/blog/2023-10/tile-card-climate-presets.png differ 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 00000000000..767ac954ced Binary files /dev/null and b/source/images/blog/2023-10/tile-card-select.png differ diff --git a/source/images/integrations/ecoforest/credentials.png b/source/images/integrations/ecoforest/credentials.png new file mode 100644 index 00000000000..43429c038c0 Binary files /dev/null and b/source/images/integrations/ecoforest/credentials.png differ