diff --git a/CODEOWNERS b/CODEOWNERS index 1f48d53b984..24be48bd8d4 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -40,6 +40,8 @@ source/_integrations/amp_motorization.markdown @starkillerOG source/_integrations/analytics.markdown @home-assistant/core @ludeeus source/_integrations/android_ip_webcam.markdown @engrbm87 source/_integrations/androidtv.markdown @JeffLIrion @ollo69 +source/_integrations/androidtv_remote.markdown @tronikos +source/_integrations/anova.markdown @Lash-L source/_integrations/anthemav.markdown @hyralex source/_integrations/anwb_energie.markdown @klaasnicolaas source/_integrations/apache_kafka.markdown @bachya @@ -53,6 +55,7 @@ source/_integrations/aranet.markdown @aschmitz source/_integrations/arcam_fmj.markdown @elupus source/_integrations/arris_tg2492lg.markdown @vanbalken source/_integrations/aseko_pool_live.markdown @milanmeu +source/_integrations/assist_pipeline.markdown @balloob @synesthesiam source/_integrations/asuswrt.markdown @kennedyshead @ollo69 source/_integrations/atag.markdown @MatsNL source/_integrations/aten_pe.markdown @mtdcr @@ -94,6 +97,7 @@ source/_integrations/braviatv.markdown @bieniu @Drafteed source/_integrations/brel_home.markdown @starkillerOG source/_integrations/broadlink.markdown @danielhiversen @felipediel @L-I-Am source/_integrations/brother.markdown @bieniu +source/_integrations/brottsplatskartan.markdown @gjohansson-ST source/_integrations/brunt.markdown @eavanvalkenburg source/_integrations/bsblan.markdown @liudger source/_integrations/bswitch.markdown @jafar-atili @@ -123,7 +127,6 @@ source/_integrations/configurator.markdown @home-assistant/core source/_integrations/control4.markdown @lawtancool source/_integrations/conversation.markdown @home-assistant/core @synesthesiam 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 @nyroDev @@ -163,7 +166,7 @@ source/_integrations/dormakaba_dkey.markdown @emontnemery source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr_reader.markdown @depl0y @glodenox source/_integrations/dunehd.markdown @bieniu -source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @Hummel95 +source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @Hummel95 @andarotajo source/_integrations/dynalite.markdown @ziv1234 source/_integrations/easyenergy.markdown @klaasnicolaas source/_integrations/ecobee.markdown @marthoc @marcolivierarsenault @@ -312,7 +315,7 @@ source/_integrations/icloud.markdown @Quentame @nzapponi source/_integrations/ign_sismologia.markdown @exxamalte source/_integrations/image_processing.markdown @home-assistant/core source/_integrations/image_upload.markdown @home-assistant/core -source/_integrations/imap.markdown @engrbm87 +source/_integrations/imap.markdown @engrbm87 @jbouwh source/_integrations/incomfort.markdown @zxdavb source/_integrations/influxdb.markdown @mdegat01 source/_integrations/inkbird.markdown @bdraco @@ -371,7 +374,7 @@ source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave source/_integrations/lg_netcast.markdown @Drafteed source/_integrations/lidarr.markdown @tkdrob source/_integrations/life360.markdown @pnbruckner -source/_integrations/lifx.markdown @bdraco @Djelibeybi +source/_integrations/lifx.markdown @bdraco source/_integrations/light.markdown @home-assistant/core source/_integrations/linux_battery.markdown @fabaff source/_integrations/litejet.markdown @joncar @@ -421,6 +424,7 @@ source/_integrations/modbus.markdown @adamchengtkc @janiversen @vzahradnik source/_integrations/modem_callerid.markdown @tkdrob source/_integrations/modern_forms.markdown @wonderslug source/_integrations/moehlenhoff_alpha2.markdown @j-a-n +source/_integrations/monessen.markdown @jeeftor source/_integrations/monoprice.markdown @etsinko @OnFreund source/_integrations/moon.markdown @fabaff @frenck source/_integrations/mopeka.markdown @bdraco @@ -467,7 +471,7 @@ source/_integrations/nuheat.markdown @tstabrawa source/_integrations/nuki.markdown @pschmitt @pvizeli @pree source/_integrations/numato.markdown @clssn source/_integrations/number.markdown @home-assistant/core @Shulyaka -source/_integrations/nut.markdown @bdraco @ollo69 +source/_integrations/nut.markdown @bdraco @ollo69 @pestevez source/_integrations/nutrichef.markdown @bdraco source/_integrations/nws.markdown @MatthewFlamm @kamiyo source/_integrations/nzbget.markdown @chriscla @@ -508,7 +512,7 @@ source/_integrations/picnic.markdown @corneyl source/_integrations/pilight.markdown @trekky12 source/_integrations/plaato.markdown @JohNan source/_integrations/plex.markdown @jjlawren -source/_integrations/plugwise.markdown @CoMPaTech @bouwew @brefra @frenck +source/_integrations/plugwise.markdown @CoMPaTech @bouwew @frenck source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa source/_integrations/point.markdown @fredrike source/_integrations/poolsense.markdown @haemishkyd @@ -544,6 +548,7 @@ source/_integrations/raincloud.markdown @vanstinator source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert @hastarin source/_integrations/rainmachine.markdown @bachya source/_integrations/random.markdown @fabaff +source/_integrations/rapt_ble.markdown @sairon source/_integrations/raven_rock_mfg.markdown @starkillerOG source/_integrations/rdw.markdown @frenck source/_integrations/recollect_waste.markdown @bachya @@ -554,6 +559,7 @@ source/_integrations/renault.markdown @epenet source/_integrations/reolink.markdown @starkillerOG source/_integrations/repairs.markdown @home-assistant/core source/_integrations/repetier.markdown @MTrab @ShadowBr0ther +source/_integrations/rest.markdown @epenet source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/rflink.markdown @javicalle source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221 @@ -562,7 +568,7 @@ source/_integrations/ridwell.markdown @bachya source/_integrations/risco.markdown @OnFreund source/_integrations/rituals_perfume_genie.markdown @milanmeu source/_integrations/rmvtransport.markdown @cgtobi -source/_integrations/roborock.markdown @rytilahti @syssi @starkillerOG +source/_integrations/roborock.markdown @humbertogontijo @Lash-L source/_integrations/roku.markdown @ctalkington source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn source/_integrations/roon.markdown @pavoni @@ -648,7 +654,7 @@ source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87 source/_integrations/spider.markdown @peternijssen source/_integrations/splunk.markdown @Bre77 source/_integrations/spotify.markdown @frenck -source/_integrations/sql.markdown @dgomes @gjohansson-ST +source/_integrations/sql.markdown @dgomes @gjohansson-ST @dougiteixeira source/_integrations/squeezebox.markdown @rajlaud source/_integrations/srp_energy.markdown @briglx source/_integrations/starline.markdown @anonym-tsk @@ -660,7 +666,7 @@ source/_integrations/stiebel_eltron.markdown @fucm source/_integrations/stookalert.markdown @fwestenberg @frenck source/_integrations/stookwijzer.markdown @fwestenberg source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter -source/_integrations/stt.markdown @pvizeli +source/_integrations/stt.markdown @home-assistant/core @pvizeli source/_integrations/subaru.markdown @G-Two source/_integrations/suez_water.markdown @ooii source/_integrations/sun.markdown @Swamp-Ig @@ -714,7 +720,7 @@ source/_integrations/trafikverket_ferry.markdown @gjohansson-ST source/_integrations/trafikverket_train.markdown @endor-force @gjohansson-ST source/_integrations/trafikverket_weatherstation.markdown @endor-force @gjohansson-ST source/_integrations/transmission.markdown @engrbm87 @JPHutchins -source/_integrations/tts.markdown @pvizeli +source/_integrations/tts.markdown @home-assistant/core @pvizeli source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck source/_integrations/twentemilieu.markdown @frenck source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 @@ -722,7 +728,7 @@ source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ukraine_alarm.markdown @PaulAnnekov source/_integrations/unifi.markdown @Kane610 source/_integrations/unifiled.markdown @florisvdk -source/_integrations/unifiprotect.markdown @briis @AngellusMortis @bdraco +source/_integrations/unifiprotect.markdown @AngellusMortis @bdraco source/_integrations/upb.markdown @gwww source/_integrations/upc_connect.markdown @pvizeli @fabaff source/_integrations/upcloud.markdown @scop @@ -744,12 +750,12 @@ source/_integrations/vermont_castings.markdown @jeeftor source/_integrations/versasense.markdown @flamm3blemuff1n source/_integrations/version.markdown @ludeeus source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey -source/_integrations/vicare.markdown @oischinger source/_integrations/vilfo.markdown @ManneW source/_integrations/vivotek.markdown @HarlemSquirrel source/_integrations/vizio.markdown @raman325 source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare source/_integrations/voice_assistant.markdown @balloob @synesthesiam +source/_integrations/voip.markdown @balloob @synesthesiam source/_integrations/volumio.markdown @OnFreund source/_integrations/volvooncall.markdown @molobrakos source/_integrations/vulcan.markdown @Antoni-Czaplicki @@ -777,6 +783,7 @@ source/_integrations/wolflink.markdown @adamkrol93 source/_integrations/workday.markdown @fabaff @gjohansson-ST source/_integrations/worldclock.markdown @fabaff source/_integrations/ws66i.markdown @ssaenger +source/_integrations/wyoming.markdown @balloob @synesthesiam source/_integrations/xbox.markdown @hunterjm source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79 diff --git a/Gemfile b/Gemfile index 3f8a9950d41..77ab45ec269 100644 --- a/Gemfile +++ b/Gemfile @@ -20,7 +20,7 @@ group :jekyll_plugins do end gem 'sinatra', '3.0.6' -gem 'nokogiri', '1.14.3' +gem 'nokogiri', '1.15.2' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library diff --git a/Gemfile.lock b/Gemfile.lock index 7ed38f2bc86..5fe558c24ad 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -27,7 +27,7 @@ GEM ffi (1.15.5) ffi (1.15.5-x64-mingw32) forwardable-extended (2.6.0) - google-protobuf (3.22.3) + google-protobuf (3.23.2) http_parser.rb (0.8.0) i18n (1.13.0) concurrent-ruby (~> 1.0) @@ -72,8 +72,8 @@ GEM multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - nokogiri (1.14.3) - mini_portile2 (~> 2.8.0) + nokogiri (1.15.2) + mini_portile2 (~> 2.8.2) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) @@ -87,7 +87,7 @@ GEM rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.5) - rouge (4.1.0) + rouge (4.1.1) ruby2_keywords (0.0.5) safe_yaml (1.0.5) sass (3.4.25) @@ -129,7 +129,7 @@ DEPENDENCIES jekyll-paginate (= 1.1.0) jekyll-sitemap (= 1.4.0) jekyll-toc (= 0.18.0) - nokogiri (= 1.14.3) + nokogiri (= 1.15.2) rake (= 13.0.6) sass-globbing (= 1.1.5) sassc (= 2.1.0) diff --git a/_config.yml b/_config.yml index 88ae20e42a7..0556aa9adf2 100644 --- a/_config.yml +++ b/_config.yml @@ -109,9 +109,9 @@ social: # Home Assistant release details current_major_version: 2023 -current_minor_version: 4 -current_patch_version: 6 -date_released: 2023-04-21 +current_minor_version: 5 +current_patch_version: 4 +date_released: 2023-05-23 # 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 7e8131ac68a..3d74f0afad3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,10 +10,10 @@ "devDependencies": { "remark-cli": "^11.0.0", "remark-frontmatter": "^4.0.1", - "remark-lint": "^9.1.1", - "remark-lint-fenced-code-flag": "^3.1.1", - "remark-lint-no-shell-dollars": "^3.1.1", - "remark-stringify": "^10.0.2", + "remark-lint": "^9.1.2", + "remark-lint-fenced-code-flag": "^3.1.2", + "remark-lint-no-shell-dollars": "^3.1.2", + "remark-stringify": "^10.0.3", "textlint": "^13.3.2", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", @@ -3481,9 +3481,9 @@ } }, "node_modules/remark-lint": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.1.tgz", - "integrity": "sha512-zhe6twuqgkx/9KgZyNyaO0cceA4jQuJcyzMOBC+JZiAzMN6mFUmcssWZyY30ko8ut9vQDMX/pyQnolGn+Fg/Tw==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.1.2.tgz", + "integrity": "sha512-m9e/aPlh7tsvfJfj8tPxrQzD6oEdb9Foko+Ya/6OwUP9EoGMfehv1Qtv26W1DoH58Wn8rT8CD+KuprTWscMmIA==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -3496,9 +3496,9 @@ } }, "node_modules/remark-lint-fenced-code-flag": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.1.tgz", - "integrity": "sha512-FFVZmYsBccKIIEgOtgdZEpQdARtAat1LTLBydnIpyNIvcntzWwtrtlj9mtjL8ZoSRre8HtwmEnBFyOfmM/NWaA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.1.2.tgz", + "integrity": "sha512-yh4m3dlPmRsqM/BFhpqHYfrmBvFQ+D5dZZKDDYP2rf3YEoXlEVt8T8lWQueTTSxcq6yXAqL/XQL/iqqUHlLcHw==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -3514,9 +3514,9 @@ } }, "node_modules/remark-lint-no-shell-dollars": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.1.tgz", - "integrity": "sha512-Q3Ad1TaOPxbYog5+Of/quPG3Fy+dMKiHjT8KsU7NDiHG6YJOnAJ3f3w+y13CIlNIaKc/MrisgcthhrZ7NsgXfA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.2.tgz", + "integrity": "sha512-np2MDEhXHviXhbQFjnC1QYv5/fxCV1cIHfGMoJpqiW7Zcu/UGCOo5TE3XswZH4ukHZJ65c3X2A6qfLDW+ur3CQ==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", @@ -3563,9 +3563,9 @@ } }, "node_modules/remark-stringify": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", - "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.3.tgz", + "integrity": "sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==", "dev": true, "dependencies": { "@types/mdast": "^3.0.0", diff --git a/package.json b/package.json index 54136fae5cd..bdadae146ac 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,10 @@ "devDependencies": { "remark-cli": "^11.0.0", "remark-frontmatter": "^4.0.1", - "remark-lint": "^9.1.1", - "remark-lint-fenced-code-flag": "^3.1.1", - "remark-lint-no-shell-dollars": "^3.1.1", - "remark-stringify": "^10.0.2", + "remark-lint": "^9.1.2", + "remark-lint-fenced-code-flag": "^3.1.2", + "remark-lint-no-shell-dollars": "^3.1.2", + "remark-stringify": "^10.0.3", "textlint": "^13.3.2", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss index b7936e8b7e1..1364eef65ad 100644 --- a/sass/oscailte/base/_navigation.scss +++ b/sass/oscailte/base/_navigation.scss @@ -124,7 +124,7 @@ header .grid { .menu li a { @include box-sizing(border-box); display: block; - padding: 32px 12px; + padding: 27px 12px; text-decoration: none; font-weight: normal; font-size: 14px; diff --git a/source/_dashboards/entities.markdown b/source/_dashboards/entities.markdown index cf7fb6ef867..7973839a311 100644 --- a/source/_dashboards/entities.markdown +++ b/source/_dashboards/entities.markdown @@ -65,7 +65,7 @@ entity: type: string type: required: false - description: "Sets a custom card type: `custom:my-custom-card`" + description: "Sets a custom card type: `custom:my-custom-card`. It also can be used to force entities with a default special row format to render as a simple state. You can do this by setting the type: `simple-entity`. This can be used, for example, to replace a helper with an editable control with a read-only value." type: string name: required: false diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index f658f95868f..8ed53e53641 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -72,6 +72,8 @@ Conditions are an optional part of an automation that will prevent an action from firing if they are not met. link: /docs/scripts/conditions/ + aliases: + - conditions - term: Cover definition: >- @@ -282,6 +284,20 @@ other integrations. link: /docs/configuration/platform_options/ +- term: Reload + definition: >- + Applies the changes made to the Home Assistant configuration files. Changes + are normally automatically updated. However, changes made outside of the front + end will not be reflected in Home Assistant and require a reload. + To perform a manual reload, go to **Settings** > **System** > + **Restart Home Assistant** (top right) > **Quick reload**. More granular + reload options are available in *YAML configuration reloading* section + in **Developer tools** > **YAML**. + excerpt: > + Applies the changes made to Home Assistant configuration files. Changes are normally + automatically updated. However, changes made outside of the front + end will not be reflected in Home Assistant and require a reload. + - term: Scene definition: >- Scenes capture the states you want certain entities to be. For example, @@ -335,8 +351,9 @@ A service carries out one specific task, for example: turn on the light in the living room. A service has targets and data and can be called by actions, a dashboard, or via voice command. - link: /docs/scripts/service-calls/ + aliases: + - services - term: State definition: |- diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown index 7bb8172c77c..1d9c86b97c2 100644 --- a/source/_docs/automation/using_blueprints.markdown +++ b/source/_docs/automation/using_blueprints.markdown @@ -13,11 +13,11 @@ Quick links: Automations based on a blueprint only need to be configured to be used. What needs to be configured differs on each blueprint. -To create your first automation based on a blueprint, go to **{% my config %}** -> **Automations & Scenes** -> **{% my blueprints %}**. Find the blueprint that you want to use and click on "Create Automation". +To create your first automation based on a blueprint, go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. Find the blueprint that you want to use and select **Create Automation**. This will open the automation editor with the blueprint selected. Give it a name and configure the blueprint and click on the blue button "Save Automation" in the bottom right. -Done! If you want to revisit the configuration values, you can find it by going to **{% my config %}** and then **{% my automations %}**. +Done! If you want to revisit the configuration values, you can find it by going to **Settings** and then **{% my blueprints %}**. ## Importing blueprints diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index a47a614d0d7..7698fb824a7 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -561,8 +561,7 @@ include_entities: filter: description: > When filter options are provided, the entities are limited by entities - that at least match the given conditions. Can be either a object or a list of object. - Can be either a object or a list of object. + that at least match the given conditions. Can be either an object or a list of objects. type: list required: false keys: diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown index 4966d8d25a1..b02e1a6e379 100644 --- a/source/_docs/configuration.markdown +++ b/source/_docs/configuration.markdown @@ -3,17 +3,17 @@ title: "Configuration.yaml" description: "Configuring Home Assistant via text files." --- -While you can configure most of Home Assistant directly from the user interface under {% my config %}, some parts need you to edit `configuration.yaml`. This file contains integrations to be loaded along with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable specific functionality. +While you can configure most of Home Assistant directly from the user interface under {% my config %}, some parts need you to edit `configuration.yaml`. This file contains {% term integrations %} to be loaded along with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable specific functionality. If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml). ## Editing `configuration.yaml` -The easiest option to edit `configuration.yaml` is to use the {% my supervisor_addon title="Studio Code Server add-on" addon="a0d7b954_vscode" %}. This add-on runs VS Code, which offers live syntax checking and auto-fill of various Home Assistant entities (if unavailable on your system, use {% my supervisor_addon title="File Editor add-on" addon="core_configurator" %} instead). +The easiest option to edit `configuration.yaml` is to use the {% my supervisor_addon title="Studio Code Server add-on" addon="a0d7b954_vscode" %}. This add-on runs VS Code, which offers live syntax checking and auto-fill of various Home Assistant entities. See [here](/common-tasks/supervised/#installing-and-using-the-visual-studio-code-vsc-add-on) for details. If unavailable on your system, use {% my supervisor_addon title="File Editor add-on" addon="core_configurator" %} instead. Again, details can be found [here](/common-tasks/supervised/#installing-and-using-the-file-editor-add-on). -If you prefer to use a file editor on your computer, use the {% my supervisor_addon title="Samba add-on" addon="core_samba" %} to access the files as a network share. +If you prefer to use a file editor on your computer, use the {% my supervisor_addon title="Samba add-on" addon="core_samba" %} to access the files as a network share. More details can be found [here](/common-tasks/supervised/#installing-and-using-the-samba-add-on). -The path to your configuration directory can be found in the Home Assistant frontend by going to {% my system_health title="Settings > System > Repairs > System information from the top right menu" %} +The path to your configuration directory can be found in the Home Assistant {% term frontend %} by going to {% my system_health title="Settings > System > Repairs > System information from the top right menu" %} ![Show system menu option](/images/screenshots/System_information_menu.png) @@ -28,7 +28,7 @@ _If you use Home Assistant Core, you can find `configuration.yaml` in the config ## Reloading changes -Most integrations in Home Assistant that do not interact with devices or services can reload changes made to their configuration in `configuration.yaml`. To do this, go to {% my server_controls title="Developer Tools > YAML" %} and scroll down to the YAML configuration reloading section (alternatively, hit "c" anywhere in the UI and search for it). +Most integrations in Home Assistant that do not interact with {% term devices %} or {% term services %} can reload changes made to their configuration in `configuration.yaml`. To do this, go to {% my server_controls title="Developer Tools > YAML" %} and scroll down to the YAML configuration reloading section (alternatively, hit "c" anywhere in the UI and search for it). If you can't see your integration listed there, you will need to restart Home Assistant for changes to take effect. @@ -40,6 +40,6 @@ If you can't see your integration listed there, you will need to restart Home As ## Migrating to a new system -The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}. Once you have created the backup on the old system, you can download it to the system that is running the Home Assistant frontend. When setting up the new system, you may use the backup. Alternatively, you can upload it to your new system using the *Upload backup* menu option of the *Backups* menu. Then, a restore of the uploaded backup on the new system concludes the migration. +The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}. Once you have created the backup on the old system, you can download it to the system that is running the Home Assistant frontend. When setting up the new system, you may use the backup. Alternatively, you can upload it to your new system using the _Upload backup_ menu option of the _Backups_ menu. Then, a restore of the uploaded backup on the new system concludes the migration. If you run the container or core installation methods, you will need to manually make a backup of your configuration folder. Be aware that some of the files you need start with `.`, which is hidden by default from both `ls` (in SSH), in Windows Explorer, and macOS Finder. You'll need to ensure that you're viewing all files before you copy them. diff --git a/source/_examples/configuration_yaml_by_dannytsang.markdown b/source/_examples/configuration_yaml_by_dannytsang.markdown new file mode 100644 index 00000000000..84a3dcc7a4b --- /dev/null +++ b/source/_examples/configuration_yaml_by_dannytsang.markdown @@ -0,0 +1,6 @@ +--- +title: "Configuration.yaml by dannytsang" +description: "" +ha_category: Example configuration.yaml +ha_external_link: https://github.com/dannytsang/homeassistant-config +--- diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 90be6ed236d..e9cb5b4f526 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -46,6 +46,7 @@
  • {% active_link /docs/assist/apple/ Assist for Apple devices %}
  • {% active_link /docs/assist/builtin_sentences/ Built-in sentences %}
  • {% active_link /docs/assist/custom_sentences/ Custom sentences %}
  • +
  • {% active_link /docs/assist/using_voice_assistants_overview/ Voice assistants - overview %}
  • {% active_link /docs/assist/voice_remote_expose_devices/ Exposing devices to your voice assistant %}
  • {% active_link /docs/assist/voice_remote_local_assistant/ Configuring a local assistant %}
  • {% active_link /docs/assist/troubleshooting/ Troubleshooting Assist %}
  • diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index c7741c01864..f640dd7e062 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -5,6 +5,7 @@
  • {% active_link /installation/ Installation %}
  • {% active_link /getting-started/onboarding/ Onboarding %}
  • {% active_link /getting-started/concepts-terminology/ Concepts and terminology %}
  • +
  • {% active_link /getting-started/integration/ Integration %}
  • {% active_link /getting-started/automation/ Automation %}
  • {% active_link /getting-started/presence-detection/ Presence detection diff --git a/source/_includes/installation/core.md b/source/_includes/installation/core.md index a031f3f251c..fe693fe710b 100644 --- a/source/_includes/installation/core.md +++ b/source/_includes/installation/core.md @@ -33,7 +33,7 @@ sudo apt-get upgrade -y Install the dependencies: ```bash -sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata +sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff5 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev ``` The above-listed dependencies might differ or missing, depending on your system or personal use of Home Assistant. diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 88ef7c3c78b..276fc2d1fa3 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -12,15 +12,34 @@ Follow this guide if you want to get started with Home Assistant easily or if yo We will need a few things to get started with installing Home Assistant. The links below lead to Ameridroid. If you’re not in the US, you should be able to find these items in web stores in your country. -To get started we suggest the ODROID N2+, it's the most powerful ODROID. It's fast and with built-in eMMC one of the best boards to run Home Assistant. It's also the board that powers our [Home Assistant Blue](/blue/). +To get started, we suggest the ODROID N2+, the board that powers our [Home Assistant Blue](/blue/), or the ODROID M1. -- [ODROID N2+](https://ameridroid.com/products/odroid-n2-plus?ref=eeb6nfw07e) -- [Power Supply](https://ameridroid.com/products/12v-2a-power-supply-plug?ref=eeb6nfw07e) -- [CR2032 Coin Cell](https://ameridroid.com/products/rtc-bios-battery?ref=eeb6nfw07e) -- [eMMC Module](https://ameridroid.com/products/emmc-module-n2-linux-red-dot?ref=eeb6nfw07e) -- [Case](https://ameridroid.com/products/odroid-n2-case?ref=eeb6nfw07e) +If unavailable, we also recommend the [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e). -If unavailable, we also recommend the [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e) or [ODROID M1](https://ameridroid.com/products/odroid-M1?ref=eeb6nfw07e). + +Home Assistant bundles (US market): + +The bundles come with Home Assistant pre-installed. + +* [ODROID N2+: 2 GB RAM / 16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729286935?ref=eeb6nfw07e) +* [ODROID N2+: 4 GB RAM / 64 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729221399?ref=eeb6nfw07e) +* ODROID M1: 4 GB RAM / 256 GB NVMe / [16 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44929573028119?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940567831?ref=eeb6nfw07e) +* ODROID M1: 8 GB RAM / 256 GB NVMe / [16 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44929573093655?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940633367?ref=eeb6nfw07e) +* [ODROID M1: 8 GB RAM / 1 TB NVMe / 64 GB eMMC ](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940698903?ref=eeb6nfw07e) +* ODROID XU4: 2 GB RAM / [32 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729352471?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748782305559?ref=eeb6nfw07e) + +Variants without pre-installed Home Assistant: + +* ODROID N2+, [2 GB RAM](https://ameridroid.com/products/odroid-n2-plus?variant=40371828719650?ref=eeb6nfw07e) or [4 GB RAM](https://ameridroid.com/products/odroid-n2-plus?variant=40371828752418?ref=eeb6nfw07e) +* [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e) +* [ODROID M1](https://ameridroid.com/products/odroid-M1?ref=eeb6nfw07e) + +* [Power Supply](https://ameridroid.com/products/12v-2a-power-supply-plug?ref=eeb6nfw07e) +* [CR2032 Coin Cell](https://ameridroid.com/products/rtc-bios-battery?ref=eeb6nfw07e) +* [eMMC Module](https://ameridroid.com/products/emmc-module-n2-linux-red-dot?ref=eeb6nfw07e) +* [Case](https://ameridroid.com/products/odroid-n2-case?ref=eeb6nfw07e) + +* These are affiliated links. We get commissions for purchases made through links in this post.* {% endif %} @@ -146,6 +165,7 @@ _Select and copy the URL or use the "copy" button that appear when you hover it. ![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png) 1. When Balena Etcher has finished writing the image, you will see a confirmation. ![Screenshot of the Etcher software showing that the installation has completed.](/images/installation/etcher6.png) + * If you are having issues with Balena Etcher, try version [1.10](https://github.com/balena-io/etcher/releases/tag/v1.10.4). ### Start up your {{site.installation.types[page.installation_type].board}} @@ -211,8 +231,15 @@ If you are running an older Windows version or have a stricter network configura - [Hyper-V][vhdx] (.vhdx) {% endif %} +After downloading, decompress the image. If the image comes in a ZIP file, for example, unzip it. + Follow this guide if you already are running a supported virtual machine hypervisor. If you are not familiar with virtual machines, we recommend installing Home Assistant OS directly on a [Home Assistant Yellow](/installation/yellow), a [Raspberry Pi](/installation/raspberrypi), or an [ODROID](/installation/odroid). +{% if page.installation_type == 'macos' %} +- If VirtualBox is not supported on your Mac, and you have experience using virtual machines, you can try running the Home Assistant Operating system on [UTM](https://mac.getutm.app/). +{% endif %} + + ### Create the virtual machine Load the appliance image into your virtual machine hypervisor. (Note: You are free to assign as much resources as you wish to the VM, please assign enough based on your add-on needs). diff --git a/source/_includes/integrations/config_flow.md b/source/_includes/integrations/config_flow.md index 4eefb28af57..f37ac7d0da6 100644 --- a/source/_includes/integrations/config_flow.md +++ b/source/_includes/integrations/config_flow.md @@ -10,8 +10,7 @@ interface, by using this My button: {% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %} {{ name }} can be auto-discovered by Home Assistant. If an instance was found, -it will be shown as _"Discovered"_, which you can select to set it up right -away. +it will be shown as **Discovered**. You can then set it up right away. {% endif %} {% details "Manual configuration steps" %} @@ -24,17 +23,17 @@ manually: {% endif %} - Browse to your Home Assistant instance. -- In the sidebar click on _**{% my config icon %}**_. -- From the configuration menu select: _**{% my integrations %}**_. +- In the sidebar, select **{% my config icon %}**. +- From the configuration menu, select **{% my integrations %}**. {% if page.ha_integration_type == 'helper' %} -- In top of the screen click the tab: _**{% my helpers %}**_. -- In the bottom right, click on the - _**{% my config_flow_start icon domain=domain title="Create helper" %}**_ button. +- In top of the screen, select the tab: **{% my helpers %}**. +- In the bottom right, select the + **{% my config_flow_start icon domain=domain title="Create helper" %}** button. {% else %} -- In the bottom right, click on the - _**{% my config_flow_start icon domain=domain %}**_ button. +- In the bottom right, select the + **{% my config_flow_start icon domain=domain %}** button. {% endif %} -- From the list, search and select _**"{{ name }}"**_. -- Follow the instruction on screen to complete the set up. +- From the list, search and select **{{ name }}**. +- Follow the instructions on screen to complete the setup. {% enddetails %} diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index ba7f4004f82..204df6c3bf0 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -16,7 +16,7 @@ Polly is a paid service via Amazon Web Services. There is a [free tier](https:/ ## Setup -For more information, please read the [AWS General Reference regarding Security Credentials](https://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html) to get the needed details. Also, check the [boto3 Documentation](https://boto3.readthedocs.io/en/latest/guide/configuration.html#shared-credentials-file) about the profiles and the [AWS Regions and Endpoints Reference](https://docs.aws.amazon.com/general/latest/gr/rande.html#pol_region) for available regions. +For more information, please read the [AWS General Reference regarding Security Credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html) to get the needed details. Also, check the [boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#shared-credentials-file) about the profiles and the [AWS Regions and Endpoints Reference](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints) for available regions. Available voices are listed in the [Amazon Documentation](https://docs.aws.amazon.com/polly/latest/dg/voicelist.html). diff --git a/source/_integrations/androidtv_remote.markdown b/source/_integrations/androidtv_remote.markdown index 7f9f15aba2b..6b233ddcbf2 100644 --- a/source/_integrations/androidtv_remote.markdown +++ b/source/_integrations/androidtv_remote.markdown @@ -22,6 +22,10 @@ ha_integration_type: device The Android TV Remote integration allows you to control an Android TV and launching apps. For this to work the Android TV device needs to have [Android TV Remote Service](https://play.google.com/store/apps/details?id=com.google.android.tv.remote.service) which is pre-installed on most devices. +For a quick introduction on how to get started with Android TV Remote, check out this video: + + + {% include integrations/config_flow.md %} ## Media player diff --git a/source/_integrations/anova.markdown b/source/_integrations/anova.markdown index 70a377cc478..bd0e72d8425 100644 --- a/source/_integrations/anova.markdown +++ b/source/_integrations/anova.markdown @@ -10,6 +10,8 @@ ha_codeowners: - '@Lash-L' ha_domain: anova ha_integration_type: integration +ha_platforms: + - sensor --- The Anova sensor platform allows you to control [Anova](https://anovaculinary.com/pages/find-your-anova-precision-cooker) sous vides with Wi-Fi capability. diff --git a/source/_integrations/arcam_fmj.markdown b/source/_integrations/arcam_fmj.markdown index cb806b8da87..f3f9d70dcc0 100644 --- a/source/_integrations/arcam_fmj.markdown +++ b/source/_integrations/arcam_fmj.markdown @@ -15,7 +15,7 @@ ha_platforms: ha_integration_type: integration --- -The `arcam_fmj` integration allows you to control [Arcam FMJ Receivers](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant. +The `arcam_fmj` integration allows you to control [Arcam Receivers and Processors](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant. Supported devices: @@ -41,7 +41,7 @@ Supported devices: - SA 30 - SR 250 -This integration may also work with JBL and AudioControl receivers and processors as they share the same firmware as Arcam. +This integration may also work with [JBL](https://www.jblsynthesis.com/products/electronics/) and [AudioControl](https://www.audiocontrol.com/home-audio/) receivers and processors as they share the same firmware as Arcam. - SDP-55/58 @@ -49,7 +49,11 @@ This integration may also work with JBL and AudioControl receivers and processor ## Power state -Arcam FMJ receivers turn off their network port when in standby, the component will try to reconnect to the receiver every 5 seconds. This means powering on the first zone is not possible over the built-in network connection. Two options for complete power control exists: IR or Serial gateway. +Arcam receivers turn off their network port when in standby, the component will try to reconnect to the receiver every 5 seconds. This means powering on the first zone is not possible over the built-in network connection. + +Note: Some newer models offer the ability to configure the device to keep the network port active when in standby mode. This can be found under **HDMI Settings** > **HDMI Bypass & IP**. Enabling **HDMI & IP On** will allow full power control from Home Assistant. + +Two other options for complete power control exists: IR or Serial gateway. ### IR command diff --git a/source/_integrations/assist_pipeline.markdown b/source/_integrations/assist_pipeline.markdown index 2f36ec3d97e..080fda04907 100644 --- a/source/_integrations/assist_pipeline.markdown +++ b/source/_integrations/assist_pipeline.markdown @@ -11,10 +11,18 @@ ha_codeowners: ha_domain: assist_pipeline ha_integration_type: integration ha_quality_scale: internal +ha_platforms: + - select --- The Assist pipeline integration provides the foundation for the [Assist](/docs/assist/) voice assistant in Home Assistant. -There is no need to manually install this integration. The Assist pipeline integration is part of the default configuration and set up automatically if needed by other integrations. +For most users, there is no need to install this integration manually. The Assist pipeline integration is part of the default configuration and is set up automatically if needed by other integrations. +If you are not using the default integration, you need to add the following to your `configuration.yaml` file: -For more information, refer to the procedure on [configuring a pipeline](/docs/assist/voice_remote_local_assistant/). \ No newline at end of file +```yaml +# Example configuration.yaml entry +assist_pipeline: +``` + +For more information, refer to the procedure on [configuring a pipeline](/docs/assist/voice_remote_local_assistant/). diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 55975493d39..2d2f7254208 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -15,7 +15,7 @@ The `aws` integration provides a single place to interact with [Amazon Web Servi ## Setup -You have to have an AWS account to use Amazon Web Services, create one [here](https://aws.amazon.com/free/) with a 12 months free tier benefit. Please note, even in the first 12-months, you may still be billed if you use more resources than offered in the free tier. We advise you to monitor your costs in the [AWS Billing Console](https://console.aws.amazon.com/billing/) closely. You can read the [Control your AWS costs](https://aws.amazon.com/getting-started/tutorials/control-your-costs-free-tier-budgets/) guide for more information. +You have to have an AWS account to use Amazon Web Services, create one [here](https://aws.amazon.com/free/) with a 12 months free tier benefit. Please note, even in the first 12-months, you may still be billed if you use more resources than offered in the free tier. We advise you to monitor your costs in the [AWS Billing Console](https://console.aws.amazon.com/billing/) closely. You can read the [Control your AWS costs](https://aws.amazon.com/getting-started/hands-on/control-your-costs-free-tier-budgets/) guide for more information. The `lambda`, `sns`, `sqs`, and `events` services, used in the `aws` component, all provide an **Always Free** tier for all users even after the 12-month period. The general usage in Home Automation will most likely not reach the free tier limit. Please read [Lambda Pricing](https://aws.amazon.com/lambda/pricing/), [SNS Pricing](https://aws.amazon.com/sns/pricing/), [SQS Pricing](https://aws.amazon.com/sqs/pricing/), and [EventBridge Pricing](https://aws.amazon.com/eventbridge/pricing/) for more details. @@ -104,7 +104,7 @@ context: ## Lambda Notify Usage -AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke). +AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)) or a partial ARN. For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda/client/invoke.html). The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda: @@ -132,7 +132,7 @@ The context will look like this: ## SNS Notify Usage -AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish). +AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html)). For more information, please see the [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns/client/publish.html). If one exists, the SNS Subject will be set to the title. All attributes from the payload, except the message, will be sent as stringified message attributes. @@ -158,7 +158,7 @@ If you do not download them, you will lose them and will have to recreate a new ## SQS Notify Usage -AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html) and [bototcore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.send_message) +AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS documentation](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-message-identifiers.html) and [botocore documentation](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs/client/send_message.html) The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload, except message, will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue: @@ -174,7 +174,7 @@ The SQS event payload will contain everything passed in the service call payload ``` ## EventBridge Notify Usage -AWS EventBridge is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the event bus for all targets given in the notification payload. A target must be a name of an event bus accessible by the given credentials. A target is not required, and the default event bus will be used if none are specified. For more information, please see the [EventBridge documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html) and [bototcore documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events.html#EventBridge.Client.put_events) +AWS EventBridge is a notification platform and thus can be controlled by calling the `notify` service [as described here](/integrations/notify/). It will publish a message to the event bus for all targets given in the notification payload. A target must be a name of an event bus accessible by the given credentials. A target is not required, and the default event bus will be used if none are specified. For more information, please see the [EventBridge documentation](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html) and [botocore documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/events/client/put_events.html) There are two options for generating the event detail based on the service call payload. If the `detail` attribute is specified, then its value will be serialized as a JSON object and used for the event detail. If the attribute is not specified, then the value of the `message` attribute is serialized as a simple JSON object with a single key named `message` and the value of the message supplied to the service call. diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index f2355779316..2d253115cdb 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -12,15 +12,15 @@ ha_config_flow: true ha_integration_type: integration --- -The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) or to an [Azure IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin). +The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/products/event-hubs/) or to an [Azure IoT Hub](https://learn.microsoft.com/azure/iot-hub/iot-hub-devguide-messages-read-builtin). ## First time setup -This assumes you already have an Azure account. Otherwise create a Free account [here](https://azure.microsoft.com/en-us/free/). +This assumes you already have an Azure account. Otherwise create a Free account [here](https://azure.microsoft.com/free/). -You need to create an Event Hub namespace and an Event Hub in that namespace, you can follow [this guide](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-create). Alternatively you can directly deploy an ARM template with the namespace and the Event Hub [from here](https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group). +You need to create an Event Hub namespace and an Event Hub in that namespace, you can follow [this guide](https://learn.microsoft.com/azure/event-hubs/event-hubs-create). Alternatively you can directly deploy an ARM template with the namespace and the Event Hub [from here](https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.eventhub/event-hubs-create-event-hub-and-consumer-group). -You must then create a Shared Access Policy for the Event Hub with 'Send' claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Event Hubs [go here](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-authentication-and-security-model-overview). +You must then create a Shared Access Policy for the Event Hub with 'Send' claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Event Hubs [go here](https://learn.microsoft.com/azure/event-hubs/authenticate-shared-access-signature). Once you have the name of your namespace, instance, Shared Access Policy and the key for that policy, you can setup the integration itself. @@ -94,10 +94,10 @@ filter: ## Using the data in Azure -There are a number of ways to stream the data that comes into the Event Hub into storages in Azure, the easiest way is to use the built-in Capture function and this allows you to capture the data in Azure Blob Storage or Azure Data Lake store, [details here](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-capture-overview). +There are a number of ways to stream the data that comes into the Event Hub into storages in Azure, the easiest way is to use the built-in Capture function and this allows you to capture the data in Azure Blob Storage or Azure Data Lake store, [details here](https://learn.microsoft.com/azure/event-hubs/event-hubs-capture-overview). -Other storages in Azure (and outside) are possible with an [Azure Stream Analytics job](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-inputs#stream-data-from-event-hubs), for instance for [Cosmos DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-documentdb-output), [Azure SQL DB](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-sql-output-perf), [Azure Table Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-define-outputs#table-storage), custom writing to [Azure Blob Storage](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-custom-path-patterns-blob-storage-output) and [Topic and Queues](https://docs.microsoft.com/en-us/azure/stream-analytics/stream-analytics-quick-create-portal#configure-job-output). +Other storages in Azure (and outside) are possible with an [Azure Stream Analytics job](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-define-inputs#stream-data-from-event-hubs), for instance for [Cosmos DB](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-documentdb-output), [Azure SQL DB](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-sql-output-perf), [Azure Table Storage](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-define-outputs), custom writing to [Azure Blob Storage](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-custom-path-patterns-blob-storage-output) and [Topic and Queues](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-quick-create-portal#configure-job-output). -On the analytical side, Event Hub can be directly fed into [Azure Databricks Spark](https://docs.microsoft.com/en-us/azure/azure-databricks/databricks-stream-from-eventhubs?toc=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fevent-hubs%2FTOC.json&bc=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fbread%2Ftoc.json), [Azure Time Series Insights](https://docs.microsoft.com/en-us/azure/time-series-insights/time-series-insights-how-to-add-an-event-source-eventhub) and [Microsoft Power BI](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-tutorial-visualize-anomalies). +On the analytical side, Event Hub can be directly fed into [Azure Databricks Spark](https://learn.microsoft.com/azure/databricks/structured-streaming/streaming-event-hubs), [Azure Time Series Insights](https://learn.microsoft.com/azure/time-series-insights/how-to-ingest-data-event-hub) and [Microsoft Power BI](https://learn.microsoft.com/azure/stream-analytics/stream-analytics-real-time-fraud-detection). -The final way to use the data in Azure is to connect an Azure Function to the Event Hub using the [Event Hub trigger binding](https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-hubs). +The final way to use the data in Azure is to connect an Azure Function to the Event Hub using the [Event Hub trigger binding](https://learn.microsoft.com/azure/azure-functions/functions-bindings-event-hubs). diff --git a/source/_integrations/azure_service_bus.markdown b/source/_integrations/azure_service_bus.markdown index c2c7aeccc9b..25ae9f72c34 100644 --- a/source/_integrations/azure_service_bus.markdown +++ b/source/_integrations/azure_service_bus.markdown @@ -13,15 +13,15 @@ ha_platforms: ha_integration_type: integration --- -The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/en-us/services/service-bus/) from within Home Assistant. +The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/products/service-bus/) from within Home Assistant. ## First-time setup -This assumes you already have an Azure account. Otherwise, create a free account [here](https://azure.microsoft.com/en-us/free/). +This assumes you already have an Azure account. Otherwise, create a free account [here](https://azure.microsoft.com/free/). -You need to create a Service Bus namespace; you can follow [this guide](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-create-namespace-portal). +You need to create a Service Bus namespace; you can follow [this guide](https://learn.microsoft.com/azure/service-bus-messaging/service-bus-quickstart-portal#create-a-namespace-in-the-azure-portal). -You must then create a Shared Access Policy for the Service Bus with `Send` claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Service Bus [go here](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-authentication-and-authorization#shared-access-signature). Alternatively you can create a dedicated key for only one queue or topic, to restrict access to only that queue or topic. +You must then create a Shared Access Policy for the Service Bus with `Send` claims or use the RootManageAccessKey from your namespace (this key has additional claims, including managing the event hub and listening, which are not needed for this purpose), for more details on the security of Service Bus [go here](https://learn.microsoft.com/azure/service-bus-messaging/service-bus-authentication-and-authorization#shared-access-signature). Alternatively you can create a dedicated key for only one queue or topic, to restrict access to only that queue or topic. Once you have the connection string with `Send` policy, you can set up the integration itself. diff --git a/source/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index 6ff50c7b6ef..493d7f2777e 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -36,12 +36,10 @@ state over the other. This is set by the binary sensor's device class. Here are a few examples of this representation in the UI: -

    - +![List of binary sensors](/images/screenshots/binary_sensor_classes_icons.png) Example of various device classes icons in `on` and `off` state. The on image in this example has `state_color: true` specified in the Entities card configuration to receive the icon coloring. -

    The full list of supported binary sensor device classes is below *(note: these may also be modified in the [customizing section](/docs/configuration/customizing-devices)).* diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index e7a4757ea19..347cb372845 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -69,7 +69,7 @@ availability_topic: required: false type: string device: - description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/integrations/mqtt/#mqtt-discovery) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the device." + description: "Information about the device this binary sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/device_registry_index/). Only works through [MQTT discovery](/integrations/mqtt/#mqtt-discovery) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the device." required: false type: map keys: @@ -129,7 +129,7 @@ encoding: type: string default: "utf-8" entity_category: - description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. + description: The [category](https://developers.home-assistant.io/docs/core/entity/#generic-properties) of the entity. required: false type: string default: None diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index 4084721f11e..d90d65d119f 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -86,6 +86,7 @@ If you experience an unreliable Bluetooth connection, installing a short USB ext - DIGITUS DN-30210-1 (CSR8510A10) - Enbiawit BT403 (CSR8510A10) - Feasycom FSC-BP119 (CSR8510A10) 📶 +- Gold Touch E-USB-BT4 (CSR8510A10) - HIDEEZ BT0015-01 (CSR8510A10) - Maxesla CSR 4.0 (CSR8510A10) - Nuu You BT40 (CSR8510A10) diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index 39f32a113b6..b14b7d35b54 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -7,6 +7,7 @@ ha_category: - Car - Lock - Notifications + - Number - Presence Detection - Select - Sensor @@ -25,6 +26,7 @@ ha_platforms: - diagnostics - lock - notify + - number - select - sensor - switch @@ -51,6 +53,7 @@ This integration provides the following platforms: - [Buttons](/integrations/bmw_connected_drive/#buttons): Turn on air condition, sound the horn, flash the lights, update the vehicle location and update the state. - [Selects](/integrations/bmw_connected_drive/#selects): Display and control charging related settings for (PH)EVs. - [Switches](/integrations/bmw_connected_drive/#switches): Display and toggle settings on your car. +- [Numbers](/integrations/bmw_connected_drive/#numbers): Display and control numeric charging related settings for (PH)EVs. ## Configuration @@ -154,6 +157,14 @@ Using these selects will impact the state of your vehicle, use them with care! - **Climate**: Toggle vehicle climatization. It is not possible to force it to heating/cooling, the vehicle will decide on its own. If turned on, it will run for 30 minutes (as if toggled via the MyBMW app). - **Charging**: Toggle vehicle charging if plugged in. Only available on some electric vehicles. +## Numbers + +If you have a (PH)EV, you can control the charging process through Home Assistant. The number entities are created automatically depending on your vehicle's capabilities and can be changed from the UI or using the `number.set_value` service. For more information, please see the [number documentation](/integrations/number/). + +Using these selects will impact the state of your vehicle, use them with care! + +- **Target SoC**: Vehicle will charge until this battery level is reached. Not available on all EVs. + ## Disclaimer This software is not affiliated with or endorsed by BMW Group. diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 22575a0b266..7c5a57867ce 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -629,25 +629,36 @@ Learning RF Frequency, press and hold the button to learn... Press and hold a button on the remote. +You will know it succeeded when you see the following text: ```txt Found RF Frequency - 1 of 2! You can now let go of the button Press enter to continue... ``` -Press enter. - +If the attempt fails, you will see the error: ```txt -To complete learning, single press the button you want to learn +RF Frequency not found ``` +If a failure occurs, you may need to simply keep pressing the button during the `Learning RF Frequency` step, as some remotes appear to not continuously transmit when buttons are held. -Short press the button and you get the code: +After a success, do one of the following two options: -```txt -Found RF Frequency - 2 of 2! -b2002c0111211011211121112111212110112122101121112111202210211121112110221011211121112121102210112121111021112221101121211100017b10211111211121102111212210112121111121102111212210211121102210211111211121102122102111112121101121112122101121211000017c10211111211022102111212210112121111022102112202210211121102210221011211022102122102210112121101122102122101121211100017b10211111211121102210212210112122101121102210212210221021112110221011211121112121102210112121111121102122101121221000017b1121101121112111211121211110212210112111211121211121102210211121101121112111212111211011222110112111212111112121100005dc000000000000000000000000 -Base64: b'sgAsAREhEBEhESERIREhIRARISIQESERIREgIhAhESERIRAiEBEhESERISEQIhARISERECERIiEQESEhEQABexAhEREhESEQIREhIhARISERESEQIREhIhAhESEQIhAhEREhESEQISIQIRERISEQESERISIQESEhEAABfBAhEREhECIQIREhIhARISERECIQIRIgIhAhESEQIhAiEBEhECIQISIQIhARISEQESIQISIQESEhEQABexAhEREhESEQIhAhIhARISIQESEQIhAhIhAiECERIRAiEBEhESERISEQIhARISERESEQISIQESEiEAABexEhEBEhESERIREhIREQISIQESERIREhIREhECIQIREhEBEhESERISERIRARIiEQESERISERESEhEAAF3AAAAAAAAAAAAAAAAA==' -``` +1. To learn a single button press RF code, press enter and follow the prompt: + ```txt + To complete learning, single press the button you want to learn + ``` + Short press the button and you get the code: + ```txt + Found RF Frequency - 2 of 2! + b2002c0111211011211121112111212110112122101121112111202210211121112110221011211121112121102210112121111021112221101121211100017b10211111211121102111212210112121111121102111212210211121102210211111211121102122102111112121101121112122101121211000017c10211111211022102111212210112121111022102112202210211121102210221011211022102122102210112121101122102122101121211100017b10211111211121102210212210112122101121102210212210221021112110221011211121112121102210112121111121102122101121221000017b1121101121112111211121211110212210112111211121211121102210211121101121112111212111211011222110112111212111112121100005dc000000000000000000000000 + Base64: b'sgAsAREhEBEhESERIREhIRARISIQESERIREgIhAhESERIRAiEBEhESERISEQIhARISERECERIiEQESEhEQABexAhEREhESEQIREhIhARISERESEQIREhIhAhESEQIhAhEREhESEQISIQIRERISEQESERISIQESEhEAABfBAhEREhECIQIREhIhARISERECIQIRIgIhAhESEQIhAiEBEhECIQISIQIhARISEQESIQISIQESEhEQABexAhEREhESEQIhAhIhARISIQESEQIhAhIhAiECERIRAiEBEhESERISEQIhARISERESEQISIQESEiEAABexEhEBEhESERIREhIREQISIQESERIREhIREhECIQIREhEBEhESERISERIRARIiEQESERISERESEhEAAF3AAAAAAAAAAAAAAAAA==' + ``` + +2. To learn a button hold RF code, hold the button you wish to learn for 1-2 seconds then immediately press enter. + * You will see the same prompts for a short press as shown above. You should see it return a different base64 code. + * Test the base64 code to ensure it performs the button 'hold' command as expected, rather than the button 'press' command. + * This might take some trial and error to get the hold timing right before hitting enter to scan for the code. ### Conversion of codes from other projects diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index 6bbbbdbead9..ff4d272f3a5 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -180,3 +180,17 @@ data: start_date: "2022-10-01" end_date: "2022-10-02" ``` + +Home Assistant Calendars do not allow zero duration Calendar events. The following would create a one minute long event starting "now". This could be used to record an external event in a Calendar. + +{% raw %} +```yaml +service: calendar.create_event +target: + entity_id: calendar.device_automation_schedules +data: + summary: "Example" + start_date_time: "{{ now() }}" + end_date_time: "{{ now() + timedelta(minutes=1) }}" +``` +{% endraw %} diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index 39c228b59ab..3a15802a7bd 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -23,7 +23,7 @@ The setup requires an API Token created with `Zone:Zone:Read` and `Zone:DNS:Edit An easy way to create this is to start with the "Edit zone DNS" template then add `Zone:Zone:Read` to the permissions. -[Cloudflare API Tokens Guide](https://developers.cloudflare.com/api/tokens/create) +[Cloudflare API Tokens Guide](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/) {% include integrations/config_flow.md %} diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 126b9be0f15..b83337e63c0 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate the Command Line utility within Ho ha_category: - Binary Sensor - Cover - - Sensor - Notifications + - Sensor - Utility ha_release: 0.12 ha_iot_class: Local Polling diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown index 57a5cba4ee1..9e7ed821706 100644 --- a/source/_integrations/cover.markdown +++ b/source/_integrations/cover.markdown @@ -15,7 +15,7 @@ Home Assistant can give you an interface to control covers such as rollershutter ## Device Class -The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for covers: +The way these {% term sensors %} are displayed in the {% term frontend %} can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for covers: - **None**: Generic cover. This is the default and doesn't need to be set. - **awning**: Control of an awning, such as an exterior retractable window, door, or patio cover. @@ -31,7 +31,8 @@ The way these sensors are displayed in the frontend can be modified in the [cust Here are a few examples of this representation in the UI: -

    Example of various device classes icons in `open` and `closed` state. The open image in this example has `state_color: true` specified in the Entities card configuration to receive the icon coloring.

    +![List of cover examples](/images/screenshots/cover_classes_icons.png) +Example of various device classes icons in `open` and `closed` state. The open image in this example has `state_color: true` specified in the Entities card configuration to receive the icon coloring. ## Services @@ -43,6 +44,19 @@ Available services: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`, | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. +#### Automation example + +```yaml +automation: + trigger: + platform: time + at: "07:15:00" + action: + - service: cover.open_cover + target: + entity_id: cover.demo +``` + ### Service `cover.set_cover_position` Set cover position of one or multiple covers. diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 03138b4a6d5..73f8e27c307 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -10,11 +10,11 @@ ha_domain: dialogflow ha_integration_type: integration --- -The `dialogflow` integration is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. +The `dialogflow` integration is designed to be used with the [webhook](https://cloud.google.com/dialogflow/es/docs/fulfillment-webhook) integration of [Dialogflow](https://cloud.google.com/dialogflow/docs/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. To be able to receive messages from Dialogflow, your Home Assistant instance needs to be accessible from the web and you need to have the external URL [configured](/docs/configuration/basic). Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). -Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. +Dialogflow could be [integrated](https://cloud.google.com/dialogflow/es/docs/integrations) with many popular messaging, virtual assistant and IoT platforms. Using Dialogflow will be easy to create conversations like: @@ -38,7 +38,7 @@ To get the webhook URL, go to the integrations page in the configuration screen - [Login](https://console.dialogflow.com/) with your Google account. - Click on "Create Agent". -- Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196?hl=en)) and time zone. +- Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196)) and time zone. - Click "Save". - Now go to "Fulfillment" (in the left menu). - Enable Webhook and set your Dialogflow webhook URL as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417` @@ -66,7 +66,7 @@ When activated, the [`alexa` integration](/integrations/alexa/) will have Home A ## Examples -Download [this zip](https://github.com/home-assistant/home-assistant.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: +Download [this zip](https://github.com/home-assistant/home-assistant.io/blob/current/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: {% raw %} diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index 5568fd51d6c..75cf7929861 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -35,27 +35,25 @@ The name you give your application on the [Discord My Apps page](https://discord ### Setting up the bot -Bots can send messages to servers and users or attach locally available images. To add the bot to a server you are an admin on use the **Application ID** you noted above, found on the [Discord My Apps page](https://discordapp.com/developers/applications/me). +Bots can send messages to servers and users or attach locally available images. To add the bot to a server you are an admin on, use the **Application ID** you noted above, found on the [Discord My Apps page](https://discordapp.com/developers/applications/me). -

    - -

    +![Screenshot of Discord bot config](/images/screenshots/discord-bot.png) -Now use the Discord Authorization page with the **Application ID** of your [application](https://discordapp.com/developers/docs/topics/oauth2#bots). +Next, decide what permissions your bot will have within your server. Under the 'Bot' section, select the permissions you want to grant and copy the permissions integer from the bottom field. -`https://discordapp.com/api/oauth2/authorize?client_id=[APPLICATION_ID]&scope=bot&permissions=0` +![Screenshot of Discord bot permissions](/images/screenshots/discord-bot-permissions.png) -

    - -

    +Now use the Discord Authorization page with the **Application ID** of your [application](https://discordapp.com/developers/docs/topics/oauth2#bots) and the **Permissions Integer**. + +`https://discordapp.com/api/oauth2/authorize?client_id=[APPLICATION_ID]&scope=bot&permissions=[PERMISSIONS_INTEGER]` + +![Screenshot of Discord bot auth](/images/screenshots/discord-auth.png) Wait for the confirmation which should say "Authorized". Once the bot has been added to your server, get the channel ID of the channel you want the bot to operate in. In The Discord application go to **Settings** > **Advanced** > **Enable Developer Mode**. -

    - -

    +![Screenshot of Discord bot create prompt](/images/screenshots/discord-api.png) Right click channel name and copy the channel ID (**Copy ID**). diff --git a/source/_integrations/ecowitt.markdown b/source/_integrations/ecowitt.markdown index 571c21925dc..474ea3045d1 100644 --- a/source/_integrations/ecowitt.markdown +++ b/source/_integrations/ecowitt.markdown @@ -27,7 +27,7 @@ The following steps must be performed to set up this integration. For security r 2. Pick your station -> Menu Others -> DIY Upload Servers. 3. Hit next and select 'Customized' 4. Pick the protocol Ecowitt, and put in the ip/hostname of your Home Assistant server. -5. Path have to match! +5. Path has to match! If using the Ecowitt App, remove the first forward slash from the API token, as the app will prepend one. 6. Save configuration. Ecowitt doesn't support TLS/SSL, you can use the NGINX TLS Proxy Add-on to support HTTPS and HTTP at the same time. diff --git a/source/_integrations/faa_delays.markdown b/source/_integrations/faa_delays.markdown index a89ce7d1cf4..25e9e16250e 100644 --- a/source/_integrations/faa_delays.markdown +++ b/source/_integrations/faa_delays.markdown @@ -15,7 +15,7 @@ ha_integration_type: integration --- The FAA Delays integration collects and displays information about delays at US Airports based on the -[FAA's National Airspace System Status](https://www.fly.faa.gov/ois/). +[FAA's National Airspace System Status](https://nasstatus.faa.gov/). Data measured includes: diff --git a/source/_integrations/facebook.markdown b/source/_integrations/facebook.markdown index defe59dd9c4..0cd1eb90557 100644 --- a/source/_integrations/facebook.markdown +++ b/source/_integrations/facebook.markdown @@ -25,7 +25,7 @@ notify: {% configuration %} page_access_token: - description: "Access token for your Facebook page. Checkout [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform/guides/setup) for more information." + description: "Access token for your Facebook page. Checkout [Facebook Messenger Platform](https://developers.facebook.com/docs/messenger-platform/webhooks) for more information." required: true type: string name: @@ -37,8 +37,8 @@ name: ### Usage -With Facebook notify service, you can send your notifications to your Facebook messenger with help of your Facebook page. You have to create a [Facebook Page and App](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) for this service. You can control it by calling the notify service [as described here](/integrations/notify/). It will send a message on messenger to user specified by **target** on behalf of your page. See the [quick start](https://developers.facebook.com/docs/messenger-platform/guides/quick-start) guide for more information. -The phone number used in **target** should be registered with Facebook messenger. Phone number of the recipient should be in +1(212)555-2368 format. If your app is not approved by Facebook then the recipient should by either admin, developer or tester for your Facebook app. [More information](https://developers.facebook.com/docs/messenger-platform/send-api-reference#phone_number) about the phone number. +With Facebook notify service, you can send your notifications to your Facebook messenger with help of your Facebook page. You have to create a [Facebook Page and App](https://developers.facebook.com/docs/messenger-platform/getting-started/quick-start) for this service. You can control it by calling the notify service [as described here](/integrations/notify/). It will send a message on messenger to user specified by **target** on behalf of your page. See the [quick start](https://developers.facebook.com/docs/messenger-platform/getting-started/quick-start) guide for more information. +The phone number used in **target** should be registered with Facebook messenger. Phone number of the recipient should be in +1(212)555-2368 format. If your app is not approved by Facebook then the recipient should by either admin, developer or tester for your Facebook app. [More information](https://developers.facebook.com/docs/messenger-platform/reference/send-api#phone_number) about the phone number. ```yaml # Example automation notification entry @@ -102,7 +102,7 @@ if (preg_match('/get my id/', strtolower($message))) { ``` ### Rich messages -You could also send rich messing (cards, buttons, images, videos, etc). [Info](https://developers.facebook.com/docs/messenger-platform/send-api-reference) to which types of messages and how to build them. +You could also send rich messing (cards, buttons, images, videos, etc). [Info](https://developers.facebook.com/docs/messenger-platform/reference/send-api) to which types of messages and how to build them. ```yaml # Example script with a notification entry with a rich message diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown index dcc44b604d0..9052eaa6c05 100644 --- a/source/_integrations/feedreader.markdown +++ b/source/_integrations/feedreader.markdown @@ -89,6 +89,11 @@ automation: Any field under the `` tag in the feed can be used for example `trigger.event.data.content` will get the body of the feed entry. +### Video Tutorial +This video tutorial explains how to set up the feedreader and show the latest news feed item on your dashboard in Home Assistant. + + + For more advanced use cases, a custom integration registering to the `feedreader` event type could be used instead: ```python diff --git a/source/_integrations/fire_tv.markdown b/source/_integrations/fire_tv.markdown index 9243c6a73ca..0cf63f26c65 100644 --- a/source/_integrations/fire_tv.markdown +++ b/source/_integrations/fire_tv.markdown @@ -1,12 +1,12 @@ --- title: Amazon Fire TV -description: Connect and control your Amazon Fire TV devices using the Android TV integration +description: Connect and control your Amazon Fire TV devices using the Android Debug Bridge integration ha_category: - Media Player ha_domain: fire_tv ha_integration_type: virtual ha_supporting_domain: androidtv -ha_supporting_integration: Android TV +ha_supporting_integration: Android Debug Bridge ha_release: 0.7.6 ha_codeowners: - '@JeffLIrion' diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index 6da8f4551e0..2cbe8bc77e9 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -2,11 +2,11 @@ title: Freebox description: Instructions on how to integrate Freebox routers into Home Assistant. ha_category: + - Camera - Network - Presence Detection - Sensor - Switch - - Camera ha_release: 0.85 ha_iot_class: Local Polling ha_codeowners: @@ -16,10 +16,10 @@ ha_config_flow: true ha_domain: freebox ha_platforms: - button + - camera - device_tracker - sensor - switch - - camera ha_zeroconf: true ha_integration_type: integration --- diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index be5adcf12d4..524bd77e605 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -269,22 +269,25 @@ entity_config: Currently, the following domains are available to be used with Google Assistant, listed with their default types: - alarm_control_panel (arm/disarm) +- button (scene) - camera (streaming, requires compatible camera) -- group (on/off) -- input_boolean (on/off) -- input_select (option/setting/mode/value) -- scene (on) -- script (on) -- switch (on/off) +- climate (temperature setting, hvac_mode) +- cover (on/off/set position) - fan (on/off/speed percentage/preset mode) +- group (on/off) +- humidifier (humidity setting/on/off/mode) +- input_boolean (on/off) +- input_button +- input_select (option/setting/mode/value) - light (on/off/brightness/rgb color/color temp) - lock -- cover (on/off/set position) - media_player (on/off/set volume (via set volume)/source (via set input source)/control playback) -- climate (temperature setting, hvac_mode) -- vacuum (dock/start/stop/pause) +- scene (on) +- script (on) +- select - sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) -- humidifier (humidity setting/on/off/mode) +- switch (on/off) +- vacuum (dock/start/stop/pause)
    diff --git a/source/_integrations/google_mail.markdown b/source/_integrations/google_mail.markdown index ab133c30a09..54bfa9b7ac0 100644 --- a/source/_integrations/google_mail.markdown +++ b/source/_integrations/google_mail.markdown @@ -27,26 +27,26 @@ If you have already set up the correct credentials, you can do step 1 and then s {% 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.cloud.google.com/apis/library/gmail.googleapis.com?project=home-assistant-17698). +[Google Developers Console](https://console.cloud.google.com/apis/library/gmail.googleapis.com). -1. First, go to the Google Developers Console to enable [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com?project=home-assistant-17698) -2. The wizard will ask you to choose a project to manage your application. Select a project and click continue. -3. Verify that your Gmail API was enabled and click 'Go to credentials' -4. Navigate to APIs & Services (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials) +1. First, go to the Google Developers Console to enable [Gmail API](https://console.cloud.google.com/apis/library/gmail.googleapis.com) +2. The wizard will ask you to choose a project to manage your application. Select a project and select **Continue**. +3. Verify that your Gmail API was enabled and select **Go to credentials**. +4. Navigate to **APIs & Services** (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials) 5. Click on the field on the left of the screen, **OAuth Consent Screen**. 6. Select **External** and **Create**. -7. Set the *App Name* (the name of the application asking for consent) to anything you want, e.g., *Home Assistant*. -8. You then need to select a *Support email*. To do this, click the drop-down box and select your email address. -9. You finally need to complete the section: *Developer contact information*. To do this, enter your email address (the same as above is fine). -10. Scroll to the bottom and click **Save and Continue**. You don't have to fill out anything else, or it may enable additional review. -11. 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. -12. Click **OAuth consent screen** again and set *Publish Status* to **Production** otherwise your credentials will expire every 7 days. +7. Set the **App Name** (the name of the application asking for consent) to anything you want, e.g., *Home Assistant*. +8. You then need to select a **Support email**. To do this, from the dropdown menu, select your email address. +9. You finally need to complete the section: **Developer contact information**. To do this, enter your email address (the same as above is fine). +10. Scroll to the bottom and select **Save and Continue**. You don't have to fill out anything else, or it may enable additional review. +11. You will then be automatically taken to the **Scopes** page. You do not need to add any scopes here, so select **Save and Continue** to move to the **Optional info** page. You do not need to add anything to the **Optional info** page, so select **Save and Continue**, which will take you to the **Summary** page. Select **Back to Dashboard**. +12. Select **OAuth consent screen** again and set *Publish Status* to **Production**. Otherwise your credentials will expire every 7 days. 13. Make sure **Publishing status** is set to production. -14. 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. Select **Credentials** in the menu on the left-hand side of the screen, then select **Create credentials** (at the top of the screen), then select **OAuth client ID**. 15. Set the Application type to *Web application* and give this credential set a name (like "Home Assistant Credentials"). -16. Add https://my.home-assistant.io/redirect/oauth to *Authorized redirect URIs* then click **Create**. This is not a placeholder and is the URI that must be used. -17. 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 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. -18. Double-check that the *Gmail API* has been automatically enabled. To do this, select **Library** from the menu, then search for *Gmail 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. +16. Add `https://my.home-assistant.io/redirect/oauth` to **Authorized redirect URIs** then select **Create**. This is not a placeholder and is the URI that must be used. +17. 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 them shortly. Once you have noted these strings, select **OK**. If you need to find these credentials again at any point, then navigate to **APIs & Services** > **Credentials**, and you will see **Home Assistant Credentials** (or whatever you named them in the previous step) under **OAuth 2.0 Client IDs**. To view both the **Client ID** and **Client secret**, select the pencil icon. This will take you to the settings page for these credentials, and the information will be on the right-hand side of the page. +18. Double-check that the **Gmail API** has been automatically enabled. To do this, select **Library** from the menu, then search for **Gmail 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 %} @@ -60,11 +60,11 @@ The integration setup will next give you instructions to enter the [Application 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**. +3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Select **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**. +4. The page will now display **Link account to Home Assistant?**, note **Your instance URL**. If this is not correct, refer to [My Home Assistant](/integrations/my). If everything looks good, select **Link Account**. -5. You may close the window, and return back to Home Assistant where you should see a *Success!* message from Home Assistant. +5. You may close the window, and return back to Home Assistant where you should see a **Success!** message from Home Assistant. {% enddetails %} diff --git a/source/_integrations/google_sheets.markdown b/source/_integrations/google_sheets.markdown index 4e5f7da8d9e..074a7480d86 100644 --- a/source/_integrations/google_sheets.markdown +++ b/source/_integrations/google_sheets.markdown @@ -72,6 +72,11 @@ The integration setup will next give you instructions to enter the [Application If you have an error with your credentials you can delete them in the [Application Credentials](/integrations/application_credentials/) user interface. +### Video Tutorial +This video tutorial explains how to set up the Google Sheets integration and how you can add data from Home Assistant to a Google Sheet. + + + ### Service `google_sheets.append_sheet` You can use the service `google_sheets.append_sheet` to add a row of data to the Sheets document created at setup. diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index d13ccfa8fe3..7b9a5f10cb4 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -24,13 +24,7 @@ This integration is by default enabled, unless you've disabled or removed the [` history: ``` -

    - - - -

    - -#### API +## API The history information is also available through the [RESTful API](/developers/rest_api/#get-apihistory). diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index a04ef6ec84c..82d1d249d73 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -133,6 +133,11 @@ duration:
    +### Video Tutorial +This video tutorial explains how you can use history stats. It also shows how you can create a daily bar chart graph to visualize things such as occupancy, or how long the lights are on in a particular room. + + + ### Examples Here are some examples of periods you could work with, and what to write in your `configuration.yaml`: diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index f72512415f9..1d39e96b1a0 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -1,5 +1,5 @@ --- -title: HomeKit +title: HomeKit Bridge description: Instructions on how to set up the HomeKit Bridge integration in Home Assistant. featured: true ha_category: @@ -318,7 +318,7 @@ The HomeKit Accessory Protocol Specification only allows a maximum of 150 unique ### Multiple HomeKit instances -If you create a HomeKit integration via the UI (i.e., **Settings** -> **Devices & Services**), it must be configured via the UI **only**. While the UI only offers limited configuration options at the moment, any attempt to configure a HomeKit instance created in the UI via the `configuration.yaml` file will result in another instance of HomeKit running on a different port. +If you create a HomeKit integration via the UI (i.e., **Settings** > **Devices & Services**), it must be configured via the UI **only**. While the UI only offers limited configuration options at the moment, any attempt to configure a HomeKit instance created in the UI via the `configuration.yaml` file will result in another instance of HomeKit running on a different port. It is recommended to only edit a HomeKit instance in the UI that was created in the UI, and likewise, only edit a HomeKit instance in YAML that was created in YAML. @@ -328,7 +328,7 @@ When exposing a Camera, Activity based remote (a `remote` that supports activiti To quickly add all accessory mode entities in the UI: -1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings >> Devices & Services" domain=page.ha_domain %}**). +1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings > Devices & Services" domain=page.ha_domain %}**). 2. Select `media_player`, `remote`, `lock`, and `camera` domains. 3. Complete the flow as normal. 4. Additional HomeKit entries for each entity that must operate in accessory mode will be created for each entity that does not already have one. @@ -337,7 +337,7 @@ To quickly add all accessory mode entities in the UI: To add a single entity in accessory mode: -1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings >> Devices & Services" domain=page.ha_domain %}**) +1. Create a new bridge via the UI (i.e., **{% my config_flow_start title="Settings > Devices & Services" domain=page.ha_domain %}**) 2. Before pairing the bridge, access the options for the bridge. 3. Change the mode to `accessory` 4. Select the entity. @@ -424,7 +424,7 @@ The following integrations are currently supported: # Device Triggers -Devices that support triggers can be added to the bridge by accessing options for the bridge in **{% my integrations title="Settings >> Devices & Services" %}**. To use this feature, Advanced Mode must be enabled in your user profile. +Devices that support triggers can be added to the bridge by accessing options for the bridge in **{% my integrations title="Settings > Devices & Services" %}**. To use this feature, Advanced Mode must be enabled in your user profile. Bridged device triggers are represented as a single press button on stateless programmable switches. This allows a HomeKit automation to run when a device trigger fires. Because the Apple Home app currently only shows the number of the button and not the name, users may find it easier to identify the name of the button in the `Eve for HomeKit` app. @@ -549,7 +549,7 @@ Remember that the iOS device needs to be in the same local network as the Home A #### `Home Assistant Bridge` doesn't appear in the Home App (for pairing) - Docker -Set `network_mode: host` in your `docker-compose.yaml`. If you have further problems this [issue](https://github.com/home-assistant/home-assistant/issues/15692) might help. +Set `network_mode: host` in your `docker-compose.yaml`. If you have further problems this [issue](https://github.com/home-assistant/core/issues/15692) might help. You can also try to use `avahi-daemon` in reflector mode together with the option `advertise_ip`, see above. @@ -592,7 +592,7 @@ To use the HomeKit integration with multiple different Home Assistant instances #### Specific entity doesn't work -Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works, unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component:%20homekit) +Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works, unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [core/issues/new](https://github.com/home-assistant/core/issues/new) If you have any iOS 12.x devices signed into your iCloud account, media player entities with `device_class: tv` may trigger this condition. Filtering the entity or signing the iOS 12.x device out of iCloud should resolve the issue after restarting other devices. @@ -626,7 +626,7 @@ Ensure that the [`ffmpeg`](/integrations/ffmpeg) integration is configured corre #### Camera streaming is unstable or slow -If your camera supports native H.264 streams, Home Assistant can avoid converting the video stream, which is an expensive operation. To enable native H.264 streaming when configured via YAML, change the `video_codec` to `copy`. To allow native H.264 streaming when setting up HomeKit via the UI, go to **Settings** -> **Devices & Services** in the UI, click **Options** for your HomeKit Bridge, and check the box for your camera on the `Cameras that support native H.264 streams` screen. +If your camera supports native H.264 streams, Home Assistant can avoid converting the video stream, which is an expensive operation. To enable native H.264 streaming when configured via YAML, change the `video_codec` to `copy`. To allow native H.264 streaming when setting up HomeKit via the UI, go to **Settings** > **Devices & Services** in the UI, click **Options** for your HomeKit Bridge, and check the box for your camera on the `Cameras that support native H.264 streams` screen. #### Multiple camera streams diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 8dffa6a9af4..fc4668590ad 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -43,7 +43,7 @@ ha_platforms: ha_integration_type: integration --- -The [HomeKit](https://developer.apple.com/homekit/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. +The [HomeKit](https://developer.apple.com/apple-home/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. The integration will automatically detect HomeKit compatible devices that are ready to pair if the [`zeroconf`](/integrations/zeroconf/) integration is enabled. This is enabled by default on new installations via the [`default_config`](/integrations/default_config/) component. @@ -165,7 +165,7 @@ homekit: `netdisco` is not used by Home Assistant to discover HomeKit devices, so if it can't see your device the problem is more likely to be environmental than with Home Assistant itself. -Alternatively if you are less comfortable with the command line you could use Discovery for [Mac](https://apps.apple.com/us/app/discovery-dns-sd-browser/id1381004916?mt=12) or [iOS](https://apps.apple.com/us/app/discovery-dns-sd-browser/id305441017), Android [Service Browser](https://play.google.com/store/apps/details?id=com.druk.servicebrowser) or [All My Lan](https://www.microsoft.com/en-us/p/all-my-lan/9wzdncrdn19v). These are a less useful diagnostic as they aren't running from the same point on your network as Home Assistant. Even if it is visible in this tool it might still be a networking issue. They can give sometimes give clues. +Alternatively if you are less comfortable with the command line you could use Discovery for [Mac](https://apps.apple.com/app/discovery-dns-sd-browser/id1381004916) or [iOS](https://apps.apple.com/app/discovery-dns-sd-browser/id305441017), Android [Service Browser](https://play.google.com/store/apps/details?id=com.druk.servicebrowser) or [All My Lan](https://apps.microsoft.com/store/detail/all-my-lan/9WZDNCRDN19V). These are a less useful diagnostic as they aren't running from the same point on your network as Home Assistant. Even if it is visible in this tool it might still be a networking issue. They can give sometimes give clues. Where a discovery tool does give an IP, check it is what you expect (compare to DHCP leases in your router for example). Can you ping it? If not, you have a network problem. diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown index 46a19d6ab7c..14cab37919e 100644 --- a/source/_integrations/ibeacon.markdown +++ b/source/_integrations/ibeacon.markdown @@ -74,10 +74,12 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr - [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531) - [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon) - [Feasycom FSC-BP108](https://www.feasycom.com/bluetooth-5-1-waterproof-bluetooth-beacon) +- [MikroTik TG-BT5-IN](https://mikrotik.com/product/tg_bt5_in) (Additional sensors such as angle or impact are not compatible) - [NRF51822 iBeacon](https://www.aliexpress.com/item/32826502025.html) - [NRF52810 iBeacon](https://www.aliexpress.com/item/1005003211033416.html) - [Pawscout Tag](https://pawscout.com/shop/pawscout-tag/) - [SwiftFinder](https://www.amazon.com/dp/B089MD5NP7) (Requires being paired to a phone first before it starts transmitting once a minute, otherwise it stays asleep) +- [Teltonika EYE Teltonika EYE Sensor](https://teltonika-gps.com/products/accessories/sensors-beacons/eye) (Additional sensors such as accelerometer, temperature, and humidity are not compatible) ## Example automation diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index 2a4a554c08f..00582a63074 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -11,6 +11,7 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@engrbm87' + - '@jbouwh' ha_config_flow: true --- @@ -60,6 +61,10 @@ The SSL cipher list is an advanced setting. The option is available only when ad +### Troubleshooting + +Email providers may limit the number of reported emails. The number may be less than the limit (10,000 at least for Yahoo) even if you set the `IMAP search` to reduce the number of results. If you are not getting expected events and cleaning your Inbox or the configured folder is not desired, set up an email filter for the specific sender to go into a new folder. Then create a new config entry or modify the existing one with the desired folder. + ### Using events When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation. @@ -130,7 +135,6 @@ template: Date: "{{ trigger.event.data['date'] }}" Subject: "{{ trigger.event.data['subject'] }}" To: "{{ trigger.event.data['headers']['Delivered-To'][0] }}" - Subject: "{{ trigger.event.data['headers']['Subject'][0] }}" Return_Path: "{{ trigger.event.data['headers']['Return-Path'][0] }}" Received-first: "{{ trigger.event.data['headers']['Received'][0] }}" Received-last: "{{ trigger.event.data['headers']['Received'][-1] }}" diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index 3aa88a2b5d2..c5bf4bb55da 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -14,14 +14,14 @@ ha_integration_type: helper The Input Boolean helper integration allows you to define boolean values that can be controlled via the user interface and can be used within conditions of -an automation. This can for example be used to disable or enable certain -automations by using them in their conditions. +an {% term automation %}. This can for example be used to disable or enable certain +automations by using them in their {% term conditions %}. ## Configuration The preferred way to configure input boolean helpers is via the user interface, in which they are known as Toggle Helpers. To add one, go to -**{% my helpers title="Settings -> Devices & Services -> Helpers" %}** and click the add button; +**{% my helpers title="Settings > Devices & Services > Helpers" %}** and click the add button; next choose the **{% my config_flow_start domain=input_boolean title="Toggle" %}** option. To be able to add **Helpers** via the user interface you should have @@ -32,14 +32,6 @@ then you can use the UI. Input booleans can also be configured via `configuration.yaml`: -```yaml -# Example configuration.yaml entry -input_boolean: - notify_home: - name: Notify when someone arrives home - icon: mdi:car -``` - {% configuration %} input_boolean: description: Alias for the input. Multiple entries are allowed. @@ -61,9 +53,17 @@ input_boolean: type: icon {% endconfiguration %} +```yaml +# Example configuration.yaml entry +input_boolean: + notify_home: + name: Notify when someone arrives home + icon: mdi:car +``` + ## Services -This integration provides the following services to modify the state of the +This integration provides the following {% term services %} to modify the state of the `input_boolean` and a service to reload the configuration without restarting Home Assistant itself. @@ -105,7 +105,7 @@ automation: You can also set or change the status of an `input_boolean` by using `input_boolean.turn_on`, `input_boolean.turn_off` or `input_boolean.toggle` in -your automations. +your automation action. ```yaml service: input_boolean.turn_on diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index d53819d42d4..5371bc535ce 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -19,7 +19,6 @@ ha_platforms: ha_integration_type: integration ha_codeowners: - '@bdraco' - - '@Djelibeybi' ha_quality_scale: platinum ha_dhcp: true --- @@ -126,7 +125,7 @@ script: ### Hardware effects -The Flame (`lifx_effect_flame`), Morph (`lifx.effect_morph`) and Move (`lifx.effect_move`) effects are hardware-based and only work on specific LIFX devices. Flame and Morph are available on the LIFX Tile and Candle, while the Move effect requires a LIFX Z, Lightstrip, or Beam. +The Flame (`lifx.effect_flame`), Morph (`lifx.effect_morph`) and Move (`lifx.effect_move`) effects are hardware-based and only work on specific LIFX devices. Flame and Morph are available on the LIFX Tile and Candle, while the Move effect requires a LIFX Z, Lightstrip, or Beam. All hardware-based effects can be stopped and started regardless of the device's power state, but the default behavior for each service is to turn the device on when starting an effect. Set the `power_on` attribute of the service to `false` to override this default. diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index 685b3cd6d06..51de2262b40 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -20,7 +20,7 @@ To set the default color, brightness and transition values when the light is tur The `light_profiles.csv` has to have a header. The format of the header is: ```txt -profile,color_x,color_y,brightness,transition +id,x,y,brightness,transition ``` The field transition is optional and can be omitted. @@ -43,7 +43,7 @@ Most lights do not support all attributes. You can check the integration documen | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of lights. To target all lights, set `entity_id` to `all`. | `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. -| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color, brightness and a transition value (if no transition is desired, set to 0 or leave out the column entirely). If a profile is given, and a brightness is set, then the profile brightness will be overwritten. +| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/core/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color, brightness and a transition value (if no transition is desired, set to 0 or leave out the column entirely). If a profile is given, and a brightness is set, then the profile brightness will be overwritten. | `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma-separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets. @@ -116,6 +116,6 @@ Turns one or multiple lights off. ### Service `light.toggle` -Toggles the state of one or multiple lights. Takes the same arguments as [`turn_on`](#service-lightturn_on) service. +Toggles the state of one or multiple lights. Takes the same arguments as the [`light.turn_on`](#service-lightturn_on) service. -*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. If you want the lights to be treated as a single light, use [Light Groups](/integrations/light.group/) instead. +*Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. If you want the lights to be treated as a single light, use [Light Groups](/integrations/group#binary-sensor-light-and-switch-groups) instead. diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown index fe77c3ecb0e..793c3230a99 100644 --- a/source/_integrations/matter.markdown +++ b/source/_integrations/matter.markdown @@ -8,11 +8,11 @@ ha_category: - Lock - Sensor - Switch -ha_release: "2022.12" +ha_release: '2022.12' ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - - "@home-assistant/matter" + - '@home-assistant/matter' ha_domain: matter ha_platforms: - binary_sensor @@ -223,6 +223,10 @@ The Philips Hue V2 bridge supports Matter since a recent update (the beta progra - Device events for example for dimmer remotes are not supported. - Only basic control of lights is supported, no scenes, events, effects etc. +### Tasmota + +Tasmota supports Matter over IP on all ESP32 based devices (in experimental phase). Follow the [instructions](https://tasmota.github.io/docs/Matter/). + ### TP-Link Tapo P125M (power plug) - Look for the M addition in the model name, a device without the M (regular P125) is not Matter compliant. diff --git a/source/_integrations/metoffice.markdown b/source/_integrations/metoffice.markdown index cc18e01f1c2..0f175596ef3 100644 --- a/source/_integrations/metoffice.markdown +++ b/source/_integrations/metoffice.markdown @@ -16,7 +16,11 @@ ha_platforms: ha_integration_type: integration --- -The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. You can get an API key by registering for a Met Office [account](https://register.metoffice.gov.uk/WaveRegistrationClient/public/register.do?service=datapoint). As their website is not as straightforward, after registration and verifying your account you can login [here](https://register.metoffice.gov.uk/MyAccountClient/account/view) to retrieve your API key. +The `metoffice` weather platform uses the Met Office's [DataPoint API](https://www.metoffice.gov.uk/datapoint) for weather data. +## Getting started +Their website is not as straightforward so check the [getting started](https://www.metoffice.gov.uk/services/data/datapoint/getting-started). +1. Register for a [Met Office account](https://register.metoffice.gov.uk/WaveRegistrationClient/public/register.do?service=datapoint). +2. After registration and verification of your account, [login](https://register.metoffice.gov.uk/MyAccountClient/account/view) to retrieve your API key. {% include integrations/config_flow.md %} diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index 6884aa70089..a82b40f4c13 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -11,7 +11,7 @@ ha_platforms: ha_integration_type: integration --- -The `microsoft` text-to-speech platform uses the [TTS engine of the Microsoft Speech Service](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/text-to-speech) to read a text with natural sounding voices. This integration uses an API that is part of the Cognitive Services offering and is known as the Microsoft Speech API. For this integration to work, you need a free API key. You can use your [Azure subscription](https://azure.microsoft.com) to create an [Azure Speech resource](https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices). +The `microsoft` text-to-speech platform uses the [TTS engine of the Microsoft Speech Service](https://learn.microsoft.com/azure/cognitive-services/speech-service/text-to-speech) to read a text with natural sounding voices. This integration uses an API that is part of the Cognitive Services offering and is known as the Microsoft Speech API. For this integration to work, you need a free API key. You can use your [Azure subscription](https://azure.microsoft.com) to create an [Azure Speech resource](https://portal.azure.com/#create/Microsoft.CognitiveServicesSpeechServices). ## Configuration @@ -40,7 +40,7 @@ gender: type: string default: "`Female`" type: - description: "The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/language-support#text-to-speech)." + description: "The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://learn.microsoft.com/azure/cognitive-services/speech-service/language-support?tabs=tts)." required: false type: string default: "`JennyNeural`" @@ -64,7 +64,7 @@ contour: required: false type: string region: - description: "The region of your API endpoint. See [documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions)." + description: "The region of your API endpoint. See [documentation](https://learn.microsoft.com/azure/cognitive-services/speech-service/regions)." required: false type: string default: "`eastus`" @@ -72,9 +72,9 @@ region:
    -Not all Azure regions support high-quality neural voices. Use [this overview](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/regions#neural-and-standard-voices) to determine the availability of standard and neural voices by region/endpoint. +Not all Azure regions support high-quality neural voices. Use [this overview](https://learn.microsoft.com/azure/cognitive-services/speech-service/regions) to determine the availability of standard and neural voices by region/endpoint. -New users ([any newly created Azure Speech resource after August 31st, 2021](https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/text-to-speech#migrate-to-neural-voice)) can only use neural voices. Existing resources can continue using standard voices through August 31st, 2024. +New users ([any newly created Azure Speech resource after August 31st, 2021](https://learn.microsoft.com/azure/cognitive-services/speech-service/text-to-speech#more-about-neural-text-to-speech-features)) can only use neural voices. Existing resources can continue using standard voices through August 31st, 2024.
    diff --git a/source/_integrations/microsoft_face.markdown b/source/_integrations/microsoft_face.markdown index 4ea089778cf..9a8ac714e33 100644 --- a/source/_integrations/microsoft_face.markdown +++ b/source/_integrations/microsoft_face.markdown @@ -11,17 +11,17 @@ ha_integration_type: integration The `microsoft_face` integration platform is the main integration for Microsoft Azure Cognitive service -[Face](https://azure.microsoft.com/en-us/services/cognitive-services/face/). +[Face](https://azure.microsoft.com/products/cognitive-services/vision-services). All data are stored in your own private instance in the Azure cloud. ## Setup You need an API key, which is free, but requires an -[Azure registration](https://azure.microsoft.com/en-us/free/) using your +[Azure registration](https://azure.microsoft.com/free/) using your Microsoft ID. The free resource (*F0*) is limited to 20 requests per minute and 30k requests in a month. If you don't want to use the Azure cloud, you can also get an API key by registering with -[cognitive-services](https://azure.microsoft.com/en-us/try/cognitive-services/). +[cognitive-services](https://azure.microsoft.com/try/cognitive-services/). Please note that all keys on cognitive services must be recreated every 90 days. ## Configuration diff --git a/source/_integrations/microsoft_face_detect.markdown b/source/_integrations/microsoft_face_detect.markdown index fcf5baef9b9..04fa1ef6675 100644 --- a/source/_integrations/microsoft_face_detect.markdown +++ b/source/_integrations/microsoft_face_detect.markdown @@ -10,19 +10,19 @@ ha_integration_type: integration --- The `microsoft_face_detect` image processing platform allows you to use the -[Microsoft Face Identify](https://www.microsoft.com/cognitive-services/en-us/) +[Microsoft Face Identify](https://azure.microsoft.com/products/cognitive-services/) API through Home Assistant. This platform enables you to detect face on camera and fire an event with attributes. -Please refer to the [Microsoft Face component](/integrations/microsoft_face/) configuration on +Please refer to the [Microsoft Face integration](/integrations/microsoft_face/) configuration on how to setup the API key. For using the result inside an automation rule, -take a look at the [Image Processing component](/integrations/image_processing/) page. +take a look at the [Image Processing integration](/integrations/image_processing/) page.
    -The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing component](/integrations/image_processing/) page. +The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing integration](/integrations/image_processing/) page.
    diff --git a/source/_integrations/microsoft_face_identify.markdown b/source/_integrations/microsoft_face_identify.markdown index 5a561eb1ce4..66646455ca3 100644 --- a/source/_integrations/microsoft_face_identify.markdown +++ b/source/_integrations/microsoft_face_identify.markdown @@ -10,19 +10,19 @@ ha_integration_type: integration --- The `microsoft_face_identify` image processing platform lets you use -[Microsoft Face identify](https://www.microsoft.com/cognitive-services/en-us/) +[Microsoft Face identify](https://azure.microsoft.com/products/cognitive-services/) API through Home Assistant. This platform allow you do identify persons on camera and fire an event with attributes. -Please refer to the [Microsoft Face component](/integrations/microsoft_face/) configuration on +Please refer to the [Microsoft Face integration](/integrations/microsoft_face/) configuration on how to setup the API key. For using the result inside an automation rule, -take a look at the [Image Processing component](/integrations/image_processing/) page. +take a look at the [Image Processing integration](/integrations/image_processing/) page.
    -The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing component](/integrations/image_processing/) page. +The free version of the Microsoft Face identify API limits the number of requests possible per month. Therefore, it is strongly recommended that you limit the `scan_interval` when setting up an instance of this entity as detailed on the main [Image Processing integration](/integrations/image_processing/) page.
    diff --git a/source/_integrations/monessen.markdown b/source/_integrations/monessen.markdown index 56753708453..943c3424635 100644 --- a/source/_integrations/monessen.markdown +++ b/source/_integrations/monessen.markdown @@ -1,6 +1,6 @@ --- -title: "Monessen" -description: Connect and control your Monessen fireplace using the IntelliFire integration +title: Monessen +description: Connect and control your Monessen devices using the IntelliFire integration ha_category: - Binary Sensor - Climate @@ -13,9 +13,10 @@ ha_domain: monessen ha_integration_type: virtual ha_supporting_domain: intellifire ha_supporting_integration: IntelliFire -ha_release: 2022.3 +ha_release: 2022.2 ha_codeowners: - '@jeeftor' +ha_config_flow: true ha_platforms: - binary_sensor - climate @@ -25,6 +26,7 @@ ha_platforms: - sensor - switch ha_iot_class: Local Polling +ha_dhcp: true --- {% include integrations/supported_brand.md %} diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 63b430d236f..9d35704c189 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -169,7 +169,7 @@ For Ubiquiti routers/access points the "Enable multicast enhancement (IGMPv3)" s ### Bypassing UDP multicast If UDP Multicast does not work in your setup (due to network limitations), this integration can be used in local polling mode. -Go to Settings -> Integrations -> on the already set up Motion Blinds integration click "configure" --> disable the "Wait for push" option (disabled by default). +Go to Settings -> Integrations -> on the already set up Motion Blinds integration click "configure" --> disable the "Wait for multicast push on update" option (disabled by default). The default update interval of the Motion Blinds integration is every 10 minutes. When UDP multicast pushes do not work, this polling interval can be a bit high. To increase the polling interval: diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index ab89f6c9866..888c043721d 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -109,7 +109,7 @@ With a secure broker connection it is possible to use a client certificate for a #### Using WebSockets as transport -You can select `websockets` as transport method if your MQTT broker supports it. When you select `websockets` and click `NEXT` you will be able to add a WebSockets path (default = `/` and WebSockets headers (optional). The target WebSockets URI: `ws://{broker}:{port}{WebSockets path}` is built with `broker`, `port` and `ws_path` (WebSocket path) settings. +You can select `websockets` as transport method if your MQTT broker supports it. When you select `websockets` and click `NEXT`, you will be able to add a WebSockets path (default = `/`) and WebSockets headers (optional). The target WebSockets URI: `ws://{broker}:{port}{WebSockets path}` is built with `broker`, `port` and `ws_path` (WebSocket path) settings. To configure the WebSocketS headers supply a valid JSON dictionary string. E.g. `{ "Authorization": "token" , "x-header": "some header"}`. The default transport method is `tcp`. The WebSockets transport can be secured using TLS and optionally using user credentials or a client certificate.
    @@ -140,13 +140,13 @@ MQTT Birth and Last Will messages can be customized or disabled from the UI. To The `mosquitto` broker package ships commandline tools (often as `*-clients` package) to send and receive MQTT messages. For sending test messages to a broker running on `localhost` check the example below: ```bash -mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON" +mosquitto_pub -h 127.0.0.1 -t homeassistant/switch/1/on -m "Switch is ON" ``` Another way to send MQTT messages manually is to use the "MQTT" integration in the frontend. Choose "Settings" on the left menu, click "Devices & Services", and choose "Configure" in the "Mosquitto broker" tile. Enter something similar to the example below into the "topic" field under "Publish a packet" and press "PUBLISH" . ```bash - home-assistant/switch/1/power + homeassistant/switch/1/power ``` and in the Payload field @@ -155,23 +155,23 @@ and in the Payload field ON ``` -In the "Listen to a topic" field, type `#` to see everything, or "home-assistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below: +In the "Listen to a topic" field, type `#` to see everything, or "homeassistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below: ```bash -Message 23 received on home-assistant/switch/1/power/stat/POWER at 12:16 PM: +Message 23 received on homeassistant/switch/1/power/stat/POWER at 12:16 PM: ON QoS: 0 - Retain: false -Message 22 received on home-assistant/switch/1/power/stat/RESULT at 12:16 PM: +Message 22 received on homeassistant/switch/1/power/stat/RESULT at 12:16 PM: { "POWER": "ON" } QoS: 0 - Retain: false ``` -For reading all messages sent on the topic `home-assistant` to a broker running on localhost: +For reading all messages sent on the topic `homeassistant` to a broker running on localhost: ```bash -mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#" +mosquitto_sub -h 127.0.0.1 -v -t "homeassistant/#" ``` ## MQTT Discovery @@ -218,6 +218,7 @@ The discovery topic needs to follow a specific format: //[/]/config ``` +- ``: The Discovery Prefix defaults to `homeassistant`. This prefix can be [changed](#discovery-options). - ``: One of the supported MQTT components, eg. `binary_sensor`. - `` (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). - ``: The ID of the device. This is only to allow for separate topics for each device and is not used for the `entity_id`. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen). @@ -536,7 +537,7 @@ The following software has built-in support for MQTT discovery: - [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) - [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) - [Nuki Hub](https://github.com/technyon/nuki_hub) -- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support) +- [Nuki Smart Lock 3.0 Pro](https://support.nuki.io/hc/articles/12947926779409-MQTT-support), [more info](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626) - [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) @@ -784,14 +785,14 @@ You must include either `topic` or `topic_template`, but not both. If providing

    ```yaml -topic: home-assistant/light/1/command +topic: homeassistant/light/1/command payload: on ``` {% raw %} ```yaml -topic: home-assistant/light/1/state +topic: homeassistant/light/1/state payload_template: "{{ states('device_tracker.paulus') }}" ``` @@ -800,7 +801,7 @@ payload_template: "{{ states('device_tracker.paulus') }}" {% raw %} ```yaml -topic_template: "home-assistant/light/{{ states('sensor.light_active') }}/state" +topic_template: "homeassistant/light/{{ states('sensor.light_active') }}/state" payload_template: "{{ states('device_tracker.paulus') }}" ``` @@ -811,7 +812,7 @@ If you want to send JSON using the YAML editor then you need to format/escape it properly. Like: ```yaml -topic: home-assistant/light/1/state +topic: homeassistant/light/1/state payload: "{\"Status\":\"off\", \"Data\":\"something\"}"` ``` @@ -844,7 +845,7 @@ data: Example of how to use `qos` and `retain`: ```yaml -topic: home-assistant/light/1/command +topic: homeassistant/light/1/command payload: on qos: 2 retain: true diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index e571f8376bb..83af0d261c5 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -13,7 +13,7 @@ ha_platforms: ha_integration_type: integration --- -The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://products.office.com/en-us/microsoft-teams/group-chat-software). +The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://www.microsoft.com/microsoft-teams/group-chat-software). ## Setup diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown index 16d159cee2d..0d7d25fdd14 100644 --- a/source/_integrations/netatmo.markdown +++ b/source/_integrations/netatmo.markdown @@ -55,13 +55,13 @@ To edit an existing area, enter its name and follow the dialog. ## Camera -The `netatmo` camera platform is consuming the information provided by a [Netatmo Smart Indoor](https://www.netatmo.com/en-gb/security/cam-indoor), [Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) and [Netatmo Smart Video Doorbell](https://www.netatmo.com/en-gb/security/doorbell) camera. This integration allows you to view the current live stream created by the camera (exception: video doorbell). +The `netatmo` camera platform is consuming the information provided by a [Netatmo Smart Indoor](https://www.netatmo.com/smart-indoor-camera), [Outdoor](https://www.netatmo.com/smart-outdoor-camera) and [Netatmo Smart Video Doorbell](https://www.netatmo.com/smart-video-doorbell) camera. This integration allows you to view the current live stream created by the camera (exception: video doorbell). The doorbell is currently not supported with the Home Assistant Cloud link mode (configured in the integration). Please use a [Netatmo dev account](#development--testing-with-your-own-client-id). Note that: if you have already created the Netatmo integration, you must remove it and configure it with the Netatmo dev account as explained in the previous link. Then you will see a Smart Doorbell device with a camera sensor. ## Climate -The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat), [Smart Modulating Thermostat](https://www.netatmo.com/en-gb/energy/modulating-thermostat) and [Netatmo Smart Radiator Valve](https://www.netatmo.com/en-gb/energy/additional-valve). This integration allows you to view the current temperature and control the setpoint. +The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat), [Smart Modulating Thermostat](https://www.netatmo.com/smart-modulating-thermostat) and [Netatmo Smart Radiator Valve](https://www.netatmo.com/additional-smart-radiator-valve). This integration allows you to view the current temperature and control the setpoint. ## Cover @@ -69,13 +69,13 @@ The `netatmo` cover platform provides support for Bubendorff shutters. ## Light -The `netatmo` light platform is consuming information provided by a [Netatmo Smart Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) camera and requires an active webhook. This integration allows you to turn on/off the flood lights. +The `netatmo` light platform is consuming information provided by a [Netatmo Smart Outdoor](https://www.netatmo.com/smart-outdoor-camera) camera and requires an active webhook. This integration allows you to turn on/off the flood lights. It further provides support for Legrand/BTicino dimmers. ## Sensor -The `netatmo` sensor platform is consuming the information provided by a [Netatmo Smart Home Weather Station](https://www.netatmo.com/en-us/weather/weatherstation) a -[Netatmo Smart Indoor Air Quality Monitor](https://www.netatmo.com/en-us/aircare/homecoach) device or [Netatmo Public Weather Stations](https://weathermap.netatmo.com/). +The `netatmo` sensor platform is consuming the information provided by a [Netatmo Smart Home Weather Station](https://www.netatmo.com/smart-weather-station) a +[Netatmo Smart Indoor Air Quality Monitor](https://www.netatmo.com/smart-indoor-air-quality-monitor) device or [Netatmo Public Weather Stations](https://weathermap.netatmo.com/). ## Switch @@ -115,8 +115,8 @@ Service to manually register and unregister the webhook. ## Webhook Events -The Netatmo backend sends instant events to Home Assistant by using webhooks which unlocks improved responsiveness of most devices with the exception of [Netatmo Smart Home Weather Station](https://www.netatmo.com/en-us/weather/weatherstation), -[Netatmo Smart Indoor Air Quality Monitor](https://www.netatmo.com/en-us/aircare/homecoach) or [Netatmo Public Weather Stations](https://weathermap.netatmo.com/). +The Netatmo backend sends instant events to Home Assistant by using webhooks which unlocks improved responsiveness of most devices with the exception of [Netatmo Smart Home Weather Station](https://www.netatmo.com/smart-weather-station), +[Netatmo Smart Indoor Air Quality Monitor](https://www.netatmo.com/smart-indoor-air-quality-monitor) or [Netatmo Public Weather Stations](https://weathermap.netatmo.com/).
    @@ -125,7 +125,7 @@ It is therefore recommended to use [an individual development account](#developm
    -To be able to receive events from [Netatmo](https://www.netatmo.com/en-gb/), your Home Assistant instance needs to be accessible from the web over port `443`. To achieve this you can either use your Nabu Casa account or for example Duck DNS ([Home Assistant instructions](/addons/duckdns/)). You also need to have the external URL configured in the Home Assistant [configuration](/docs/configuration/basic). +To be able to receive events from [Netatmo](https://www.netatmo.com/), your Home Assistant instance needs to be accessible from the web over port `443`. To achieve this you can either use your Nabu Casa account or for example Duck DNS ([Home Assistant instructions](/addons/duckdns/)). You also need to have the external URL configured in the Home Assistant [configuration](/docs/configuration/basic). Events coming in from Netatmo will be available as an event in Home Assistant and are fired as `netatmo_event`, along with their data. You can use these events to trigger automations. @@ -201,7 +201,7 @@ Example: ```yaml # Example automation -- alias: "door or window open or movement" +- alias: "Door or window open or movement" description: "Notifies which door or window is open or was moved" trigger: - event_type: netatmo_event diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index 8116a4a6530..57a8fb44675 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -109,3 +109,7 @@ Displays the current link rate of the device indicating the maximum possible dat ### Link type Displays the current link type: wired, 2.4GHz or 5GHz. + +## Troubleshooting + +- If you get a "Connection or login error" when trying to setup the NETGEAR integration, please try using the IP address of the router (often "192.168.1.1") as host instead of the default "routerlogin.net". diff --git a/source/_integrations/network.markdown b/source/_integrations/network.markdown index 2fd4134e2e1..5b072d06246 100644 --- a/source/_integrations/network.markdown +++ b/source/_integrations/network.markdown @@ -12,7 +12,7 @@ ha_codeowners: ha_integration_type: system --- -This integration provides network configuration for integrations such as [Zeroconf](/integrations/zeroconf/). It is managed by going to **{% my network title="Settings >> System >> Network" %}** and is only available to users that have "Advanced Mode" enabled on their {% my profile title="user profile" %}. +This integration provides network configuration for integrations such as [Zeroconf](/integrations/zeroconf/). It is managed by going to **{% my network title="Settings > System > Network" %}** and is only available to users that have "Advanced Mode" enabled on their {% my profile title="user profile" %}. **{% my general badge %}** diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index e9accbf5268..a7a714e3e37 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -68,3 +68,8 @@ Events generated by Nuki are sent as events of type `nuki_event` with the follow | -------------------- | ------------------------------------------ | | `type` | The type of the event. Values: `ring` | `entity_id` | The ID of the entity generating the event. + +## MQTT support + +The Nuki Smart Lock 3.0 Pro also [supports MQTT](https://support.nuki.io/hc/en-us/articles/12947926779409-MQTT-support) and can directly integrate with Home Assistant through [MQTT discovery](/integrations/mqtt/#mqtt-discovery). +Specific information can be found [here](https://developer.nuki.io/t/mqtt-api-specification-v1-3/17626). diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index 847d057df01..fbf9b3d6460 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -10,6 +10,7 @@ ha_config_flow: true ha_codeowners: - '@bdraco' - '@ollo69' + - '@pestevez' ha_zeroconf: true ha_platforms: - diagnostics @@ -17,7 +18,7 @@ ha_platforms: ha_integration_type: device --- -The Network UPS Tools (NUT) integration allows you to monitor and manage a UPS (battery backup) using a [NUT] https://networkupstools.org/) server. It lets you view their status, receives notifications about important events, and execute commands as device actions. +The Network UPS Tools (NUT) integration allows you to monitor and manage a UPS (battery backup) using a [NUT](https://networkupstools.org/) server. It lets you view their status, receives notifications about important events, and execute commands as device actions. {% include integrations/config_flow.md %} diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index 543425f8952..0993e07d25f 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -91,6 +91,8 @@ If your source is not listed above, and you want to figure out how to format tha onkyo --host 192.168.0.100 source=query ``` +If this returns multiple, comma-separated values, use the first one. For example, if `dvd,bd,dvd` is returned, use `dvd`. + To find your receivers max volume use the onkyo-eiscp Python module set the receiver to its maximum volume (don't do this whilst playing something!) and run: diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index 9ec74feab1a..a584fcd51ee 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -17,6 +17,7 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_dhcp: true --- The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/) Profile S conformant device in Home Assistant. This requires the [`ffmpeg` integration](/integrations/ffmpeg/) to be already configured. @@ -44,6 +45,15 @@ Most of the ONVIF devices support more than one audio/video profile. Each profil | Use wallclock as timestamps | ([Advanced Mode](/blog/2019/07/17/release-96/#advanced-mode) only) Rewrite the camera timestamps. This may help with playback or crashing issues from Wi-Fi cameras or cameras of certain brands (e.g., EZVIZ). | | Enable Webhooks | If the device supports notifications via a Webhook, the integration will attempt to set up a Webhook. Disable this option to force falling back to trying PullPoint if the device supports it. | +#### Snapshots + +Some cameras will not produce usable snapshots with larger stream sizes. + +By default, the integration will only enable the camera entity for the first H264 profile. If you are unable to get a working snapshot: + +- If additional camera entities are available for other profiles, try enabling those entities. +- Set the `Extra FFmpeg arguments` to `-pred 1 -ss 00:00:05 -frames:v 1` to cause the snapshot to be taken 5 seconds into the stream. + ### Supported Sensors This integration uses the ONVIF pullpoint subscription API to process events into sensors that will be automatically added to Home Assistant. Below is a list of currently supported event topics along with the entities they create. diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown index 995d8e85a10..da7769e5508 100644 --- a/source/_integrations/openai_conversation.markdown +++ b/source/_integrations/openai_conversation.markdown @@ -50,4 +50,4 @@ Top P: ### Talking to Super Mario over the phone -You can use an OpenAI Conversation integration to [talk to Super Mario over a classic landline phone](/projects/worlds-most-private-voice-assistant/). \ No newline at end of file +You can use an OpenAI Conversation integration to [talk to Super Mario over a classic landline phone](/projects/worlds-most-private-voice-assistant/). diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index 24837fc29f1..19c104b0b8f 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -28,8 +28,7 @@ trained medical professional. ## Generating an API Key -To generate an API key, -[simply log in to the OpenUV website](https://www.openuv.io/auth/google). +To generate an API key, simply log in at [the OpenUV website](https://www.openuv.io/). {% include integrations/config_flow.md %} diff --git a/source/_integrations/peco.markdown b/source/_integrations/peco.markdown index d27eb1f0274..8cc125e4977 100644 --- a/source/_integrations/peco.markdown +++ b/source/_integrations/peco.markdown @@ -22,6 +22,10 @@ To learn more about PECO, visit [**their about page**](https://www.peco.com/Abou This integration is only for PECO customers. To see if your county is supported, take a look at [**their outage map**](https://www.peco.com/Outages/CheckOutageStatus/Pages/OutageMap.aspx). + + +PECO Is a registered trademark of Exelon Business Services Co., LLC +
    {% include integrations/config_flow.md %} @@ -37,4 +41,4 @@ This integration will create 5 entities. - A sensor that shows the total amount of customers with no power. - A sensor that shows the total amount of customers served in the county. - A sensor that shows the percentage of customers with no power. -- A sensor that shows the alert that appears when you open the online outage map. +- A sensor that shows the alert that appears when you open the online outage map. \ No newline at end of file diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index 610734a847f..ec0ce71eeee 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -78,7 +78,7 @@ The message attribute supports the [Markdown formatting syntax](https://daringfi | Headline 2 | `## Headline` | | Newline | `\n` | | Bold | `**My bold text**` | -| Cursive | `*My cursive text*` | +| Italic | `*My italic text*` | | Link | `[Link](https://home-assistant.io/)` | | Image | `![image](/local/my_image.jpg)` | diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index 7314ab3eeda..67c2e9c0b6a 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -15,6 +15,7 @@ ha_codeowners: ha_domain: pi_hole ha_platforms: - binary_sensor + - diagnostics - sensor - switch - update diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 79037cd677a..87fa8870d7d 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -13,7 +13,6 @@ ha_release: 0.98 ha_codeowners: - '@CoMPaTech' - '@bouwew' - - '@brefra' - '@frenck' ha_config_flow: true ha_domain: plugwise diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown index 6824c5d428a..37b9c0a87ab 100644 --- a/source/_integrations/proximity.markdown +++ b/source/_integrations/proximity.markdown @@ -52,6 +52,11 @@ proximity: unit_of_measurement: mi ``` +### Video Tutorial +This video tutorial explains how to set up geofencing in Home Assistant using the proximity integration. + + + {% configuration %} zone: description: The zone to which this integration is measuring the distance to. Default is the home zone. diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index c299fd4a560..fb6520ffcde 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -67,7 +67,7 @@ pull_mode: default: "`UP`" {% endconfiguration %} -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#J8_header_and_general_purpose_input-output_(GPIO)) about the Raspberry Pi. ## Switch @@ -106,7 +106,7 @@ invert_logic: type: boolean {% endconfiguration %} -For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi. +For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#J8_header_and_general_purpose_input-output_(GPIO)) about the Raspberry Pi.
    Note that a pin managed by Home Assistant is expected to be exclusive to Home Assistant. @@ -126,4 +126,4 @@ switch: ### Troubleshooting -If you receive an error such as `gpiozero.exc.BadPinFactory: Unable to load any default pin factory!` try changing the pinfactory from `pigpio` to `mock`, this addresses a [known issue](https://www.raspberrypi.org/forums/viewtopic.php?p=1417922). +If you receive an error such as `gpiozero.exc.BadPinFactory: Unable to load any default pin factory!` try changing the pinfactory from `pigpio` to `mock`, this addresses a [known issue](https://forums.raspberrypi.com/viewtopic.php?p=1417922). diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index 1f11630a185..b57d9cb7e5b 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -182,6 +182,7 @@ The following models have been tested and confirmed to work: - RLC-522 - RLC-810A - RLC-811A +- RLC-81PA - RLC-820A - RLC-822A - RLC-823A @@ -190,6 +191,7 @@ The following models have been tested and confirmed to work: - RLN8-410 NVR - RLN16-410 NVR - RLN36 NVR +- Reolink Duo 2 WiFi - Reolink Duo Floodlight PoE - Reolink TrackMix PoE - Reolink Video Doorbell (PoE and Wi-Fi) @@ -207,3 +209,4 @@ However, these cameras can work with this integration through an NVR in which th - Older firmware versions do not expose the necessary information the integration needs to function. Ensure the camera is updated to the [latest firmware](https://reolink.com/download-center/) prior to setting up the integration. Note that Reolink auto update and check for update functions in the app/windows/web client often do not show the latest available firmware version. Therefore check the version in the [Reolink download center](https://reolink.com/download-center/) online. - Ensure at least one of the HTTP/HTTPS ports is enabled in the [windows](https://reolink.com/software-and-manual/)/web client under `Settings`->`Network`->`Advanced`->`Port Settings`, see [additional instructions](https://support.reolink.com/hc/en-us/articles/900004435763-How-to-Set-up-Reolink-Ports-Settings-via-Reolink-Client-New-Client-) on the Reolink site. - On some camera models, the RTMP port needs to be enabled in order for the HTTP(S) port to function properly. Make sure this port is also enabled if you get a `Cannot connect to host` error while one of the HTTP/HTTPS ports is already enabled. +- Setting a static IP address for Reolink cameras/NVRs in your router is advisable to prevent (temporal) connectivity issues when the IP address changes. diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown index 9b2711d8747..e025d641cff 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -13,6 +13,8 @@ ha_platforms: - sensor - switch ha_integration_type: integration +ha_codeowners: + - '@epenet' --- The `rest` sensor platform is consuming a given endpoint which is exposed by a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) of a device, an application, or a web service. The sensor has support for GET and POST requests. diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index e2cb946bfec..95a96048e10 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -57,7 +57,7 @@ logger: ## Supported protocols -Not all protocols as advertised are enabled on the initial setup of your transceiver. Enabling all protocols is not recommended either. +Not all protocols as advertised are enabled on the initial setup of your transceiver. Enabling all protocols is not recommended either. The RFXcom transceiver loses significant sensitivity when more protocols are enabled. **Warning**: enabling the "BlindsT0" protocol blocks receiving any other protocol. If your 433.92 product is not showing in the logs, you may need to enable additional protocols. You can do this by configuring the device itself using [RFXmgmr](http://www.rfxcom.com/epages/78165469.sf/en_GB/?ViewObjectPath=%2FShops%2F78165469%2FCategories%2FDownloads) to enable the required protocol, or you can configure the device in Home Assistant by configuring the [Protocols](#protocols). diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index 56e68412592..3daad8e1d76 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -2,9 +2,9 @@ title: Roborock description: Instructions on how to integrate Roborock vacuums into Home Assistant ha_category: - - Vacuum - Select - Sensor + - Vacuum ha_iot_class: Local Polling ha_release: 2023.5 ha_config_flow: true @@ -13,14 +13,35 @@ ha_codeowners: - '@Lash-L' ha_domain: roborock ha_platforms: + - select - vacuum ha_integration_type: integration --- -The Roborock integration allows you to control your [Roborock](https://us.roborock.com/pages/robot-vacuum-cleaner) vacuum while continuing to use the Roborock app. +The Roborock integration allows you to control your [Roborock](https://us.roborock.com/pages/robot-vacuum-cleaner) vacuum while using the Roborock app. -In contrast to [Xiaomi Miio](/integrations/xiaomi_miio/) integration, this integration provides more complete support but requires cloud access to set up and device configuration using the Roborock app. +This integration requires a cloud connection to set up the device, but it communicates with the device entirely over your home network. Once you log in with your Roborock account, the integration will automatically discover your Roborock devices and get the needed information to communicate locally with them. Please ensure your Home Assistant instance can communicate with the local IP of your device. We recommend setting a static IP for your Roborock Vacuum to help prevent future issues. {% include integrations/config_flow.md %} + +## FAQ + +### Can I use the Mi home app with this integration? +No. This integration requires information from your Roborock app to set up and uses Roborock's protocols to communicate with your device. You must have your vacuum synced to the Roborock app. + +### Can I block internet access for this device? +As of right now - no. When the vacuum is disconnected from the internet, it will attempt to disconnect itself from Wi-Fi and reconnect itself until it can reach the Roborock servers. We are looking for the best way to handle this and see what can be blocked while still allowing the vacuum to function. + +### What devices are supported? +If you can add your device to the Roborock app - it is supported. However, some older vacuums like the Roborock S5 must be connected using the Mi Home app and can be set up in Home Assistant through the [Xiaomi Miio](/integrations/xiaomi_miio/) integration. + +### What features will you support? +We are working on adding a lot of features to the core integration. We have reverse-engineered over 100 commands. The following are some of the functionalities we plan to add to Home Assistant Core. We ask that you are patient with us as we add them. +- Selective room cleaning +- Dock controls +- Manual vacuum remote control +- Status information such as errors, clean time, consumables, etc. +- Viewing the camera +- Viewing the map diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 0dd2331ad6d..4104459e36e 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -147,6 +147,11 @@ You need to pass a `scene_id` in lowercase and with underscores instead of space If the scene was previously created by `scene.create`, it will be overwritten. If the scene was created by YAML, nothing happens but a warning in your log files. +### Video Tutorial +This video tutorial explains how scenes work and how you can utilize scenes on the fly. + + + ```yaml # Example automation using entities automation: @@ -205,3 +210,4 @@ The following example turns off some entities as soon as a window opens. The sta target: entity_id: scene.before ``` + diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index 6c296821566..1b4a21e5935 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -61,7 +61,7 @@ availability_topic: required: false type: string device: - description: "Information about the device this sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/integrations/mqtt/#mqtt-discovery) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the device." + description: "Information about the device this sensor is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/device_registry_index/). Only works through [MQTT discovery](/integrations/mqtt/#mqtt-discovery) and when [`unique_id`](#unique_id) is set. At least one of identifiers or connections must be present to identify the device." required: false type: map keys: diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown index fb6f75bc0ae..7734a0b6736 100644 --- a/source/_integrations/sensor.rest.markdown +++ b/source/_integrations/sensor.rest.markdown @@ -290,22 +290,17 @@ sensor: {% raw %} ```yaml -sensor: - - platform: rest - name: JSON time - json_attributes: - - date - - milliseconds_since_epoch - resource: http://date.jsontest.com/ - value_template: "{{ value_json.time }}" - - platform: template - sensors: - date: - friendly_name: "Date" - value_template: "{{ state_attr('sensor.json_time', 'date') }}" - milliseconds: - friendly_name: "milliseconds" - value_template: "{{ state_attr('sensor.json_time', 'milliseconds_since_epoch') }}" +rest: + - resource: http://date.jsontest.com/ + sensor: + - name: "Time" + value_template: "{{ value_json.time }}" + + - name: "Date" + value_template: "{{ value_json.date }}" + + - name: "Milliseconds" + value_template: "{{ value_json.milliseconds_since_epoch }}" ``` {% endraw %} @@ -335,40 +330,29 @@ This sample fetches a weather report from [OpenWeatherMap](https://openweatherma {% raw %} ```yaml -sensor: - - platform: rest - name: OWM_report - json_attributes: - - main - - weather - value_template: "{{ value_json['weather'][0]['description'].title() }}" - resource: https://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY - - platform: template - sensors: - owm_weather: - value_template: "{{ state_attr('sensor.owm_report', 'weather')[0]['description'].title() }}" - entity_picture_template: "{{ 'https://openweathermap.org/img/w/' + state_attr('sensor.owm_report', 'weather')[0]['icon'].lower() + '.png' }}" - entity_id: sensor.owm_report - owm_temp: - friendly_name: "Outside temp" - value_template: "{{ state_attr('sensor.owm_report', 'main')['temp'] - 273.15 }}" +rest: + - resource: https://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY + sensor: + - name: "Report" + value_template: "{{ value_json['weather'][0]['description'].title() }}" + picture: "{{ 'https://openweathermap.org/img/w/' + value_json['weather'][0]['icon'].lower() + '.png' }}" + + - name: "Outside temp" + value_template: "{{ value_json['main']['temp'] - 273.15 }}" unit_of_measurement: "°C" - entity_id: sensor.owm_report - owm_pressure: - friendly_name: "Outside pressure" - value_template: "{{ state_attr('sensor.owm_report', 'main')['pressure'] }}" + + - name: "Outside pressure" + value_template: "{{ value_json['main']['pressure'] }}" unit_of_measurement: "hP" - entity_id: sensor.owm_report - owm_humidity: - friendly_name: "Outside humidity" - value_template: "{{ state_attr('sensor.owm_report', 'main')['humidity'] }}" + + - name: "Outside humidity" + value_template: "{{ value_json['main']['humidity'] }}" unit_of_measurement: "%" - entity_id: sensor.owm_report ``` {% endraw %} -This configuration shows how to extract multiple values from a dictionary with `json_attributes` and `template`. This avoids flooding the REST service by only requesting the result once, then creating multiple attributes from that single result using templates. By default, the sensor state would be set to the full JSON — here, that would exceed the 255-character maximum allowed length for the state, so we override that default by using `value_template` to set a static value of `OK`. +This configuration shows how to extract multiple values from a dictionary. This method avoids flooding the REST service because the result is only requested once. From that single request, multiple sensors can be created by using template sensors. {% raw %} @@ -400,73 +384,52 @@ This configuration shows how to extract multiple values from a dictionary with ` {% raw %} ```yaml -sensor: - - platform: rest - name: room_sensors +rest: resource: http:// - json_attributes: - - bedroom1 - - bedroom2 - - bedroom3 - value_template: "OK" - - platform: template - sensors: - bedroom1_temperature: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['temperature'] }}" + sensor: + - name: "Bedroom1 Temperature" + value_template: "{{ value_json['bedroom1']['temperature'] }}" device_class: temperature unit_of_measurement: "°C" - bedroom1_humidity: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['humidity'] }}" + - name: "Bedroom1 Humidity" + value_template: "{{ value_json['bedroom1']['humidity'] }}" device_class: humidity unit_of_measurement: "%" - bedroom1_battery: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['battery'] }}" + - name: "Bedroom1 Battery" + value_template: "{{ value_json['bedroom1']['battery'] }}" device_class: battery unit_of_measurement: "V" - bedroom2_temperature: - value_template: "{{ state_attr('sensor.room_sensors', 'bedroom2')['temperature'] }}" + - name: "Bedroom2 Temperature" + value_template: "{{ value_json['bedroom2']['temperature'] }}" device_class: temperature unit_of_measurement: "°C" ``` {% endraw %} -The below example allows shows how to extract multiple values from a dictionary with `json_attributes` and `json_attributes_path` from the XML of a Steamist Steambath Wi-Fi interface and use them to create a switch and multiple sensors without having to poll the endpoint numerous times. - -In the below example `json_attributes_path` is set to `$.response` which is the location of the `usr0`, `pot0`, ... attributes used for `json_attributes`. +The example below shows how to extract multiple values from a dictionary from the XML file of a Steamist Steambath Wi-Fi interface. The values are used to create a switch and multiple sensors without having to poll the endpoint numerous times. {% raw %} ```yaml -sensor: -# Steam Controller - - platform: rest - name: Steam System Data - resource: http://192.168.1.105/status.xml - json_attributes_path: "$.response" +rest: + # Steam Controller + - resource: http://192.168.1.105/status.xml scan_interval: 15 - value_template: "OK" - json_attributes: - - "usr0" - - "pot0" - - "temp0" - - "time0" - - platform: template - sensors: - steam_temp: - friendly_name: Steam Temp - value_template: "{{ state_attr('sensor.steam_system_data', 'temp0') | regex_findall_index('([0-9]+)XF') }}" + + sensor: + - name: Steam Temp + value_template: "{{ json_value['response']['temp0'] | regex_findall_index('([0-9]+)XF') }}" unit_of_measurement: "°F" + steam_time_remaining: - friendly_name: "Steam Time Remaining" - value_template: "{{ state_attr('sensor.steam_system_data', 'time0') }}" + - name: "Steam Time Remaining" + value_template: "{{ json_value['response']['time0'] }}" unit_of_measurement: "minutes" -switch: - - platform: template - switches: - steam: - value_template: "{{ state_attr('sensor.steam_system_data', 'usr0') | int >= 1 }}" + switch: + - name: "Steam" + value_template: "{{ json_value['response']['usr0'] | int >= 1 }}" turn_on: - service: rest_command.set_steam_led data: @@ -489,7 +452,6 @@ switch: - service: homeassistant.update_entity target: entity_id: sensor.steam_system_data - friendly_name: Steam rest_command: set_steam_led: diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown index b780dfcc72a..899b32b4d1a 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -18,39 +18,113 @@ ha_integration_type: service The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). +![](/images/integrations/slack/slack-message.png) + + ## Setup -### Bot posting as you +### Slack App 1. Create a [new app](https://api.slack.com/apps) under your Slack.com account. 2. Click the `OAuth & Permissions` link in the sidebar, under the Features heading. -3. In the Scopes section, add the `chat:write` and `dnd:read` scopes and select `Send messages as user`. Many errors can occur if these options are not set correctly. + +Find `Features/OAuth and Permissions/Scopes/Bot Token Scopes` + +3. Add the `chat:write` and `dnd:read` scopes + - To modify your Slack bot's username and icon, additionally add the `chat:write.customize` OAuth scope + +![](/images/integrations/slack/bot-token-scopes.png) + 4. Scroll up to `OAuth Tokens & Redirect URLs` and click `Install to Workspace`. -5. Copy your `OAuth Access Token` and put that key into the config flow. -
    +In `Features/OAuth and Permissions/OAuth Tokens for Your Workspace`: -There is an app credential Verification Token on the Basic Settings of your app. This is **not** the API key you want. +5. Copy the Bot User OAuth Token. Use this as 'API Key' when setting up in Home Assistant -
    +![](/images/integrations/slack/oauth-tokens-for-workspace.png) -### Bot posting as its own user -It is also possible to use Slack bots as users. Just create a new bot at https://[YOUR_TEAM].slack.com/apps/build/custom-integration and use the provided token for that. You can add an icon from the frontend for Home Assistant and give the bot a meaningful name. +Ensure that the bot user is added to the channel in which you want it to post. +In Slack, tag the bot user in a message, then add it to the channel. -Don't forget to invite the bot to the room where you want to get the notifications. + +#### Sample App Manifest + +You can easily create a bot with all the permissions needed from an App Manifest. + +```yaml +display_information: + name: Home Notifications +features: + bot_user: + display_name: Home Notifications + always_online: false +oauth_config: + scopes: + bot: + - incoming-webhook + - chat:write + - dnd:read + - chat:write.customize +settings: + org_deploy_enabled: false + socket_mode_enabled: false + token_rotation_enabled: false +``` + +### Integration Setup + +When installing the integration, use these settings: + +API Key: `xoxb-abc-def` +- Bot User OAuth Token (from step 5 above) + +Default Channel: `#channel` +- Channel name that bot will post to if a channel is not supplied when called + +Icon/Username: +- optional - if you want to have a custom name/icon for the bot user not already set in Slack + +![](/images/integrations/slack/slack-integration-setup.png) + +## Usage + +### Sending Messages + +One of the easiest ways to send a message, is to create a script. You can paste in YAML and make changes in the GUI. + +You can call this script as a service. + +1. Go to Home Assistant Settings > Automations and Scenes > Scripts > Add Script +2. Click the three dots in the top right, and pick 'Edit in YAML'. Paste in the contents below. +3. Change `YOUR_SLACK_TEAM` to the team name `(*.slack.com)` + +```yaml +alias: "Notify: Slack Notification Template" +sequence: + - service: notify.YOUR_SLACK_TEAM + data: + message: Fallback Text + target: "#test-channel" + title: Reminder + data: + blocks: + - type: section + text: + type: mrkdwn + text: >- + This is a mrkdwn section block *this is bold*, and ~this is + crossed out~, and +mode: single +``` + +Update the blocks array with valid Slack blocks. The easiest way to create this is using [Slack Block Kit Builder](https://app.slack.com/block-kit-builder) + +Create a duplicate of this script to use for different messages, and different channels (the door was opened in #security, the light was left on on #lights, etc). ### Icons -Slack uses the standard emoji sets used [here](https://www.webpagefx.com/tools/emoji-cheat-sheet/). Alternatively a publicly accessible URL may be used. - -
    - -In order to modify your Slack bot's username and icon, you must ensure your Slack app has the `chat:write.customize` OAuth scope. See [the Slack API documentation](https://api.slack.com/methods/chat.postMessage#authorship) for more information. - -The added `notify` service will be named after the chat server the app is installed on. For example, a server named "Slack Chat" wil display as `notify.slack_chat`. - -
    +Slack uses the standard emoji sets used [here](https://slack.com/intl/en-gb/help/articles/202931348-Use-emoji-and-reactions#add-emoji-to-your-messages). Alternatively a publicly accessible URL may be used. {% include integrations/config_flow.md %} diff --git a/source/_integrations/sleepiq.markdown b/source/_integrations/sleepiq.markdown index 655b1de628e..0960d687605 100644 --- a/source/_integrations/sleepiq.markdown +++ b/source/_integrations/sleepiq.markdown @@ -29,7 +29,7 @@ ha_platforms: ha_integration_type: integration --- -The SleepIQ integration lets you integrate your SleepNumber Bed via [SleepIQ by SleepNumber](https://www.sleepnumber.com/sleepiq-sleep-tracker). +The SleepIQ integration lets you integrate your SleepNumber Bed via [SleepIQ by SleepNumber](https://www.sleepnumber.com/pages/sleepiq-sleep-tracker). There is currently support for the following platforms within Home Assistant: diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index 817b68f39eb..a5c8ac13267 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -117,7 +117,7 @@ Sonos accepts a variety of `media_content_id` formats in the `media_player.play_ Music services which require an account (e.g., Spotify) must first be configured using the Sonos app. -Playing TTS (text to speech) or audio files as alerts (e.g., a doorbell or alarm) is possible by setting the `announce` argument to `true`. Using `announce` will play the provided media URL as an overlay, gently lowering the current music volume and automatically restoring to the original level when finished. An optional `volume` argument can also be provided in the `extra` dictionary to play the alert at a specific volume level. Note that older Sonos hardware or legacy firmware versions ("S1") may not fully support these features. +Playing TTS (text to speech) or audio files as alerts (e.g., a doorbell or alarm) is possible by setting the `announce` argument to `true`. Using `announce` will play the provided media URL as an overlay, gently lowering the current music volume and automatically restoring to the original level when finished. An optional `volume` argument can also be provided in the `extra` dictionary to play the alert at a specific volume level. Note that older Sonos hardware or legacy firmware versions ("S1") may not fully support these features. Additionally, see [Network Requirements](#network-requirements) for use in restricted networking environments. An optional `enqueue` argument can be added to the service call. If `true`, the media will be appended to the end of the playback queue. If not provided or `false` then the queue will be replaced. @@ -137,6 +137,20 @@ data: volume: 20 ``` +The standard `tts._say` services do not accept the `volume` parameter directly. To set the `volume` for a TTS announcement, you can use a TTS Media Source URL with the standard `media_player.play_media` service: +```yaml +service: media_player.play_media +target: + entity_id: media_player.sonos +data: + announce: true + media_content_id: > + media-source://tts/cloud?message="I am very loud" + media_content_type: "music" + extra: + volume: 80 +``` + Sonos can also play music or playlists from Spotify. Both Spotify URIs and URLs can be used directly. An example service call using a playlist URI: ```yaml @@ -168,7 +182,8 @@ target: entity_id: media_player.sonos data: media_content_type: "music" - media_content_id: 'plex://{ "library_name": "Music", "artist_name": "M83", "album_name": "Hurry Up, We're Dreaming" }' + media_content_id: > + plex://{ "library_name": "Music", "artist_name": "M83", "album_name": "Hurry Up, We're Dreaming" } ``` ## Services @@ -302,6 +317,8 @@ action: To work optimally, the Sonos devices must be able to connect back to the Home Assistant host on TCP port 1400. This will allow the push-based updates to work properly. If this port is blocked or otherwise unreachable from the Sonos devices, the integration will fall back to a polling mode which is slower to update and much less efficient. The integration will alert the user if this problem is detected. +Playing audio using the `announce` option or TTS requires TCP port 1443 on each Sonos device to be reachable from the Home Assistant host. + See [Advanced use](#advanced-use) below for additional configuration options which may be needed to address this issue in setups with more complex network topologies. ## Advanced use diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index 75be3c56843..7e9fb8656b8 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -10,6 +10,7 @@ ha_config_flow: true ha_codeowners: - '@dgomes' - '@gjohansson-ST' + - '@dougiteixeira' ha_domain: sql ha_platforms: - sensor @@ -185,6 +186,31 @@ WHERE ``` Use `state` as column for value. +### State of an entity x time ago + +If you want to extract the state of an entity from a day, hour, or minute ago, the query is: + +```sql +SELECT + states.state +FROM + states + INNER JOIN states_meta ON + states.metadata_id = states_meta.metadata_id +WHERE + states_meta.entity_id = 'sensor.temperature_in' + AND last_updated_ts <= strftime('%s', 'now', '-1 day') +ORDER BY + last_updated_ts DESC +LIMIT + 1; +``` + +Replace `-1 day` with the target offset, for example, `-1 hour`. +Use `state` as column for value. + +Keep in mind that, depending on the update frequency of your sensor and other factors, this may not be a 100% accurate reflection of the actual situation you are measuring. Since your database won’t necessarily have a value saved exactly 24 hours ago, use “>=” or “<=” to get one of the closest values. + ### Database size #### Postgres diff --git a/source/_integrations/synology_dsm.markdown b/source/_integrations/synology_dsm.markdown index 178fa2c0dc0..27ecca514a2 100644 --- a/source/_integrations/synology_dsm.markdown +++ b/source/_integrations/synology_dsm.markdown @@ -3,9 +3,9 @@ title: Synology DSM description: Instructions on how to integrate the Synology DSM sensor within Home Assistant. ha_category: - Camera + - Media Source - System Monitor - Update - - Media Source ha_release: 0.32 ha_iot_class: Local Polling ha_domain: synology_dsm @@ -23,7 +23,6 @@ ha_platforms: - sensor - switch - update - - media_source ha_integration_type: integration ha_zeroconf: true --- diff --git a/source/_integrations/temper.markdown b/source/_integrations/temper.markdown index b1d5b617243..1013684a707 100644 --- a/source/_integrations/temper.markdown +++ b/source/_integrations/temper.markdown @@ -35,10 +35,10 @@ scale: type: integer default: 1 name: - description: The name to use when displaying this switch. + description: The name to use when displaying this sensor. required: false type: string - default: myStrom Switch + default: Unnamed Device {% endconfiguration %} Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 9228e8ed5fc..5c929d280ea 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -113,7 +113,7 @@ sensor: type: map keys: state: - description: Defines a template to get the state of the sensor. + description: "Defines a template to get the state of the sensor. If the sensor is numeric, i.e. it has a `state_class` or a `unit_of_measurement`, the state template must render to a number or to `none`. The state template must not render to a string, including `unknown` or `unavailable`. An `availability` template may be defined to suppress rendering of the state template." required: true type: template unit_of_measurement: @@ -460,6 +460,8 @@ template: ### State based sensor changing the unit of measurement of another sensor With a Template Sensor, it's easy to convert given values into others if the unit of measurement doesn't fit your needs. +Because the sensors do math on the source sensor's state and need to render to a numeric value, an availability template is used +to suppress rendering of the state template if the source sensor does not have a valid numeric state. {% raw %} @@ -469,10 +471,12 @@ template: - name: "Transmission Down Speed" unit_of_measurement: "kB/s" state: "{{ states('sensor.transmission_down_speed')|float * 1024 }}" + availability: "{{ is_number(states('sensor.transmission_down_speed')) }}" - name: "Transmission Up Speed" unit_of_measurement: "kB/s" state: "{{ states('sensor.transmission_up_speed')|float * 1024 }}" + availability: "{{ is_number(states('sensor.transmission_up_speed')) }}" ``` {% endraw %} diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 1a31677f9cc..1172f01af69 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -75,7 +75,7 @@ This is a separate account from the one you made for the app. You cannot log in 1. Navigate to the `Devices` tab. 2. Click `Link Tuya App Account` > `Add App Account`. ![](/images/integrations/tuya/image_003.png) -3. Scan the QR code that appears using the `Tuya Smart` app or `Smart Life` app. +3. Scan the QR code that appears using the `Tuya Smart` app or `Smart Life` app using the 'Me' section of the app. ![](/images/integrations/tuya/image_004.png) 4. Click `Confirm` in the app. 5. To confirm that everything worked, navigate to the `All Devices` tab. Here you should be able to find the devices from the app. diff --git a/source/_integrations/ukraine_alarm.markdown b/source/_integrations/ukraine_alarm.markdown index 2412ee85dba..e0300b5398b 100644 --- a/source/_integrations/ukraine_alarm.markdown +++ b/source/_integrations/ukraine_alarm.markdown @@ -25,10 +25,8 @@ The Ukraine Alarm integration uses the siren.pp.ua API - public wrapper for [Ukr Siren check interval is set to 10 seconds to avoid overloading the API and still be able to react fast enough. -## Setup - {% include integrations/config_flow.md %} ## Limitations -You can add up to 5 regions for monitoring to don't hit API rate limit. +You can monitor up to 5 regions to not hit the API rate limit. diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 4b98b40d446..12140a85f1c 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -22,7 +22,6 @@ ha_iot_class: Local Push ha_config_flow: true ha_quality_scale: platinum ha_codeowners: - - '@briis' - '@AngellusMortis' - '@bdraco' ha_domain: unifiprotect diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index 833c761848d..54ad909e4fa 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -5,8 +5,6 @@ ha_category: - Climate ha_release: 0.99 ha_iot_class: Cloud Polling -ha_codeowners: - - '@oischinger' ha_config_flow: true ha_domain: vicare ha_platforms: diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index ed77ebe403b..85006324140 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -13,7 +13,7 @@ ha_domain: vizio ha_zeroconf: true ha_platforms: - media_player -ha_integration_type: hub +ha_integration_type: device --- The `vizio` integration allows you to control [SmartCast](https://www.vizio.com/smartcast-app)-compatible TVs and sound bars (2016+ models). diff --git a/source/_integrations/voip.markdown b/source/_integrations/voip.markdown index 98de140b22e..d9e5a5a3047 100644 --- a/source/_integrations/voip.markdown +++ b/source/_integrations/voip.markdown @@ -1,5 +1,5 @@ --- -title: VoIP +title: Voice over IP description: Voice over IP ha_category: - Voice @@ -10,10 +10,20 @@ ha_codeowners: - '@synesthesiam' ha_domain: voip ha_integration_type: integration +ha_quality_scale: internal +ha_platforms: + - binary_sensor + - select + - switch +ha_config_flow: true --- The VoIP integration enables users to talk to [Assist](/docs/assist) using an analog phone and a VoIP adapter. Currently, the system works with the [Grandstream HT801](https://amzn.to/40k7mRa). See [the tutorial](/projects/worlds-most-private-voice-assistant) for detailed instructions. +As an alternative, the [Grandstream HT802](https://www.amazon.com/Grandstream-GS-HT802-Analog-Telephone-Adapter/dp/B01JH7MYKA/) can be used, which is basically the same as the previously mentioned HT801, but has two phone ports, of which Home Assistant currently support using only one of them. + +Also, the Grandstream HT812 has been reported to work. Home Assistant supports using only one of the two phone ports. +

    Connecting a phone to Home Assistant requires an adapter. diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index 61456ad8e91..226c3f8842d 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -1,6 +1,6 @@ --- title: Waze Travel Time -description: Instructions on how to add Waze travel time to Home Assistant. +description: Instructions on how to add Waze Travel Time to Home Assistant. ha_category: - Transport ha_iot_class: Cloud Polling @@ -21,19 +21,19 @@ The `waze_travel_time` sensor provides travel time from the [Waze](https://www.w Notes: - If a unit system is not specified, the integration will use the unit system configured on your Home Assistant instance. -- Origin and Destination can be the address or the GPS coordinates of the location (GPS coordinates have to be separated by a comma). You can also enter an entity id which provides this information in its state, an entity id with latitude and longitude attributes, or zone friendly name (case sensitive). -- The string inputs for `Substring *` allow you to force the integration to use a particular route or avoid a particular route in its time travel calculation. These inputs are case insensitive matched against the description of the route. -- When using the `Avoid Toll Roads?`, `Avoid Subscription Roads?` and `Avoid Ferries?` options be aware that Waze will sometimes still route you over toll roads or ferries if a valid vignette/subscription is assumed. Default behavior is that Waze will route you over roads having subscription options, so best is to set both `Avoid Toll Roads?` and `Avoid Subscription Roads?` or `Avoid Ferries?` if needed and experiment to ensure the desired outcome. +- **Origin** and **Destination** can be the address or the GPS coordinates of the location. For coordinates, use the following format: `52.5200, 13.4050`. Make sure the coordinates are separated by a comma. They must not include letters. You can also enter an entity id which provides this information in its state, an entity id with latitude and longitude attributes, or zone friendly name (case sensitive). +- The string inputs for `Substring *` allow you to force the integration to use a particular route or avoid a particular route in its time travel calculation. These inputs are case insensitive and matched against the description of the route. +- When using the `Avoid Toll Roads?`, `Avoid Subscription Roads?` and `Avoid Ferries?` options, be aware that Waze will sometimes still route you over toll roads or ferries if a valid vignette/subscription is assumed. Default behavior is that Waze will route you over roads having subscription options. It is therefor best is to set both `Avoid Toll Roads?` and `Avoid Subscription Roads?` or `Avoid Ferries?` if needed and experiment to ensure the desired outcome. ## Manual Polling -Some users want more control over polling intervals. To use more granular polling, you can disable automated polling from the entry on the Integration page. Go to the Integrtaion page, select the entry, click on the vertical 3 dots, and then select System Options to turn off or on polling. Afterwards to manually trigger a polling request, call the [`homeassistant.update_entity` service](/integrations/homeassistant/#service-homeassistantupdate_entity) as needed, either manually or via automations. +Some users want more control over polling intervals. To use more granular polling, you can disable automated polling. Go to {% my integrations title="**Settings** > **Devices & Services**" %}, and on the **Waze Travel Time** integration, select the 3 dots. Then, select **System options** and toggle the button to disable polling. To manually trigger a polling request, call the [`homeassistant.update_entity` service](/integrations/homeassistant/#service-homeassistantupdate_entity) as needed, either manually or via automations. ## Example using dynamic destination Using the flexible option to set a sensor value to the `Destination`, you can setup a single Waze integration that will calculate travel time to multiple optional locations on demand. -In the following example, the `Input Select` is converted into an address which is used to modify the destination for Waze route calculation from `device_tracker.myphone` location (It takes a few minutes for the value to update due to the interval of Waze data fetching). +In the following example, the `Input Select` is converted into an address which is used to modify the destination for the Waze route calculation from the `device_tracker.myphone` location. It takes a few minutes for the value to update due to the interval of Waze data fetching. {% raw %} @@ -68,7 +68,7 @@ template: #### Tracking entity to entity -In this example we use a device_tracker entity ID as the origin and the sensor created above as the destination. +In this example, we use a device_tracker entity ID as the origin and the sensor created above as the destination. - Name: "Me to some destination" - Origin: `device_tracker.myphone` @@ -105,5 +105,5 @@ In this example we are using the entity ID of a zone as the origin and the frien ## Using the live map in an iFrame If you plan to use [Waze's live map](https://developers.google.com/waze/iframe/) -in a dashboard [iframe](/dashboards/iframe/) then use +in a dashboard [iframe](/dashboards/iframe/), then use [https://embed.waze.com/iframe](https://embed.waze.com/iframe) and not the live map URL itself. diff --git a/source/_integrations/wiz.markdown b/source/_integrations/wiz.markdown index fcd79394edb..310903f511e 100644 --- a/source/_integrations/wiz.markdown +++ b/source/_integrations/wiz.markdown @@ -37,7 +37,7 @@ These devices have been sold under at least the following brands: - [Atom Lighting](https://atomlighting.com.au/) - [ATX LED](https://atxledinc.com/) - [Brilliant](https://www.brilliantlightsource.com/) -- [Designers Fountain](https://designersftn.com/default.dmx) +- [Designers Fountain](https://designersfountain.com/) - [Evoluziona](https://tecnolite.mx/) - [Fischer & Honsel](https://fischer-honsel.com/) - [Gauss](https://gauss.ru/smartlight/products/) @@ -47,12 +47,12 @@ These devices have been sold under at least the following brands: - [Lednify](https://lednify.com/) - [Leyton](https://www.leyton-lighting.co.uk/) - [Liteline](https://www.liteline.com/page/oncloud) -- [Lutec](https://www.lutec.com/highlight/wiz) +- [Lutec](https://www.lutec.com/segments/connected) - [Philips Smart LED lights with WiZ Connected](https://www.usa.lighting.philips.com/consumer/smart-wifi-led) - [Spex](https://spexlighting.com/pages/smart-lights) - [SLV](https://www.slv.com/) - [Trenz](https://trenzlighting.com/pages/smart-lights) -- [Trio](https://wiz.trio-lighting.com/en/) +- [Trio](https://wiz.trio-lighting.com/) - [Wofi](https://wofi-wiz.com/) The integration can report the state of occupancy sensors that have been linked to a device. @@ -61,8 +61,8 @@ The integration can report the state of occupancy sensors that have been linked ## Connect WiZ devices to your network -To connect a WiZ device to your Wi-Fi network, please follow the instructions in the [WiZ app](https://www.wizconnected.com/en/consumer/app/) (available for iOS and Android). -If you have further questions, please have a look at the [WiZ Support Page](https://www.wizconnected.com/en/consumer/support/). +To connect a WiZ device to your Wi-Fi network, please follow the instructions in the [WiZ app](https://www.wizconnected.com/en-us/explore-wiz/app) (available for iOS and Android). +If you have further questions, please have a look at the [WiZ Support Page](https://www.wizconnected.com/en-us/support/faq). ### Enable local connectivity diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index db41fed3a51..f84f5351c91 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -47,6 +47,8 @@ Add holidays will only take dates formatted with `YYYY-MM-DD`. Remove holidays will take dates formatted with `YYYY-MM-DD` or partial of name, for example, `christmas` will exclude `Christmas Day`. +The offset can be used to see if future days are workdays. For example, put `1` to see if tomorrow is a workday. + ## Automation example Example usage for automation: diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index 2522a9035f1..6ea6b53f066 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -1,5 +1,5 @@ --- -title: Wyoming +title: Wyoming Protocol description: Connect remote voice services to Home Assistant. ha_category: - Voice @@ -10,6 +10,10 @@ ha_codeowners: - '@synesthesiam' ha_domain: wyoming ha_integration_type: integration +ha_platforms: + - stt + - tts +ha_config_flow: true --- The Wyoming integration connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/docs/assist) to use a variety of local [speech-to-text](/integrations/stt/) and [text-to-speech](/integrations/tts/) systems, such as: diff --git a/source/_integrations/yalexs_ble.markdown b/source/_integrations/yalexs_ble.markdown index 00bd62085b9..76363ad7e38 100644 --- a/source/_integrations/yalexs_ble.markdown +++ b/source/_integrations/yalexs_ble.markdown @@ -50,6 +50,10 @@ These devices do not send updates, but can be locked and unlocked. - MD-04I (Yale Conexis L1, Yale Conexis L2) - YRCB-490 (Yale Smart Cabinet Lock) +## Troubleshooting + +Lock operation requires setting up an encrypted connection highly sensitive to latency. It is recommended to use a [High-Performance Bluetooth adapter](/integrations/bluetooth/#known-working-high-performance-adapters) or [ESPHome Bluetooth proxy](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) for stable operation. + ## Push updates Some locks only send push updates when they have an active HomeKit pairing. If your lock is not sending push updates, ensure it's paired with a HomeKit using an iOS device or the HomeKit controller integration. The lock cannot be paired via HomeKit Controller and the Yale Access Bluetooth integration on the same Home Assistant instance as they will both try to access the lock simultaneously and fail. @@ -62,18 +66,19 @@ Alternatively, call the `homeassistant.update_entity` service to force the integ If the lock does not support push updates via advertisements or you want lock operation to be more responsive, you can enable always connected mode. Always connected will cause the lock to stay connected to Home Assistant via Bluetooth, which will use more battery. +If the lock does not support push updates via advertisements or you want lock operation to be more responsive, you can enable always connected mode. Always connected will cause the lock to stay connected to Home Assistant via Bluetooth, which will use more battery. + ## Door Sensors The lock must be calibrated in the Yale Access App for the door sensors to function correctly. If the door sensor has an unknown state or is not updating, try recalibrating the lock in the app. - ## Obtaining the offline key The offline key and slot number are required to operate the lock. These credentials can be found in multiple places depending on the lock brand and model. -### Yale Access or August Cloud +### Yale Access, Yale Home, or August Cloud -The [August](/integrations/august) integration can automatically provision the offline key if the configured account has the key loaded. You may need to create or use a non-primary existing account with owner-level access to the lock, as not all accounts will have the key loaded. +The [August](/integrations/august) integration can automatically provision the offline key if the configured account has the key loaded. You may need to create or use a non-primary existing account with owner-level access to the lock, as not all accounts will have the key loaded. If the lock was not discovered by Home Assistant when the cloud integration was loaded, reload the cloud integration once the lock has been discovered. If the offline key can automatically be provisioned, you will not be asked to enter it and the integration should be automatically added, configured and running. diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index dd30aaf1285..b4e491fba42 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -272,6 +272,8 @@ Note: `cluster_id: 25` may also be `cluster_id: 0x0019`. The two are synonymous. ### Defining Zigbee channel to use +Tip! Before considering to change to an other Zigbee channel on an existing Zigbee network, it is highly recommended that you read through the two segments under the [troubleshooting](#troubleshooting) section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*". These sections provide prerequisite information and advice on how to achieve the best possible Zigbee network in your environment. + ZHA prefers to use Zigbee channel 15 by default. You can change this using YAML configuration, but this only works if there's no existing network. To change the channel for an existing network, radio has to be factory reset and a new network to be formed. This requires re-pairing of all the devices. @@ -283,13 +285,13 @@ zha: channels: [15, 20, 25] # Channel mask ``` -This is a good reference for channel selection for [Zigbee and WiFi coexistance](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence). +Note! The best practice is to not change the Zigbee channel from the ZHA default. Also, the related troubleshooting segments mentioned in the tip above will, among other things, inform that if you have issues with overlapping frequencies between Wi-Fi and Zigbee, then it is usually better to first only try changing and setting a static Wi-Fi channel on your Wi-Fi router or all your Wi-Fi access points (instead of just changing to another Zigbee channel). -The Zigbee specification standards divide the 2.4Ghz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels, it will usually depend on the hardware and firmware age as well as devices power ratings. +MetaGeek Support has a good reference article about channel selection for [Zigbee and WiFi coexistance]([https://support.metageek.com/hc/en-Ti](https://support.metageek.com/hc/en-us/articles/203845040-ZigBee-and-WiFi-Coexistence)). -The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices that are limited to only being compatible with the ZLL (Zigbee Light Link) channels as well as lessen the chance of Wi-Fi networks interfering too much with the Zigbee network. Note that especially using Zigbee channels 11, 24, 25, or 26 on your Zigbee Coordinator could mean it will probably not be accessible to older devices as those Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. +The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings. -Regardless, note that the best practice recommendation is, however, not to change the Zigbee channel from default as not all Zigbee devices support all channels. If you have issues with overlapping frequencies, then it will generally be a better idea to just change Wi-Fi channels on your Wi-Fi Router or all your Wi-Fi Access Points instead. +The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices. Not only because there is less chance of Wi-Fi networks interfering too much with the Zigbee network on other channels, but also because not all Zigbee devices support all channels. Some devices, for example, are limited to only being compatible with ZLL (Zigbee Light Link) channels. It is therefore especially not recommended to use Zigbee channels 11, 24, 25, or 26 on your Zigbee coordinator. These Zigbee channels are commonly only supported by relatively modern Zigbee hardware devices with newer Zigbee firmware. If using those channels, your coordinator may not be usable with older Zigbee devices. ### Modifying the device type @@ -380,42 +382,36 @@ This service disables a lock code on a Zigbee lock. ## Adding devices -To add a new device: +Tip! It is highly recommended that you read through the two segments under the troubleshooting section below about "*Best practices to avoid pairing/connection difficulties*" and "*Zigbee interference avoidance and network range/coverage optimization*" for general prerequisite knowledge and advice on how to achieve the best possible Zigbee network in your environment. + +**To add a new Zigbee device:** 1. Go to the **Integrations** panel, find the **Zigbee Home Automation** integration that was added by the configuration steps above, and select **Configure**. 1. Click on the plus button at the bottom right corner to start a scan for new devices. -1. Reset your Zigbee devices according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times, switches usually have a reset button/pin). It might take a few seconds for the devices to appear. You can click on **Show logs** for more verbose output. +1. Reset your Zigbee devices to factory default settings according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times; switches usually have a reset button/pin). It might take a few seconds for the devices to appear. You can click on **Show logs** for more verbose output. 1. Once the device is found, it will appear on that page and will be automatically added to your devices. You can optionally change its name and add it to an area (you can change this later). You can search again to add another device, or you can go back to the list of added devices. -### Best practices to avoid pairing/connection difficulties +### Using router devices to add more devices -Verify that you try to follow recommended best practices to avoid pairing and/or connection issues: +Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender"). -- If possible try to pair your Zigbee devices in their intended final location, (and not pair it next to the Zigbee coordinator and then need to move it after). - - Pairing a Zigbee device next to the Zigbee coordinator and then moving it later can result in dropped/lost connections or other issues. - - If the device you want to add is not brand new and as such never paired before then you always have to make sure to first manually reset the device to its factory default settings before you will be able to add/pair it. -- Some battery-operated Zigbee devices are known to have problems with pairing if they have Low battery voltage. - - Some people have reported replacing the battery on their newly received Xiaomi/Aqara devices solved pairing issues. -- Check that you have enough Zigbee router devices (also known as Zigbee signal repeaters or range extenders) and if you do not have any, invest and add some mains-powered devices that will work as Zigbee routers. - - Aim to start out with mains-powered devices before adding battery-operated devices as a "weak" Zigbee network mesh (e.g., the device is too far from the Zigbee coordinator or a Zigbee router) may prevent some devices from being paired. Zigbee router devices are also needed to increase the maximum of devices that can be connected to your Zigbee mesh network. - - Note that some Zigbee devices are not fully compatible with all brands of Zigbee router devices. Xiaomi/Aqara devices are for example known not to work with Zigbee router devices from Centralite, General Electrics, Iris, Ledvance/OSRAM, LIGHTIFY/Sylvania, Orvibo, PEQ, Securifi, and SmartThings/Samsung. Better results can usually be achieved by using mains-powered devices IKEA and Nue/3A Home or dedicated DIY routing devices based on Texas Instruments CC253x/CC26x2 and XBee Series 2/3 Zigbee radios. -- Be patient as the pairing of some Zigbee devices may require multiple attempts and you may sometimes need to try again and again. - - Some devices, like example those from Xiaomi/Aqara, are known to not be 100% compliant with the standard Zigbee specifications and may therefore require many paring attempts over 10-20 minutes or longer. +Because Zigbee should use a "[wireless mesh network]"(https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (e.g. light bulbs) are often powered-off. Zigbee router devices are meant to be always available. -### Using router devices +All Zigbee coordinator firmware will only allow you to directly connect a certain amount of devices. That limit is set for two reasons; firstly, to not overload the Zigbee coordinator, and secondly, to encourage your Zigbee network to quickly begin to utilize a "[mesh networking](https://en.wikipedia.org/wiki/Mesh_networking)" topology instead of only a "[star network](https://en.wikipedia.org/wiki/Star_network)" topology. -You use routers to increase the number of Zigbee devices that can be used in a network. The total number of Zigbee devices that you have on a Zigbee network depends on a few things, but you should know that Zigbee coordinator hardware and firmware only plays a larger role in Zigbee networks with a lot of devices. More important is how many directly connected devices ("direct children") versus how many routers are connected to your Zigbee coordinator. Zigpy library which ZHA uses has an upper limit. This is 32 direct children, but if your Zigbee coordinator hardware is powerful enough then you can still have hundreds of Zigbee devices connected through routers. +The total number of Zigbee devices that you can have on a Zigbee network depends on a few things. The Zigbee coordinator hardware and its firmware only play a larger role in Zigbee networks with a lot of devices. More important is the number of directly connected devices ("direct children") versus the number of routers that are connected to your Zigbee coordinator. The Zigpy library, which the ZHA integration depends on, has an upper limit that is 32 direct children, but you can still have hundreds of Zigbee devices in total connected indirectly through routes via Zigbee router devices. -Even the least powerful Zigbee coordinator hardware supported by Zigpy is CC2530/2531 and its default firmware, only supports 20 devices connected directly to the coordinator. However, by having routers in your Zigbee network, the mesh network size can be extended. You can assume that most, if not all mains/AC-powered devices, e.g., wall-plugs and always powered-on lightbulbs in your Zigbee network can serve as a router. You can even use CC2530/CC2531 with router firmware, as additional routers (which in their turn have a limit of 21 devices). +In this theoretical example, a CC2652-based Zigbee coordinator has three CC2530 Zigbee router devices for a total limit of 77 devices: -An example using the default CC2531 coordinator firmware + two CC2531 routers; Your device limit will be: +- Coordinator: 32 Zigbee End devices - 3 routers = 29 +- Router one: + 16 devices +- Router two: + 16 devices +- Router three: + 16 devices +- Total device limit = **77 devices** -- Coordinator: 15 devices - 2 routers = 13 -- Router one: + 21 devices -- Router two: + 21 devices -- Total device limit = **55 devices** +In practice, you will likely need to add a lot more Zigbee router devices than in this example in order to extend the coverage of the network to reach that many devices. -### Binding and unbinding +## Binding and unbinding ZHA support for binding and unbinding. Binding is an action in Zigbee which defines relations between two Zigbee devices, specific endpoints, and cluster id. It provides a mechanism for attaching an endpoint on one Zigbee node to one or more endpoints on another Zigbee node or Zigbee group (a group of Zigbee devices). @@ -450,15 +446,51 @@ ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart ### Knowing which devices are supported -There is no official compatibility list of supported devices for the simple reason that practically all devices Zigbee Home Automation that are fully compliant with the standards and specifications as set by the [Zigbee Alliance](https://zigbeealliance.org) should technically be compatible with this ZHA integration. The fact remains, however, that some hardware manufacturers do not always fully comply with each set specification, which can cause a few devices to only partially work or not work at all with ZHA, but developers can create workarounds for such issues via a solution for 'ZHA exception and deviation handling' that this implementation features. See that section for more information. +Home Assistant's ZHA integration supports all standard Zigbee device types. It should be compatible with most Zigbee devices as long as they fully conform to the official ZCL (Zigbee Cluster Library) specifications defined by the [CSA (Connectivity Standards Alliance, formerly the Zigbee Alliance)](https://csa-iot.org/all-solutions/zigbee/). There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA integration. -Tip to new users is that, while there is no official list of supported devices, some ZHA users take comfort that blakadder maintains an unofficial Zigbee Device Compatibility Repository which anyone can submit compatibility reports to, it can be found at [zigbee.blakadder.com](https://zigbee.blakadder.com) and currently contains independent compatibility lists and device pairing tips for several home automation gateway/bridge/hub software, including but not limited to open source Zigbee implementations such as; ZHA, Tasmota, Zigbee2MQTT, and ZiGate. +Not all hardware manufacturers always fully comply with the standard specifications. Sometimes, they may also implement unique features. For this reason, some Zigbee devices pair/join fine with ZHA but then only show none or only a few entities in the integration. Developers can work around most such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to the section below on _How to add support for new and unsupported devices_. -### ZHA exception and deviation handling +For clarification, normally only devices that do not fully conform to CSA's ZCL specifications that will not present all standard attributes as entities for configuration in the ZHA integration. Zigbee devices that only use the standard clusters and attributes that are Zigbee specifications set by the Connectivity Standards Alliance should not need custom device handlers. -Home Assistant's ZHA integration already supports most standard device types out-of-the-box as long as they follow the official Zigbee specifications, but for devices that manufacturers have not properly not fully Zigbee compatible, the ZHA integration has implemented a library called "[ZHA Device Handlers (also known as "zha-quirk")](https://github.com/zigpy/zha-device-handlers)" that handle and resolve compliance issues via custom conversion/translation of Zigbee parameters (clusters and attributes) for specific devices which do not conform with the Zigbee standards. +Before continuing with this section: If a device does not join/pair at all, read the troubleshooting sections about how to avoid pairing/connection difficulties, interference avoidance, and network range/coverage optimization. -The few devices that will, for example, not join/pair properly or, while joined/paired, do not present all attributes in the ZHA integration likely deviate from the Zigbee specifications set by the [CSA (Connectivity Standards Alliance)](https://csa-iot.org/all-solutions/zigbee/). These devices may therefore require the creation of a bug report by a device owner, supplying debug logs. The device owner may need to actively assist in troubleshooting by providing the information developers need to create custom ZHA Device Handlers. +Tip to new Zigbee users: Checkout [blakadder's unofficial Zigbee Device Compatibility Repository](https://zigbee.blakadder.com). Anyone can help maintain the site by submitting device compatibility information to it. The repository contains independent community member's reports or device-specific pairing tips for several home automation gateway/bridge/hub software, including open-source Zigbee implementations, such as ZHA, Zigbee2MQTT, and Tasmota (Zigbee2Tasmota). + +#### How to add support for new and unsupported devices + +If your Zigbee device pairs/joins successfully with the ZHA integration but does not show all of the expected entities: +1. Try to re-pair/re-join the device several times. +2. Checkout the troubleshooting section. +3. Still not working? You may need a custom device handler. This handler will have exception handling code to work around device-specific issues. + +For devices that do not follow the standard defined in the CSA's ZCL (Zigbee Cluster Library), the ZHA integration relies on a project called "[ZHA Device Handlers (also known as "zha-quirk")](https://github.com/zigpy/zha-device-handlers)". It contains device-specific Python scripts called "quirks". These scripts can resolve compliance and interoperability issues by implementing on-the-fly conversion of custom Zigbee configurations or by implementing manufacturer-specific features for specific devices. + +People familiar with other Zigbee gateway solutions for home automation may know similar concepts of using custom Zigbee device handlers/converters for non-standard devices. For example, [Zigbee2MQTT (and IoBroker) uses zigbee-herdsman converters](https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html) and [SmartThings Classics (Legacy) platform has Hub Connected Device Handlers](https://developer.smartthings.com/docs/devices/hub-connected/legacy). + +If you do not want to develop such a "quirk" Python script yourself, you can submit a "device support request" as a new issue to the [ZHA Device Handlers project repository on GitHub](https://github.com/zigpy/zha-device-handlers/issues): +1. Sign in to GitHub. +2. Select **New issue** and follow the instructions. + * New device support requests require the device signature + diagnostic information. + * You may also need to actively help in further testing or provide additional information to the volunteering developers. + +Note that submitting a new "device support request" does not guarantee that someone else will develop a custom "quirk" for ZHA. The project relies on volunteering developers. However, without "device support requests", the developers may not be aware that your specific Zigbee device is not working correctly in ZHA. + +### Best practices to avoid pairing/connection difficulties + +If you are having problems pairing a device to then ZHA integratuon then it is recommomended to verify that you try to follow recommended best practices to avoid pairing and/or connection issues: + +- Check that your setup and environment are optimized to avoid interference. + - As interference avoidance is an extremely important topic on its own, please read and follow the tips in the separate section below about Zigbee interference avoidance and network range/coverage optimization. +- Check that you have enough Zigbee router devices (also known as Zigbee signal repeaters or range extenders) and if you do not have any, invest and add some mains-powered devices that will work as Zigbee routers. + - Aim to start out with mains-powered devices before adding battery-operated devices as a "weak" Zigbee network mesh (e.g., the device is too far from the Zigbee coordinator or a Zigbee router) may prevent some devices from being paired. Zigbee router devices are also needed to increase the maximum of devices that can be connected to your Zigbee mesh network. + - Note that some Zigbee devices are not fully compatible with all brands of Zigbee router devices. Xiaomi/Aqara devices are for example known not to work with Zigbee router devices from Centralite, General Electrics, Iris, Ledvance/OSRAM, LIGHTIFY/Sylvania, Orvibo, PEQ, Securifi, and SmartThings/Samsung. Better results can usually be achieved by using mains-powered devices IKEA and Nue/3A Home or dedicated DIY routing devices based on Texas Instruments CC253x/CC26x2 and XBee Series 2/3 Zigbee radios. +- If possible try to pair your Zigbee devices in their intended final location, (and not pair it next to the Zigbee coordinator and then need to move it after). + - Pairing a Zigbee device next to the Zigbee coordinator and then moving it later can result in dropped/lost connections or other issues. + - If the device you want to add is not brand new and as such never paired before then you always have to make sure to first manually reset the device to its factory default settings before you will be able to add/pair it. +- Some battery-operated Zigbee devices are known to have problems with pairing if they have Low battery voltage. + - Some people have reported replacing the battery on their newly received Xiaomi/Aqara devices solved pairing issues. +- Be patient as the pairing of some Zigbee devices may require multiple attempts and you may sometimes need to try again and again. + - Some devices, like example those from Xiaomi/Aqara, are known to not be 100% compliant with the standard Zigbee specifications and may therefore require many paring attempts over 10-20 minutes or longer. ### Zigbee interference avoidance and network range/coverage optimization diff --git a/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown b/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown index d973f3bc039..01e67f1e223 100644 --- a/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown +++ b/source/_posts/2023-01-26-year-of-the-voice-chapter-1.markdown @@ -32,7 +32,7 @@ We want Assist to be as accessible to as many people as possible. To do this, we Assist is enabled by default in the Home Assistant 2023.2 release. Tap the new Assist icon Assist icon at the top right of the dashboard to use it. -[Assist documentation.](https://next.home-assistant.io/docs/assist/) +[Assist documentation.](https://www.home-assistant.io/docs/assist/) Screenshot of the Assist dialog @@ -40,7 +40,7 @@ Assist is enabled by default in the Home Assistant 2023.2 release. Tap the new A We want to make it as easy as possible to use Assist. To enable this for Android users, we have added a new tile to the Android Wear app. A simple swipe from the clock face will show the assist button and allows you to send voice commands. -[Assist on Android Wear documentation.](https://next.home-assistant.io/docs/assist/android/) +[Assist on Android Wear documentation.](https://www.home-assistant.io/docs/assist/android/) _The tile is available in [Home Assistant Companion for Android 2023.1.1](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1)._ @@ -50,7 +50,7 @@ _The tile is available in [Home Assistant Companion for Android 2023.1.1](https: For Apple devices we have been able to create a fully hands-free experience by integrating with Siri. This is powered by a new Apple Shortcut action called Assist, which is part of the Home Assistant app. This shortcut action can also be manually triggered from your Mac taskbar, iPhone home screen or Apple Watch complication. We have two ready-made shortcuts that users can import from the documentation with a single tap to unlock these features. -[Assist via Siri and Apple Shortcuts documentation.](https://next.home-assistant.io/docs/assist/apple/) +[Assist via Siri and Apple Shortcuts documentation.](https://www.home-assistant.io/docs/assist/apple/) _The Assist shortcut is available in [Home Assistant Companion for iOS 2023.2](https://apps.apple.com/us/app/home-assistant/id1099568401?itsct=apps_box_badge&itscg=30200). Mac version is awaiting approval._ @@ -66,7 +66,7 @@ With Home Assistant we believe that every home is uniquely yours and that [techn Assist includes support for custom sentences, responses and intents, allowing you to achieve all of the above, and more. We've designed the custom sentence format in a way that it can be easily shared with the community. -Read [the documentation](https://next.home-assistant.io/docs/assist/custom_sentences) on how to get started. +Read [the documentation](https://www.home-assistant.io/docs/assist/custom_sentences) on how to get started. _In a future release we're planning on adding a user interface to customize and import sentences._ diff --git a/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown b/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown index b8cbe296f17..5da1c972739 100644 --- a/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown +++ b/source/_posts/2023-04-27-year-of-the-voice-chapter-2.markdown @@ -51,7 +51,7 @@ Interacting with many different services means that many different things can go Screenshot of the new Assist debug tool.

    -[Assist Pipeline integration]: https://next.home-assistant.io/integrations/assist_pipeline/ +[Assist Pipeline integration]: https://www.home-assistant.io/integrations/assist_pipeline/ [Assist dialog]: /docs/assist/ ## Voice Assistant powered by Home Assistant Cloud @@ -119,7 +119,7 @@ The Whisper and Piper add-ons mentioned above are integrated into Home Assistant [Wyoming]: https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md [Rhasspy]: https://github.com/rhasspy/rhasspy3/ -[Wyoming integration]: https://next.home-assistant.io/integrations/wyoming/ +[Wyoming integration]: https://www.home-assistant.io/integrations/wyoming/ ## ESPHome powered voice assistants @@ -131,7 +131,7 @@ Today we’re launching support for building voice assistants using ESPHome. Con We’ve been focusing on the [M5STACK ATOM Echo][atom-echo] for testing and development. For $13 it comes with a microphone and a speaker in a nice little box. We’ve created a tutorial to turn this device into a voice remote directly from your browser! -[Tutorial: create a $13 voice remote for Home Assistant.](https://next.home-assistant.io/projects/thirteen-usd-voice-remote/) +[Tutorial: create a $13 voice remote for Home Assistant.](https://www.home-assistant.io/projects/thirteen-usd-voice-remote/) [ESPHome Voice Assistant documentation.](https://esphome.io/components/voice_assistant.html) @@ -152,7 +152,7 @@ By configuring off-hook autodial, your phone will automatically call Home Assist We’ve focused our initial efforts on supporting [the Grandstream HT801 Voice-over-IP box][ht801]. It works with any phone with an RJ11 connector, and connects directly to Home Assistant. There is no need for an extra server. -[Tutorial: create your own World’s Most Private Voice Assistant](https://next.home-assistant.io/projects/worlds-most-private-voice-assistant/) +[Tutorial: create your own World’s Most Private Voice Assistant](https://www.home-assistant.io/projects/worlds-most-private-voice-assistant/)

    @@ -160,7 +160,7 @@ We’ve focused our initial efforts on supporting [the Grandstream HT801 Voice-o Give your voice assistant personality using the OpenAI integration.

    -[voip]: https://next.home-assistant.io/integrations/voip/ +[voip]: https://www.home-assistant.io/integrations/voip/ [ht801]: https://amzn.to/40k7mRa _Some links on this page are affiliate links and purchases using these links support the Home Assistant project._ diff --git a/source/_posts/2023-05-03-release-20235.markdown b/source/_posts/2023-05-03-release-20235.markdown new file mode 100644 index 00000000000..92490ec22f2 --- /dev/null +++ b/source/_posts/2023-05-03-release-20235.markdown @@ -0,0 +1,981 @@ +--- +layout: post +title: "2023.5: Let's talk!" +description: "Have a talk with your Home Assistant! Shipping chapter 2 of our Year of the Voice! Easily manage your exposed entities to your voice assistants, configure your Home Assistant Yellow's LEDs, and new Webhook trigger options!" +date: 2023-05-03 00:00:00 +date_formatted: "May 3, 2023" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2023-05/social.png +--- + + + +Home Assistant Core 2023.5! 🎉 + +What an exciting release we have for you this month! This release is all about +voice (well, almost fully), and I'm super excited we can ship you all this truly +amazing stuff! + +I've been following the progress of this all being built this month, and really, +I've been mindblown multiple times a week. So what is in here? Well, you can +now actually talk to Home Assistant! 🤯 + +I really appreciate that all these voice elements have been built the +Home Assistant way: to be fully configurable and extendable. Giving you choices, +including entirely local options for your own voice assistant. + +This release is packed! And we are not even halfway through Home Assistant's +Year of the voice yet… + +Enjoy the release! + +../Frenck + + + +- [Let's talk!](#lets-talk) +- [Manage what is exposed to your voice assistants](#manage-what-is-exposed-to-your-voice-assistants) +- [Improved entity setting](#improved-entity-setting) +- [Configuring the LEDs of your Home Assistant Yellow](#configuring-the-leds-of-your-home-assistant-yellow) +- [Webhooks trigger options](#webhooks-trigger-options) +- [New Assist pipeline and language selectors](#new-assist-pipeline-and-language-selectors) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New Integrations](#new-integrations) +- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Release 2023.5.1 - May 4](#release-202351---may-4) +- [Release 2023.5.2 - May 5](#release-202352---may-5) +- [Release 2023.5.3 - May 14](#release-202353---may-14) +- [Release 2023.5.4 - May 23](#release-202354---may-23) +- [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=ZPrlZxDE6Zk) +3 May 2023, at 12:00 PDT / 21:00 CEST! + + + +## Let's talk! + +Our goal for 2023 is to let you control Home Assistant in your own language: +It is [Home Assistant’s Year of the Voice][yotv]! After [chapter 1][chapter1] in +January, [we announced chapter 2][chapter2] in this exciting journey last week! + +This release ships everything (plus more) that was announced! This means, as +of this release, you can actually start talking to Home Assistant! 🎙️ + + + +Here is a quick summary of [all that has been announced][chapter2], linked to +the place you can read more about each of them: + +- [Compose your own voice assistant using the new assist pipelines](/blog/2023/04/27/year-of-the-voice-chapter-2/#composing-voice-assistants) +- [Voice Assistant powered by Home Assistant Cloud](/blog/2023/04/27/year-of-the-voice-chapter-2/#voice-assistant-powered-by-home-assistant-cloud) +- [Fully local text-to-speech using Piper](/blog/2023/04/27/year-of-the-voice-chapter-2/#piper-our-new-model-for-high-quality-local-text-to-speech) +- [Fully local speech-to-text using OpenAI Whisper](/blog/2023/04/27/year-of-the-voice-chapter-2/#local-speech-to-text-with-openai-whisper) +- [The Wyoming protocol and integration](/blog/2023/04/27/year-of-the-voice-chapter-2/#wyoming-the-voice-assistant-glue) +- [Create your own ESPHome-powered voice assistant](/blog/2023/04/27/year-of-the-voice-chapter-2/#esphome-powered-voice-assistants) +- [The Voice-over-IP integration, call Home Assistant ☎️](/blog/2023/04/27/year-of-the-voice-chapter-2/#worlds-most-private-voice-assistant) + +To help you get started, we made sure the documentation is perfect, including +some cool project tutorials to jump-start your own private voice assistant +journey: + +- [The world's most private voice assistant](/projects/worlds-most-private-voice-assistant/) +- [Giving your voice assistant a Super Mario personality using OpenAI](/projects/worlds-most-private-voice-assistant/#give-your-voice-assistant-personality-using-the-openai-integration) +- [Installing a local Assist pipeline](/docs/assist/voice_remote_local_assistant/) +- [The $13 tiny ESPHome-based voice assistant](/projects/thirteen-usd-voice-remote/) + +If you missed [last week's live stream](https://www.youtube.com/watch?v=Tk-pnm7FY7c), +be sure to check it out. It is full of live demos and detailed explanations +of everything packed into this release. The recording of the live stream: + + + +[yotv]: /blog/2022/12/20/year-of-voice/ +[chapter2]: /blog/2023/04/27/year-of-the-voice-chapter-2/ +[chapter1]: /blog/2023/01/26/year-of-the-voice-chapter-1/ + +## Manage what is exposed to your voice assistants + +A brand new and exciting menu item can be found in your {% my config title="**Settings**" %} +menu: {% my voice_assistants title="**Voice assistants**" %}! + +Screenshot showing the brand new menu item in the settings menu: Voice assistants. + +This new settings item gives you access to many fantastic new voice features; +it also provides a new **Expose** tab where you can manage which entities are +exposed to your Assist, Alexa, and Google Assistant. + +Screenshot showing the new expose entities tab in the voice assistants menu. + +It gives an overview of what entities you have exposed to your voice assistants +and easily remove or add new ones. Clicking on an entity in this screen will +bring up the voice assistant setting for that entity, allowing you to turn +on/off the entity's exposure to a specific voice assistant and +manage the entity's aliases. + +Screenshot showing the new expose entities tab in the voice assistants menu. + +This currently supports our [Assist](/docs/assist), and Amazon Alexa and +Google Assistant via Home Assistant Cloud. + +## Improved entity setting + +Some nice tweaks have been made to the entity settings dialog, making it +easier to use and look cleaner. + +The entity settings dialog used to have an expandable advanced section, +which you could expand to access features like showing/hiding/disabling +entities, changing the area, etc. + +The advanced section has been removed, and all its features have been +reorganized. So, no features were lost while providing a much nicer +interface. + +Screenshot showing the new and improved entity settings dialog. + +And, since this is the year of the voice, you may notice the +**"Voice assistants"** option in the above screenshot, which will bring up: + +Screenshot showing the new voice assistant expose controls accessible directly from the entity settings dialog. + +This allows you to quickly change the voice assistants the entity is exposed +to, including its aliases, without having to navigate back to the voice +assistants panel in the main settings screen. + +## Configuring the LEDs of your Home Assistant Yellow + +The enclosure of our amazing [Home Assistant Yellow](/yellow) allows you to +look at the beautiful board and parts inside of it. + +However, the LEDs on the board might light up your environment when +it is dark in an unwanted way. For example, when you sleep in the same room +as your Home Assistant Yellow is in. + +As of this release, you can configure (turn on/off) the disk, heartbeat, +and power LEDs of your Home Assistant Yellow by using the **Configure** button +on the {% my hardware title="**Settings** > **Hardware**" %} page. + +Screenshot that show the new LED settings for the Home Assistant Yellow. + +## Webhooks trigger options + +Webhooks have been extended this release. We now have support for webhooks +that use the `GET` HTTP method! + +But that is not all. Thanks to [@esev], we also got some new security features +for our webhook triggers. You can now set which HTTP methods your +webhook trigger work with and the ability to limit webhooks to only work on +your local network. + +Screenshot showing the new options available on a Webhook automation trigger. + +## New Assist pipeline and language selectors + +If you are building automation or scripts Blueprints, you can now leverage +two new UI selectors for use with your Blueprints: an Assist pipeline selector +and a language selector. + +

    +Screenshot showing the language selector. +The language selector let's a user choose from a list of languages. +

    + +You could, for example, leverage this in a notification Blueprint to allow +setting a different language on a text-to-speech notification. + +[More information can be found in our selectors documentation](/docs/blueprint/selectors). + +## Other noteworthy changes + +There is much more juice in this release; here are some of the other noteworthy +changes this release: + +- [Home Assistant Operating System v10 has been released!] The ODROID M-1 is now supported, improved data disk support and memory management. Bug fixes and reliability improvements for Bluetooth and Thread. +- [Matter] now has support for covers, thanks [@hidaris]! +- The process of making backups is now faster 🚀, thanks [@bdraco]! +- [@bdraco] also gave the [ONVIF] integration some love, which should improve + the stability of the integration. Nice! +- You can now set up multiple instances of the [OpenAI Conversation] integration + with, for example, different prompts. Thanks, [@balloob]! +- [@rubenbe] added direction support to [MQTT] fans! Nice! +- [BTHome] added support for button and dimmer events. This means it supports + the brand new [Shelly BLU Button1]! Thanks, [@Ernst79]! +- The [Supervisor] can now create repair issues for some of the issues + it detected on your system. Awesome [@mdegat01]! +- [@mib1185] added a service to allow sorting of the [Shopping list]. Thanks! +- [@depoll] added an attribute to the [Person] entities that list the device + trackers for this person. Very useful for templates! Thanks! +- The [NextDNS] integration added a whole bunch of new parental control + switches, thanks [@bieniu]! +- [Synology DSM] can now browse your Synology Photos in the media browser. Cool + addition, [@lodesmets]! +- [Simplepush] now supports attachments, thanks to [@tymm]! +- Some [Z-Wave] notification sensors won't clear to idle automatically. Now you can use the new notification idle buttons to idle them manually! + +[Home Assistant Operating System v10 has been released!]: https://www.home-assistant.io/blog/2023/04/18/home-assistant-os-release-10/ +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@depoll]: https://github.com/depoll +[@Ernst79]: https://github.com/Ernst79 +[@hidaris]: https://github.com/hidaris +[@lodesmets]: https://github.com/lodesmets +[@mdegat01]: https://github.com/mdegat01 +[@mib1185]: https://github.com/mib1185 +[@rubenbe]: https://github.com/rubenbe +[@tymm]: https://github.com/tymm +[bthome]: /integrations/bthome +[matter]: /integrations/matter +[mqtt]: /integrations/mqtt +[nextdns]: /integrations/nextdns +[onvif]: /integrations/onvif +[openai conversation]: /integrations/openai_conversation +[person]: /integrations/person +[shelly blu button1]: https://www.shelly.cloud/en/products/shop/shelly-blu-button1?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq +[shopping list]: /integrations/shopping_list +[simplepush]: /integrations/simplepush +[supervisor]: /integrations/hassio +[synology dsm]: /integrations/synology_dsm +[z-wave]: /integrations/zwave_js + +## New Integrations + +We welcome the following new integrations in this release: + +- **[Android TV Remote]**, added by [@tronikos]
    + Launch apps and control your Android TV device. +- **[RAPT Bluetooth]**, added by [@sairon]
    + Integrates RAPT Pill hydrometers into Home Assistant. +- **[Voice over IP]**, added by [@synesthesiam]
    + Talk to [Assist] using an analog phone and a VoIP adapter. +- **[Wyoming]**, added by [@synesthesiam]
    + Connect to voice services supporting the Wyoming protocol. +- **[Roborock]**, added by [@Lash-L]
    + Control your RoboRock vacuum maintaining Roborock app support. +- **[Anova]**, added by [@Lash-L]
    + Control Anova sous vides with Wi-Fi capabilities. + +This release also has a new virtual integration. Virtual integrations +are stubs that are handled by other (existing) integrations to help with +findability. This one is new: + +- **[Monessen]** provided by [Intellifire], added by [@jeeftor] + +[@jeeftor]: https://github.com/jeeftor +[@Lash-L]: https://github.com/Lash-L +[@sairon]: https://github.com/sairon +[@synesthesiam]: https://github.com/synesthesiam +[@synesthesiam]: https://github.com/synesthesiam +[@tronikos]: https://github.com/tronikos +[android tv remote]: /integrations/androidtv_remote +[Anova]: /integrations/anova +[assist]: /docs/assist +[Intellifire]: /integrations/intellifire +[Monessen]: /integrations/monessen +[RAPT Bluetooth]: /integrations/rapt_ble +[Roborock]: /integrations/roborock +[voice over ip]: /integrations/voip +[Wyoming]: /integrations/wyoming + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[Brottsplatskartan]**, done by [@gjohansson-ST] +- **[qBittorrent]**, done by [@chrisx8] +- **[Snapcast]**, done by [@luar123] +- **[Workday]**, done by [@gjohansson-ST] + +[@chrisx8]: https://github.com/chrisx8 +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@luar123]: https://github.com/luar123 +[brottsplatskartan]: /integrations/brottsplatskartan +[qbittorrent]: /integrations/qbittorrent +[snapcast]: /integrations/snapcast +[workday]: /integrations/workday + +## Release 2023.5.1 - May 4 + +- Fix onvif setup when time set service is not functional ([@bdraco] - [#92447]) ([onvif docs]) +- Fix onvif cameras with invalid encodings in device info ([@bdraco] - [#92450]) ([onvif docs]) +- Bump `aionotion` to 2023.05.0 ([@bachya] - [#92451]) ([notion docs]) +- Fix lifx light strips when color zones are not initially populated ([@bdraco] - [#92487]) ([lifx docs]) +- Bump bluetooth-auto-recovery 1.1.2 ([@bdraco] - [#92495]) ([bluetooth docs]) +- Force migration of cloud settings to exposed_entities ([@emontnemery] - [#92499]) ([cloud docs]) +- Update frontend to 20230503.2 ([@bramkragten] - [#92508]) ([frontend docs]) + +[#92422]: https://github.com/home-assistant/core/pull/92422 +[#92447]: https://github.com/home-assistant/core/pull/92447 +[#92450]: https://github.com/home-assistant/core/pull/92450 +[#92451]: https://github.com/home-assistant/core/pull/92451 +[#92487]: https://github.com/home-assistant/core/pull/92487 +[#92495]: https://github.com/home-assistant/core/pull/92495 +[#92499]: https://github.com/home-assistant/core/pull/92499 +[#92508]: https://github.com/home-assistant/core/pull/92508 +[@bachya]: https://github.com/bachya +[@bdraco]: https://github.com/bdraco +[@bramkragten]: https://github.com/bramkragten +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[bluetooth docs]: /integrations/bluetooth/ +[cloud docs]: /integrations/cloud/ +[frontend docs]: /integrations/frontend/ +[lifx docs]: /integrations/lifx/ +[notion docs]: /integrations/notion/ +[onvif docs]: /integrations/onvif/ + +## Release 2023.5.2 - May 5 + +- Fix transmission error handling ([@DDanii] - [#91548]) ([transmission docs]) +- Fix power sensor state_class in Netatmo integration ([@hex7c0] - [#92468]) ([netatmo docs]) +- Fix for SIA Code not being handled well ([@eavanvalkenburg] - [#92469]) ([sia docs]) +- Fix scene service examples ([@karwosts] - [#92501]) ([scene docs]) +- Fix blocking I/O in the event loop when starting ONVIF ([@bdraco] - [#92518]) ([onvif docs]) +- Improve cloud migration ([@emontnemery] - [#92520]) ([cloud docs]) +- Bump aioesphomeapi to 13.7.3 to fix disconnecting while handshake is in progress ([@bdraco] - [#92537]) ([esphome docs]) +- Handle invalid ZHA cluster handlers ([@puddly] - [#92543]) ([zha docs]) +- Allow duplicate state updates when force_update is set on an esphome sensor ([@bdraco] - [#92553]) ([esphome docs]) +- Bump elkm1-lib to 2.2.2 ([@bdraco] - [#92560]) ([elkm1 docs]) +- Re-run expose entities migration if first time failed ([@balloob] - [#92564]) ([cloud docs]) +- Fix hassio get_os_info retry ([@epenet] - [#92569]) ([hassio docs]) +- Bump hatasmota to 0.6.5 ([@emontnemery] - [#92585]) ([tasmota docs]) +- Improve reliability of ONVIF subscription renewals ([@bdraco] - [#92551]) ([onvif docs]) +- Lower scan interval for OpenSky ([@joostlek] - [#92593]) ([opensky docs]) +- Update frontend to 20230503.3 ([@bramkragten] - [#92617]) ([frontend docs]) +- Fix missing ONVIF events when switching from PullPoint to webhooks ([@bdraco] - [#92627]) ([onvif docs]) +- Add support for visitor detections to onvif ([@bdraco] - [#92350]) ([onvif docs]) +- Fix duplicate ONVIF sensors ([@bdraco] - [#92629]) ([onvif docs]) + +[#91548]: https://github.com/home-assistant/core/pull/91548 +[#92350]: https://github.com/home-assistant/core/pull/92350 +[#92422]: https://github.com/home-assistant/core/pull/92422 +[#92468]: https://github.com/home-assistant/core/pull/92468 +[#92469]: https://github.com/home-assistant/core/pull/92469 +[#92501]: https://github.com/home-assistant/core/pull/92501 +[#92513]: https://github.com/home-assistant/core/pull/92513 +[#92518]: https://github.com/home-assistant/core/pull/92518 +[#92520]: https://github.com/home-assistant/core/pull/92520 +[#92537]: https://github.com/home-assistant/core/pull/92537 +[#92543]: https://github.com/home-assistant/core/pull/92543 +[#92551]: https://github.com/home-assistant/core/pull/92551 +[#92553]: https://github.com/home-assistant/core/pull/92553 +[#92560]: https://github.com/home-assistant/core/pull/92560 +[#92564]: https://github.com/home-assistant/core/pull/92564 +[#92569]: https://github.com/home-assistant/core/pull/92569 +[#92585]: https://github.com/home-assistant/core/pull/92585 +[#92593]: https://github.com/home-assistant/core/pull/92593 +[#92617]: https://github.com/home-assistant/core/pull/92617 +[#92627]: https://github.com/home-assistant/core/pull/92627 +[#92629]: https://github.com/home-assistant/core/pull/92629 +[@DDanii]: https://github.com/DDanii +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bramkragten]: https://github.com/bramkragten +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@emontnemery]: https://github.com/emontnemery +[@epenet]: https://github.com/epenet +[@frenck]: https://github.com/frenck +[@hex7c0]: https://github.com/hex7c0 +[@joostlek]: https://github.com/joostlek +[@karwosts]: https://github.com/karwosts +[@puddly]: https://github.com/puddly +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[bluetooth docs]: /integrations/bluetooth/ +[cloud docs]: /integrations/cloud/ +[elkm1 docs]: /integrations/elkm1/ +[esphome docs]: /integrations/esphome/ +[frontend docs]: /integrations/frontend/ +[hassio docs]: /integrations/hassio/ +[lifx docs]: /integrations/lifx/ +[netatmo docs]: /integrations/netatmo/ +[notion docs]: /integrations/notion/ +[onvif docs]: /integrations/onvif/ +[opensky docs]: /integrations/opensky/ +[scene docs]: /integrations/scene/ +[sia docs]: /integrations/sia/ +[tasmota docs]: /integrations/tasmota/ +[transmission docs]: /integrations/transmission/ +[zha docs]: /integrations/zha/ + +## Release 2023.5.3 - May 14 + +- Roborock continue on failed mqtt disconnect ([@Lash-L] - [#92502]) ([roborock docs]) +- Bump bimmer_connected to 0.13.3 ([@rikroe] - [#92648]) ([bmw_connected_drive docs]) +- Fix parallel_updates being acquired too late for entity executor jobs ([@bdraco] - [#92681]) +- Always request at least one zone for multi-zone LIFX devices ([@bdraco] - [#92683]) ([lifx docs]) +- Fix onvif reauth when device returns a http 401/403 error ([@bdraco] - [#92690]) ([onvif docs]) +- Bump `aionotion` to 2023.05.1 ([@bachya] - [#92697]) ([notion docs]) +- Bump pyoverkiz to 1.7.8 ([@iMicknl] - [#92702]) ([overkiz docs]) +- Bump aiowebostv to 0.3.3 to fix Python 3.11 support ([@thecode] - [#92736]) ([webostv docs]) +- Update deprecated functions in SIA ([@eavanvalkenburg] - [#92737]) ([sia docs]) +- Bump aioesphomeapi to 3.7.4 to fix proxied BLE connections not retrying right away on error ([@bdraco] - [#92741]) ([esphome docs]) +- Increase timeout to 30 seconds for Mazda integration ([@bdr99] - [#92744]) ([mazda docs]) +- Fix zwave_js services example data ([@karwosts] - [#92748]) ([zwave_js docs]) +- Bump asyncsleepiq to 1.3.5 ([@kbickar] - [#92759]) ([sleepiq docs]) +- Update aioairzone to v0.5.3 ([@Noltari] - [#92780]) ([airzone docs]) +- Fix race in Alexa async_enable_proactive_mode ([@emontnemery] - [#92785]) ([alexa docs]) +- Fix Airzone Auto operation mode ([@Noltari] - [#92796]) ([airzone docs]) +- Update aioairzone to v0.5.5 ([@Noltari] - [#92812]) ([airzone docs]) +- Don't try to restore unavailable nor unknown states ([@dgomes] - [#92825]) ([integration docs]) +- Bump sonos-websocket to 0.1.1 ([@jjlawren] - [#92834]) ([sonos docs]) +- Allow "no" to match "nb" in language util ([@synesthesiam] - [#92862]) +- Bump ZHA dependencies ([@puddly] - [#92870]) ([zha docs]) +- Add ONVIF services to diagnostics ([@bdraco] - [#92878]) ([onvif docs]) +- Bump UPB integration library to 0.5.4 ([@gwww] - [#92879]) ([upb docs]) +- Bump bluetooth-auto-recovery to 1.2.0 ([@bdraco] - [#92893]) ([bluetooth docs]) +- Fix already_configured string in workday ([@gjohansson-ST] - [#92901]) ([workday docs]) +- Fix uptime sensor deviation detection in Fritz!Tools ([@mib1185] - [#92907]) ([fritz docs]) +- Bump volvooncall to 0.10.3 to fix sensor type error ([@decompil3d] - [#92913]) ([volvooncall docs]) +- Bump eternalegypt to 0.0.16 ([@tkdrob] - [#92919]) ([netgear_lte docs]) +- Bump python-vehicle to 1.0.1 ([@joostlek] - [#92933]) ([rdw docs]) +- Fix remove of device when surveillance station is not used in Synology DSM ([@mib1185] - [#92957]) ([synology_dsm docs]) +- Bump reolink-aio to 0.5.15 ([@starkillerOG] - [#92979]) ([reolink docs]) +- Bump bellows to 0.35.5 to fix Aqara Zigbee connectivity issue ([@puddly] - [#92999]) ([zha docs]) +- Disable cleanup_closed for aiohttp.TCPConnector with cpython 3.11.1+ ([@bdraco] - [#93013]) +- Fix sslv2/sslv3 with unverified connections ([@bdraco] - [#93037]) +- Fix a series of bugs due to Notion API changes ([@bachya] - [#93039]) ([notion docs]) + +[#92422]: https://github.com/home-assistant/core/pull/92422 +[#92502]: https://github.com/home-assistant/core/pull/92502 +[#92513]: https://github.com/home-assistant/core/pull/92513 +[#92610]: https://github.com/home-assistant/core/pull/92610 +[#92648]: https://github.com/home-assistant/core/pull/92648 +[#92681]: https://github.com/home-assistant/core/pull/92681 +[#92683]: https://github.com/home-assistant/core/pull/92683 +[#92690]: https://github.com/home-assistant/core/pull/92690 +[#92697]: https://github.com/home-assistant/core/pull/92697 +[#92702]: https://github.com/home-assistant/core/pull/92702 +[#92736]: https://github.com/home-assistant/core/pull/92736 +[#92737]: https://github.com/home-assistant/core/pull/92737 +[#92741]: https://github.com/home-assistant/core/pull/92741 +[#92744]: https://github.com/home-assistant/core/pull/92744 +[#92748]: https://github.com/home-assistant/core/pull/92748 +[#92759]: https://github.com/home-assistant/core/pull/92759 +[#92780]: https://github.com/home-assistant/core/pull/92780 +[#92785]: https://github.com/home-assistant/core/pull/92785 +[#92796]: https://github.com/home-assistant/core/pull/92796 +[#92812]: https://github.com/home-assistant/core/pull/92812 +[#92825]: https://github.com/home-assistant/core/pull/92825 +[#92834]: https://github.com/home-assistant/core/pull/92834 +[#92862]: https://github.com/home-assistant/core/pull/92862 +[#92870]: https://github.com/home-assistant/core/pull/92870 +[#92878]: https://github.com/home-assistant/core/pull/92878 +[#92879]: https://github.com/home-assistant/core/pull/92879 +[#92893]: https://github.com/home-assistant/core/pull/92893 +[#92901]: https://github.com/home-assistant/core/pull/92901 +[#92907]: https://github.com/home-assistant/core/pull/92907 +[#92913]: https://github.com/home-assistant/core/pull/92913 +[#92919]: https://github.com/home-assistant/core/pull/92919 +[#92933]: https://github.com/home-assistant/core/pull/92933 +[#92957]: https://github.com/home-assistant/core/pull/92957 +[#92979]: https://github.com/home-assistant/core/pull/92979 +[#92999]: https://github.com/home-assistant/core/pull/92999 +[#93013]: https://github.com/home-assistant/core/pull/93013 +[#93037]: https://github.com/home-assistant/core/pull/93037 +[#93039]: https://github.com/home-assistant/core/pull/93039 +[@Lash-L]: https://github.com/Lash-L +[@Noltari]: https://github.com/Noltari +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@decompil3d]: https://github.com/decompil3d +[@dgomes]: https://github.com/dgomes +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@gwww]: https://github.com/gwww +[@iMicknl]: https://github.com/iMicknl +[@jjlawren]: https://github.com/jjlawren +[@joostlek]: https://github.com/joostlek +[@karwosts]: https://github.com/karwosts +[@kbickar]: https://github.com/kbickar +[@mib1185]: https://github.com/mib1185 +[@puddly]: https://github.com/puddly +[@rikroe]: https://github.com/rikroe +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@thecode]: https://github.com/thecode +[@tkdrob]: https://github.com/tkdrob +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[airzone docs]: /integrations/airzone/ +[alexa docs]: /integrations/alexa/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[cloud docs]: /integrations/cloud/ +[esphome docs]: /integrations/esphome/ +[fritz docs]: /integrations/fritz/ +[frontend docs]: /integrations/frontend/ +[integration docs]: /integrations/integration/ +[lifx docs]: /integrations/lifx/ +[mazda docs]: /integrations/mazda/ +[netgear_lte docs]: /integrations/netgear_lte/ +[notion docs]: /integrations/notion/ +[onvif docs]: /integrations/onvif/ +[overkiz docs]: /integrations/overkiz/ +[rdw docs]: /integrations/rdw/ +[reolink docs]: /integrations/reolink/ +[roborock docs]: /integrations/roborock/ +[sia docs]: /integrations/sia/ +[sleepiq docs]: /integrations/sleepiq/ +[sonos docs]: /integrations/sonos/ +[synology_dsm docs]: /integrations/synology_dsm/ +[upb docs]: /integrations/upb/ +[volvooncall docs]: /integrations/volvooncall/ +[webostv docs]: /integrations/webostv/ +[workday docs]: /integrations/workday/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ + +## Release 2023.5.4 - May 23 + +- Fix weather handling in zamg ([@killer0071234] - [#85635]) ([zamg docs]) +- Fix onvif cameras that cannot parse relative time ([@bdraco] - [#92711]) ([onvif docs]) (dependency) +- Update solax state class for sensors with no units ([@MichaelMraka] - [#92914]) ([solax docs]) +- Fix NWS error with no observation ([@MatthewFlamm] - [#92997]) ([nws docs]) +- Increase timeout to 30 seconds for homeassistant_alerts integration ([@N3rdix] - [#93089]) ([homeassistant_alerts docs]) +- Fix ONVIF cameras that change the xaddr for the pull point service ([@bdraco] - [#93104]) ([onvif docs]) +- Bump pyunifiprotect to 4.9.0 ([@bdraco] - [#93106]) ([unifiprotect docs]) (dependency) +- Fix last imap message is not reset on empty search ([@jbouwh] - [#93119]) ([imap docs]) +- Bump `accuweather` to version 0.5.2 ([@bieniu] - [#93130]) ([accuweather docs]) (dependency) +- Better handling of source sensor unavailability in Riemman Integration ([@dgomes] - [#93137]) ([integration docs]) +- Bump `regenmaschine` to 2023.05.1 ([@bachya] - [#93139]) ([rainmachine docs]) (dependency) +- Bump pyatv to 0.11.0 ([@bdraco] - [#93172]) ([apple_tv docs]) +- Fix china login for bmw_connected_drive ([@rikroe] - [#93180]) ([bmw_connected_drive docs]) +- Add Fan and Dry HVAC modes to Advantage Air MyTemp preset ([@Bre77] - [#93189]) ([advantage_air docs]) +- Disconnect yale access locks at the stop event ([@bdraco] - [#93192]) ([august docs]) ([yalexs_ble docs]) (dependency) +- Add support for Yale Home brand to august ([@bdraco] - [#93214]) ([august docs]) +- Bump async-upnp-client to 0.33.2 ([@StevenLooman] - [#93329]) (dependency) +- Bump `aionotion` to 2023.05.5 ([@bachya] - [#93334]) ([notion docs]) +- Bump zwave-js-server-python to 0.48.1 ([@raman325] - [#93342]) ([zwave_js docs]) (dependency) +- Bump glances_api to 0.4.2 ([@freeDom-] - [#93352]) ([glances docs]) +- Fix august configuration url with Yale Home brand ([@bdraco] - [#93361]) ([august docs]) (dependency) +- Bump httpx to 0.24.1 ([@epenet] - [#93396]) (dependency) +- Fix non threadsafe call xiaomi_aqara ([@bdraco] - [#93405]) ([xiaomi_aqara docs]) +- Bump Matter server library to 3.4.1 and address changes ([@marcelveldt] - [#93411]) ([matter docs]) (dependency) +- Fix race in tracking pending writes in recorder ([@bdraco] - [#93414]) ([recorder docs]) + +[#85635]: https://github.com/home-assistant/core/pull/85635 +[#92422]: https://github.com/home-assistant/core/pull/92422 +[#92513]: https://github.com/home-assistant/core/pull/92513 +[#92610]: https://github.com/home-assistant/core/pull/92610 +[#92711]: https://github.com/home-assistant/core/pull/92711 +[#92914]: https://github.com/home-assistant/core/pull/92914 +[#92997]: https://github.com/home-assistant/core/pull/92997 +[#93066]: https://github.com/home-assistant/core/pull/93066 +[#93089]: https://github.com/home-assistant/core/pull/93089 +[#93104]: https://github.com/home-assistant/core/pull/93104 +[#93106]: https://github.com/home-assistant/core/pull/93106 +[#93119]: https://github.com/home-assistant/core/pull/93119 +[#93130]: https://github.com/home-assistant/core/pull/93130 +[#93137]: https://github.com/home-assistant/core/pull/93137 +[#93139]: https://github.com/home-assistant/core/pull/93139 +[#93172]: https://github.com/home-assistant/core/pull/93172 +[#93180]: https://github.com/home-assistant/core/pull/93180 +[#93189]: https://github.com/home-assistant/core/pull/93189 +[#93192]: https://github.com/home-assistant/core/pull/93192 +[#93214]: https://github.com/home-assistant/core/pull/93214 +[#93329]: https://github.com/home-assistant/core/pull/93329 +[#93334]: https://github.com/home-assistant/core/pull/93334 +[#93342]: https://github.com/home-assistant/core/pull/93342 +[#93352]: https://github.com/home-assistant/core/pull/93352 +[#93361]: https://github.com/home-assistant/core/pull/93361 +[#93396]: https://github.com/home-assistant/core/pull/93396 +[#93405]: https://github.com/home-assistant/core/pull/93405 +[#93411]: https://github.com/home-assistant/core/pull/93411 +[#93414]: https://github.com/home-assistant/core/pull/93414 +[@Bre77]: https://github.com/Bre77 +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@MichaelMraka]: https://github.com/MichaelMraka +[@N3rdix]: https://github.com/N3rdix +[@StevenLooman]: https://github.com/StevenLooman +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@dgomes]: https://github.com/dgomes +[@epenet]: https://github.com/epenet +[@freeDom-]: https://github.com/freeDom- +[@frenck]: https://github.com/frenck +[@jbouwh]: https://github.com/jbouwh +[@killer0071234]: https://github.com/killer0071234 +[@marcelveldt]: https://github.com/marcelveldt +[@raman325]: https://github.com/raman325 +[@rikroe]: https://github.com/rikroe +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[apple_tv docs]: /integrations/apple_tv/ +[august docs]: /integrations/august/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[cloud docs]: /integrations/cloud/ +[frontend docs]: /integrations/frontend/ +[glances docs]: /integrations/glances/ +[homeassistant_alerts docs]: /integrations/homeassistant_alerts/ +[imap docs]: /integrations/imap/ +[integration docs]: /integrations/integration/ +[lifx docs]: /integrations/lifx/ +[matter docs]: /integrations/matter/ +[notion docs]: /integrations/notion/ +[nws docs]: /integrations/nws/ +[onvif docs]: /integrations/onvif/ +[rainmachine docs]: /integrations/rainmachine/ +[recorder docs]: /integrations/recorder/ +[solax docs]: /integrations/solax/ +[unifiprotect docs]: /integrations/unifiprotect/ +[xiaomi_aqara docs]: /integrations/xiaomi_aqara/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[zamg docs]: /integrations/zamg/ +[zwave_js docs]: /integrations/zwave_js/ + +## 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 "Accuweather" %} + +The `ozone` sensors and the `ozone` state attribute of the weather entity showed +incorrect values and are being removed. If you use these values in your +automations or scripts, you need to update them. + +([@bieniu] - [#91492]) ([documentation](/integrations/accuweather)) + +[@bieniu]: https://github.com/bieniu +[#91492]: https://github.com/home-assistant/core/pull/91492 + +{% enddetails %} + +{% details "Android TV" %} + +The "Android TV" integration has been renamed to "Android Debug Bridge". + +This rename is because that is what it actually controlled/provided. With +the addition of the Android TV Remote integration in this release, we wanted +to reduce possible confusion in the future. + +([@tronikos] - [#90657]) ([documentation](/integrations/androidtv)) + +[@tronikos]: https://github.com/tronikos +[#90657]: https://github.com/home-assistant/core/pull/90657 + +{% enddetails %} + +{% details "History" %} + +All YAML configuration options for the history integration have been removed +as they were no longer used by the frontend. + +([@bdraco] - [#90992]) ([documentation](/integrations/history)) + +[@bdraco]: https://github.com/bdraco +[#90992]: https://github.com/home-assistant/core/pull/90992 + +{% enddetails %} + +{% details "HomeKit" %} + +The min/max target humidities for (de)humidifier device exposed over HomeKit +has changed. The HomeKit UI will now show the real relative humidity. When +the slider in HomeKit goes above or below the max/min set humidity, it will +be set back to the max/min allowed humidity. + +([@stackia] - [#90854]) ([documentation](/integrations/homekit)) + +[@stackia]: https://github.com/stackia +[#90854]: https://github.com/home-assistant/core/pull/90854 + +--- + +Default HomeKit to listen on all interfaces to match Home Assistant behavior. +To limit HomeKit to specific network interfaces, specify an `address` +in `configuration.yaml`. + +([@bdraco] - [#91520]) ([documentation](/integrations/homekit)) + +[@bdraco]: https://github.com/bdraco +[#91520]: https://github.com/home-assistant/core/pull/91520 + +{% enddetails %} + +{% details "IMAP" %} + +The use of `imap_content` event could break for users that want to parse data +from larger email messages from the truncated part. Only the first 2048 +bytes of the message body (2 KiB) will be available. + +([@jbouwh] - [#92066]) ([documentation](/integrations/imap)) + +[@jbouwh]: https://github.com/jbouwh +[#92066]: https://github.com/home-assistant/core/pull/92066 + +{% enddetails %} + +{% details "Overkiz" %} + +The silence option for DynamicShutter has been removed because it caused the +cover entity to be non-functional if it did not support silence. This +functionality will be reintroduced in a future release. + +([@iMicknl] - [#91354]) ([documentation](/integrations/overkiz)) + +[@iMicknl]: https://github.com/iMicknl +[#91354]: https://github.com/home-assistant/core/pull/91354 + +{% enddetails %} + +{% details "Reolink" %} + +For Reolink doorbells, the "Status LED" light entity is replaced by a +"Status LED" select entity. The switch `off` state corresponds to the select +`Auto`, and the switch `on` state corresponds to the select +`Auto & always on at night`. An additional `Stay off` state is now available. + +([@starkillerOG] - [#90469]) ([documentation](/integrations/reolink)) + +[@starkillerOG]: https://github.com/starkillerOG +[#90469]: https://github.com/home-assistant/core/pull/90469 + +{% enddetails %} + +{% details "Snapcast" %} + +- Muted groups with stream playing will have state `idle` instead of `playing`. +- Connected clients will not have state `on` anymore but use the same states as + groups: `idle` and `playing`. +- Disconnected clients have state `standby` instead of `off` because the + Snapcast server still accepts commands. + +([@luar123] - [#77449]) ([documentation](/integrations/snapcast)) + +[@luar123]: https://github.com/luar123 +[#77449]: https://github.com/home-assistant/core/pull/77449 + +{% enddetails %} + +{% details "Synology DSM" %} + +The unit conversion for all memory, storage, and network utilization-related +sensors was corrected from binary (_1024_) to decimal (_1000_) base to be in +line with the used measurement units (_eq. MB = 1.000.000 bytes_). + +You may need to update the historically recorded units for these sensors via +the statistics page under developer tools. + +([@mib1185] - [#90633]) ([documentation](/integrations/synology_dsm)) + +[@mib1185]: https://github.com/mib1185 +[#90633]: https://github.com/home-assistant/core/pull/90633 + +{% enddetails %} + +{% details "Templates" %} + +The `ensure_ascii` argument for `to_json` in Jinja templates now defaults to +`False`, allowing us to use a faster JSON encoder by default. + +This should not be an issue for most, as JSON parsers broadly accept Unicode +input. If you still need to encode Unicode characters inside JSON strings, +set `ensure_ascii` to `True` explicitly to restore the old behavior. + +([@depoll] - [#91253]) + +[@depoll]: https://github.com/depoll +[#91253]: https://github.com/home-assistant/core/pull/90863 + +{% enddetails %} + +{% details "UniFi Network" %} + +UniFi integration no longer provides both `hostname` and `host_name` attributes +for a client tracker entity. Only `host_name` will be provided as an attribute. + +([@Kane610] - [#91188]) ([documentation](/integrations/unifi)) + +[@Kane610]: https://github.com/Kane610 +[#91188]: https://github.com/home-assistant/core/pull/91188 + +{% enddetails %} + +{% details "UniFi Protect" %} + +The previous deprecated `set_doorbell_message` service has been removed. Use +the text entity for the UniFi Protect LCD screen instead. + +([@AngellusMortis] - [#91523]) ([documentation](/integrations/unifiprotect)) + +[@AngellusMortis]: https://github.com/AngellusMortis +[#91523]: https://github.com/home-assistant/core/pull/91523 + +{% enddetails %} + +{% details "Universal Devices ISY/IoX" %} + +The previously deprecated YAML configuration of the Universal Devices ISY/IoX +integration has been removed. + +Universal Devices ISY/IoX 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. + +([@shbatm] - [#91575]) ([documentation](/integrations/isy994)) + +[@shbatm]: https://github.com/shbatm +[#91575]: https://github.com/home-assistant/core/pull/91575 + +--- + +The built-in percentage unit `%` is now used for relative humidity and absolute +humidity instead of the custom units `%RH` and `%AH`, respectively. + +([@shbatm] - [#90863]) ([documentation](/integrations/isy994)) + +[@shbatm]: https://github.com/shbatm +[#90863]: https://github.com/home-assistant/core/pull/90863 + +--- + +The following custom ISY994 services have been removed: + +- `reload` +- `cleanup_entities` +- `system_query` +- `set_ramp_rate` +- `set_on_level` +- `run_network_resource` +- `set_variable` + +These services had been previously deprecated in favor of built-in services +and `number`, `select`, and `button` entities. Please update your automations +and dashboards to use the new entities and/or built-in services if you have +not already. + +([@shbatm] - [#91569]) ([documentation](/integrations/isy994)) + +[@shbatm]: https://github.com/shbatm +[#91569]: https://github.com/home-assistant/core/pull/91569 + +--- + +Dusk/Dawn nodes on Insteon Motion Sensors now have their states inverted to +correctly show "Light detected" during daylight and "No light" when the dusk +sensor is active. + +This is reversed from previous behavior. If you rely on this sensor in your +automations, they must be updated. + +([@shbatm] - [#92035]) ([documentation](/integrations/isy994)) + +[@shbatm]: https://github.com/shbatm +[#92035]: https://github.com/home-assistant/core/pull/92035 + +{% enddetails %} + +{% details "Webhooks" %} + +Two new Webhook trigger options have been added that limit how a webhook can +trigger an automation. A new _allowed_methods_ option can be used to control +which HTTP request methods can activate the trigger (`GET`, `HEAD`, `POST`, and +`PUT`). And the `local_only` option is used to allow devices outside your local +network to activate the trigger. + +Previously all webhook triggers could be activated by `HEAD`, `POST`, and `PUT` +methods from any device (local or on the internet). With the new options, only +`POST` and `PUT` are enabled by default. + +In Home Assistant Core 2023.7, any webhook trigger that does not set `local_only` +to false can only be activated by devices on the same network as Home Assistant. + +Click the gear/cog icon beside the Webhook ID to update your webhook triggers. +Then select an appropriate value for **Only accessible from the local network**. +It is necessary to deselect the option for the **Save** button to appear. Then +reselect the option if it should be enabled. This will make the repair warning +go away. + +![Screenshot shoting webhook trigger options](/images/blog/2023-05/breaking-change-webhook-triggers.png) + +See the [webhook trigger documentation](/docs/automation/trigger/#webhook-trigger) +for a description of the new options. And please review the new +[Webhook Security](/docs/automation/trigger/#webhook-security) section for best +practices when using webhook triggers. + +([@esev] - [#66494]) ([documentation](/integrations/webhook)) + +[@esev]: https://github.com/esev +[#66494]: https://github.com/home-assistant/core/pull/66494 + +{% enddetails %} + +{% details "Z-Wave" %} + +With this release, you will need to update your `zwave-js-server` instance. +You must use `zwave-js-server` 1.28.0 or greater (schema 28). + +- If you use the `Z-Wave JS` add-on, you need at least version `0.1.79`. +- If you use the `Z-Wave JS UI` add-on, you need at least version `1.11.2`. +- If you use the `Z-Wave JS UI` Docker container, you need at least version `8.14.2`. +- If you run your own Docker container or some other installation method, + you will need to update your `zwave-js-server` instance to at least `1.28.0`. + +([@raman325] - [#91989]) ([documentation](/integrations/zwave_js)) + +[@raman325]: https://github.com/raman325 +[#91989]: https://github.com/home-assistant/core/pull/91989 + +{% enddetails %} + +If you are a custom integration developer and want to learn about breaking +changes and new features available for your integration: Be sure to follow our +[developer blog][devblog]. The following are the most notable for this release: + +- [New limits for Supervisor Add-ons](https://developers.home-assistant.io/blog/2023/04/13/new_limits_for_add_ons) + +[devblog]: https://developers.home-assistant.io/blog/ + +## Farewell to the following + +The following integrations are also no longer available as of this release: + +- **Coronavirus (COVID-19)** has been removed. The data is no longer provided + by the source provider. + ([@emontnemery] - [#90934]) +- **Xbox Live** was previously deprecated and has now been removed. + The [Xbox integration] is still available. + ([@MartinHjelmare] - [#90592]) + +[@emontnemery]: https://github.com/emontnemery +[@martinhjelmare]: https://github.com/MartinHjelmare +[#90592]: https://github.com/home-assistant/core/pull/90592 +[#90934]: https://github.com/home-assistant/core/pull/90934 +[xbox integration]: /integrations/xbox + +## 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.5](/changelogs/core-2023.5) diff --git a/source/_redirects b/source/_redirects index 9e7e5b5c2bc..7a2b5732910 100644 --- a/source/_redirects +++ b/source/_redirects @@ -376,24 +376,24 @@ layout: null /getting-started/autostart-systemd https://community.home-assistant.io/t/autostart-using-systemd/199497 # Add-ons -/addons/cec_scan https://github.com/home-assistant/hassio-addons/blob/master/cec_scan/README.md -/addons/check_config https://github.com/home-assistant/hassio-addons/blob/master/check_config/README.md -/addons/configurator https://github.com/home-assistant/hassio-addons/blob/master/configurator/README.md -/addons/dhcp_server https://github.com/home-assistant/hassio-addons/blob/master/dhcp_server/README.md -/addons/dnsmasq https://github.com/home-assistant/hassio-addons/blob/master/dnsmasq/README.md -/addons/duckdns https://github.com/home-assistant/hassio-addons/blob/master/duckdns/README.md -/addons/git_pull https://github.com/home-assistant/hassio-addons/blob/master/git_pull/README.md -/addons/google_assistant https://github.com/home-assistant/hassio-addons/blob/master/google_assistant/README.md -/addons/homematic https://github.com/home-assistant/hassio-addons/blob/master/homematic/README.md -/addons/lets_encrypt https://github.com/home-assistant/hassio-addons/blob/master/letsencrypt/README.md -/addons/mariadb https://github.com/home-assistant/hassio-addons/blob/master/mariadb/README.md -/addons/mosquitto https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/README.md -/addons/nginx_proxy https://github.com/home-assistant/hassio-addons/blob/master/nginx_proxy/README.md -/addons/rpc_shutdown https://github.com/home-assistant/hassio-addons/blob/master/rpc_shutdown/README.md -/addons/samba https://github.com/home-assistant/hassio-addons/blob/master/samba/README.md -/addons/snips https://github.com/home-assistant/hassio-addons/blob/master/snips/README.md -/addons/ssh https://github.com/home-assistant/hassio-addons/blob/master/ssh/README.md -/addons/tellstick https://github.com/home-assistant/hassio-addons/blob/master/tellstick/README.md +/addons/cec_scan https://github.com/home-assistant/addons/blob/master/cec_scan/README.md +/addons/check_config https://github.com/home-assistant/addons/blob/master/check_config/README.md +/addons/configurator https://github.com/home-assistant/addons/blob/master/configurator/README.md +/addons/dhcp_server https://github.com/home-assistant/addons/blob/master/dhcp_server/README.md +/addons/dnsmasq https://github.com/home-assistant/addons/blob/master/dnsmasq/README.md +/addons/duckdns https://github.com/home-assistant/addons/blob/master/duckdns/README.md +/addons/git_pull https://github.com/home-assistant/addons/blob/master/git_pull/README.md +/addons/google_assistant https://github.com/home-assistant/addons/blob/master/google_assistant/README.md +/addons/homematic https://github.com/home-assistant/addons/blob/master/homematic/README.md +/addons/lets_encrypt https://github.com/home-assistant/addons/blob/master/letsencrypt/README.md +/addons/mariadb https://github.com/home-assistant/addons/blob/master/mariadb/README.md +/addons/mosquitto https://github.com/home-assistant/addons/blob/master/mosquitto/README.md +/addons/nginx_proxy https://github.com/home-assistant/addons/blob/master/nginx_proxy/README.md +/addons/rpc_shutdown https://github.com/home-assistant/addons/blob/master/rpc_shutdown/README.md +/addons/samba https://github.com/home-assistant/addons/blob/master/samba/README.md +/addons/snips https://github.com/home-assistant/addons/blob/master/snips/README.md +/addons/ssh https://github.com/home-assistant/addons/blob/master/ssh/README.md +/addons/tellstick https://github.com/home-assistant/addons/blob/master/tellstick/README.md # Redirect old /demo to new demo page /demo https://demo.home-assistant.io diff --git a/source/blue/index.html b/source/blue/index.html index 7925a686254..9b76f8d148b 100644 --- a/source/blue/index.html +++ b/source/blue/index.html @@ -37,6 +37,7 @@ frontpage_image: /images/frontpage/blue-frontpage.jpg

    Discontinued! The edition of the Blue was — limited. We are out of stock, with no plans to relaunch this edition.

    Sorry you missed it. The new kid on the block is Home Assistant Yellow.

    +

    Lover of ODROID? This way, please.

    You know what else is blue, pretty, and has our logo on it? Home Assistant SkyConnect.

    diff --git a/source/changelogs/core-2023.5.markdown b/source/changelogs/core-2023.5.markdown new file mode 100644 index 00000000000..7b584236156 --- /dev/null +++ b/source/changelogs/core-2023.5.markdown @@ -0,0 +1,1624 @@ +--- +title: Full Changelog for Home Assistant Core 2023.5 +description: Detailed changelog for the Home Assistant Core 2023.5 release +--- + +These are all the changes included in the Home Assistant Core 2023.5 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2023/05/03/release-20235/). + +## Full Changelog + +- Add config flow to qBittorrent ([@chrisx8] - [#82560]) +- Bump version to 2023.5.0dev0 ([@frenck] - [#90477]) +- Move ProxmoxEntity to entity.py ([@dougiteixeira] - [#90480]) +- Remove callback decorators where unneeded ([@raman325] - [#90478]) +- Add config-flow to Snapcast ([@luar123] - [#80288]) +- Add reauth to frontier_silicon config flow ([@wlcrs] - [#90443]) +- Add dimmable lights support to niko home control ([@jellenijhof12] - [#90141]) +- Add Landis+Gyr MWh-readings from ultraheat-api ([@vpathuis] - [#89937]) +- Add new control4 helper function ([@nalin29] - [#90234]) +- Make hassfest.dependencies faster with multiprocessing ([@akx] - [#81486]) +- Rename hassfest \_validate_dependencies_exist ([@emontnemery] - [#90503]) +- Add preferred wind speed unit to unit systems ([@emontnemery] - [#90504]) +- Use metric units internally in Accuweather integration ([@bieniu] - [#90444]) +- Add EV charging remote services for BMW/Mini ([@rikroe] - [#88759]) +- Avoid creating a task on callback in owntracks when using mqtt ([@bdraco] - [#90548]) +- Avoid more task creation in the discovery helper ([@bdraco] - [#90552]) +- Move icon constants to entity attributes ([@epenet] - [#90518]) +- Bump PyVicare to 2.25.0 ([@oischinger] - [#90536]) +- Update ruff to v0.0.260 ([@frenck] - [#90566]) +- Add CI timeout to codecov job ([@frenck] - [#90572]) +- Update black to 23.3.0 ([@frenck] - [#90569]) +- Use more meaningful states for snapcast groups and clients ([@luar123] - [#77449]) +- Update sentry-sdk to 1.18.0 ([@frenck] - [#90571]) +- Update orjson to 3.8.9 ([@frenck] - [#90570]) +- Add attachments to simplepush ([@tymm] - [#81033]) +- Ensure numeric sensors have a valid value ([@epenet] - [#85605]) +- Move attribution constants to entity attributes ([@epenet] - [#90519]) +- Use `get_ha_sensor_data` method to update glances sensors ([@engrbm87] - [#83983]) +- Refactor vicare config_flow tests ([@oischinger] - [#90568]) +- Remove unnecessary calls to `async_update_entry` from `async_migrate_entry` ([@emontnemery] - [#90575]) +- Remove some dead code from google_assistant ([@emontnemery] - [#90581]) +- Drop **eq** dunder method from Entity ([@emontnemery] - [#90585]) +- Add ComponentProtocol to improve type checking ([@epenet] - [#90586]) +- Remove xbox_live integration ([@MartinHjelmare] - [#90592]) +- TTS: allow resolving engine and test supported options ([@balloob] - [#90539]) +- Conversation: allow getting agent info ([@balloob] - [#90540]) +- Voice Assistant: improve error handling ([@balloob] - [#90541]) +- Speed up entity filter when there are many glob matchers ([@bdraco] - [#90615]) +- Use webrcvad to detect silence in pipelines ([@synesthesiam] - [#90610]) +- Bump securetar to 2023.3.0 ([@bdraco] - [#90612]) +- Adjust context id variable names in the logbook processor to improve readability ([@bdraco] - [#90617]) +- Use async_timeout instead of asyncio.wait_for ([@starkillerOG] - [#90496]) +- Speed up backups ([@bdraco] - [#90613]) +- Cleanup some duplicate code in recorder statistics ([@bdraco] - [#90549]) +- Fix voice assistant error variable ([@balloob] - [#90658]) +- Rename Android TV to Android Debug Bridge ([@tronikos] - [#90657]) +- Reolink late review comments ([@starkillerOG] - [#90668]) +- Deprecate imap_content_sensor ([@jbouwh] - [#90429]) +- Upgrade dwd_weather_warnings dependency dwdwfsapi to 1.0.6 ([@andarotajo] - [#90683]) +- Add support for Supla garage doors ([@alh84001] - [#90593]) +- Add DHCP discovery to Obihai ([@ejpenney] - [#88984]) +- Add sort list service to Shopping List ([@mib1185] - [#90671]) +- Make service field filter parameters exclusive ([@emontnemery] - [#90728]) +- Remove the LIFX sensor update coordinator ([@Djelibeybi] - [#90740]) +- Run pipeline from audio stream function ([@balloob] - [#90748]) +- Add myself to rest code owners ([@epenet] - [#90770]) +- Add `ms` to units comment for duration sensor device class ([@raman325] - [#90757]) +- Use slots for discovery dataclasses ([@bdraco] - [#90751]) +- Bump sqlalchemy to 2.0.8 ([@bdraco] - [#90756]) +- Preliminary support for Matter cover ([@hidaris] - [#90262]) +- Add core as codeowner for stt integration ([@MartinHjelmare] - [#90777]) +- Use domain constants in rest tests ([@epenet] - [#90765]) +- Rename renault coordinator and base entity ([@epenet] - [#90760]) +- Move legacy stt ([@MartinHjelmare] - [#90776]) +- Prevent legacy device tracker from creating hundreds of executor jobs ([@bdraco] - [#90690]) +- Extract Supla base entity into its own file ([@alh84001] - [#90781]) +- Run prettier on matter fixture ([@emontnemery] - [#90784]) +- Remove legacy services from lock/services.yaml ([@emontnemery] - [#90779]) +- Fix glob expansion for partial prettier run ([@emontnemery] - [#90787]) +- Rework MQTT config merging and adding defaults ([@jbouwh] - [#90529]) +- Bump locationsharinglib to 5.0.0 ([@GuyKh] - [#90790]) +- Remove getattr for Landis+Gyr Heat Meter ([@vpathuis] - [#90637]) +- Update to goodwe v0.2.31 ([@mletenay] - [#90808]) +- Remove myself from vicare codeowners ([@oischinger] - [#90755]) +- Add names to common helper tasks ([@bdraco] - [#90803]) +- Move dwd_weather_warnings constants to separate file ([@andarotajo] - [#90810]) +- Improve type hints in calendar trigger tests ([@epenet] - [#90827]) +- Fix lingering timers in image processing tests ([@epenet] - [#90829]) +- Fix lingering timers in mailbox tests ([@epenet] - [#90830]) +- Improve the HomeKit (de)humidifier min/max humidity handling ([@stackia] - [#90854]) +- Use built-in percentage unit for ISY994 relative humidity ([@shbatm] - [#90863]) +- Fix lingering timers in sensor tests ([@epenet] - [#90856]) +- Allow import of deprecated audioop module ([@emontnemery] - [#90869]) +- Use send_json_auto_id in voice_assistant tests ([@emontnemery] - [#90857]) +- Fix lingering timers in calendar tests ([@epenet] - [#90845]) +- Switch to fnv-hash-fast from fnvhash ([@bdraco] - [#90761]) +- Android TV Remote integration ([@tronikos] - [#89935]) +- Add device name fallback if no hostname in PrusaLink ([@piitaya] - [#90831]) +- Fix lingering timer in device_tracker ([@epenet] - [#90824]) +- Bump xiaomi-ble to 0.17.0 ([@Ernst79] - [#90806]) +- Move enum mapper to own file to prevent circular dependency ([@jesserockz] - [#90890]) +- Move local calendar diagnostics to pytest.mark.freezetime ([@allenporter] - [#90886]) +- Revert "Move local calendar diagnostics to pytest.mark.freezetime" ([@bdraco] - [#90899]) +- Add entity name translations to CO2signal ([@mib1185] - [#90877]) +- Drop unused logger argument for StorageCollection() ([@emontnemery] - [#90913]) +- Rewrite mailbox tests ([@epenet] - [#90906]) +- Remove the coronavirus integration ([@emontnemery] - [#90934]) +- Allow storing other items than untyped `dict` in `StorageCollection` ([@emontnemery] - [#90932]) +- Allow TTS requests to resolve in the background ([@balloob] - [#90944]) +- Update mypy to 1.2.0 ([@cdce8p] - [#90947]) +- Add a pipeline store to voice_assistant ([@emontnemery] - [#90844]) +- Refactor handling of exposed entities for cloud Alexa and Google ([@emontnemery] - [#89877]) +- Add mysql 8.0.32 to the CI ([@bdraco] - [#90898]) +- Bump androidtvremote2 to 0.0.5 ([@tronikos] - [#90922]) +- Improve proxmoxve generic typing ([@cdce8p] - [#90948]) +- Fix lingering timer in cloud ([@epenet] - [#90822]) +- Move plant const to separate file ([@joostlek] - [#91008]) +- Disable lazy discover in xiaomi_miio ([@mrwogu] - [#82601]) +- Filtered values are no longer rounded if values are not changed/calculated ([@dgomes] - [#76164]) +- Android TV Remote: Bump androidtvremote2==0.0.7 ([@tronikos] - [#91001]) +- Handle all three operating modes in Advantage Air climate ([@Bre77] - [#91107]) +- Require a list of entity ids when fetching history ([@bdraco] - [#90992]) +- Switch back to using call_later for the slow entity update warning ([@bdraco] - [#91067]) +- Clarify HomeKit include behavior in the config flow ([@bdraco] - [#91106]) +- Reduce bond fallback polling interval when BPUP is alive ([@bdraco] - [#90871]) +- Convert tasmota discovery callback function to a normal function ([@bdraco] - [#90865]) +- Add names to homekit tasks to better track startup problems ([@bdraco] - [#90802]) +- Reduce creation of MQTT related discovery tasks ([@bdraco] - [#90801]) +- Bump transmission-rpc to 4.1.5 ([@Mic92] - [#91088]) +- Bump homematicip to 1.0.14 ([@hahn-th] - [#91140]) +- Bump Advantage Air to 0.4.2 ([@Bre77] - [#91144]) +- Bump sqlalchemy to 2.0.9 ([@bdraco] - [#91151]) +- Reduce space to store state_attributes and event_data for new MariaDB/MySQL databases ([@bdraco] - [#91150]) +- Reduce overhead of legacy database columns on new installs ([@bdraco] - [#90246]) +- Bump orjson to 3.8.10 ([@bdraco] - [#91132]) +- Voice Assistant: Require sample rate as input ([@balloob] - [#91182]) +- Fix flaky filesize tests ([@epenet] - [#91200]) +- Use tmp_path in recorder tests ([@epenet] - [#91202]) +- Remove incorrect constant usage in test ([@epenet] - [#91198]) +- Remove myself as a codeowner of the LIFX integration ([@Djelibeybi] - [#91143]) +- Fix UniFi client tracker host_name missing ([@Kane610] - [#91188]) +- Bump aioswitcher to 3.3.0 ([@regevbr] - [#91215]) +- Update spotipy to 2.23.0 ([@frenck] - [#91217]) +- Update Pillow to 9.5.0 ([@frenck] - [#91218]) +- Cleanup mqtt CONFIG_SCHEMA_ENTRY ([@jbouwh] - [#90791]) +- Make dataclasses in HA core slotted ([@rlippmann] - [#91208]) +- Voip integration ([@synesthesiam] - [#90945]) +- Fix config entry unload in withings tests ([@epenet] - [#91210]) +- Ensure entry is unloaded in azure event hub tests ([@epenet] - [#91224]) +- Avoid multiple round trips to the database for history API calls ([@bdraco] - [#91193]) +- Call sqlite pragma optimize during periodic cleanup task ([@bdraco] - [#91245]) +- Allow UI configuration of entities exposed to voice_assistant ([@emontnemery] - [#91233]) +- Catch ssl errors in rest ([@mib1185] - [#91074]) +- Add a name to the background service call tasks ([@bdraco] - [#91252]) +- Suppress CancelledError in zwave-js unload ([@epenet] - [#91222]) +- Use tmp_path in tests ([@epenet] - [#91203]) +- Use RestoreSensor in derivative ([@gjohansson-ST] - [#91071]) +- Rename MQTT entry mock and cleanup ([@jbouwh] - [#91223]) +- Run `socket.gethostbyname` in executor in Obihai and Sonos ([@farmio] - [#91190]) +- Update zwave-me-ws version to 0.4.2 ([@lawfulchaos] - [#91068]) +- Add config flow to Brottsplatskartan ([@gjohansson-ST] - [#70233]) +- Bump codecov/codecov-action from 3.1.1 to 3.1.2 (@dependabot - [#91258]) +- Bump hass-nabucasa from 0.63.1 to 0.64.1 ([@ludeeus] - [#91271]) +- Fix Lutron keypad led state always off at startup ([@mikeknoop] - [#91149]) +- Add platform state tests for vesync integration ([@chuckdeal97] - [#90466]) +- Allow multiple instances for OpenAI ([@balloob] - [#90609]) +- Allow None device_class and UOM for mqtt entities ([@jbouwh] - [#91240]) +- Add tests to honeywell ([@mkmer] - [#87209]) +- Preserves config flow information in case of error for SQL ([@dougiteixeira] - [#91142]) +- Support unknown state, position or tilt for template cover ([@jbouwh] - [#91172]) +- Add h264_v4l2m2m codec and profiles to HomeKit cameras ([@shmuelzon] - [#91246]) +- Clean up srp_energy ([@briglx] - [#86822]) +- Make hass test fixture async ([@epenet] - [#91264]) +- Update typing on recorder pool for sqlalchemy 2.0 ([@bdraco] - [#91244]) +- Add pretty printing, key sorting, and better performance to to_json in Jinja ([@depoll] - [#91253]) +- Add certificate status for cloud remote ([@ludeeus] - [#91277]) +- Dockerdev: Improve docker caching layers ([@oliv3r] - [#85186]) +- Update sentry-sdk to 1.19.1 ([@frenck] - [#91310]) +- Update coverage to 7.2.3 ([@frenck] - [#91309]) +- Fix combined translation in Pi-hole strings ([@frenck] - [#91305]) +- Raise HomeAssistant error on failed Spotify service calls ([@frenck] - [#91299]) +- Update debugpy to 1.6.7 ([@frenck] - [#91267]) +- Make auth test fixtures async ([@epenet] - [#91263]) +- Add language util ([@synesthesiam] - [#91290]) +- Add VoIP entities ([@balloob] - [#91320]) +- Pipelines to default to Home Assistant agent ([@balloob] - [#91321]) +- Bump httpx to 0.24.0 and httpcore to 0.17.0 ([@bdraco] - [#91308]) +- Adjust shutdown registration in EntityComponent ([@epenet] - [#90938]) +- Use async_write_ha_state in generic hygrostat ([@frenck] - [#91331]) +- Use async_write_ha_state in tests ([@frenck] - [#91333]) +- Fix race condition in deconz ([@epenet] - [#91328]) +- Fix lingering timers in tts ([@epenet] - [#90834]) +- Move picnic sensor definitions ([@joostlek] - [#91367]) +- Fail CI on lingering timers (part 2) ([@epenet] - [#89976]) +- Avoid task creation when calling schedule_update_ha_state without force update ([@frenck] - [#91352]) +- Warn for unneeded use of async_update_ha_state ([@frenck] - [#91372]) +- Add stt entity ([@MartinHjelmare] - [#91230]) +- Add entity name translations to Picnic ([@joostlek] - [#91362]) +- Add ability to auto-cancel track_time_interval ([@epenet] - [#91381]) +- Bump actions/checkout from 3.5.0 to 3.5.2 (@dependabot - [#91373]) +- Fix incorrect warn of async_update_ha_state use ([@frenck] - [#91387]) +- Rename voice_assistant to assist_pipeline ([@emontnemery] - [#91371]) +- Improve performance of sums in the energy dashboard ([@bdraco] - [#91342]) +- Fix lingering timers in flux_led ([@epenet] - [#91379]) +- ESPHome voice assistant ([@jesserockz] - [#90691]) +- Fix lingering timers in analytics ([@epenet] - [#91363]) +- Fix lingering timer in EntityRegistryDisabledHandler ([@epenet] - [#91376]) +- Support Sonos announcements using websockets ([@jjlawren] - [#91145]) +- Do not allow mqtt lights to set brightness to zero ([@jbouwh] - [#91296]) +- Rename Particulate matter sensors to PM ([@frenck] - [#91384]) +- Allow GET in webhook triggers ([@swiergot] - [#56446]) +- Add webhook trigger allowed_methods/local_only options ([@esev] - [#66494]) +- Bump accuweather to version 0.5.1 ([@bieniu] - [#91412]) +- Remove duplicate webhook test ([@epenet] - [#91420]) +- Delete obsolete lines and add some missing type hints in OpenTherm Gateway integration ([@PatrickGlesner] - [#90530]) +- Add slots to dataclasses in default_config ([@rlippmann] - [#91410]) +- History API entity_id validation ([@flip-dots] - [#90067]) +- Bump yalexs to 1.3.0 ([@bdraco] - [#91431]) +- Add ability to shutdown a Debouncer ([@epenet] - [#91439]) +- Improve performance of tracking time changes ([@bdraco] - [#91433]) +- Use fast path for track_time_change that fires every second ([@bdraco] - [#91432]) +- Ensure recorder always attempts clean shutdown if recorder thread raises ([@bdraco] - [#91261]) +- Remove combined translations in integrations ([@epenet] - [#91337]) +- Update screenshot of featured integrations ([@joostlek] - [#91345]) +- Support marking an assist pipeline as preferred ([@emontnemery] - [#91418]) +- Improve async_track_point_in_time ([@epenet] - [#91451]) +- Improve tests subscribe connection for mqtt status ([@jbouwh] - [#91463]) +- Add option to select list of accepted ssl ciphers in httpx client ([@mib1185] - [#91389]) +- Add ssl_cipher_list option to rest ([@mib1185] - [#91078]) +- Fix error for when column does not exist in query to SQL ([@dougiteixeira] - [#91166]) +- Fix lingering timer in samsungtv ([@epenet] - [#91450]) +- Bump nextdns to version 1.4.0 ([@bieniu] - [#91490]) +- Remove `ozone` state attribute and `ozone` sensors from Accuweather ([@bieniu] - [#91492]) +- Streamline todoist test fixtures ([@allenporter] - [#91405]) +- Fix lingering timer in buienradar ([@epenet] - [#91378]) +- Automatically retry lost/timed out LIFX requests ([@bdraco] - [#91157]) +- Update pytest to 7.3.1 ([@frenck] - [#91497]) +- Expose ping drop rate Starlink sensor ([@boswelja] - [#91444]) +- Continue recording events until final write ([@bdraco] - [#91260]) +- Add dhcp ip update support to onvif ([@bdraco] - [#91474]) +- Bump aioruuvigateway to 0.1.0 ([@bdraco] - [#91512]) +- Bump TP-Link Omada API to enforce minimum controller version ([@MarkGodwin] - [#91498]) +- Bump bluetooth-data-tools to 0.4.0 ([@bdraco] - [#91442]) +- Use bluetooth data tools for address conversion in esphome ([@bdraco] - [#91443]) +- Add MyPlace support to Advantage Air ([@Bre77] - [#91108]) +- Add Synology Photos support ([@lodesmets] - [#86894]) +- Bump Advantage Air to 0.4.4 ([@Bre77] - [#91147]) +- Add a data model to Advantage Air ([@Bre77] - [#91519]) +- VoIP: Add is active call binary sensor ([@balloob] - [#91486]) +- Add RAPT Bluetooth integration ([@sairon] - [#87872]) +- Remove deprecated set_doorbell_message UniFi Protect service ([@AngellusMortis] - [#91523]) +- ESPHome: Use existing property with generated signal string ([@jesserockz] - [#91525]) +- Prevent combined translations in strings.json ([@epenet] - [#91334]) +- Handle invalidated Plex token ([@jjlawren] - [#91438]) +- Update pyfibaro to 0.7.0 ([@rappenze] - [#91510]) +- Default homekit to listening on all interfaces to match Home Assistant behavior ([@bdraco] - [#91520]) +- Add monessen virtual integration for Intellifire ([@jeeftor] - [#89315]) +- Build protobuf upb wheels ([@bdraco] - [#90812]) +- Enable strict typing of assist_pipeline ([@emontnemery] - [#91529]) +- Fix lingering timer in alert integration ([@epenet] - [#91452]) +- Fix lingering timers in sia tests ([@epenet] - [#91407]) +- Change entity category of IR light setting from control to config ([@krazos] - [#91382]) +- Add core as codeowner to tts ([@MartinHjelmare] - [#91539]) +- Fix incorrect regex in translation script ([@epenet] - [#91536]) +- Update pip constraint to allow for pip 23.1 ([@frenck] - [#91535]) +- SQL strings update db_url ([@gjohansson-ST] - [#91537]) +- Add more rule parsers to onvif ([@bdraco] - [#91533]) +- Update Todoist all day event handling following best practices ([@allenporter] - [#90491]) +- Update cryptography to 40.0.2 ([@frenck] - [#91528]) +- Allow config entries unload action to be coroutine ([@epenet] - [#91531]) +- Don't reload integration for AuthError in Honeywell ([@mkmer] - [#91228]) +- Remove PipelineEvent.as_dict ([@emontnemery] - [#91546]) +- Make it non-optional to implement supported_languages in tts.Provider ([@emontnemery] - [#91347]) +- Add WS API for debugging previous assist_pipeline runs ([@emontnemery] - [#91541]) +- Move legacy tts ([@MartinHjelmare] - [#91538]) +- Allow picking a pipeline for voip devices ([@balloob] - [#91524]) +- Create base TriggerEntity ([@gjohansson-ST] - [#91128]) +- Make tts/stt/conversation optional on pipeline ([@bramkragten] - [#91555]) +- Add WS API to `stt` ([@emontnemery] - [#91329]) +- Bump intents dependency ([@synesthesiam] - [#91556]) +- Add WS API to tts ([@emontnemery] - [#91330]) +- Make Debouncer shutdown async ([@epenet] - [#91542]) +- Fix history stats query using incorrect microseconds ([@bdraco] - [#91250]) +- Remove previously deprecated ISY994 services ([@shbatm] - [#91569]) +- Fix pipeline select ([@bramkragten] - [#91570]) +- Remove duplicate code in update coordinator ([@epenet] - [#91573]) +- ESPHome binary sensor representing assist pipeline running ([@jesserockz] - [#91406]) +- Remove previously deprecated ISY994 YAML support ([@shbatm] - [#91575]) +- ESPHome select for assist pipeline selection ([@jesserockz] - [#91526]) +- VoIP audio queue ([@synesthesiam] - [#91577]) +- Use language util in stt/tts ([@synesthesiam] - [#91521]) +- Use cache to lookup event type ids in logbook ([@bdraco] - [#91576]) +- EasyEnergy: Add two additional sensors to help pick the best hours ([@sstriker] - [#90543]) +- Dynamically size recorder max backlog based on available memory ([@bdraco] - [#90894]) +- Cleanup MQTT platform set up and discovery start ([@jbouwh] - [#91007]) +- Bump hass-nabucasa to 0.65.0 ([@balloob] - [#91565]) +- Improve comment in conversation ([@emontnemery] - [#91595]) +- Remove check on remove deprecated call back for mqtt subscribe ([@jbouwh] - [#91464]) +- Add timestamp to pipeline runs ([@emontnemery] - [#91599]) +- Use the preferred assist pipeline if none was specified ([@emontnemery] - [#91611]) +- Drop language parameter from async_get_pipeline ([@emontnemery] - [#91612]) +- Add ability to shutdown update coordinator ([@epenet] - [#91456]) +- Remove webhook translation file ([@epenet] - [#91616]) +- Add property `supported_languages` to `AbstractConversationAgent` ([@emontnemery] - [#91588]) +- Support both stt entity and legacy providers ([@synesthesiam] - [#91633]) +- Make repairs out of select supervisor issues ([@mdegat01] - [#90893]) +- Add config flow to Workday ([@gjohansson-ST] - [#72558]) +- Add wyoming integration with stt ([@synesthesiam] - [#91579]) +- Add async_get_supported_voices to tts.Provider ([@emontnemery] - [#91649]) +- Refactor LastFM to use shorthand attributes ([@joostlek] - [#91606]) +- Move Steam Entity to separate file ([@joostlek] - [#91630]) +- Make context a mandatory parameter for async_pipeline_from_audio_stream ([@emontnemery] - [#91658]) +- Refactor ZHA ([@dmulcahey] - [#91476]) +- Refactor conversation agent WS API for listing agents ([@emontnemery] - [#91590]) +- Adjust typing of AbstractConversationAgent.supported_languages ([@emontnemery] - [#91648]) +- Add assist_pipeline to default_config ([@emontnemery] - [#91651]) +- Cleanup device handles on ZHA controller shutdown ([@epenet] - [#91591]) +- Add test for WS conversation/agent/info ([@emontnemery] - [#91652]) +- Add test coverage for bluetooth devices being rediscoverable after they go unavailable ([@bdraco] - [#91645]) +- Update bluetooth debug logging for newer bleak ([@bdraco] - [#91643]) +- Add test case for matching the shelly button ([@bdraco] - [#91642]) +- Allow complex schemas for validating WS commands ([@emontnemery] - [#91655]) +- Fix lingering timer in SinopeTechnologiesThermostat ([@epenet] - [#91681]) +- Fix lingering timer in ZHA light transition ([@epenet] - [#91683]) +- Fix lingering timer in ZHA debouncers ([@epenet] - [#91685]) +- Fix lingering timer in ZHA tests ([@epenet] - [#91688]) +- Fix lingering timer in unifiprotect discovery ([@epenet] - [#91695]) +- Fix lingering timer in ZHA cluster tests ([@epenet] - [#91693]) +- Detect eero brand for Thread ([@balloob] - [#91699]) +- Fix from feedback on supervisor issues to repairs ([@mdegat01] - [#91680]) +- Remove legacy context lookup implementation from logbook ([@bdraco] - [#91710]) +- Make sure MQTT client is available when starting depending platforms ([@jbouwh] - [#91164]) +- Update Home Assistant base image to 2023.04.0 ([@frenck] - [#91720]) +- Fix lingering timers in bluetooth (part 2) ([@epenet] - [#91674]) +- Add missing callback decorator on StorageCollectionWebsocket.ws_list_item ([@emontnemery] - [#91727]) +- Add WS API for listing languages supported by a full assist pipeline ([@emontnemery] - [#91669]) +- Include matching languages in WS tts/engine/list ([@emontnemery] - [#91732]) +- Include matching languages in WS stt/engine/list ([@emontnemery] - [#91731]) +- Include matching languages in WS conversation/agent/list ([@emontnemery] - [#91730]) +- Test specifying pipeline in calls to async_pipeline_from_audio_stream ([@emontnemery] - [#91739]) +- Rename HomeKit to HomeKit Bridge ([@frenck] - [#91741]) +- Add WS command for getting an assist pipeline ([@emontnemery] - [#91725]) +- Add new Roborock Integration ([@Lash-L] - [#89456]) +- Add additional parameters to assist pipelines ([@emontnemery] - [#91619]) +- Fix lingering timers in bluetooth (part 1) ([@epenet] - [#91673]) +- Fix assist_pipeline tests ([@emontnemery] - [#91757]) +- Add pjlink const ([@HarlemSquirrel] - [#91749]) +- Prefer country over language family + MATCH_ALL ([@synesthesiam] - [#91753]) +- Add Supervisor add-on discovery to Wyoming integration ([@frenck] - [#91761]) +- Fix wallbox tests ([@epenet] - [#91752]) +- Update URLs forwarding to HA blog posts ([@DutchDeffy] - [#91698]) +- Fix lingering timer in hassio ([@epenet] - [#91702]) +- Fix lingering timer in netatmo ([@epenet] - [#91728]) +- Bump asyncsleepiq lib to 1.3.3 ([@kbickar] - [#91772]) +- VoIP listening tone and "not configured" message ([@synesthesiam] - [#91762]) +- Bump recommended esphome version to 2023.4.0 for bluetooth ([@bdraco] - [#91509]) +- Bump aioesphomeapi to 13.7.1 ([@bdraco] - [#91783]) +- Add tts entity ([@MartinHjelmare] - [#91692]) +- Bump arcam-fmj to 1.3.0 ([@kernelpanic85] - [#91747]) +- Update ruff to v0.0.262 ([@frenck] - [#91767]) +- Update sentry-sdk to 1.20.0 ([@frenck] - [#91771]) +- Load quirks in ZHA unit tests ([@puddly] - [#91779]) +- Bump dbus-fast to 1.85.0 ([@bdraco] - [#91784]) +- Ensure dependencies are awaited correctly when setting up integrations ([@jbouwh] - [#91454]) +- Let MQTT availability for `snips` be managed by dependencies ([@jbouwh] - [#91790]) +- Build wheels for CPython ABI cp311 ([@frenck] - [#91736]) +- Shutdown coordinator on entry unload ([@epenet] - [#91748]) +- Remove libexecinfo-dev package from Wheels jobs ([@frenck] - [#91798]) +- Bump actions/setup-python from 4.5.0 to 4.6.0 (@dependabot - [#91792]) +- Bump codecov/codecov-action from 3.1.2 to 3.1.3 (@dependabot - [#91791]) +- Update pysiaalarm to 3.1.0 ([@eavanvalkenburg] - [#91500]) +- Bump openwrt-luci-rpc version to 1.1.16 ([@mzdrale] - [#91358]) +- Fix lingering timer in discovery ([@epenet] - [#91804]) +- Update psutil to 5.9.5 ([@frenck] - [#91807]) +- Update opencv-python-headless to 4.7.0.72 ([@frenck] - [#91802]) +- Use Selectors for waze_travel_time flows ([@eifinger] - [#91778]) +- Fix lingering timer in usb ([@epenet] - [#91800]) +- Fix lingering timer in todoist ([@epenet] - [#91808]) +- Fix lingering timer in tplink ([@epenet] - [#91806]) +- Fix lingering timer in traccar ([@epenet] - [#91812]) +- Fix lingering timer in smartthings tests ([@epenet] - [#91697]) +- Bump pyeconet to 0.1.20 ([@CodingSquirrel] - [#90950]) +- Add type hints to broadlink device/heartbeat ([@epenet] - [#91737]) +- Clean up gateway logic from Plugwise ([@frenck] - [#91769]) +- Follow up on comments on changes bootstrap tests ([@jbouwh] - [#91803]) +- Bump `aionotion` to 2023.04.2 to address imminent API change ([@bachya] - [#91786]) +- Add name to tts voices ([@emontnemery] - [#91814]) +- Speed up LazyEventPartialState for logbook ([@bdraco] - [#91840]) +- Speed up sql queries where ORM rows are not needed ([@bdraco] - [#91839]) +- Bump sense_energy to 0.11.2 ([@bdraco] - [#91836]) +- Remove unreachable code in mqtt integration discovery ([@jbouwh] - [#91796]) +- Bump plugwise to v0.31.0 ([@bouwew] - [#91831]) +- Improve comment on patching the \_import method in test bootstrap dependencies test ([@jbouwh] - [#91848]) +- Speed up processing binary columns on SQLite/MariaDB/MySQL ([@bdraco] - [#91818]) +- Add tests mqtt light with single supported color_mode ([@jbouwh] - [#91811]) +- Reolink doorbell extend features ([@starkillerOG] - [#90469]) +- Add a negative cache to the recorder event type manager ([@bdraco] - [#91770]) +- Reduce number of columns when selecting attributes for history ([@bdraco] - [#91717]) +- Reduce number of columns selected for logbook ([@bdraco] - [#91718]) +- Add more PrusaLink sensors ([@5n8ke] - [#80424]) +- Update YARL to 1.9.1 ([@frenck] - [#91852]) +- CI: Add automatic retries to codecov upload action ([@frenck] - [#91857]) +- Add air quality sensors to Accuweather integration ([@bieniu] - [#91516]) +- Refactor SnapshotAssertion is SFR Box ([@epenet] - [#90775]) +- Use SnapshotAssertion in 1-wire tests ([@epenet] - [#90782]) +- Several changes to Wheels building for the cp311 ABI ([@frenck] - [#91850]) +- Add webhook support to onvif ([@bdraco] - [#91485]) +- Bump whirlpool-sixth-sense to 0.18.3 ([@mkmer] - [#91859]) +- Substate will never be None when subscribing mqtt topics ([@jbouwh] - [#91856]) +- Bump tplink-omada-client to 1.2.4 ([@MarkGodwin] - [#91853]) +- Add new parental control switches for NextDNS ([@bieniu] - [#91507]) +- Updated list of supported voices in Watson TTS integration ([@rutkai] - [#91458]) +- Update xknx to 2.9.0 ([@farmio] - [#91282]) +- Conversation list command to support match-all languages agents ([@balloob] - [#91844]) +- Bump pyunifiprotect to 4.8.2 ([@AngellusMortis] - [#91861]) +- Update Egardia to support more devices ([@tristangrichard] - [#91430]) +- Add device_trackers attribute to person entities ([@depoll] - [#91312]) +- Create repair issue if Sonos subscriptions fail ([@jjlawren] - [#87437]) +- Add diagnostics to PI-Hole ([@mib1185] - [#91383]) +- Wheels: Don't build azure-servicebus on cp311 ([@frenck] - [#91862]) +- CI: Cancel concurrent Wheel jobs ([@frenck] - [#91867]) +- Add events to BTHome ([@Ernst79] - [#91691]) +- Correct unit of measurement for Synology DSM sensors ([@mib1185] - [#90633]) +- Fix lingering timer in wiz ([@epenet] - [#91745]) +- Fix lingering timer in yeelight SSDP discovery ([@epenet] - [#91694]) +- Add entity name translations to Supervisor ([@mib1185] - [#90937]) +- Ensure config entries are unloaded in tests ([@epenet] - [#90850]) +- Add missing ViCare diagnostics tests ([@epenet] - [#90821]) +- Wheels: Don't build beacontools on cp311 ([@frenck] - [#91868]) +- Bump locationsharinglib to 5.0.1 ([@cirrusblau] - [#91259]) +- Wheels: Don't build opencv-python-headless on cp311 ([@frenck] - [#91872]) +- Skip adding WeMo device on failure ([@esev] - [#91621]) +- Add Anova integration ([@Lash-L] - [#86254]) +- Revert "Update opencv-python-headless to 4.7.0.72" ([@frenck] - [#91871]) +- Mark onvif events as stale when the subscription renewal fails ([@bdraco] - [#91567]) +- Add run-name for workflow_dispatch runs [ci] ([@cdce8p] - [#91873]) +- Raise an exception when trying to save camera snapshots to a not allowed path ([@bdraco] - [#91869]) +- Handle 404 for media/ptz/image onvif services to allow setup to proceed ([@bdraco] - [#91875]) +- Add balance entity for Sonos speakers ([@pyos] - [#85205]) +- Ensure onvif retries setup if camera fails to respond correctly ([@bdraco] - [#91866]) +- Add entity name translations to KNX system sensors ([@farmio] - [#91396]) +- Use configured voice in TTS output for assist pipeline ([@balloob] - [#91878]) +- Rename raw audio files to .pcm ([@synesthesiam] - [#91879]) +- Ensure .pcm binary files do not have line endings changed ([@synesthesiam] - [#91881]) +- Add a VoIP user ([@balloob] - [#91884]) +- Improve notion generic typing ([@cdce8p] - [#91883]) +- Bump ulid-transform to 0.7.0 ([@bdraco] - [#91888]) +- Update pylint to 2.17.2 ([@cdce8p] - [#91894]) +- HA deconz: Add support for Tuya Smart Air Housekeeper 6in1 Air Quality Monitor ([@m4k2k] - [#87866]) +- Wheels: Disable Pandas for Python 3.11 on armhf ([@frenck] - [#91898]) +- Assist pipeline to use configured values ([@balloob] - [#91901]) +- Wyoming tts ([@synesthesiam] - [#91712]) +- Add NUT device actions ([@pestevez] - [#80986]) +- Wheels: Fix typo in env_canada dep for armhf ([@frenck] - [#91918]) +- Bump zeroconf to 0.58.0 ([@bdraco] - [#91917]) +- Suppress events for tns1:MediaControl/VideoEncoderConfiguration with onvif ([@bdraco] - [#91916]) +- Fix migration with negative event type cache ([@bdraco] - [#91910]) +- Avoid creating onvif switches on unsupported devices ([@bdraco] - [#91907]) +- Remove duplicate name from Wyoming TTS entity ([@balloob] - [#91930]) +- Add processing tone ([@synesthesiam] - [#91931]) +- Cleanup onvif topic before lookup ([@bdraco] - [#91914]) +- Remove deprecated async_get_registry ([@bdraco] - [#91928]) +- Allow entity names for STT entities ([@balloob] - [#91932]) +- Remove deprecated async_setup_platforms ([@bdraco] - [#91929]) +- Add MQTT fan direction support ([@rubenbe] - [#91700]) +- Remove unneeded pygatt package from machine builds ([@frenck] - [#91940]) +- Bump Pylast to 5.1.0 ([@joostlek] - [#91909]) +- Don't resolve default stt engine in assist pipelines ([@emontnemery] - [#91936]) +- Ensure onvif can still be unloaded if camera fails to unsubscribe ([@bdraco] - [#91887]) +- Add guards to onvif for when the PullPoint to Webhook url changes ([@bdraco] - [#91886]) +- Add fallback to device zone time or no timezone to onvif when setting time fails ([@bdraco] - [#91882]) +- Don't resolve default tts engine in assist pipelines ([@emontnemery] - [#91943]) +- Improve error reporting in onvif in config flow ([@bdraco] - [#91876]) +- Add rule parser for onvif LineDetector and CountAggregation ([@bdraco] - [#91885]) +- Add cipher list option to IMAP config flow ([@jbouwh] - [#91896]) +- Cleanup unreachable code where device_entry will never be None on an update event ([@jbouwh] - [#91855]) +- Add Vacuum test for Roborock ([@Lash-L] - [#91870]) +- Fix zh Hant/Hans ([@synesthesiam] - [#91390]) +- Suppress pylint error related to audioop deprecation ([@emontnemery] - [#91950]) +- Correct entity categories in AVM FRITZ!SmartHome ([@mib1185] - [#91073]) +- Fix typo in powerwall strings ([@bdraco] - [#91956]) +- Elmax -Handle 422 busy error with a retry approach ([@albertogeniola] - [#91926]) +- Dependency upgrade to forecast-solar 3.0.0 ([@koleo9am] - [#91951]) +- Wait for TTS before restarting pipeline ([@synesthesiam] - [#91962]) +- Create a default assist pipeline on start ([@emontnemery] - [#91947]) +- Use order in preferred regions list ([@synesthesiam] - [#91959]) +- Bump yalexs to 1.3.2 ([@bdraco] - [#91963]) +- Add mopping abilities to Roborock ([@Lash-L] - [#91766]) +- Bump aiounifi to v47 ([@Kane610] - [#91966]) +- Bump home-assistant-bluetooth to 1.10.0 ([@bdraco] - [#91977]) +- Ensure logbook still responds if describe event throws ([@bdraco] - [#91961]) +- Play pre-recorded message if pipeline is misconfigured ([@synesthesiam] - [#91985]) +- Bump ZHA dependencies ([@puddly] - [#91969]) +- Include UUID in hassio discovery data ([@emontnemery] - [#91970]) +- Follow the unavailability of the source sensor ([@dgomes] - [#91975]) +- Remove unused attributes in EDL21 integration ([@StephanU] - [#91922]) +- Move TriggerBaseEntity into helpers ([@gjohansson-ST] - [#91945]) +- Support for multiple contracts in Prosegur ([@dgomes] - [#89097]) +- Elmax/sensors improvements ([@albertogeniola] - [#74323]) +- Bump sqlalchemy to 2.0.10 ([@bdraco] - [#91982]) +- Bump asyncsleepiq lib to 1.3.4 ([@ClayBenson94] - [#91860]) +- Remove fuzzy language matching from stt and tts ([@emontnemery] - [#92002]) +- Add check on disarm code for Alarm Control Panel - Elmax ([@albertogeniola] - [#91158]) +- Fix cloud connected signal only firing once ([@emontnemery] - [#92009]) +- Tweak a couple of `stt` and `tts` related asserts ([@emontnemery] - [#92012]) +- Add reauth to onvif ([@bdraco] - [#91957]) +- Update tibber lib to 0.27.1 ([@Danielhiversen] - [#92016]) +- Bump hass-nabucasa from 0.65.0 to 0.66.1 ([@ludeeus] - [#92020]) +- Fix timezone issue ([@vingerha] - [#92005]) +- Use addon uuid as wyoming config entry unique id ([@emontnemery] - [#92008]) +- Fix comment typos ([@davet2001] - [#92021]) +- Bump zwave-js-server-python to 0.48.0 ([@raman325] - [#91989]) +- Fall back to domain for conversation agents without title ([@emontnemery] - [#92014]) +- Enable open,close,stop device actions for all covers ([@mvdwetering] - [#92006]) +- Do not reload Shelly TRV config entry ([@bieniu] - [#92000]) +- Clean up tts fixtures ([@MartinHjelmare] - [#92025]) +- Only expose MQTT advanced settings in advanced mode ([@jbouwh] - [#91996]) +- Add note for using xfail on test for mqtt_statestream ([@jbouwh] - [#91999]) +- Add camera platform to Freebox ([@nachonam] - [#88104]) +- Invert ISY994 dusk/dawn sensors to match expected state ([@shbatm] - [#92035]) +- ISY994 remove value when calling open cover with no position ([@shbatm] - [#92036]) +- Clean up default ZHA entity names ([@puddly] - [#91841]) +- Bump yalexs-ble to 2.1.16 ([@bdraco] - [#92034]) +- Automaticially create an assist pipeline using cloud stt + tts ([@emontnemery] - [#91991]) +- Add button entities to manually idle zwave notification values ([@raman325] - [#91446]) +- Allow numbers in TTS engine part of cache key ([@synesthesiam] - [#92031]) +- Time out TTS based on audio length ([@synesthesiam] - [#92032]) +- Bump aioesphomeapi to 13.7.2 ([@bdraco] - [#92027]) +- Bump zeroconf to 0.58.2 ([@bdraco] - [#92049]) +- Allow UniFi control PoE passthrough properly ([@Kane610] - [#92028]) +- Set forecast-solar energy sensor's units of measurement to Wh ([@koleo9am] - [#92022]) +- Only check support_entry_unload/support_remove_from_device once ([@bdraco] - [#92041]) +- Bump hass-nabucasa from 0.66.1 to 0.66.2 ([@ludeeus] - [#92054]) +- Small cleanups to bluetooth internals ([@bdraco] - [#92045]) +- Remove cloud assist pipeline setup from cloud client ([@emontnemery] - [#92056]) +- Make assist_pipeline an after dependency of cloud ([@emontnemery] - [#92057]) +- Fix typo in Nextcloud YAML deprecation message ([@farmio] - [#92060]) +- Fix tts add-on discovery for Wyoming ([@frenck] - [#92064]) +- Tweak response of /api/cloud/login ([@emontnemery] - [#92058]) +- Fail TTS tests if default TTS cache dir exists ([@emontnemery] - [#92023]) +- Add today's remaining production estimate ([@koleo9am] - [#91965]) +- Add LED settings support to Home Assistant Yellow ([@emontnemery] - [#86451]) +- Add codeowner for imap integration ([@jbouwh] - [#92067]) +- Add assist pipeline and language selectors ([@bramkragten] - [#92030]) +- Ensure lutron_caseta logbook platform does not raise when integration is not loaded ([@bdraco] - [#91978]) +- Retry creating esphome update entities later if dashboard is unavailable ([@bdraco] - [#92042]) +- Teach switch_as_x about exposed entities ([@emontnemery] - [#92059]) +- Ensure device_automation can handle RequirementsNotFound ([@bdraco] - [#92037]) +- Fix large imap_content event warning by truncating the email text body to 2 KiB ([@jbouwh] - [#92066]) +- Revert "Fail TTS tests if default TTS cache dir exists (#92023)" ([@frenck] - [#92079]) +- Update frontend to 20230426.0 ([@bramkragten] - [#92074]) +- Fix Matter cover deviceclass and inverted position ([@marcelveldt] - [#92063]) +- Allow the ZHA default light transition time to be configured as a float ([@puddly] - [#92075]) +- Add a warning step to ZHA's config flow to advise against some radios ([@puddly] - [#92078]) +- Remove bridged matter devices when matter bridge is removed ([@ArturoGuerra] - [#91995]) +- Set pipeline_id from pipeline select ([@jesserockz] - [#92085]) +- ESPHome voice assistant: Version 2 - Stream raw tts audio back to device for playback ([@jesserockz] - [#92052]) +- Bump intents to 2023.4.26 ([@synesthesiam] - [#92070]) +- Add a channel changing API to ZHA ([@puddly] - [#92076]) +- Remove name attribute from transmission services manifest ([@avee87] - [#92083]) +- Update YARL to 1.9.2 ([@frenck] - [#92086]) +- Fix reconfigure by SSDP or Zeroconf discovery in Synology DSM ([@mib1185] - [#92088]) +- Fix capitalization names Assist entities ([@balloob] - [#92098]) +- Use pipeline ID in event ([@balloob] - [#92100]) +- Fix vizio integration_type ([@raman325] - [#92103]) +- Avoid exposing unsupported entities to Google Assistant ([@emontnemery] - [#92105]) +- Avoid exposing unsupported entities to Alexa ([@emontnemery] - [#92107]) +- Fix frontier_silicon not retrying setup and missing strings ([@wlcrs] - [#92111]) +- Add WS command cloud/alexa/entities/get ([@emontnemery] - [#92121]) +- Update frontend to 20230427.0 ([@piitaya] - [#92123]) +- Bump sqlalchemy to 2.0.11 to fix a critical regression with postgresql ([@bdraco] - [#92126]) +- Add add-on discovery URL and title to Wyoming integration ([@frenck] - [#92129]) +- Bump roborock to 0.8.1 for beta fixes ([@Lash-L] - [#92131]) +- Fix options flow Workday ([@gjohansson-ST] - [#92140]) +- Fix ZHA startup failure with the Konke button ([@puddly] - [#92144]) +- Ensure purge can cleanup old format detached states in the database ([@bdraco] - [#92145]) +- Fix ignored apple tvs being scanned over and over ([@bdraco] - [#92150]) +- Bump Roborock to 0.8.3 ([@Lash-L] - [#92151]) +- Properly resolve `media_source` URLs for Sonos announcements ([@jjlawren] - [#92154]) +- Keep expose setting in sync for assist ([@emontnemery] - [#92158]) +- Bump pyvizio to 0.1.61 ([@raman325] - [#92161]) +- Upgrade lakeside to 0.13 ([@nkgilley] - [#92173]) +- Fix ZHA device triggers ([@dmulcahey] - [#92186]) +- Fix mqtt subscribe debouncer initial delay too long when birth message is disabled ([@jbouwh] - [#92188]) +- Update frontend to 20230428.0 ([@piitaya] - [#92190]) +- Add missing PRESET_MODE feature to BAF fans ([@jfroy] - [#92200]) +- Fix missing preset_mode feature in bond fans ([@bdraco] - [#92202]) +- Move BMW Target SoC to number platform ([@rikroe] - [#91081]) +- Revert "Add silent option for DynamicShutter (ogp:Shutter) in Overkiz" ([@iMicknl] - [#91354]) +- Turn AVM FRITZ!Box Tools call deflection switches into coordinator entities ([@mib1185] - [#91913]) +- Fix solaredge-local protobuf exception ([@rajeevan] - [#92090]) +- Fix Insteon scenes with disabled entities ([@teharris1] - [#92137]) +- Bump `sonos-websocket` to 0.1.0 ([@jjlawren] - [#92209]) +- Bump env_canada to 0.5.34 ([@michaeldavie] - [#92216]) +- Add more detail to invalid rrule calendar error message ([@allenporter] - [#92222]) +- Fix history YAML deprecation ([@frenck] - [#92238]) +- Fix unknown/unavailable source sensor in Filter entities ([@frenck] - [#92241]) +- Bump plugwise to v0.31.1 ([@bouwew] - [#92249]) +- Bump pyunifiprotect to 4.8.3 ([@bdraco] - [#92251]) +- Pin `pyasn1` and `pysnmplib` since `pyasn1` 0.5.0 has breaking changes and `pysnmp-pyasn1` and `pyasn1` are both using the `pyasn1` namespace ([@bdraco] - [#92254]) +- Handle onvif errors when detail is returned as bytes ([@bdraco] - [#92259]) +- Add VoIP error tone ([@synesthesiam] - [#92260]) +- Fix Google Mail Sensor key error ([@tkdrob] - [#92262]) +- Fix MQTT certificate files setup ([@jbouwh] - [#92266]) +- Fix call deflection update in Fritz!Tools ([@mib1185] - [#92267]) +- Auto repair incorrect collation on MySQL schema ([@bdraco] - [#92270]) +- Handle AttributeError from wrong port in ONVIF config flow ([@bdraco] - [#92272]) +- Fix august lock state when API reports locking and locked with the same timestamp ([@bdraco] - [#92276]) +- Bump pynina to 0.3.0 ([@DeerMaximum] - [#92286]) +- Add missing fstrings in Local Calendar ([@tkdrob] - [#92288]) +- Prevent pysnmp from being installed as it does not work with newer python ([@bdraco] - [#92292]) +- Bump beacontools to fix conflict with construct<2.10 and >=2.8.16 ([@bdraco] - [#92293]) +- Bump bleak to 0.20.2 ([@bdraco] - [#92294]) +- Ensure onvif webhook can be registered ([@bdraco] - [#92295]) +- Fix mqtt not available when starting snips ([@jbouwh] - [#92296]) +- Allow configuring SIP port in VoIP ([@synesthesiam] - [#92210]) +- Reduce size of migration transactions to accommodate slow/busy systems ([@bdraco] - [#92312]) +- Retry onvif setup when it is unexpectedly cancelled ([@bdraco] - [#92313]) +- Bump sqlalchemy to 2.0.12 ([@bdraco] - [#92315]) +- Fix db_url issue in SQL ([@gjohansson-ST] - [#92324]) +- Add voip configuration url ([@balloob] - [#92326]) +- Don't poll ZHA electrical measurement sensors unnecessarily ([@dmulcahey] - [#92330]) +- Avoid starting ONVIF PullPoint if the camera reports its unsupported ([@bdraco] - [#92333]) +- Bump voip-utils to 0.0.6 ([@synesthesiam] - [#92334]) +- Update frontend to 20230501.0 ([@bramkragten] - [#92339]) +- Increase default timeout in sense ([@jpettitt] - [#90556]) +- Bump ulid-transform to 0.7.2 ([@bdraco] - [#92344]) +- Clean up zwave_js.cover ([@raman325] - [#92353]) +- Start onvif events later ([@bdraco] - [#92354]) +- Allow exposing entities not in the entity registry to assistants ([@emontnemery] - [#92363]) +- Update frontend to 20230502.0 ([@bramkragten] - [#92373]) +- Fix deserialize bug + add test coverage ([@balloob] - [#92382]) +- Bump pybravia to 0.3.3 ([@Drafteed] - [#92378]) +- Add ZHA binding for window coverings ([@repaxan] - [#92387]) +- Improve exposed entities tests ([@emontnemery] - [#92389]) +- Don't use storage collection helper in ExposedEntities ([@emontnemery] - [#92396]) +- Allow exposing any entity to the default conversation agent ([@emontnemery] - [#92398]) +- Bump ZHA quirks ([@dmulcahey] - [#92400]) +- Update frontend to 20230503.0 ([@bramkragten] - [#92402]) +- Allow setting google disable 2fa flag on any entity ([@emontnemery] - [#92403]) +- Handle webhook URL rejection in onvif ([@bdraco] - [#92405]) +- Include all entities in cloud lists ([@emontnemery] - [#92406]) +- Use exposed_entities API in cloud tests ([@emontnemery] - [#92408]) +- Update cloud WS API for getting entity ([@emontnemery] - [#92409]) +- Update frontend to 20230503.1 ([@bramkragten] - [#92410]) +- Bump bluetooth-auto-recovery to 1.1.1 ([@bdraco] - [#92412]) +- Migrate cloud settings for all Alexa entities ([@emontnemery] - [#92413]) +- Skip unexposed entities in intent handlers ([@synesthesiam] - [#92415]) +- Migrate cloud settings for all Google entities ([@emontnemery] - [#92416]) +- Pass OPUS payload ID through VoIP ([@synesthesiam] - [#92421]) +- Bump voip-utils to 0.0.7 ([@synesthesiam] - [#92372]) + +[#56446]: https://github.com/home-assistant/core/pull/56446 +[#66494]: https://github.com/home-assistant/core/pull/66494 +[#70233]: https://github.com/home-assistant/core/pull/70233 +[#72558]: https://github.com/home-assistant/core/pull/72558 +[#74323]: https://github.com/home-assistant/core/pull/74323 +[#76164]: https://github.com/home-assistant/core/pull/76164 +[#77449]: https://github.com/home-assistant/core/pull/77449 +[#80288]: https://github.com/home-assistant/core/pull/80288 +[#80424]: https://github.com/home-assistant/core/pull/80424 +[#80986]: https://github.com/home-assistant/core/pull/80986 +[#81033]: https://github.com/home-assistant/core/pull/81033 +[#81486]: https://github.com/home-assistant/core/pull/81486 +[#82560]: https://github.com/home-assistant/core/pull/82560 +[#82601]: https://github.com/home-assistant/core/pull/82601 +[#83983]: https://github.com/home-assistant/core/pull/83983 +[#85186]: https://github.com/home-assistant/core/pull/85186 +[#85205]: https://github.com/home-assistant/core/pull/85205 +[#85605]: https://github.com/home-assistant/core/pull/85605 +[#86254]: https://github.com/home-assistant/core/pull/86254 +[#86451]: https://github.com/home-assistant/core/pull/86451 +[#86822]: https://github.com/home-assistant/core/pull/86822 +[#86894]: https://github.com/home-assistant/core/pull/86894 +[#87209]: https://github.com/home-assistant/core/pull/87209 +[#87437]: https://github.com/home-assistant/core/pull/87437 +[#87866]: https://github.com/home-assistant/core/pull/87866 +[#87872]: https://github.com/home-assistant/core/pull/87872 +[#88104]: https://github.com/home-assistant/core/pull/88104 +[#88759]: https://github.com/home-assistant/core/pull/88759 +[#88984]: https://github.com/home-assistant/core/pull/88984 +[#89097]: https://github.com/home-assistant/core/pull/89097 +[#89315]: https://github.com/home-assistant/core/pull/89315 +[#89456]: https://github.com/home-assistant/core/pull/89456 +[#89877]: https://github.com/home-assistant/core/pull/89877 +[#89935]: https://github.com/home-assistant/core/pull/89935 +[#89937]: https://github.com/home-assistant/core/pull/89937 +[#89976]: https://github.com/home-assistant/core/pull/89976 +[#90067]: https://github.com/home-assistant/core/pull/90067 +[#90141]: https://github.com/home-assistant/core/pull/90141 +[#90234]: https://github.com/home-assistant/core/pull/90234 +[#90246]: https://github.com/home-assistant/core/pull/90246 +[#90262]: https://github.com/home-assistant/core/pull/90262 +[#90429]: https://github.com/home-assistant/core/pull/90429 +[#90443]: https://github.com/home-assistant/core/pull/90443 +[#90444]: https://github.com/home-assistant/core/pull/90444 +[#90466]: https://github.com/home-assistant/core/pull/90466 +[#90469]: https://github.com/home-assistant/core/pull/90469 +[#90477]: https://github.com/home-assistant/core/pull/90477 +[#90478]: https://github.com/home-assistant/core/pull/90478 +[#90480]: https://github.com/home-assistant/core/pull/90480 +[#90491]: https://github.com/home-assistant/core/pull/90491 +[#90496]: https://github.com/home-assistant/core/pull/90496 +[#90503]: https://github.com/home-assistant/core/pull/90503 +[#90504]: https://github.com/home-assistant/core/pull/90504 +[#90518]: https://github.com/home-assistant/core/pull/90518 +[#90519]: https://github.com/home-assistant/core/pull/90519 +[#90529]: https://github.com/home-assistant/core/pull/90529 +[#90530]: https://github.com/home-assistant/core/pull/90530 +[#90536]: https://github.com/home-assistant/core/pull/90536 +[#90539]: https://github.com/home-assistant/core/pull/90539 +[#90540]: https://github.com/home-assistant/core/pull/90540 +[#90541]: https://github.com/home-assistant/core/pull/90541 +[#90543]: https://github.com/home-assistant/core/pull/90543 +[#90548]: https://github.com/home-assistant/core/pull/90548 +[#90549]: https://github.com/home-assistant/core/pull/90549 +[#90552]: https://github.com/home-assistant/core/pull/90552 +[#90556]: https://github.com/home-assistant/core/pull/90556 +[#90566]: https://github.com/home-assistant/core/pull/90566 +[#90568]: https://github.com/home-assistant/core/pull/90568 +[#90569]: https://github.com/home-assistant/core/pull/90569 +[#90570]: https://github.com/home-assistant/core/pull/90570 +[#90571]: https://github.com/home-assistant/core/pull/90571 +[#90572]: https://github.com/home-assistant/core/pull/90572 +[#90575]: https://github.com/home-assistant/core/pull/90575 +[#90581]: https://github.com/home-assistant/core/pull/90581 +[#90585]: https://github.com/home-assistant/core/pull/90585 +[#90586]: https://github.com/home-assistant/core/pull/90586 +[#90592]: https://github.com/home-assistant/core/pull/90592 +[#90593]: https://github.com/home-assistant/core/pull/90593 +[#90609]: https://github.com/home-assistant/core/pull/90609 +[#90610]: https://github.com/home-assistant/core/pull/90610 +[#90612]: https://github.com/home-assistant/core/pull/90612 +[#90613]: https://github.com/home-assistant/core/pull/90613 +[#90615]: https://github.com/home-assistant/core/pull/90615 +[#90617]: https://github.com/home-assistant/core/pull/90617 +[#90633]: https://github.com/home-assistant/core/pull/90633 +[#90637]: https://github.com/home-assistant/core/pull/90637 +[#90657]: https://github.com/home-assistant/core/pull/90657 +[#90658]: https://github.com/home-assistant/core/pull/90658 +[#90668]: https://github.com/home-assistant/core/pull/90668 +[#90671]: https://github.com/home-assistant/core/pull/90671 +[#90683]: https://github.com/home-assistant/core/pull/90683 +[#90690]: https://github.com/home-assistant/core/pull/90690 +[#90691]: https://github.com/home-assistant/core/pull/90691 +[#90728]: https://github.com/home-assistant/core/pull/90728 +[#90740]: https://github.com/home-assistant/core/pull/90740 +[#90748]: https://github.com/home-assistant/core/pull/90748 +[#90751]: https://github.com/home-assistant/core/pull/90751 +[#90755]: https://github.com/home-assistant/core/pull/90755 +[#90756]: https://github.com/home-assistant/core/pull/90756 +[#90757]: https://github.com/home-assistant/core/pull/90757 +[#90760]: https://github.com/home-assistant/core/pull/90760 +[#90761]: https://github.com/home-assistant/core/pull/90761 +[#90765]: https://github.com/home-assistant/core/pull/90765 +[#90770]: https://github.com/home-assistant/core/pull/90770 +[#90775]: https://github.com/home-assistant/core/pull/90775 +[#90776]: https://github.com/home-assistant/core/pull/90776 +[#90777]: https://github.com/home-assistant/core/pull/90777 +[#90779]: https://github.com/home-assistant/core/pull/90779 +[#90781]: https://github.com/home-assistant/core/pull/90781 +[#90782]: https://github.com/home-assistant/core/pull/90782 +[#90784]: https://github.com/home-assistant/core/pull/90784 +[#90787]: https://github.com/home-assistant/core/pull/90787 +[#90790]: https://github.com/home-assistant/core/pull/90790 +[#90791]: https://github.com/home-assistant/core/pull/90791 +[#90801]: https://github.com/home-assistant/core/pull/90801 +[#90802]: https://github.com/home-assistant/core/pull/90802 +[#90803]: https://github.com/home-assistant/core/pull/90803 +[#90806]: https://github.com/home-assistant/core/pull/90806 +[#90808]: https://github.com/home-assistant/core/pull/90808 +[#90810]: https://github.com/home-assistant/core/pull/90810 +[#90812]: https://github.com/home-assistant/core/pull/90812 +[#90821]: https://github.com/home-assistant/core/pull/90821 +[#90822]: https://github.com/home-assistant/core/pull/90822 +[#90824]: https://github.com/home-assistant/core/pull/90824 +[#90827]: https://github.com/home-assistant/core/pull/90827 +[#90829]: https://github.com/home-assistant/core/pull/90829 +[#90830]: https://github.com/home-assistant/core/pull/90830 +[#90831]: https://github.com/home-assistant/core/pull/90831 +[#90834]: https://github.com/home-assistant/core/pull/90834 +[#90844]: https://github.com/home-assistant/core/pull/90844 +[#90845]: https://github.com/home-assistant/core/pull/90845 +[#90850]: https://github.com/home-assistant/core/pull/90850 +[#90854]: https://github.com/home-assistant/core/pull/90854 +[#90856]: https://github.com/home-assistant/core/pull/90856 +[#90857]: https://github.com/home-assistant/core/pull/90857 +[#90863]: https://github.com/home-assistant/core/pull/90863 +[#90865]: https://github.com/home-assistant/core/pull/90865 +[#90869]: https://github.com/home-assistant/core/pull/90869 +[#90871]: https://github.com/home-assistant/core/pull/90871 +[#90877]: https://github.com/home-assistant/core/pull/90877 +[#90886]: https://github.com/home-assistant/core/pull/90886 +[#90890]: https://github.com/home-assistant/core/pull/90890 +[#90893]: https://github.com/home-assistant/core/pull/90893 +[#90894]: https://github.com/home-assistant/core/pull/90894 +[#90898]: https://github.com/home-assistant/core/pull/90898 +[#90899]: https://github.com/home-assistant/core/pull/90899 +[#90906]: https://github.com/home-assistant/core/pull/90906 +[#90913]: https://github.com/home-assistant/core/pull/90913 +[#90922]: https://github.com/home-assistant/core/pull/90922 +[#90932]: https://github.com/home-assistant/core/pull/90932 +[#90934]: https://github.com/home-assistant/core/pull/90934 +[#90937]: https://github.com/home-assistant/core/pull/90937 +[#90938]: https://github.com/home-assistant/core/pull/90938 +[#90944]: https://github.com/home-assistant/core/pull/90944 +[#90945]: https://github.com/home-assistant/core/pull/90945 +[#90947]: https://github.com/home-assistant/core/pull/90947 +[#90948]: https://github.com/home-assistant/core/pull/90948 +[#90950]: https://github.com/home-assistant/core/pull/90950 +[#90992]: https://github.com/home-assistant/core/pull/90992 +[#91001]: https://github.com/home-assistant/core/pull/91001 +[#91007]: https://github.com/home-assistant/core/pull/91007 +[#91008]: https://github.com/home-assistant/core/pull/91008 +[#91067]: https://github.com/home-assistant/core/pull/91067 +[#91068]: https://github.com/home-assistant/core/pull/91068 +[#91071]: https://github.com/home-assistant/core/pull/91071 +[#91073]: https://github.com/home-assistant/core/pull/91073 +[#91074]: https://github.com/home-assistant/core/pull/91074 +[#91078]: https://github.com/home-assistant/core/pull/91078 +[#91081]: https://github.com/home-assistant/core/pull/91081 +[#91088]: https://github.com/home-assistant/core/pull/91088 +[#91106]: https://github.com/home-assistant/core/pull/91106 +[#91107]: https://github.com/home-assistant/core/pull/91107 +[#91108]: https://github.com/home-assistant/core/pull/91108 +[#91128]: https://github.com/home-assistant/core/pull/91128 +[#91132]: https://github.com/home-assistant/core/pull/91132 +[#91140]: https://github.com/home-assistant/core/pull/91140 +[#91142]: https://github.com/home-assistant/core/pull/91142 +[#91143]: https://github.com/home-assistant/core/pull/91143 +[#91144]: https://github.com/home-assistant/core/pull/91144 +[#91145]: https://github.com/home-assistant/core/pull/91145 +[#91147]: https://github.com/home-assistant/core/pull/91147 +[#91149]: https://github.com/home-assistant/core/pull/91149 +[#91150]: https://github.com/home-assistant/core/pull/91150 +[#91151]: https://github.com/home-assistant/core/pull/91151 +[#91157]: https://github.com/home-assistant/core/pull/91157 +[#91158]: https://github.com/home-assistant/core/pull/91158 +[#91164]: https://github.com/home-assistant/core/pull/91164 +[#91166]: https://github.com/home-assistant/core/pull/91166 +[#91172]: https://github.com/home-assistant/core/pull/91172 +[#91182]: https://github.com/home-assistant/core/pull/91182 +[#91188]: https://github.com/home-assistant/core/pull/91188 +[#91190]: https://github.com/home-assistant/core/pull/91190 +[#91193]: https://github.com/home-assistant/core/pull/91193 +[#91198]: https://github.com/home-assistant/core/pull/91198 +[#91200]: https://github.com/home-assistant/core/pull/91200 +[#91202]: https://github.com/home-assistant/core/pull/91202 +[#91203]: https://github.com/home-assistant/core/pull/91203 +[#91208]: https://github.com/home-assistant/core/pull/91208 +[#91210]: https://github.com/home-assistant/core/pull/91210 +[#91215]: https://github.com/home-assistant/core/pull/91215 +[#91217]: https://github.com/home-assistant/core/pull/91217 +[#91218]: https://github.com/home-assistant/core/pull/91218 +[#91222]: https://github.com/home-assistant/core/pull/91222 +[#91223]: https://github.com/home-assistant/core/pull/91223 +[#91224]: https://github.com/home-assistant/core/pull/91224 +[#91228]: https://github.com/home-assistant/core/pull/91228 +[#91230]: https://github.com/home-assistant/core/pull/91230 +[#91233]: https://github.com/home-assistant/core/pull/91233 +[#91240]: https://github.com/home-assistant/core/pull/91240 +[#91244]: https://github.com/home-assistant/core/pull/91244 +[#91245]: https://github.com/home-assistant/core/pull/91245 +[#91246]: https://github.com/home-assistant/core/pull/91246 +[#91250]: https://github.com/home-assistant/core/pull/91250 +[#91252]: https://github.com/home-assistant/core/pull/91252 +[#91253]: https://github.com/home-assistant/core/pull/91253 +[#91258]: https://github.com/home-assistant/core/pull/91258 +[#91259]: https://github.com/home-assistant/core/pull/91259 +[#91260]: https://github.com/home-assistant/core/pull/91260 +[#91261]: https://github.com/home-assistant/core/pull/91261 +[#91263]: https://github.com/home-assistant/core/pull/91263 +[#91264]: https://github.com/home-assistant/core/pull/91264 +[#91267]: https://github.com/home-assistant/core/pull/91267 +[#91271]: https://github.com/home-assistant/core/pull/91271 +[#91277]: https://github.com/home-assistant/core/pull/91277 +[#91282]: https://github.com/home-assistant/core/pull/91282 +[#91290]: https://github.com/home-assistant/core/pull/91290 +[#91296]: https://github.com/home-assistant/core/pull/91296 +[#91299]: https://github.com/home-assistant/core/pull/91299 +[#91305]: https://github.com/home-assistant/core/pull/91305 +[#91308]: https://github.com/home-assistant/core/pull/91308 +[#91309]: https://github.com/home-assistant/core/pull/91309 +[#91310]: https://github.com/home-assistant/core/pull/91310 +[#91312]: https://github.com/home-assistant/core/pull/91312 +[#91320]: https://github.com/home-assistant/core/pull/91320 +[#91321]: https://github.com/home-assistant/core/pull/91321 +[#91328]: https://github.com/home-assistant/core/pull/91328 +[#91329]: https://github.com/home-assistant/core/pull/91329 +[#91330]: https://github.com/home-assistant/core/pull/91330 +[#91331]: https://github.com/home-assistant/core/pull/91331 +[#91333]: https://github.com/home-assistant/core/pull/91333 +[#91334]: https://github.com/home-assistant/core/pull/91334 +[#91337]: https://github.com/home-assistant/core/pull/91337 +[#91342]: https://github.com/home-assistant/core/pull/91342 +[#91345]: https://github.com/home-assistant/core/pull/91345 +[#91347]: https://github.com/home-assistant/core/pull/91347 +[#91352]: https://github.com/home-assistant/core/pull/91352 +[#91354]: https://github.com/home-assistant/core/pull/91354 +[#91358]: https://github.com/home-assistant/core/pull/91358 +[#91362]: https://github.com/home-assistant/core/pull/91362 +[#91363]: https://github.com/home-assistant/core/pull/91363 +[#91367]: https://github.com/home-assistant/core/pull/91367 +[#91371]: https://github.com/home-assistant/core/pull/91371 +[#91372]: https://github.com/home-assistant/core/pull/91372 +[#91373]: https://github.com/home-assistant/core/pull/91373 +[#91376]: https://github.com/home-assistant/core/pull/91376 +[#91378]: https://github.com/home-assistant/core/pull/91378 +[#91379]: https://github.com/home-assistant/core/pull/91379 +[#91381]: https://github.com/home-assistant/core/pull/91381 +[#91382]: https://github.com/home-assistant/core/pull/91382 +[#91383]: https://github.com/home-assistant/core/pull/91383 +[#91384]: https://github.com/home-assistant/core/pull/91384 +[#91387]: https://github.com/home-assistant/core/pull/91387 +[#91389]: https://github.com/home-assistant/core/pull/91389 +[#91390]: https://github.com/home-assistant/core/pull/91390 +[#91396]: https://github.com/home-assistant/core/pull/91396 +[#91405]: https://github.com/home-assistant/core/pull/91405 +[#91406]: https://github.com/home-assistant/core/pull/91406 +[#91407]: https://github.com/home-assistant/core/pull/91407 +[#91410]: https://github.com/home-assistant/core/pull/91410 +[#91412]: https://github.com/home-assistant/core/pull/91412 +[#91418]: https://github.com/home-assistant/core/pull/91418 +[#91420]: https://github.com/home-assistant/core/pull/91420 +[#91430]: https://github.com/home-assistant/core/pull/91430 +[#91431]: https://github.com/home-assistant/core/pull/91431 +[#91432]: https://github.com/home-assistant/core/pull/91432 +[#91433]: https://github.com/home-assistant/core/pull/91433 +[#91438]: https://github.com/home-assistant/core/pull/91438 +[#91439]: https://github.com/home-assistant/core/pull/91439 +[#91442]: https://github.com/home-assistant/core/pull/91442 +[#91443]: https://github.com/home-assistant/core/pull/91443 +[#91444]: https://github.com/home-assistant/core/pull/91444 +[#91446]: https://github.com/home-assistant/core/pull/91446 +[#91450]: https://github.com/home-assistant/core/pull/91450 +[#91451]: https://github.com/home-assistant/core/pull/91451 +[#91452]: https://github.com/home-assistant/core/pull/91452 +[#91454]: https://github.com/home-assistant/core/pull/91454 +[#91456]: https://github.com/home-assistant/core/pull/91456 +[#91458]: https://github.com/home-assistant/core/pull/91458 +[#91463]: https://github.com/home-assistant/core/pull/91463 +[#91464]: https://github.com/home-assistant/core/pull/91464 +[#91474]: https://github.com/home-assistant/core/pull/91474 +[#91476]: https://github.com/home-assistant/core/pull/91476 +[#91485]: https://github.com/home-assistant/core/pull/91485 +[#91486]: https://github.com/home-assistant/core/pull/91486 +[#91490]: https://github.com/home-assistant/core/pull/91490 +[#91492]: https://github.com/home-assistant/core/pull/91492 +[#91497]: https://github.com/home-assistant/core/pull/91497 +[#91498]: https://github.com/home-assistant/core/pull/91498 +[#91500]: https://github.com/home-assistant/core/pull/91500 +[#91507]: https://github.com/home-assistant/core/pull/91507 +[#91509]: https://github.com/home-assistant/core/pull/91509 +[#91510]: https://github.com/home-assistant/core/pull/91510 +[#91512]: https://github.com/home-assistant/core/pull/91512 +[#91516]: https://github.com/home-assistant/core/pull/91516 +[#91519]: https://github.com/home-assistant/core/pull/91519 +[#91520]: https://github.com/home-assistant/core/pull/91520 +[#91521]: https://github.com/home-assistant/core/pull/91521 +[#91523]: https://github.com/home-assistant/core/pull/91523 +[#91524]: https://github.com/home-assistant/core/pull/91524 +[#91525]: https://github.com/home-assistant/core/pull/91525 +[#91526]: https://github.com/home-assistant/core/pull/91526 +[#91528]: https://github.com/home-assistant/core/pull/91528 +[#91529]: https://github.com/home-assistant/core/pull/91529 +[#91531]: https://github.com/home-assistant/core/pull/91531 +[#91533]: https://github.com/home-assistant/core/pull/91533 +[#91535]: https://github.com/home-assistant/core/pull/91535 +[#91536]: https://github.com/home-assistant/core/pull/91536 +[#91537]: https://github.com/home-assistant/core/pull/91537 +[#91538]: https://github.com/home-assistant/core/pull/91538 +[#91539]: https://github.com/home-assistant/core/pull/91539 +[#91541]: https://github.com/home-assistant/core/pull/91541 +[#91542]: https://github.com/home-assistant/core/pull/91542 +[#91546]: https://github.com/home-assistant/core/pull/91546 +[#91555]: https://github.com/home-assistant/core/pull/91555 +[#91556]: https://github.com/home-assistant/core/pull/91556 +[#91565]: https://github.com/home-assistant/core/pull/91565 +[#91567]: https://github.com/home-assistant/core/pull/91567 +[#91569]: https://github.com/home-assistant/core/pull/91569 +[#91570]: https://github.com/home-assistant/core/pull/91570 +[#91573]: https://github.com/home-assistant/core/pull/91573 +[#91575]: https://github.com/home-assistant/core/pull/91575 +[#91576]: https://github.com/home-assistant/core/pull/91576 +[#91577]: https://github.com/home-assistant/core/pull/91577 +[#91579]: https://github.com/home-assistant/core/pull/91579 +[#91588]: https://github.com/home-assistant/core/pull/91588 +[#91590]: https://github.com/home-assistant/core/pull/91590 +[#91591]: https://github.com/home-assistant/core/pull/91591 +[#91595]: https://github.com/home-assistant/core/pull/91595 +[#91599]: https://github.com/home-assistant/core/pull/91599 +[#91606]: https://github.com/home-assistant/core/pull/91606 +[#91611]: https://github.com/home-assistant/core/pull/91611 +[#91612]: https://github.com/home-assistant/core/pull/91612 +[#91616]: https://github.com/home-assistant/core/pull/91616 +[#91619]: https://github.com/home-assistant/core/pull/91619 +[#91621]: https://github.com/home-assistant/core/pull/91621 +[#91630]: https://github.com/home-assistant/core/pull/91630 +[#91633]: https://github.com/home-assistant/core/pull/91633 +[#91642]: https://github.com/home-assistant/core/pull/91642 +[#91643]: https://github.com/home-assistant/core/pull/91643 +[#91645]: https://github.com/home-assistant/core/pull/91645 +[#91648]: https://github.com/home-assistant/core/pull/91648 +[#91649]: https://github.com/home-assistant/core/pull/91649 +[#91651]: https://github.com/home-assistant/core/pull/91651 +[#91652]: https://github.com/home-assistant/core/pull/91652 +[#91655]: https://github.com/home-assistant/core/pull/91655 +[#91658]: https://github.com/home-assistant/core/pull/91658 +[#91669]: https://github.com/home-assistant/core/pull/91669 +[#91673]: https://github.com/home-assistant/core/pull/91673 +[#91674]: https://github.com/home-assistant/core/pull/91674 +[#91680]: https://github.com/home-assistant/core/pull/91680 +[#91681]: https://github.com/home-assistant/core/pull/91681 +[#91683]: https://github.com/home-assistant/core/pull/91683 +[#91685]: https://github.com/home-assistant/core/pull/91685 +[#91688]: https://github.com/home-assistant/core/pull/91688 +[#91691]: https://github.com/home-assistant/core/pull/91691 +[#91692]: https://github.com/home-assistant/core/pull/91692 +[#91693]: https://github.com/home-assistant/core/pull/91693 +[#91694]: https://github.com/home-assistant/core/pull/91694 +[#91695]: https://github.com/home-assistant/core/pull/91695 +[#91697]: https://github.com/home-assistant/core/pull/91697 +[#91698]: https://github.com/home-assistant/core/pull/91698 +[#91699]: https://github.com/home-assistant/core/pull/91699 +[#91700]: https://github.com/home-assistant/core/pull/91700 +[#91702]: https://github.com/home-assistant/core/pull/91702 +[#91710]: https://github.com/home-assistant/core/pull/91710 +[#91712]: https://github.com/home-assistant/core/pull/91712 +[#91717]: https://github.com/home-assistant/core/pull/91717 +[#91718]: https://github.com/home-assistant/core/pull/91718 +[#91720]: https://github.com/home-assistant/core/pull/91720 +[#91725]: https://github.com/home-assistant/core/pull/91725 +[#91727]: https://github.com/home-assistant/core/pull/91727 +[#91728]: https://github.com/home-assistant/core/pull/91728 +[#91730]: https://github.com/home-assistant/core/pull/91730 +[#91731]: https://github.com/home-assistant/core/pull/91731 +[#91732]: https://github.com/home-assistant/core/pull/91732 +[#91736]: https://github.com/home-assistant/core/pull/91736 +[#91737]: https://github.com/home-assistant/core/pull/91737 +[#91739]: https://github.com/home-assistant/core/pull/91739 +[#91741]: https://github.com/home-assistant/core/pull/91741 +[#91745]: https://github.com/home-assistant/core/pull/91745 +[#91747]: https://github.com/home-assistant/core/pull/91747 +[#91748]: https://github.com/home-assistant/core/pull/91748 +[#91749]: https://github.com/home-assistant/core/pull/91749 +[#91752]: https://github.com/home-assistant/core/pull/91752 +[#91753]: https://github.com/home-assistant/core/pull/91753 +[#91757]: https://github.com/home-assistant/core/pull/91757 +[#91761]: https://github.com/home-assistant/core/pull/91761 +[#91762]: https://github.com/home-assistant/core/pull/91762 +[#91766]: https://github.com/home-assistant/core/pull/91766 +[#91767]: https://github.com/home-assistant/core/pull/91767 +[#91769]: https://github.com/home-assistant/core/pull/91769 +[#91770]: https://github.com/home-assistant/core/pull/91770 +[#91771]: https://github.com/home-assistant/core/pull/91771 +[#91772]: https://github.com/home-assistant/core/pull/91772 +[#91778]: https://github.com/home-assistant/core/pull/91778 +[#91779]: https://github.com/home-assistant/core/pull/91779 +[#91783]: https://github.com/home-assistant/core/pull/91783 +[#91784]: https://github.com/home-assistant/core/pull/91784 +[#91786]: https://github.com/home-assistant/core/pull/91786 +[#91790]: https://github.com/home-assistant/core/pull/91790 +[#91791]: https://github.com/home-assistant/core/pull/91791 +[#91792]: https://github.com/home-assistant/core/pull/91792 +[#91796]: https://github.com/home-assistant/core/pull/91796 +[#91798]: https://github.com/home-assistant/core/pull/91798 +[#91800]: https://github.com/home-assistant/core/pull/91800 +[#91802]: https://github.com/home-assistant/core/pull/91802 +[#91803]: https://github.com/home-assistant/core/pull/91803 +[#91804]: https://github.com/home-assistant/core/pull/91804 +[#91806]: https://github.com/home-assistant/core/pull/91806 +[#91807]: https://github.com/home-assistant/core/pull/91807 +[#91808]: https://github.com/home-assistant/core/pull/91808 +[#91811]: https://github.com/home-assistant/core/pull/91811 +[#91812]: https://github.com/home-assistant/core/pull/91812 +[#91814]: https://github.com/home-assistant/core/pull/91814 +[#91818]: https://github.com/home-assistant/core/pull/91818 +[#91831]: https://github.com/home-assistant/core/pull/91831 +[#91836]: https://github.com/home-assistant/core/pull/91836 +[#91839]: https://github.com/home-assistant/core/pull/91839 +[#91840]: https://github.com/home-assistant/core/pull/91840 +[#91841]: https://github.com/home-assistant/core/pull/91841 +[#91844]: https://github.com/home-assistant/core/pull/91844 +[#91848]: https://github.com/home-assistant/core/pull/91848 +[#91850]: https://github.com/home-assistant/core/pull/91850 +[#91852]: https://github.com/home-assistant/core/pull/91852 +[#91853]: https://github.com/home-assistant/core/pull/91853 +[#91855]: https://github.com/home-assistant/core/pull/91855 +[#91856]: https://github.com/home-assistant/core/pull/91856 +[#91857]: https://github.com/home-assistant/core/pull/91857 +[#91859]: https://github.com/home-assistant/core/pull/91859 +[#91860]: https://github.com/home-assistant/core/pull/91860 +[#91861]: https://github.com/home-assistant/core/pull/91861 +[#91862]: https://github.com/home-assistant/core/pull/91862 +[#91866]: https://github.com/home-assistant/core/pull/91866 +[#91867]: https://github.com/home-assistant/core/pull/91867 +[#91868]: https://github.com/home-assistant/core/pull/91868 +[#91869]: https://github.com/home-assistant/core/pull/91869 +[#91870]: https://github.com/home-assistant/core/pull/91870 +[#91871]: https://github.com/home-assistant/core/pull/91871 +[#91872]: https://github.com/home-assistant/core/pull/91872 +[#91873]: https://github.com/home-assistant/core/pull/91873 +[#91875]: https://github.com/home-assistant/core/pull/91875 +[#91876]: https://github.com/home-assistant/core/pull/91876 +[#91878]: https://github.com/home-assistant/core/pull/91878 +[#91879]: https://github.com/home-assistant/core/pull/91879 +[#91881]: https://github.com/home-assistant/core/pull/91881 +[#91882]: https://github.com/home-assistant/core/pull/91882 +[#91883]: https://github.com/home-assistant/core/pull/91883 +[#91884]: https://github.com/home-assistant/core/pull/91884 +[#91885]: https://github.com/home-assistant/core/pull/91885 +[#91886]: https://github.com/home-assistant/core/pull/91886 +[#91887]: https://github.com/home-assistant/core/pull/91887 +[#91888]: https://github.com/home-assistant/core/pull/91888 +[#91894]: https://github.com/home-assistant/core/pull/91894 +[#91896]: https://github.com/home-assistant/core/pull/91896 +[#91898]: https://github.com/home-assistant/core/pull/91898 +[#91901]: https://github.com/home-assistant/core/pull/91901 +[#91907]: https://github.com/home-assistant/core/pull/91907 +[#91909]: https://github.com/home-assistant/core/pull/91909 +[#91910]: https://github.com/home-assistant/core/pull/91910 +[#91913]: https://github.com/home-assistant/core/pull/91913 +[#91914]: https://github.com/home-assistant/core/pull/91914 +[#91916]: https://github.com/home-assistant/core/pull/91916 +[#91917]: https://github.com/home-assistant/core/pull/91917 +[#91918]: https://github.com/home-assistant/core/pull/91918 +[#91922]: https://github.com/home-assistant/core/pull/91922 +[#91926]: https://github.com/home-assistant/core/pull/91926 +[#91928]: https://github.com/home-assistant/core/pull/91928 +[#91929]: https://github.com/home-assistant/core/pull/91929 +[#91930]: https://github.com/home-assistant/core/pull/91930 +[#91931]: https://github.com/home-assistant/core/pull/91931 +[#91932]: https://github.com/home-assistant/core/pull/91932 +[#91936]: https://github.com/home-assistant/core/pull/91936 +[#91940]: https://github.com/home-assistant/core/pull/91940 +[#91943]: https://github.com/home-assistant/core/pull/91943 +[#91945]: https://github.com/home-assistant/core/pull/91945 +[#91947]: https://github.com/home-assistant/core/pull/91947 +[#91950]: https://github.com/home-assistant/core/pull/91950 +[#91951]: https://github.com/home-assistant/core/pull/91951 +[#91956]: https://github.com/home-assistant/core/pull/91956 +[#91957]: https://github.com/home-assistant/core/pull/91957 +[#91959]: https://github.com/home-assistant/core/pull/91959 +[#91961]: https://github.com/home-assistant/core/pull/91961 +[#91962]: https://github.com/home-assistant/core/pull/91962 +[#91963]: https://github.com/home-assistant/core/pull/91963 +[#91965]: https://github.com/home-assistant/core/pull/91965 +[#91966]: https://github.com/home-assistant/core/pull/91966 +[#91969]: https://github.com/home-assistant/core/pull/91969 +[#91970]: https://github.com/home-assistant/core/pull/91970 +[#91975]: https://github.com/home-assistant/core/pull/91975 +[#91977]: https://github.com/home-assistant/core/pull/91977 +[#91978]: https://github.com/home-assistant/core/pull/91978 +[#91982]: https://github.com/home-assistant/core/pull/91982 +[#91985]: https://github.com/home-assistant/core/pull/91985 +[#91989]: https://github.com/home-assistant/core/pull/91989 +[#91991]: https://github.com/home-assistant/core/pull/91991 +[#91995]: https://github.com/home-assistant/core/pull/91995 +[#91996]: https://github.com/home-assistant/core/pull/91996 +[#91999]: https://github.com/home-assistant/core/pull/91999 +[#92000]: https://github.com/home-assistant/core/pull/92000 +[#92002]: https://github.com/home-assistant/core/pull/92002 +[#92005]: https://github.com/home-assistant/core/pull/92005 +[#92006]: https://github.com/home-assistant/core/pull/92006 +[#92008]: https://github.com/home-assistant/core/pull/92008 +[#92009]: https://github.com/home-assistant/core/pull/92009 +[#92012]: https://github.com/home-assistant/core/pull/92012 +[#92014]: https://github.com/home-assistant/core/pull/92014 +[#92016]: https://github.com/home-assistant/core/pull/92016 +[#92020]: https://github.com/home-assistant/core/pull/92020 +[#92021]: https://github.com/home-assistant/core/pull/92021 +[#92022]: https://github.com/home-assistant/core/pull/92022 +[#92023]: https://github.com/home-assistant/core/pull/92023 +[#92025]: https://github.com/home-assistant/core/pull/92025 +[#92027]: https://github.com/home-assistant/core/pull/92027 +[#92028]: https://github.com/home-assistant/core/pull/92028 +[#92030]: https://github.com/home-assistant/core/pull/92030 +[#92031]: https://github.com/home-assistant/core/pull/92031 +[#92032]: https://github.com/home-assistant/core/pull/92032 +[#92034]: https://github.com/home-assistant/core/pull/92034 +[#92035]: https://github.com/home-assistant/core/pull/92035 +[#92036]: https://github.com/home-assistant/core/pull/92036 +[#92037]: https://github.com/home-assistant/core/pull/92037 +[#92041]: https://github.com/home-assistant/core/pull/92041 +[#92042]: https://github.com/home-assistant/core/pull/92042 +[#92045]: https://github.com/home-assistant/core/pull/92045 +[#92049]: https://github.com/home-assistant/core/pull/92049 +[#92052]: https://github.com/home-assistant/core/pull/92052 +[#92054]: https://github.com/home-assistant/core/pull/92054 +[#92056]: https://github.com/home-assistant/core/pull/92056 +[#92057]: https://github.com/home-assistant/core/pull/92057 +[#92058]: https://github.com/home-assistant/core/pull/92058 +[#92059]: https://github.com/home-assistant/core/pull/92059 +[#92060]: https://github.com/home-assistant/core/pull/92060 +[#92063]: https://github.com/home-assistant/core/pull/92063 +[#92064]: https://github.com/home-assistant/core/pull/92064 +[#92066]: https://github.com/home-assistant/core/pull/92066 +[#92067]: https://github.com/home-assistant/core/pull/92067 +[#92070]: https://github.com/home-assistant/core/pull/92070 +[#92074]: https://github.com/home-assistant/core/pull/92074 +[#92075]: https://github.com/home-assistant/core/pull/92075 +[#92076]: https://github.com/home-assistant/core/pull/92076 +[#92078]: https://github.com/home-assistant/core/pull/92078 +[#92079]: https://github.com/home-assistant/core/pull/92079 +[#92083]: https://github.com/home-assistant/core/pull/92083 +[#92085]: https://github.com/home-assistant/core/pull/92085 +[#92086]: https://github.com/home-assistant/core/pull/92086 +[#92088]: https://github.com/home-assistant/core/pull/92088 +[#92090]: https://github.com/home-assistant/core/pull/92090 +[#92098]: https://github.com/home-assistant/core/pull/92098 +[#92100]: https://github.com/home-assistant/core/pull/92100 +[#92103]: https://github.com/home-assistant/core/pull/92103 +[#92105]: https://github.com/home-assistant/core/pull/92105 +[#92107]: https://github.com/home-assistant/core/pull/92107 +[#92111]: https://github.com/home-assistant/core/pull/92111 +[#92121]: https://github.com/home-assistant/core/pull/92121 +[#92123]: https://github.com/home-assistant/core/pull/92123 +[#92126]: https://github.com/home-assistant/core/pull/92126 +[#92129]: https://github.com/home-assistant/core/pull/92129 +[#92131]: https://github.com/home-assistant/core/pull/92131 +[#92137]: https://github.com/home-assistant/core/pull/92137 +[#92140]: https://github.com/home-assistant/core/pull/92140 +[#92144]: https://github.com/home-assistant/core/pull/92144 +[#92145]: https://github.com/home-assistant/core/pull/92145 +[#92150]: https://github.com/home-assistant/core/pull/92150 +[#92151]: https://github.com/home-assistant/core/pull/92151 +[#92154]: https://github.com/home-assistant/core/pull/92154 +[#92158]: https://github.com/home-assistant/core/pull/92158 +[#92161]: https://github.com/home-assistant/core/pull/92161 +[#92173]: https://github.com/home-assistant/core/pull/92173 +[#92186]: https://github.com/home-assistant/core/pull/92186 +[#92188]: https://github.com/home-assistant/core/pull/92188 +[#92190]: https://github.com/home-assistant/core/pull/92190 +[#92200]: https://github.com/home-assistant/core/pull/92200 +[#92202]: https://github.com/home-assistant/core/pull/92202 +[#92209]: https://github.com/home-assistant/core/pull/92209 +[#92210]: https://github.com/home-assistant/core/pull/92210 +[#92216]: https://github.com/home-assistant/core/pull/92216 +[#92222]: https://github.com/home-assistant/core/pull/92222 +[#92238]: https://github.com/home-assistant/core/pull/92238 +[#92241]: https://github.com/home-assistant/core/pull/92241 +[#92249]: https://github.com/home-assistant/core/pull/92249 +[#92251]: https://github.com/home-assistant/core/pull/92251 +[#92254]: https://github.com/home-assistant/core/pull/92254 +[#92259]: https://github.com/home-assistant/core/pull/92259 +[#92260]: https://github.com/home-assistant/core/pull/92260 +[#92262]: https://github.com/home-assistant/core/pull/92262 +[#92266]: https://github.com/home-assistant/core/pull/92266 +[#92267]: https://github.com/home-assistant/core/pull/92267 +[#92270]: https://github.com/home-assistant/core/pull/92270 +[#92272]: https://github.com/home-assistant/core/pull/92272 +[#92276]: https://github.com/home-assistant/core/pull/92276 +[#92286]: https://github.com/home-assistant/core/pull/92286 +[#92288]: https://github.com/home-assistant/core/pull/92288 +[#92292]: https://github.com/home-assistant/core/pull/92292 +[#92293]: https://github.com/home-assistant/core/pull/92293 +[#92294]: https://github.com/home-assistant/core/pull/92294 +[#92295]: https://github.com/home-assistant/core/pull/92295 +[#92296]: https://github.com/home-assistant/core/pull/92296 +[#92312]: https://github.com/home-assistant/core/pull/92312 +[#92313]: https://github.com/home-assistant/core/pull/92313 +[#92315]: https://github.com/home-assistant/core/pull/92315 +[#92324]: https://github.com/home-assistant/core/pull/92324 +[#92326]: https://github.com/home-assistant/core/pull/92326 +[#92330]: https://github.com/home-assistant/core/pull/92330 +[#92333]: https://github.com/home-assistant/core/pull/92333 +[#92334]: https://github.com/home-assistant/core/pull/92334 +[#92339]: https://github.com/home-assistant/core/pull/92339 +[#92344]: https://github.com/home-assistant/core/pull/92344 +[#92353]: https://github.com/home-assistant/core/pull/92353 +[#92354]: https://github.com/home-assistant/core/pull/92354 +[#92363]: https://github.com/home-assistant/core/pull/92363 +[#92372]: https://github.com/home-assistant/core/pull/92372 +[#92373]: https://github.com/home-assistant/core/pull/92373 +[#92378]: https://github.com/home-assistant/core/pull/92378 +[#92382]: https://github.com/home-assistant/core/pull/92382 +[#92387]: https://github.com/home-assistant/core/pull/92387 +[#92389]: https://github.com/home-assistant/core/pull/92389 +[#92396]: https://github.com/home-assistant/core/pull/92396 +[#92398]: https://github.com/home-assistant/core/pull/92398 +[#92400]: https://github.com/home-assistant/core/pull/92400 +[#92402]: https://github.com/home-assistant/core/pull/92402 +[#92403]: https://github.com/home-assistant/core/pull/92403 +[#92405]: https://github.com/home-assistant/core/pull/92405 +[#92406]: https://github.com/home-assistant/core/pull/92406 +[#92408]: https://github.com/home-assistant/core/pull/92408 +[#92409]: https://github.com/home-assistant/core/pull/92409 +[#92410]: https://github.com/home-assistant/core/pull/92410 +[#92412]: https://github.com/home-assistant/core/pull/92412 +[#92413]: https://github.com/home-assistant/core/pull/92413 +[#92415]: https://github.com/home-assistant/core/pull/92415 +[#92416]: https://github.com/home-assistant/core/pull/92416 +[#92421]: https://github.com/home-assistant/core/pull/92421 +[@5n8ke]: https://github.com/5n8ke +[@AngellusMortis]: https://github.com/AngellusMortis +[@ArturoGuerra]: https://github.com/ArturoGuerra +[@Bre77]: https://github.com/Bre77 +[@ClayBenson94]: https://github.com/ClayBenson94 +[@CodingSquirrel]: https://github.com/CodingSquirrel +[@Danielhiversen]: https://github.com/Danielhiversen +[@DeerMaximum]: https://github.com/DeerMaximum +[@Djelibeybi]: https://github.com/Djelibeybi +[@Drafteed]: https://github.com/Drafteed +[@DutchDeffy]: https://github.com/DutchDeffy +[@Ernst79]: https://github.com/Ernst79 +[@GuyKh]: https://github.com/GuyKh +[@HarlemSquirrel]: https://github.com/HarlemSquirrel +[@Kane610]: https://github.com/Kane610 +[@Lash-L]: https://github.com/Lash-L +[@MarkGodwin]: https://github.com/MarkGodwin +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@Mic92]: https://github.com/Mic92 +[@PatrickGlesner]: https://github.com/PatrickGlesner +[@StephanU]: https://github.com/StephanU +[@akx]: https://github.com/akx +[@albertogeniola]: https://github.com/albertogeniola +[@alh84001]: https://github.com/alh84001 +[@allenporter]: https://github.com/allenporter +[@andarotajo]: https://github.com/andarotajo +[@avee87]: https://github.com/avee87 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@boswelja]: https://github.com/boswelja +[@bouwew]: https://github.com/bouwew +[@bramkragten]: https://github.com/bramkragten +[@briglx]: https://github.com/briglx +[@cdce8p]: https://github.com/cdce8p +[@chrisx8]: https://github.com/chrisx8 +[@chuckdeal97]: https://github.com/chuckdeal97 +[@cirrusblau]: https://github.com/cirrusblau +[@davet2001]: https://github.com/davet2001 +[@depoll]: https://github.com/depoll +[@dgomes]: https://github.com/dgomes +[@dmulcahey]: https://github.com/dmulcahey +[@dougiteixeira]: https://github.com/dougiteixeira +[@eavanvalkenburg]: https://github.com/eavanvalkenburg +[@eifinger]: https://github.com/eifinger +[@ejpenney]: https://github.com/ejpenney +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@epenet]: https://github.com/epenet +[@esev]: https://github.com/esev +[@farmio]: https://github.com/farmio +[@flip-dots]: https://github.com/flip-dots +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@hahn-th]: https://github.com/hahn-th +[@hidaris]: https://github.com/hidaris +[@iMicknl]: https://github.com/iMicknl +[@jbouwh]: https://github.com/jbouwh +[@jeeftor]: https://github.com/jeeftor +[@jellenijhof12]: https://github.com/jellenijhof12 +[@jesserockz]: https://github.com/jesserockz +[@jfroy]: https://github.com/jfroy +[@jjlawren]: https://github.com/jjlawren +[@joostlek]: https://github.com/joostlek +[@jpettitt]: https://github.com/jpettitt +[@kbickar]: https://github.com/kbickar +[@kernelpanic85]: https://github.com/kernelpanic85 +[@koleo9am]: https://github.com/koleo9am +[@krazos]: https://github.com/krazos +[@lawfulchaos]: https://github.com/lawfulchaos +[@lodesmets]: https://github.com/lodesmets +[@luar123]: https://github.com/luar123 +[@ludeeus]: https://github.com/ludeeus +[@m4k2k]: https://github.com/m4k2k +[@marcelveldt]: https://github.com/marcelveldt +[@mdegat01]: https://github.com/mdegat01 +[@mib1185]: https://github.com/mib1185 +[@michaeldavie]: https://github.com/michaeldavie +[@mikeknoop]: https://github.com/mikeknoop +[@mkmer]: https://github.com/mkmer +[@mletenay]: https://github.com/mletenay +[@mrwogu]: https://github.com/mrwogu +[@mvdwetering]: https://github.com/mvdwetering +[@mzdrale]: https://github.com/mzdrale +[@nachonam]: https://github.com/nachonam +[@nalin29]: https://github.com/nalin29 +[@nkgilley]: https://github.com/nkgilley +[@oischinger]: https://github.com/oischinger +[@oliv3r]: https://github.com/oliv3r +[@pestevez]: https://github.com/pestevez +[@piitaya]: https://github.com/piitaya +[@puddly]: https://github.com/puddly +[@pyos]: https://github.com/pyos +[@rajeevan]: https://github.com/rajeevan +[@raman325]: https://github.com/raman325 +[@rappenze]: https://github.com/rappenze +[@regevbr]: https://github.com/regevbr +[@repaxan]: https://github.com/repaxan +[@rikroe]: https://github.com/rikroe +[@rlippmann]: https://github.com/rlippmann +[@rubenbe]: https://github.com/rubenbe +[@rutkai]: https://github.com/rutkai +[@sairon]: https://github.com/sairon +[@shbatm]: https://github.com/shbatm +[@shmuelzon]: https://github.com/shmuelzon +[@sstriker]: https://github.com/sstriker +[@stackia]: https://github.com/stackia +[@starkillerOG]: https://github.com/starkillerOG +[@swiergot]: https://github.com/swiergot +[@synesthesiam]: https://github.com/synesthesiam +[@teharris1]: https://github.com/teharris1 +[@tkdrob]: https://github.com/tkdrob +[@tristangrichard]: https://github.com/tristangrichard +[@tronikos]: https://github.com/tronikos +[@tymm]: https://github.com/tymm +[@vingerha]: https://github.com/vingerha +[@vpathuis]: https://github.com/vpathuis +[@wlcrs]: https://github.com/wlcrs +[accuweather docs]: /integrations/accuweather/ +[advantage_air docs]: /integrations/advantage_air/ +[airvisual docs]: /integrations/airvisual/ +[alert docs]: /integrations/alert/ +[alexa docs]: /integrations/alexa/ +[ambient_station docs]: /integrations/ambient_station/ +[analytics docs]: /integrations/analytics/ +[androidtv docs]: /integrations/androidtv/ +[androidtv_remote docs]: /integrations/androidtv_remote/ +[anova_sous_vide docs]: /integrations/anova_sous_vide/ +[apple_tv docs]: /integrations/apple_tv/ +[arcam_fmj docs]: /integrations/arcam_fmj/ +[assist_pipeline docs]: /integrations/assist_pipeline/ +[august docs]: /integrations/august/ +[axis docs]: /integrations/axis/ +[azure_event_hub docs]: /integrations/azure_event_hub/ +[backup docs]: /integrations/backup/ +[baf docs]: /integrations/baf/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bond docs]: /integrations/bond/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brottsplatskartan docs]: /integrations/brottsplatskartan/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[calendar docs]: /integrations/calendar/ +[camera docs]: /integrations/camera/ +[cloud docs]: /integrations/cloud/ +[co2signal docs]: /integrations/co2signal/ +[control4 docs]: /integrations/control4/ +[conversation docs]: /integrations/conversation/ +[coronavirus docs]: /integrations/coronavirus/ +[cover docs]: /integrations/cover/ +[debugpy docs]: /integrations/debugpy/ +[deconz docs]: /integrations/deconz/ +[default_config docs]: /integrations/default_config/ +[demo docs]: /integrations/demo/ +[derivative docs]: /integrations/derivative/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[dhcp docs]: /integrations/dhcp/ +[discovery docs]: /integrations/discovery/ +[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/ +[easyenergy docs]: /integrations/easyenergy/ +[econet docs]: /integrations/econet/ +[eddystone_temperature docs]: /integrations/eddystone_temperature/ +[edl21 docs]: /integrations/edl21/ +[egardia docs]: /integrations/egardia/ +[elmax docs]: /integrations/elmax/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[eufy docs]: /integrations/eufy/ +[fibaro docs]: /integrations/fibaro/ +[filesize docs]: /integrations/filesize/ +[filter docs]: /integrations/filter/ +[flux_led docs]: /integrations/flux_led/ +[forecast_solar docs]: /integrations/forecast_solar/ +[freebox docs]: /integrations/freebox/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[frontend docs]: /integrations/frontend/ +[frontier_silicon docs]: /integrations/frontier_silicon/ +[glances docs]: /integrations/glances/ +[goodwe docs]: /integrations/goodwe/ +[google_assistant docs]: /integrations/google_assistant/ +[google_assistant_sdk docs]: /integrations/google_assistant_sdk/ +[google_mail docs]: /integrations/google_mail/ +[google_maps docs]: /integrations/google_maps/ +[gtfs docs]: /integrations/gtfs/ +[hassio docs]: /integrations/hassio/ +[history docs]: /integrations/history/ +[history_stats docs]: /integrations/history_stats/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_yellow docs]: /integrations/homeassistant_yellow/ +[homekit docs]: /integrations/homekit/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[honeywell docs]: /integrations/honeywell/ +[http docs]: /integrations/http/ +[image_processing docs]: /integrations/image_processing/ +[imap docs]: /integrations/imap/ +[imap_email_content docs]: /integrations/imap_email_content/ +[insteon docs]: /integrations/insteon/ +[integration docs]: /integrations/integration/ +[intent docs]: /integrations/intent/ +[isy994 docs]: /integrations/isy994/ +[knx docs]: /integrations/knx/ +[landisgyr_heat_meter docs]: /integrations/landisgyr_heat_meter/ +[lastfm docs]: /integrations/lastfm/ +[ld2410_ble docs]: /integrations/ld2410_ble/ +[led_ble docs]: /integrations/led_ble/ +[lifx docs]: /integrations/lifx/ +[local_calendar docs]: /integrations/local_calendar/ +[lock docs]: /integrations/lock/ +[logbook docs]: /integrations/logbook/ +[luci docs]: /integrations/luci/ +[lutron docs]: /integrations/lutron/ +[lutron_caseta docs]: /integrations/lutron_caseta/ +[mailbox docs]: /integrations/mailbox/ +[matter docs]: /integrations/matter/ +[monessen docs]: /integrations/monessen/ +[mqtt docs]: /integrations/mqtt/ +[mqtt_json docs]: /integrations/mqtt_json/ +[mqtt_statestream docs]: /integrations/mqtt_statestream/ +[mysensors docs]: /integrations/mysensors/ +[netatmo docs]: /integrations/netatmo/ +[nextcloud docs]: /integrations/nextcloud/ +[nextdns docs]: /integrations/nextdns/ +[niko_home_control docs]: /integrations/niko_home_control/ +[nina docs]: /integrations/nina/ +[notion docs]: /integrations/notion/ +[nut docs]: /integrations/nut/ +[obihai docs]: /integrations/obihai/ +[onewire docs]: /integrations/onewire/ +[onvif docs]: /integrations/onvif/ +[openai_conversation docs]: /integrations/openai_conversation/ +[opencv docs]: /integrations/opencv/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[otbr docs]: /integrations/otbr/ +[overkiz docs]: /integrations/overkiz/ +[owntracks docs]: /integrations/owntracks/ +[person docs]: /integrations/person/ +[pi_hole docs]: /integrations/pi_hole/ +[picnic docs]: /integrations/picnic/ +[pjlink docs]: /integrations/pjlink/ +[plant docs]: /integrations/plant/ +[plex docs]: /integrations/plex/ +[plugwise docs]: /integrations/plugwise/ +[powerwall docs]: /integrations/powerwall/ +[profiler docs]: /integrations/profiler/ +[prosegur docs]: /integrations/prosegur/ +[proxmoxve docs]: /integrations/proxmoxve/ +[prusalink docs]: /integrations/prusalink/ +[qbittorrent docs]: /integrations/qbittorrent/ +[rapt_ble docs]: /integrations/rapt_ble/ +[recorder docs]: /integrations/recorder/ +[renault docs]: /integrations/renault/ +[reolink docs]: /integrations/reolink/ +[rest docs]: /integrations/rest/ +[roborock docs]: /integrations/roborock/ +[ruuvi_gateway docs]: /integrations/ruuvi_gateway/ +[samsungtv docs]: /integrations/samsungtv/ +[sense docs]: /integrations/sense/ +[sensor docs]: /integrations/sensor/ +[sentry docs]: /integrations/sentry/ +[sfr_box docs]: /integrations/sfr_box/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[shopping_list docs]: /integrations/shopping_list/ +[sia docs]: /integrations/sia/ +[simplepush docs]: /integrations/simplepush/ +[sleepiq docs]: /integrations/sleepiq/ +[smartthings docs]: /integrations/smartthings/ +[snapcast docs]: /integrations/snapcast/ +[snips docs]: /integrations/snips/ +[solaredge_local docs]: /integrations/solaredge_local/ +[sonos docs]: /integrations/sonos/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[srp_energy docs]: /integrations/srp_energy/ +[ssdp docs]: /integrations/ssdp/ +[starlink docs]: /integrations/starlink/ +[steam_online docs]: /integrations/steam_online/ +[stream docs]: /integrations/stream/ +[stt docs]: /integrations/stt/ +[supla docs]: /integrations/supla/ +[switch_as_x docs]: /integrations/switch_as_x/ +[switcher_kis docs]: /integrations/switcher_kis/ +[synology_dsm docs]: /integrations/synology_dsm/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tasmota docs]: /integrations/tasmota/ +[template docs]: /integrations/template/ +[thread docs]: /integrations/thread/ +[tibber docs]: /integrations/tibber/ +[todoist docs]: /integrations/todoist/ +[tplink docs]: /integrations/tplink/ +[tplink_omada docs]: /integrations/tplink_omada/ +[traccar docs]: /integrations/traccar/ +[trace docs]: /integrations/trace/ +[transmission docs]: /integrations/transmission/ +[tts docs]: /integrations/tts/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[usb docs]: /integrations/usb/ +[velbus docs]: /integrations/velbus/ +[vesync docs]: /integrations/vesync/ +[vicare docs]: /integrations/vicare/ +[vizio docs]: /integrations/vizio/ +[voice_assistant docs]: /integrations/voice_assistant/ +[voip docs]: /integrations/voip/ +[wallbox docs]: /integrations/wallbox/ +[watson_tts docs]: /integrations/watson_tts/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[webhook docs]: /integrations/webhook/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whirlpool docs]: /integrations/whirlpool/ +[withings docs]: /integrations/withings/ +[wiz docs]: /integrations/wiz/ +[workday docs]: /integrations/workday/ +[wyoming docs]: /integrations/wyoming/ +[xbox_live docs]: /integrations/xbox_live/ +[xiaomi_ble docs]: /integrations/xiaomi_ble/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[yeelight docs]: /integrations/yeelight/ +[zeroconf docs]: /integrations/zeroconf/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ +[zwave_me docs]: /integrations/zwave_me/ diff --git a/source/docs/assist/apple.markdown b/source/docs/assist/apple.markdown index 64f2f679018..547d726c699 100644 --- a/source/docs/assist/apple.markdown +++ b/source/docs/assist/apple.markdown @@ -23,7 +23,7 @@ To get started make sure you're running the latest version of the [Home Assistan There are two versions of the shortcut. The normal shortcut works better with Siri while the Button shortcut has the ability to use speech-to-text when triggered outside of Siri and can customize the input language (instead of relying on the OS language) -[_Last updated: Jan 26, 2022_](#changelog) +[_Last updated: Jan 26, 2023_](#changelog) ### Adjusting the language @@ -62,6 +62,6 @@ The latest version of Siri on the Apple Watch contains an annoying bug where it ## Changelog -### Version 1 - Jan 26, 2022 +### Version 1 - Jan 26, 2023 Initial release diff --git a/source/docs/assist/troubleshooting.markdown b/source/docs/assist/troubleshooting.markdown index 01c2711a64c..bc183fd5890 100644 --- a/source/docs/assist/troubleshooting.markdown +++ b/source/docs/assist/troubleshooting.markdown @@ -28,3 +28,16 @@ This section lists a few steps that may help you troubleshoot issues with Assist * If the phrase does not work, try a variant. For example, if *Turn off the light* doesn't work, try: *Turn off the lights in the kitchen*. * Check if your phrase is [supported](/docs/assist/builtin_sentences/). * Make sure you are using the name of the area as it is defined in Home Assistant. If you have a room called *bathroom*, the phrase *Turning on the lights in the bath* won’t work. + +## I do not see any assistant + +If under {% my voice_assistants title="**Settings** > **Voice assistants**" %} you do not see any assistants, you are not using the default configuration. The image below shows the **Assist** section. + +![Open the pipeline debug dialog](/images/assist/assist-assistants-page.png) + +If the **Assist** section is missing entirely, you need to add the following to your `configuration.yaml` file: + + ```yaml + # Example configuration.yaml entry + assist_pipeline: + ``` diff --git a/source/docs/assist/using_voice_assistants_overview.markdown b/source/docs/assist/using_voice_assistants_overview.markdown new file mode 100644 index 00000000000..1d6e573c169 --- /dev/null +++ b/source/docs/assist/using_voice_assistants_overview.markdown @@ -0,0 +1,19 @@ +--- +title: "Using voice assistants - overview" +--- + +We are in [chapter two](/blog/2023/04/27/year-of-the-voice-chapter-2/) of Home Assistant's Year of the Voice. +We can now turn speech into text and text back into speech. Wake word detection is not yet supported. + +The video below provides a good overview of what is currently possible with voice assistants. It shows you the following: + +* How to voice-control devices using the Assist button, an [analog phone](/projects/worlds-most-private-voice-assistant/), or an [ATOM Echo](/projects/thirteen-usd-voice-remote/). +* How to [expose devices to Assist](/docs/assist/voice_remote_expose_devices/). +* How to set up a [local voice assistant](/docs/assist/voice_remote_local_assistant/). +* The video also shows the differences in processing speed. It compares: + * Home Assistant Cloud versus local processing, + * local processing on more or less powerful hardware. + + + + diff --git a/source/docs/assist/voice_remote_local_assistant.markdown b/source/docs/assist/voice_remote_local_assistant.markdown index 8caf539b1aa..eed3e1392b0 100644 --- a/source/docs/assist/voice_remote_local_assistant.markdown +++ b/source/docs/assist/voice_remote_local_assistant.markdown @@ -28,16 +28,24 @@ For the quickest way to get your local Assist pipeline started, follow these ste * **Piper** converts text into speech. * **Wyoming** is the protocol they are both using to communicate. 1. Setup your assistant. - * Go to **Settings** > **Voice assistants** and select **Add assistant**. + * Go to {% my voice_assistants title="**Settings** > **Voice assistants**" %} and select **Add assistant**. ![Enter a name for your voice assistant](/images/assist/piper-whisper-install-05.png) + + * **Troubleshooting**: If you do not see any assistants here, you are not using the default configuration. In this case, you need to add the following to your `configuration.yaml` file: + + ```yaml + # Example configuration.yaml entry + assist_pipeline: + ``` + * Enter a name. You can pick any name that is meaningful to you. * Select the language that you want to speak. * Under **Conversation agent**, select **Home Assistant**. * Under **Speech-to-text**, select **faster-whisper**. * Under **Text-to-speech**, select **piper**. * Depending on your language, you may be able to select different language variants. -1. That's it. You ensured your voice commands can be processed locally on your device. -1. If you haven't done so yet, [expose your devices to Assist](/docs/assist/voice_remote_expose_devices/#exposing-your-devices). +2. That's it. You ensured your voice commands can be processed locally on your device. +3. If you haven't done so yet, [expose your devices to Assist](/docs/assist/voice_remote_expose_devices/#exposing-your-devices). * Otherwise you won't be able to control them by voice. diff --git a/source/examples/index.markdown b/source/examples/index.markdown index 8190d71582d..ed4f75ad7dd 100644 --- a/source/examples/index.markdown +++ b/source/examples/index.markdown @@ -21,7 +21,7 @@ A great place to find popular configurations is on this ## Popular Blueprints -This is a list of the most popular [blueprints](/integrations/blueprint) in the [Blueprint Exchange category on the forums](https://www.home-assistant.io/get-blueprints). +This is a list of the most popular [blueprints](/docs/automation/using_blueprints/) in the [Blueprint Exchange category on the forums](https://www.home-assistant.io/get-blueprints). {% for post in site.data.blueprint_exchange_data limit:25 %} diff --git a/source/getting-started/concepts-terminology.markdown b/source/getting-started/concepts-terminology.markdown index a918b698baf..a031fc8e550 100644 --- a/source/getting-started/concepts-terminology.markdown +++ b/source/getting-started/concepts-terminology.markdown @@ -57,4 +57,4 @@ Depending on your [installation type](/installation), you may have the ability t ![Add-ons](/images/getting-started/add-ons.png) -{% include getting-started/next_step.html step="Automate Home Assistant" link="/getting-started/automation/" %} +{% include getting-started/next_step.html step="Adding Integrations In Home Assistant" link="/getting-started/integration/" %} diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 3ca9838011b..32f08ab71cd 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -8,6 +8,7 @@ show_title: true {% include getting-started/next_step.html step="Installation" link="/installation/" %} {% include getting-started/next_step.html step="Onboarding" link="/getting-started/onboarding/" %} {% include getting-started/next_step.html step="Concepts and terminology" link="/getting-started/concepts-terminology/" %} +{% include getting-started/next_step.html step="Integration" link="/getting-started/integration/" %} {% include getting-started/next_step.html step="Automation" link="/getting-started/automation/" %} {% include getting-started/next_step.html step="Presence detection" link="/getting-started/presence-detection/" %} {% include getting-started/next_step.html step="Join the community" link="/getting-started/join-the-community/" %} diff --git a/source/getting-started/integration.markdown b/source/getting-started/integration.markdown new file mode 100644 index 00000000000..d8f3e5d9961 --- /dev/null +++ b/source/getting-started/integration.markdown @@ -0,0 +1,31 @@ +--- +title: "Adding Integrations" +description: "Instructions to add an integration." +--- +Let's start by adding your first {% term integration %} so that you can see and change a smart home {% term device %}. + +From the sidebar, click on {% my integrations title="Settings > Devices & Services" %}. At this screen you will be able to set up integrations with Home Assistant. You might notice a *discovered* section. This section contains integrations that were found on your network and can easily be added with a few clicks. If your integrations are not discovered, click the **Add integration** button in the lower right and search for your integration in that list. + +In this example, we'll add a Chromecast to Home Assistant. Chromecast uses the [Google Cast integration](/integrations/cast). Although the below example has already discovered the device, let's add it manually. + +First, press the **Add integration** button in the lower right and search for your integration in that list. + +![Search for Google Cast](/images/getting-started/add-google-cast-integration.png) + +Select **Google Cast** from the list. Because my Chromecast device was already discovered, it asks if I want to add the discovered one or a different one. I will choose the latter and setup another instance. + +![Google Cast discovered confirmation](/images/getting-started/google-cast-discovered.png) + +It now asks for the network IP address of the device. Describing how to identify a devices IP address is beyond the scope of this article because each network is different. However, the router is usually a good place to look. In this example, it's *192.168.1.99*. + +![Manually setup Google Cast device](/images/getting-started/google-cast-manual-details.png) + +If it was successful, it will show a message and allow you to set the {% term area %} it belongs to. + +![Search for Google Cast](/images/getting-started/google-cast-integration-added.png) + +When you're done, navigate back to the web interface and voila, your devices are ready for you to control. You can always go back to add and remove integrations in the future. + +If you get stuck, need more information, or want to see what the setup process is like, use the [integration documentation](/integrations). + +{% include getting-started/next_step.html step="Automate Home Assistant" link="/getting-started/automation/" %} \ No newline at end of file diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown index aa8bac323f0..48a17e6902f 100644 --- a/source/getting-started/onboarding.markdown +++ b/source/getting-started/onboarding.markdown @@ -5,28 +5,41 @@ description: "Instructions to get Home Assistant configured." Alright, you made it here. The tough part is done. -With Home Assistant installed, it's time to configure it. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and select **create account**. +After entering the Home Assistant device's address in your browser's address bar, the preparation screen is shown. Depending on your hardware, preparation may take a while. -![Set your username and password.](/images/getting-started/username.png) +![Home Assistant preparation](/images/getting-started/onboarding_preparing_01.png) -Next, you can enter a name for your home and set your location and unit system. Select **Detect** to find your location and set your time zone and unit system based on that location. If you'd rather not send your location, you can set these values manually. +To show the logs, select the blue pulsing circle. +![Home Assistant preparation](/images/getting-started/onboarding_preparing_show_logs.png) -![Set your location, time zone, and unit system.](/images/getting-started/location.png) +With Home Assistant installed, it's time to set up the basics. -Once you are done, click **Next**. In this screen, Home Assistant will show any {% term devices %} that it has discovered on your network. Don't be alarmed if you see fewer items than shown below; you can always manually add devices later. +In this step, you will create the owner account of Home Assistant. This account is an administrator account. It will always be able to change everything. + +1. Enter a name, username, and password. Select **Create account**. -![Discovery of devices on your network.](/images/getting-started/devices.png) + ![Set your username and password.](/images/getting-started/username.png) -Finally, click **Finish**. Now you're brought to the Home Assistant web interface. This screen will show all of your devices. So let's get that screen filled up! +1. Enter a name for your home and define the location specific settings and the language of the user interface. + * To automatically populate these settings, select **Detect**. + * If you'd rather not send your location, you can set these values manually. -![The Home Assistant user interface.](/images/getting-started/lovelace.png) + ![Define your location specific settings.](/images/getting-started/onboarding_location.png) + +1. Select which information you are willing to share. + * Sharing is disabled by default. However, we would like to encourage you to share some of this data. + * This information helps us to find out which platforms we need to support and where to focus our efforts. + * The data is anonymized and aggregated. To see the charts we generate out of this data, take a look at our [analytics page](https://analytics.home-assistant.io/). + + ![Share anonymized data](/images/getting-started/onboarding_share_anonymized_info.png) -From the side bar, click on {% my integrations title="Settings > Devices & Services" %}. On this screen, you will be able to set up {% term integrations %} with Home Assistant. +1. Once you are done, select **Next**. + * Home Assistant will then show any {% term devices %} it has discovered on your network. + * Don't be alarmed if you see fewer items than shown below; you can always manually add devices later. -![The integrations page in the configurations panel shows you all your configured integrations.](/images/getting-started/integrations.png) + ![Discovery of devices on your network.](/images/getting-started/onboarding_devices.png) -When each integration is done setting up, it will ask you to put the new devices in areas. Areas allow you to organize all the devices in your home. - -When you're done, navigate back to the web interface and voila, your devices are ready for you to control. +1. Finally, select **Finish**. + * Now you're brought to the Home Assistant web interface. This screen will show all of your devices. {% include getting-started/next_step.html step="Concepts & Terminologies" link="/getting-started/concepts-terminology/" %} diff --git a/source/help/index.markdown b/source/help/index.markdown index 1d543e03304..67511627956 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -91,4 +91,4 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). [twitter]: https://twitter.com/home_assistant [facebook]: https://www.facebook.com/homeassistantio [reddit]: https://reddit.com/r/homeassistant -[discord]: https://discord.gg/c5DvZ4e +[discord]: /join-chat diff --git a/source/images/assist/assist-assistants-page.png b/source/images/assist/assist-assistants-page.png new file mode 100644 index 00000000000..7847e17b48b Binary files /dev/null and b/source/images/assist/assist-assistants-page.png differ diff --git a/source/images/blog/2023-05/blueprints-language-selector.png b/source/images/blog/2023-05/blueprints-language-selector.png new file mode 100644 index 00000000000..6d38501a8c6 Binary files /dev/null and b/source/images/blog/2023-05/blueprints-language-selector.png differ diff --git a/source/images/blog/2023-05/breaking-change-webhook-triggers.png b/source/images/blog/2023-05/breaking-change-webhook-triggers.png new file mode 100644 index 00000000000..cf25b20f28d Binary files /dev/null and b/source/images/blog/2023-05/breaking-change-webhook-triggers.png differ diff --git a/source/images/blog/2023-05/entity-settings-voice-assistants.png b/source/images/blog/2023-05/entity-settings-voice-assistants.png new file mode 100644 index 00000000000..8aa6d40b2ea Binary files /dev/null and b/source/images/blog/2023-05/entity-settings-voice-assistants.png differ diff --git a/source/images/blog/2023-05/entity-settings.png b/source/images/blog/2023-05/entity-settings.png new file mode 100644 index 00000000000..8190d1a678d Binary files /dev/null and b/source/images/blog/2023-05/entity-settings.png differ diff --git a/source/images/blog/2023-05/home-assistant-yellow-led-controls.png b/source/images/blog/2023-05/home-assistant-yellow-led-controls.png new file mode 100644 index 00000000000..666cac4b92c Binary files /dev/null and b/source/images/blog/2023-05/home-assistant-yellow-led-controls.png differ diff --git a/source/images/blog/2023-05/social.png b/source/images/blog/2023-05/social.png new file mode 100644 index 00000000000..4057ede0e4a Binary files /dev/null and b/source/images/blog/2023-05/social.png differ diff --git a/source/images/blog/2023-05/voice-assistants-expose-entities-settings.png b/source/images/blog/2023-05/voice-assistants-expose-entities-settings.png new file mode 100644 index 00000000000..db4ffa378f8 Binary files /dev/null and b/source/images/blog/2023-05/voice-assistants-expose-entities-settings.png differ diff --git a/source/images/blog/2023-05/voice-assistants-expose-entities.png b/source/images/blog/2023-05/voice-assistants-expose-entities.png new file mode 100644 index 00000000000..c3afff6dedd Binary files /dev/null and b/source/images/blog/2023-05/voice-assistants-expose-entities.png differ diff --git a/source/images/blog/2023-05/voice-assistants.png b/source/images/blog/2023-05/voice-assistants.png new file mode 100644 index 00000000000..f7f0c83f2f4 Binary files /dev/null and b/source/images/blog/2023-05/voice-assistants.png differ diff --git a/source/images/blog/2023-05/webhook-trigger-settings.png b/source/images/blog/2023-05/webhook-trigger-settings.png new file mode 100644 index 00000000000..6da20bff235 Binary files /dev/null and b/source/images/blog/2023-05/webhook-trigger-settings.png differ diff --git a/source/images/getting-started/add-google-cast-integration.png b/source/images/getting-started/add-google-cast-integration.png new file mode 100644 index 00000000000..eb1dcff0808 Binary files /dev/null and b/source/images/getting-started/add-google-cast-integration.png differ diff --git a/source/images/getting-started/devices.png b/source/images/getting-started/devices.png deleted file mode 100644 index 4ba559107b8..00000000000 Binary files a/source/images/getting-started/devices.png and /dev/null differ diff --git a/source/images/getting-started/google-cast-discovered.png b/source/images/getting-started/google-cast-discovered.png new file mode 100644 index 00000000000..de1ec343640 Binary files /dev/null and b/source/images/getting-started/google-cast-discovered.png differ diff --git a/source/images/getting-started/google-cast-integration-added.png b/source/images/getting-started/google-cast-integration-added.png new file mode 100644 index 00000000000..e7600798e18 Binary files /dev/null and b/source/images/getting-started/google-cast-integration-added.png differ diff --git a/source/images/getting-started/google-cast-manual-details.png b/source/images/getting-started/google-cast-manual-details.png new file mode 100644 index 00000000000..2f2907ba3ac Binary files /dev/null and b/source/images/getting-started/google-cast-manual-details.png differ diff --git a/source/images/getting-started/location.png b/source/images/getting-started/location.png deleted file mode 100644 index 0d8f5996c32..00000000000 Binary files a/source/images/getting-started/location.png and /dev/null differ diff --git a/source/images/getting-started/onboarding_devices.png b/source/images/getting-started/onboarding_devices.png new file mode 100644 index 00000000000..b6d4737188b Binary files /dev/null and b/source/images/getting-started/onboarding_devices.png differ diff --git a/source/images/getting-started/onboarding_location.png b/source/images/getting-started/onboarding_location.png new file mode 100644 index 00000000000..ebd995e3b70 Binary files /dev/null and b/source/images/getting-started/onboarding_location.png differ diff --git a/source/images/getting-started/onboarding_preparing_01.png b/source/images/getting-started/onboarding_preparing_01.png new file mode 100644 index 00000000000..c7e50ce044e Binary files /dev/null and b/source/images/getting-started/onboarding_preparing_01.png differ diff --git a/source/images/getting-started/onboarding_preparing_show_logs.png b/source/images/getting-started/onboarding_preparing_show_logs.png new file mode 100644 index 00000000000..c78d0afb11b Binary files /dev/null and b/source/images/getting-started/onboarding_preparing_show_logs.png differ diff --git a/source/images/getting-started/onboarding_share_anonymized_info.png b/source/images/getting-started/onboarding_share_anonymized_info.png new file mode 100644 index 00000000000..e9e8a40f58f Binary files /dev/null and b/source/images/getting-started/onboarding_share_anonymized_info.png differ diff --git a/source/images/installation/rpi-ha.gif b/source/images/installation/rpi-ha.gif new file mode 100644 index 00000000000..895e1bf5778 Binary files /dev/null and b/source/images/installation/rpi-ha.gif differ diff --git a/source/images/installation/rpi_imager.png b/source/images/installation/rpi_imager.png index 5fd86c73b23..fadf98b066b 100644 Binary files a/source/images/installation/rpi_imager.png and b/source/images/installation/rpi_imager.png differ diff --git a/source/images/integrations/slack/bot-token-scopes.png b/source/images/integrations/slack/bot-token-scopes.png new file mode 100644 index 00000000000..b2a8db5351c Binary files /dev/null and b/source/images/integrations/slack/bot-token-scopes.png differ diff --git a/source/images/integrations/slack/oauth-tokens-for-workspace.png b/source/images/integrations/slack/oauth-tokens-for-workspace.png new file mode 100644 index 00000000000..ad42b6f3234 Binary files /dev/null and b/source/images/integrations/slack/oauth-tokens-for-workspace.png differ diff --git a/source/images/integrations/slack/slack-integration-setup.png b/source/images/integrations/slack/slack-integration-setup.png new file mode 100644 index 00000000000..ec4bd0a4e45 Binary files /dev/null and b/source/images/integrations/slack/slack-integration-setup.png differ diff --git a/source/images/integrations/slack/slack-message.png b/source/images/integrations/slack/slack-message.png new file mode 100644 index 00000000000..50f3fea2e60 Binary files /dev/null and b/source/images/integrations/slack/slack-message.png differ diff --git a/source/images/screenshots/component_history_24h.png b/source/images/screenshots/component_history_24h.png deleted file mode 100644 index a80a76c17e8..00000000000 Binary files a/source/images/screenshots/component_history_24h.png and /dev/null differ diff --git a/source/images/screenshots/discord-bot-permissions.png b/source/images/screenshots/discord-bot-permissions.png new file mode 100644 index 00000000000..6676ff52d18 Binary files /dev/null and b/source/images/screenshots/discord-bot-permissions.png differ diff --git a/source/installation/raspberrypi.markdown b/source/installation/raspberrypi.markdown index 7453c01c4e4..96d40a31821 100644 --- a/source/installation/raspberrypi.markdown +++ b/source/installation/raspberrypi.markdown @@ -22,7 +22,7 @@ We will need a few things to get started with installing Home Assistant. Links b - [Raspberry Pi 4](https://amzn.to/2S0Gcl1) (Raspberry Pi 3 is ok too, if you have one laying around). Raspberry Pi are currently hard to come by, use [RPilocator](https://rpilocator.com/?cat=PI4) to find official distributors with stock. - [Power Supply for Raspberry Pi 4](https://amzn.to/2ReZ2Vq) or [Power Supply for Raspberry Pi 3](https://amzn.to/2R8yG7h) -- [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended. +- [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended. - SD Card reader. This is already part of most laptops, but you can purchase a [standalone USB adapter](https://amzn.to/2WWxntY) if you don't have one. The brand doesn't matter, just pick the cheapest. - [Ethernet cable](https://amzn.com/dp/B00N2VISLW). Required for installation. After installation, Home Assistant can work with Wi-Fi, but an Ethernet connection is more reliable and highly recommended. @@ -34,15 +34,15 @@ If Raspberry Pi Imager is not supported by your platform, you can use [Balena Et ### Write the image to your SD card -1. Install the Raspberry Pi Imager on your computer as described under [https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/). +1. Download and install the Raspberry Pi Imager on your computer as described under [https://www.raspberrypi.com/software/](https://www.raspberrypi.com/software/). ![Install Raspberry Pi Imager](/images/installation/rpi_imager.png) 1. Open the Raspberry Pi Imager. ![Open Raspberry Pi Imager](/images/installation/rpi-imager-start.png) 1. Choose the operating system: - ![Choose the operating system](/images/installation/rpi-select-os.png) 1. Select **Choose OS**. - 1. Select **Home assistants and home automation**. - 1. Choose the Home Assistant OS that matches your hardware (RPi 3 or RPi 4). + 1. Select **Other specific-purpose OS** > **Home assistants and home automation** > **Home Assistant**. + 1. Choose the Home Assistant OS that matches your hardware (RPi 3 or RPi 4). + ![Choose the operating system](/images/installation/rpi-ha.gif) 1. Choose the storage: 1. Insert the SD card into the computer. Note: the contents of the card will be overwritten. 1. Select your SD card. diff --git a/source/projects/thirteen-usd-voice-remote.markdown b/source/projects/thirteen-usd-voice-remote.markdown index 92380329a64..51b1ce37198 100644 --- a/source/projects/thirteen-usd-voice-remote.markdown +++ b/source/projects/thirteen-usd-voice-remote.markdown @@ -29,6 +29,7 @@ Before you can use this device with Home Assistant, you need to install a bit of + * **For advanced users**: The configuration file is available on [GitHub](https://github.com/esphome/media-players/blob/main/m5stack-atom-echo.yaml). 1. Connect the ATOM Echo to your computer. * In the popup window, view the available ports. @@ -45,19 +46,19 @@ Before you can use this device with Home Assistant, you need to install a bit of * When prompted, select your network from the list and enter the credentials to your 2.4 GHz Wi-Fi network. * Select **Connect**. * The ATOM Echo now joined your network. Select **Add to Home Assistant**. -4. This opens the **My** link to Home Assistant. +1. This opens the **My** link to Home Assistant. * If you have not used My Home Assistant before, you will need to configure it. If your Home Assistant URL is not accessible on `http://homeassistant.local:8123`, replace it with the URL to your Home Assistant instance. * Open the link. ![Open My link](/images/assist/esp32-atom-flash-06.png) -5. Select **OK**. +1. Select **OK**. ![Set up ESPHome](/images/assist/esp32-atom-flash-07.png) -6. To add the newly discovered device, select the ATOM Echo from the list. +1. To add the newly discovered device, select the ATOM Echo from the list. * Add your ATOM Echo to a room and select **Finish**. -7. You should now see a new **M5Stack Atom Echo** integration. +1. You should now see a new **M5Stack Atom Echo** integration. ![ATOM Echo discovered](/images/assist/m5stack-atom-echo-discovered-03.png) * Your ATOM Echo is connected to Home Assistant over Wi-Fi. You can now move it to any place in your home with a USB power supply. -8. Congratulations! You can now voice control Home Assistant using a button with build-in microphone. Now give some commands. +1. Congratulations! You can now voice control Home Assistant using a button with build-in microphone. Now give some commands. ## Controlling Home Assistant over the ATOM Echo diff --git a/source/skyconnect/index.html b/source/skyconnect/index.html index e36da2cdb5d..ff003239a03 100644 --- a/source/skyconnect/index.html +++ b/source/skyconnect/index.html @@ -327,6 +327,24 @@ frontpage_image: /images/skyconnect/skyconnect-cover.png + +
    +
    +
    🇩🇪
    +
    mediarath
    +
    Located in Germany
    +
    + + + +
    +
    + + +
    +
    +
    🇸🇰
    +
    SmarterHOME
    +
    Located in Slovakia
    +
    + + + +
    +
    + +
    +

    Buying a Raspberry Pi Compute Module 4 (CM4)

    +

    If you bought the Home Assistant Yellow Kit, you need to bring your own Raspberry Pi Compute Module 4. +

    +

    A chip shortage still impacts the availability of the CM4. Our recommendation is to use rpilocator. This website tracks the stock of official Raspberry Pi distributors. Follow them on Twitter and enable push notifications. You will be notified as soon as the bot tweets that products are in stock. +

    +

    + We recommend purchasing a Raspberry Pi Compute Module 4 with the following characteristics: +

      +
    • Min. 2 GB of RAM.
    • +
    • Min. 16 GB of eMMC flash space.
    • +
    • If you opt for the CM4 Lite: as it does not have an eMMC module, you must use an NVMe SSD hard drive. Some users reported that following SSDs are not working on the Home Assistant Yellow.
    • +
    +

    +
    +
    Features & specifications
      @@ -350,7 +366,7 @@ frontpage_image: /images/frontpage/yellow-frontpage.jpg