diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4de88c5d1e60..ae7948a9b47f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,9 +8,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out files from GitHub - uses: actions/checkout@v3.2.0 + uses: actions/checkout@v3.3.0 - name: Setting up Node.js - uses: actions/setup-node@v3.5.1 + uses: actions/setup-node@v3.6.0 with: node-version: 16.x cache: "npm" @@ -25,9 +25,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out files from GitHub - uses: actions/checkout@v3.2.0 + uses: actions/checkout@v3.3.0 - name: Setting up Node.js - uses: actions/setup-node@v3.5.1 + uses: actions/setup-node@v3.6.0 with: node-version: 16.x cache: "npm" diff --git a/CODEOWNERS b/CODEOWNERS index 63aa0ba03afb..b00510ac5090 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -25,6 +25,7 @@ source/_integrations/airthings.markdown @danielhiversen source/_integrations/airthings_ble.markdown @vincegio source/_integrations/airtouch4.markdown @LonePurpleWolf source/_integrations/airvisual.markdown @bachya +source/_integrations/airvisual_pro.markdown @bachya source/_integrations/airzone.markdown @Noltari source/_integrations/aladdin_connect.markdown @mkmer source/_integrations/alarm_control_panel.markdown @home-assistant/core @@ -87,7 +88,7 @@ source/_integrations/bluetooth.markdown @bdraco source/_integrations/bmw_connected_drive.markdown @gerard33 @rikroe source/_integrations/bond.markdown @bdraco @prystupa @joshs85 @marciogranzotto source/_integrations/bosch_shc.markdown @tschamm -source/_integrations/brandt.markdown @imicknl @vlebourl @tetienne +source/_integrations/brandt.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/braviatv.markdown @bieniu @Drafteed source/_integrations/brel_home.markdown @starkillerOG source/_integrations/broadlink.markdown @danielhiversen @felipediel @L-I-Am @@ -124,7 +125,7 @@ source/_integrations/coolmaster.markdown @OnFreund source/_integrations/coronavirus.markdown @home-assistant/core source/_integrations/counter.markdown @fabaff source/_integrations/cover.markdown @home-assistant/core -source/_integrations/cozytouch.markdown @imicknl @vlebourl @tetienne +source/_integrations/cozytouch.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/cpuspeed.markdown @fabaff @frenck source/_integrations/crownstone.markdown @Crownstone @RicArch97 source/_integrations/cups.markdown @fabaff @@ -206,7 +207,7 @@ source/_integrations/fireservicerota.markdown @cyberjunky source/_integrations/firmata.markdown @DaAwesomeP source/_integrations/fivem.markdown @Sander0542 source/_integrations/fjaraskupan.markdown @elupus -source/_integrations/flexom.markdown @imicknl @vlebourl @tetienne +source/_integrations/flexom.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/flick_electric.markdown @ZephireNZ source/_integrations/flipr.markdown @cnico source/_integrations/flo.markdown @dmulcahey @@ -245,10 +246,11 @@ source/_integrations/gogogate2.markdown @vangorra @bdraco source/_integrations/goodwe.markdown @mletenay @starkillerOG source/_integrations/google.markdown @allenporter source/_integrations/google_assistant.markdown @home-assistant/cloud +source/_integrations/google_assistant_sdk.markdown @tronikos source/_integrations/google_cloud.markdown @lufton source/_integrations/google_sheets.markdown @tkdrob source/_integrations/google_travel_time.markdown @eifinger -source/_integrations/govee_ble.markdown @bdraco +source/_integrations/govee_ble.markdown @bdraco @PierreAronnax source/_integrations/gpsd.markdown @fabaff source/_integrations/gree.markdown @cmroche source/_integrations/greeneye_monitor.markdown @jkeljo @@ -265,8 +267,8 @@ source/_integrations/heatmiser.markdown @andylockran source/_integrations/heiwa.markdown @cmroche source/_integrations/heos.markdown @andrewsayre source/_integrations/here_travel_time.markdown @eifinger -source/_integrations/hexaom.markdown @imicknl @vlebourl @tetienne -source/_integrations/hi_kumo.markdown @imicknl @vlebourl @tetienne +source/_integrations/hexaom.markdown @imicknl @vlebourl @tetienne @nyroDev +source/_integrations/hi_kumo.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/hikvision.markdown @mezz64 source/_integrations/hikvisioncam.markdown @fbradyirl source/_integrations/hisense_aehw4a1.markdown @bannhead @@ -299,8 +301,8 @@ source/_integrations/iaqualink.markdown @flz source/_integrations/ibeacon.markdown @bdraco source/_integrations/icloud.markdown @Quentame @nzapponi source/_integrations/ign_sismologia.markdown @exxamalte -source/_integrations/image.markdown @home-assistant/core source/_integrations/image_processing.markdown @home-assistant/core +source/_integrations/image_upload.markdown @home-assistant/core source/_integrations/incomfort.markdown @zxdavb source/_integrations/influxdb.markdown @mdegat01 source/_integrations/inkbird.markdown @bdraco @@ -429,7 +431,7 @@ source/_integrations/netdata.markdown @fabaff source/_integrations/netgear.markdown @hacf-fr @Quentame @starkillerOG source/_integrations/network.markdown @home-assistant/core source/_integrations/nexia.markdown @bdraco -source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne +source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/nextbus.markdown @vividboarder source/_integrations/nextcloud.markdown @meichthys source/_integrations/nextdns.markdown @bieniu @@ -453,7 +455,7 @@ source/_integrations/numato.markdown @clssn source/_integrations/number.markdown @home-assistant/core @Shulyaka source/_integrations/nut.markdown @bdraco @ollo69 source/_integrations/nutrichef.markdown @bdraco -source/_integrations/nws.markdown @MatthewFlamm +source/_integrations/nws.markdown @MatthewFlamm @kamiyo source/_integrations/nzbget.markdown @chriscla source/_integrations/obihai.markdown @dshokouhi source/_integrations/octoprint.markdown @rfleming71 @@ -476,7 +478,7 @@ source/_integrations/openweathermap.markdown @fabaff @freekode @nzapponi source/_integrations/opnsense.markdown @mtreinish source/_integrations/oralb.markdown @bdraco source/_integrations/oru.markdown @bvlaicu -source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne +source/_integrations/overkiz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ovo_energy.markdown @timmo001 source/_integrations/p1_monitor.markdown @klaasnicolaas source/_integrations/panel_custom.markdown @home-assistant/frontend @@ -503,6 +505,7 @@ source/_integrations/proxmoxve.markdown @jhollowe @Corbeno source/_integrations/prusalink.markdown @balloob source/_integrations/ps4.markdown @ktnrg45 source/_integrations/pure_energie.markdown @klaasnicolaas +source/_integrations/purpleair.markdown @bachya source/_integrations/push.markdown @dgomes source/_integrations/pushbullet.markdown @engrbm87 source/_integrations/pushover.markdown @engrbm87 @@ -519,7 +522,7 @@ source/_integrations/rachio.markdown @bdraco source/_integrations/radarr.markdown @tkdrob source/_integrations/radio_browser.markdown @frenck source/_integrations/radiotherm.markdown @bdraco @vinnyfuria -source/_integrations/rainbird.markdown @konikvranik +source/_integrations/rainbird.markdown @konikvranik @allenporter source/_integrations/raincloud.markdown @vanstinator source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert @hastarin source/_integrations/rainmachine.markdown @bachya @@ -533,7 +536,7 @@ source/_integrations/remote.markdown @home-assistant/core source/_integrations/renault.markdown @epenet source/_integrations/repairs.markdown @home-assistant/core source/_integrations/repetier.markdown @MTrab @ShadowBr0ther -source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne +source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/rflink.markdown @javicalle source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221 source/_integrations/rhasspy.markdown @balloob @synesthesiam @@ -586,7 +589,7 @@ source/_integrations/signal_messenger.markdown @bbernhard source/_integrations/simplepush.markdown @engrbm87 source/_integrations/simplisafe.markdown @bachya source/_integrations/simply_automated.markdown @gwww -source/_integrations/simu.markdown @imicknl @vlebourl @tetienne +source/_integrations/simu.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/sinch.markdown @bendikrb source/_integrations/siren.markdown @home-assistant/core @raman325 source/_integrations/sisyphus.markdown @jkeljo @@ -613,7 +616,7 @@ source/_integrations/solaredge_local.markdown @drobtravels @scheric source/_integrations/solarlog.markdown @Ernst79 source/_integrations/solax.markdown @squishykid source/_integrations/soma.markdown @ratsept @sebfortier2288 -source/_integrations/somfy.markdown @imicknl @vlebourl @tetienne +source/_integrations/somfy.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/sonarr.markdown @ctalkington source/_integrations/songpal.markdown @rytilahti @shenxn source/_integrations/sonos.markdown @cgtobi @jjlawren @@ -644,7 +647,7 @@ source/_integrations/swiss_public_transport.markdown @fabaff 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 @bdraco @danielhiversen @RenierM26 @murtas @Eloston +source/_integrations/switchbot.markdown @bdraco @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski source/_integrations/switcher_kis.markdown @tomerfi @thecode source/_integrations/switchmate.markdown @danielhiversen @qiz-li source/_integrations/symfonisk.markdown @cgtobi @jjlawren @@ -690,7 +693,7 @@ source/_integrations/tts.markdown @pvizeli source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck source/_integrations/twentemilieu.markdown @frenck source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 -source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne +source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ukraine_alarm.markdown @PaulAnnekov source/_integrations/unifi.markdown @Kane610 source/_integrations/unifiled.markdown @florisvdk diff --git a/Gemfile.lock b/Gemfile.lock index 40457fe756ab..60e17c4f81dc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -118,7 +118,7 @@ GEM concurrent-ruby (~> 1.0) tzinfo-data (1.2022.7) tzinfo (>= 1.0.0) - unicode-display_width (2.4.1) + unicode-display_width (2.4.2) webrick (1.7.0) PLATFORMS diff --git a/_config.yml b/_config.yml index 82918455d924..3234e8ee89a5 100644 --- a/_config.yml +++ b/_config.yml @@ -108,10 +108,10 @@ social: account: "https://fosstodon.org/@homeassistant" # Home Assistant release details -current_major_version: 2022 -current_minor_version: 12 -current_patch_version: 9 -date_released: 2023-01-02 +current_major_version: 2023 +current_minor_version: 1 +current_patch_version: 1 +date_released: 2023-01-05 # 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/package-lock.json b/package-lock.json index 1db41f09d7a8..9e2f1fb424fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.5.0", + "textlint": "^12.5.1", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" @@ -304,9 +304,9 @@ "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.0.tgz", - "integrity": "sha512-iq+fdacaVcI1W3izo2V6JJOcnlUdDL9mX2Q1Ok3b+xwEzG5ZFo3G8iPpdQZXVZDE2jehRSvom8gsOds+n5ZffQ==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.1.tgz", + "integrity": "sha512-dzOsgpkl5lIB25BHgW0saAohRW4ZF0s/SyK/FbweYtkDGd190USLGpCibx2M8/mAEFDs5YsnTqZlkbp1FLLuyQ==", "dev": true, "dependencies": { "@textlint/module-interop": "^12.5.0", @@ -5334,16 +5334,16 @@ "dev": true }, "node_modules/textlint": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.0.tgz", - "integrity": "sha512-81pwYha45aXCN6oVu2qjQ6nWaXT/U0nabl+S1F8HiY6pQMYwaX1D0on/rLWDO+K7BDQFPdrnO/7/PMw5LEU2Cg==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.1.tgz", + "integrity": "sha512-LoFU1yBIm/gxM++jDdvdfS2diW14NBHsimRyChi8Kb5h5pUHcG0rGfW2PflUzfYcHF0XykgW9WBdPd1WWnyS7Q==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", "@textlint/ast-traverse": "^12.5.0", "@textlint/config-loader": "^12.5.0", "@textlint/feature-flag": "^12.5.0", - "@textlint/fixer-formatter": "^12.5.0", + "@textlint/fixer-formatter": "^12.5.1", "@textlint/kernel": "^12.5.0", "@textlint/linter-formatter": "^12.5.0", "@textlint/module-interop": "^12.5.0", @@ -6494,9 +6494,9 @@ "dev": true }, "@textlint/fixer-formatter": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.0.tgz", - "integrity": "sha512-iq+fdacaVcI1W3izo2V6JJOcnlUdDL9mX2Q1Ok3b+xwEzG5ZFo3G8iPpdQZXVZDE2jehRSvom8gsOds+n5ZffQ==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.1.tgz", + "integrity": "sha512-dzOsgpkl5lIB25BHgW0saAohRW4ZF0s/SyK/FbweYtkDGd190USLGpCibx2M8/mAEFDs5YsnTqZlkbp1FLLuyQ==", "dev": true, "requires": { "@textlint/module-interop": "^12.5.0", @@ -10074,16 +10074,16 @@ "dev": true }, "textlint": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.0.tgz", - "integrity": "sha512-81pwYha45aXCN6oVu2qjQ6nWaXT/U0nabl+S1F8HiY6pQMYwaX1D0on/rLWDO+K7BDQFPdrnO/7/PMw5LEU2Cg==", + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.1.tgz", + "integrity": "sha512-LoFU1yBIm/gxM++jDdvdfS2diW14NBHsimRyChi8Kb5h5pUHcG0rGfW2PflUzfYcHF0XykgW9WBdPd1WWnyS7Q==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", "@textlint/ast-traverse": "^12.5.0", "@textlint/config-loader": "^12.5.0", "@textlint/feature-flag": "^12.5.0", - "@textlint/fixer-formatter": "^12.5.0", + "@textlint/fixer-formatter": "^12.5.1", "@textlint/kernel": "^12.5.0", "@textlint/linter-formatter": "^12.5.0", "@textlint/module-interop": "^12.5.0", diff --git a/package.json b/package.json index 85030905ac20..91fb4d778f23 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.5.0", + "textlint": "^12.5.1", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index 4be019e3aae8..dfa2b922a063 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -1,5 +1,5 @@ --- -title: AirVisual +title: AirVisual Cloud description: Instructions on how to use AirVisual data within Home Assistant ha_category: - Health @@ -12,10 +12,10 @@ ha_config_flow: true ha_platforms: - diagnostics - sensor -ha_integration_type: device +ha_integration_type: service --- -The `airvisual` sensor platform queries the [AirVisual](https://www.iqair.com) cloud API for air quality data. Data can be collected via latitude/longitude, by city/state/country, or from an [AirVisual Node/Pro unit](https://www.iqair.com/air-quality-monitors/airvisual-pro). +The `airvisual` sensor platform queries the [AirVisual](https://www.iqair.com) cloud API for air quality data. Data can be collected via latitude/longitude or city/state/country. ## Using the AirVisual Cloud API @@ -35,10 +35,6 @@ For example: -## Using an AirVisual Node/Pro Unit - -The integration can communicate to Node/Pro units over the local network. You will need the IP address/hostname of the unit and its Samba password (which can be found on the unit; [instructions here](https://support.iqair.com/en/articles/3029331-download-the-airvisual-node-pro-s-data-using-samba)). - {% include integrations/config_flow.md %} ## Determining the City/State/Country @@ -53,8 +49,6 @@ For example, Sao Paulo, Brazil shows a breadcrumb title of `Brazil > Sao Paulo > ## Sensor Types -### Cloud API - When configured, the platform will create three sensors for each air quality standard: #### Air Quality Index @@ -93,17 +87,3 @@ Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution](https: Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) - -### Node/Pro - -Node/Pro units will create a variety of sensors: - -- Air Quality Index (AQI) -- Battery Level -- Carbon Dioxide (CO2) -- Humidity -- Particulate (<= 0.1 μm) (PM0.1) -- Particulate (<= 2.5 μm) (PM2.5) -- Particulate (<= 10 μm) (PM10) -- Temperature -- Volatile Organic Compounds (VOC) diff --git a/source/_integrations/airvisual_pro.markdown b/source/_integrations/airvisual_pro.markdown new file mode 100644 index 000000000000..25a66d75ad37 --- /dev/null +++ b/source/_integrations/airvisual_pro.markdown @@ -0,0 +1,38 @@ +--- +title: AirVisual Pro +description: Instructions on how to use AirVisual Pro devices within Home Assistant +ha_category: + - Health +ha_release: 2023.1 +ha_iot_class: Local Polling +ha_codeowners: + - '@bachya' +ha_domain: airvisual_pro +ha_config_flow: true +ha_platforms: + - diagnostics + - sensor +ha_integration_type: device +--- + +The AirVisual Pro integration allows users to retrieve data from an [AirVisual Node/Pro unit](https://www.iqair.com/air-quality-monitors/airvisual-pro). Communication with the device occurs over the local network. + +## Determining the Password + +You will need the device's Samba password, which [can be found on the unit](https://support.iqair.com/en/articles/3029331-download-the-airvisual-node-pro-s-data-using-samba). + +{% include integrations/config_flow.md %} + +## Sensor Types + +AirVisual Pro devices create a variety of sensors: + +- Air Quality Index (AQI) +- Battery Level +- Carbon Dioxide (CO2) +- Humidity +- Particulate (<= 0.1 μm) (PM0.1) +- Particulate (<= 2.5 μm) (PM2.5) +- Particulate (<= 10 μm) (PM10) +- Temperature +- Volatile Organic Compounds (VOC) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index ba259355b243..633f81e567f5 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -119,16 +119,6 @@ Steps to Integrate an Amazon Alexa Smart Home Skill with Home Assistant: We will write a small piece of code hosted as an AWS Lambda function that will redirect requests from the Alexa Smart Home skill to your Home Assistant instance, then the Alexa integration in Home Assistant will process the request and send back the response. The Lambda function will then deliver the response back to the Alexa Smart Home skill. -
- -There already are some great alternative tutorials and solutions to ours in our community to achieve the same goal of creating your Alexa Smart Home Skill and its connection to Home Assistant, for example: [haaska](https://github.com/mike-grant/haaska/wiki). - -Amazon also has provided a [step-by-step guide](https://developer.amazon.com/docs/smarthome/steps-to-build-a-smart-home-skill.html) to create a Smart Home Skill, however you have to adapt its sample code to match the Home Assistant API. - -You can follow this document or others, but you cannot mix and match different solutions since they may have different designs. - -
- OK, let's go. You first need to sign in to your [AWS console](https://console.aws.amazon.com/), if you don't have an AWS account yet, you can create a new user [here](https://aws.amazon.com/free/) with 12-month free tier benefit. You don't need to worry about the cost if your account has already passed the first 12 months, as AWS provides up to 1 million Lambda requests, 1GB of outbound data and all inbound data for free, every month, for all users. See [Lambda pricing](https://aws.amazon.com/lambda/pricing/) for more details. ### Create an IAM Role for Lambda diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index d437a8f1fc75..c001cf636aca 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -13,7 +13,7 @@ ha_domain: androidtv ha_platforms: - diagnostics - media_player -ha_integration_type: integration +ha_integration_type: device --- The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device. diff --git a/source/_integrations/asuswrt.markdown b/source/_integrations/asuswrt.markdown index e00f836d4202..5bea3d5c2f8b 100644 --- a/source/_integrations/asuswrt.markdown +++ b/source/_integrations/asuswrt.markdown @@ -16,7 +16,7 @@ ha_platforms: - device_tracker - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: hub --- The ASUSWRT integration can connect Home Assistant to a ASUS router that runs on ASUSWRT firmware. diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index f72a13ba1d84..788f3897bdc5 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -15,13 +15,13 @@ ha_codeowners: - '@HarvsG' --- -The `bayesian` binary sensor platform observes the state from multiple sensors and uses [Bayes' rule](https://en.wikipedia.org/wiki/Bayes%27_theorem) to estimate the probability that an event has occurred given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`, the sensor is `on` otherwise it is `off`. +The `bayesian` binary sensor platform observes the state from multiple sensors. It uses [Bayes' rule](https://en.wikipedia.org/wiki/Bayes%27_theorem) to estimate the probability that an event is occurring given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`, the sensor is `on`; otherwise, it is `off`. This allows for the detection of complex events that may not be readily observable, e.g., cooking, showering, in bed, the start of a morning routine, etc. It can also be used to gain greater confidence about events that _are_ directly observable, but for which the sensors can be unreliable, e.g., presence. ## Theory -A key concept in Bayes' Rule is the difference between the probability of the 'event given the observation' and the probability of the 'observation given the event'. In some cases these probabilities will be similar. The probability that someone is in the room given that motion is detected is similar to the probability motion is detected given that someone is in the room. In other cases, the distinction is much more important. The probability I have just arrived home (the event) each time the front door contact sensor reports `open` (the observation) (p=0.2) is not the same as the probability the front door contact sensor reports `open` (the observation) when I come home (the event) (p=0.999). +A key concept in Bayes' Rule is the difference between the probability of the 'event given the observation' and the probability of the 'observation given the event'. In some cases, these probabilities will be similar. The probability that someone is in the room given that motion is detected is similar to the probability motion is detected given that someone is in the room when motion sensors are accurate. In other cases, the distinction is much more important. The probability one has just arrived home (the event) each time the front door contact sensor reports `open` (the observation) (p=0.2) is not the same as the probability the front door contact sensor reports `open` (the observation) when one comes home (the event) (p=0.999). This difference is because one opens the door several times a day for other purposes. In the configuration use the probability of the observation (the sensor state in question) given the event (the assumed state of the Bayesian binary_sensor). diff --git a/source/_integrations/blebox.markdown b/source/_integrations/blebox.markdown index 5e8ab96116d9..5662e0d65990 100644 --- a/source/_integrations/blebox.markdown +++ b/source/_integrations/blebox.markdown @@ -19,6 +19,7 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_zeroconf: true --- [BleBox](https://blebox.eu/?lang=en) produces small, low-power, surprisingly affordable, feature-rich WiFi devices for serverless home automation. @@ -73,6 +74,7 @@ This integration adds the BleBox device as a climate in Home Assistant. Currently, this includes support for the following product classes: - BleBox saunaBox +- BleBox thermoBox ## Air Quality diff --git a/source/_integrations/brandt.markdown b/source/_integrations/brandt.markdown index fdbd2531fb5e..9ced5622c569 100644 --- a/source/_integrations/brandt.markdown +++ b/source/_integrations/brandt.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/citybikes.markdown b/source/_integrations/citybikes.markdown index f22993c60983..f786a5864a64 100644 --- a/source/_integrations/citybikes.markdown +++ b/source/_integrations/citybikes.markdown @@ -21,6 +21,7 @@ To enable it, add the following lines to your `configuration.yaml`: # Example configuration.yaml entry (using radius) sensor: - platform: citybikes + radius: 200 ``` {% configuration %} @@ -44,11 +45,11 @@ longitude: default: Defaults to the longitude in your `configuration.yaml` file. type: string radius: - description: The radius (in meters or feet, depending on the Home Assistant configuration) around the monitored location. Only stations closer than this distance will be monitored. + description: The radius (in meters or feet, depending on the Home Assistant configuration) around the monitored location. Only stations closer than this distance will be monitored. Either `radius` or `stations` are required. required: false type: integer stations: - description: A list of specific stations to monitor. The list should contain station `ID`s or `UID`s, which can be obtained from the CityBikes API. + description: A list of specific stations to monitor. The list should contain station `ID`s or `UID`s, which can be obtained from the CityBikes API. Either `radius` or `stations` are required. required: false type: list {% endconfiguration %} diff --git a/source/_integrations/cozytouch.markdown b/source/_integrations/cozytouch.markdown index 60bdc8de1a16..cb331eec7404 100644 --- a/source/_integrations/cozytouch.markdown +++ b/source/_integrations/cozytouch.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index e0db645a10c7..a075a1f87bdb 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -25,7 +25,7 @@ This integration is a meta-component and configures a default set of integration - [History](/integrations/history/) (`history`) - [Home Assistant Alerts](/integrations/homeassistant_alerts) (`homeassistant_alerts`) - [Home Assistant Cloud](/integrations/cloud/) (`cloud`) -- [Image](/integrations/image/) (`image`) +- [Image upload](/integrations/image_upload/) (`image_upload`) - [Input boolean](/integrations/input_boolean/) (`input_boolean`) - [Input button](/integrations/input_button/) (`input_button`) - [Input datetime](/integrations/input_datetime/) (`input_datetime`) diff --git a/source/_integrations/derivative.markdown b/source/_integrations/derivative.markdown index d4144a099b3d..d29579386140 100644 --- a/source/_integrations/derivative.markdown +++ b/source/_integrations/derivative.markdown @@ -18,8 +18,9 @@ ha_platforms: ha_integration_type: helper --- -The derivative ([Wikipedia](https://en.wikipedia.org/wiki/Derivative)) integration creates a sensor that estimates the derivative of the -values provided by another sensor (the **source sensor**). Derivative sensors are updated upon changes of the **source sensor**. +The derivative ([Wikipedia](https://en.wikipedia.org/wiki/Derivative)) integration creates a sensor that "smooths-out" another sensor (the **source sensor**). +Derivatives of the specified sensor will be averaged in a given time window with a Simple Moving Average algorithm weighted by time. This is, for instance, useful for a sensor that outputs discrete values or to filter out short-duration noise. +Derivative sensors are updated upon changes of the **source sensor**. For sensors that reset to zero after a power interruption and need a "non-negative derivative", such as bandwidth counters in routers, or rain gauges, consider using the [Utility Meter](/integrations/utility_meter/) integration instead. Otherwise, each reset will register a significant change in the derivative sensor. @@ -30,7 +31,7 @@ Name: Input sensor: description: The entity providing numeric readings to create the derivative of. Precision: - description: Round the calculated integration value to at most N decimal places. + description: Round the calculated derivative value to at most N decimal places. Time window: description: The time window in which to calculate the derivative. Derivatives in this window will be averaged with a simple moving average algorithm (SMA) weighted by time. This is for instance useful for a sensor that outputs discrete values, or to filter out short duration noise. By default the derivative is calculated between two consecutive updates without any smoothing. Metric Prefix: @@ -42,7 +43,7 @@ Time unit: ## YAML Configuration Alternatively, this integration can be configured and set up manually via YAML -instead. To enable the Integration sensor in your installation, add the +instead. To enable the Derivative sensor in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -82,7 +83,7 @@ unit: required: false type: string time_window: - description: The time window in which to calculate the derivative. Derivatives in this window will be averaged with a Simple Moving Average algorithm weighted by time. This is for instance useful for a sensor that outputs discrete values, or to filter out short duration noise. By default the derivative is calculated between two consecutive updates without any smoothing. + description: The time window in which to calculate the derivative. By default the derivative is calculated between two consecutive updates without any smoothing. default: 0 required: false type: time diff --git a/source/_integrations/deutsche_bahn.markdown b/source/_integrations/deutsche_bahn.markdown deleted file mode 100644 index ea59b6ae0825..000000000000 --- a/source/_integrations/deutsche_bahn.markdown +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: Deutsche Bahn -description: Instructions on how to integrate timetable data for traveling in Germany within Home Assistant. -ha_category: - - Transport -ha_iot_class: Cloud Polling -ha_release: 0.14 -ha_domain: deutsche_bahn -ha_platforms: - - sensor -ha_integration_type: integration ---- - -
- This integration is pending removal from Home Assistant and will be no longer available as of Home Assistant 2022.11. -
- -The `deutsche_bahn` sensor will give you the departure time of the next train for the given connection. In case of a delay, the delay is also shown. Additional details are used to inform about, e.g., the type of the train, price, and if it is on time. - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: deutsche_bahn - from: NAME_OF_START_STATION - to: NAME_OF_FINAL_STATION -``` - -{% configuration %} -from: - description: The name of the start station. - required: true - type: string -to: - description: The name of the end/destination station. - required: true - type: string -offset: - description: Do not display departures leaving sooner than this number of seconds. Useful if you are a couple of minutes away from the stop. The formats "HH:MM" and "HH:MM:SS" are also supported. - required: false - type: time - default: 00:00 -only_direct: - description: Only show direct connections. - required: false - type: boolean - default: false -{% endconfiguration %} - -This sensor stores a lot of attributes which can be accessed by other sensors, e.g., a [template sensor](/integrations/template). - -{% raw %} - -```yaml -# Example configuration.yaml entry -template: - - sensor: - - name : "Next departure" - state: "{{ state_attr('sensor.munich_to_ulm', 'next') }}" -``` - -{% endraw %} - -The data is coming from the [bahn.de](https://www.bahn.de/p/view/index.shtml) website. diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index 3a3a8ffde923..3c507ca4130c 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -149,6 +149,11 @@ payload_not_home: required: false type: string default: not_home +payload_reset: + description: The payload value that will have the device's location automatically derived from Home Assistant's zones. + required: false + type: string + default: "None" qos: description: The maximum QoS level of the state topic. required: false diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index 15a200173ecb..c7bd2929d6ca 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -29,6 +29,7 @@ To use this DSMR Reader sensor integration, you need to have a DSMR Reader insta - Day consumption: Split topic - Gas consumption: Split topic - Meter Statistics: Split topic + - Quarter-hour peak consumption: Split topic - Telegram: Split topic {% include integrations/config_flow.md %} diff --git a/source/_integrations/econet.markdown b/source/_integrations/econet.markdown index f9a4c681e4e6..9020cb1298ff 100644 --- a/source/_integrations/econet.markdown +++ b/source/_integrations/econet.markdown @@ -21,7 +21,7 @@ ha_platforms: ha_integration_type: integration --- -The EcoNet integration is consuming the information provided by a [EcoNet enabled Rheem water heater or thermostat](https://www.rheem.com/EcoNet/Home). +The EcoNet integration is consuming the information provided by a [EcoNet enabled Rheem water heater or thermostat](https://www.rheem.com/econet). {% include integrations/config_flow.md %} diff --git a/source/_integrations/elmax.markdown b/source/_integrations/elmax.markdown index ecd8fceab715..e3d64206130f 100644 --- a/source/_integrations/elmax.markdown +++ b/source/_integrations/elmax.markdown @@ -10,6 +10,7 @@ ha_codeowners: - '@albertogeniola' ha_domain: elmax ha_platforms: + - alarm_control_panel - binary_sensor - switch ha_integration_type: integration diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index 4add5376b961..8e9221994414 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -49,10 +49,10 @@ envisalink: timeout: 10 panic_type: Police zones: - 11: + 1: name: "Back Door" type: "opening" - 21: + 2: name: "First Floor Motion" type: "motion" partitions: @@ -112,7 +112,7 @@ panic_type: default: Police type: string zones: - description: "Envisalink boards have no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information about the visual representation of a zone, take a look at the [Binary Sensor](/integrations/binary_sensor/#device-class) documentation. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.*" + description: "Envisalink boards have no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. Zone numbers correspond to the zone numbers configured on your alarm system and must be in the range of 1 to 64. For each zone, at least a name must be given. For more information about the visual representation of a zone, take a look at the [Binary Sensor](/integrations/binary_sensor/#device-class) documentation. *Note: If no zones are specified, Home Assistant will not load any binary_sensor components.*" required: false type: integer keys: diff --git a/source/_integrations/flexom.markdown b/source/_integrations/flexom.markdown index e3f3ae31e8ba..d47ec74f02ab 100644 --- a/source/_integrations/flexom.markdown +++ b/source/_integrations/flexom.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index d2f36481a7ee..06546b5f6dec 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -15,7 +15,9 @@ ha_platforms: - diagnostics --- -The `google_assistant` integration allows you to control things via Google Assistant on your mobile, tablet or Google Home device. +The `google_assistant` integration allows you to control your Home Assistant devices via Google Assistant on your mobile, tablet or Google Home device. + +If you want to send commands to Google Assistant to control devices supported by Google Assistant but not by Home Assistant, or broadcast messages to Google Assistant speakers and displays without interrupting music/video playback, take a look at the [Google Assistant SDK](/integrations/google_assistant_sdk) integration. ## Automatic setup via Home Assistant Cloud @@ -336,6 +338,10 @@ If you receive 404 errors linked to reporting state in your log, Home Assistant Your fulfillment URL may be invalid or unreachable. Recheck the `Fulfillment URL` as specified in [Manual Setup](#manual-setup) and verify that it's publicly reachable. +#### 500 / 429 error on request sync + +This error may occur if the service key is invalid. Try deleting and creating a new service account and key. + #### NGINX When using NGINX, ensure that your `proxy_pass` line *does not* have a trailing `/`, as this will result in errors. Your line should look like: diff --git a/source/_integrations/google_assistant_sdk.markdown b/source/_integrations/google_assistant_sdk.markdown new file mode 100644 index 000000000000..70e5c8a74b0e --- /dev/null +++ b/source/_integrations/google_assistant_sdk.markdown @@ -0,0 +1,142 @@ +--- +title: Google Assistant SDK +description: Instructions on how to use Google Assistant SDK in Home Assistant. +ha_category: + - Utility +ha_iot_class: Cloud Polling +ha_release: 2023.1 +ha_config_flow: true +ha_domain: google_assistant_sdk +ha_codeowners: + - '@tronikos' +ha_integration_type: service +ha_platforms: + - notify +--- + +The Google Assistant SDK integration allows Home Assistant to interact with Google Assistant. If you want to use Google Assistant (for example, from your phone or Google Home device) to interact with your Home Assistant managed devices, then you want the [Google Assistant](/integrations/google_assistant) integration. + +This integration allows: + +- Sending text commands to Google Assistant to control devices supported by Google Assistant but not by Home Assistant. Examples: + - Set Nest Guard to home and guarding + - Start vacuuming + - Stream front door on living room TV + - Turn off kitchen TV + - Play rain sounds on bedroom speaker +- Broadcast messages to Google Assistant speakers and displays without interrupting music/video playback. Examples: + - Coffee is ready + - Someone is at the front door + - Smoke detected in the master bedroom + - Water leak detected in the master bathroom + +## Prerequisites + +You need to configure developer credentials to allow Home Assistant to access your Google Account. +These credentials are the same as the ones for [Nest](/integrations/nest) or [Google Sheets](/integrations/google_sheets). +If you have already set up credentials, you can do step 1 and then skip to step 13 on the below instructions. + +{% details "Generate Client ID and Client Secret" %} + +This section explains how to generate a Client ID and Client Secret on +[Google Developers Console](https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview). + +1. First go to the Google Developers Console to enable [Google Assistant API](https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview) +2. Select an existing project or create a new one from the dropdown menu in the upper left corner. +3. Click to enable this API. +4. Click on the field on the left of the screen, **OAuth Consent Screen**. +5. Select **External** and **Create**. +6. Set the *App Name* (the name of the application asking for consent) to anything you want e.g. *Home Assistant*. +7. You then need to select a *Support email*. To do this, simply click the drop down box and select your email address. +8. You finally need to complete the section: *Developer contact information*. To do this, simply enter your email address (same as above is fine). +9. Scroll to the bottom and click **Save and Continue**. Don't have to fill out anything else or it may enable additional review. +10. You will then be automatically taken to the Scopes page. You do not need to add any scopes here so click Save and Continue to move to the Optional info page. You do not need to add anything to the Optional info page so click Save and Continue which will take you to the Summary page. Click Back to Dashboard. +11. Click **OAuth consent screen** again and set *Publish Status* to **Production** otherwise your credentials will expire every 7 days. +12. Make sure **Publishing status** is set to production. +13. Click **Credentials** in the menu on the left hand side of the screen, then click **Create credentials** (at the top of the screen), then select *OAuth client ID*. +14. Set the Application type to *Web application* and give this credential set a name (like "Home Assistant Credentials"). +15. Add https://my.home-assistant.io/redirect/oauth to *Authorized redirect URIs* then click **Create**. +16. You will then be presented with a pop-up saying *OAuth client created* showing *Your Client ID* and *Your Client Secret*. Make a note of these (for example, copy and paste them into a text editor) as you will need these shortly. Once you have noted these strings, click **OK**. If you need to find these credentials again at any point then simply navigate to *APIs & Services > Credentials* and you will see *Home Assistant Credentials* (or whatever you named them in the previous step) under *OAuth 2.0 Client IDs*. To view both the *Client ID* and *Client secret*, click on the pencil icon, this will take you to the settings page for these credentials and the information will be on the right hand side of the page. +17. Double check that the *Google Assistant API* has been automatically enabled. To do this, select **Library** from the menu, then search for *Google Assistant API*. If it is enabled you will see *API Enabled* with a green tick next to it. If it is not enabled, then enable it. + +{% enddetails %} + +{% include integrations/config_flow.md %} + +The integration setup will next give you instructions to enter the [Application Credentials](/integrations/application_credentials/) (OAuth Client ID and Client Secret) and authorize Home Assistant to access your Google Assistant API. + +{% details "Authorization steps" %} + +1. Continue through the steps of selecting the account you want to authorize. + +2. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed. + +3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**. + +4. The page will now display *Link account to Home Assistant?*, note *Your instance URL*. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**. + +5. You may close the window, and return back to Home Assistant where you should see a *Success!* message from Home Assistant. + +{% enddetails %} + +## Troubleshooting + +If you have an error with your credentials you can delete them in the [Application Credentials](/integrations/application_credentials/) user interface. + +If broadcasting doesn't work, make sure: the speakers aren't in do not disturb mode, the Home Assistant server is in the same network as the speakers, and IPv6 is disabled in the router. + +## Limitations/known issues + +Multiple Google accounts are not supported. + +Limitations of the underlying library are listed [here](https://github.com/tronikos/gassist_text#limitationsknown-issues) (media playback, routines, and personal results are not working). + +## Configuration + +On the configure page, you can set the language code of the interactions with Google Assistant. If not configured, the integration picks one based on Home Assistant's configured language and country. Supported languages are listed [here](https://developers.google.com/assistant/sdk/reference/rpc/languages) + +## Services + +### Service `google_assistant_sdk.send_text_command` + +You can use the service `google_assistant_sdk.send_text_command` to send commands to Google Assistant. + +| Service data attribute | Optional | Description | Example | +| ---------------------- | -------- | ----------- | --------| +| `command` | no | Command to send to Google Assistant. | turn off kitchen TV | + +Example: + +```yaml +service: google_assistant_sdk.send_text_command +data: + command: turn off kitchen TV +``` + +### Service `notify.google_assistant_sdk` + +You can use the service `notify.google_assistant_sdk` to broadcast messages to Google Assistant speakers and displays without interrupting music/video playback. + +| Service data attribute | Optional | Description | Example | +| ---------------------- | -------- | ----------- | --------| +| `message` | no | Message to broadcast. | someone is at the front door | +| `target` | yes | Rooms (in Google Assistant) | bedroom | + +Example to broadcast to all speakers: + +```yaml +service: notify.google_assistant_sdk +data: + message: time for dinner +``` + +Example to broadcast to speakers in selected rooms: + +```yaml +service: notify.google_assistant_sdk +data: + message: time for dinner + target: + - bedroom + - basement +``` diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown index 3b40a13439ac..2e5b95604d1a 100644 --- a/source/_integrations/google_translate.markdown +++ b/source/_integrations/google_translate.markdown @@ -29,12 +29,37 @@ language: required: false type: string default: "`en`" +tld: + description: "The default Google domain you want to use to choose dialect." + required: false + type: string + default: "`com`" {% endconfiguration %} Check the [complete list of supported languages](https://translate.google.com/intl/en_ALL/about/languages/) (languages where "Talk" feature is enabled in Google Translate) for allowed values. -Use the 2 digit language code which you can find at the end of URL when you click on Language name. +Use the 2-digit language code which you can find at the end of the URL when you click on the language name. + +Check the [complete list of supported tld](https://www.google.com/supported_domains) for allowed TLD values. This is used to force the dialect used when multiple fall into the same 2-digit language code(i.e., *US, UK, AU*) + +You can also use supported BCP 47 tags like the below or the 2-2 digit format for your supported dialect(`en-gb` or `en-us`). Below is a list of the currently implemented mappings: + +| Dialect | Language | TLD | +|---------|----------|-----| +|en-us|en|com| +|en-gb|en|co.uk| +|en-uk|en|co.uk| +|en-au|en|com.au| +|en-ca|en|ca| +|en-in|en|co.in| +|en-ie|en|ie| +|en-za|en|co.za| +|fr-ca|fr|ca| +|fr-fr|fr|fr| +|pt-br|pt|com.br| +|pt-pt|pt|pt| +|es-es|es|es| +|es-us|es|com| -For more information about using text-to-speech with Home Assistant and more details on all the options it provides, see the [TTS documentation](/integrations/tts/). ## Full configuration example @@ -45,4 +70,73 @@ A full configuration sample including optional variables: tts: - platform: google_translate language: "de" + tld: com +``` + +## Service say + +The `google_translate_say` service supports `language` and also `options` for setting `tld`. The text for speech is set with `message`. Since release 0.92, the service name can be defined in the configuration `service_name` option. + +Say to all `media_player` device entities: + +```yaml +# Replace google_translate_say with _say when you use a different platform. +service: tts.google_translate_say +data: + entity_id: all + message: "May the force be with you." ``` + +Say to the `media_player.floor` device entity: + +```yaml +service: tts.google_translate_say +data: + entity_id: media_player.floor + message: "May the force be with you." +``` + +Say to the `media_player.floor` device entity in French: + +```yaml +service: tts.google_translate_say +data: + entity_id: media_player.floor + message: "Que la force soit avec toi." + language: "fr" +``` + +Say to the `media_player.floor` device entity in UK English: + +```yaml +service: tts.google_translate_say +data: + entity_id: media_player.floor + message: "May the force be with you." + language: "en-uk" +``` + +```yaml +service: tts.google_translate_say +data: + entity_id: media_player.floor + message: "May the force be with you." + language: "en" + options: + tld: co.uk +``` + +With a template: + +{% raw %} + +```yaml +service: tts.google_translate_say +data: + message: "Temperature is {{states('sensor.temperature')}}." + cache: false +``` + +{% endraw %} + +For more information about using text-to-speech with Home Assistant and more details on all the options it provides, see the [TTS documentation](/integrations/tts/). diff --git a/source/_integrations/govee_ble.markdown b/source/_integrations/govee_ble.markdown index 2fbf1f5bd491..573bc1746517 100644 --- a/source/_integrations/govee_ble.markdown +++ b/source/_integrations/govee_ble.markdown @@ -8,6 +8,7 @@ ha_release: 2022.8 ha_iot_class: Local Push ha_codeowners: - '@bdraco' + - '@PierreAronnax' ha_domain: govee_ble ha_config_flow: true ha_platforms: diff --git a/source/_integrations/hexaom.markdown b/source/_integrations/hexaom.markdown index 9242f17d95ce..834c7f940f21 100644 --- a/source/_integrations/hexaom.markdown +++ b/source/_integrations/hexaom.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/hi_kumo.markdown b/source/_integrations/hi_kumo.markdown index 2e1c8a526d8b..2daeeeb300bb 100644 --- a/source/_integrations/hi_kumo.markdown +++ b/source/_integrations/hi_kumo.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/image.markdown b/source/_integrations/image_upload.markdown similarity index 61% rename from source/_integrations/image.markdown rename to source/_integrations/image_upload.markdown index 59e1ba847ed6..f45e0a852629 100644 --- a/source/_integrations/image.markdown +++ b/source/_integrations/image_upload.markdown @@ -1,18 +1,18 @@ --- -title: Image -description: The image integration handle image assets in Home Assistant. +title: Image Upload +description: The image upload integration handle image assets in Home Assistant. ha_category: - Other ha_release: 0.115 ha_codeowners: - '@home-assistant/core' -ha_domain: image +ha_domain: image_upload ha_quality_scale: internal ha_integration_type: system --- -The Image integration allows Home Assistant to handle image assets in Home Assistant, for example, -the profile photos of your systems account. +The Image Upload integration allows Home Assistant to handle image assets in +Home Assistant, for example, the profile photos of your systems account. ## Configuration @@ -24,5 +24,5 @@ integration manually: ```yaml # Example configuration.yaml entry -image: +image_upload: ``` diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 21ea29784ce9..3372c82283fb 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -290,7 +290,14 @@ remove: ## Exposing entity states, entity attributes or time to KNX bus -KNX integration is able to expose entity states or attributes to KNX bus. The integration will broadcast any change of the exposed value to the KNX bus and answer read requests to the specified group address. It is also possible to expose the current time. +KNX integration is able to expose entity states or attributes to KNX bus. The integration will broadcast any change of the exposed value to the KNX bus and answer read requests to the specified group address. +It is also possible to expose the current time and date. These are sent to the bus every hour. + +
+ +Expose is only triggered on state changes. If you need periodical telegrams, use an automation with the `knx.send` service to send the value to the bus. + +
```yaml # Example configuration.yaml entry @@ -299,6 +306,7 @@ knx: - type: temperature entity_id: sensor.owm_temperature address: "0/0/2" + cooldown: 600 - type: string address: "0/6/4" entity_id: sensor.owm_weather @@ -345,6 +353,16 @@ default: type: [boolean, string, integer, float] default: None required: false +cooldown: + description: Minimum time in seconds between two sent telegrams. This can be used to avoid flooding the KNX bus when exposing frequently changing states. If the state changes multiple times within the cooldown period the most recent value will be sent. + type: float + default: 0 + required: false +respond_to_read: + description: Respond to GroupValueRead telegrams received to the configured `address`. + required: false + type: boolean + default: true {% endconfiguration %} ## Binary Sensor @@ -1848,13 +1866,14 @@ Add the following lines to your Home Assistant `configuration.yaml` to activate logger: default: warning logs: - # For most debugging needs `xnx.log` and one of `xknx.knx` or `xknx.telegram` are a good choice. - xknx: debug # sets the level of all loggers + # For most debugging needs `xnx.log` and `xknx.telegram` are a good choice. + xknx: info # sets the level of all loggers xknx.log: debug # provides general information (connection, etc.) - xknx.raw_socket: debug # logs incoming UDP frames in raw hex format + xknx.raw_socket: warning # logs incoming UDP frames in raw hex format xknx.knx: debug # logs incoming and outgoing KNX/IP frames at socket level + xknx.cemi: debug # logs incoming and outgoing CEMI frames xknx.telegram: debug # logs telegrams before they are being processed at device level or sent to an interface - xknx.state_updater: debug # provides information about the state updater + xknx.state_updater: warning # provides information about the state updater ``` You can use the service `logger.set_level` to change the log level of a handler on a running instance. diff --git a/source/_integrations/lightwave.markdown b/source/_integrations/lightwave.markdown index 8e8d5c9d87a1..0ad0cc1fd01d 100644 --- a/source/_integrations/lightwave.markdown +++ b/source/_integrations/lightwave.markdown @@ -106,8 +106,10 @@ The first use of a light or switch will try to register with your Lightwave WiFi # TRVs -Lightwave Thermostatic Radiator Values (TRV) are supported but require an additional proxy to capture the current TRV temperature. -See [LWProxy](https://github.com/ColinRobbins/Homeassistant-Lightwave-TRV) +Lightwave Thermostatic Radiator Values (TRV) are supported. + +Earlier integrations required a proxy - See [LWProxy](https://github.com/ColinRobbins/Homeassistant-Lightwave-TRV). +This capabilty is still supported, but no longer required. ```yaml # Example TRV configuration.yaml for TRVs @@ -117,8 +119,6 @@ lightwave: R99D1: name: Bedroom Light trv: - proxy_ip: 127.0.0.1 # Proxy address, do not change unless running on a different server - proxy_port: 7878 # Do not change, unless a port clash trvs: R1Dh: # The ID of the TRV. name: Bedroom TRV diff --git a/source/_integrations/litterrobot.markdown b/source/_integrations/litterrobot.markdown index 1325e3a2f9c8..67aef645b8df 100644 --- a/source/_integrations/litterrobot.markdown +++ b/source/_integrations/litterrobot.markdown @@ -6,6 +6,7 @@ ha_category: - Select - Sensor - Switch + - Update - Vacuum ha_iot_class: Cloud Push ha_release: 2021.3 @@ -21,6 +22,7 @@ ha_platforms: - select - sensor - switch + - update - vacuum ha_integration_type: hub --- @@ -49,6 +51,7 @@ You will need a Litter-Robot account as well as a Wi-Fi-enabled Litter-Robot or | Waste Drawer | `sensor` | Displays the current waste drawer level. | | Clean Cycle Wait Time Minutes | `select` | View and select the clean cycle wait time. | | Reset Waste Drawer | `button` | Button to reset the waste drawer level to 0%, only for Litter-Robot 3. | +| Firmware | `update` | View and update to the latest firmware, only for Litter-Robot 4. | ### Feeder-Robot diff --git a/source/_integrations/manual_mqtt.markdown b/source/_integrations/manual_mqtt.markdown index ba3dc61454e7..9180a09df4b8 100644 --- a/source/_integrations/manual_mqtt.markdown +++ b/source/_integrations/manual_mqtt.markdown @@ -22,6 +22,7 @@ The integration will accept the following commands from your Alarm Panel via the - `ARM_AWAY` - `ARM_NIGHT` - `ARM_VACATION` +- `ARM_CUSTOM_BYPASS` When the state of the manual alarm changes, Home Assistant will publish one of the following states to the `state_topic`: @@ -30,6 +31,7 @@ When the state of the manual alarm changes, Home Assistant will publish one of t - 'armed_away' - 'armed_night' - 'armed_vacation' +- 'armed_custom_bypass' - 'pending' - 'triggered' @@ -93,7 +95,7 @@ disarm_after_trigger: required: false type: boolean default: false -armed_home/armed_away/armed_night/armed_vacation/disarmed/triggered: +armed_home/armed_away/armed_night/armed_vacation/armed_custom_bypass/disarmed/triggered: description: State specific settings required: false type: list @@ -155,6 +157,11 @@ payload_arm_vacation: required: false type: string default: ARM_VACATION +payload_arm_custom_bypass: + description: The payload to set armed-custom bypass mode on this Alarm Panel. + required: false + type: string + default: ARM_CUSTOM_BYPASS {% endconfiguration %} ## Examples @@ -197,6 +204,7 @@ To change the state of the alarm, publish one of the following messages to the ` - `ARM_AWAY` - `ARM_NIGHT` - `ARM_VACATION` + - `ARM_CUSTOM_BYPASS` To receive state updates from HA, subscribe to the `state_topic`. Home Assistant will publish a new message whenever the state changes: @@ -205,5 +213,6 @@ To receive state updates from HA, subscribe to the `state_topic`. Home Assistant - `armed_away` - `armed_night` - `armed_vacation` + - `armed_custom_bypass` - `pending` - `triggered` diff --git a/source/_integrations/mazda.markdown b/source/_integrations/mazda.markdown index ef0e16bbb567..9012f5c6c836 100644 --- a/source/_integrations/mazda.markdown +++ b/source/_integrations/mazda.markdown @@ -6,6 +6,7 @@ ha_category: - Binary Sensor - Button - Car + - Climate - Lock - Presence Detection - Sensor @@ -19,6 +20,7 @@ ha_domain: mazda ha_platforms: - binary_sensor - button + - climate - device_tracker - diagnostics - lock @@ -94,6 +96,10 @@ Displays the current door lock status of the vehicle, and locks/unlocks the door For electric vehicles, a "charging" switch entity will be created, which allows viewing and controlling the charging state of the vehicle battery. +### Climate + +For electric vehicles, a climate entity will be created that allows controlling the vehicle's HVAC system. This includes turning the HVAC system on and off, setting a target temperature, and turning the front and rear defrosters on and off. + ## Services This integration provides a single service: diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 059ceb407741..0510dd793da3 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -507,6 +507,7 @@ Configuration variable names in the discovery payload may be abbreviated to cons The following software has built-in support for MQTT discovery: +- [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) - [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) - [ebusd](https://github.com/john30/ebusd) - [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) @@ -518,15 +519,16 @@ The following software has built-in support for MQTT discovery: - [OpenMQTTGateway](https://github.com/1technophile/OpenMQTTGateway) - [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) - [SmartHome](https://github.com/roncoa/SmartHome) +- [SpeedTest-CLI MQTT](https://github.com/adorobis/speedtest-CLI2mqtt) - [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted) - [Teleinfo MQTT](https://fmartinou.github.io/teleinfo2mqtt) (starting with 3.0.0) - [Tydom2MQTT](https://fmartinou.github.io/tydom2mqtt/) - [What's up Docker?](https://fmartinou.github.io/whats-up-docker/) (starting with 3.5.0) - [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt) - [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks) +- [Zehnder Comfoair RS232 MQTT](https://github.com/adorobis/hacomfoairmqtt) - [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt) - [Zwave2Mqtt](https://github.com/OpenZWave/Zwave2Mqtt) (starting with 2.0.1) -- [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) ### Discovery examples diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index c9f36de0cf4f..8116a4a6530c 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -71,9 +71,10 @@ The following router features can be turned on/off, and the status can be read: ### Speed test data -The "Average Ping", "Downlink Bandwidth" and "Uplink Bandwidth" can be tracked by performing a speed test every 30 minutes. -If these sensor entities are enabled they will first show as Unknown since the first speed test does only happen 30 minutes after the integration loads, previous results will be restored on subsequent restarts. -The speed test interval is chosen to be 30 minutes to not put unnecessary load on the network. +The "Average Ping", "Downlink Bandwidth," and "Uplink Bandwidth" can be tracked by performing a speed test every 2 hours. +If these sensor entities are enabled, they will first show previous results on integration load. The first new speed tests happens 2 hours after the integration loads. +The speed test interval is chosen to be 2 hours not to put unnecessary load on the network and reduce data usage. +When one or more of the three sensors is enabled, the speed tests will be performed. Note that this can cause high data usage depending on your internet connection speed which might be relevant when using metered/limited networks. ### Ethernet link status diff --git a/source/_integrations/nexity.markdown b/source/_integrations/nexity.markdown index 7a7a4d0fefd3..c609c6afaf5c 100644 --- a/source/_integrations/nexity.markdown +++ b/source/_integrations/nexity.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/nibe_heatpump.markdown b/source/_integrations/nibe_heatpump.markdown index bfc3da57749a..7d71532c78f6 100644 --- a/source/_integrations/nibe_heatpump.markdown +++ b/source/_integrations/nibe_heatpump.markdown @@ -11,6 +11,8 @@ ha_codeowners: ha_domain: nibe_heatpump ha_platforms: - binary_sensor + - button + - climate - number - select - sensor diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown index a9e4378b3000..88de30d75ad1 100644 --- a/source/_integrations/number.markdown +++ b/source/_integrations/number.markdown @@ -25,16 +25,20 @@ The type of data a number represents impacts how it is displayed in the frontend - **None**: Generic number. This is the default and doesn't need to be set. - **apparent_power**: Apparent power in VA. - **aqi**: Air Quality Index +- **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, inHg, kPa, mbar, Pa, psi - **battery**: Percentage of battery that is left - **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke) - **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) -- **current**: Current in A +- **current**: Current in A, mA +- **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s, or GiB/s +- **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, or YiB - **distance**: Generic distance in km, m, cm, mm, mi, yd, or in - **energy**: Energy in Wh, kWh or MWh - **frequency**: Frequency in Hz, kHz, MHz or GHz -- **gas**: Gasvolume in m³ or ft³ +- **gas**: Gasvolume in m³, ft³, or CCF - **humidity**: Percentage of humidity in the air -- **illuminance**: The current light level in lx or lm +- **illuminance**: The current light level in lx +- **irradiance**: Irradiance in W/m² or BTU/(h⋅ft²) - **moisture**: Percentage of water in a substance - **monetary**: The monetary value - **nitrogen_dioxide**: Concentration of Nitrogen Dioxide in µg/m³ @@ -46,19 +50,20 @@ The type of data a number represents impacts how it is displayed in the frontend - **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³ - **power_factor**: Power factor in % - **power**: Power in W or kW -- **precipitation**: Accumulated precipitation in in or mm +- **precipitation**: Accumulated precipitation in cm, in or mm - **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d, or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg, or psi - **reactive_power**: Reactive power in var - **signal_strength**: Signal strength in dB or dBm +- **sound_pressure**: Sound pressure in dB or dBA - **speed**: Generic speed in ft/s, in/d, in/h, km/h, kn, m/s, mph, or mm/d - **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³ - **temperature**: Temperature in °C or °F - **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ -- **voltage**: Voltage in V -- **volume**: Generic volume in L, mL, gal, fl. oz., m³, or ft³ -- **water**: Water consumption in L, gal, m³, or ft³ -- **weight**: Generic mass in kg, g, mg, µg, oz, or lb +- **voltage**: Voltage in V, mV +- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF +- **water**: Water consumption in L, gal, m³, ft³, or CCF +- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st - **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph ## Services diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index f4f90ad57a6b..0adcee441df5 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -14,7 +14,7 @@ ha_zeroconf: true ha_platforms: - diagnostics - sensor -ha_integration_type: integration +ha_integration_type: device --- The Network UPS Tools (NUT) integration allows you to monitor a UPS diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown index 6b9fd78bc599..8fdf756d46bf 100644 --- a/source/_integrations/nws.markdown +++ b/source/_integrations/nws.markdown @@ -7,6 +7,7 @@ ha_release: 0.99 ha_iot_class: Cloud Polling ha_codeowners: - '@MatthewFlamm' + - '@kamiyo' ha_domain: nws ha_quality_scale: platinum ha_config_flow: true diff --git a/source/_integrations/overkiz.markdown b/source/_integrations/overkiz.markdown index eeba5084259b..7cad90430113 100644 --- a/source/_integrations/overkiz.markdown +++ b/source/_integrations/overkiz.markdown @@ -24,6 +24,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_domain: overkiz ha_dhcp: true ha_zeroconf: true diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index 705202eb9fd9..c44a43026088 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -22,14 +22,10 @@ ha_integration_type: integration --- The Pi-hole integration allows you to retrieve statistics and interact with a -[Pi-hole](https://pi-hole.net/) system. +[Pi-hole](https://pi-hole.net/) system. An API key is needed for the setup (_from Settings -> API / Web interface_). {% include integrations/config_flow.md %} -Please note, that during the integration set up, an API key can be provided. -Providing one, gives access to the Pi-Hole `disable` service and a switch -to enable/disable Pi-Hole from Home Assistant. - ## Services The platform provides the following services to interact with your Pi-hole. Use switch entities when calling the services. diff --git a/source/_integrations/purpleair.markdown b/source/_integrations/purpleair.markdown new file mode 100644 index 000000000000..50db9eaa0a8e --- /dev/null +++ b/source/_integrations/purpleair.markdown @@ -0,0 +1,29 @@ +--- +title: PurpleAir +description: Instructions on how to integrate PurpleAir sensors with Home Assistant. +ha_category: + - Sensor +ha_iot_class: Cloud Polling +ha_release: 2023.1 +ha_codeowners: + - '@bachya' +ha_domain: purpleair +ha_platforms: + - diagnostics + - sensor +ha_integration_type: integration +ha_config_flow: true +--- + +[PurpleAir](https://www2.purpleair.com/) makes sensors that measure hyper-local air quality data and share it with the public. + +{% include integrations/config_flow.md %} + +{% include integrations/option_flow.md %} + +{% configuration_basic %} +Add Sensor: + description: Track an additional sensor. +Remove Sensor: + description: Untrack a sensor. +{% endconfiguration_basic %} diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index 5ba43f72de01..cf764e30cbfa 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -68,7 +68,7 @@ data: Running this script show absolutely no output on the screen, but it logs with level `info`. You must have the [Logger](/integrations/logger/) enabled at least for level `info`. - Your `confiuration.yaml` should include something like this. + Your `configuration.yaml` should include something like this. ```yaml logger: diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown index 9af27ed604fe..829e3576cb08 100644 --- a/source/_integrations/rainbird.markdown +++ b/source/_integrations/rainbird.markdown @@ -9,6 +9,7 @@ ha_release: 0.61 ha_iot_class: Local Polling ha_codeowners: - '@konikvranik' + - '@allenporter' ha_domain: rainbird ha_platforms: - binary_sensor diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown new file mode 100644 index 000000000000..d6ce795b87a4 --- /dev/null +++ b/source/_integrations/reolink.markdown @@ -0,0 +1,56 @@ +--- +title: Reolink NVR/camera +description: Instructions on how to integrate Reolink devices (NVR/cameras) into Home Assistant. +ha_category: + - Camera +ha_iot_class: Local Polling +ha_release: 2023.1 +ha_domain: reolink +ha_codeowners: + - '@starkillerOG' +ha_config_flow: true +ha_platforms: + - Camera +ha_integration_type: integration +--- + +The integration allows you to control [Reolink](https://reolink.com/) NVRs or cameras. + +{% include integrations/config_flow.md %} + +{% include integrations/option_flow.md %} +{% configuration_basic %} +Protocol: + description: Switch between RTSP or RTMP streaming protocol. +{% endconfiguration_basic %} + +## Camera streams + +This integration creates a few camera entities, one for each stream type with different resolutions: Main, Sub, Ext, and Snapshots. +The Sub stream camera entity is enabled by default; the other streams are disabled by default. +The snapshots stream provides a sequence of image snapshots giving very low latency at the cost of a very low frame rate; this can be used when the hi-res RTMP/RTSP video stream has too much lag. + +## Tested models + +The following models have been tested and confirmed to work: + +- RLN8-410 NVR +- RLC-810A +- RLC-811A +- RLC-820A +- RLC-823A +- RLC-420-5MP +- E1 Zoom +- E1 Outdoor +- Reolink Video Doorbell PoE +- Reolink Video Doorbell WiFi + +Battery-powered cameras are not yet supported. + +The following models are lacking the HTTP webserver API and can therfore not work with this integration: +- E1 Pro + +## Reolink firmware limitations + +- The Reolink NVR only sends event-notifications if motion happens on the camera connected to the first (index "0") channel, therefore the binary sensors of all channels will only be updated when the first channel sees motion. +- Reolink doorbell presses only generate ONVIF event notifications when the doorbell is directly connected to your network. The doorbell visitor binary sensor will not work when connecting the Reolink doorbell to an NVR. diff --git a/source/_integrations/rexel.markdown b/source/_integrations/rexel.markdown index 4bce340857b8..a003b45f259b 100644 --- a/source/_integrations/rexel.markdown +++ b/source/_integrations/rexel.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index edfd1d84ba58..38f2cade37ca 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -22,18 +22,23 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T - **None**: Generic sensor. This is the default and doesn't need to be set. - **apparent_power**: Apparent power in VA. - **aqi**: Air Quality Index +- **atmospheric_pressure**: Atmospheric pressure in cbar, bar, hPa, inHg, kPa, mbar, Pa, psi - **battery**: Percentage of battery that is left - **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke) - **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG) -- **current**: Current in A +- **current**: Current in A, mA +- **data_rate**: Data rate in bit/s, kbit/s, Mbit/s, Gbit/s, B/s, kB/s, MB/s, GB/s, KiB/s, MiB/s, or GiB/s +- **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, or YiB - **date**: Date string (ISO 8601) - **distance**: Generic distance in km, m, cm, mm, mi, yd, or in - **duration**: Duration in days, hours, minutes or seconds - **energy**: Energy in Wh, kWh or MWh +- **enum**: Has a limited set of (non-numeric) states - **frequency**: Frequency in Hz, kHz, MHz or GHz -- **gas**: Gasvolume in m³ or ft³ +- **gas**: Gasvolume in m³, ft³, or CCF - **humidity**: Percentage of humidity in the air -- **illuminance**: The current light level in lx or lm +- **illuminance**: The current light level in lx +- **irradiance**: Irradiance in W/m² or BTU/(h⋅ft²) - **moisture**: Percentage of water in a substance - **monetary**: The monetary value - **nitrogen_dioxide**: Concentration of Nitrogen Dioxide in µg/m³ @@ -45,20 +50,21 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T - **pm25**: Concentration of particulate matter less than 2.5 micrometers in µg/m³ - **power_factor**: Power factor in % - **power**: Power in W or kW -- **precipitation**: Accumulated precipitation in in or mm +- **precipitation**: Accumulated precipitation in cm, in or mm - **precipitation_intensity**: Precipitation intensity in in/d, in/h, mm/d, or mm/h - **pressure**: Pressure in Pa, kPa, hPa, bar, cbar, mbar, mmHg, inHg, or psi - **reactive_power**: Reactive power in var - **signal_strength**: Signal strength in dB or dBm +- **sound_pressure**: Sound pressure in dB or dBA - **speed**: Generic speed in ft/s, in/d, in/h, km/h, kn, m/s, mph, or mm/d - **sulphur_dioxide**: Concentration of sulphur dioxide in µg/m³ - **temperature**: Temperature in °C or °F - **timestamp**: Datetime object or timestamp string (ISO 8601) - **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ -- **voltage**: Voltage in V -- **volume**: Generic volume in L, mL, gal, fl. oz., m³, or ft³ -- **water**: Water consumption in L, gal, m³, or ft³ -- **weight**: Generic mass in kg, g, mg, µg, oz, or lb +- **voltage**: Voltage in V, mV +- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF +- **water**: Water consumption in L, gal, m³, ft³, or CCF +- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st - **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph

diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index 8e58a07b61cd..0873762b8721 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -23,15 +23,23 @@ You can add or remove items from your shopping list by using the following servi ### Service `shopping_list.add_item` -Adds an item to the shopping list. +Add an item to the shopping list. | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------------| | `name` | no | Name of the item to add. Example: "Milk" | +### Service `shopping_list.remove_item` + +Remove the first item with matching name from the shopping list. + +| Service data attribute | Optional | Description | +|------------------------|----------|--------------------------------------------------------| +| `name` | no | Name of the item to remove. Example: "Milk" | + ### Service `shopping_list.complete_item` -Marks an item as completed in the shopping list. It does not remove the item. +Mark the first item with matching name as completed in the shopping list. It does not remove the item. | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------------| @@ -39,7 +47,7 @@ Marks an item as completed in the shopping list. It does not remove the item. ### Service `shopping_list.incomplete_item` -Marks an item as incomplete in the shopping list. +Mark the first item with matching name as incomplete in the shopping list. | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------------| @@ -47,11 +55,11 @@ Marks an item as incomplete in the shopping list. ### Service `shopping_list.complete_all` -Marks all items as completed in the shopping list. It does not remove the items. +Mark all items as completed in the shopping list (without removing them from the list). ### Service `shopping_list.incomplete_all` -Marks all items as incomplete in the shopping list. +Mark all items as incomplete in the shopping list. ### Service `shopping_list.clear_completed_items` diff --git a/source/_integrations/simu.markdown b/source/_integrations/simu.markdown index 8a8f2c8dacef..8a4c41e70773 100644 --- a/source/_integrations/simu.markdown +++ b/source/_integrations/simu.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index abbbde5126aa..72f41d0fd9af 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index 75a17f75d7c5..a8c18a0d19f8 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -22,7 +22,7 @@ The Speedtest.net integration uses the [Speedtest.net](https://speedtest.net/) w Most Speedtest.net servers require TCP port 8080 outbound to function. Without this port open you may experience significant delays or no results at all. See note on their [help page](https://www.speedtest.net/help). -By default, a speed test will be run every hour. You can update frequency in the integration configuration. +By default, a speed test will be run every hour. You can disable polling using system options and use the `update_entity` service to automate the speed test frequency. ## Integration Sensors diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 70160fb59ce0..8087e3519c1f 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -7,6 +7,7 @@ ha_category: - Light - Sensor - Switch + - Lock ha_release: 0.78 ha_iot_class: Local Push ha_codeowners: @@ -15,14 +16,18 @@ ha_codeowners: - '@RenierM26' - '@murtas' - '@Eloston' + - '@dsypniewski' ha_domain: switchbot ha_bluetooth: true ha_platforms: - binary_sensor - cover + - humidifier - light + - lock - sensor - switch + - lock ha_config_flow: true ha_integration_type: integration --- @@ -31,7 +36,7 @@ The SwitchBot integration allows you to control SwitchBot [devices](https://www. ## Prerequisites -In order to use this integration, it is required to have working Bluetooth set up on the device running Home Assistant. A [SwitchBot Hub](https://www.switch-bot.com/search?type=product&q=hub) is not required for this integration. +In order to use this integration, it is required to have working Bluetooth set up on the device running Home Assistant. A [SwitchBot Hub](https://switch-bot.com/pages/switchbot-hub-mini) is not required for this integration. If you have multiple devices of the same type, you need to get the BTLE MAC address of your device to tell your devices apart. You can find the address for your device using the following steps: @@ -50,10 +55,12 @@ Please note, device names configured in the SwitchBot app are not transferred in - Bot (WoHand) - Contact Sensor (WoContact) - Curtain (WoCurtain) +- Humidifier (WoHumi) - Light Strip (WoStrip) - Meter/Meter Plus 70BB (WoSensorTH) - Motion Sensor (WoPresence) - Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401) +- Lock (WoLock) ## SwitchBot Entity @@ -66,7 +73,41 @@ There are three attributes available on the SwitchBot entity to give you more in - `Retry count`: How many times to retry sending commands to your SwitchBot devices. -### Error codes and troubleshooting +## SwitchBot Lock + +The integration currently only uses the primary lock state; in dual lock mode, not all things might work properly. + +A SwitchBot lock can be set up in Home Assistant in two different ways. You can enter the key id and encryption key yourself, or Home Assistant can import them from your SwitchBot account. + +### SwitchBot account (recommended) + +Using this option you can provide your SwitchBot account login credentials and Home Assistant will import the appropriate encryption key from your account. + +{% configuration_basic %} +Username: + description: SwitchBot account username +Password: + description: SwitchBot account password +{% endconfiguration_basic %} + +

+This integration doesn't support SSO accounts (Login with Google, etc.) only username and password accounts. +
+ +### Enter the lock encryption key manually + +This option is for those that would rather obtain the encryption key themselves, and/or want to know exactly where and how are their account credentials used. + +{% configuration_basic %} +Key ID: + description: Locks' encryption key ID +Encryption key: + description: Locks' encryption key +{% endconfiguration_basic %} + +For instructions on how to obtain the locks encryption key, see README in [PySwitchbot](https://github.com/Danielhiversen/pySwitchbot#obtaining-locks-encryption-key) project. + +## Error codes and troubleshooting The SwitchBot integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. diff --git a/source/_integrations/ubiwizz.markdown b/source/_integrations/ubiwizz.markdown index b209f6c3d20f..281945781f9b 100644 --- a/source/_integrations/ubiwizz.markdown +++ b/source/_integrations/ubiwizz.markdown @@ -26,6 +26,7 @@ ha_codeowners: - '@imicknl' - '@vlebourl' - '@tetienne' + - '@nyroDev' ha_config_flow: true ha_platforms: - alarm_control_panel diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 2138f6838f4e..22d05043ac63 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -38,6 +38,7 @@ ha_platforms: - select - sensor - switch + - text ha_integration_type: hub --- @@ -161,7 +162,8 @@ Each UniFi Protect camera will get a device in Home Assistant with the following * There is one detected object sensor per Smart Detection supported by the camera and a combined sensor for if _any_ object is detected. * **Device Configuration** - Cameras will get various configuration controls based on the features available to the camera. Currently provided configuration controls: * configuration sliders for Chime Type, Zoom Level, Microphone Sensitivity, and WDR Level - * configuration switches Overlay Information, Smart Detections types, Status Light, HDR, High FPS mode, System Sounds. + * configuration switches Overlay Information, Smart Detections types, Status Light, HDR, High FPS mode, System Sounds + * configuration text and select for LCD Screen for doorbells to either set custom messages or use predefined messages * **Button** - A disabled by default button is added for each camera device. The button will let you reboot your camera device. ### UniFi Protect Floodlights @@ -279,16 +281,6 @@ Removes an existing message for Doorbells. | `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | | `message` | No | Existing custom message to remove for Doorbells. | -### Service unifiprotect.set_doorbell_message - -Use to dynamically set the message on a Doorbell LCD screen. This service should only be used to set dynamic messages (i.e. setting the current outdoor temperature on your Doorbell). Static messages should still be set using the Select entity and can be added/removed using the `add_doorbell_text`/`remove_doorbell_text` services. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | -| `entity_id` | No | The Doorbell Text select entity for your Doorbell. | -| `message` | No | The message you would like to display on the LCD screen of your Doorbell. Must be less than 30 characters. | -| `duration` | Yes | Number of minutes to display the message for before returning to the default message. The default is to not expire. | - ### Service unifiprotect.set_chime_paired_doorbells Use to set the paired doorbell(s) with a smart chime. @@ -309,6 +301,8 @@ These URLs work great when trying to send notifications. Home Assistant will aut | `/api/unifiprotect/thumbnail/{nvr_id}/{event_id}` | Proxies a JPEG event thumbnail from UniFi Protect. | | `/api/unifiprotect/video/{nvr_id}/{camera_id}/{start}/{end}` | Proxies a MP4 video clip from UniFi Protect for a specific camera. Start and end must be in [ISO 8601 format](https://www.iso.org/iso-8601-date-and-time-format.html). | +`nvr_id` can either be the UniFi Protect ID of your NVR or the config entry ID for your UniFi Protect integration. `camera_id` can either be the UniFi Protect ID of your camera or an entity ID of any entity provided by the UniFi Protect integration that can be reversed to a UniFi Protect camera (i.e., an entity ID of a detected object sensor). + ## Troubleshooting ### Delay in Video Feed diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index ac51a2a35fa8..7cb5b68e82be 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -24,7 +24,7 @@ ha_integration_type: integration The `vallox` integration lets you control any Vallox ventilation unit that is supported by the [vallox_websocket_api](https://github.com/yozik04/vallox_websocket_api) (follow the link for a list of supported units). -The **fan** platform of this integration allows you to turn on/off the complete unit via the toggle switch and to select a ventilation profile. +The **fan** platform of this integration allows you to turn on/off the complete unit via the toggle switch, control fan speed and select a ventilation profile. The **sensor** platform exposes a number of relevant metrics like fan speed, various air temperatures, and humidity. diff --git a/source/_integrations/yalexs_ble.markdown b/source/_integrations/yalexs_ble.markdown index 3234199e14ae..96eb251983ad 100644 --- a/source/_integrations/yalexs_ble.markdown +++ b/source/_integrations/yalexs_ble.markdown @@ -36,6 +36,7 @@ Devices must have a Yale Access module installed to function with this integrati - YRD256 (Yale Assure Lock Keypad) - YRD420 (Yale Assure Lock 2) - YRD450 (Yale Assure Lock 2 Key Free) +- YUR/SSDL/1/SIL (Yale Unity Screen Door Lock - Australia) - ASL-05 (August WiFi Smart Lock - Gen 4) - ASL-03 (August Smart Lock Pro - Gen 3) - ASL-02 (August Smart Lock Pro - Gen 2) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index d973f9e9cf4b..89b2f003461d 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -183,6 +183,7 @@ Some devices can be auto-discovered, which can simplify the ZHA setup process. T | [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/) | USB | 1A86:7523 | | [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/) | USB| 10C4:EA60 | | [ZigStar Coordinators](https://zig-star.com/) | USB| 1A86:7523 | +| [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/) | Zeroconf | slzb-06.local. | | [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/) | Zeroconf | zigstargw.local. | | [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2.local. | | [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2_poe.local. | diff --git a/source/_posts/2023-01-04-release-20231.markdown b/source/_posts/2023-01-04-release-20231.markdown new file mode 100644 index 000000000000..94f4de366fdf --- /dev/null +++ b/source/_posts/2023-01-04-release-20231.markdown @@ -0,0 +1,511 @@ +--- +layout: post +title: "2023.1: Happy New Year of the voice!" +description: "The first release of the year of the voice! Adding entity aliases for your voice assistants, calendar event editing, progress on Matter, and entity translations improvements!" +date: 2023-01-04 00:00:00 +date_formatted: "January 4, 2023" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: +- Release-Notes +- Core +og_image: /images/blog/2023-01/social.png +--- + + + +Happy New Year! 🍾 + +We wish you, and all the loved ones around you, all the best for 2023! 🥂 + +2023: What an exciting year this will be; [The year of the voice](/blog/2022/12/20/year-of-voice/)! +And not just that, many exciting things are expected this year. More spoilers +can be found in the [State of the Open Home 2022](https://www.youtube.com/watch?v=D936T1Ze8-4) +recording on YouTube. + +Starting this amazing year with: Home Assistant Core 2023.1! 🎊 + +A fairly small release, as we all enjoyed our Holidays. Yet, the first traces +of the voice project are already visible: support for entity aliases! + +Still, this release contains over 800 changes, most of which are +quality improvements, bug and stability fixes, and other minor improvements. +The perfect release to start the year with, an easy upgrade worth doing. + +Enjoy the release! + +../Frenck + +PS: Did you know [Home Assistant is now on Mastodon](https://fosstodon.org/@homeassistant) too? + + + +- [The year of the voice!](#the-year-of-the-voice) +- [Entity aliases for voice assistants](#entity-aliases-for-voice-assistants) +- [Progress on Matter](#progress-on-matter) +- [Extending calendar support](#extending-calendar-support) +- [Translation improvements for entities](#translation-improvements-for-entities) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New Integrations](#new-integrations) +- [Release 2023.1.1 - January 5](#release-202311---january-5) +- [Need help? Join the community!](#need-help-join-the-community) +- [Breaking Changes](#breaking-changes) +- [Farewell to the following](#farewell-to-the-following) +- [All changes](#all-changes) + +Don't forget to [join our release party live stream on YouTube](https://www.youtube.com/watch?v=T8gpiGZKX6w) 4 January 2023, at 12:00 PST / 21:00 CET! + + + +## The year of the voice! + +You should have heard about it by now; 2023 is [Home Assistant's year of Voice](/blog/2022/12/20/year-of-voice/)! +It is our goal for 2023 to let users control Home Assistant in their own +language. As covered by [The Verge](https://www.theverge.com/2022/12/27/23527790/home-assistant-voice-control-rhasspy-nabu-casa-smart-google-siri-alexa), +[ArsTechnica](https://arstechnica.com/gadgets/2022/12/with-voice-assistants-in-trouble-home-assistant-starts-a-local-alternative/), +and [many others](https://9to5google.com/2022/12/23/home-assistant-voice/). + +The work on voice has already started by collecting intents in all the different +languages we want to support. Intents describe the user's intention with what +they've said (or written), so Home Assistant can understand what to do, +like the action to take and which devices are involved. + +All the different possible intent sentences are now being collected in the +[Intents for Home Assistant](https://github.com/home-assistant/intents) GitHub +repository, and [we are looking for contributions](https://github.com/home-assistant/intents/blob/main/CONTRIBUTING.md)! +So, feel free to jump in and help out! + +An overview of the current status of all intents and languages can be found on +[this page](https://home-assistant.github.io/intents/). The page gives insight +into the parts we need help with. + +Lastly, we are also looking for language leaders! Each language is maintained +by one or more language leaders. Language leaders are responsible for reviewing +their language's contributions and making sure they are grammatically correct. + +Anyone can apply to become one. If you want to apply to be a language leader, +join us in [#devs_voice on Discord](/join-chat) or [open a discussion topic](https://github.com/home-assistant/intents/discussions). + +## Entity aliases for voice assistants + +The first little thing related to the voice project found in Home Assistant: +Aliases for entity names are now configurable via the UI. + +Currently, configured aliases are used by Google Assistant and, of course, can +later be used by our own voice assistant. + +These aliases are helpful in case you call the same device by multiple names +or when using a voice assistant in multiple languages at the same time. + +Screenshot showing the alias editing capabilities added to the more info dialog of entities + +The new aliases feature can be found on each entity's more information dialog +in the settings tab in the advanced section. If you use +[Home Assistant Cloud](https://www.nabucasa.com/), you can also manage your +entity aliases (and the devices to expose to Google Assistant) in your +[Home Assistant Cloud settings](https://my.home-assistant.io/redirect/cloud/). + +Multi-language can be an important factor when using Google Assistant, as those +can be configured to support two languages at the same time. For example, +English and Dutch simultaneously. Aliases allow you to provide names +for translations as an alias. For instance, I have added +"Woonkamer stofzuiger" (Dutch) as an alias to my living room vacuum. + +Screenshot showing adding multiple languages as aliases via the Home Assistant Cloud manage entities screen + +It was previously possible to configure Google Assistant-specific aliases via +YAML as well, and this remains working. You can use either YAML or easily manage +them via the UI. + +## Progress on Matter + +Last December release, we [introduced Matter support](/blog/2022/12/07/release-202212/#it-does-matter), +and progress has been made since then. The code base has seen many fixes and +improvements, and much effort has been put into adding more automated +tests and quality assurance. + +There are also notable improvements; commissioning Matter devices have been +improved (and fixed). So, adding [your first Matter device](https://nabucasa.github.io/matter-example-apps/) +to Home Assistant should be a much better experience now. + +Lastly, the [Home Assistant Companion app for Android](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) +with support for pairing Matter devices has been released! Thanks to the fantastic +work by [@jpelgrom](https://github.com/jpelgrom) on the Android app, the +commissioning experience is now even better! Here is a quick video showing +how that works: + + + +This does require your Android device to be updated with Matter support which +Google is rolling out within the Google Home app in recent Android versions. + +Support for pairing Matter devices using our iOS Companion app is being worked +on. + +## Extending calendar support + +The last release introduced [the local calendar](/blog/2022/12/07/release-202212/#local-calendar), +which included the capability to manage calendar events from Home Assistant. +These features have now been added to the [Google Calendar](/integrations/google/) +integration as well! + +Meaning you can now create a new event in your Google Calendar, straight +from within Home Assistant. Neat! + +Furthermore, the local calendar has been extended to provide editing support for existing +events 🤘 + +Screenshots showing the new edit event and monthly recurrence of events capabilities + +Lastly, support for monthly variations in the recurrence rules has been +added. This includes repetitions like: on the 20th day or the first Wednesday of +the month. The latter, of course, is helpful to put the Home Assistant +release day on your calendar 😉 + +## Translation improvements for entities + +The support for translations for entities has been improved, especially those +of entity attributes! A relatively small change that is improving the UI +experience quite a bit. + +Some entities provide additional properties, for example, climate entities +provide presets or fan modes. Integrations can now offer translations for +those attribute values. + +Additionally, textual sensor entities can now provide a list of possible states +they can be in, for which, of course, translations can be provided for now too. + +Screenshots showing the effects of having translated entity attributes + +In the above screenshot, on the left, you can see how the presets of my +thermostat now show up nicely in a human-readable format (instead of, for example, +"anti_frost" in previous releases). + +On the right, the [Moon](/integrations/moon) sensor used in an automation +trigger, Home Assistant can now suggest states you can use in those cases. +Those suggestions will also be translated into the language you are using. + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other +noteworthy changes this release: + +- [@epenet] added a bunch of new device classes for sensors! We now have support + for data size, data rate, irradiance, sound pressure, and atmospheric pressure. +- The [Shelly] integration now supports the Shelly Plus WallDimmer US, + thanks [@thecode]! +- Configuration errors of automations and scripts with device automations have + been significantly improved, providing you with much more detail to help + you fix the problem. Thanks, [@emontnemery]! +- [@AngellusMortis] added a text entity to the [UniFi Protect], so you can now + set the message displayed on your doorbell. Awesome! +- [Google Translate] has been extended with dialect support, thanks [@toddejohnson]! +- [Yale Access Bluetooth] now has support for battery status, thanks [@bdraco]! +- Three nice new additions to [SwitchBot], [@konikoni428] added support for power + monitor of wallplugs, [@bdraco] added initial humidifier support, and + [@dsypniewski] added support for SwitchBot locks! Awesome! +- [@FuzzyMistborn], added support for [ecobee] Smart Enhanced thermostats, + thank you! +- [KNX] expose now has a cooldown option, which can be used to limit bus load. + Thanks, [@farmio]! + +[@AngellusMortis]: https://github.com/AngellusMortis +[@bdraco]: https://github.com/bdraco +[@dsypniewski]: https://github.com/dsypniewski +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@farmio]: https://github.com/farmio +[@FuzzyMistborn]: https://github.com/FuzzyMistborn +[@konikoni428]: https://github.com/konikoni428 +[@thecode]: https://github.com/thecode +[@toddejohnson]: https://github.com/toddejohnson +[ecobee]: /integrations/ecobee +[Google Translate]: /integrations/google_translate +[KNX]: /integrations/knx +[Shelly]: /integrations/shelly +[SwitchBot]: /integrations/switchbot +[UniFi Protect]: /integrations/unifiprotect +[Yale Access Bluetooth]: /integrations/yalexs_ble + +## New Integrations + +We welcome the following new integrations in this release: + +- [AirVisual Pro], added by [@bachya] +- [Google Assistant SDK], added by [@tronikos] +- [PurpleAir], added by [@bachya] +- [Reolink], added by [@starkillerOG] + +[@bachya]: https://github.com/bachya +[@starkillerOG]: https://github.com/starkillerOG +[@tronikos]: https://github.com/tronikos +[AirVisual Pro]: /integrations/airvisual_pro +[Google Assistant SDK]: /integrations/google_assistant_sdk +[PurpleAir]: /integrations/purpleair +[Reolink]: /integrations/reolink + +## Release 2023.1.1 - January 5 + +- Limit calls in UniFi to write state ([@Kane610] - [#85248]) ([unifi docs]) +- Only subscribe to relevant IDs for state updates ([@Kane610] - [#85252]) ([unifi docs]) +- Bump pyeconet to 0.1.18 to fix energy usage ([@w1ll1am23] - [#85094]) ([econet docs]) +- Fix lacrosse_view fetching of latest data ([@nijel] - [#85117]) ([lacrosse_view docs]) +- Bump bthome-ble to 2.4.1 ([@Ernst79] - [#85153]) ([bthome docs]) +- Bump hatasmota to 0.6.2 ([@emontnemery] - [#85182]) ([tasmota docs]) +- Remove invalid AQI unit from Environment Canada ([@frenck] - [#85183]) ([environment_canada docs]) +- Adjust valid energy units ([@epenet] - [#85190]) ([energy docs]) +- Remove invalid device class for RSSI sensors ([@epenet] - [#85191]) ([zha docs]) +- Fix device class for DSMR gas sensors providing energy readings ([@frenck] - [#85202]) ([dsmr docs]) +- Improve error reporting when switchbot auth fails ([@bdraco] - [#85244]) ([switchbot docs]) +- bump reolink-aio to 0.1.2 ([@starkillerOG] - [#85247]) ([reolink docs]) +- Bump bimmer_connected to 0.12.0 ([@rikroe] - [#85255]) ([bmw_connected_drive docs]) +- Reject the WiFI AP when considering to update a shelly config entry from zeroconf ([@bdraco] - [#85265]) ([shelly docs]) +- Fix Fully Kiosk service call config entry handling ([@cgarwood] - [#85275]) ([fully_kiosk docs]) + +[#85094]: https://github.com/home-assistant/core/pull/85094 +[#85117]: https://github.com/home-assistant/core/pull/85117 +[#85120]: https://github.com/home-assistant/core/pull/85120 +[#85153]: https://github.com/home-assistant/core/pull/85153 +[#85182]: https://github.com/home-assistant/core/pull/85182 +[#85183]: https://github.com/home-assistant/core/pull/85183 +[#85190]: https://github.com/home-assistant/core/pull/85190 +[#85191]: https://github.com/home-assistant/core/pull/85191 +[#85202]: https://github.com/home-assistant/core/pull/85202 +[#85244]: https://github.com/home-assistant/core/pull/85244 +[#85247]: https://github.com/home-assistant/core/pull/85247 +[#85248]: https://github.com/home-assistant/core/pull/85248 +[#85252]: https://github.com/home-assistant/core/pull/85252 +[#85255]: https://github.com/home-assistant/core/pull/85255 +[#85265]: https://github.com/home-assistant/core/pull/85265 +[#85275]: https://github.com/home-assistant/core/pull/85275 +[@Ernst79]: https://github.com/Ernst79 +[@Kane610]: https://github.com/Kane610 +[@bdraco]: https://github.com/bdraco +[@cgarwood]: https://github.com/cgarwood +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@frenck]: https://github.com/frenck +[@nijel]: https://github.com/nijel +[@rikroe]: https://github.com/rikroe +[@starkillerOG]: https://github.com/starkillerOG +[@w1ll1am23]: https://github.com/w1ll1am23 +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bthome docs]: /integrations/bthome/ +[dsmr docs]: /integrations/dsmr/ +[econet docs]: /integrations/econet/ +[energy docs]: /integrations/energy/ +[environment_canada docs]: /integrations/environment_canada/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[lacrosse_view docs]: /integrations/lacrosse_view/ +[reolink docs]: /integrations/reolink/ +[shelly docs]: /integrations/shelly/ +[switchbot docs]: /integrations/switchbot/ +[tasmota docs]: /integrations/tasmota/ +[unifi docs]: /integrations/unifi/ +[zha docs]: /integrations/zha/ + +## 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 "Image Upload / Default Config" %} + +The `image` integration domain was renamed to `image_upload`. + +This change would only affect you when you have removed the +[`default_config`](/integrations/default_config) from your configuration. +In that case, you need to manually adjust your configuration to rename `image` +to `image_upload`. + +The rename was done to free up the `image` domain for future use. + +([@frenck] - [#84063]) ([documentation](/integrations/image_upload)) + +[@frenck]: https://github.com/frenck +[#84063]: https://github.com/home-assistant/core/pull/84063 + +{% enddetails %} + +{% details "air-Q" %} + +The unit for noise has been adjusted from `dBa` to `dBA`. + +([@epenet] - [#83581]) ([documentation](/integrations/airq)) + +[@epenet]: https://github.com/epenet +[#83581]: https://github.com/home-assistant/core/pull/83581 + +{% enddetails %} + +{% details "AirVisual (Pro)" %} + +AirVisual Pro units now have their own Home Assistant integration (as opposed +to be included with the original AirVisual integration that uses the AirVisual +cloud API). + +Pro devices will automatically be migrated; as part of that migration, +the Pro's device ID will change. + +If you utilize entity IDs belonging to a Pro in automations or scripts, you +don't need to do anything; if, however, you utilize a Pro's device ID, +please update those automations or scripts accordingly. + +([@bachya] - [#83583]) ([documentation](/integrations/airvisual_pro)) + +[@bachya]: https://github.com/bachya +[#83882]: https://github.com/home-assistant/core/pull/83882 + +{% enddetails %} + +{% details "APC UPS Daemon" %} + +The previously deprecated YAML configuration of the APC UPS Daemon integration +has been removed. + +APC UPS Daemon is now configured via the UI. Any existing YAML configuration +has been imported in previous releases and can now be safely removed from your +YAML configuration files. + +([@yuxincs] - [#83801]) ([documentation](/integrations/apcupsd)) + +[@yuxincs]: https://github.com/yuxincs +[#83801]: https://github.com/home-assistant/core/pull/83801 + +{% enddetails %} + +{% details "Awair" %} + +The unit for sound level has been adjusted from `dBa` to `dBA`. + +([@epenet] - [#83582]) ([documentation](/integrations/awair)) + +[@epenet]: https://github.com/epenet +[#83582]: https://github.com/home-assistant/core/pull/83582 + +{% enddetails %} + +{% details "deCONZ" %} + +An issue with the mapping of triggers of Styrbar has been discovered and fixed. +As a result, any automations relying on these triggers will need to be +manually adjusted/re-configured to adjust to this change. + +([@Kane610] - [#84257]) ([documentation](/integrations/deconz)) + +[@Kane610]: https://github.com/Kane610 +[#84257]: https://github.com/home-assistant/core/pull/84257 + +{% enddetails %} + +{% details "Fitbit" %} + +Units of measurements for length, mass, time, and volume have been aligned +with standard Home Assistant units. + +([@epenet] - [#83936]) ([documentation](/integrations/fitbit)) + +[@epenet]: https://github.com/epenet +[#83936]: https://github.com/home-assistant/core/pull/83936 + +{% enddetails %} + +{% details "Minut Point" %} + +The unit for sound has been adjusted from `dBa` to `dBA`. + +([@epenet] - [#83580]) ([documentation](/integrations/point)) + +[@epenet]: https://github.com/epenet +[#83580]: https://github.com/home-assistant/core/pull/83580 + +{% enddetails %} + +{% details "Speedtest.net" %} + +The update frequency option has been removed. The default frequency is now 60 +minutes. If you like to customize the polling: disable polling update from +system options and use the `update_entity` service in an automation to manually +update it at your own custom schedule. + +([@engrbm87] - [#84295]) ([documentation](/integrations/speedtestdotnet)) + +[@engrbm87]: https://github.com/engrbm87 +[#84295]: https://github.com/home-assistant/core/pull/84295 + +{% enddetails %} + +{% details "Tankerkoenig" %} + +The previously deprecated YAML configuration of the Tankerkoenig +integration has been removed. + +Tankerkoenig is now configured via the UI, any existing YAML +configuration has been imported in previous releases and can now be safely +removed from your YAML configuration files. + +([@mib1185] - [#84711]) ([documentation](/integrations/tankerkoenig)) + +[@mib1185]: https://github.com/engrbm87 +[#84711]: https://github.com/home-assistant/core/pull/84711 + +{% enddetails %} + +{% details "Tomorrow.io" %} + +The imperial unit for `Global Horizontal Irradiance` has been adjusted from `BTU/(h×ft²)` to `BTU/(h⋅ft²)` + +([@epenet] - [#83574]) ([documentation](/integrations/tomorrowio)) + +[@epenet]: https://github.com/epenet +[#83574]: https://github.com/home-assistant/core/pull/83574 + +{% enddetails %} + +{% details "Universal Devices ISY994" %} + +The unit for weighted decibels has been adjusted from `dBa` to `dBA`. + +([@epenet] - [#83583]) ([documentation](/integrations/isy994)) + +[@epenet]: https://github.com/epenet +[#83583]: https://github.com/home-assistant/core/pull/83583 + +{% 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: + +[devblog]: https://developers.home-assistant.io/blog/ + +- [Add more unit enumerators](https://developers.home-assistant.io/blog/2022/12/05/more-unit-enumerators) +- [Multi-pan temporarily disabled](https://developers.home-assistant.io/blog/2022/12/08/multi-pan-rollback) +- [Summary of unit system related changes](https://developers.home-assistant.io/blog/2022/12/07/unit_system_changes) +- [Translating the state of entities](https://developers.home-assistant.io/blog/2022/12/01/entity_translations) + +## Farewell to the following + +The following integrations are also no longer available as of this release: + +- **Deutsche Bahn** has been removed. It relied on web scraping, which is no + longer allowed. + +## 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.1](/changelogs/core-2023.1) diff --git a/source/_redirects b/source/_redirects index 9b66a5eeb7f4..810fcb5c3e83 100644 --- a/source/_redirects +++ b/source/_redirects @@ -435,6 +435,7 @@ /integrations/ciscospark /more-info/removed-integration 301 /integrations/coinmarketcap /more-info/removed-integration 301 /integrations/crimereports /more-info/removed-integration 301 +/integrations/deutsche_bahn /more-info/removed-integration 301 /integrations/device_tracker.trackr /more-info/removed-integration 301 /integrations/dht /more-info/removed-integration 301 /integrations/digitalloggers /more-info/removed-integration 301 diff --git a/source/changelogs/core-2023.1.markdown b/source/changelogs/core-2023.1.markdown new file mode 100644 index 000000000000..3ffa45458355 --- /dev/null +++ b/source/changelogs/core-2023.1.markdown @@ -0,0 +1,1643 @@ +--- +title: Full Changelog for Home Assistant Core 2023.1 +description: Detailed changelog for the Home Assistant Core 2023.1 release +--- + +These are all the changes included in the Home Assistant Core 2023.1 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2023/01/04/release-20231/). + +## Full Changelog + +- Add nibe heat pump climate entities ([@elupus] - [#78952]) +- Bump version to 2023.1.0dev0 ([@frenck] - [#83025]) +- Add `translation_key` property to entites ([@emontnemery] - [#82701]) +- Bump python-fullykiosk to 0.0.12 ([@r01k] - [#83029]) +- Add dialect support to google_translate ([@toddejohnson] - [#81768]) +- Update debugpy to 1.6.4 ([@frenck] - [#83042]) +- Remove home id from Tibber diagnostics ([@Danielhiversen] - [#83066]) +- Add create and delete for Google Calendar events ([@allenporter] - [#83034]) +- Add enum device_class and state options property to sensor entities ([@frenck] - [#82489]) +- Fix glob patterns for partial CI runs ([@cdce8p] - [#83086]) +- Add type annotations to some hassio API ([@emontnemery] - [#83103]) +- Migrate Tuya translations ([@frenck] - [#83105]) +- Enable strict typing of diagnostics ([@emontnemery] - [#83053]) +- Review AsusWRT sensors tests ([@ollo69] - [#71307]) +- Fix small coding style in recent overkiz code ([@nyroDev] - [#82966]) +- Add support for item removal to shopping list ([@spacegaier] - [#82992]) +- Enable strict typing of analytics ([@emontnemery] - [#83119]) +- Use enum sensor device class in HomeKit Controller ([@frenck] - [#83109]) +- Update aiobafi6 to 0.7.3 ([@bdraco] - [#83073]) +- Simplify diagnostics.DownloadDiagnosticsView ([@emontnemery] - [#83116]) +- Enable strict typing of raspberry_pi ([@emontnemery] - [#83123]) +- Enable strict typing of hardkernel ([@emontnemery] - [#83122]) +- Enable strict typing of homeassistant hardware integrations ([@emontnemery] - [#83121]) +- Address review comments for shopping list websockets ([@spacegaier] - [#83143]) +- Use UnitOfTemperature in climate entities [m-s] ([@epenet] - [#83131]) +- Remove matter services available in websocket api ([@MartinHjelmare] - [#83151]) +- Update pycomfoconnect to 0.5.1 ([@michaelarnauts] - [#83124]) +- Use enum sensor device class in PrusaLink ([@frenck] - [#83107]) +- Use enum sensor device class in Moon ([@frenck] - [#83108]) +- Bump elkm1 lib to 2.2.1 ([@gwww] - [#83026]) +- Fix OpenUV coverage ([@bachya] - [#83203]) +- Bump yalexs-ble to 1.10.3 ([@bdraco] - [#83216]) +- Bump nibe to 1.5.0 ([@elupus] - [#83185]) +- Use unit enums in demo ([@epenet] - [#83130]) +- Use UnitOfTemperature in climate entities [a-f] ([@epenet] - [#83125]) +- Add the QoS in the MQTT debug log ([@jbouwh] - [#83195]) +- Remove deprecated GCM API from html5 ([@milanmeu] - [#83229]) +- Address late KNX flow tests review ([@farmio] - [#83208]) +- Tweak black config ([@scop] - [#83230]) +- Populate suggested_area using the LIFX group name for each device ([@Djelibeybi] - [#83259]) +- Bump aiolookin to 1.0.0 ([@ANMalko] - [#83198]) +- Enable strict typing of hardware ([@emontnemery] - [#83120]) +- Code style improvements [alexa] ([@cdce8p] - [#83258]) +- Bump dessant/lock-threads from 3 to 4 (@dependabot - [#83273]) +- Use UnitOfTemperature in climate entities [t-z] ([@epenet] - [#83129]) +- Use enum sensor device class in UptimeRobot ([@frenck] - [#83111]) +- Use UnitOfTemperature in climate entities [g-l] ([@epenet] - [#83127]) +- Add @kamiyo to nws codeowners ([@kamiyo] - [#83171]) +- Failback to v4 resolver for AAAA records in DNSIP integration ([@gjohansson-ST] - [#82740]) +- Use UnitOfTemperature in water_heater entities ([@epenet] - [#83132]) +- Migrate Plugwise translations ([@frenck] - [#83286]) +- Bump package for Garage Amsterdam ([@klaasnicolaas] - [#83167]) +- Use enum sensor device class in Tomorrow.io ([@frenck] - [#83293]) +- Migrate HomeKit Controller translations ([@frenck] - [#83304]) +- Migrate WLED translations ([@frenck] - [#83296]) +- Use new device class in homematic ([@epenet] - [#83303]) +- Migrate LaMetric translations ([@frenck] - [#83298]) +- Migrate Xiaomi Miio translations ([@frenck] - [#83300]) +- Use enum sensor device class in Season ([@frenck] - [#83301]) +- Migrate MusicCast translations ([@frenck] - [#83305]) +- Migrate TOLO Sauna translations ([@frenck] - [#83306]) +- Migrate Logitech Harmony Hub translations ([@frenck] - [#83308]) +- Migrate Demo translations ([@frenck] - [#83294]) +- Update pylint to 2.15.8 ([@cdce8p] - [#83311]) +- Use enum sensor device class in Nettigo Air Monitor ([@frenck] - [#83314]) +- Refactor support for integrations to drop custom unit conversion ([@emontnemery] - [#83228]) +- Migrate Tractive translations ([@frenck] - [#83321]) +- Use UnitOfVolume in unit conversion ([@epenet] - [#83292]) +- Use new device class in meteoclimatic ([@epenet] - [#83327]) +- Use new device class in openweathermap ([@epenet] - [#83331]) +- Use new device class in aemet ([@epenet] - [#83315]) +- Use new device class in environment canada ([@epenet] - [#83297]) +- Use attributes in homematicip_cloud ([@epenet] - [#83295]) +- Update litterrobot integration to support long-term statistics ([@AliceGrey] - [#83269]) +- Use enum sensor device class in AirVisual ([@frenck] - [#83316]) +- Migrate Overkiz select translations ([@frenck] - [#83324]) +- Use new device class in meteo_france ([@epenet] - [#83325]) +- Introduce UnitOfTime enum ([@epenet] - [#83288]) +- Introduce UnitOfFrequency enum ([@epenet] - [#83289]) +- Clean up Zodiac ([@frenck] - [#83334]) +- Migrate UniFi Protect translations ([@frenck] - [#83338]) +- Use new device class in ambient_station ([@epenet] - [#83322]) +- Introduce unit enums for electric current and potential ([@epenet] - [#83287]) +- Introduce unit enums for information and data rate ([@epenet] - [#83291]) +- Validate state class and unit of measurement for non-numeric sensors ([@frenck] - [#83344]) +- Remove unused device class from Kostal Plenticore select ([@frenck] - [#83329]) +- Adjust error message and add callback in nibe heatpump climate ([@elupus] - [#83027]) +- Migrate Wolf SmartSet Service translations ([@frenck] - [#83323]) +- Use enum sensor device class in Overkiz ([@frenck] - [#83342]) +- Migrate Sensibo translations ([@frenck] - [#83310]) +- Use new device class in buienradar ([@epenet] - [#83363]) +- Use new enums in rflink ([@epenet] - [#83371]) +- Add QoS parameter to MQTT websocket_subscribe ([@jbouwh] - [#83241]) +- Use tuple in test parametrization ([@epenet] - [#83379]) +- Use new device class in rfxtrx ([@epenet] - [#83368]) +- Use new device class in ecowitt ([@epenet] - [#83364]) +- Use new device class in metoffice ([@epenet] - [#83366]) +- Use new device class in trafikverket weatherstation ([@epenet] - [#83370]) +- Use new device class in lacrosse view ([@epenet] - [#83365]) +- Allow cm in precipitation units ([@epenet] - [#83360]) +- Use new device class in darksky ([@epenet] - [#83362]) +- Use new device class in zamg ([@epenet] - [#83361]) +- Add vallox fan speed control ([@yozik04] - [#82548]) +- Use enum sensor device class in Litter-Robot ([@frenck] - [#83290]) +- Remove unused device class from Renault select ([@frenck] - [#83330]) +- Remove invalid device class from Hue connectivity sensor ([@frenck] - [#83388]) +- Use new device class in accuweather ([@epenet] - [#83318]) +- Fix icon in meteoclimatic wind bearing ([@frenck] - [#83390]) +- Use new device class in nws ([@kamiyo] - [#83172]) +- Use CoverDeviceClass in ESPHome ([@frenck] - [#83395]) +- Use CoverDeviceClass in Dynalite ([@frenck] - [#83394]) +- Blebox add thermoBox to climate ([@riokuu] - [#81090]) +- Remove str from update device class ([@frenck] - [#83399]) +- Remove str from switch device class ([@frenck] - [#83400]) +- Remove str from humidifier device class ([@frenck] - [#83397]) +- Remove str from binary sensor device class ([@frenck] - [#83393]) +- Remove str from media player device class ([@frenck] - [#83398]) +- Enforce NumberDeviceClass in number entities ([@frenck] - [#83402]) +- Remove str from cover device class ([@frenck] - [#83396]) +- Modernize Image Processing typing ([@frenck] - [#83405]) +- Use new unit enums in alexa ([@epenet] - [#83409]) +- Add Shelly support for Plus WallDimmer US ([@thecode] - [#83385]) +- Use new device class in arwn ([@epenet] - [#83406]) +- Improve zwave_js test coverage ([@raman325] - [#83372]) +- Add update of model and version for nibe ([@elupus] - [#83347]) +- Upgrade grpcio(-status) to 1.51.1 ([@frenck] - [#83420]) +- Use new unit enums in helpers ([@epenet] - [#83387]) +- Upgrade google-cloud-pubsub to 2.13.11 ([@frenck] - [#83419]) +- Shelly code quality - use properties for status ([@thecode] - [#83421]) +- Refactor Fully Kiosk and add logging details ([@r01k] - [#83028]) +- Add @nyroDev to overkiz codeowner ([@nyroDev] - [#83456]) +- Add leak detectors support for Ambient Station ([@jpettitt] - [#83357]) +- Set matter team as matter codeowners ([@MartinHjelmare] - [#83506]) +- Bump pylitterbot to 2022.12.0 ([@natekspencer] - [#83490]) +- Add new data size device class ([@epenet] - [#83376]) +- Add language to conversation and intent response ([@synesthesiam] - [#83486]) +- Add abc.ABC to classes with abstract methods ([@emontnemery] - [#83546]) +- Add new data rate device class ([@epenet] - [#83377]) +- Introduce unit enums for apparent power ([@epenet] - [#83451]) +- Introduce unit enums for irradiance ([@epenet] - [#83414]) +- Add new irradiance device class ([@epenet] - [#83452]) +- Use new device class in tellduslive ([@epenet] - [#83369]) +- Remove str from sensor device class ([@frenck] - [#83391]) +- Update opentherm_gw sensor definitions ([@epenet] - [#83533]) +- Add sensor tests for devolo_home_control ([@Shutgun] - [#74292]) +- Add new sound pressure device class ([@epenet] - [#83453]) +- Introduce unit enums for sound pressure ([@epenet] - [#83450]) +- Use new unit enums in isy994 ([@epenet] - [#83583]) +- Use ApparentPower unit and device class in integrations ([@epenet] - [#83577]) +- Use SoundPressure unit and device class in awair ([@epenet] - [#83582]) +- Use SoundPressure unit and device class in airq ([@epenet] - [#83581]) +- Use SoundPressure unit and device class in point ([@epenet] - [#83580]) +- Use new device class in netatmo ([@epenet] - [#83367]) +- Fix sensor tests in devolo Home Control ([@Shutgun] - [#83586]) +- Use UnitOfSoundPressure in demo ([@epenet] - [#83584]) +- Add entity translations to Renault ([@epenet] - [#83392]) +- Use Irradiance unit and device class in integrations ([@epenet] - [#83576]) +- Use Irradiance device class in tomorrowio ([@epenet] - [#83574]) +- Add power field to switchbot plug ([@konikoni428] - [#83495]) +- Bump dbus-fast to 1.79.0 ([@bdraco] - [#83598]) +- Update intent response ([@synesthesiam] - [#83560]) +- Bump dbus-fast to 1.80.0 ([@bdraco] - [#83601]) +- Use SoundPressure unit and device class in integrations ([@epenet] - [#83585]) +- Add new atmospheric pressure device class ([@epenet] - [#83455]) +- Add support for translating state attributes ([@emontnemery] - [#77028]) +- Make it optional to provide a title when finishing a FlowHandler ([@emontnemery] - [#83534]) +- Use UnitOfElectricCurrent in integrations ([@epenet] - [#83622]) +- Use Frequency and Current device classes in nut ([@epenet] - [#83623]) +- Use DataRate unit and device class in pyload ([@epenet] - [#83611]) +- Use DataRate unit and device class in freebox ([@epenet] - [#83612]) +- Use new unit enums in zha ([@epenet] - [#83633]) +- Update device classes in ebusd ([@epenet] - [#83530]) +- Use native `_attr_` properties for MqttEntity ([@jbouwh] - [#83639]) +- Bump actions/setup-python from 4.3.0 to 4.3.1 (@dependabot - [#83607]) +- Add types package for paho-mqtt ([@cdce8p] - [#83599]) +- Use WATER device class in suez water ([@epenet] - [#83650]) +- Use UnitOfPower.BTU_PER_HOUR in zha ([@epenet] - [#83657]) +- Google Assistant SDK integration ([@tronikos] - [#82328]) +- Use WATER device class in rainmachine ([@epenet] - [#83651]) +- Use device classes in mysensors ([@epenet] - [#83653]) +- Use WATER device class in streamlabswater ([@epenet] - [#83654]) +- Improve MQTT type hints for dict get assignments ([@jbouwh] - [#83634]) +- Use UnitOfVolume in energy integration ([@epenet] - [#83641]) +- Add bluetooth diagnostics to shelly ([@bdraco] - [#83438]) +- Use unit enums in overkiz ([@epenet] - [#83660]) +- Hide Aranet update interval by default ([@aschmitz] - [#83694]) +- Bump dbus-fast to 1.82.0 ([@bdraco] - [#83682]) +- Handle special transit errors for here_travel_time ([@eifinger] - [#83649]) +- Google Sheets: small cleanup ([@tronikos] - [#83685]) +- Add hue wall switch to deconz integration ([@Sommerzeit] - [#83700]) +- Use unit enums in vicare ([@epenet] - [#83648]) +- Adjust device class in xiaomi_miio ([@epenet] - [#83647]) +- Use DataRate unit and device class in integrations ([@epenet] - [#83610]) +- Drop title from repairs flows ([@emontnemery] - [#83627]) +- Reduce log level for linger task/timer ([@elupus] - [#83703]) +- Use GAS device class in smartthings ([@epenet] - [#83658]) +- Fix invalid unit in econet ([@epenet] - [#83656]) +- Use UnitOfVolume in integrations ([@epenet] - [#83646]) +- Try to reconnect right away when disconnected from Shelly Gen2 devices ([@bdraco] - [#83701]) +- Make google calendar fail louder on invalid google_calendars.yaml ([@allenporter] - [#83668]) +- Add homeassistant.helpers.location to loggers for travel_time integrations ([@eifinger] - [#83705]) +- Add support for battery to Yale Access Bluetooth ([@bdraco] - [#83691]) +- Add MVP humidifier support to switchbot ([@bdraco] - [#83696]) +- Connect esphome ble scanner as soon as possible ([@bdraco] - [#83728]) +- Correct deprecated volt units on yalexs_ble sensor ([@bdraco] - [#83738]) +- Bump HAP-python to 4.6.0 ([@bdraco] - [#83729]) +- ESPHome: Use MAC as unique ID ([@balloob] - [#83741]) +- Adjust esphome bluetooth client logging for unique id change ([@bdraco] - [#83742]) +- Bump pynina to 0.2.0 ([@DeerMaximum] - [#83726]) +- Align implementation of the UniFi update platform with the UniFi switch platform ([@Kane610] - [#81821]) +- Rename "Power production this week" vicare sensor ([@oischinger] - [#83771]) +- Match config entries for dlna_dmr based on device MAC, in addition to UDN ([@chishm] - [#74619]) +- Restore remote discovered devices between remote scanner restarts ([@bdraco] - [#83699]) +- Revert "Move esphome gatt services cache to be per device" #81265 ([@bdraco] - [#83793]) +- Add text platform for UniFi Protect ([@AngellusMortis] - [#83674]) +- Improve remote bluetooth scanner diagnostics and add missing test cover ([@bdraco] - [#83796]) +- Do not try to reconnect shelly on disconnected if Home Assistant is stopping ([@bdraco] - [#83805]) +- Remove device class on V_FLOW in mysensors ([@epenet] - [#83806]) +- Use device classes in volkszaehler ([@epenet] - [#83823]) +- Use POWER device class in solarlog ([@epenet] - [#83822]) +- Use device classes in solaredge_local ([@epenet] - [#83821]) +- Drop title from auth flows ([@emontnemery] - [#83628]) +- Fix incorrect usage of 'setup' vs 'set up' ([@bdr99] - [#83774]) +- Use UnitOfPower in integrations [h-r] ([@epenet] - [#83815]) +- Use device classes in sense ([@epenet] - [#83817]) +- Use unit enums in saj ([@epenet] - [#83818]) +- Use device classes in apcupsd ([@epenet] - [#83807]) +- Use POWER device class in aqualogic ([@epenet] - [#83808]) +- Use POWER device class in dte energy bridge ([@epenet] - [#83809]) +- Use POWER device class in eliqonline ([@epenet] - [#83810]) +- Use UnitOfPower in integrations [a-g] ([@epenet] - [#83812]) +- Use POWER device class in enphase_envoy ([@epenet] - [#83811]) +- Add new docs to Diagnostics information ([@AngellusMortis] - [#83767]) +- Bump PyVicare to 2.21.0 ([@oischinger] - [#83770]) +- Update aioqsw to v0.3.1 ([@Noltari] - [#83784]) +- Use UnitOfPower in integrations [s-z] ([@epenet] - [#83826]) +- Enable automatic conversion for pressures ([@epenet] - [#83525]) +- Refactor ted5000 to use entity descriptions ([@epenet] - [#83820]) +- Bump pyswitchbee to 1.7.3 ([@jafar-atili] - [#83748]) +- Refactor waterfurnace to use entity descriptions ([@epenet] - [#83824]) +- Add integration for AirVisual Pro ([@bachya] - [#79770]) +- Remove get_device call in led-ble ([@bdraco] - [#83880]) +- Remove get_device call in switchbot ([@bdraco] - [#83881]) +- bump aiolifx_themes to 0.3.0 ([@Djelibeybi] - [#83877]) +- Add PurpleAir integration ([@bachya] - [#82110]) +- Bump actions/checkout from 3.1.0 to 3.2.0 (@dependabot - [#83894]) +- Remove deprecated apcupsd YAML config ([@yuxincs] - [#83801]) +- Use DATA_SIZE device class in integrations ([@epenet] - [#83895]) +- Use DATA_SIZE device class in netgear lte ([@epenet] - [#83908]) +- Use DATA_SIZE device class in lidarr ([@epenet] - [#83907]) +- Add explanatory comment to metoffice ([@emontnemery] - [#83914]) +- Use UnitOfFrequency in integrations ([@epenet] - [#83915]) +- Fix incorrect device class in goodwe ([@epenet] - [#83917]) +- Use FREQUENCY device class in integrations ([@epenet] - [#83916]) +- Refactor huisbaasje to use entity descriptions ([@epenet] - [#83825]) +- Improve ignore_variance typing ([@cdce8p] - [#83927]) +- Add diagnostics support to PurpleAir ([@bachya] - [#82446]) +- Add stones to mass units ([@epenet] - [#83933]) +- Refactor Huawei LTE to use Entity Description ([@epenet] - [#83904]) +- Refactor fitbit descriptions to use device classes ([@epenet] - [#83936]) +- Move bluetooth watchdog into the scanner base class ([@bdraco] - [#83888]) +- Update intent response ([@synesthesiam] - [#83858]) +- Adjust additional esphome bluetooth debug messages for unique id change ([@bdraco] - [#83955]) +- Try to reconnect disconnected shelly devices as soon as they discovered by zeroconf ([@bdraco] - [#83872]) +- Bump aioshelly to 5.2.0 ([@bdraco] - [#83961]) +- Update intent response ([@synesthesiam] - [#83962]) +- Fix nobo_hub HVAC mode ([@oyvindwe] - [#83947]) +- Ensure AirVisual Pro uses long-running Samba connection ([@bachya] - [#83869]) +- Add integration_type property to AsusWrt manifest ([@ollo69] - [#83960]) +- Use UnitOfTemperature enumerator in AsusWrt ([@ollo69] - [#83958]) +- Move transmission to an updated library ([@engrbm87] - [#83932]) +- Use UnitOfMass in integrations ([@epenet] - [#83930]) +- Add re-auth flow to PurpleAir ([@bachya] - [#83445]) +- Unifi use entity description with sensors ([@Kane610] - [#81930]) +- Add strings to alert integration ([@spacegaier] - [#83926]) +- Bump yalexs_ble to 0.12.0 ([@bdraco] - [#84004]) +- Add integration-type property to androidTV manifest ([@ollo69] - [#84018]) +- Huawei LTE SSDP improvements ([@scop] - [#81643]) +- Bump `pyairvisual` to 2022.12.1 ([@bachya] - [#84013]) +- Improve data entry flow typing ([@emontnemery] - [#83901]) +- Improve data entry flow typing ([@emontnemery] - [#84030]) +- Use UnitOfLength in integrations ([@epenet] - [#84034]) +- Use UnitOfElectricPotential in integrations ([@epenet] - [#84044]) +- Fix incorrect device class in nibe heatpump ([@epenet] - [#84047]) +- Use Unit enums in MELCloud sensors ([@ollo69] - [#84036]) +- Add device classes to bloomsky ([@epenet] - [#84054]) +- Update ESPHome bluetooth repair issue for unique id change and 2022.12.0 ([@bdraco] - [#84026]) +- Fix grammatical error in HomeKit strings ([@DataBitz] - [#84043]) +- Add device classes in tesla wall connector ([@epenet] - [#84048]) +- Move unused function in withings ([@epenet] - [#84089]) +- Refactor withings constant ([@epenet] - [#84095]) +- Rename image integration to image_upload ([@frenck] - [#84063]) +- Split platform attributes in withings ([@epenet] - [#84099]) +- Improve HomeWizard request issue reporting ([@DCSBL] - [#82366]) +- Add device class to withings ([@epenet] - [#84103]) +- Fix prettier [homewizard] ([@cdce8p] - [#84122]) +- Rename Bluetooth active_update_coordinator to active_update_processor ([@bdraco] - [#84115]) +- Add device classes in starline ([@epenet] - [#84049]) +- Add device classes to pool integrations ([@epenet] - [#84050]) +- Bump `brother` and `pysnmplib` ([@bieniu] - [#84107]) +- Fix current_operation when there is no operation_mode in Overkiz DHWP ([@nyroDev] - [#84077]) +- Make manual and manual_mqtt fully asynchronous ([@bonzini] - [#83436]) +- Update pyupgrade to 3.3.1 ([@cdce8p] - [#84148]) +- Update isort to 5.11.3 ([@cdce8p] - [#84147]) +- Google Assistant SDK: Support non en-US language code ([@tronikos] - [#84028]) +- Clean up matter adapter ([@MartinHjelmare] - [#84144]) +- Add dhcp discovery for newer august/yale bridges ([@bdraco] - [#84125]) +- Bump yalexs-ble to 1.12.2 ([@bdraco] - [#84118]) +- Enable strict typing for here_travel_time ([@eifinger] - [#83814]) +- Move speedtestdotnet coordinator to separate file ([@engrbm87] - [#83979]) +- Add state_class to Tradfri battery and air quality sensors ([@J3173] - [#84185]) +- Elmax/alarm_control_panel ([@albertogeniola] - [#75365]) +- Sensor pro fix for negative temperatures ([@Ernst79] - [#84181]) +- Add re-auth flow to AirVisual Pro ([@bachya] - [#84012]) +- Save entry earlier in PurpleAir re-auth flow ([@bachya] - [#84203]) +- Add ability to add/remove PurpleAir sensors in an existing config entry ([@bachya] - [#83440]) +- Add device HmIP-DRDI3 ([@hahn-th] - [#83337]) +- Use DATA_SIZE device class in folder integration ([@epenet] - [#83897]) +- Bump PySwitchbot to 0.29.1 ([@bdraco] - [#84119]) +- Bump aiolifx-themes to 0.4.0 ([@Djelibeybi] - [#84216]) +- Use new unit enumerators in tibber ([@epenet] - [#84222]) +- Use UnitOfEnergy in integrations (o-z) ([@epenet] - [#84221]) +- Use UnitOfEnergy in integrations (a-n) ([@epenet] - [#84220]) +- Bump `nettigo air monitor` library to version 1.6.0 ([@bieniu] - [#84129]) +- Fix manual.alarm_control_panel RestoreEntity bugs ([@bonzini] - [#82990]) +- Use ENERGY device class in landisgyr heat meter ([@epenet] - [#84223]) +- Use ENERGY device class in oru ([@epenet] - [#84225]) +- Bump zeroconf to 0.44.0 ([@bdraco] - [#84166]) +- Use new unit enums in fronius ([@epenet] - [#84224]) +- Use UnitOfVolume in bmw_connected_drive ([@epenet] - [#84228]) +- Use a global const for CONF_UUID ([@michaelarnauts] - [#84093]) +- Bump gassist-text to 0.0.5 ([@tronikos] - [#84161]) +- Upgrade attrs to 22.1.0 ([@boralyl] - [#84205]) +- Clean mysensors test type errors ([@MartinHjelmare] - [#84178]) +- Use new unit enumerators in tuya ([@epenet] - [#84229]) +- Use UnitOfVolume in dsmr_reader ([@epenet] - [#84226]) +- Add POWER device class to goodwe number ([@epenet] - [#84232]) +- Adjust units in lcn ([@epenet] - [#84051]) +- Remove name key from transimssion services ([@engrbm87] - [#83974]) +- Update sentry-sdk to 1.12.1 ([@frenck] - [#84234]) +- Add integration-type property to Nut manifest ([@ollo69] - [#84020]) +- Add support for CCF volume unit ([@epenet] - [#84029]) +- Update coverage to 7.0.0 ([@frenck] - [#84237]) +- Update black to 22.12.0 ([@frenck] - [#84242]) +- Update spotipy to 2.22.0 ([@frenck] - [#84244]) +- Use UnitOfElectricCurrent in integrations ([@epenet] - [#84231]) +- Update watchdog to 2.2.0 ([@frenck] - [#84245]) +- Use a single source of data for switchbot ([@bdraco] - [#84215]) +- Migrate AirVisual Pro devices to the `airvisual_pro` domain ([@bachya] - [#83882]) +- Bump lupupy to 0.2.4 ([@majuss] - [#84252]) +- Remove `airvisual_pro` code from `airvisual` ([@bachya] - [#84254]) +- Use UnitOfPressure in integrations ([@epenet] - [#84230]) +- Remove Deutsche Bahn integration ([@frenck] - [#84236]) +- Fix Styrbar device trigger mapping in deCONZ ([@Kane610] - [#84257]) +- Shuffle some device registry WS code ([@emontnemery] - [#84243]) +- Clean up Notion config flow (and tests) ([@bachya] - [#84007]) +- Implement an active update coordinator for polling ble devices that get data from both advertisements and active connections ([@bdraco] - [#84207]) +- Add foundation for passive scanning support to switchbot ([@bdraco] - [#84260]) +- fix provider name: linky is for electricity. ([@laurent-martin] - [#84273]) +- Add more types to the todoist integration ([@boralyl] - [#84210]) +- Add tests.common.ANY ([@emontnemery] - [#84240]) +- Fix error when describing deCONZ events of removed devices ([@J3173] - [#84194]) +- Fixes some grammar mistakes ([@michaelarnauts] - [#84283]) +- Use dict.setdefault in registry migration code ([@emontnemery] - [#84277]) +- Add minor version to area registry store ([@emontnemery] - [#84280]) +- Correct zamg config flow comments ([@killer0071234] - [#81369]) +- Add aliases to entity registry items ([@emontnemery] - [#84239]) +- Use UnitOfTime in integrations (t-z) ([@epenet] - [#84291]) +- Fix matter websocket reconnect ([@MartinHjelmare] - [#84192]) +- Use UnitOfTime in integrations (h-s) ([@epenet] - [#84289]) +- Use UnitOfTime in integrations (a-g) ([@epenet] - [#84288]) +- Improve the dsmr_reader sensor names ([@Glodenox] - [#84269]) +- Revert the state class removal in dsmr_reader after bugfix ([@Glodenox] - [#84267]) +- Update `gios` library to version 2.3.0 ([@bieniu] - [#84292]) +- Remove scan_interval and manual options from speedtestdotnet ([@engrbm87] - [#84295]) +- Extract Forecast.Solar DataUpdateCoordinator into module ([@frenck] - [#83859]) +- Allow MQTT device trackers to be able to the reset the location name for auto zone inference ([@ShadowJonathan] - [#83952]) +- Bump bthome-ble to 2.4.0 ([@Ernst79] - [#84189]) +- Use UnitOfTemperature in integrations (a-d) ([@epenet] - [#84304]) +- Use UnitOfTemperature in integrations (e-h) ([@epenet] - [#84305]) +- Use UnitOfTemperature in integrations (i-m) ([@epenet] - [#84307]) +- Use UnitOfTemperature in integrations (n-o) ([@epenet] - [#84306]) +- Use UnitOfTemperature in integrations (p-s) ([@epenet] - [#84308]) +- Use UnitOfTemperature in integrations (t-z) ([@epenet] - [#84309]) +- Add aliases to device registry items ([@emontnemery] - [#84246]) +- Bump devolo-plc-api to 0.9.0 ([@Shutgun] - [#84324]) +- Handle not existing arrival/departure keys for here_travel_time ([@eifinger] - [#83754]) +- Code quality improvements for Mastodon ([@frenck] - [#84320]) +- Bump actions/stale from 6.0.1 to 7.0.0 (@dependabot - [#84333]) +- Add aliases to area registry items ([@emontnemery] - [#84294]) +- Add quarter-hour peak consumption sensors ([@Glodenox] - [#84271]) +- Introduce unit enums for volume flow rate ([@epenet] - [#84310]) +- Fix reload race in shelly when device is recently offline ([@bdraco] - [#84328]) +- Bump pyrainbird to 0.7.1 ([@allenporter] - [#84325]) +- Use unit enums in plaato ([@epenet] - [#84341]) +- Use unit enums in tasmota ([@epenet] - [#84342]) +- Use unit enums in airvisual_pro ([@epenet] - [#84346]) +- Use unit enums in honeywell ([@epenet] - [#84344]) +- Add support for translating custom attribute state ([@emontnemery] - [#83386]) +- Use unit enums in energy and sensor ([@epenet] - [#84343]) +- Use UnitOfVolumeFlowRate in integrations ([@epenet] - [#84348]) +- Bump PySwitchbot to 0.30.0 ([@bdraco] - [#84347]) +- Use unit enums in nexia ([@epenet] - [#84349]) +- Use unit enums in mold indicator ([@epenet] - [#84350]) +- Use unit enums in elkm1 ([@epenet] - [#84351]) +- Use unit enums in ruuvitag_ble ([@epenet] - [#84352]) +- Use unit enums in sensirion_ble ([@epenet] - [#84353]) +- Adjust units in lcn ([@epenet] - [#84356]) +- Update pyotp to 2.8.0 ([@frenck] - [#84339]) +- Add missing preset for overkiz Atlantic APC heating zone ([@nyroDev] - [#84008]) +- Update Blink 2FA flow description ([@timrogers] - [#84362]) +- Adjust units in lcn ([@epenet] - [#84365]) +- Prevent use of deprecated units ([@epenet] - [#83384]) +- Add ZHA Zeroconf discovery for SLZB-06 ([@Tarik2142] - [#84111]) +- Add filter for duplicate NINA warnings ([@DeerMaximum] - [#84069]) +- Zamg api timestamp issue fix ([@killer0071234] - [#84143]) +- Bump here_transit/here_routing and Implement backoff mechanism for here_travel_time ([@eifinger] - [#83976]) +- Add external handling in Overkiz AtlanticElectricalHeaterWithAdjustableTemperatureSetPoint ([@nyroDev] - [#84010]) +- Add sensor unit of measurement validation for device classes ([@frenck] - [#84366]) +- Add matter node added subscription ([@MartinHjelmare] - [#84377]) +- Fix google calendar recurrence rule create and view ([@allenporter] - [#84330]) +- Don't allow google calendar create/delete for yaml/search calendars ([@allenporter] - [#83604]) +- Update types packages ([@cdce8p] - [#84381]) +- Less tasks when receiving SSDP messages ([@StevenLooman] - [#84186]) +- Fix incorrect power factor device class usage in Fronius ([@frenck] - [#84374]) +- Fix incorrect voc device class usage in Deconz sensors ([@frenck] - [#84371]) +- Fix incorrect illuminance device class usage in Broadlink ([@frenck] - [#84373]) +- Fix incorrect co device class usage in GIOS ([@frenck] - [#84379]) +- Fix uom/device class mismatches in tests ([@frenck] - [#84372]) +- Use selector in AndroidTV option flow form ([@ollo69] - [#83761]) +- Update isort to 5.11.4 ([@cdce8p] - [#84406]) +- Improve error message when an automation fails to validate ([@emontnemery] - [#83977]) +- Add enum device class and translations to DSMR Active tariff sensor ([@J3173] - [#84253]) +- Fix issues with Color temperature conversions in Hue ([@marcelveldt] - [#83982]) +- Update actions/cache to 3.2.0 + new restore action ([@cdce8p] - [#84408]) +- Add support for entity aliases to Google Assistant ([@frenck] - [#84405]) +- Bump zeroconf to 0.47.0 ([@bdraco] - [#84420]) +- Add myself as a codeowner for rainbird ([@allenporter] - [#84421]) +- Replace async_schedule_update_ha_state for manual and manual_mqtt ([@jbouwh] - [#84395]) +- Fix incorrect signal strength device class usage in Rituals Genie ([@frenck] - [#84376]) +- Restore speed when turning a Tasmota fan back on ([@emontnemery] - [#84337]) +- String formatting and max line length - Part 1 ([@frenck] - [#84390]) +- Additional tests to improve coverage of manual and manual_mqtt ([@jbouwh] - [#84424]) +- Fix flaky automation test ([@emontnemery] - [#84428]) +- Fix incorrect voltage device class usage in RuuviTag BLE ([@frenck] - [#84380]) +- String formatting and max line length - Part 2 ([@frenck] - [#84393]) +- Improve script config tests ([@emontnemery] - [#84433]) +- Bump plexapi to 4.13.2 ([@jjlawren] - [#84416]) +- Bump yalexs-ble to 1.12.3 ([@bdraco] - [#84414]) +- Split out part of update sensor to a common UniFi entity class ([@Kane610] - [#84262]) +- String formatting and max line length - Part 3 ([@frenck] - [#84394]) +- Remove front matter parsing in homeassistant_alerts ([@ludeeus] - [#83980]) +- Fix DHWP overkiz_to_operation_mode creation list ([@nyroDev] - [#83885]) +- Add Ecobee Smart Enhanced ([@FuzzyMistborn] - [#83666]) +- Improve error message when a script fails to validate ([@emontnemery] - [#84438]) +- Fix title of Matter integration ([@marcelveldt] - [#84385]) +- Add firmware update entity for Litter-Robot 4 ([@natekspencer] - [#83590]) +- Fix Matter param order for subscribing ([@balloob] - [#84460]) +- Use first refresh method from data update coordinator in PI-Hole integration ([@mib1185] - [#84453]) +- Strip whitespace from application credentials ([@allenporter] - [#84461]) +- Upgrade ciso8601 to 2.3.0 ([@frenck] - [#84465]) +- ESPHome: do not set expected_name on APIClient ([@jesserockz] - [#84471]) +- Move Rainbird to async client library ([@allenporter] - [#84417]) +- Install all test requirements in bootstrap ([@jesserockz] - [#84469]) +- Test conversation WS API ([@balloob] - [#84466]) +- Replace attrs with dataclasses in Core exceptions ([@frenck] - [#84473]) +- Make all ARMED states available for manual_mqtt ([@bonzini] - [#84264]) +- Bump actions/setup-python from 4.3.1 to 4.4.0 (@dependabot - [#84488]) +- Round illuminance value in ZHA integration ([@bieniu] - [#84500]) +- String formatting and max line length - Part 4 ([@frenck] - [#84445]) +- Replace attrs with dataclasses in hassfest ([@frenck] - [#84475]) +- String formatting and max line length - Part 5 ([@frenck] - [#84501]) +- Switch to a different local Bluetooth adapter when one runs out of connection slots ([@bdraco] - [#84331]) +- Add blebox discovery/zeroconf ([@riokuu] - [#83837]) +- Bump yalexs_ble to 1.12.5 ([@bdraco] - [#84517]) +- Try the next best adapter after a BLE connection fails ([@bdraco] - [#84512]) +- Fix flaky Nina CI test ([@balloob] - [#84522]) +- Cleanup rainbird controller setup as feedback from previous PR ([@allenporter] - [#84504]) +- Bump pySwitchbot to 0.30.1 to fix a deadlock when services are missing ([@bdraco] - [#84521]) +- Bump zeroconf to 0.47.1 ([@bdraco] - [#84523]) +- Update nibe to 1.6.0 ([@elupus] - [#84449]) +- String formatting and max line length - Part 6 ([@frenck] - [#84525]) +- Bump zamg from 0.2.1 to 0.2.2 ([@killer0071234] - [#84526]) +- Bump actions/cache from 3.2.0 to 3.2.1 (@dependabot - [#84565]) +- Add mysensors binary sensor tests ([@MartinHjelmare] - [#84580]) +- Deprecate `set_doorbell_message` UniFi Protect service ([@AngellusMortis] - [#83675]) +- Deprecate the UniFi Protect Detected Object sensor ([@AngellusMortis] - [#83480]) +- Add mysensors switch tests ([@MartinHjelmare] - [#84585]) +- Bump pySwitchbot to 0.31.0 ([@bdraco] - [#84586]) +- Add mysensors device tracker tests ([@MartinHjelmare] - [#84589]) +- Add strict typing to simplepush ([@engrbm87] - [#84598]) +- Add strict typing to speedtestdotnet ([@engrbm87] - [#84597]) +- Fix F602 key repeated ([@yuvalabou] - [#84531]) +- String formatting and max line length - Part 7 ([@frenck] - [#84532]) +- Add recommended actions to NINA ([@DeerMaximum] - [#83775]) +- Add support for covers in Prometheus metrics ([@spyder007] - [#83763]) +- Remove lumen from Illuminance units ([@epenet] - [#84386]) +- Use Object selector for AndroidTV detection rules option ([@ollo69] - [#84412]) +- Update xknx to 2.2.0 ([@farmio] - [#84609]) +- Add mysensors light tests ([@MartinHjelmare] - [#84606]) +- Add Plugwise climate preset translations ([@frenck] - [#84617]) +- Clean mysensors test fixture loading ([@MartinHjelmare] - [#84618]) +- Add mysensors climate tests ([@MartinHjelmare] - [#84619]) +- Add mysensors cover tests ([@MartinHjelmare] - [#84626]) +- Clean mysensors update callbacks ([@MartinHjelmare] - [#84629]) +- Add `cooldown` and `respond_to_read` options for KNX expose ([@farmio] - [#84613]) +- Improve `lookin` generic typing ([@cdce8p] - [#84636]) +- Improve `gogogate2` generic typing ([@cdce8p] - [#84632]) +- KNX ConfigFlow: Validate contents of knxkeys file ([@farmio] - [#84411]) +- Return unavailable if Govee BLE sensor is in error ([@PierreAronnax] - [#84547]) +- Add climate platform to Mazda integration ([@bdr99] - [#75037]) +- Add reolink IP NVR/Camera integration ([@starkillerOG] - [#84081]) +- Improve `rainbird` generic typing ([@cdce8p] - [#84642]) +- Improve `ovo_energy` generic typing ([@cdce8p] - [#84641]) +- Improve `rdw` generic typing ([@cdce8p] - [#84643]) +- Improve `google` calendar generic typing ([@cdce8p] - [#84633]) +- Improve `kostal_plenticore` generic typing ([@cdce8p] - [#84634]) +- Improve `laundrify` generic typing ([@cdce8p] - [#84635]) +- Improve `lyric` generic typing ([@cdce8p] - [#84637]) +- Add Local calendar edit support ([@allenporter] - [#84141]) +- Use debouncer in mysensors ([@MartinHjelmare] - [#84638]) +- Improve `totalconnect` generic typing ([@cdce8p] - [#84650]) +- Improve `synology_dsm` generic typing ([@cdce8p] - [#84649]) +- Improve `surepetcare` generic typing ([@cdce8p] - [#84647]) +- Improve `steam_online` generic typing ([@cdce8p] - [#84646]) +- Update wled to 0.15.0 ([@frenck] - [#84639]) +- Improve DataUpdateCoordinator typing in integrations (1) ([@cdce8p] - [#84655]) +- Improve DataUpdateCoordinator typing in integrations (2) ([@cdce8p] - [#84656]) +- Improve DataUpdateCoordinator typing in integrations (3) ([@cdce8p] - [#84657]) +- Improve DataUpdateCoordinator typing in integrations (4) ([@cdce8p] - [#84658]) +- ISY994: Bump pyisy to 3.0.9 ([@shbatm] - [#84654]) +- Add IPv6 support to snmp sensor ([@stgraber] - [#84607]) +- Fix thundering heard in setup_again when there are many integrations ([@bdraco] - [#84670]) +- Avoid creating a task in the bluetooth watchdog when everything is OK ([@bdraco] - [#84669]) +- Switch to orjson for tests ([@elupus] - [#84674]) +- Add support for SwitchBot Lock ([@dsypniewski] - [#84673]) +- Fix SwitchBot Lock test ([@dsypniewski] - [#84682]) +- Bump actions/cache from 3.2.1 to 3.2.2 (@dependabot - [#84683]) +- Improve `omnilogic` generic typing ([@cdce8p] - [#84686]) +- Improve `meteo_france` generic typing ([@cdce8p] - [#84685]) +- KNX ConfigFlow: add selection of secure tunnel endpoint ([@farmio] - [#84651]) +- Fix zha RMS voltage ([@MattWestb] - [#84689]) +- Add nibe heat pump alarm reset button ([@elupus] - [#79427]) +- Switch to pytest-freezer ([@elupus] - [#84680]) +- Update frontend to 20221228.0 ([@bramkragten] - [#84696]) +- airzone: update aioairzone to v0.5.2 ([@Noltari] - [#84690]) +- Fix handling of CoAP 404 in homekit_controller ([@Jc2k] - [#84700]) +- Improve `risco` generic typing ([@cdce8p] - [#84644]) +- Bump python matter server to 1.0.8 ([@marcelveldt] - [#84692]) +- Update apprise to 1.2.1 ([@hmmbob] - [#84705]) +- Remove deprecated tankerkoenig YAML config ([@mib1185] - [#84711]) +- Gracefully handle caldav event with missing summary ([@allenporter] - [#84719]) +- water_heater: Add unsupported states ([@oischinger] - [#84720]) +- Remove incorrect unit for AirVisual AQI sensor ([@bachya] - [#84723]) +- Fix incorrect values for AirVisual Pro sensors ([@bachya] - [#84725]) +- Fix and upgrade minio integration ([@tkislan] - [#84545]) +- Bump pynetgear to 0.10.9 ([@starkillerOG] - [#84733]) +- Fix UUID normalisation for vendor extensions in homekit_controller thread transport ([@Jc2k] - [#84746]) +- Check google calendar API scope to determine if write access is enabled ([@allenporter] - [#84749]) +- Catch vicare errors when deactivating preset fails ([@oischinger] - [#84778]) +- Only subscribe to specific UniFi object ID ([@Kane610] - [#84787]) +- Remove `ozone` device class from OpenUV sensor ([@bachya] - [#84791]) +- Don't attempt setup on migrated AirVisual Pro in the `airvisual` domain ([@bachya] - [#84796]) +- Deprecate YAML config in PI-Hole ([@mib1185] - [#84797]) +- Fix AirVisual Pro sensors with incorrect units for their device classes ([@bachya] - [#84800]) +- Correct missing alarm reset button on nibe ([@elupus] - [#84809]) +- Fix thermobeacon WS08 models that identify with manufacturer_id 27 ([@bdraco] - [#84812]) +- ISY994: Bump PyISY to 3.0.10 ([@shbatm] - [#84821]) +- Actually try port when finding next available port for ssdp server ([@StevenLooman] - [#84206]) +- Fix growatt identification issue ([@muppet3000] - [#84628]) +- Enable unit conversion for DATA_RATE ([@epenet] - [#84698]) +- Enable unit conversion for DATA_SIZE ([@epenet] - [#84699]) +- Use pycarwings2 2.14 ([@filcole] - [#84792]) +- Add mV as a unit for voltage and enable conversions ([@jbouwh] - [#84805]) +- Add mA to SensorDeviceClass.CURRENT units ([@SukramJ] - [#84492]) +- Add option to retrieve SwitchBot Lock encryption key through config flow ([@dsypniewski] - [#84830]) +- Redesign and refactor Bravia TV config_flow ([@Drafteed] - [#84832]) +- Update frontend to 20221230.0 ([@bramkragten] - [#84842]) +- Add availability property to DSMR sensors ([@frenck] - [#84848]) +- Ensure AirVisual Pro migration includes device and entity customizations ([@bachya] - [#84798]) +- Bump pybravia to 0.2.5 ([@Drafteed] - [#84835]) +- Do not validate device classes when entity state is unknown ([@frenck] - [#84860]) +- Only reflect unavailable state in DSMR when disconnected ([@frenck] - [#84862]) +- Bump aiounifi to v43 ([@Kane610] - [#84864]) +- Bump pyroon library to 0.1.2. ([@pavoni] - [#84865]) +- Bump pyeconet to 0.1.17 ([@w1ll1am23] - [#84868]) +- Bump motionblinds to 0.6.14 ([@starkillerOG] - [#84873]) +- Process late feedback for Reolink ([@starkillerOG] - [#84884]) +- Small fixes for SwitchBot Locks ([@bdraco] - [#84888]) +- Don't include distance in PurpleAir sensor selector ([@bachya] - [#84893]) +- Fix issues with PurpleAir sensor device class and unit ([@bachya] - [#84896]) +- Use serial number for AirVisal Pro config entry unique ID ([@bachya] - [#84902]) +- Google Assistant SDK: Log command and response ([@tronikos] - [#84904]) +- Fix free/busy google calendars ([@allenporter] - [#84907]) +- Bump pydeconz to v106 ([@Kane610] - [#84914]) +- Fix haveibeenpwned user-agent string ([@ChopperRob] - [#84919]) +- Fix Climate device HVAC mode trigger UI ([@allenporter] - [#84930]) +- Fix failing HomeKit Controller diagnostics tests ([@bdraco] - [#84936]) +- Bump pySwitchbot to 0.36.1 ([@bdraco] - [#84937]) +- Fix caldav calendars with custom timezones ([@allenporter] - [#84955]) +- Handle not available add-on in hassio add-on manager ([@MartinHjelmare] - [#84943]) +- Consider 95% as closed for Motion blinds venetian blinds ([@starkillerOG] - [#84872]) +- Handle not available add-on in hassio add-on manager ([@MartinHjelmare] - [#84943]) +- Revert "Add aliases to device registry items" ([@emontnemery] - [#84976]) +- Bump motionblinds to 0.6.15 ([@starkillerOG] - [#84994]) +- Bump ZHA quirks ([@dmulcahey] - [#85004]) +- Bump home-assistant-bluetooth to 1.9.1 ([@bdraco] - [#85005]) +- Update Tibber lib to 0.26.7. Improve error handling of realtime data ([@Danielhiversen] - [#85008]) +- Update frontend to 20230102.0 ([@bramkragten] - [#85010]) +- Switch to reolink-aio ([@starkillerOG] - [#85014]) +- Bump pyatmo to v7.5.0 ([@cgtobi] - [#85016]) +- Bump httpx to 0.23.2 ([@bdraco] - [#85023]) +- Bump slixmpp to 1.8.3 ([@balloob] - [#85031]) +- Fix bluetooth not being loaded with esphome proxies when removed from default_config ([@bdraco] - [#85032]) +- Fix failing HomeKit Controller diagnostics tests ([@bdraco] - [#84936]) +- 2022.12.9 ([@balloob] - [#85030]) +- Fix integer only LCN variable values ([@alengwenus] - [#85035]) +- Update adguard to 0.6.1 ([@frenck] - [#85052]) +- Remove workaround for reloading PurpleAir upon device removal ([@bachya] - [#85086]) +- Do not reset current selection on reconfig or MQTT select ([@jbouwh] - [#85099]) +- Allow MQTT device_class or state_class to be set as `None` ([@jbouwh] - [#85106]) +- Update frontend to 20230104.0 ([@bramkragten] - [#85107]) +- Remove illuminance device class for sensors in devolo Home Control ([@Shutgun] - [#85108]) +- Handle zone exception when setting up Cloudflare ([@ludeeus] - [#85110]) + +[#71307]: https://github.com/home-assistant/core/pull/71307 +[#74292]: https://github.com/home-assistant/core/pull/74292 +[#74619]: https://github.com/home-assistant/core/pull/74619 +[#75037]: https://github.com/home-assistant/core/pull/75037 +[#75365]: https://github.com/home-assistant/core/pull/75365 +[#77028]: https://github.com/home-assistant/core/pull/77028 +[#78952]: https://github.com/home-assistant/core/pull/78952 +[#79427]: https://github.com/home-assistant/core/pull/79427 +[#79770]: https://github.com/home-assistant/core/pull/79770 +[#81090]: https://github.com/home-assistant/core/pull/81090 +[#81369]: https://github.com/home-assistant/core/pull/81369 +[#81643]: https://github.com/home-assistant/core/pull/81643 +[#81768]: https://github.com/home-assistant/core/pull/81768 +[#81821]: https://github.com/home-assistant/core/pull/81821 +[#81930]: https://github.com/home-assistant/core/pull/81930 +[#82110]: https://github.com/home-assistant/core/pull/82110 +[#82328]: https://github.com/home-assistant/core/pull/82328 +[#82366]: https://github.com/home-assistant/core/pull/82366 +[#82446]: https://github.com/home-assistant/core/pull/82446 +[#82489]: https://github.com/home-assistant/core/pull/82489 +[#82548]: https://github.com/home-assistant/core/pull/82548 +[#82701]: https://github.com/home-assistant/core/pull/82701 +[#82740]: https://github.com/home-assistant/core/pull/82740 +[#82966]: https://github.com/home-assistant/core/pull/82966 +[#82990]: https://github.com/home-assistant/core/pull/82990 +[#82992]: https://github.com/home-assistant/core/pull/82992 +[#83025]: https://github.com/home-assistant/core/pull/83025 +[#83026]: https://github.com/home-assistant/core/pull/83026 +[#83027]: https://github.com/home-assistant/core/pull/83027 +[#83028]: https://github.com/home-assistant/core/pull/83028 +[#83029]: https://github.com/home-assistant/core/pull/83029 +[#83034]: https://github.com/home-assistant/core/pull/83034 +[#83042]: https://github.com/home-assistant/core/pull/83042 +[#83053]: https://github.com/home-assistant/core/pull/83053 +[#83066]: https://github.com/home-assistant/core/pull/83066 +[#83073]: https://github.com/home-assistant/core/pull/83073 +[#83086]: https://github.com/home-assistant/core/pull/83086 +[#83103]: https://github.com/home-assistant/core/pull/83103 +[#83105]: https://github.com/home-assistant/core/pull/83105 +[#83107]: https://github.com/home-assistant/core/pull/83107 +[#83108]: https://github.com/home-assistant/core/pull/83108 +[#83109]: https://github.com/home-assistant/core/pull/83109 +[#83111]: https://github.com/home-assistant/core/pull/83111 +[#83116]: https://github.com/home-assistant/core/pull/83116 +[#83119]: https://github.com/home-assistant/core/pull/83119 +[#83120]: https://github.com/home-assistant/core/pull/83120 +[#83121]: https://github.com/home-assistant/core/pull/83121 +[#83122]: https://github.com/home-assistant/core/pull/83122 +[#83123]: https://github.com/home-assistant/core/pull/83123 +[#83124]: https://github.com/home-assistant/core/pull/83124 +[#83125]: https://github.com/home-assistant/core/pull/83125 +[#83127]: https://github.com/home-assistant/core/pull/83127 +[#83129]: https://github.com/home-assistant/core/pull/83129 +[#83130]: https://github.com/home-assistant/core/pull/83130 +[#83131]: https://github.com/home-assistant/core/pull/83131 +[#83132]: https://github.com/home-assistant/core/pull/83132 +[#83143]: https://github.com/home-assistant/core/pull/83143 +[#83151]: https://github.com/home-assistant/core/pull/83151 +[#83167]: https://github.com/home-assistant/core/pull/83167 +[#83171]: https://github.com/home-assistant/core/pull/83171 +[#83172]: https://github.com/home-assistant/core/pull/83172 +[#83185]: https://github.com/home-assistant/core/pull/83185 +[#83195]: https://github.com/home-assistant/core/pull/83195 +[#83198]: https://github.com/home-assistant/core/pull/83198 +[#83203]: https://github.com/home-assistant/core/pull/83203 +[#83208]: https://github.com/home-assistant/core/pull/83208 +[#83216]: https://github.com/home-assistant/core/pull/83216 +[#83228]: https://github.com/home-assistant/core/pull/83228 +[#83229]: https://github.com/home-assistant/core/pull/83229 +[#83230]: https://github.com/home-assistant/core/pull/83230 +[#83241]: https://github.com/home-assistant/core/pull/83241 +[#83258]: https://github.com/home-assistant/core/pull/83258 +[#83259]: https://github.com/home-assistant/core/pull/83259 +[#83269]: https://github.com/home-assistant/core/pull/83269 +[#83273]: https://github.com/home-assistant/core/pull/83273 +[#83286]: https://github.com/home-assistant/core/pull/83286 +[#83287]: https://github.com/home-assistant/core/pull/83287 +[#83288]: https://github.com/home-assistant/core/pull/83288 +[#83289]: https://github.com/home-assistant/core/pull/83289 +[#83290]: https://github.com/home-assistant/core/pull/83290 +[#83291]: https://github.com/home-assistant/core/pull/83291 +[#83292]: https://github.com/home-assistant/core/pull/83292 +[#83293]: https://github.com/home-assistant/core/pull/83293 +[#83294]: https://github.com/home-assistant/core/pull/83294 +[#83295]: https://github.com/home-assistant/core/pull/83295 +[#83296]: https://github.com/home-assistant/core/pull/83296 +[#83297]: https://github.com/home-assistant/core/pull/83297 +[#83298]: https://github.com/home-assistant/core/pull/83298 +[#83300]: https://github.com/home-assistant/core/pull/83300 +[#83301]: https://github.com/home-assistant/core/pull/83301 +[#83303]: https://github.com/home-assistant/core/pull/83303 +[#83304]: https://github.com/home-assistant/core/pull/83304 +[#83305]: https://github.com/home-assistant/core/pull/83305 +[#83306]: https://github.com/home-assistant/core/pull/83306 +[#83308]: https://github.com/home-assistant/core/pull/83308 +[#83310]: https://github.com/home-assistant/core/pull/83310 +[#83311]: https://github.com/home-assistant/core/pull/83311 +[#83314]: https://github.com/home-assistant/core/pull/83314 +[#83315]: https://github.com/home-assistant/core/pull/83315 +[#83316]: https://github.com/home-assistant/core/pull/83316 +[#83318]: https://github.com/home-assistant/core/pull/83318 +[#83321]: https://github.com/home-assistant/core/pull/83321 +[#83322]: https://github.com/home-assistant/core/pull/83322 +[#83323]: https://github.com/home-assistant/core/pull/83323 +[#83324]: https://github.com/home-assistant/core/pull/83324 +[#83325]: https://github.com/home-assistant/core/pull/83325 +[#83327]: https://github.com/home-assistant/core/pull/83327 +[#83329]: https://github.com/home-assistant/core/pull/83329 +[#83330]: https://github.com/home-assistant/core/pull/83330 +[#83331]: https://github.com/home-assistant/core/pull/83331 +[#83334]: https://github.com/home-assistant/core/pull/83334 +[#83337]: https://github.com/home-assistant/core/pull/83337 +[#83338]: https://github.com/home-assistant/core/pull/83338 +[#83342]: https://github.com/home-assistant/core/pull/83342 +[#83344]: https://github.com/home-assistant/core/pull/83344 +[#83347]: https://github.com/home-assistant/core/pull/83347 +[#83357]: https://github.com/home-assistant/core/pull/83357 +[#83360]: https://github.com/home-assistant/core/pull/83360 +[#83361]: https://github.com/home-assistant/core/pull/83361 +[#83362]: https://github.com/home-assistant/core/pull/83362 +[#83363]: https://github.com/home-assistant/core/pull/83363 +[#83364]: https://github.com/home-assistant/core/pull/83364 +[#83365]: https://github.com/home-assistant/core/pull/83365 +[#83366]: https://github.com/home-assistant/core/pull/83366 +[#83367]: https://github.com/home-assistant/core/pull/83367 +[#83368]: https://github.com/home-assistant/core/pull/83368 +[#83369]: https://github.com/home-assistant/core/pull/83369 +[#83370]: https://github.com/home-assistant/core/pull/83370 +[#83371]: https://github.com/home-assistant/core/pull/83371 +[#83372]: https://github.com/home-assistant/core/pull/83372 +[#83376]: https://github.com/home-assistant/core/pull/83376 +[#83377]: https://github.com/home-assistant/core/pull/83377 +[#83379]: https://github.com/home-assistant/core/pull/83379 +[#83384]: https://github.com/home-assistant/core/pull/83384 +[#83385]: https://github.com/home-assistant/core/pull/83385 +[#83386]: https://github.com/home-assistant/core/pull/83386 +[#83387]: https://github.com/home-assistant/core/pull/83387 +[#83388]: https://github.com/home-assistant/core/pull/83388 +[#83390]: https://github.com/home-assistant/core/pull/83390 +[#83391]: https://github.com/home-assistant/core/pull/83391 +[#83392]: https://github.com/home-assistant/core/pull/83392 +[#83393]: https://github.com/home-assistant/core/pull/83393 +[#83394]: https://github.com/home-assistant/core/pull/83394 +[#83395]: https://github.com/home-assistant/core/pull/83395 +[#83396]: https://github.com/home-assistant/core/pull/83396 +[#83397]: https://github.com/home-assistant/core/pull/83397 +[#83398]: https://github.com/home-assistant/core/pull/83398 +[#83399]: https://github.com/home-assistant/core/pull/83399 +[#83400]: https://github.com/home-assistant/core/pull/83400 +[#83402]: https://github.com/home-assistant/core/pull/83402 +[#83405]: https://github.com/home-assistant/core/pull/83405 +[#83406]: https://github.com/home-assistant/core/pull/83406 +[#83409]: https://github.com/home-assistant/core/pull/83409 +[#83414]: https://github.com/home-assistant/core/pull/83414 +[#83419]: https://github.com/home-assistant/core/pull/83419 +[#83420]: https://github.com/home-assistant/core/pull/83420 +[#83421]: https://github.com/home-assistant/core/pull/83421 +[#83436]: https://github.com/home-assistant/core/pull/83436 +[#83438]: https://github.com/home-assistant/core/pull/83438 +[#83440]: https://github.com/home-assistant/core/pull/83440 +[#83445]: https://github.com/home-assistant/core/pull/83445 +[#83450]: https://github.com/home-assistant/core/pull/83450 +[#83451]: https://github.com/home-assistant/core/pull/83451 +[#83452]: https://github.com/home-assistant/core/pull/83452 +[#83453]: https://github.com/home-assistant/core/pull/83453 +[#83455]: https://github.com/home-assistant/core/pull/83455 +[#83456]: https://github.com/home-assistant/core/pull/83456 +[#83480]: https://github.com/home-assistant/core/pull/83480 +[#83486]: https://github.com/home-assistant/core/pull/83486 +[#83490]: https://github.com/home-assistant/core/pull/83490 +[#83495]: https://github.com/home-assistant/core/pull/83495 +[#83506]: https://github.com/home-assistant/core/pull/83506 +[#83525]: https://github.com/home-assistant/core/pull/83525 +[#83530]: https://github.com/home-assistant/core/pull/83530 +[#83533]: https://github.com/home-assistant/core/pull/83533 +[#83534]: https://github.com/home-assistant/core/pull/83534 +[#83546]: https://github.com/home-assistant/core/pull/83546 +[#83560]: https://github.com/home-assistant/core/pull/83560 +[#83574]: https://github.com/home-assistant/core/pull/83574 +[#83576]: https://github.com/home-assistant/core/pull/83576 +[#83577]: https://github.com/home-assistant/core/pull/83577 +[#83580]: https://github.com/home-assistant/core/pull/83580 +[#83581]: https://github.com/home-assistant/core/pull/83581 +[#83582]: https://github.com/home-assistant/core/pull/83582 +[#83583]: https://github.com/home-assistant/core/pull/83583 +[#83584]: https://github.com/home-assistant/core/pull/83584 +[#83585]: https://github.com/home-assistant/core/pull/83585 +[#83586]: https://github.com/home-assistant/core/pull/83586 +[#83590]: https://github.com/home-assistant/core/pull/83590 +[#83598]: https://github.com/home-assistant/core/pull/83598 +[#83599]: https://github.com/home-assistant/core/pull/83599 +[#83601]: https://github.com/home-assistant/core/pull/83601 +[#83604]: https://github.com/home-assistant/core/pull/83604 +[#83607]: https://github.com/home-assistant/core/pull/83607 +[#83610]: https://github.com/home-assistant/core/pull/83610 +[#83611]: https://github.com/home-assistant/core/pull/83611 +[#83612]: https://github.com/home-assistant/core/pull/83612 +[#83622]: https://github.com/home-assistant/core/pull/83622 +[#83623]: https://github.com/home-assistant/core/pull/83623 +[#83627]: https://github.com/home-assistant/core/pull/83627 +[#83628]: https://github.com/home-assistant/core/pull/83628 +[#83633]: https://github.com/home-assistant/core/pull/83633 +[#83634]: https://github.com/home-assistant/core/pull/83634 +[#83639]: https://github.com/home-assistant/core/pull/83639 +[#83641]: https://github.com/home-assistant/core/pull/83641 +[#83646]: https://github.com/home-assistant/core/pull/83646 +[#83647]: https://github.com/home-assistant/core/pull/83647 +[#83648]: https://github.com/home-assistant/core/pull/83648 +[#83649]: https://github.com/home-assistant/core/pull/83649 +[#83650]: https://github.com/home-assistant/core/pull/83650 +[#83651]: https://github.com/home-assistant/core/pull/83651 +[#83653]: https://github.com/home-assistant/core/pull/83653 +[#83654]: https://github.com/home-assistant/core/pull/83654 +[#83656]: https://github.com/home-assistant/core/pull/83656 +[#83657]: https://github.com/home-assistant/core/pull/83657 +[#83658]: https://github.com/home-assistant/core/pull/83658 +[#83660]: https://github.com/home-assistant/core/pull/83660 +[#83666]: https://github.com/home-assistant/core/pull/83666 +[#83668]: https://github.com/home-assistant/core/pull/83668 +[#83674]: https://github.com/home-assistant/core/pull/83674 +[#83675]: https://github.com/home-assistant/core/pull/83675 +[#83682]: https://github.com/home-assistant/core/pull/83682 +[#83685]: https://github.com/home-assistant/core/pull/83685 +[#83691]: https://github.com/home-assistant/core/pull/83691 +[#83694]: https://github.com/home-assistant/core/pull/83694 +[#83696]: https://github.com/home-assistant/core/pull/83696 +[#83699]: https://github.com/home-assistant/core/pull/83699 +[#83700]: https://github.com/home-assistant/core/pull/83700 +[#83701]: https://github.com/home-assistant/core/pull/83701 +[#83703]: https://github.com/home-assistant/core/pull/83703 +[#83705]: https://github.com/home-assistant/core/pull/83705 +[#83726]: https://github.com/home-assistant/core/pull/83726 +[#83728]: https://github.com/home-assistant/core/pull/83728 +[#83729]: https://github.com/home-assistant/core/pull/83729 +[#83738]: https://github.com/home-assistant/core/pull/83738 +[#83741]: https://github.com/home-assistant/core/pull/83741 +[#83742]: https://github.com/home-assistant/core/pull/83742 +[#83748]: https://github.com/home-assistant/core/pull/83748 +[#83754]: https://github.com/home-assistant/core/pull/83754 +[#83761]: https://github.com/home-assistant/core/pull/83761 +[#83763]: https://github.com/home-assistant/core/pull/83763 +[#83767]: https://github.com/home-assistant/core/pull/83767 +[#83770]: https://github.com/home-assistant/core/pull/83770 +[#83771]: https://github.com/home-assistant/core/pull/83771 +[#83774]: https://github.com/home-assistant/core/pull/83774 +[#83775]: https://github.com/home-assistant/core/pull/83775 +[#83784]: https://github.com/home-assistant/core/pull/83784 +[#83793]: https://github.com/home-assistant/core/pull/83793 +[#83796]: https://github.com/home-assistant/core/pull/83796 +[#83801]: https://github.com/home-assistant/core/pull/83801 +[#83805]: https://github.com/home-assistant/core/pull/83805 +[#83806]: https://github.com/home-assistant/core/pull/83806 +[#83807]: https://github.com/home-assistant/core/pull/83807 +[#83808]: https://github.com/home-assistant/core/pull/83808 +[#83809]: https://github.com/home-assistant/core/pull/83809 +[#83810]: https://github.com/home-assistant/core/pull/83810 +[#83811]: https://github.com/home-assistant/core/pull/83811 +[#83812]: https://github.com/home-assistant/core/pull/83812 +[#83814]: https://github.com/home-assistant/core/pull/83814 +[#83815]: https://github.com/home-assistant/core/pull/83815 +[#83817]: https://github.com/home-assistant/core/pull/83817 +[#83818]: https://github.com/home-assistant/core/pull/83818 +[#83820]: https://github.com/home-assistant/core/pull/83820 +[#83821]: https://github.com/home-assistant/core/pull/83821 +[#83822]: https://github.com/home-assistant/core/pull/83822 +[#83823]: https://github.com/home-assistant/core/pull/83823 +[#83824]: https://github.com/home-assistant/core/pull/83824 +[#83825]: https://github.com/home-assistant/core/pull/83825 +[#83826]: https://github.com/home-assistant/core/pull/83826 +[#83837]: https://github.com/home-assistant/core/pull/83837 +[#83858]: https://github.com/home-assistant/core/pull/83858 +[#83859]: https://github.com/home-assistant/core/pull/83859 +[#83869]: https://github.com/home-assistant/core/pull/83869 +[#83872]: https://github.com/home-assistant/core/pull/83872 +[#83877]: https://github.com/home-assistant/core/pull/83877 +[#83880]: https://github.com/home-assistant/core/pull/83880 +[#83881]: https://github.com/home-assistant/core/pull/83881 +[#83882]: https://github.com/home-assistant/core/pull/83882 +[#83885]: https://github.com/home-assistant/core/pull/83885 +[#83888]: https://github.com/home-assistant/core/pull/83888 +[#83894]: https://github.com/home-assistant/core/pull/83894 +[#83895]: https://github.com/home-assistant/core/pull/83895 +[#83897]: https://github.com/home-assistant/core/pull/83897 +[#83901]: https://github.com/home-assistant/core/pull/83901 +[#83904]: https://github.com/home-assistant/core/pull/83904 +[#83907]: https://github.com/home-assistant/core/pull/83907 +[#83908]: https://github.com/home-assistant/core/pull/83908 +[#83914]: https://github.com/home-assistant/core/pull/83914 +[#83915]: https://github.com/home-assistant/core/pull/83915 +[#83916]: https://github.com/home-assistant/core/pull/83916 +[#83917]: https://github.com/home-assistant/core/pull/83917 +[#83926]: https://github.com/home-assistant/core/pull/83926 +[#83927]: https://github.com/home-assistant/core/pull/83927 +[#83930]: https://github.com/home-assistant/core/pull/83930 +[#83932]: https://github.com/home-assistant/core/pull/83932 +[#83933]: https://github.com/home-assistant/core/pull/83933 +[#83936]: https://github.com/home-assistant/core/pull/83936 +[#83947]: https://github.com/home-assistant/core/pull/83947 +[#83952]: https://github.com/home-assistant/core/pull/83952 +[#83955]: https://github.com/home-assistant/core/pull/83955 +[#83958]: https://github.com/home-assistant/core/pull/83958 +[#83960]: https://github.com/home-assistant/core/pull/83960 +[#83961]: https://github.com/home-assistant/core/pull/83961 +[#83962]: https://github.com/home-assistant/core/pull/83962 +[#83974]: https://github.com/home-assistant/core/pull/83974 +[#83976]: https://github.com/home-assistant/core/pull/83976 +[#83977]: https://github.com/home-assistant/core/pull/83977 +[#83979]: https://github.com/home-assistant/core/pull/83979 +[#83980]: https://github.com/home-assistant/core/pull/83980 +[#83982]: https://github.com/home-assistant/core/pull/83982 +[#84004]: https://github.com/home-assistant/core/pull/84004 +[#84007]: https://github.com/home-assistant/core/pull/84007 +[#84008]: https://github.com/home-assistant/core/pull/84008 +[#84010]: https://github.com/home-assistant/core/pull/84010 +[#84012]: https://github.com/home-assistant/core/pull/84012 +[#84013]: https://github.com/home-assistant/core/pull/84013 +[#84018]: https://github.com/home-assistant/core/pull/84018 +[#84020]: https://github.com/home-assistant/core/pull/84020 +[#84026]: https://github.com/home-assistant/core/pull/84026 +[#84028]: https://github.com/home-assistant/core/pull/84028 +[#84029]: https://github.com/home-assistant/core/pull/84029 +[#84030]: https://github.com/home-assistant/core/pull/84030 +[#84034]: https://github.com/home-assistant/core/pull/84034 +[#84036]: https://github.com/home-assistant/core/pull/84036 +[#84043]: https://github.com/home-assistant/core/pull/84043 +[#84044]: https://github.com/home-assistant/core/pull/84044 +[#84047]: https://github.com/home-assistant/core/pull/84047 +[#84048]: https://github.com/home-assistant/core/pull/84048 +[#84049]: https://github.com/home-assistant/core/pull/84049 +[#84050]: https://github.com/home-assistant/core/pull/84050 +[#84051]: https://github.com/home-assistant/core/pull/84051 +[#84054]: https://github.com/home-assistant/core/pull/84054 +[#84063]: https://github.com/home-assistant/core/pull/84063 +[#84069]: https://github.com/home-assistant/core/pull/84069 +[#84077]: https://github.com/home-assistant/core/pull/84077 +[#84081]: https://github.com/home-assistant/core/pull/84081 +[#84089]: https://github.com/home-assistant/core/pull/84089 +[#84093]: https://github.com/home-assistant/core/pull/84093 +[#84095]: https://github.com/home-assistant/core/pull/84095 +[#84099]: https://github.com/home-assistant/core/pull/84099 +[#84103]: https://github.com/home-assistant/core/pull/84103 +[#84107]: https://github.com/home-assistant/core/pull/84107 +[#84111]: https://github.com/home-assistant/core/pull/84111 +[#84115]: https://github.com/home-assistant/core/pull/84115 +[#84118]: https://github.com/home-assistant/core/pull/84118 +[#84119]: https://github.com/home-assistant/core/pull/84119 +[#84122]: https://github.com/home-assistant/core/pull/84122 +[#84125]: https://github.com/home-assistant/core/pull/84125 +[#84129]: https://github.com/home-assistant/core/pull/84129 +[#84141]: https://github.com/home-assistant/core/pull/84141 +[#84143]: https://github.com/home-assistant/core/pull/84143 +[#84144]: https://github.com/home-assistant/core/pull/84144 +[#84147]: https://github.com/home-assistant/core/pull/84147 +[#84148]: https://github.com/home-assistant/core/pull/84148 +[#84161]: https://github.com/home-assistant/core/pull/84161 +[#84166]: https://github.com/home-assistant/core/pull/84166 +[#84178]: https://github.com/home-assistant/core/pull/84178 +[#84181]: https://github.com/home-assistant/core/pull/84181 +[#84185]: https://github.com/home-assistant/core/pull/84185 +[#84186]: https://github.com/home-assistant/core/pull/84186 +[#84189]: https://github.com/home-assistant/core/pull/84189 +[#84192]: https://github.com/home-assistant/core/pull/84192 +[#84194]: https://github.com/home-assistant/core/pull/84194 +[#84203]: https://github.com/home-assistant/core/pull/84203 +[#84205]: https://github.com/home-assistant/core/pull/84205 +[#84206]: https://github.com/home-assistant/core/pull/84206 +[#84207]: https://github.com/home-assistant/core/pull/84207 +[#84210]: https://github.com/home-assistant/core/pull/84210 +[#84215]: https://github.com/home-assistant/core/pull/84215 +[#84216]: https://github.com/home-assistant/core/pull/84216 +[#84220]: https://github.com/home-assistant/core/pull/84220 +[#84221]: https://github.com/home-assistant/core/pull/84221 +[#84222]: https://github.com/home-assistant/core/pull/84222 +[#84223]: https://github.com/home-assistant/core/pull/84223 +[#84224]: https://github.com/home-assistant/core/pull/84224 +[#84225]: https://github.com/home-assistant/core/pull/84225 +[#84226]: https://github.com/home-assistant/core/pull/84226 +[#84228]: https://github.com/home-assistant/core/pull/84228 +[#84229]: https://github.com/home-assistant/core/pull/84229 +[#84230]: https://github.com/home-assistant/core/pull/84230 +[#84231]: https://github.com/home-assistant/core/pull/84231 +[#84232]: https://github.com/home-assistant/core/pull/84232 +[#84234]: https://github.com/home-assistant/core/pull/84234 +[#84236]: https://github.com/home-assistant/core/pull/84236 +[#84237]: https://github.com/home-assistant/core/pull/84237 +[#84239]: https://github.com/home-assistant/core/pull/84239 +[#84240]: https://github.com/home-assistant/core/pull/84240 +[#84242]: https://github.com/home-assistant/core/pull/84242 +[#84243]: https://github.com/home-assistant/core/pull/84243 +[#84244]: https://github.com/home-assistant/core/pull/84244 +[#84245]: https://github.com/home-assistant/core/pull/84245 +[#84246]: https://github.com/home-assistant/core/pull/84246 +[#84252]: https://github.com/home-assistant/core/pull/84252 +[#84253]: https://github.com/home-assistant/core/pull/84253 +[#84254]: https://github.com/home-assistant/core/pull/84254 +[#84257]: https://github.com/home-assistant/core/pull/84257 +[#84260]: https://github.com/home-assistant/core/pull/84260 +[#84262]: https://github.com/home-assistant/core/pull/84262 +[#84264]: https://github.com/home-assistant/core/pull/84264 +[#84267]: https://github.com/home-assistant/core/pull/84267 +[#84269]: https://github.com/home-assistant/core/pull/84269 +[#84271]: https://github.com/home-assistant/core/pull/84271 +[#84273]: https://github.com/home-assistant/core/pull/84273 +[#84277]: https://github.com/home-assistant/core/pull/84277 +[#84280]: https://github.com/home-assistant/core/pull/84280 +[#84283]: https://github.com/home-assistant/core/pull/84283 +[#84288]: https://github.com/home-assistant/core/pull/84288 +[#84289]: https://github.com/home-assistant/core/pull/84289 +[#84291]: https://github.com/home-assistant/core/pull/84291 +[#84292]: https://github.com/home-assistant/core/pull/84292 +[#84294]: https://github.com/home-assistant/core/pull/84294 +[#84295]: https://github.com/home-assistant/core/pull/84295 +[#84304]: https://github.com/home-assistant/core/pull/84304 +[#84305]: https://github.com/home-assistant/core/pull/84305 +[#84306]: https://github.com/home-assistant/core/pull/84306 +[#84307]: https://github.com/home-assistant/core/pull/84307 +[#84308]: https://github.com/home-assistant/core/pull/84308 +[#84309]: https://github.com/home-assistant/core/pull/84309 +[#84310]: https://github.com/home-assistant/core/pull/84310 +[#84320]: https://github.com/home-assistant/core/pull/84320 +[#84324]: https://github.com/home-assistant/core/pull/84324 +[#84325]: https://github.com/home-assistant/core/pull/84325 +[#84328]: https://github.com/home-assistant/core/pull/84328 +[#84330]: https://github.com/home-assistant/core/pull/84330 +[#84331]: https://github.com/home-assistant/core/pull/84331 +[#84333]: https://github.com/home-assistant/core/pull/84333 +[#84337]: https://github.com/home-assistant/core/pull/84337 +[#84339]: https://github.com/home-assistant/core/pull/84339 +[#84341]: https://github.com/home-assistant/core/pull/84341 +[#84342]: https://github.com/home-assistant/core/pull/84342 +[#84343]: https://github.com/home-assistant/core/pull/84343 +[#84344]: https://github.com/home-assistant/core/pull/84344 +[#84346]: https://github.com/home-assistant/core/pull/84346 +[#84347]: https://github.com/home-assistant/core/pull/84347 +[#84348]: https://github.com/home-assistant/core/pull/84348 +[#84349]: https://github.com/home-assistant/core/pull/84349 +[#84350]: https://github.com/home-assistant/core/pull/84350 +[#84351]: https://github.com/home-assistant/core/pull/84351 +[#84352]: https://github.com/home-assistant/core/pull/84352 +[#84353]: https://github.com/home-assistant/core/pull/84353 +[#84356]: https://github.com/home-assistant/core/pull/84356 +[#84362]: https://github.com/home-assistant/core/pull/84362 +[#84365]: https://github.com/home-assistant/core/pull/84365 +[#84366]: https://github.com/home-assistant/core/pull/84366 +[#84371]: https://github.com/home-assistant/core/pull/84371 +[#84372]: https://github.com/home-assistant/core/pull/84372 +[#84373]: https://github.com/home-assistant/core/pull/84373 +[#84374]: https://github.com/home-assistant/core/pull/84374 +[#84376]: https://github.com/home-assistant/core/pull/84376 +[#84377]: https://github.com/home-assistant/core/pull/84377 +[#84379]: https://github.com/home-assistant/core/pull/84379 +[#84380]: https://github.com/home-assistant/core/pull/84380 +[#84381]: https://github.com/home-assistant/core/pull/84381 +[#84385]: https://github.com/home-assistant/core/pull/84385 +[#84386]: https://github.com/home-assistant/core/pull/84386 +[#84390]: https://github.com/home-assistant/core/pull/84390 +[#84393]: https://github.com/home-assistant/core/pull/84393 +[#84394]: https://github.com/home-assistant/core/pull/84394 +[#84395]: https://github.com/home-assistant/core/pull/84395 +[#84405]: https://github.com/home-assistant/core/pull/84405 +[#84406]: https://github.com/home-assistant/core/pull/84406 +[#84408]: https://github.com/home-assistant/core/pull/84408 +[#84411]: https://github.com/home-assistant/core/pull/84411 +[#84412]: https://github.com/home-assistant/core/pull/84412 +[#84414]: https://github.com/home-assistant/core/pull/84414 +[#84416]: https://github.com/home-assistant/core/pull/84416 +[#84417]: https://github.com/home-assistant/core/pull/84417 +[#84420]: https://github.com/home-assistant/core/pull/84420 +[#84421]: https://github.com/home-assistant/core/pull/84421 +[#84424]: https://github.com/home-assistant/core/pull/84424 +[#84428]: https://github.com/home-assistant/core/pull/84428 +[#84433]: https://github.com/home-assistant/core/pull/84433 +[#84438]: https://github.com/home-assistant/core/pull/84438 +[#84445]: https://github.com/home-assistant/core/pull/84445 +[#84449]: https://github.com/home-assistant/core/pull/84449 +[#84453]: https://github.com/home-assistant/core/pull/84453 +[#84460]: https://github.com/home-assistant/core/pull/84460 +[#84461]: https://github.com/home-assistant/core/pull/84461 +[#84465]: https://github.com/home-assistant/core/pull/84465 +[#84466]: https://github.com/home-assistant/core/pull/84466 +[#84469]: https://github.com/home-assistant/core/pull/84469 +[#84471]: https://github.com/home-assistant/core/pull/84471 +[#84473]: https://github.com/home-assistant/core/pull/84473 +[#84475]: https://github.com/home-assistant/core/pull/84475 +[#84488]: https://github.com/home-assistant/core/pull/84488 +[#84492]: https://github.com/home-assistant/core/pull/84492 +[#84500]: https://github.com/home-assistant/core/pull/84500 +[#84501]: https://github.com/home-assistant/core/pull/84501 +[#84504]: https://github.com/home-assistant/core/pull/84504 +[#84512]: https://github.com/home-assistant/core/pull/84512 +[#84517]: https://github.com/home-assistant/core/pull/84517 +[#84521]: https://github.com/home-assistant/core/pull/84521 +[#84522]: https://github.com/home-assistant/core/pull/84522 +[#84523]: https://github.com/home-assistant/core/pull/84523 +[#84525]: https://github.com/home-assistant/core/pull/84525 +[#84526]: https://github.com/home-assistant/core/pull/84526 +[#84531]: https://github.com/home-assistant/core/pull/84531 +[#84532]: https://github.com/home-assistant/core/pull/84532 +[#84545]: https://github.com/home-assistant/core/pull/84545 +[#84547]: https://github.com/home-assistant/core/pull/84547 +[#84565]: https://github.com/home-assistant/core/pull/84565 +[#84580]: https://github.com/home-assistant/core/pull/84580 +[#84585]: https://github.com/home-assistant/core/pull/84585 +[#84586]: https://github.com/home-assistant/core/pull/84586 +[#84589]: https://github.com/home-assistant/core/pull/84589 +[#84597]: https://github.com/home-assistant/core/pull/84597 +[#84598]: https://github.com/home-assistant/core/pull/84598 +[#84606]: https://github.com/home-assistant/core/pull/84606 +[#84607]: https://github.com/home-assistant/core/pull/84607 +[#84609]: https://github.com/home-assistant/core/pull/84609 +[#84613]: https://github.com/home-assistant/core/pull/84613 +[#84617]: https://github.com/home-assistant/core/pull/84617 +[#84618]: https://github.com/home-assistant/core/pull/84618 +[#84619]: https://github.com/home-assistant/core/pull/84619 +[#84626]: https://github.com/home-assistant/core/pull/84626 +[#84628]: https://github.com/home-assistant/core/pull/84628 +[#84629]: https://github.com/home-assistant/core/pull/84629 +[#84632]: https://github.com/home-assistant/core/pull/84632 +[#84633]: https://github.com/home-assistant/core/pull/84633 +[#84634]: https://github.com/home-assistant/core/pull/84634 +[#84635]: https://github.com/home-assistant/core/pull/84635 +[#84636]: https://github.com/home-assistant/core/pull/84636 +[#84637]: https://github.com/home-assistant/core/pull/84637 +[#84638]: https://github.com/home-assistant/core/pull/84638 +[#84639]: https://github.com/home-assistant/core/pull/84639 +[#84641]: https://github.com/home-assistant/core/pull/84641 +[#84642]: https://github.com/home-assistant/core/pull/84642 +[#84643]: https://github.com/home-assistant/core/pull/84643 +[#84644]: https://github.com/home-assistant/core/pull/84644 +[#84646]: https://github.com/home-assistant/core/pull/84646 +[#84647]: https://github.com/home-assistant/core/pull/84647 +[#84649]: https://github.com/home-assistant/core/pull/84649 +[#84650]: https://github.com/home-assistant/core/pull/84650 +[#84651]: https://github.com/home-assistant/core/pull/84651 +[#84654]: https://github.com/home-assistant/core/pull/84654 +[#84655]: https://github.com/home-assistant/core/pull/84655 +[#84656]: https://github.com/home-assistant/core/pull/84656 +[#84657]: https://github.com/home-assistant/core/pull/84657 +[#84658]: https://github.com/home-assistant/core/pull/84658 +[#84669]: https://github.com/home-assistant/core/pull/84669 +[#84670]: https://github.com/home-assistant/core/pull/84670 +[#84673]: https://github.com/home-assistant/core/pull/84673 +[#84674]: https://github.com/home-assistant/core/pull/84674 +[#84680]: https://github.com/home-assistant/core/pull/84680 +[#84682]: https://github.com/home-assistant/core/pull/84682 +[#84683]: https://github.com/home-assistant/core/pull/84683 +[#84685]: https://github.com/home-assistant/core/pull/84685 +[#84686]: https://github.com/home-assistant/core/pull/84686 +[#84689]: https://github.com/home-assistant/core/pull/84689 +[#84690]: https://github.com/home-assistant/core/pull/84690 +[#84692]: https://github.com/home-assistant/core/pull/84692 +[#84696]: https://github.com/home-assistant/core/pull/84696 +[#84698]: https://github.com/home-assistant/core/pull/84698 +[#84699]: https://github.com/home-assistant/core/pull/84699 +[#84700]: https://github.com/home-assistant/core/pull/84700 +[#84705]: https://github.com/home-assistant/core/pull/84705 +[#84711]: https://github.com/home-assistant/core/pull/84711 +[#84719]: https://github.com/home-assistant/core/pull/84719 +[#84720]: https://github.com/home-assistant/core/pull/84720 +[#84723]: https://github.com/home-assistant/core/pull/84723 +[#84725]: https://github.com/home-assistant/core/pull/84725 +[#84733]: https://github.com/home-assistant/core/pull/84733 +[#84746]: https://github.com/home-assistant/core/pull/84746 +[#84749]: https://github.com/home-assistant/core/pull/84749 +[#84778]: https://github.com/home-assistant/core/pull/84778 +[#84787]: https://github.com/home-assistant/core/pull/84787 +[#84791]: https://github.com/home-assistant/core/pull/84791 +[#84792]: https://github.com/home-assistant/core/pull/84792 +[#84796]: https://github.com/home-assistant/core/pull/84796 +[#84797]: https://github.com/home-assistant/core/pull/84797 +[#84798]: https://github.com/home-assistant/core/pull/84798 +[#84800]: https://github.com/home-assistant/core/pull/84800 +[#84805]: https://github.com/home-assistant/core/pull/84805 +[#84809]: https://github.com/home-assistant/core/pull/84809 +[#84812]: https://github.com/home-assistant/core/pull/84812 +[#84821]: https://github.com/home-assistant/core/pull/84821 +[#84830]: https://github.com/home-assistant/core/pull/84830 +[#84832]: https://github.com/home-assistant/core/pull/84832 +[#84835]: https://github.com/home-assistant/core/pull/84835 +[#84842]: https://github.com/home-assistant/core/pull/84842 +[#84848]: https://github.com/home-assistant/core/pull/84848 +[#84860]: https://github.com/home-assistant/core/pull/84860 +[#84862]: https://github.com/home-assistant/core/pull/84862 +[#84864]: https://github.com/home-assistant/core/pull/84864 +[#84865]: https://github.com/home-assistant/core/pull/84865 +[#84868]: https://github.com/home-assistant/core/pull/84868 +[#84872]: https://github.com/home-assistant/core/pull/84872 +[#84873]: https://github.com/home-assistant/core/pull/84873 +[#84884]: https://github.com/home-assistant/core/pull/84884 +[#84888]: https://github.com/home-assistant/core/pull/84888 +[#84893]: https://github.com/home-assistant/core/pull/84893 +[#84896]: https://github.com/home-assistant/core/pull/84896 +[#84902]: https://github.com/home-assistant/core/pull/84902 +[#84904]: https://github.com/home-assistant/core/pull/84904 +[#84907]: https://github.com/home-assistant/core/pull/84907 +[#84914]: https://github.com/home-assistant/core/pull/84914 +[#84919]: https://github.com/home-assistant/core/pull/84919 +[#84930]: https://github.com/home-assistant/core/pull/84930 +[#84936]: https://github.com/home-assistant/core/pull/84936 +[#84937]: https://github.com/home-assistant/core/pull/84937 +[#84943]: https://github.com/home-assistant/core/pull/84943 +[#84955]: https://github.com/home-assistant/core/pull/84955 +[#84976]: https://github.com/home-assistant/core/pull/84976 +[#84994]: https://github.com/home-assistant/core/pull/84994 +[#85004]: https://github.com/home-assistant/core/pull/85004 +[#85005]: https://github.com/home-assistant/core/pull/85005 +[#85008]: https://github.com/home-assistant/core/pull/85008 +[#85010]: https://github.com/home-assistant/core/pull/85010 +[#85014]: https://github.com/home-assistant/core/pull/85014 +[#85016]: https://github.com/home-assistant/core/pull/85016 +[#85023]: https://github.com/home-assistant/core/pull/85023 +[#85030]: https://github.com/home-assistant/core/pull/85030 +[#85031]: https://github.com/home-assistant/core/pull/85031 +[#85032]: https://github.com/home-assistant/core/pull/85032 +[#85035]: https://github.com/home-assistant/core/pull/85035 +[#85052]: https://github.com/home-assistant/core/pull/85052 +[#85086]: https://github.com/home-assistant/core/pull/85086 +[#85099]: https://github.com/home-assistant/core/pull/85099 +[#85106]: https://github.com/home-assistant/core/pull/85106 +[#85107]: https://github.com/home-assistant/core/pull/85107 +[#85108]: https://github.com/home-assistant/core/pull/85108 +[#85110]: https://github.com/home-assistant/core/pull/85110 +[@ANMalko]: https://github.com/ANMalko +[@AliceGrey]: https://github.com/AliceGrey +[@AngellusMortis]: https://github.com/AngellusMortis +[@ChopperRob]: https://github.com/ChopperRob +[@DCSBL]: https://github.com/DCSBL +[@Danielhiversen]: https://github.com/Danielhiversen +[@DataBitz]: https://github.com/DataBitz +[@DeerMaximum]: https://github.com/DeerMaximum +[@Djelibeybi]: https://github.com/Djelibeybi +[@Drafteed]: https://github.com/Drafteed +[@Ernst79]: https://github.com/Ernst79 +[@FuzzyMistborn]: https://github.com/FuzzyMistborn +[@Glodenox]: https://github.com/Glodenox +[@J3173]: https://github.com/J3173 +[@Jc2k]: https://github.com/Jc2k +[@Kane610]: https://github.com/Kane610 +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@MattWestb]: https://github.com/MattWestb +[@Noltari]: https://github.com/Noltari +[@PierreAronnax]: https://github.com/PierreAronnax +[@ShadowJonathan]: https://github.com/ShadowJonathan +[@Shutgun]: https://github.com/Shutgun +[@Sommerzeit]: https://github.com/Sommerzeit +[@StevenLooman]: https://github.com/StevenLooman +[@SukramJ]: https://github.com/SukramJ +[@Tarik2142]: https://github.com/Tarik2142 +[@albertogeniola]: https://github.com/albertogeniola +[@alengwenus]: https://github.com/alengwenus +[@allenporter]: https://github.com/allenporter +[@aschmitz]: https://github.com/aschmitz +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@bonzini]: https://github.com/bonzini +[@boralyl]: https://github.com/boralyl +[@bramkragten]: https://github.com/bramkragten +[@cdce8p]: https://github.com/cdce8p +[@cgtobi]: https://github.com/cgtobi +[@chishm]: https://github.com/chishm +[@dmulcahey]: https://github.com/dmulcahey +[@dsypniewski]: https://github.com/dsypniewski +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@epenet]: https://github.com/epenet +[@farmio]: https://github.com/farmio +[@filcole]: https://github.com/filcole +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gwww]: https://github.com/gwww +[@hahn-th]: https://github.com/hahn-th +[@hmmbob]: https://github.com/hmmbob +[@jafar-atili]: https://github.com/jafar-atili +[@jbouwh]: https://github.com/jbouwh +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@jpettitt]: https://github.com/jpettitt +[@kamiyo]: https://github.com/kamiyo +[@killer0071234]: https://github.com/killer0071234 +[@klaasnicolaas]: https://github.com/klaasnicolaas +[@konikoni428]: https://github.com/konikoni428 +[@laurent-martin]: https://github.com/laurent-martin +[@ludeeus]: https://github.com/ludeeus +[@majuss]: https://github.com/majuss +[@marcelveldt]: https://github.com/marcelveldt +[@mib1185]: https://github.com/mib1185 +[@michaelarnauts]: https://github.com/michaelarnauts +[@milanmeu]: https://github.com/milanmeu +[@muppet3000]: https://github.com/muppet3000 +[@natekspencer]: https://github.com/natekspencer +[@nyroDev]: https://github.com/nyroDev +[@oischinger]: https://github.com/oischinger +[@ollo69]: https://github.com/ollo69 +[@oyvindwe]: https://github.com/oyvindwe +[@pavoni]: https://github.com/pavoni +[@r01k]: https://github.com/r01k +[@raman325]: https://github.com/raman325 +[@riokuu]: https://github.com/riokuu +[@scop]: https://github.com/scop +[@shbatm]: https://github.com/shbatm +[@spacegaier]: https://github.com/spacegaier +[@spyder007]: https://github.com/spyder007 +[@starkillerOG]: https://github.com/starkillerOG +[@stgraber]: https://github.com/stgraber +[@synesthesiam]: https://github.com/synesthesiam +[@thecode]: https://github.com/thecode +[@timrogers]: https://github.com/timrogers +[@tkislan]: https://github.com/tkislan +[@toddejohnson]: https://github.com/toddejohnson +[@tronikos]: https://github.com/tronikos +[@w1ll1am23]: https://github.com/w1ll1am23 +[@yozik04]: https://github.com/yozik04 +[@yuvalabou]: https://github.com/yuvalabou +[@yuxincs]: https://github.com/yuxincs +[accuweather docs]: /integrations/accuweather/ +[adguard docs]: /integrations/adguard/ +[aemet docs]: /integrations/aemet/ +[airq docs]: /integrations/airq/ +[airvisual docs]: /integrations/airvisual/ +[airvisual_pro docs]: /integrations/airvisual_pro/ +[airzone docs]: /integrations/airzone/ +[alert docs]: /integrations/alert/ +[alexa docs]: /integrations/alexa/ +[almond docs]: /integrations/almond/ +[ambient_station docs]: /integrations/ambient_station/ +[analytics docs]: /integrations/analytics/ +[androidtv docs]: /integrations/androidtv/ +[apcupsd docs]: /integrations/apcupsd/ +[application_credentials docs]: /integrations/application_credentials/ +[apprise docs]: /integrations/apprise/ +[aqualogic docs]: /integrations/aqualogic/ +[aranet docs]: /integrations/aranet/ +[arwn docs]: /integrations/arwn/ +[asuswrt docs]: /integrations/asuswrt/ +[atag docs]: /integrations/atag/ +[august docs]: /integrations/august/ +[auth docs]: /integrations/auth/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[baf docs]: /integrations/baf/ +[binary_sensor docs]: /integrations/binary_sensor/ +[blebox docs]: /integrations/blebox/ +[blink docs]: /integrations/blink/ +[bloomsky docs]: /integrations/bloomsky/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brother docs]: /integrations/brother/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[caldav docs]: /integrations/caldav/ +[calendar docs]: /integrations/calendar/ +[canary docs]: /integrations/canary/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[cloudflare docs]: /integrations/cloudflare/ +[comfoconnect docs]: /integrations/comfoconnect/ +[config docs]: /integrations/config/ +[conversation docs]: /integrations/conversation/ +[core docs]: /integrations/core/ +[cover docs]: /integrations/cover/ +[cpuspeed docs]: /integrations/cpuspeed/ +[darksky docs]: /integrations/darksky/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[demo docs]: /integrations/demo/ +[deutsche_bahn docs]: /integrations/deutsche_bahn/ +[devolo_home_control docs]: /integrations/devolo_home_control/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[diagnostics docs]: /integrations/diagnostics/ +[dlna_dmr docs]: /integrations/dlna_dmr/ +[dnsip docs]: /integrations/dnsip/ +[dsmr docs]: /integrations/dsmr/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[dte_energy_bridge docs]: /integrations/dte_energy_bridge/ +[dynalite docs]: /integrations/dynalite/ +[ebusd docs]: /integrations/ebusd/ +[ecobee docs]: /integrations/ecobee/ +[econet docs]: /integrations/econet/ +[ecowitt docs]: /integrations/ecowitt/ +[eliqonline docs]: /integrations/eliqonline/ +[elkm1 docs]: /integrations/elkm1/ +[elmax docs]: /integrations/elmax/ +[energy docs]: /integrations/energy/ +[enphase_envoy docs]: /integrations/enphase_envoy/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[evohome docs]: /integrations/evohome/ +[file_upload docs]: /integrations/file_upload/ +[filter docs]: /integrations/filter/ +[fitbit docs]: /integrations/fitbit/ +[flipr docs]: /integrations/flipr/ +[folder docs]: /integrations/folder/ +[folder_watcher docs]: /integrations/folder_watcher/ +[forecast_solar docs]: /integrations/forecast_solar/ +[freebox docs]: /integrations/freebox/ +[fronius docs]: /integrations/fronius/ +[frontend docs]: /integrations/frontend/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[garages_amsterdam docs]: /integrations/garages_amsterdam/ +[gios docs]: /integrations/gios/ +[goalzero docs]: /integrations/goalzero/ +[gogogate2 docs]: /integrations/gogogate2/ +[goodwe docs]: /integrations/goodwe/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_assistant_sdk docs]: /integrations/google_assistant_sdk/ +[google_pubsub docs]: /integrations/google_pubsub/ +[google_sheets docs]: /integrations/google_sheets/ +[google_translate docs]: /integrations/google_translate/ +[google_travel_time docs]: /integrations/google_travel_time/ +[govee_ble docs]: /integrations/govee_ble/ +[gree docs]: /integrations/gree/ +[growatt_server docs]: /integrations/growatt_server/ +[hardware docs]: /integrations/hardware/ +[harmony docs]: /integrations/harmony/ +[hassio docs]: /integrations/hassio/ +[haveibeenpwned docs]: /integrations/haveibeenpwned/ +[here_travel_time docs]: /integrations/here_travel_time/ +[hive docs]: /integrations/hive/ +[homeassistant_alerts docs]: /integrations/homeassistant_alerts/ +[homeassistant_hardware docs]: /integrations/homeassistant_hardware/ +[homeassistant_sky_connect docs]: /integrations/homeassistant_sky_connect/ +[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[homewizard docs]: /integrations/homewizard/ +[honeywell docs]: /integrations/honeywell/ +[html5 docs]: /integrations/html5/ +[huawei_lte docs]: /integrations/huawei_lte/ +[hue docs]: /integrations/hue/ +[huisbaasje docs]: /integrations/huisbaasje/ +[humidifier docs]: /integrations/humidifier/ +[image docs]: /integrations/image/ +[image_processing docs]: /integrations/image_processing/ +[image_upload docs]: /integrations/image_upload/ +[incomfort docs]: /integrations/incomfort/ +[integration docs]: /integrations/integration/ +[intent docs]: /integrations/intent/ +[iotawatt docs]: /integrations/iotawatt/ +[isy994 docs]: /integrations/isy994/ +[knx docs]: /integrations/knx/ +[kostal_plenticore docs]: /integrations/kostal_plenticore/ +[lacrosse_view docs]: /integrations/lacrosse_view/ +[lametric docs]: /integrations/lametric/ +[landisgyr_heat_meter docs]: /integrations/landisgyr_heat_meter/ +[laundrify docs]: /integrations/laundrify/ +[lcn docs]: /integrations/lcn/ +[led_ble docs]: /integrations/led_ble/ +[lifx docs]: /integrations/lifx/ +[litterrobot docs]: /integrations/litterrobot/ +[local_calendar docs]: /integrations/local_calendar/ +[lookin docs]: /integrations/lookin/ +[lupusec docs]: /integrations/lupusec/ +[lyric docs]: /integrations/lyric/ +[manual docs]: /integrations/manual/ +[manual_mqtt docs]: /integrations/manual_mqtt/ +[mastodon docs]: /integrations/mastodon/ +[matter docs]: /integrations/matter/ +[mazda docs]: /integrations/mazda/ +[media_player docs]: /integrations/media_player/ +[melcloud docs]: /integrations/melcloud/ +[meteo_france docs]: /integrations/meteo_france/ +[meteoclimatic docs]: /integrations/meteoclimatic/ +[metoffice docs]: /integrations/metoffice/ +[mill docs]: /integrations/mill/ +[minio docs]: /integrations/minio/ +[mold_indicator docs]: /integrations/mold_indicator/ +[moon docs]: /integrations/moon/ +[motion_blinds docs]: /integrations/motion_blinds/ +[mqtt docs]: /integrations/mqtt/ +[mysensors docs]: /integrations/mysensors/ +[nam docs]: /integrations/nam/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[netgear_lte docs]: /integrations/netgear_lte/ +[nexia docs]: /integrations/nexia/ +[nibe_heatpump docs]: /integrations/nibe_heatpump/ +[nina docs]: /integrations/nina/ +[nissan_leaf docs]: /integrations/nissan_leaf/ +[nobo_hub docs]: /integrations/nobo_hub/ +[notion docs]: /integrations/notion/ +[number docs]: /integrations/number/ +[nut docs]: /integrations/nut/ +[nws docs]: /integrations/nws/ +[omnilogic docs]: /integrations/omnilogic/ +[ondilo_ico docs]: /integrations/ondilo_ico/ +[onvif docs]: /integrations/onvif/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openuv docs]: /integrations/openuv/ +[openweathermap docs]: /integrations/openweathermap/ +[oru docs]: /integrations/oru/ +[otp docs]: /integrations/otp/ +[overkiz docs]: /integrations/overkiz/ +[ovo_energy docs]: /integrations/ovo_energy/ +[person docs]: /integrations/person/ +[pi_hole docs]: /integrations/pi_hole/ +[plaato docs]: /integrations/plaato/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[point docs]: /integrations/point/ +[poolsense docs]: /integrations/poolsense/ +[prometheus docs]: /integrations/prometheus/ +[prusalink docs]: /integrations/prusalink/ +[purpleair docs]: /integrations/purpleair/ +[pyload docs]: /integrations/pyload/ +[qnap_qsw docs]: /integrations/qnap_qsw/ +[rainbird docs]: /integrations/rainbird/ +[rainmachine docs]: /integrations/rainmachine/ +[rdw docs]: /integrations/rdw/ +[recorder docs]: /integrations/recorder/ +[renault docs]: /integrations/renault/ +[reolink docs]: /integrations/reolink/ +[repairs docs]: /integrations/repairs/ +[rest docs]: /integrations/rest/ +[rflink docs]: /integrations/rflink/ +[rfxtrx docs]: /integrations/rfxtrx/ +[risco docs]: /integrations/risco/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[roku docs]: /integrations/roku/ +[roon docs]: /integrations/roon/ +[ruuvitag_ble docs]: /integrations/ruuvitag_ble/ +[saj docs]: /integrations/saj/ +[script docs]: /integrations/script/ +[season docs]: /integrations/season/ +[sense docs]: /integrations/sense/ +[sensibo docs]: /integrations/sensibo/ +[sensirion_ble docs]: /integrations/sensirion_ble/ +[sensor docs]: /integrations/sensor/ +[sensorpro docs]: /integrations/sensorpro/ +[sentry docs]: /integrations/sentry/ +[shelly docs]: /integrations/shelly/ +[shopping_list docs]: /integrations/shopping_list/ +[smartthings docs]: /integrations/smartthings/ +[snmp docs]: /integrations/snmp/ +[solaredge_local docs]: /integrations/solaredge_local/ +[solarlog docs]: /integrations/solarlog/ +[solax docs]: /integrations/solax/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spotify docs]: /integrations/spotify/ +[ssdp docs]: /integrations/ssdp/ +[starline docs]: /integrations/starline/ +[steam_online docs]: /integrations/steam_online/ +[streamlabswater docs]: /integrations/streamlabswater/ +[suez_water docs]: /integrations/suez_water/ +[surepetcare docs]: /integrations/surepetcare/ +[switch docs]: /integrations/switch/ +[switchbee docs]: /integrations/switchbee/ +[switchbot docs]: /integrations/switchbot/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[tado docs]: /integrations/tado/ +[tankerkoenig docs]: /integrations/tankerkoenig/ +[tasmota docs]: /integrations/tasmota/ +[ted5000 docs]: /integrations/ted5000/ +[tellduslive docs]: /integrations/tellduslive/ +[template docs]: /integrations/template/ +[tesla_wall_connector docs]: /integrations/tesla_wall_connector/ +[thermobeacon docs]: /integrations/thermobeacon/ +[tibber docs]: /integrations/tibber/ +[todoist docs]: /integrations/todoist/ +[tolo docs]: /integrations/tolo/ +[tomorrowio docs]: /integrations/tomorrowio/ +[totalconnect docs]: /integrations/totalconnect/ +[tplink docs]: /integrations/tplink/ +[tractive docs]: /integrations/tractive/ +[tradfri docs]: /integrations/tradfri/ +[trafikverket_weatherstation docs]: /integrations/trafikverket_weatherstation/ +[transmission docs]: /integrations/transmission/ +[tuya docs]: /integrations/tuya/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[universal docs]: /integrations/universal/ +[update docs]: /integrations/update/ +[uptimerobot docs]: /integrations/uptimerobot/ +[vallox docs]: /integrations/vallox/ +[version docs]: /integrations/version/ +[vicare docs]: /integrations/vicare/ +[volkszaehler docs]: /integrations/volkszaehler/ +[wallbox docs]: /integrations/wallbox/ +[waterfurnace docs]: /integrations/waterfurnace/ +[watttime docs]: /integrations/watttime/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[withings docs]: /integrations/withings/ +[wled docs]: /integrations/wled/ +[wolflink docs]: /integrations/wolflink/ +[xiaomi_ble docs]: /integrations/xiaomi_ble/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xmpp docs]: /integrations/xmpp/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[zamg docs]: /integrations/zamg/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zodiac docs]: /integrations/zodiac/ +[zone docs]: /integrations/zone/ +[zwave_js docs]: /integrations/zwave_js/ +[zwave_me docs]: /integrations/zwave_me/ diff --git a/source/images/blog/2023-01/aliases-cloud-multi-language.png b/source/images/blog/2023-01/aliases-cloud-multi-language.png new file mode 100644 index 000000000000..92e482705ca2 Binary files /dev/null and b/source/images/blog/2023-01/aliases-cloud-multi-language.png differ diff --git a/source/images/blog/2023-01/aliases.png b/source/images/blog/2023-01/aliases.png new file mode 100644 index 000000000000..a87b63ebd8a8 Binary files /dev/null and b/source/images/blog/2023-01/aliases.png differ diff --git a/source/images/blog/2023-01/calendar.png b/source/images/blog/2023-01/calendar.png new file mode 100644 index 000000000000..b220d2cd3cfe Binary files /dev/null and b/source/images/blog/2023-01/calendar.png differ diff --git a/source/images/blog/2023-01/entity-translations.png b/source/images/blog/2023-01/entity-translations.png new file mode 100644 index 000000000000..a6bc9896d77b Binary files /dev/null and b/source/images/blog/2023-01/entity-translations.png differ diff --git a/source/images/blog/2023-01/social.png b/source/images/blog/2023-01/social.png new file mode 100644 index 000000000000..3fd9a05a3983 Binary files /dev/null and b/source/images/blog/2023-01/social.png differ diff --git a/source/skyconnect/index.html b/source/skyconnect/index.html index d73544aac48e..d90f22047848 100644 --- a/source/skyconnect/index.html +++ b/source/skyconnect/index.html @@ -28,7 +28,7 @@
@@ -329,7 +329,7 @@

FAQs

d="M17,18C15.89,18 15,18.89 15,20A2,2 0 0,0 17,22A2,2 0 0,0 19,20C19,18.89 18.1,18 17,18M1,2V4H3L6.6,11.59L5.24,14.04C5.09,14.32 5,14.65 5,15A2,2 0 0,0 7,17H19V15H7.42A0.25,0.25 0 0,1 7.17,14.75C7.17,14.7 7.18,14.66 7.2,14.63L8.1,13H15.55C16.3,13 16.96,12.58 17.3,11.97L20.88,5.5C20.95,5.34 21,5.17 21,5A1,1 0 0,0 20,4H5.21L4.27,2M7,18C5.89,18 5,18.89 5,20A2,2 0 0,0 7,22A2,2 0 0,0 9,20C9,18.89 8.1,18 7,18Z" /> - PRE-ORDER SKYCONNECT + ORDER SKYCONNECT