diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1d47511c497..1dccbda21e8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v3.5.3 - name: Setting up Node.js - uses: actions/setup-node@v3.6.0 + uses: actions/setup-node@v3.7.0 with: node-version: 16.x cache: "npm" @@ -27,7 +27,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v3.5.3 - name: Setting up Node.js - uses: actions/setup-node@v3.6.0 + uses: actions/setup-node@v3.7.0 with: node-version: 16.x cache: "npm" diff --git a/.remarkignore b/.remarkignore index f7da595b9f0..14d208cf2c2 100644 --- a/.remarkignore +++ b/.remarkignore @@ -2,4 +2,12 @@ _source/developers/credits.markdown # Third party -sass/inuitcss/* \ No newline at end of file +sass/inuitcss/* +LICENSE.md + +# Changelogs are made out of commit messages +# We don't want to correct them +source/changelogs + +# Lots of older changelogs we don't want to change/update +source/_posts diff --git a/.remarkrc.js b/.remarkrc.js index 679b1587cca..8ad6e05ac6a 100644 --- a/.remarkrc.js +++ b/.remarkrc.js @@ -1,18 +1,38 @@ var remarkrc = { - settings: { - bullet: '-', - commonmark: true, - emphasis: '_', - fence: '`', - incrementListMarker: true, - listItemIndent: 1, - strong: '*' - }, - plugins: [ - ["frontmatter"], - ["lint-fenced-code-flag"], - ["lint-no-shell-dollars"] - ] + settings: { + bullet: "-", + commonmark: true, + emphasis: "_", + fence: "`", + incrementListMarker: true, + listItemIndent: 1, + strong: "*", + }, + plugins: [ + ["frontmatter"], + ["lint-fenced-code-flag"], + ["lint-no-shell-dollars"], + ["remark-lint-heading-increment"], + ["remark-lint-heading-style", "atx"], + ["remark-lint-unordered-list-marker-style", "-"], + ["remark-lint-ordered-list-marker-style", "."], + ["remark-lint-ordered-list-marker-value"], + [ + "remark-lint-prohibited-strings", + [ + { no: "[Hh]ome [Aa]ss?s?istant", yes: "Home Assistant" }, + { no: "[Ww]eb[Ss]ocket", yes: "WebSocket" }, + { no: "Github", yes: "GitHub" }, + { + no: "https://www.home-assistant.io/", + yes: "/", + ignoreNextTo: ['"', '"'], + }, + { no: "Speech-[Tt]o-Text", yes: "Speech-to-text" }, + { no: "Text-[Tt]o-Speech", yes: "Text-to-speech" }, + ], + ], + ], }; -module.exports = remarkrc; \ No newline at end of file +module.exports = remarkrc; diff --git a/CODEOWNERS b/CODEOWNERS index bfbff96a982..b7fcf5dd75b 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -159,6 +159,7 @@ source/_integrations/digital_loggers.markdown @esev source/_integrations/digital_ocean.markdown @fabaff source/_integrations/discogs.markdown @thibmaek source/_integrations/discord.markdown @tkdrob +source/_integrations/discovergy.markdown @jpbede source/_integrations/discovery.markdown @home-assistant/core source/_integrations/dlink.markdown @tkdrob source/_integrations/dlna_dmr.markdown @StevenLooman @chishm @@ -167,6 +168,7 @@ source/_integrations/dnsip.markdown @gjohansson-ST source/_integrations/doorbird.markdown @oblogic7 @bdraco @flacjacket source/_integrations/dooya.markdown @starkillerOG source/_integrations/dormakaba_dkey.markdown @emontnemery +source/_integrations/dremel_3d_printer.markdown @tkdrob source/_integrations/dsmr.markdown @Robbie1221 @frenck source/_integrations/dsmr_reader.markdown @depl0y @glodenox source/_integrations/dunehd.markdown @bieniu @@ -205,7 +207,7 @@ source/_integrations/epsonworkforce.markdown @ThaStealth source/_integrations/eq3btsmart.markdown @rytilahti source/_integrations/escea.markdown @lazdavila source/_integrations/esera_onewire.markdown @garbled1 @epenet -source/_integrations/esphome.markdown @OttoWinter @jesserockz +source/_integrations/esphome.markdown @OttoWinter @jesserockz @bdraco source/_integrations/eufylife_ble.markdown @bdr99 source/_integrations/evil_genius_labs.markdown @balloob source/_integrations/evohome.markdown @zxdavb @@ -258,7 +260,7 @@ source/_integrations/gios.markdown @bieniu source/_integrations/github.markdown @timmo001 @ludeeus source/_integrations/glances.markdown @engrbm87 source/_integrations/goalzero.markdown @tkdrob -source/_integrations/gogogate2.markdown @vangorra @bdraco +source/_integrations/gogogate2.markdown @vangorra source/_integrations/goodwe.markdown @mletenay @starkillerOG source/_integrations/google.markdown @allenporter source/_integrations/google_assistant.markdown @home-assistant/cloud @@ -319,6 +321,7 @@ source/_integrations/iaqualink.markdown @flz source/_integrations/ibeacon.markdown @bdraco source/_integrations/icloud.markdown @Quentame @nzapponi source/_integrations/ign_sismologia.markdown @exxamalte +source/_integrations/image.markdown @home-assistant/core source/_integrations/image_processing.markdown @home-assistant/core source/_integrations/image_upload.markdown @home-assistant/core source/_integrations/imap.markdown @jbouwh @@ -395,6 +398,7 @@ source/_integrations/logbook.markdown @home-assistant/core source/_integrations/logger.markdown @home-assistant/core source/_integrations/logi_circle.markdown @evanjd source/_integrations/lookin.markdown @ANMalko @bdraco +source/_integrations/loqed.markdown @mikewoudenberg source/_integrations/luci.markdown @mzdrale source/_integrations/luftdaten.markdown @fabaff @frenck source/_integrations/lupusec.markdown @majuss @@ -443,7 +447,7 @@ source/_integrations/msteams.markdown @peroyvind source/_integrations/mullvad.markdown @meichthys source/_integrations/mutesync.markdown @currentoor source/_integrations/my.markdown @home-assistant/core -source/_integrations/myq.markdown @bdraco @ehendrix23 +source/_integrations/myq.markdown @ehendrix23 source/_integrations/mysensors.markdown @MartinHjelmare @functionpointer source/_integrations/mystrom.markdown @fabaff source/_integrations/nam.markdown @bieniu @@ -545,6 +549,7 @@ source/_integrations/pvpc_hourly_pricing.markdown @azogue source/_integrations/qbittorrent.markdown @geoffreylagaisse source/_integrations/qingping.markdown @bdraco @skgsergio source/_integrations/qld_bushfire.markdown @exxamalte +source/_integrations/qnap.markdown @disforw source/_integrations/qnap_qsw.markdown @Noltari source/_integrations/quadrafire.markdown @jeeftor source/_integrations/quantum_gateway.markdown @cisasteelersfan @@ -567,6 +572,7 @@ source/_integrations/recorder.markdown @home-assistant/core source/_integrations/rejseplanen.markdown @DarkFox source/_integrations/remote.markdown @home-assistant/core source/_integrations/renault.markdown @epenet +source/_integrations/renson.markdown @jimmyd-be source/_integrations/reolink.markdown @starkillerOG source/_integrations/repairs.markdown @home-assistant/core source/_integrations/repetier.markdown @MTrab @ShadowBr0ther @@ -605,7 +611,6 @@ source/_integrations/search.markdown @home-assistant/core source/_integrations/season.markdown @frenck source/_integrations/select.markdown @home-assistant/core source/_integrations/sense.markdown @kbickar -source/_integrations/senseme.markdown @mikelawrence @bdraco source/_integrations/sensibo.markdown @andrey-git @gjohansson-ST source/_integrations/sensirion_ble.markdown @akx source/_integrations/sensor.markdown @home-assistant/core @@ -736,6 +741,7 @@ source/_integrations/tts.markdown @home-assistant/core @pvizeli source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck source/_integrations/twentemilieu.markdown @frenck source/_integrations/twinkly.markdown @dr1rrb @Robbie1221 +source/_integrations/twitch.markdown @joostlek source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/ukraine_alarm.markdown @PaulAnnekov source/_integrations/unifi.markdown @Kane610 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f9b1ea79314..d09bbfd8cd5 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities diff --git a/Gemfile b/Gemfile index 77ab45ec269..708a0eb762a 100644 --- a/Gemfile +++ b/Gemfile @@ -20,7 +20,7 @@ group :jekyll_plugins do end gem 'sinatra', '3.0.6' -gem 'nokogiri', '1.15.2' +gem 'nokogiri', '1.15.3' # 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 a5328171897..4fb75cc060f 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.23.3) + google-protobuf (3.23.4) http_parser.rb (0.8.0) i18n (1.14.1) concurrent-ruby (~> 1.0) @@ -68,16 +68,16 @@ GEM rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.4.0) - mini_portile2 (2.8.2) + mini_portile2 (2.8.4) multi_json (1.15.0) mustermann (3.0.0) ruby2_keywords (~> 0.0.1) - nokogiri (1.15.2) + nokogiri (1.15.3) mini_portile2 (~> 2.8.2) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) - public_suffix (5.0.1) + public_suffix (5.0.3) racc (1.7.1) rack (2.2.7) rack-protection (3.0.6) @@ -129,7 +129,7 @@ DEPENDENCIES jekyll-paginate (= 1.1.0) jekyll-sitemap (= 1.4.0) jekyll-toc (= 0.18.0) - nokogiri (= 1.15.2) + nokogiri (= 1.15.3) rake (= 13.0.6) sass-globbing (= 1.1.5) sassc (= 2.1.0) diff --git a/_config.yml b/_config.yml index dfd080a6d2b..c6c3890439a 100644 --- a/_config.yml +++ b/_config.yml @@ -109,9 +109,9 @@ social: # Home Assistant release details current_major_version: 2023 -current_minor_version: 6 +current_minor_version: 7 current_patch_version: 3 -date_released: 2023-06-23 +date_released: 2023-07-21 # 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 146c52833af..ce420040b1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,14 +12,29 @@ "remark-frontmatter": "^4.0.1", "remark-lint": "^9.1.2", "remark-lint-fenced-code-flag": "^3.1.2", + "remark-lint-heading-increment": "^3.1.2", + "remark-lint-heading-style": "^3.1.2", "remark-lint-no-shell-dollars": "^3.1.2", + "remark-lint-ordered-list-marker-style": "^3.1.2", + "remark-lint-ordered-list-marker-value": "^3.1.2", + "remark-lint-prohibited-strings": "^3.1.0", + "remark-lint-unordered-list-marker-style": "^3.1.2", "remark-stringify": "^10.0.3", - "textlint": "^13.3.2", + "textlint": "^13.3.3", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.5" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@azu/format-text": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", @@ -241,59 +256,59 @@ } }, "node_modules/@textlint/ast-node-types": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.2.tgz", - "integrity": "sha512-d9WXBahsAgRDWcfUE7pQs8E9SNbF0nxrEaYE2g01tLgQ/dYdlOLngNPXi0Lk+C+yU58kvmFSdO6nicIAe3WIiw==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.3.tgz", + "integrity": "sha512-KCpJppfX3Km69twa6SmVEJ8mkyAZSrxw3XaaLQSlpc7PWnLUJSCHGPVECI1nSUDhiTd1r6zlRvWuyIAZJiov+A==", "dev": true }, "node_modules/@textlint/ast-tester": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-13.3.2.tgz", - "integrity": "sha512-qbpmJS7mEZcTrcKuppPQ8o2VJFUvHJ4+/l5iNEc2JRtMqpoNP6JAIKwIuDcEsMxedClExVTPmNctUlteglpD2A==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-13.3.3.tgz", + "integrity": "sha512-vIIEJ0vDJb3Pr4kseOH9yzUCxx1EbX6PQDg/DgQj9sMAnwVG2sZvy2Uiga4+hj8SphdzaKia9Z+156UZzs+mzA==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2", + "@textlint/ast-node-types": "^13.3.3", "debug": "^4.3.4" } }, "node_modules/@textlint/ast-traverse": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-13.3.2.tgz", - "integrity": "sha512-c+SI7SAWH1S+q5iok0Q/jrprG1BctstTF4A8msi/1bioKtn/PrD01w/MDsPkDT+K15RrWYUSjG8FLuGPnEN78Q==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-13.3.3.tgz", + "integrity": "sha512-tZ25emmWf3mJ4+vM8CO6D7F8l00WXD6MJgnnlY9BHI/HbOlngBfmKhTVizQEwrWfYF80sQO5R9a+N4UEk67Wcg==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2" + "@textlint/ast-node-types": "^13.3.3" } }, "node_modules/@textlint/config-loader": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-13.3.2.tgz", - "integrity": "sha512-P8DESsBh3JBRMujbyV3WjVlhbDVaGBIRtEL0AveNSSe6+X0ef7OtesxGJhD8p/DIyA9X+69bqpg7mcV7DTuO9w==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-13.3.3.tgz", + "integrity": "sha512-DQA/7dYu3VDHP9Idd0Sn7HzwiFuNdKUXfA79pUGmJzNQUYaW0qADzyQCwfh7LlvhCcBmnLgX+8wb13o6OaHX5g==", "dev": true, "dependencies": { - "@textlint/kernel": "^13.3.2", - "@textlint/module-interop": "^13.3.2", - "@textlint/types": "^13.3.2", - "@textlint/utils": "^13.3.2", + "@textlint/kernel": "^13.3.3", + "@textlint/module-interop": "^13.3.3", + "@textlint/types": "^13.3.3", + "@textlint/utils": "^13.3.3", "debug": "^4.3.4", - "rc-config-loader": "^4.1.2", + "rc-config-loader": "^4.1.3", "try-resolve": "^1.0.1" } }, "node_modules/@textlint/feature-flag": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-13.3.2.tgz", - "integrity": "sha512-ewW8dlhcFf19QuqlycQHqySQB/VhKQ7opYjvsJvUr2GP7/nY1Wq4vMWEhCtCOVg7Khumw1JtoS7+DaQGiFzuaQ==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-13.3.3.tgz", + "integrity": "sha512-ltdwKQTvs9f/TgQ3asBx2EXmsSSsvxa7ySnTXSTZBkbVxqmrGY4zehDRiDCmuFZGVGCvCddY1QzCXy16ybk9Fg==", "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-13.3.2.tgz", - "integrity": "sha512-Szvb6OGx/+PkiqDUMVyXD5WDaraoU64VNWZhUm96wEjGxt7seMecRgYiKc7LkQllcStJ2lP8Dgju1phGaD5hbQ==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-13.3.3.tgz", + "integrity": "sha512-iCMFS8GrmUetXMIT4/jFxoL5v1QN5ODj1190Lb6D+EdTxsrAWssHOb6m7MOEhfOGYEArAkb3PjSxu7DPLrb50g==", "dev": true, "dependencies": { - "@textlint/module-interop": "^13.3.2", - "@textlint/types": "^13.3.2", + "@textlint/module-interop": "^13.3.3", + "@textlint/types": "^13.3.3", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -305,39 +320,38 @@ } }, "node_modules/@textlint/kernel": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-13.3.2.tgz", - "integrity": "sha512-KZX87i4xVqLXdb8Cl4y0Y56jIHQIwg+YPrLz/kBz2TQDl8vYeGLII4QHwT1l0BjZ2JHawm1pmyQZml3hCnieOQ==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-13.3.3.tgz", + "integrity": "sha512-HewzuuX2c2nlR+e8dREWrAYrOiyWb78eeObuW95miMjX/F6TjWmha4qrnrMCWbYbKDwC4en8dNGS4mm0vSdi4A==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2", - "@textlint/ast-tester": "^13.3.2", - "@textlint/ast-traverse": "^13.3.2", - "@textlint/feature-flag": "^13.3.2", - "@textlint/source-code-fixer": "^13.3.2", - "@textlint/types": "^13.3.2", - "@textlint/utils": "^13.3.2", + "@textlint/ast-node-types": "^13.3.3", + "@textlint/ast-tester": "^13.3.3", + "@textlint/ast-traverse": "^13.3.3", + "@textlint/feature-flag": "^13.3.3", + "@textlint/source-code-fixer": "^13.3.3", + "@textlint/types": "^13.3.3", + "@textlint/utils": "^13.3.3", "debug": "^4.3.4", "fast-equals": "^4.0.3", "structured-source": "^4.0.0" } }, "node_modules/@textlint/linter-formatter": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-13.3.2.tgz", - "integrity": "sha512-QpHI7bzDMaetmrnMhA2+z1ExneFCdJVZHUFyzdfSv5JC4VNXmW9UDb7F7vsP+M+1jzIvF75mwvRLvmA82MJvBA==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-13.3.3.tgz", + "integrity": "sha512-z8xsk1bo9r8v6Ph76WLTBrfj+0+eyEfRlbTGBs+ie6YAGItBqkLYmDrD26DDfVjIZcXWdCXVX1Et6MOWomb//g==", "dev": true, "dependencies": { "@azu/format-text": "^1.0.2", "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "^13.3.2", - "@textlint/types": "^13.3.2", + "@textlint/module-interop": "^13.3.3", + "@textlint/types": "^13.3.3", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", "js-yaml": "^3.14.1", "lodash": "^4.17.21", - "optionator": "^0.9.1", "pluralize": "^2.0.0", "string-width": "^4.2.3", "strip-ansi": "^6.0.1", @@ -347,12 +361,12 @@ } }, "node_modules/@textlint/markdown-to-ast": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-13.3.2.tgz", - "integrity": "sha512-tnXk7YO8rIPbnd6rDi6LwhxoExdg6ge8v5ggiun76qLfX2uKR0ExhJEL2K+zziATi1AqalBva3WD3exU1sfjeg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-13.3.3.tgz", + "integrity": "sha512-jeqWyChTtJHWxEnH46V6qjr+OCTh6evm45aDqMzdg+b8ocXY+NhudiCMeHcVGoz042UEwc6w4reLn8+Is+SZ+A==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2", + "@textlint/ast-node-types": "^13.3.3", "debug": "^4.3.4", "mdast-util-gfm-autolink-literal": "^0.1.3", "remark-footnotes": "^3.0.0", @@ -590,61 +604,61 @@ } }, "node_modules/@textlint/module-interop": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-13.3.2.tgz", - "integrity": "sha512-JPHAZlWXgedDCoaTT21dln8u+sPVJUGPw283Oxz1k24x2MWaFZO7EReu/K4QepdxNKOpdllp2DqvnWgnvZoPOg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-13.3.3.tgz", + "integrity": "sha512-CwfVpRGAxbkhGY9vLLU06Q/dy/RMNnyzbmt6IS2WIyxqxvGaF7QZtFYpKEEm63aemVyUvzQ7WM3yVOoUg6P92w==", "dev": true }, "node_modules/@textlint/source-code-fixer": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-13.3.2.tgz", - "integrity": "sha512-7b+7zDUnEILcaYvJDLz+6Uu8YHn85xm6Lof/0Azn1/5zcDsz5qDjgJ21u+kuS+1kQBSpWV8dmCT3sTZoS0uExg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-13.3.3.tgz", + "integrity": "sha512-h4jxWSetmcVuGwl71ai72784aneBQ0MkE5Mc3avl8PKIOIOyz0A1D7i9VQENWWIiqU8zyzmHwKGNSGyqWaqE2Q==", "dev": true, "dependencies": { - "@textlint/types": "^13.3.2", + "@textlint/types": "^13.3.3", "debug": "^4.3.4" } }, "node_modules/@textlint/text-to-ast": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-13.3.2.tgz", - "integrity": "sha512-6E2sFTukn5XygCWE1W6jU1rlQKO268tS5Qe8oHBdxp0tohFXMRzVM5r1MKgjjmuUpHxjwIcq75x+dWAYwX5wLQ==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-13.3.3.tgz", + "integrity": "sha512-iQdiHAiUfB9XruuYWCb4fY/gD/Q5/MkH1xwUTpS8UJowNgwpTldagUJX1JbZQ2UHux+yRe9JFA+JKm3rrxgQFw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2" + "@textlint/ast-node-types": "^13.3.3" } }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-13.3.2.tgz", - "integrity": "sha512-iI/UuzUz4k5qnrPnm7U7d8oC/Hwj41MtllusBSArG3mimn5gHsS+Etzm5Zs3oxXMINdzvWNNEFJ/xbs1bZvEJg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-13.3.3.tgz", + "integrity": "sha512-EhBZ/Q6ZXMVRPDeQbFdFbtc0wE7SC0DWy9lkjKXfcbLKW0ZPTvtjH3JqJtCPBZAYcexB8wKOiHImfwVfQJhJhg==", "dev": true, "dependencies": { - "@textlint/markdown-to-ast": "^13.3.2" + "@textlint/markdown-to-ast": "^13.3.3" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-13.3.2.tgz", - "integrity": "sha512-pJrb4OYZ3TB6eKxvxPYARwoHb5vaXoKakCrmsyXtwbRjylJWCRVRh/u8UTRTyFRotASawEY/VfxKXwYepHP91Q==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-13.3.3.tgz", + "integrity": "sha512-MN/JMGLanqj8CJGuit8DDiyrO0yf1vxFMLWTDeMIXwSoe8VToHCt2j20zg8XNHGNrUbKj+wuhzhrkrKEI7uWxg==", "dev": true, "dependencies": { - "@textlint/text-to-ast": "^13.3.2" + "@textlint/text-to-ast": "^13.3.3" } }, "node_modules/@textlint/types": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-13.3.2.tgz", - "integrity": "sha512-N1Xb4kltBwBwAF3wAwKi3sJA0hWVjraWqIpjuHOplul/O8Qu78domGedktQJ4n2aVN1ucBuFjpZNsQfkfxJI+Q==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-13.3.3.tgz", + "integrity": "sha512-i2B7uRh+Iv8ZBKPJ3n4I6uSrTUQq5LdEkhFYNUwnDYxmhudz1o79xm906kri2eM8lxThX/UYYgVuJWpEwS0b+g==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2" + "@textlint/ast-node-types": "^13.3.3" } }, "node_modules/@textlint/utils": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-13.3.2.tgz", - "integrity": "sha512-eEi4j5vyQ0WRkfkBS+Sa2q1YQVo0B6cFXde2+TVpoDp7f8yPAb4wMv9jgQ23N+DpiafJVOhRQLyJdrITFwnmFw==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-13.3.3.tgz", + "integrity": "sha512-roN+K3a36RxGc0tV+8HXVXpoPomEr3LCjNI8+hFmVjOu3RsUdLTyraNBqqaghaE0KgwCPODF0seuG1hteNI8LQ==", "dev": true }, "node_modules/@types/concat-stream": { @@ -2148,6 +2162,19 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/mdast-util-heading-style": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-heading-style/-/mdast-util-heading-style-2.0.1.tgz", + "integrity": "sha512-0L5rthU4xKDVbw+UQ7D8Y8xOEsX4JXZvemWoEAsL+WAaeSH+TvVVwFnTb3G/OrjyP4VYQULoNWU+PdZfkmNu4A==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-mdx-expression": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", @@ -3002,17 +3029,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -3236,9 +3263,9 @@ } }, "node_modules/rc-config-loader": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", - "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -3513,6 +3540,41 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-lint-heading-increment": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-heading-increment/-/remark-lint-heading-increment-3.1.2.tgz", + "integrity": "sha512-+fMfZmFh6ie6MmbRCVW77Rha15zDmnHWKiA0Do08OTrfngPTv8ZKXYLmxhUpL+xV9ts9q+9Kz5rv0L4QD4sEwQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-heading-style": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-heading-style/-/remark-lint-heading-style-3.1.2.tgz", + "integrity": "sha512-0RkcRPV/H2bPFgeInzBkK1cWUwtFTm83I+Db/Z5tDY02GzKOosHLvxtJyj/1391/opAH1LYbHtHWffir99IUgw==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-heading-style": "^2.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-lint-no-shell-dollars": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.1.2.tgz", @@ -3530,6 +3592,85 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-lint-ordered-list-marker-style": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-3.1.2.tgz", + "integrity": "sha512-62iVE/YQsA0Azaqt8yAJWPplWLS47kDLjXeC2PlRIAzCqbNt9qH3HId8vZ15QTSrp8rHmJwrCMdcqV6AZUi7gQ==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-ordered-list-marker-value": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-3.1.2.tgz", + "integrity": "sha512-kG08nhsFk8rhoXK5EeDN/wN28CxefraDud/MaZnji8LEyxF3HAkzFuETr9laOn8Ey+n8h/C0mpqAwUf4thyJ5g==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-lint-prohibited-strings": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-lint-prohibited-strings/-/remark-lint-prohibited-strings-3.1.0.tgz", + "integrity": "sha512-zwfDDdYl7ye0gEHcwhdkv1ZGXj1ibw4gnLLZkkvySnDdTz2tshY3fOJLY5NikbVseaIRVGOr5qa+8J9WNQT/fA==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-position": "^4.0.1", + "unist-util-visit": "^4.0.0", + "vfile-location": "^4.0.1" + } + }, + "node_modules/remark-lint-prohibited-strings/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/remark-lint-unordered-list-marker-style": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-3.1.2.tgz", + "integrity": "sha512-JFiyB4ZprJGGndCaFB8FssXd48m4Kh+CUqzNgu3lBLEiW8dEAGRlD9M2AzyyA+Q29WJP/FntDCbP22DeON91UA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unified": "^10.0.0", + "unified-lint-rule": "^2.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-message-control": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.1.1.tgz", @@ -3835,23 +3976,23 @@ "dev": true }, "node_modules/textlint": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-13.3.2.tgz", - "integrity": "sha512-i14ug8jyC1iNko16dpzp/blSLbvXTONiZbvkNT30N3VzDPCtNn2yV4qSZhiRWFi1hHfgOdG3n/u0DZvllZCHXQ==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-13.3.3.tgz", + "integrity": "sha512-1LhJTNBFVNYtl4C6IJXt1XwAJANvquyDuP4NrhcG+1DwT3S7kiUR9vLo5yo046X83VT7ownzS97Q/yC6A7bZXg==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^13.3.2", - "@textlint/ast-traverse": "^13.3.2", - "@textlint/config-loader": "^13.3.2", - "@textlint/feature-flag": "^13.3.2", - "@textlint/fixer-formatter": "^13.3.2", - "@textlint/kernel": "^13.3.2", - "@textlint/linter-formatter": "^13.3.2", - "@textlint/module-interop": "^13.3.2", - "@textlint/textlint-plugin-markdown": "^13.3.2", - "@textlint/textlint-plugin-text": "^13.3.2", - "@textlint/types": "^13.3.2", - "@textlint/utils": "^13.3.2", + "@textlint/ast-node-types": "^13.3.3", + "@textlint/ast-traverse": "^13.3.3", + "@textlint/config-loader": "^13.3.3", + "@textlint/feature-flag": "^13.3.3", + "@textlint/fixer-formatter": "^13.3.3", + "@textlint/kernel": "^13.3.3", + "@textlint/linter-formatter": "^13.3.3", + "@textlint/module-interop": "^13.3.3", + "@textlint/textlint-plugin-markdown": "^13.3.3", + "@textlint/textlint-plugin-text": "^13.3.3", + "@textlint/types": "^13.3.3", + "@textlint/utils": "^13.3.3", "debug": "^4.3.4", "file-entry-cache": "^5.0.1", "get-stdin": "^5.0.1", @@ -3861,7 +4002,7 @@ "mkdirp": "^0.5.6", "optionator": "^0.9.1", "path-to-glob-pattern": "^1.0.2", - "rc-config-loader": "^4.1.2", + "rc-config-loader": "^4.1.3", "read-pkg": "^1.1.0", "read-pkg-up": "^3.0.0", "structured-source": "^4.0.0", @@ -4684,15 +4825,6 @@ "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==", "dev": true }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/package.json b/package.json index 5cea5020328..11cc5df25d3 100644 --- a/package.json +++ b/package.json @@ -7,9 +7,15 @@ "remark-frontmatter": "^4.0.1", "remark-lint": "^9.1.2", "remark-lint-fenced-code-flag": "^3.1.2", + "remark-lint-heading-increment": "^3.1.2", + "remark-lint-heading-style": "^3.1.2", "remark-lint-no-shell-dollars": "^3.1.2", + "remark-lint-ordered-list-marker-style": "^3.1.2", + "remark-lint-ordered-list-marker-value": "^3.1.2", + "remark-lint-prohibited-strings": "^3.1.0", + "remark-lint-unordered-list-marker-style": "^3.1.2", "remark-stringify": "^10.0.3", - "textlint": "^13.3.2", + "textlint": "^13.3.3", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.5" diff --git a/source/_dashboards/energy.markdown b/source/_dashboards/energy.markdown index e4384b91cca..64766ee06a0 100644 --- a/source/_dashboards/energy.markdown +++ b/source/_dashboards/energy.markdown @@ -18,7 +18,7 @@ At the moment there are no configuration options available for these cards, you This card will allow you to pick what data to show. Changing it in this card will influence the data in all other cards. -#### Example +### Example ```yaml type: energy-date-selection ``` @@ -33,7 +33,7 @@ type: energy-date-selection The energy usage graph card shows the amount of energy your house has consumed, and from what source this energy came. It will also show the amount of energy your have returned to the grid. -#### Example +### Example ```yaml type: energy-usage-graph ``` @@ -47,7 +47,7 @@ type: energy-usage-graph The solar production graph card shows the amount of energy your solar panels have produced per source, and if setup and available the forecast of the solar production. -#### Example +### Example ```yaml type: energy-solar-graph ``` @@ -61,7 +61,7 @@ type: energy-solar-graph The gas consumption graph card shows the amount of gas consumed per source. -#### Example +### Example ```yaml type: energy-gas-graph @@ -76,7 +76,7 @@ type: energy-gas-graph The water consumption graph card shows the amount of water consumed per source. -#### Example +### Example ```yaml type: energy-water-graph @@ -95,7 +95,7 @@ If setup, it will also tell you how many kWh of the energy you got from the grid If you set `link_dashboard` to `true`, the card will include a link to the energy dashboard. -#### Example +### Example ```yaml type: energy-distribution link_dashboard: true @@ -111,7 +111,7 @@ link_dashboard: true The energy sources table card shows all your energy sources, and the corresponding amount of energy. If setup, it will also show the costs and compensation per source and the total. -#### Example +### Example ```yaml type: energy-sources-table ``` @@ -125,7 +125,7 @@ type: energy-sources-table The grid neutrality gauge card represents your energy dependency. If the needle is in the purple, you returned more energy to the grid than you consumed from it. If it's in the blue, you consumed more energy from the grid than you returned. -#### Example +### Example ```yaml type: energy-grid-neutrality-gauge ``` @@ -137,9 +137,9 @@ type: energy-grid-neutrality-gauge Screenshot of the Solar consumed gauge card.

-The solar consumed gauge represents how much of the solar energy was not used by your home and was returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge. +The solar consumed gauge represents how much of the solar energy was used by your home and was not returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge. -#### Example +### Example ```yaml type: energy-solar-consumed-gauge ``` @@ -153,7 +153,7 @@ type: energy-solar-consumed-gauge The carbon consumed gauge card represents how much of the energy consumed by your home was generated using non-fossil fuels like solar, wind and nuclear. It includes the solar energy you generated your self. -#### Example +### Example ```yaml type: energy-carbon-consumed-gauge ``` @@ -167,7 +167,7 @@ type: energy-carbon-consumed-gauge The self-sufficiency gauge represents how self-sufficient your home is. If you rely on grid imports, this value decreases. You can increase this value by adding more solar capacity or battery storage. -#### Example +### Example ```yaml type: energy-self-sufficiency-gauge ``` @@ -181,7 +181,7 @@ type: energy-self-sufficiency-gauge The devices energy graph show the energy usage per device, it is sorted by usage. -#### Example +### Example ```yaml type: energy-devices-graph ``` diff --git a/source/_dashboards/sidebar.markdown b/source/_dashboards/sidebar.markdown index 0d795bc86d7..d5774b5cd4b 100644 --- a/source/_dashboards/sidebar.markdown +++ b/source/_dashboards/sidebar.markdown @@ -25,7 +25,7 @@ type: type: string {% endconfiguration %} -#### Example +### Example Alternatively, the position of the card can be configured using YAML with the `view_layout` option: diff --git a/source/_dashboards/tile.markdown b/source/_dashboards/tile.markdown index f05cc5c76db..a64f248800b 100644 --- a/source/_dashboards/tile.markdown +++ b/source/_dashboards/tile.markdown @@ -93,9 +93,9 @@ type: tile entity: vacuum.ground_floor features: - type: vacuum-commands - commands: - - start_pause - - return_home + commands: + - start_pause + - return_home ``` ## Available color tokens @@ -251,4 +251,4 @@ commands: required: true description: List of commands to show on the card. The list can contain `start_pause`, `stop`, `clean_spot`, `locate` and `return_home`. type: list -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 48f800c5dd8..6c26b3a0fef 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -374,7 +374,7 @@ State changes can be used as the source of triggers. The current state can be used in conditions. - link: /docs/scripts/configuration/state_object/ + link: /docs/configuration/state_object/ excerpt: > The state holds the information of interest of an entity, for example, if a light is on or off. Each entity has exactly one state and the state only holds one value at a time. However, entities can store attributes related to that state such as brightness, color, or a unit of measurement. diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index 468e7564038..78cedd3abf7 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -7,8 +7,8 @@ The Multi-factor Authentication (MFA) modules require you to solve a second chal A password can be compromised in a number of ways, for example, it can be guessed if it is a simple password. MFA provides a second level of defense by requiring: -* something you know, like your username and password, and -* something you have, like a one-time password sent to your phone. +- something you know, like your username and password, and +- something you have, like a one-time password sent to your phone. You can use MFA with any of the other authentication providers. If more than one MFA module is enabled, you can choose one when you log in. diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index 14903b0d2e0..d6ef3e71590 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -179,7 +179,7 @@ name = John Doe Leading and trailing whitespace, as well as lines starting with `#` are ignored. The following variables are supported. More may be added in the future. -* `name`: The real name of the user to be displayed in their profile. +- `name`: The real name of the user to be displayed in their profile. Stderr is not read at all and just passed through to that of the Home Assistant process, hence you can use it for status messages or suchlike. diff --git a/source/_docs/automation/condition.markdown b/source/_docs/automation/condition.markdown index 9aac92158aa..c993f3f705c 100644 --- a/source/_docs/automation/condition.markdown +++ b/source/_docs/automation/condition.markdown @@ -3,7 +3,7 @@ title: "Automation Conditions" description: "Automations can test conditions when invoked." --- -Conditions are an optional part of an automation rule and can be used to prevent an action from happening when triggered. When a condition does not return true, the automation will stop executing. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off. +Conditions are an optional part of an automation rule. They can be used to prevent the automation's actions from being run. After a trigger occurred, all conditions will be checked. If any of them do not return true, the automation will stop executing. Conditions look very similar to triggers, but they are very different — a trigger will look at events happening in the system, while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off. The available conditions for an automation are the same as for the script syntax so see that page for a [full list of available conditions](/docs/scripts/conditions/). diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index d1c7d235075..fa8cdc5709c 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -689,11 +689,11 @@ automation: The Entity ID of an [Input Datetime](/integrations/input_datetime/). -has_date | has_time | Description --|-|- -`true` | `true` | Will fire at specified date & time. -`true` | `false` | Will fire at midnight on specified date. -`false` | `true` | Will fire once a day at specified time. +| has_date | has_time | Description | +| -------- | -------- | ---------------------------------------- | +| `true` | `true` | Will fire at specified date & time. | +| `true` | `false` | Will fire at midnight on specified date. | +| `false` | `true` | Will fire once a day at specified time. | {% raw %} @@ -917,7 +917,7 @@ additional event data available for use by an automation. ## Sentence trigger -A sentence trigger fires when [Assist](/voice_control/) matches a sentence from a voice assistant using the default [conversation agent](/integrations/conversation/). +A sentence trigger fires when [Assist](/voice_control/) matches a sentence from a voice assistant using the default [conversation agent](/integrations/conversation/). Sentence triggers only work with Home Assistant Assist. External conversation agents such as OpenAI or Google Generative AI cannot be used to trigger automations. Sentences are allowed to use some basic [template syntax](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax/#sentence-templates-syntax) like optional and alternative words. For example, `[it's ]party time` will match both "party time" and "it's party time". @@ -941,7 +941,7 @@ Punctuation and casing are ignored, so "It's PARTY TIME!!!" will also match. ## Multiple triggers -It is possible to specify multiple triggers for the same rule. To do so just prefix the first line of each trigger with a dash (-) and indent the next lines accordingly. Whenever one of the triggers fires, [processing](#what-are-triggers) of your automation rule begins. +It is possible to specify multiple triggers for the same rule. To do so just prefix the first line of each trigger with a dash (-) and indent the next lines accordingly. Whenever one of the triggers fires, processing of your automation rule begins. ```yaml automation: @@ -956,7 +956,7 @@ automation: ## Multiple Entity IDs for the same Trigger -It is possible to specify multiple entities for the same trigger. To do so add multiple entities using a nested list. The trigger will fire and start, [processing](#what-are-triggers) your automation each time the trigger is true for any entity listed. +It is possible to specify multiple entities for the same trigger. To do so add multiple entities using a nested list. The trigger will fire and start, processing your automation each time the trigger is true for any entity listed. ```yaml automation: diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index 8d2301c7ffe..7ade83555c9 100644 --- a/source/_docs/automation/troubleshooting.markdown +++ b/source/_docs/automation/troubleshooting.markdown @@ -15,7 +15,7 @@ The debugging screen is split into four features, the first being the Step Detai Automations created in YAML must have an [`id`](/docs/automation/yaml/#migrating-your-yaml-automations-to-automationsyaml) assigned in order for debugging traces to be stored. -#### Traces #### +#### Traces The last 5 traces are recorded for all automations. It is possible to change this by adding the following code to your automation. diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown index f5b6a186355..a340040e4c5 100644 --- a/source/_docs/automation/using_blueprints.markdown +++ b/source/_docs/automation/using_blueprints.markdown @@ -14,10 +14,10 @@ Quick links: Automations based on a blueprint need to be configured. What needs to be configured differs on each blueprint. 1. To create your first automation based on a blueprint, go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. -1. Find the blueprint that you want to use and select **Create Automation**. +2. Find the blueprint that you want to use and select **Create Automation**. - This opens the automation editor with the blueprint selected. -1. Give it a name and configure the blueprint. -1. Select the blue **Save Automation** button in the bottom right corner. +3. Give it a name and configure the blueprint. +4. Select the blue **Save Automation** button in the bottom right corner. Done! If you want to revisit the configuration values, go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. @@ -32,10 +32,10 @@ Home Assistant can import blueprints from the Home Assistant forums, GitHub, and https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml ``` -1. Go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. -1. Select the blue **{% my blueprint_import blueprint="https://github.com/home-assistant/core/blob/master/homeassistant/components/automation/blueprints/motion_light.yaml" %}** button in the bottom right. +2. Go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. +3. Select the blue **{% my blueprint_import blueprint="https://github.com/home-assistant/core/blob/master/homeassistant/components/automation/blueprints/motion_light.yaml" %}** button in the bottom right. - A new dialog will pop-up asking you for the URL. -1. Enter the URL and select **Preview**. +4. Enter the URL and select **Preview**. - This will load the blueprint and show a preview in the import dialog. - You can change the name and finish the import. @@ -52,13 +52,13 @@ its YAML content to keep it up to date: 1. Navigate to the blueprints directory (`blueprints/automation/`). The location of this directory depends on the installation method. It's similar to how you find [`configuration.yaml`](/docs/configuration/#editing-configurationyaml). -1. Next, you must find the blueprint to update. The path name of a blueprint consists of: +2. Next, you must find the blueprint to update. The path name of a blueprint consists of: - The username of the user that created it. The name depends on the source of the blueprint: the forum, or GitHub. - The name of the YAML file. For the forum it's the title of the topic in the URL, for GitHub it's the name of the YAML file. -1. Open the YAML file with your editor and update its contents. -1. Reload the automations for the changes to take effect. +3. Open the YAML file with your editor and update its contents. +4. Reload the automations for the changes to take effect. The new changes will appear to your existing automations as well. diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 2b484620b51..880e5a658dc 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -20,7 +20,7 @@ If your entity is not supported, or you cannot customize what you need via this By default, all of your devices will be visible and have a default icon determined by their domain. You can customize the look and feel of your front page by altering some of these parameters. This can be done by overriding attributes of specific entities. -#### Possible values +### Possible values {% configuration customize %} friendly_name: @@ -57,7 +57,7 @@ initial_state: default: None {% endconfiguration %} -#### Device Class +### Device Class Device class is currently supported by the following platforms: diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index fd63ddde23d..010f4bd5e2b 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -112,3 +112,12 @@ It is possible to [customize entities](/docs/configuration/customizing-devices/) homeassistant: customize: ``` + + +
+ +If you are moving configuration to packages, `auth_providers` must stay within ‘configuration.yaml’. See the general documentation for [Authentication Providers](/docs/authentication/providers/#configuring-auth-providers). + +This is because Home Assistant processes the authentication provided early in the start-up process, even before packages are processed. + +
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index f1722b57b8c..70930821793 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -51,9 +51,9 @@ script: There are a few very important rules to remember when adding templates to YAML: 1. You **must** surround single-line templates with double quotes (`"`) or single quotes (`'`). -1. It is advised that you prepare for undefined variables by using `if ... is not none` or the [`default` filter](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.default), or both. -1. It is advised that when comparing numbers, you convert the number(s) to a [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) or an [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) by using the respective [filter](https://jinja.palletsprojects.com/en/latest/templates/#list-of-builtin-filters). -1. While the [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) and [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables. +2. It is advised that you prepare for undefined variables by using `if ... is not none` or the [`default` filter](https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.default), or both. +3. It is advised that when comparing numbers, you convert the number(s) to a [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) or an [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) by using the respective [filter](https://jinja.palletsprojects.com/en/latest/templates/#list-of-builtin-filters). +4. While the [`float`](https://jinja.palletsprojects.com/en/latest/templates/#float) and [`int`](https://jinja.palletsprojects.com/en/latest/templates/#int) filters do allow a default fallback value if the conversion is unsuccessful, they do not provide the ability to catch undefined variables. Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates. @@ -70,7 +70,7 @@ extensions: You can write reusable Jinja templates by adding them to a `custom_templates` folder under your configuration directory. All template files must have the `.jinja` extension and be less than 5MiB. Templates in this folder will be loaded at startup. To reload the templates without -restarting Home Assistant, invoke the `homeassistant.reload_custom_templates` service. +restarting Home Assistant, invoke the {% my developer_call_service service="homeassistant.reload_custom_templates" %} service. Once the templates are loaded, Jinja [includes](https://jinja.palletsprojects.com/en/3.0.x/templates/#include) and [imports](https://jinja.palletsprojects.com/en/3.0.x/templates/#import) will work using `config/custom_templates` as the base directory. @@ -110,8 +110,8 @@ Templates for some [triggers](/docs/automation/trigger/) as well as `trigger_var Not supported in [limited templates](#limited-templates). -- Iterating `states` will yield each state sorted alphabetically by entity ID. -- Iterating `states.domain` will yield each state of that domain sorted alphabetically by entity ID. +- Iterating `states` will yield each state object. +- Iterating `states.domain` will yield each state object of that domain. - `states.sensor.temperature` returns the state object for `sensor.temperature` (avoid when possible, see note below). - `states` can also be used as a function, `states(entity_id, rounded=False, with_unit=False)`, which returns the state string (not the state object) of the given entity, `unknown` if it doesn't exist, and `unavailable` if the object exists but is not available. - The optional arguments `rounded` and `with_unit` control the formatting of sensor state strings, please see the [examples](#formatting-sensor-states) below. diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index f9f2097b039..804849270f1 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -823,7 +823,8 @@ Some of the caveats of running actions in parallel: ## Stopping a script sequence -It is possible to halt a script sequence at any point. Using the `stop` action. +It is possible to halt a script sequence at any point and return script responses +using the `stop` action. The `stop` action takes a text as input explaining the reason for halting the sequence. This text will be logged and shows up in the automations and @@ -836,6 +837,15 @@ for example, a condition is not met. - stop: "Stop running the rest of the sequence" ``` +To return a response from a script, use the `response_variable` option. This +option expects the name of the variable that contains the data to return. The +response data must contains a mapping of key/value pairs. + +```yaml +- stop: "Stop running the rest of the sequence" + response_variable: "my_response_variable" +``` + There is also an `error` option, to indicate we are stopping because of an unexpected error. It stops the sequence as well, but marks the automation or script as failed to run. diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown index 566c10a488a..3852cdf4a53 100644 --- a/source/_docs/tools/dev-tools.markdown +++ b/source/_docs/tools/dev-tools.markdown @@ -3,19 +3,22 @@ title: "Developer Tools" description: "Description of the Developer Tools." --- -The frontend contains a section called "Developer Tools". +The frontend contains a section called **Developer Tools**.

Screenshot of Home Assistant's Developer Tools.

-| Section |Description | -| ------- |----- | -| States | Sets the representation of an entity | -| Services | Calls services from integrations | -| Events | Fires events | -| Templates | Renders templates | +| Section |Description | +| ---------- |---------------------------------------------------------------------| +| YAML | Lets you validate the configuration and trigger a reload or restart | +| States | Sets the representation of an entity | +| Services | Calls services from integrations | +| Template | Renders templates | +| Events | Fires events | +| Statistics | Shows a list of long-term statistic entities | +| Assist | Lets you see how Home Assistant Assist processes a sentence | ## What can I do with Developer Tools? @@ -114,3 +117,28 @@ Event 0 fired 9:53 AM: } } ``` + +## Statistics + +The **Statistics** tab shows a list of long-term statistic entities. If the long term statistics is not working for an entity, a **Fix Issue** link is shown. Select it to view a description of the issue. There might also be an option to fix the issue. + +![Statistics issue message](/images/docs/developer-tools/statistics_issue.png) + +Another use of the {% my developer_statistics title="statistics developer tool" %} is to correct any measurements. Select the + +icon. Use date & time to search for the incorrect data point and adjust the value. + +![Screenshot showing adjusting the long-term statistic history value](/images/blog/2022-04/adjust-statistics.png) + +## Assist + +The **Assist** tab lets you see how Home Assistant's Assist processes a sentence. + +If no matching intent is found, then Assist is unable to interpret the sentence. If a matching intent was found, information is provided on the action that will be performed on which entities. The example below shows how the following sentence was parsed: *what lights are on in the office*. +- Assist found a matching intent: *HassGetState*. +- It found entities matching the domain: *lights*. +- The lights have the state *on*. +- The lights are in the area *office*. +- The targets are the narrowed-down entities in scope. + +![Example use of assist developer tools](/images/docs/developer-tools/Assist.png) diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 2b10523b240..9ffbc80feba 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -128,13 +128,13 @@ You should also check the README for details on the overlays. You might find it This procedure has been tested with the following modules: - * Aeotec Z-Pi 7 Raspberry Pi HAT/Shield - * Z-Wave.Me RaZberry 7 - * Z-Wave.Me RaZberry 7 Pro + - Aeotec Z-Pi 7 Raspberry Pi HAT/Shield + - Z-Wave.Me RaZberry 7 + - Z-Wave.Me RaZberry 7 Pro 1. Make sure the module is properly seated on the Home Assistant Yellow. ![Aeotec Z-Pi 7 on Home Assistant Yellow](/images/docs/z-wave/zpi-7-yellow.jpg). -1. Carefully [close the case](https://yellow.home-assistant.io/guides/add-ssd-existing-installation/#reassembling-top-part) and power up Home Assistant Yellow. -1. Follow the procedure on [setting up a Z-Wave JS server](/integrations/zwave_js/#setting-up-a-z-wave-js-server). +2. Carefully [close the case](https://yellow.home-assistant.io/guides/add-ssd-existing-installation/#reassembling-top-part) and power up Home Assistant Yellow. +3. Follow the procedure on [setting up a Z-Wave JS server](/integrations/zwave_js/#setting-up-a-z-wave-js-server). 1. In step 2, follow the manual setup steps to install the Z-Wave integration. - 1. in Step 4, you will be prompted to choose a **Device path**. Choose **ttyAMA0**. + 2. in Step 4, you will be prompted to choose a **Device path**. Choose **ttyAMA0**. diff --git a/source/_includes/asides/common_tasks_navigation.html b/source/_includes/asides/common_tasks_navigation.html index 92eb027cb99..c44d4df0f9f 100644 --- a/source/_includes/asides/common_tasks_navigation.html +++ b/source/_includes/asides/common_tasks_navigation.html @@ -5,7 +5,8 @@
  • {% active_link /common-tasks/os/ Home Assistant Operating System %}
  • {% active_link /common-tasks/container/ Home Assistant Container %}
  • {% active_link /common-tasks/core/ Home Assistant Core %}
  • -
  • {% active_link /common-tasks/supervised/ Home Assistant Supervised %}
  • +
  • {% active_link /common-tasks/supervised/ Home Assistant Supervised %} +
  • {% active_link /common-tasks/general/ Installation independent %}
  • diff --git a/source/_includes/asides/voice_navigation.html b/source/_includes/asides/voice_navigation.html index b08c7938cb7..9b895f03a1a 100644 --- a/source/_includes/asides/voice_navigation.html +++ b/source/_includes/asides/voice_navigation.html @@ -18,6 +18,7 @@
  • {% active_link /voice_control/builtin_sentences/ Built-in sentences %}
  • {% active_link /voice_control/custom_sentences/ Custom sentences %}
  • {% active_link /voice_control/using_tts_in_automation/ Using Piper TTS in automations %}
  • +
  • {% active_link /voice_control/start_assist_from_dashboard/ Starting Assist from your dashboard %}
  • {% active_link /voice_control/troubleshooting/ Troubleshooting Assist %}
  • diff --git a/source/_includes/common-tasks/backups.md b/source/_includes/common-tasks/backups.md index 30a00904d66..18f71e269b7 100644 --- a/source/_includes/common-tasks/backups.md +++ b/source/_includes/common-tasks/backups.md @@ -4,11 +4,11 @@ Backup of your Home Assistant and add-on data and configuration. They are stored A full backup includes the following directories: -* `config` -* `share` -* `addons` (only manually installed or created add-ons, not those installed from the store) -* `ssl` -* `media` +- `config` +- `share` +- `addons` (only manually installed or created add-ons, not those installed from the store) +- `ssl` +- `media` A partial backup consists of any number of the above default directories and installed add-ons. diff --git a/source/_includes/common-tasks/enable_entities.md b/source/_includes/common-tasks/enable_entities.md new file mode 100644 index 00000000000..8ab1aa5f956 --- /dev/null +++ b/source/_includes/common-tasks/enable_entities.md @@ -0,0 +1,12 @@ +## Enabling entities + +Some entities are disabled by default. To enable them, follow these steps: + +1. Go to **{% my integrations title="Settings > Devices & Services" %}** and select the integration of interest. +2. Select **entities**. +3. From the list of entities, select the entity you want to enable. + ![Select entity from list](/images/screenshots/enable_entities_01.png) +4. In the pop-up, select the cogwheel. +5. Toggle the **Enabled** button. + ![Enable entities](/images/screenshots/enable_entities_03.png) +6. To save the changes, select **Update**. diff --git a/source/_includes/common-tasks/flashing_n2_otg.md b/source/_includes/common-tasks/flashing_n2_otg.md index 98c768e4a71..17341baa8b4 100644 --- a/source/_includes/common-tasks/flashing_n2_otg.md +++ b/source/_includes/common-tasks/flashing_n2_otg.md @@ -4,7 +4,7 @@ Home Assistant can be flashed to an ODROID-N2+ by connecting the device directly _All these instructions work the same for the ODROID-N2 (non-plus version)._ -#### What you will need +### What you will need To flash your eMMC using Petitboot and OTG-USB, you will need the following items: @@ -13,24 +13,24 @@ To flash your eMMC using Petitboot and OTG-USB, you will need the following item - USB 2.0 to micro-USB cable - If your board came in a Home Assistant Blue: No.2 hex key to open the case -#### Enabling SPI boot mode +### Enabling SPI boot mode To enable the SPI boot mode: 1. Power off the ODROID-N2+ by unplugging the power cable. -1. Remove the case. +2. Remove the case. ![Photo of the removed case](/images/hassio/screenshots/case-removed.jpg) -1. Locate the toggle for boot mode and switch it from MMC to SPI. +3. Locate the toggle for boot mode and switch it from MMC to SPI. ![Photo of the SPI toggle switch](/images/hassio/screenshots/toggle_spi.jpg) -1. Connect the ODROID-N2+ directly to your computer via the USB-OTG port located on the front of the board. -1. Connect a USB keyboard and a monitor (using HDMI) to your ODROID-N2+. -1. Plug in the power cable to power on the ODROID-N2+. +4. Connect the ODROID-N2+ directly to your computer via the USB-OTG port located on the front of the board. +5. Connect a USB keyboard and a monitor (using HDMI) to your ODROID-N2+. +6. Plug in the power cable to power on the ODROID-N2+. -#### Enabling USB drive mode +### Enabling USB drive mode After The ODROID-N2+ is set to SPI boot mode and powered on, it boots into a terminal. To enable the USB drive mode: @@ -46,34 +46,34 @@ You can safely ignore this message and proceed with the installation -1. Use the following command at the console to confirm the storage device node: +2. Use the following command at the console to confirm the storage device node: ```bash ls /dev/mmc* ``` -1. Set the storage device on the ODROID-N2+ as a mass storage device using the `ums` command (USB Mass storage mode). +3. Set the storage device on the ODROID-N2+ as a mass storage device using the `ums` command (USB Mass storage mode). This will configure the ODROID-N2+ and OTG to act as a memory card reader: ```bash ums /dev/mmcblk0 ``` -#### Flashing Home Assistant +### Flashing Home Assistant 1. Connect the ODROID-N2+ to your PC via the micro-USB port at the front of the ODROID-N2+. -1. When the ODROID-N2 is recognized as a USB connected storage device, you can flash the eMMC with [Etcher](https://www.balena.io/etcher/). - * Use the latest stable version of Home Assistant OS for the [ODROID-N2+](https://github.com/home-assistant/operating-system/releases/download/{{site.data.version_data.hassos['odroid-n2']}}/haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz) (haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz). +2. When the ODROID-N2 is recognized as a USB connected storage device, you can flash the eMMC with [Etcher](https://www.balena.io/etcher/). + - Use the latest stable version of Home Assistant OS for the [ODROID-N2+](https://github.com/home-assistant/operating-system/releases/download/{{site.data.version_data.hassos['odroid-n2']}}/haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz) (haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz). -1. When the flash process is complete, disconnect the ODROID-N2+ from your PC. - * Remove the power cable. - * Remove the USB and HDMI cables. - * Make sure to toggle the boot mode switch back to MMC. +3. When the flash process is complete, disconnect the ODROID-N2+ from your PC. + - Remove the power cable. + - Remove the USB and HDMI cables. + - Make sure to toggle the boot mode switch back to MMC. -1. Put the ODROID back in its case. -1. Connect your ODROID-N2+ to your network with an Ethernet cable and plug in power. +4. Put the ODROID back in its case. +5. Connect your ODROID-N2+ to your network with an Ethernet cable and plug in power. -1. If your router supports mDNS, you can reach your installation at `http://homeassistant.local:8123`. - * If your network doesn’t support mDNS, you’ll have to use the IP address of your ODROID-N2+ instead of `homeassistant.local`. For example, `http://192.168.0.9:8123`. - * You should be able to find the IP address of your ODROID-N2+ from the admin interface of your router. -1. Continue with [onboarding](/getting-started/onboarding/). \ No newline at end of file +6. If your router supports mDNS, you can reach your installation at `http://homeassistant.local:8123`. + - If your network doesn’t support mDNS, you’ll have to use the IP address of your ODROID-N2+ instead of `homeassistant.local`. For example, `http://192.168.0.9:8123`. + - You should be able to find the IP address of your ODROID-N2+ from the admin interface of your router. +7. Continue with [onboarding](/getting-started/onboarding/). \ No newline at end of file diff --git a/source/_includes/common-tasks/network_storage.md b/source/_includes/common-tasks/network_storage.md index 0fcbec34c9e..00cf377105e 100644 --- a/source/_includes/common-tasks/network_storage.md +++ b/source/_includes/common-tasks/network_storage.md @@ -30,9 +30,9 @@ To list all your currently connected network storages, go to **{% my storage tit ### Add a new network storage 1. Go to **{% my storage title="Settings > System > Storage" %}** in the UI. -1. Select **Add network storage**. -1. Fill out all the information for your network storage. -1. Select **Connect**. +2. Select **Add network storage**. +3. Fill out all the information for your network storage. +4. Select **Connect**.

    @@ -55,7 +55,7 @@ Server: description: The service the server is using for the network storage. "[NFS]1 Remote share path": description: The path used to connect to the remote storage server. -"[CIFS]2 Username4": +"[CIFS]2 Username": description: The username to use when connecting to the storage server. "[CIFS]2 Password": description: The password to use when connecting to the storage server. @@ -66,7 +66,6 @@ Server: 1 _Options prefixed with `[NFS]` are only available for NFS targets._
    2 _Options prefixed with `[CIFS]` are only available for CIFS targets._
    3 _For the `CIFS` option, only version 2.1+ is supported._
    -4 _Guest access is not supported. You need to supply a username and password to access the share._
    ##### Usage types @@ -86,10 +85,10 @@ By default, the first network storage of type **Backup** that you add will be se If you want to change the default backup target, you can do the following: 1. Go to **{% my backup title="Settings > System > Backups" %}** in the UI. -1. Select the menu in the top right of the screen and select the **Change default backup location** option. -1. In the dialog, there is a single option to set the default backup target. -1. Choose the one you want from the list. -1. Select **Save**. +2. Select the menu in the top right of the screen and select the **Change default backup location** option. +3. In the dialog, there is a single option to set the default backup target. +4. Choose the one you want from the list. +5. Select **Save**. This list will contain all the network storage targets you have added of usage type **Backup**. It also contains another option to set it back to use `/backup` again. diff --git a/source/_includes/common-tasks/update.md b/source/_includes/common-tasks/update.md index af01fb90445..fed403108e6 100644 --- a/source/_includes/common-tasks/update.md +++ b/source/_includes/common-tasks/update.md @@ -3,11 +3,11 @@ Best practice for updating a Home Assistant installation: 1. Backup your installation{% if page.installation == "os" or page.installation == "supervised" %}, using the backup functionality Home Assistant offers{% endif %}. -1. Check the release notes for breaking changes on [Home Assistant release notes](/blog/categories/core/). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f` / `CMD + f`) and search for **Breaking Changes**. +2. Check the release notes for breaking changes on [Home Assistant release notes](/blog/categories/core/). Be sure to check all release notes between the version you are running and the one you are upgrading to. Use the search function in your browser (`CTRL + f` / `CMD + f`) and search for **Breaking Changes**. {% if page.installation == "os" or page.installation == "supervised" %} -1. Select "Create backup before updating" in case you encounter an issue that requires a rollback. -1. Update Home Assistant. -1. Review persistent notifications and log to see if there are any issues with your configuration that need to be addressed. +3. Select "Create backup before updating" in case you encounter an issue that requires a rollback. +4. Update Home Assistant. +5. Review persistent notifications and log to see if there are any issues with your configuration that need to be addressed. {% endif %} {% if page.installation == "os" or page.installation == "supervised" %} diff --git a/source/_includes/installation/container.md b/source/_includes/installation/container.md index a8379be6a29..abf11f994d0 100644 --- a/source/_includes/installation/container.md +++ b/source/_includes/installation/container.md @@ -15,8 +15,8 @@ If you are using Docker then you need to be on at least version 19.03.9, ideally Installation with Docker is straightforward. Adjust the following command so that: -* `/PATH_TO_YOUR_CONFIG` points at the folder where you want to store your configuration and run it. -* `MY_TIME_ZONE` is a [tz database name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), like `TZ=America/Los_Angeles`. +- `/PATH_TO_YOUR_CONFIG` points at the folder where you want to store your configuration and run it. +- `MY_TIME_ZONE` is a [tz database name](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), like `TZ=America/Los_Angeles`. {% endif %} diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 276fc2d1fa3..f9cb5633e20 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -21,25 +21,25 @@ 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) +- [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) +- 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) +- [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.* +*These are affiliated links. We get commissions for purchases made through links in this post.* {% endif %} @@ -72,13 +72,13 @@ To boot Home Assistant OS, the BIOS needs to have UEFI boot mode enabled and Sec 1. To enter the BIOS, start up your x86-64 hardware and repeatedly press the `F2` key (on some systems this might be `Del`, `F1` or `F10`). ![Enter BIOS using F2, Del, F1 or F10 key](/images/installation/intel-nuc-enter-bios.jpg) -1. Make sure the UEFI Boot mode is enabled. +2. Make sure the UEFI Boot mode is enabled. ![Enable UEFI Boot mode](/images/installation/intel-nuc-uefi-boot.jpg) -1. Disable Secure Boot. +3. Disable Secure Boot. ![Disable Secure Boot mode](/images/installation/intel-nuc-disable-secure-boot.jpg) -1. Save your changes and exit. +4. Save your changes and exit. The BIOS configuration is now complete. @@ -95,7 +95,7 @@ To write the HAOS image to the boot medium on your x86-64 hardware, there are 2 1. Write the HAOS disk image from your desktop computer directly to the boot medium (e.g. using a USB to S-ATA adapter). If you can use this method, proceed to "[Write the image to your boot medium](#write-the-image-to-your-boot-medium)" and follow all steps. If you have non-removable internal mediums or don't have the necessary adapter, try the next method instead. -1. Create a "live operating system" on a USB device running e.g. Ubuntu ([how-to guide](https://ubuntu.com/tutorials/try-ubuntu-before-you-install)). Insert it into your system and boot the live operating system. Then follow from step 2 in "[Write the image to your boot medium](#write-the-image-to-your-boot-medium)". +2. Create a "live operating system" on a USB device running e.g. Ubuntu ([how-to guide](https://ubuntu.com/tutorials/try-ubuntu-before-you-install)). Insert it into your system and boot the live operating system. Then follow from step 2 in "[Write the image to your boot medium](#write-the-image-to-your-boot-medium)". {% details "Ubuntu dependencies for Etcher" %} @@ -120,11 +120,11 @@ sudo apt install libfuse2 If you are using a [Home Assistant Blue](/blue) or ODROID N2+, you can [attach your device directly](/common-tasks/os/#flashing-an-odroid-n2). {% endif %} -1. Download and start Balena Etcher. You may need to run it with administrator privileges on Windows. -1. Select **Flash from URL**. +2. Download and start Balena Etcher. You may need to run it with administrator privileges on Windows. +3. Select **Flash from URL**. ![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1.png) -1. Copy the URL for the image. If there are multiple links below, make sure to select the correct link for your version of {{site.installation.types[page.installation_type].board}}: +4. Copy the URL for the image. If there are multiple links below, make sure to select the correct link for your version of {{site.installation.types[page.installation_type].board}}: {% if site.installation.types[page.installation_type].variants.size > 1 %} {% tabbed_block %} {% for variant in site.installation.types[page.installation_type].variants %} @@ -157,15 +157,15 @@ _Select and copy the URL or use the "copy" button that appear when you hover it. 5. Paste the URL for the {{site.installation.types[page.installation_type].board}} image into Balena Etcher and select **OK**. ![Screenshot of the Etcher software showing the URL bar with a URL pasted in.](/images/installation/etcher2.png) -1. When Balena Etcher has downloaded the image, click **Select target**. -![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png) -1. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation. +6. When Balena Etcher has downloaded the image, click **Select target**. +[Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png) +7. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation. ![Screenshot of the Etcher software showing teh targets available.](/images/installation/etcher4.png) -1. Select **Flash!** to start writing the image. +8. Select **Flash!** to start writing the image. ![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. +9. 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). + - If you are having issues with Balena Etcher, rather than installing from URL, download the file. Then, install from file. ### Start up your {{site.installation.types[page.installation_type].board}} @@ -176,7 +176,7 @@ _Select and copy the URL or use the "copy" button that appear when you hover it. - If you used a live operating system (e.g. Ubuntu), shut it down and remove the live operating system USB device. 1. Plug in an Ethernet cable that is connected to the network. -1. Power the system on. If you have a screen connected to the {{site.installation.types[page.installation_type].board}} system, after a minute or so the Home Assistant welcome banner will appear in the console. +2. Power the system on. If you have a screen connected to the {{site.installation.types[page.installation_type].board}} system, after a minute or so the Home Assistant welcome banner will appear in the console.

    @@ -217,9 +217,6 @@ If you are running an older Windows version or have a stricter network configura ### Download the appropriate image - [VirtualBox][vdi] (.vdi) -{% if page.installation_type == 'macos' %} -- [KVM][qcow2] (.qcow2) -{% endif %} {% if page.installation_type == 'windows' or page.installation_type == 'linux' %} - [KVM][qcow2] (.qcow2) - [Vmware Workstation][vmdk] (.vmdk) @@ -239,7 +236,6 @@ Follow this guide if you already are running a supported virtual machine hypervi - 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). @@ -259,10 +255,10 @@ _All these can be extended if your usage calls for more resources._ - title: VirtualBox content: | 1. Create a new virtual machine. - 1. Select type **Linux** and version **Linux 2.6 / 3.x / 4.x (64-bit)**. - 1. Select **Use an existing virtual hard disk file**, select the unzipped VDI file from above. - 1. Edit the **Settings** of the VM and go to **System** > **Motherboard**. Select **Enable EFI**. - 1. Then go to **Network** > **Adapter 1**. Choose **Bridged Adapter** and choose your network adapter. + 2. Select type **Linux** and version **Linux 2.6 / 3.x / 4.x (64-bit)**. + 3. Select **Use an existing virtual hard disk file**, select the unzipped VDI file from above. + 4. Edit the **Settings** of the VM and go to **System** > **Motherboard**. Select **Enable EFI**. + 5. Then go to **Network** > **Adapter 1**. Choose **Bridged Adapter** and choose your network adapter.
    Please keep in mind that the bridged adapter only functions over a hardwired Ethernet connection. Using Wi-Fi on your VirtualBox host is unsupported. @@ -277,24 +273,24 @@ _All these can be extended if your usage calls for more resources._ ```
    - +{% unless page.installation_type == 'macos' %} - title: KVM (virt-manager) content: | 1. Create a new virtual machine in `virt-manager`. - 1 Select **Import existing disk image**, provide the path to the QCOW2 image above. - 1. Choose **Generic Default** for the operating system. - 1. Check the box for **Customize configuration before install**. - 1. Under **Network Selection**, select your bridge. + 2. Select **Import existing disk image**, provide the path to the QCOW2 image above. + 3. Choose **Generic Default** for the operating system. + 4. Check the box for **Customize configuration before install**. + 5. Under **Network Selection**, select your bridge. 6. Under customization select **Overview** > **Firmware** > **UEFI x86_64: ...**. Make sure to select a non-secureboot version of OVMF (does not contain the word `secure`, `secboot`, etc.), e.g., `/usr/share/edk2/ovmf/OVMF_CODE.fd`. - 1. Click **Add Hardware** (bottom left), and select **Channel**. - 1. Select device type: **unix**. - 1. Select name: **org.qemu.guest_agent.0**. - 1. Finally, select **Begin Installation** (upper left corner). + 7. Click **Add Hardware** (bottom left), and select **Channel**. + 8. Select device type: **unix**. + 9. Select name: **org.qemu.guest_agent.0**. + 10. Finally, select **Begin Installation** (upper left corner). - title: KVM (virt-install) content: | ```bash - virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk ,bus=sata --graphics none --boot uefi + virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk ,bus=sata --import --graphics none --boot uefi ```
    If you have a USB dongle to attach, you need to add the option `--hostdev busID.deviceId`. You can discover these IDs via the `lsusb` command. @@ -314,21 +310,22 @@ _All these can be extended if your usage calls for more resources._ You can recognize the Sonoff dongle at `Bus 003 Device 003`. So the command to install the VM will become: ```bash - virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk ,bus=sata --graphics none --boot uefi --hostdev 003.003 + virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk ,bus=sata --import --graphics none --boot uefi --hostdev 003.003 ``` Note that this configuration (bus 003, device 003) is just an example, your dongle could be on another bus and/or with another device ID. Please check the correct IDs of your USB dongle with `lsusb`.
    +{% endunless %} {% if page.installation_type == 'windows' or page.installation_type == 'linux' %} - title: Vmware Workstation content: | 1. Create a new virtual machine. - 1. Select **Custom**, make it compatible with the default of Workstation and ESX. - 1. Choose **I will install the operating system later**, select **Linux** > **Other Linux 5.x or later kernel 64-bit**. - 1. Select **Use Bridged Networking**. - 1. Select **Use an existing virtual disk** and select the VMDK file above. + 2. Select **Custom**, make it compatible with the default of Workstation and ESX. + 3. Choose **I will install the operating system later**, select **Linux** > **Other Linux 5.x or later kernel 64-bit**. + 4. Select **Use Bridged Networking**. + 5. Select **Use an existing virtual disk** and select the VMDK file above. After the VM has been created, go to **Settings** > **Options** > **Advanced**. Under **Firmware type** select **UEFI**. @@ -346,9 +343,9 @@ _All these can be extended if your usage calls for more resources._
    1. Create a new virtual machine. - 1. Select **Generation 2**. - 1. Select **Connection** > **Your Virtual Switch that is bridged**. - 1. Select **Use an existing virtual hard disk** and select the VHDX file from above. + 2. Select **Generation 2**. + 3. Select **Connection** > **Your Virtual Switch that is bridged**. + 4. Select **Use an existing virtual hard disk** and select the VHDX file from above. After creation, go to **Settings** > **Security** and deselect **Enable Secure Boot**. {% endif %} @@ -358,8 +355,8 @@ _All these can be extended if your usage calls for more resources._ ### Start up your virtual machine 1. Start the virtual machine. -1. Observe the boot process of the Home Assistant Operating System. -1. Once completed, you will be able to reach Home Assistant on homeassistant.local:8123. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or `http://X.X.X.X:8123` (replace X.X.X.X with your {{site.installation.types[page.installation_type].board}}’s IP address). +2. Observe the boot process of the Home Assistant Operating System. +3. Once completed, you will be able to reach Home Assistant on homeassistant.local:8123. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or `http://X.X.X.X:8123` (replace X.X.X.X with your {{site.installation.types[page.installation_type].board}}’s IP address). {% endif %} diff --git a/source/_includes/integrations/option_flow.md b/source/_includes/integrations/option_flow.md index 21bf5e59031..e85dbee0f13 100644 --- a/source/_includes/integrations/option_flow.md +++ b/source/_includes/integrations/option_flow.md @@ -7,4 +7,4 @@ Options for {{ name }} can be set via the user interface, by taking the followin - Browse to your Home Assistant instance. - Go to **{% my integrations title="Settings > Devices & Services" %}**. - If multiple instances of {{ name }} are configured, choose the instance you want to configure. -- Select the cogwheel, then select **Configure**. +- Select the integration, then select **Configure**. diff --git a/source/_integrations/airthings_ble.markdown b/source/_integrations/airthings_ble.markdown index 3bbe5f1415e..8461db06dc1 100644 --- a/source/_integrations/airthings_ble.markdown +++ b/source/_integrations/airthings_ble.markdown @@ -18,7 +18,7 @@ ha_integration_type: integration Integrates Airthings BLE sensors into Home Assistant. -[Airthings](https://www.airthings.com/) provide different sensors for measuring the air quality. The focus specially on Radon sensors. +[Airthings](https://www.airthings.com/) provide different devices for measuring the air quality. Initially focusing on radon gas sensors, each device provides a number of different sensors to monitor typical contaminants that's presence contributes to bad air quality in the home. Requires Airthings hardware and a compatible Bluetooth dongle. diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index dfa2b922a06..1241574a70f 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -51,7 +51,7 @@ For example, Sao Paulo, Brazil shows a breadcrumb title of `Brazil > Sao Paulo > When configured, the platform will create three sensors for each air quality standard: -#### Air Quality Index +### Air Quality Index - **Description:** This sensor displays a numeric air quality index (AQI), a metric for the overall "health" of the air. - **Example Sensor Name:** `sensor.chinese_air_quality_index` @@ -67,13 +67,13 @@ AQI | Status | Description 201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected 301+ | **Hazardous** | Health alert: everyone may experience more serious health effects -#### Air Pollution Level +### Air Pollution Level - **Description:** This sensor displays the associated `Status` (from the above table) for the current AQI. - **Sample Sensor Name:** `sensor.us_air_pollution_level` - **Example Sensor Value:** `Moderate` -#### Main Pollutant +### Main Pollutant - **Description:** This sensor displays the pollutant whose value is currently highest. - **Sample Sensor Name:** `sensor.us_main_pollutant` diff --git a/source/_integrations/alarm_control_panel.ifttt.markdown b/source/_integrations/alarm_control_panel.ifttt.markdown index cc1655404f1..f7eab602254 100644 --- a/source/_integrations/alarm_control_panel.ifttt.markdown +++ b/source/_integrations/alarm_control_panel.ifttt.markdown @@ -89,11 +89,11 @@ This platform supports the services `alarm_disarm`, `alarm_arm_away`, `alarm_arm For this system to operate correctly, the following IFTTT applets have to be setup. Obviously, if your alarm device does not support some states, no applets have to be provided for those. -* **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** disarm the alarm system. -* **IF** Webhook event `YOUR_ARM_HOME_EVENT` is called, **THEN** set the alarm system to armed home. -* **IF** Webhook event `YOUR_ARM_NIGHT_EVENT` is called, **THEN** set the alarm system to armed away. -* **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** set the alarm system to armed night. -* **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. -* **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. -* **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. -* **IF** the alarm system state changed to armed night, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_night"}`. +- **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** disarm the alarm system. +- **IF** Webhook event `YOUR_ARM_HOME_EVENT` is called, **THEN** set the alarm system to armed home. +- **IF** Webhook event `YOUR_ARM_NIGHT_EVENT` is called, **THEN** set the alarm system to armed away. +- **IF** Webhook event `YOUR_DISARM_EVENT` is called, **THEN** set the alarm system to armed night. +- **IF** the alarm system was disarmed, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "disarmed"}`. +- **IF** the alarm system state changed to armed home, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_home"}`. +- **IF** the alarm system state changed to armed away, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_away"}`. +- **IF** the alarm system state changed to armed night, **THEN** perform a Webhook `POST` web request to URL `https://HASS_URL/api/services/ifttt/push_alarm_state?api_password=API_PASSWORD` with content type `application/json` and body `{"entity_id": "alarm_control_panel.DEVICE_NAME", "state": "armed_night"}`. diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index 761e60b4164..da585e18721 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -77,7 +77,7 @@ availability_topic: required: false type: string code: - description: If defined, specifies a code to enable or disable the alarm in the frontend. Note that the code is validated locally and blocks sending MQTT messages to the remote device. For remote code validation, the code can be configured to either of the special values `REMOTE_CODE` (numeric code) or `REMOTE_CODE_TEXT` (text code). In this case, local code validation is bypassed but the frontend will still show a numeric or text code dialog. Use `command_template` to send the code to the remote device. Example configurations for remote code validation [can be found here](./#configurations-with-remote-code-validation). + description: If defined, specifies a code to enable or disable the alarm in the frontend. Note that the code is validated locally and blocks sending MQTT messages to the remote device. For remote code validation, the code can be configured to either of the special values `REMOTE_CODE` (numeric code) or `REMOTE_CODE_TEXT` (text code). In this case, local code validation is bypassed but the frontend will still show a numeric or text code dialog. Use `command_template` to send the code to the remote device. Example configurations for remote code validation [can be found here](#configurations-with-remote-code-validation). required: false type: string code_arm_required: diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index 457fab8a8ed..4a011bd7f24 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -200,7 +200,7 @@ Available services: `start_tour`, `stop_tour`, and `ptz_control` -#### Service `enable_audio`/`disable_audio` +### Service `enable_audio`/`disable_audio` These services enable or disable the camera's audio stream. @@ -208,7 +208,7 @@ Service data attribute | Optional | Description -|-|- `entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. -#### Service `enable_motion_recording`/`disable_motion_recording` +### Service `enable_motion_recording`/`disable_motion_recording` These services enable or disable the camera to record a clip to its configured storage location when motion is detected. @@ -216,7 +216,7 @@ Service data attribute | Optional | Description -|-|- `entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. -#### Service `enable_recording`/`disable_recording` +### Service `enable_recording`/`disable_recording` These services enable or disable the camera to continuously record to its configured storage location. @@ -224,7 +224,7 @@ Service data attribute | Optional | Description -|-|- `entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. -#### Service `goto_preset` +### Service `goto_preset` This service will cause the camera to move to one of the PTZ locations configured within the camera. @@ -233,7 +233,7 @@ Service data attribute | Optional | Description `entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. `preset` | no | Preset number, starting from 1. -#### Service `set_color_bw` +### Service `set_color_bw` This service will set the color mode of the camera. @@ -242,7 +242,7 @@ Service data attribute | Optional | Description `entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. `color_bw` | no | One of `auto`, `bw` or `color`. -#### Service `start_tour`/`stop_tour` +### Service `start_tour`/`stop_tour` These services start or stop the camera's PTZ tour function. @@ -250,7 +250,7 @@ Service data attribute | Optional | Description -|-|- `entity_id` | no | The entity ID of the camera to control. May be a list of multiple entity IDs. To target all cameras, set entity ID to `all`. -#### Service `ptz_control` +### Service `ptz_control` If your Amcrest or Dahua camera supports PTZ, you will be able to pan, tilt or zoom your camera. @@ -260,12 +260,12 @@ Service data attribute | Optional | Description `movement` | no | Direction of the movement. Allowed values: `zoom_in`, `zoom_out`, `up`, `down`, `left`, `right`, `right_up`, `right_down`, `left_up`, `left_down` `travel_time` | yes |Travel time in fractional seconds. Allowed values: `0` to `1`. Default: `0.2`. -#### Notes +## Notes - PTZ zoom capability does not control VariFocal lens adjustments. - There can be several seconds of lag before the video (snapshot or live) reflects the camera movement. -### Example card with controls +## Example card with controls

    Screenshot using a picture-elements with PTZ controls. diff --git a/source/_integrations/anthemav.markdown b/source/_integrations/anthemav.markdown index 91fdd467423..9c652c92d3f 100644 --- a/source/_integrations/anthemav.markdown +++ b/source/_integrations/anthemav.markdown @@ -20,18 +20,18 @@ Both [Anthem]'s current and last generation of A/V Receivers and Processors supp ### A/V Receiver -* [MRX 540](https://www.anthemav.com/products-current/type=av-receiver/model=mrx-540/page=overview), [MRX 740](https://www.anthemav.com/products-current/type=av-receiver/model=mrx-740/page=overview), [MRX 1140](https://www.anthemav.com/products-current/type=av-receiver/model=mrx-1140/page=overview) -* [MRX 520](https://www.anthemav.com/products-current/series=mrx-series-gen3/model=mrx-520/page=overview), [MRX 720](https://www.anthemav.com/products-current/collection=performance/model=mrx-720/page=overview), [MRX 1120](https://www.anthemav.com/products-current/collection=performance/model=mrx-1120/page=overview) -* [MRX 310](https://www.anthemav.com/products-archived/type=av-receiver/model=mrx-310/page=overview), [MRX 510](https://www.anthemav.com/products-archived/series=mrx-series/model=mrx-510/page=overview), [MRX 710](https://www.anthemav.com/products-archived/type=av-receiver/model=mrx-710/page=overview) +- [MRX 540](https://www.anthemav.com/products-current/type=av-receiver/model=mrx-540/page=overview), [MRX 740](https://www.anthemav.com/products-current/type=av-receiver/model=mrx-740/page=overview), [MRX 1140](https://www.anthemav.com/products-current/type=av-receiver/model=mrx-1140/page=overview) +- [MRX 520](https://www.anthemav.com/products-current/series=mrx-series-gen3/model=mrx-520/page=overview), [MRX 720](https://www.anthemav.com/products-current/collection=performance/model=mrx-720/page=overview), [MRX 1120](https://www.anthemav.com/products-current/collection=performance/model=mrx-1120/page=overview) +- [MRX 310](https://www.anthemav.com/products-archived/type=av-receiver/model=mrx-310/page=overview), [MRX 510](https://www.anthemav.com/products-archived/series=mrx-series/model=mrx-510/page=overview), [MRX 710](https://www.anthemav.com/products-archived/type=av-receiver/model=mrx-710/page=overview) ### A/V Processor -* [AVM 60](https://www.anthemav.com/products-current/model=avm-60/page=overview) +- [AVM 60](https://www.anthemav.com/products-current/model=avm-60/page=overview) ### Distribution Solution -* [MDX 8](https://www.anthemav.com/products-current/type=distribution/model=mdx-8/page=overview), [MDX 16](https://www.anthemav.com/products-current/type=distribution/model=mdx-16/page=overview) -* Martin Logan [MDA 8](https://www.martinlogan.com/en/product/mda8), [MDA 16](https://www.martinlogan.com/en/product/mda16) +- [MDX 8](https://www.anthemav.com/products-current/type=distribution/model=mdx-8/page=overview), [MDX 16](https://www.anthemav.com/products-current/type=distribution/model=mdx-16/page=overview) +- Martin Logan [MDA 8](https://www.martinlogan.com/en/product/mda8), [MDA 16](https://www.martinlogan.com/en/product/mda16) If your model is not on the list then give it a test, if everything works correctly then add it to the list by clicking on the **Edit this page on GitHub** link above. @@ -51,8 +51,8 @@ port: ## Notes and Limitations -* The tuner is currently unsupported as are the `media_player` play, pause, prev, and next controls. -* Enabling this platform will set and enforce "Standby IP Control On" in your Anthem device. You almost certainly want this. If you disable it on the device, it will just get re-enabled by Home Assistant. +- The tuner is currently unsupported as are the `media_player` play, pause, prev, and next controls. +- Enabling this platform will set and enforce "Standby IP Control On" in your Anthem device. You almost certainly want this. If you disable it on the device, it will just get re-enabled by Home Assistant.

    diff --git a/source/_integrations/apple_tv.markdown b/source/_integrations/apple_tv.markdown index b7a7bf51642..ca254f12ac4 100644 --- a/source/_integrations/apple_tv.markdown +++ b/source/_integrations/apple_tv.markdown @@ -22,7 +22,7 @@ The Apple TV integration allows you to control an Apple TV (any generation). There is currently support for the following entities within the Apple TV device: -- [Media Player](#media_player) +- [Media Player](#media-player) - [Remote](#remote) {% include integrations/config_flow.md %} @@ -43,12 +43,12 @@ launch specific content in applications. Examples of some `Deep Links` for popular applications: -| App | URL | -|-----------| --- | -| YouTube | youtube://www.youtube.com/watch?v=dQw4w9WgXcQ -| Netflix | https://www.netflix.com/title/80234304 -| Disney+ | https://www.disneyplus.com/series/the-beatles-get-back/7DcWEeWVqrkE -| Apple TV+ | https://tv.apple.com/show/severance/umc.cmc.1srk2goyh2q2zdxcx605w8vtx +| App | URL | +| --------- | --------------------------------------------------------------------- | +| YouTube | youtube://www.youtube.com/watch?v=dQw4w9WgXcQ | +| Netflix | https://www.netflix.com/title/80234304 | +| Disney+ | https://www.disneyplus.com/series/the-beatles-get-back/7DcWEeWVqrkE | +| Apple TV+ | https://tv.apple.com/show/severance/umc.cmc.1srk2goyh2q2zdxcx605w8vtx | The simplest way to find useful `Deep Links` is to use the “Share” feature in iOS or macOS versions of the App. Share sheets will often have a “Copy” or @@ -112,11 +112,11 @@ The following commands are currently available: ### Service `send_command` -| Service data
    attribute | Optional | Description | -| ------------------------- | -------- | ------------ | -| `entity_id` | no | `entity_id` of the Apple TV | -| `command` | no | Command, or list of commands to be sent | -| `num_repeats` | yes | Number of times to repeat the commands | +| Service data
    attribute | Optional | Description | +| ------------------------- | -------- | ---------------------------------------------------------------------------------------------- | +| `entity_id` | no | `entity_id` of the Apple TV | +| `command` | no | Command, or list of commands to be sent | +| `num_repeats` | yes | Number of times to repeat the commands | | `delay_secs` | yes | Interval in seconds between one send and another
    This is a `float` value e.g. 1, 1.2 etc. | ### Examples diff --git a/source/_integrations/arris_tg2492lg.markdown b/source/_integrations/arris_tg2492lg.markdown index e8ea437206e..dab9af1fc42 100644 --- a/source/_integrations/arris_tg2492lg.markdown +++ b/source/_integrations/arris_tg2492lg.markdown @@ -17,8 +17,8 @@ This platform allows you to detect presence by looking at connected devices to a This is one of the routers provided by: -* [Ziggo](https://www.ziggo.nl/), a cable operator in the Netherlands, to their customers as the Ziggo Connectbox. -* [Virgin Media](https://www.virginmedia.com/), a cable operator in the United Kingdom, to their customers as the Hub 3. +- [Ziggo](https://www.ziggo.nl/), a cable operator in the Netherlands, to their customers as the Ziggo Connectbox. +- [Virgin Media](https://www.virginmedia.com/), a cable operator in the United Kingdom, to their customers as the Hub 3.
    The router prevents the admin user from logging in twice. This can cause problems with accessing the router's configuration pages while this platform is active. diff --git a/source/_integrations/aten_pe.markdown b/source/_integrations/aten_pe.markdown index 9273ff9b23d..43437995cc5 100644 --- a/source/_integrations/aten_pe.markdown +++ b/source/_integrations/aten_pe.markdown @@ -19,7 +19,7 @@ In order to use it, SNMP must be enabled on your PDU. It is recommended to use S Tested devices: -* [PE8324G](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/pe8324/) +- [PE8324G](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/pe8324/) To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index 15ef993f23f..ad7487f40eb 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -37,13 +37,13 @@ This integration refreshes once every 5 minutes, based on the [default per-devic The integration will fetch data from each device. The following sensors are supported: -* Temperature -* Humidity -* Carbon dioxide -* Total volatile organic compounds -* PM2.5 density -* PM10 density -* Sound level -* Luminescence +- Temperature +- Humidity +- Carbon dioxide +- Total volatile organic compounds +- PM2.5 density +- PM10 density +- Sound level +- Luminescence Not all devices support all sensors; consult Awair's documentation to find out what sensors are present on your device. For first-generation Awair devices with a "dust" sensor, the integration will create identical PM2.5 and PM10 sensors (which reflects the capabilities of the sensor - it can detect dust between PM2.5 and PM10 but cannot differentiate between them). diff --git a/source/_integrations/binary_sensor.rflink.markdown b/source/_integrations/binary_sensor.rflink.markdown index e0c6dd44b4f..a8aba0991cc 100644 --- a/source/_integrations/binary_sensor.rflink.markdown +++ b/source/_integrations/binary_sensor.rflink.markdown @@ -9,7 +9,7 @@ ha_release: 0.81 ha_domain: rflink --- -The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/en/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). First, you have to set up your [RFLink hub](/integrations/rflink/). diff --git a/source/_integrations/bluetooth.markdown b/source/_integrations/bluetooth.markdown index 1e06fb9a78f..ccad2ca27bc 100644 --- a/source/_integrations/bluetooth.markdown +++ b/source/_integrations/bluetooth.markdown @@ -246,7 +246,7 @@ The following remote adapters are supported: - [ESPHome](https://esphome.github.io/bluetooth-proxies/) - Bluetooth advertisement listening: ESPHome ESP32 device with firmware 2022.8.2 or later - - Bluetooth advertisement bundling: ESPHome ESP32 device with firmware 2022.6.0 or later + - Bluetooth advertisement bundling: ESPHome ESP32 device with firmware 2023.6.0 or later - Single active connection: ESPHome ESP32 device with firmware 2022.9.3 or later - Multiple active connections: ESPHome ESP32 device with firmware 2022.11.0 or later - [Shelly](/integrations/shelly/) diff --git a/source/_integrations/brandt.markdown b/source/_integrations/brandt.markdown index 9ced5622c56..5da28dfad11 100644 --- a/source/_integrations/brandt.markdown +++ b/source/_integrations/brandt.markdown @@ -2,7 +2,7 @@ title: Brandt Smart Control description: Connect and control your Brandt Smart Control devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index 7ec2b1107c4..b57e18efa82 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -128,7 +128,7 @@ The commands that can be sent to the TV depends on the model of your TV. To disp ```yaml service: remote.send_command target: - entity_id: media_player.bravia_tv + entity_id: remote.bravia_tv data: command: "Down" ``` diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 7c5a57867ce..dca8784700a 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -282,11 +282,11 @@ script: You can use `remote.delete_command` to remove commands that you've learned with the `remote.learn_command` service. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------- | -| `entity_id` | no | ID of the remote. | -| `device` | no | Name of the device. | -| `command` | no | Names of the commands to be deleted. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------ | +| `entity_id` | no | ID of the remote. | +| `device` | no | Name of the device. | +| `command` | no | Names of the commands to be deleted. | #### Deleting a command @@ -656,9 +656,9 @@ After a success, do one of the following two options: ``` 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. + - 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/brother.markdown b/source/_integrations/brother.markdown index 4e5fa3f0a22..1f243077999 100644 --- a/source/_integrations/brother.markdown +++ b/source/_integrations/brother.markdown @@ -19,7 +19,7 @@ ha_integration_type: device The `Brother Printer` integration allows you to read current data from your local Brother printer. -It usually provides information about the device's state, the left amount of ink or toner and the remaining life of the drum or other parts of the printer. +It usually provides information about the device's state, the left amount of ink or toner and the remaining lifetime of the drum or other parts of the printer. The integration monitors every supported part. {% include integrations/config_flow.md %} diff --git a/source/_integrations/buienradar.markdown b/source/_integrations/buienradar.markdown index 86d29913d30..e909169eabd 100644 --- a/source/_integrations/buienradar.markdown +++ b/source/_integrations/buienradar.markdown @@ -37,7 +37,7 @@ The `buienradar` camera platform uses [buienradar.nl](https://buienradar.nl/) as Internally, this integration uses the radar map image as [documented](https://www.buienradar.nl/overbuienradar/gratis-weerdata) on buienradar.nl. The downloaded image is cached to prevent Home Assistant from making a new request to buienradar.nl multiple times a minute when Home Assistant checks for new stills from the camera. -The camera entity is added disabled by default and should first be enabled before it starts reading the camera images. +The camera entity is disabled by default and should be [enabled](/common-tasks/general/#enabling-entities) before it reads the camera images. ## Sensor @@ -49,24 +49,24 @@ The following entities will be created: - **Barometer forecast**: A numeric barometric forecast (1 to 7) - **Barometer forecast name**: A textual representation of the barometer forecast (eg: Thunderstorms, Stable, etc.) - **Condition code**: A symbol and a unique code identifying the current weather condition - * `a`: sunny/clear - * `b`: Mix of clear and medium or low clouds - * `j`: Mix of clear and high clouds - * `o/r`: Partly cloudy (increasing character increases the condition) - * `c`: Heavily clouded - * `p`: Cloudy - * `d`: Alternating cloudy with local fog - * `n`: Clear and local mist or fog - * `f`: Alternatingly cloudy with some light rain - * `h/k/l`: rainy (increasing character increases the condition) - * `q`: Heavily clouded with rain - * `w`: Heavily clouded with rain and winter precipitation - * `m`: Heavily clouded with some light rain - * `u`: Cloudy with light snow - * `i/v`: Heavily clouded with light snowfall (increasing character increases the condition) - * `t`: (Heavy snowfall) - * `g`: (Clear with (possibly) some heavy lightning) - * `s`: (Cloudy with (possibly) some heavy (thunderstorms) showers) + - `a`: sunny/clear + - `b`: Mix of clear and medium or low clouds + - `j`: Mix of clear and high clouds + - `o/r`: Partly cloudy (increasing character increases the condition) + - `c`: Heavily clouded + - `p`: Cloudy + - `d`: Alternating cloudy with local fog + - `n`: Clear and local mist or fog + - `f`: Alternatingly cloudy with some light rain + - `h/k/l`: rainy (increasing character increases the condition) + - `q`: Heavily clouded with rain + - `w`: Heavily clouded with rain and winter precipitation + - `m`: Heavily clouded with some light rain + - `u`: Cloudy with light snow + - `i/v`: Heavily clouded with light snowfall (increasing character increases the condition) + - `t`: (Heavy snowfall) + - `g`: (Clear with (possibly) some heavy lightning) + - `s`: (Cloudy with (possibly) some heavy (thunderstorms) showers) - **Condition**: A symbol and the current weather condition (`clear`, `cloudy`, `fog`, `rainy`, `snowy` or `lightning`) - **Condition detailed**: A symbol and detailed current weather condition (`clear`, `partlycloudy`, `cloudy`, `partlycloudy-fog`, `partlycloudy-light-rain`, `partlycloudy-rain`, `light-rain`, `rainy`, `snowy-rainy`, `partlycloudy-light-snow`, `partlycloudy-snow`, `light-snow`, `snowy`, `partlycloudy-lightning` or `lightning`) - **Condition exact**: A symbol with the full current weather condition (in English) @@ -102,8 +102,7 @@ The following entities will be created: - **Condition code n days ahead**: Symbol and condition code of the expected condition n days ahead - **Condition n days ahead**: Symbol and expected condition n days ahead - **Detailed condition n days ahead**: Symbol and detailed expected condition n days ahead -- **Full condition (english) n days ahead**: Symbol and full expected condition n days ahead (in English) -- **Full condition (dutch) n days ahead**: Symbol and full expected condition n days ahead (in Dutch) +- **Full condition n days ahead**: Symbol and full expected condition n days ahead {% include integrations/option_flow.md %} diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index 5c20ebf9492..b61fc8ff40e 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -252,4 +252,4 @@ data: {% endfor %}

    ``` -{% endraw %} \ No newline at end of file +{% endraw %} diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index 1a7e8d0a589..a76593f9eaf 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -17,14 +17,14 @@ The `cisco_webex_teams` notification platform allows you to deliver rich notific To use this notification platform you will need an app (bot) token. To obtain a token visit [Cisco Webex for Developers](https://developer.webex.com/). -* Detailed instructions can be found in the section titled **Creating a Webex Teams Bot** on the [Webex Teams bot documentation](https://developer.webex.com/docs/bots). +- Detailed instructions can be found in the section titled **Creating a Webex Teams Bot** on the [Webex Teams bot documentation](https://developer.webex.com/docs/bots). You also need to specify the `room_id` that you wish to post messages into. The `room_id` can be found in one of two ways: 1. Logging in at [Cisco Webex for Developers](https://developer.webex.com/) and navigate to `Documentation`>`API Reference`>`Messages` and select List Messages, or 2. Log into the web client at [teams.webex.com](https://teams.webex.com/), - * select the room (or create a new room), - * then copying the room ID from the URL. + - select the room (or create a new room), + - then copying the room ID from the URL.
    @@ -118,23 +118,23 @@ Here are the automations for the above screenshot: The following is a list of the allowed html tags and attributes: -Tag | More Info ---- | --- -`<@personEmail:email@examplecompany.com>` | Used to tag another Webex Team user by email address. -`` | Defines a hyperlink. Allows attribute `href`. -`
    ` | Defines a section that is quoted from another source. Allows attribute `class` with allowed values `danger`, `warning`, `info`, `primary`, `secondary`. -`` | Defines bold text. -`` | Defines important text. -`` | Defines italic text. -`` | Defines emphasized text. -`
    ` | Defines preformatted text.
    -`` | Defines a piece of computer code.
    -`
    ` | Defines a single line break. -`

    ` | Defines a paragraph. -`

    -#### Schedules +## Schedules Once events have been registered on the DoorBird device, they must be attached to a schedule using the official DoorBird app on Android or iOS or the [DoorBird - WebAdmin](https://webadmin.doorbird.com) portal. Currently, there are schedules available for doorbell, motion, relay, and RFID events (on supported DoorBird devices). Essentially, you can enable an HTTP(S) call from your DoorBird device to the Home Assistant DoorBird API by configuring an action/event (by enabling a schedule). @@ -98,7 +98,7 @@ On the desired event, you should be able to specify blocks of time for when you Note: Remember to complete the schedule assignment steps above for each event type you registered. If you are configuring HTTP Call(s) schedules for registered RFID tags, please note that you will have to enable/configure the schedule for each RFID tag. -### Automation Example +## Automation Example The example automation below shows how to turn on a light when somebody presses the DoorBird call button: diff --git a/source/_integrations/dremel_3d_printer.markdown b/source/_integrations/dremel_3d_printer.markdown index 49ef9dc3b8f..2ccd3f5598c 100644 --- a/source/_integrations/dremel_3d_printer.markdown +++ b/source/_integrations/dremel_3d_printer.markdown @@ -12,7 +12,7 @@ ha_platforms: - binary_sensor - button - camera - - Sensor + - sensor ha_codeowners: - '@tkdrob' ha_integration_type: device diff --git a/source/_integrations/dynalite.markdown b/source/_integrations/dynalite.markdown index 1292dfcb7c3..9d8a4dd80d1 100755 --- a/source/_integrations/dynalite.markdown +++ b/source/_integrations/dynalite.markdown @@ -35,268 +35,13 @@ Each area can have one or more channels that correspond to the different devices Additionally, each area can have one or more presets that determine the behavior of all the channels, and sometimes trigger additional actions. Typically, preset '1' in an area means 'on', and preset '4' means 'off'. Additional presets could be used for scenes and dimming. -## Configuration +{% include integrations/config_flow.md %} -Since Philips Dynalite has virtually no auto-discover capabilities, it needs to be configured via the `configuration.yaml` file: +## Setup -```yaml -# Example configuration.yaml entry -dynalite: - bridges: - - host: DEVICE_IP_ADDRESS -``` +Since Philips Dynalite has virtually no auto-discover capabilities, once it is added via the UI, it needs to be configured via Dynalite panel. Note that the panel is only available to "admin" level users. -{% configuration %} -host: - description: The IP address of the bridge (e.g., 192.168.1.10). - required: true - type: string -port: - description: Port number of the bridge. - required: false - type: integer - default: 12345 -name: - description: Name for the bridge. - required: false - type: string - default: dynalite -active: - description: "Actively query network. When starting, it will query all devices for their current status, and also will send queries when some changes are in progress (e.g., lights dimming or covers moving). Better experience but creates more load on the Dynalite network. Value can be `on`, `off`, our `init`, where `init` will only send queries during the initial init of Home Assistant." - required: false - type: [boolean, string] - default: false -polltimer: - description: "Polling interval for devices in transition. Value in seconds. When devices are in transition (e.g., a light fading), it will ask for a new state every X seconds until it is at the target level. Only relevant when active is set to `on`." - required: false - type: float - default: 1.0 -autodiscover: - description: Enable auto-discover. As Dynalite does not support native autodiscovery, this tracks events on your network, so if you turn on a light, it will be added to Home Assistant. - required: false - type: boolean - default: false -default: - description: Global defaults for the system - required: false - type: map - keys: - fade: - description: Default fade - required: false - type: float -area: - description: Definition for the various Dynalite areas. - required: true - type: map - keys: - AREA_NUMBER: - description: The Dynalite area number, 1-255. - required: true - type: map - keys: - name: - description: Name of the area. - required: true - type: string - template: - description: "Type of template to use for the area. Supported values are: `room` and `time_cover`. They are described in detail below in the **template** section. If the template parameters are different than defaults, they can be overridden in this section as well." - require: false - type: string - TEMPLATE_PARAMS: - description: "This can be any of the settings of the template. For example, for template `room`: `room_on` and `room_off` are possible options." - required: false - type: [integer, float] - default: Value from **template** section or system defaults - fade: - description: Fade time for the area, in seconds. - required: false - type: float - default: 2.0 - preset: - description: Specific presets for the area. - required: false - type: map - keys: - PRESET_NUMBER: - description: The Dynalite preset number in the area. - required: true - type: map - keys: - name: - description: Name of the preset. - required: false - type: string - default: AREA_NAME Preset PRESET_NUMBER - fade: - description: Fade time for the preset, in seconds. - required: false - type: float - default: 2.0 - level: - description: Level of the channels when the preset is selected, between 0 and 1. - required: false - type: float - nodefault: - description: Do not use the default presets defined globally, but only the specific ones defined for this area. - required: false - type: boolean - default: false - channel: - description: Map of the channels in this area. - required: false - type: map - keys: - CHANNEL_NUMBER: - description: The Dynalite channel number in the area, 1-255. - required: true - type: map - keys: - name: - description: Name of the channel. - required: false - type: string - default: AREA_NAME Channel CHANNEL_NUMBER - type: - description: "Type of entity this channel should appear as. Can be either `light` or if this is a device that is not a light (e.g., water heater), can be `switch`." - require: false - type: string - default: light - fade: - description: Fade time for the channel, in seconds. - required: false - type: float - default: 2.0 -preset: - description: "Default presets for any area without the `nodefault` option." - required: false - type: map - keys: - PRESET_NUMBER: - description: The Dynalite preset number in the area. - required: true - type: map - keys: - name: - description: "Name of the preset. When used in an area, it will be 'AREA_NAME name'. For example, if a room's name is 'Kitchen' and preset 4 is defined with the name `Off`, it will appear in HA as 'Kitchen Off'." - required: false - type: string - default: AREA_NAME Preset PRESET_NUMBER - fade: - description: Fade time for the preset, in seconds. - required: false - type: float - default: 2.0 - level: - description: Level of the channels when the preset is selected, between 0 and 1. - required: false - type: float -template: - description: Set the default parameters for the templates. - required: false - type: map - keys: - room: - description: This is used to define a room that has a preset to turn on all the channels in the area and a preset to turn off. - required: false - type: map - keys: - room_on: - description: Preset to turn area on. - required: false - type: integer - default: 1 - room_off: - description: Preset to turn area off. - required: false - type: integer - default: 4 - time_cover: - description: "This is used to define a cover that has 3 presets: `open`, `close`, and `stop`. Potentially can also use a channel that some systems (e.g., Control4) use to also send commands to open and close the cover. It uses the duration it takes to open or close to determine position. In addition, many times, these covers include tilt by opening or closing for a short time, so this can be defined as well." - required: false - type: map - keys: - open: - description: Preset to open the cover. - required: false - type: integer - default: 1 - close: - description: Preset to close the cover. - required: false - type: integer - default: 2 - stop: - description: Preset to stop the cover. - required: false - type: integer - default: 4 - channel_cover: - description: Channel that monitors the cover. - required: false - type: integer - duration: - description: Time in seconds it takes to open or close the cover. - required: false - type: integer - default: 60 - tilt: - description: "Time in seconds it takes to open or close the cover tilt. `0` means that the cover does not support tilt." - require: false - type: integer - default: 0 - class: - description: "Type of cover for Home Assistant. Any of the possible [cover classes](/integrations/cover/#device-class) (e.g. `blind`, `garage`, `shutter`) are possible." - require: false - type: string - default: shutter -{% endconfiguration %} - -## Examples - -```yaml -# Example configuration.yaml entry specifying optional parameters -dynalite: - bridges: - - host: DEVICE_IP_ADDRESS - port: 12345 - autodiscover: true - polltimer: 1 - area: - '1': - name: Office - template: room - '2': - name: Living Room - template: room - nodefault: true - room_on: 2 - room_off: 5 - channel: - '2': - name: Entrance Spot - fade: 10.0 - '3': - name: Dining Table - preset: - '5': - name: Blinking Lights - '6': - name: All Off - fade: 3.0 - '4': - name: Curtain - template: time_cover - preset: - '1': - name: "On" - '4': - name: "Off" - template: - room: - room_on: 1 - room_off: 4 -``` +There are global setup parameters and advanced parameters that should normally be left as is. The most important part is defining the areas. Each area normally corresponds to a room or function. They have to be added manually via the UI and match the setup of the existing dynalite installation. ## Initial Configuration and Discovery diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 4fb7011be81..08cfc362536 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -47,8 +47,8 @@ Log in to the regular consumer portal and click the overflow menu button in the 1. Select the **Developer** option from the hamburger menu on the top-right. 2. Select **Create New**. 3. Complete the form on the right. (Neither of the fields are referenced by Home Assistant) - * Name: Must be unique across all ecobee users. - * Summary: Does not need to be unique. + - Name: Must be unique across all ecobee users. + - Summary: Does not need to be unique. 4. Click *Authorization method* and select **ecobee PIN**. 5. Click **Create**. @@ -83,7 +83,7 @@ api_key:

    -You must [restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. After restarting, go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the cogwheel. Then, select **Configure** and continue to authorize the app according to the above **Automatic Configuration**, starting at step 2. +You must [restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. After restarting, go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the integration. Then, select **Configure** and continue to authorize the app according to the above **Automatic Configuration**, starting at step 2. ## Notifications @@ -126,12 +126,12 @@ When enabling the auxiliary heat toggle, the ecobee thermostat HVAC mode will be The ecobee climate entity has some extra attributes to represent the state of the thermostat. -| Name | Description | -| ---- | ----------- | -| `fan` | If the fan is currently on or off: `on` / `off`. -| `climate_mode` | This is the climate mode that is active, or would be active if no override is active. -| `equipment_running` | This is a comma-separated list of equipment that is currently running. -| `fan_min_on_time` | The minimum amount of time (in minutes) that the fan will run per hour. This is determined by the minimum fan runtime setting which can be changed in the ecobee app or on the thermostat itself. +| Name | Description | +| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `fan` | If the fan is currently on or off: `on` / `off`. | +| `climate_mode` | This is the climate mode that is active, or would be active if no override is active. | +| `equipment_running` | This is a comma-separated list of equipment that is currently running. | +| `fan_min_on_time` | The minimum amount of time (in minutes) that the fan will run per hour. This is determined by the minimum fan runtime setting which can be changed in the ecobee app or on the thermostat itself. | ## Ventilator @@ -141,10 +141,10 @@ The ecobee thermostat supports the addition of an accessory. If you have an air ### Number -| Name | Description | -| ---- | ----------- | -| `ventilator_min_on_time_home` | The minimum amount of time (in minutes) that the ventilator will run per hour, when you are home. This is determined by the minimum ventilator runtime setting which can be changed in the ecobee app or on the thermostat itself. -| `ventilator_min_on_time_away` | The minimum amount of time (in minutes) that the ventilator will run per hour, when you are away. This is determined by the minimum ventilator runtime setting which can be changed in the ecobee app or on the thermostat itself. +| Name | Description | +| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `ventilator_min_on_time_home` | The minimum amount of time (in minutes) that the ventilator will run per hour, when you are home. This is determined by the minimum ventilator runtime setting which can be changed in the ecobee app or on the thermostat itself. | +| `ventilator_min_on_time_away` | The minimum amount of time (in minutes) that the ventilator will run per hour, when you are away. This is determined by the minimum ventilator runtime setting which can be changed in the ecobee app or on the thermostat itself. | ## Services @@ -169,9 +169,9 @@ Creates a vacation on the selected ecobee thermostat. | `cool_temp` | no | Cooling temperature during the vacation | | `heat_temp` | no | Heating temperature during the vacation | | `start_date` | yes | Date the vacation starts in YYYY-MM-DD format | -| `start_time` | yes | Time the vacation starts in the local time zone. Must be in 24-hour format (HH:MM:SS) | +| `start_time` | yes | Time the vacation starts in the local time zone. Must be in 24-hour format (HH:MM:SS) | | `end_date` | yes | Date the vacation ends in YYYY-MM-DD format (14 days from now if not provided) | -| `end_time` | yes | Time the vacation ends in the local time zone. Must be in 24-hour format (HH:MM:SS) | +| `end_time` | yes | Time the vacation ends in the local time zone. Must be in 24-hour format (HH:MM:SS) | | `fan_mode` | yes | Fan mode of the thermostat during the vacation (auto or on) (auto if not provided) | | `fan_min_on_time` | yes | Minimum number of minutes to run the fan each hour (0 to 60) during the vacation (0 if not provided) | @@ -188,37 +188,37 @@ Delete a vacation on the selected ecobee thermostat. Resumes the currently active schedule. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Use `entity_id: all` to target all. | -| `resume_all` | no | true or false | +| `resume_all` | no | true or false | ### Service `ecobee.set_fan_min_on_time` Sets the minimum amount of time that the fan will run per hour. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------ | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------ | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Use `entity_id: all` to target all. | -| `fan_min_on_time` | no | integer (e.g., 5) | +| `fan_min_on_time` | no | integer (e.g., 5) | ### Service `ecobee.set_dst_mode` Enable/disable automatic daylight savings time. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------- | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------ | | `entity_id` | yes | ecobee thermostat on which to set daylight savings time mode | -| `dst_enabled` | no | true or false | +| `dst_enabled` | no | true or false | ### Service `ecobee.set_mic_mode` Enable/disable Alexa mic (only for ecobee 4). -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------- | -| `entity_id` | yes | ecobee thermostat on which to set the mic mode | -| `mic_enabled` | no | true or false | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------- | +| `entity_id` | yes | ecobee thermostat on which to set the mic mode | +| `mic_enabled` | no | true or false | ### Service `ecobee.set_occupancy_modes` diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown index d8066c8aec6..4c9605f9e92 100644 --- a/source/_integrations/ecovacs.markdown +++ b/source/_integrations/ecovacs.markdown @@ -79,6 +79,34 @@ logger: The `ecovacs` vacuum platform allows you to monitor and control your Ecovacs Deebot vacuums. +### Vacuum services + +The `ecovacs` vacuum platform does not support eithor of the services `vacuum.pause` or `vacuum.start`, it supports the following services instead. + +#### Service `vacuum.turn_on` + +Start a new cleaning task. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | + +#### Service `vacuum.turn_off` + +Stop the current cleaning task and return to the dock. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | + +#### Service `vacuum.start_pause` + +Start, pause or resume a cleaning task. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | + ### Integration lifespan The remaining lifespan of components on your Deebot vacuum will be reported as attributes on the vacuum entity. The value will be a whole number representing the percentage of life remaining. diff --git a/source/_integrations/emulated_roku.markdown b/source/_integrations/emulated_roku.markdown index dfbaac27269..4cc1ca53a37 100644 --- a/source/_integrations/emulated_roku.markdown +++ b/source/_integrations/emulated_roku.markdown @@ -79,12 +79,12 @@ After starting up, you can check if the emulated Roku is reachable at the specif All Roku commands are sent as `roku_command` events. -Field | Description ------ | ----------- -`source_name` | Name of the emulated Roku instance that sent the event. Only required when using multiple instances to filter event sources. -`type` | The type of the event that was called on the API. -`key` | the code of the pressed key when the command `type` is `keypress`, `keyup` or `keydown`. -`app_id` | the id of the app that was launched when command `type` is `launch`. +| Field | Description | +| ------------- | ---------------------------------------------------------------------------------------------------------------------------- | +| `source_name` | Name of the emulated Roku instance that sent the event. Only required when using multiple instances to filter event sources. | +| `type` | The type of the event that was called on the API. | +| `key` | the code of the pressed key when the command `type` is `keypress`, `keyup` or `keydown`. | +| `app_id` | the id of the app that was launched when command `type` is `launch`. | Available key codes | ------------------- | @@ -131,12 +131,12 @@ When using Harmony, the app should auto-discover any changes via UPnP discovery Alternatively, you can trigger the 'Fix' page by pressing a button on the unreachable device's remote in the app and wait ~10 seconds, then click 'Fix it'. Known limitations: -* Some Android remotes send key up/down events instead of key presses. -* Functionality other than key presses and app launches are not implemented yet. -* App ids are limited between 1-10. (The emulated API reports 10 dummy apps) -* Harmony uses UPnP discovery (UPnP is not needed after pairing), which might not work in Docker. You can: - * Change Docker to host networking temporarily, then revert after pairing. - * Run the `advertise.py` helper script from the emulated_roku library directly somewhere else and point it to the emulated Roku API. -* Harmony cannot launch apps as it uses IR instead of the Wi-Fi API and will not display the custom dummy app list. -* Home control buttons cannot be assigned to emulated Roku on the Harmony Hub Companion remote as they are limited to Hue (and possibly other APIs) within Harmony. -* Harmony will not set the name of the added emulated Roku device to the specified `name`. +- Some Android remotes send key up/down events instead of key presses. +- Functionality other than key presses and app launches are not implemented yet. +- App ids are limited between 1-10. (The emulated API reports 10 dummy apps) +- Harmony uses UPnP discovery (UPnP is not needed after pairing), which might not work in Docker. You can: + - Change Docker to host networking temporarily, then revert after pairing. + - Run the `advertise.py` helper script from the emulated_roku library directly somewhere else and point it to the emulated Roku API. +- Harmony cannot launch apps as it uses IR instead of the Wi-Fi API and will not display the custom dummy app list. +- Home control buttons cannot be assigned to emulated Roku on the Harmony Hub Companion remote as they are limited to Hue (and possibly other APIs) within Harmony. +- Harmony will not set the name of the added emulated Roku device to the specified `name`. diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 16b1d0a8cbe..6e830948eef 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -158,10 +158,10 @@ name: The EnOcean sensor platform currently supports the following device types: - * [power sensor](#power-sensor) - * [humidity sensor](#humidity-sensor) - * [temperature sensor](#temperature-sensor) - * [window handle](#window-handle) +- [power sensor](#power-sensor) +- [humidity sensor](#humidity-sensor) +- [temperature sensor](#temperature-sensor) +- [window handle](#window-handle) To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file: diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index fc4869e616f..864956d51b1 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -3,15 +3,16 @@ title: ESPHome description: Support for ESPHome devices using the native ESPHome API. featured: true ha_category: + - Alarm - DIY - Update - - Alarm Control Panel ha_release: 0.85 ha_iot_class: Local Push ha_config_flow: true ha_codeowners: - '@OttoWinter' - '@jesserockz' + - '@bdraco' ha_domain: esphome ha_zeroconf: true ha_platforms: diff --git a/source/_integrations/ezviz.markdown b/source/_integrations/ezviz.markdown index b97f47b072a..4e74f136c1e 100644 --- a/source/_integrations/ezviz.markdown +++ b/source/_integrations/ezviz.markdown @@ -45,6 +45,28 @@ Your cameras will now show under integration options as "discovered devices". Pl You can also change the camera options should you need to access a high or low res stream. Generally, though it will just work without any modification to options. +### Integration Entity Options + +`Request Timeout (seconds)`: + +- This option determines the duration Home Assistant waits for data from the EZVIZ API before giving up. This timeout is specified in seconds. If the API response takes longer than the specified timeout, Home Assistant will stop waiting and assume the request has failed. Adjust this value according to your network conditions and the responsiveness of the EZVIZ API. A higher timeout may be necessary for slower connections. + +- Example: If you set the **Request Timeout** to 30 seconds (default option), Home Assistant will wait up to 30 seconds for a response from the EZVIZ API before timing out. + +- Please note this only works on the main EZVIZ cloud entity. + +`Arguments passed to ffmpeg for cameras`: + +- This option allows you to define additional parameters for capturing footage from your EZVIZ cameras. While camera resolution and codec settings are typically configured in the "Ezviz Studio" desktop application, you can use this option to select the desired stream or substream for capturing the footage. + +- To choose the appropriate stream or substream, specify the corresponding channel path in the `Arguments passed to ffmpeg for cameras` field. The channel path identifies the specific stream or substream of the camera. + +- Example: If you want to use the camera's substream, you can specify the channel path as `/Streaming/Channels/102`. Alternatively, if you prefer the main stream, use `/Streaming/Channels/101`. You can also configure multiple stream/substream options based on your camera's capabilities and resource requirements. + +- Cameras typically default to the main stream if this is invalid or not specified. + +- Please note this only works on the camera entities. + ### Service `ezviz.alarm_sound` If your EZVIZ camera supports warning sounds, you can use this service to set the intensity. diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index cdc2546cc50..385ccb7062e 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -58,7 +58,7 @@ manual: type: boolean {% endconfiguration %} -#### Time period dictionary example +### Time period dictionary example ```yaml scan_interval: @@ -70,7 +70,7 @@ scan_interval: milliseconds: 0 ``` -### Service +## Service Once loaded, the `fastdotcom` integration will expose a service (`fastdotcom.speedtest`) that can be called to run a Fast.com speed test on demand. This service takes no parameters. This can be useful if you have enabled manual mode. diff --git a/source/_integrations/fireservicerota.markdown b/source/_integrations/fireservicerota.markdown index 0b98c4fe523..28639f708bd 100644 --- a/source/_integrations/fireservicerota.markdown +++ b/source/_integrations/fireservicerota.markdown @@ -49,36 +49,36 @@ The following entity types are created: This is the main entity of the integration containing the incident message as its `value`, it has several attributes which are described below. -| Attribute | Description | -| --------- | ----------- | -| `trigger` | Type of trigger, `new` or `update`.| -| `state` | The state of the incident. | -| `created_at` | Date and time when incident was created.| -| `message_to_speech_url` | The URL of the mp3 file containing the spoken text of the incident.| -| `prio` | Priority of the incident, `a1`, `a2`, `b1` or `b2`.| -| `type` | Type of incident, e.g. `incident_alert`.| -| `responder_mode` | Modes of response, e.g. `available_in_schedule_is_acknowledgment`.| -| `can_respond_until` | Date and time until response is accepted.| -| `latitude` | The Latitude of the incident.| -| `longitude` | The Longitude of the incident.| -| `address_type` | Type of address, e.g. `home`.| -| `formatted_address` | Address in string format.| -| `task_ids` | ID(s) of appliance(s) or task(s).| +| Attribute | Description | +| ----------------------- | ------------------------------------------------------------------- | +| `trigger` | Type of trigger, `new` or `update`. | +| `state` | The state of the incident. | +| `created_at` | Date and time when incident was created. | +| `message_to_speech_url` | The URL of the mp3 file containing the spoken text of the incident. | +| `prio` | Priority of the incident, `a1`, `a2`, `b1` or `b2`. | +| `type` | Type of incident, e.g. `incident_alert`. | +| `responder_mode` | Modes of response, e.g. `available_in_schedule_is_acknowledgment`. | +| `can_respond_until` | Date and time until response is accepted. | +| `latitude` | The Latitude of the incident. | +| `longitude` | The Longitude of the incident. | +| `address_type` | Type of address, e.g. `home`. | +| `formatted_address` | Address in string format. | +| `task_ids` | ID(s) of appliance(s) or task(s). | ### Duty Binary Sensor This entity reflects the duty you have scheduled, the value can be `on` = on duty, `off` = no duty. When you have no duty the response switch is disabled which means you cannot respond to a call. -| Attribute | Description | -| --------- | ----------- | -| `start_time` | Start date and time of duty schedule.| -| `end_time` | End date and time of duty schedule.| -| `available` | `true` or `false`.| -| `active` | `true` or `false`.| -| `assigned_function_ids` | Function id's, e.g. `540`.| -| `skill_ids` | Skill id's, e.g. `6, 8`.| -| `type` | Type, e.g. `standby_duty`.| -| `assigned function` | Assigned function, e.g. `Chauffeur`.| +| Attribute | Description | +| ----------------------- | ------------------------------------- | +| `start_time` | Start date and time of duty schedule. | +| `end_time` | End date and time of duty schedule. | +| `available` | `true` or `false`. | +| `active` | `true` or `false`. | +| `assigned_function_ids` | Function id's, e.g. `540`. | +| `skill_ids` | Skill id's, e.g. `6, 8`. | +| `type` | Type, e.g. `standby_duty`. | +| `assigned function` | Assigned function, e.g. `Chauffeur`. | ### Incident Response Switch @@ -87,26 +87,26 @@ It gets reset to `unknown` value with every incident received. Switching it to ` The following attributes are available: -| Attribute | Description | -| --------- | ----------- | -| `user_name` | Your username.| -| `assigned_skill_ids` | Assigned skill ID's.| -| `responded_at` | Time you responded.| -| `start_time` | Incident response start time.| -| `status` | Status of response, e.g., `pending`.| -| `reported_status` | Reported status, e.g., `shown_up`.| -| `arrived_at_station` | `true` or `false`.| -| `available_at_incident_creation` | `true` or `false`.| -| `active_duty_function_ids` | Active function ID's, e.g., `540`.| +| Attribute | Description | +| -------------------------------- | ------------------------------------ | +| `user_name` | Your username. | +| `assigned_skill_ids` | Assigned skill ID's. | +| `responded_at` | Time you responded. | +| `start_time` | Incident response start time. | +| `status` | Status of response, e.g., `pending`. | +| `reported_status` | Reported status, e.g., `shown_up`. | +| `arrived_at_station` | `true` or `false`. | +| `available_at_incident_creation` | `true` or `false`. | +| `active_duty_function_ids` | Active function ID's, e.g., `540`. | ## Advanced Configuration With Automation you can configure one or more of the following useful actions: 1. Sound an alarm and/or switch on lights when an emergency incident is received. -1. Use text-to-speech to play incident details via a media player while getting dressed. -1. Respond with a response acknowledgment using a door-sensor when leaving the house or by pressing a button to let your teammates know you are underway. -1. Cast a FireServiceRota dashboard to a Chromecast device. (this requires a Nabu Casa subscription) +2. Use text-to-speech to play incident details via a media player while getting dressed. +3. Respond with a response acknowledgment using a door-sensor when leaving the house or by pressing a button to let your teammates know you are underway. +4. Cast a FireServiceRota dashboard to a Chromecast device. (this requires a Nabu Casa subscription) These are documented below. diff --git a/source/_integrations/flexom.markdown b/source/_integrations/flexom.markdown index d47ec74f02a..fcd18294c98 100644 --- a/source/_integrations/flexom.markdown +++ b/source/_integrations/flexom.markdown @@ -2,7 +2,7 @@ title: Bouygues Flexom description: Connect and control your Bouygues Flexom devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown index b848386846c..a06342267d2 100644 --- a/source/_integrations/flume.markdown +++ b/source/_integrations/flume.markdown @@ -35,9 +35,9 @@ Flume notifications are available via binary sensors. To clear the notifications The following notifications are supported: -* Bridge disconnected -* High flow -* Leak detected +- Bridge disconnected +- High flow +- Leak detected ## Configuration for Binary Sensor diff --git a/source/_integrations/folder_watcher.markdown b/source/_integrations/folder_watcher.markdown index e658d5b5808..f09826cd10f 100644 --- a/source/_integrations/folder_watcher.markdown +++ b/source/_integrations/folder_watcher.markdown @@ -12,11 +12,11 @@ ha_integration_type: integration This integration adds [Watchdog](https://pythonhosted.org/watchdog/) file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files within configured folders. The monitored `event_type` are: -* `closed` -* `created` -* `deleted` -* `modified` -* `moved` +- `closed` +- `created` +- `deleted` +- `modified` +- `moved` Configured folders must be added to [allowlist_external_dirs](/docs/configuration/basic/). Note that by default folder monitoring is recursive, meaning that the contents of sub-folders are also monitored. diff --git a/source/_integrations/foobot.markdown b/source/_integrations/foobot.markdown index cd545325912..692d0c9a5aa 100644 --- a/source/_integrations/foobot.markdown +++ b/source/_integrations/foobot.markdown @@ -41,9 +41,9 @@ sensor: Every ten minutes, it'll fetch the last ten minutes average of the following measurements: - * Temperature - * Humidity - * Co2 - * VOC - * PM2.5 - * [Index](https://help.foobot.io/hc/en-us/articles/204814371-What-does-central-number-mean-) + - Temperature + - Humidity + - Co2 + - VOC + - PM2.5 + - [Index](https://help.foobot.io/hc/en-us/articles/204814371-What-does-central-number-mean-) diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown index ecb80e0eb1a..cd02101c586 100644 --- a/source/_integrations/forecast_solar.markdown +++ b/source/_integrations/forecast_solar.markdown @@ -101,7 +101,7 @@ updates (based on a higher data resolution), you could [sign up for one of their plans](https://doc.forecast.solar/doku.php?id=account_models#compare_plans). To enable the use of the API key with this integration, go to {% my integrations %}. -On the Forecast.Solar integration, select the cogwheel, then select **Configure**. Enter the +Select the Forecast.Solar integration, then select **Configure**. Enter the API key for your account. ## Tweaking the estimations @@ -132,7 +132,6 @@ To adjust the configuration settings for your Forecast.Solar integration instance: 1. Browse to your Home Assistant instance. -1. Go to **{% my integrations title="Settings > Devices & Services" %}**. -1. If multiple instances of {{ name }} are configured, choose the instance you want to configure. -1. Select the cogwheel. -1. Select **Configure**. +2. Go to **{% my integrations title="Settings > Devices & Services" %}**. +3. If multiple instances of {{ name }} are configured, choose the instance you want to configure. +4. Select **Configure**. diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index e537d22acb0..95e52209093 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -29,11 +29,11 @@ The `freebox` integration allows you to observe and control [Freebox router](htt There is currently support for the following device types within Home Assistant: -* [Sensor](#sensor) with metrics for connection speed, internal temperature, free partition space and missed calls -* [Binary sensor](#binary-sensor) for monitoring Raid arrays health -* [Device tracker](#presence-detection) for connected devices -* [Switch](#switch) to control Wi-Fi -* [Camera](#camera) +- [Sensor](#sensor) with metrics for connection speed, internal temperature, free partition space and missed calls +- [Binary sensor](#binary-sensor) for monitoring Raid arrays health +- [Device tracker](#presence-detection) for connected devices +- [Switch](#switch) to control Wi-Fi +- [Camera](#camera) {% include integrations/config_flow.md %} @@ -90,10 +90,10 @@ To use cameras from the Freebox Delta, you will have to add "Gestion de l'alarme Only the routers with Freebox OS are supported: -* Freebox V8 also known as Freebox Pop -* Freebox V7 also known as Freebox Delta -* Freebox V6 also known as Freebox Revolution -* Freebox mini 4k +- Freebox V8 also known as Freebox Pop +- Freebox V7 also known as Freebox Delta +- Freebox V6 also known as Freebox Revolution +- Freebox mini 4k ## Presence Detection @@ -114,10 +114,10 @@ refreshes the devices states. This platform offers you sensors to monitor a Freebox router. The monitored metrics are: -* Internal temperature -* Upload and download rates (in KB/s) -* Free partition space of used disks -* Number of missed calls +- Internal temperature +- Upload and download rates (in KB/s) +- Free partition space of used disks +- Number of missed calls ## Binary sensor diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index 2cadc2b7c26..e00bd9fbc86 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -19,12 +19,12 @@ ha_iot_class: Local Polling ha_platforms: - binary_sensor - button - - image - device_tracker - diagnostics - sensor - switch - update + - image ha_ssdp: true ha_integration_type: integration --- @@ -82,7 +82,7 @@ If no password is given, it will be auto-generated. ## Integration options It is possible to change some behaviors through the integration options. -To change the settings, go to {% my integrations title="**Settings** > **Devices & Services**" %}. On the **AVM FRITZ!Box Tools** integration, select the cogwheel. Then select **Configure**. +To change the settings, go to {% my integrations title="**Settings** > **Devices & Services**" %}. Select the **AVM FRITZ!Box Tools** integration, then select **Configure**. - **Consider home**: Number of seconds that must elapse before considering a disconnected device "not at home". - **Enable old discovery method**: Needed on some scenarios like no mesh support (fw <= 6.x), mixed brands network devices or LAN switches. diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown index 7df6014cf04..a44dcc3d92f 100644 --- a/source/_integrations/frontier_silicon.markdown +++ b/source/_integrations/frontier_silicon.markdown @@ -23,12 +23,12 @@ Frontier Silicon is used by many different brands of radio manufacturers. Supported devices include, but are not limited to: -* Hama: [IR50], [IR110], [DIR3110] -* Medion: [Medion Radios] -* Silvercrest: [SIRD 14 C2 (archived website)] -* Teufel: [Radio 3sixty (2019)] -* Roberts: [Roberts Stream 94i] -* Some models from: Auna, Technisat, Revo, Pinell, Como Audio +- Hama: [IR50], [IR110], [DIR3110] +- Medion: [Medion Radios] +- Silvercrest: [SIRD 14 C2 (archived website)] +- Teufel: [Radio 3sixty (2019)] +- Roberts: [Roberts Stream 94i] +- Some models from: Auna, Technisat, Revo, Pinell, Como Audio This integration was developed and tested with a [Roberts Stream 94i]. diff --git a/source/_integrations/futurenow.markdown b/source/_integrations/futurenow.markdown index 00c73141b5f..b1807f5a6d5 100644 --- a/source/_integrations/futurenow.markdown +++ b/source/_integrations/futurenow.markdown @@ -12,8 +12,8 @@ ha_integration_type: integration --- The `futurenow` light platform allows you to use [P5](https://www.p5.hu/) FutureNow relay/dimmer units as lights. Currently supported units: -* [FutureNow FNIP-6x2AD](https://www.p5.hu/index.php/products/ethernet-modules/265-fnip-6x2ad) dimmer unit (outputs only) -* [FutureNow FNIP-8x10A](https://www.p5.hu/index.php/products/ethernet-modules/263-fnip-8x10a) relay unit (outputs only) +- [FutureNow FNIP-6x2AD](https://www.p5.hu/index.php/products/ethernet-modules/265-fnip-6x2ad) dimmer unit (outputs only) +- [FutureNow FNIP-8x10A](https://www.p5.hu/index.php/products/ethernet-modules/263-fnip-8x10a) relay unit (outputs only) ### Configuration Sample diff --git a/source/_integrations/gogogate2.markdown b/source/_integrations/gogogate2.markdown index d7a4cd9652b..6a78f841efe 100644 --- a/source/_integrations/gogogate2.markdown +++ b/source/_integrations/gogogate2.markdown @@ -9,7 +9,6 @@ ha_iot_class: Local Polling ha_domain: gogogate2 ha_codeowners: - '@vangorra' - - '@bdraco' ha_config_flow: true ha_homekit: true ha_platforms: diff --git a/source/_integrations/google.markdown b/source/_integrations/google.markdown index a80711dcca3..c0cfd25fadb 100644 --- a/source/_integrations/google.markdown +++ b/source/_integrations/google.markdown @@ -95,9 +95,9 @@ For example, your calendar named *Personal* is created as entity `calendar.perso Individual Calendar *Events* are what powering automations such as: -* Turn on a light at the *start* of the event named *Front Yard Light* -* Send a notification *5 minutes before the start of any event* -* Stop the media player *30 minutes after* the *end* of the event named *Exercise*. +- Turn on a light at the *start* of the event named *Front Yard Light* +- Send a notification *5 minutes before the start of any event* +- Stop the media player *30 minutes after* the *end* of the event named *Exercise*. See [Calendar Automations](/integrations/calendar#automation) for an overview, and read more about [Calendar Trigger Variables](/docs/automation/templating/#calendar) for the available information you can use in a condition or action such as the event `summary`, `description`, `location` and more. @@ -137,16 +137,16 @@ This will only be available if you have given Home Assistant `read-write` access A calendar `target` is selected with a [Target Selector](/docs/blueprint/selectors/#target-selector) and the `data` payload supports the following fields: -| Service data attribute | Optional | Description | Example | -| ---------------------- | -------- | ----------- | --------| -| `summary` | no | Acts as the title of the event. | Bowling -| `description` | yes | The description of the event. | Birthday bowling -| `start_date_time` | yes | The date and time the event should start. | 2019-03-10 20:00:00 -| `end_date_time` | yes | The date and time the event should end. | 2019-03-10 23:00:00 -| `start_date` | yes | The date the whole day event should start. | 2019-03-10 -| `end_date` | yes | The date the whole day event should end. | 2019-03-11 -| `in` | yes | Days or weeks that you want to create the event in. | "days": 2 -| `location` | yes | The location of the event. | Bowling center +| Service data attribute | Optional | Description | Example | +| ---------------------- | -------- | --------------------------------------------------- | ------------------- | +| `summary` | no | Acts as the title of the event. | Bowling | +| `description` | yes | The description of the event. | Birthday bowling | +| `start_date_time` | yes | The date and time the event should start. | 2019-03-10 20:00:00 | +| `end_date_time` | yes | The date and time the event should end. | 2019-03-10 23:00:00 | +| `start_date` | yes | The date the whole day event should start. | 2019-03-10 | +| `end_date` | yes | The date the whole day event should end. | 2019-03-11 | +| `in` | yes | Days or weeks that you want to create the event in. | "days": 2 | +| `location` | yes | The location of the event. | Bowling center |
    diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 3fdba659654..89a8bc040b2 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -83,10 +83,10 @@ To use Google Assistant, your Home Assistant configuration has to be [externally 9. This will start a download of a JSON file. 1. Rename the file to `SERVICE_ACCOUNT.JSON`. 2. Add this file to your config-folder. This will be the same folder as your `configuration.yaml`. - 12. Go back to [Google Cloud Platform](https://console.cloud.google.com/) and select **Close**. - 13. Then select **SAVE**. - 14. Go to the **Search products and resources** and search for **Homegraph API** and select it. - 15. Enable the HomeGraph API. + 10. Go back to [Google Cloud Platform](https://console.cloud.google.com/) and select **Close**. + 11. Then select **SAVE**. + 12. Go to the **Search products and resources** and search for **Homegraph API** and select it. + 13. Enable the HomeGraph API. 5. Add the `google_assistant` integration configuration to your `configuration.yaml` file and restart Home Assistant following the [configuration guide](#yaml-configuration) below. 6. Add services in the Google Home App (note that app versions may be slightly different). diff --git a/source/_integrations/google_cloud.markdown b/source/_integrations/google_cloud.markdown index c424d867dbd..884158516f5 100644 --- a/source/_integrations/google_cloud.markdown +++ b/source/_integrations/google_cloud.markdown @@ -30,9 +30,9 @@ tts: API key obtaining process described in corresponding documentation: -* [Text-to-speech](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) -* [Speech-to-text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) -* [Geocoding](https://developers.google.com/maps/documentation/geocoding/start) +- [Text-to-speech](https://cloud.google.com/text-to-speech/docs/quickstart-protocol) +- [Speech-to-text](https://cloud.google.com/speech-to-text/docs/quickstart-protocol) +- [Geocoding](https://developers.google.com/maps/documentation/geocoding/start) Basic instruction for all APIs: @@ -43,9 +43,9 @@ Basic instruction for all APIs: 5. Enable needed Cloud API visiting one of the links below or [APIs library](https://console.cloud.google.com/apis/library), selecting your `Project` from the dropdown list and clicking the `Continue` button: - * [Text-to-speech](https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com) - * [Speech-to-text](https://console.cloud.google.com/flows/enableapi?apiid=speech.googleapis.com) - * [Geocoding](https://console.cloud.google.com/flows/enableapi?apiid=geocoding-backend.googleapis.com) + - [Text-to-speech](https://console.cloud.google.com/flows/enableapi?apiid=texttospeech.googleapis.com) + - [Speech-to-text](https://console.cloud.google.com/flows/enableapi?apiid=speech.googleapis.com) + - [Geocoding](https://console.cloud.google.com/flows/enableapi?apiid=geocoding-backend.googleapis.com) 6. Set up authentication: 1. Visit [this link](https://console.cloud.google.com/apis/credentials/serviceaccountkey) @@ -67,7 +67,7 @@ Basic instruction for all APIs: The Cloud text-to-speech API is priced monthly based on the amount of characters to synthesize into audio sent to the service. | Feature | Monthly free tier | Paid usage | -|-------------------------------|---------------------------|-----------------------------------| +| ----------------------------- | ------------------------- | --------------------------------- | | Standard (non-WaveNet) voices | 0 to 4 million characters | $4.00 USD / 1 million characters | | WaveNet voices | 0 to 1 million characters | $16.00 USD / 1 million characters | diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown index 1785e109317..65cd64d6d5f 100644 --- a/source/_integrations/google_generative_ai_conversation.markdown +++ b/source/_integrations/google_generative_ai_conversation.markdown @@ -14,7 +14,7 @@ ha_integration_type: service The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://developers.generativeai.google/) in Home Assistant. -This conversation agent is unable to control your house. It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide Google Generative AI with the details of your house, which include areas, devices and their states. +This conversation agent is unable to control your house. The Google Generative AI conversation agent can be used in automations, but not as a [sentence trigger](/docs/automation/trigger/#sentence-trigger). It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide Google Generative AI with the details of your house, which include areas, devices and their states. This integration requires an API key to use, [which you can generate here](https://makersuite.google.com/app/apikey). diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index cd76006c36b..855d7590e68 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -71,19 +71,19 @@ url: The API is exposed to Home Assistant as a service called `habitica.api_call`. To call it you should specify this keys in service data: -| Service data attribute | Required | Type | Description | -|----------------------|--------|--------|----------------| -| `name` | yes | string | Habitica's username as per `configuration.yaml` entry. | -| `path` | yes | [string] | Items from API URL in form of an array with method attached at the end. See the example below. | -| `args` | no | map | Any additional JSON or URL parameter arguments. See the example below and [apidoc](https://habitica.com/apidoc/). | +| Service data attribute | Required | Type | Description | +| ---------------------- | -------- | -------- | ----------------------------------------------------------------------------------------------------------------- | +| `name` | yes | string | Habitica's username as per `configuration.yaml` entry. | +| `path` | yes | [string] | Items from API URL in form of an array with method attached at the end. See the example below. | +| `args` | no | map | Any additional JSON or URL parameter arguments. See the example below and [apidoc](https://habitica.com/apidoc/). | A successful call to this service will fire an event `habitica_api_call_success`. -| Event data attribute | Type | Description | -|----------------------|--------|----------------| -| `name` | string | Copied from service data attribute. | -| `path` | [string] | Copied from service data attribute. | -| `data` | map | Deserialized `data` field of JSON object Habitica's server returned in response to API call. For more info see the [API documentation](https://habitica.com/apidoc/). | +| Event data attribute | Type | Description | +| -------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | string | Copied from service data attribute. | +| `path` | [string] | Copied from service data attribute. | +| `data` | map | Deserialized `data` field of JSON object Habitica's server returned in response to API call. For more info see the [API documentation](https://habitica.com/apidoc/). | #### Let's consider some examples on how to call the service. @@ -92,12 +92,12 @@ Let's create a new task (a todo) for this user via Home Assistant. There is an [ To create a new task one should hit `https://habitica.com/api/v3/tasks/user` endpoint with `POST` request with a JSON object with task properties. So let's call the API on `habitica.api_call`. -* The `name` key becomes `xxxNotAValidNickxxx`. -* The `path` key is trickier. - * Remove `https://habitica.com/api/v3/` at the beginning of the endpoint URL. - * Split the remaining on slashes (/) and **append the lowercase method** at the end. - * You should get `["tasks", "user", "post"]`. To get a better idea of the API you are recommended to try all of the API calls in IPython console [using this package](https://github.com/ASMfreaK/habitipy/blob/master/README.md). -* The `args` key is more or less described in the [API documentation](https://habitica.com/apidoc/). +- The `name` key becomes `xxxNotAValidNickxxx`. +- The `path` key is trickier. + - Remove `https://habitica.com/api/v3/` at the beginning of the endpoint URL. + - Split the remaining on slashes (/) and **append the lowercase method** at the end. + - You should get `["tasks", "user", "post"]`. To get a better idea of the API you are recommended to try all of the API calls in IPython console [using this package](https://github.com/ASMfreaK/habitipy/blob/master/README.md). +- The `args` key is more or less described in the [API documentation](https://habitica.com/apidoc/). Combining all together: call `habitica.api_call` with data diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index 53b7631ebcf..8471327d2b9 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -64,7 +64,7 @@ Start an activity. Will start the default `activity` from `configuration.yaml` i | `entity_id` | no | Entity ID to target. | `activity` | yes | Activity ID or Activity Name to start. -##### Example +#### Example In the file 'harmony_REMOTENAME.conf' you can find the available activities, for example: diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index 615c8d30837..cf681a6dbb9 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -18,6 +18,12 @@ The `hdmi_cec` integration provides services that allow selecting the active dev ## CEC Setup +### Home Assistant OS + +To test if HDMI-CEC will work on your Home Assistant OS installation, you can use the official **CEC Scanner** add-on. Run this add-on to see if your hardware has HDMI-CEC capabilities and which devices are connected. Do not have this add-on **Start on boot** as it will interfere with the integration. + +Once you've run the add-on, you can use the resulting scan information to configure the integration. + ### Adapter The computer running Home Assistant must support CEC, and of course be connected via HDMI to a device also supporting CEC. You can purchase a [USB CEC adapter](https://www.pulse-eight.com/p/104/usb-hdmi-cec-adapter) to add support if necessary. Note that all Raspberry Pi models support CEC natively. @@ -56,13 +62,13 @@ If after symlinking and adding `hdmi_cec:` to your configuration you are getting ## Testing your installation -* Login to Raspberry Pi +- Login to Raspberry Pi ```bash ssh pi@your_raspberry_pi_ip ``` -* at the command line type: +- at the command line type: ```bash echo scan | cec-client -s -d 1 @@ -70,7 +76,7 @@ echo scan | cec-client -s -d 1 Note: to use this command you have to install cec-utils package. In Debian based should be: ```sudo apt install cec-utils``` -* This will give you the list of devices that are on the bus +- This will give you the list of devices that are on the bus ```bash opening a connection to the CEC adapter... @@ -252,5 +258,5 @@ value is ignored. ## Useful References -* [CEC overview](https://kwikwai.com/knowledge-base/the-hdmi-cec-bus/) -* [CEC-o-matic](https://www.cec-o-matic.com/) +- [CEC overview](https://kwikwai.com/knowledge-base/the-hdmi-cec-bus/) +- [CEC-o-matic](https://www.cec-o-matic.com/) diff --git a/source/_integrations/hexaom.markdown b/source/_integrations/hexaom.markdown index 834c7f940f2..f8dc82274b1 100644 --- a/source/_integrations/hexaom.markdown +++ b/source/_integrations/hexaom.markdown @@ -2,7 +2,7 @@ title: Hexaom Hexaconnect description: Connect and control your Hexaom Hexaconnect devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/hi_kumo.markdown b/source/_integrations/hi_kumo.markdown index 2daeeeb300b..e30c1cb547c 100644 --- a/source/_integrations/hi_kumo.markdown +++ b/source/_integrations/hi_kumo.markdown @@ -2,7 +2,7 @@ title: Hitachi Hi Kumo description: Connect and control your Hitachi Hi Kumo devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index 8517ae03d7b..0ee2da5df69 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -2,7 +2,7 @@ title: Hive description: Instructions on how to integrate Hive devices with Home Assistant. ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Climate - Hub diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 0031f04f0fe..27b32f6e10d 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -19,8 +19,8 @@ ha_iot_class: Local Push ha_bluetooth: true ha_config_flow: true ha_codeowners: - - "@Jc2k" - - "@bdraco" + - '@Jc2k' + - '@bdraco' ha_domain: homekit_controller ha_zeroconf: true ha_platforms: @@ -45,66 +45,77 @@ ha_integration_type: integration The [HomeKit](https://developer.apple.com/apple-home/) Device 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/) integration. +# Adding a HomeKit device -To see which devices have been discovered see the "Integrations" page in your Home Assistant dashboard. When you click on "Configure" you can enter your HomeKit PIN and the device should be added to your Home Assistant instance. If your device is currently paired with an Apple device via HomeKit, you will need to reset it in order to pair it with Home Assistant. Once Home Assistant is configured to work with the device, you can export it back to Siri and Apple Home with the [`HomeKit`](/integrations/homekit/) integration. +There are different methods to add a HomeKit device to Home Assistant: -## Supported devices +- [via Ethernet or Wi-Fi](#adding-a-homekit-device-via-ethernet-or-wi-fi) +- [via Bluetooth](#adding-a-homekit-device-through-bluetooth) +- via Thread + - [by using Home Assistant’s preferred Thread network](#adding-a-homekit-device-to-a-thread-network-via-home-assistant) + - [by using Apple Thread border router](#adding-a-homekit-device-via-apple-thread-border-router) -There is currently support for the following device types within Home Assistant: +## Adding a HomeKit device via Ethernet or Wi-Fi -- Alarm Control Panel (HomeKit security system) -- Climate (HomeKit thermostats and air conditioners) -- Cover (HomeKit garage door openers, windows, or window coverings) -- Light (HomeKit lights) -- Lock (HomeKit lock) -- Switch (HomeKit switches, outlets and valves) -- Binary Sensor (HomeKit motion, contact, occupancy, carbon monoxide and smoke sensors) -- Sensor (HomeKit humidity, temperature, co2 and light level sensors) -- Fan -- Air Quality -- Humidifier (HomeKit humidifiers and dehumidifiers) -- Automation Triggers (HomeKit 'stateless' accessories like buttons, remotes and doorbells) - -
    - -If your device is not on this list then you may still be able to pair it, and it will be visible in the Device Registry. But Home Assistant may not create entities for it. - -
    - -HomeKit IP accessories for these device types may work with some caveats: - -- If the device is Wi-Fi based and has no physical controls or screen then you may need an Apple HomeKit device like an iPhone or iPad to get the accessory onto your Wi-Fi network. For example, for a Koogeek LS1 you must add the accessory to HomeKit on your iOS device, then remove it from the iOS device. This leaves the LS1 in an unpaired state but still on your Wi-Fi. Home Assistant can then find it and pair with it. -- You need to know the HomeKit PIN. There is no way to recover this if you do not have it. In this case, you will need to contact the manufacturer to see what options you have. - -The integration will poll your devices, but it will also automatically enable push updates for accessories that support it. - -## Adding a HomeKit device through Bluetooth - -The integration will automatically discover Bluetooth devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. Bluetooth devices may take significantly longer to pair than IP devices. Battery-powered devices may require pressing a button on the device to wake it before pairing can be successful. +The HomeKit controller integration automatically detects HomeKit [compatible devices](#supported-devices) on your network when they are ready to pair. ### Prerequisites +- If you do not have the [`default_config`](/integrations/default_config/) integration, add [`zeroconf`](/integrations/zeroconf/) to your `configuration.yaml` file. +- Find your HomeKit pairing code. The code is on the device itself, or on the packaging. If your device has a screen, it may be shown on screen. + - There is no way to recover this if you do not have it. In this case, you will need to contact the manufacturer to see what options you have. +- Make sure your device is powered up. +- Make sure the device is on your network, but not paired with another HomeKit controller. Depending on the device, you need to follow a different set of steps: + - If your device is not already in your network: Join the device to your network: + - Follow the instructions of the manufacturer on how to join the device to the network + - If the device is HomeKit only (for example the Koogeek LS1 light strip), pair it with the Apple Home app, then follow the next step. + - If your device is in your network but is paired with an Apple device via HomeKit: **Remove** the device from the Apple Home app. + - Otherwise you won't be able to pair it with Home Assistant. + - **Explanation:** Adding the device to the Home app and then removing it again has two effects: + - It adds the device to your network. It stays in the network even after you removed it from the app. + - Removing the device from the app opens it up for pairing with Home Assistant's HomeKit Controller integration directly. HomeKit devices can only be paired to a single controller at once. + + +### To add a HomeKit device via Ethernet or Wi-Fi + +1. The device should have been discovered under **{% my integrations title="Settings > Devices & Services" %}**. +2. On the HomeKit integration, select **Configure**. + + ![HomeKit integration](/images/integrations/homekit_controller/homekit_controller_add_01.png) +3. Enter your HomeKit pairing code. + - Add the device to a room and select **Finish**. + - The device should now be added to your Home Assistant instance. +4. Once Home Assistant is configured to work with the device, you can export it back to Siri and Apple Home with the [`HomeKit`](/integrations/homekit/) integration. + +## Adding a HomeKit device through Bluetooth + +You can add a HomeKit [compatible device](#supported-devices) to Home Assistant via [Bluetooth](/integrations/bluetooth). + +### Prerequisites + +- Find your HomeKit pairing code. The code is on the device itself, or on the packaging. If your device has a screen, it may be shown on screen. + - There is no way to recover this if you do not have it. In this case, you will need to contact the manufacturer to see what options you have. - If your Home Assistant instance does not natively support Bluetooth, use an ESPHome Bluetooth proxy. - A proxy can also be helpful if your Home Assistant device is too far away from the device you are trying to pair. - If your HomeKit device has been used with Thread before, or is still paired with iOS, reset the device. - HomeKit devices can only be paired to a single controller at once. - If it has been in a Thread network before, the device might remember the Thread credentials of a different network. A reset makes sure the device is not connected to any Thread network. -## To add a HomeKit device through Bluetooth +### To add a HomeKit device through Bluetooth 1. Power up your HomeKit device. - If you have Bluetooth enabled, the device should be discovered under **{% my integrations title="Settings > Devices & Services" %}**. -1. Under **{% my integrations title="Settings > Devices & Services" %}**, on the HomeKit integration, select **Configure**. - ![HomeKit integration](/images/integrations/homekit_controller/homekit_controller_add_01.png) -1. To pair the device, enter the HomeKit pairing code. The code is on the device itself or the packaging. +2. On the HomeKit integration, select **Configure**. + + ![HomeKit integration](/images/integrations/homekit_controller/homekit_controller_add_01.png) +3. To pair the device, enter the HomeKit pairing code. - To pair a battery-powered device, you may need to press a button on the device to wake it. - Bluetooth devices may take significantly longer to pair than IP devices. - Add the device to a room and **Finish**. ## Adding a HomeKit device to a Thread network via Home Assistant -There are two methods to add a HomeKit device to a Thread network: +There are two methods to add a HomeKit [compatible device](#supported-devices) to a Thread network: - via Home Assistant's preferred Thread network - via [Apple Thread border router](#adding-a-homekit-device-to-home-assistant-via-apple-thread-border-router) @@ -125,22 +136,22 @@ This section describes how to add it via Home Assistant's preferred Thread netwo ### To add a HomeKit device to a Thread network via Home Assistant 1. To open the device configuration page, on the **HomeKit** integration, select the **device**. -1. Under **Diagnostic**, you can see the **Thread Status** as **Disabled**. +2. Under **Diagnostic**, you can see the **Thread Status** as **Disabled**. ![Device configuration page](/images/integrations/homekit_controller/homekit_controller_add_02.png) -1. To enable Thread, under **Configuration**, select **Press**. This will provision the preferred Thread credentials. +3. To enable Thread, under **Configuration**, select **Press**. This will provision the preferred Thread credentials. - The status has now changed: - Depending on the device type, the mesh size and health, the Thread status can be **Child**, **Router**, or **Leader**. ![Thread status](/images/integrations/homekit_controller/homekit_controller_add_02.png) - That's it. Your HomeKit device now communicates via Thread. -## Adding a HomeKit device to Home Assistant via Apple Thread border router +## Adding a HomeKit device via Apple Thread border router -There are two methods to add a HomeKit device to a Thread network: +There are two methods to add a HomeKit [compatible device](#supported-devices) to a Thread network: - via [Home Assistant's preferred Thread network](#adding-a-homekit-device-to-a-thread-network-via-home-assistant) - via Apple Thread border router -This section describes how to add a HomeKit device using an Apple Thread border router device such as a HomePod mini. +This section describes how to add a HomeKit [compatible device](#supported-devices) using an Apple Thread border router device such as a HomePod mini. ### Prerequisites @@ -149,26 +160,51 @@ This section describes how to add a HomeKit device using an Apple Thread border - Make sure your Home Assistant instance is on the same network (LAN) as the border router. - Make sure the HomeKit device has been paired in the Apple Home app (using the iOS Home app). -### To add a HomeKit device to Home Assistant via Apple Thread border router +### To add a HomeKit device via Apple Thread border router 1. Remove the HomeKit device from the Apple Home app. Don't reset the device. - This leaves the Thread network details on the HomeKit device. - The device will be automatically discovered by the HomeKit controller integration in Home Assistant. - It will appear as a discovered device over Thread. -1. Under **{% my integrations title="Settings > Devices & Services" %}**, on the HomeKit integration, select **Configure**. +2. Under **{% my integrations title="Settings > Devices & Services" %}**, on the HomeKit integration, select **Configure**. ![HomeKit integration](/images/integrations/homekit_controller/homekit_controller_add_01.png) -1. To pair the device, enter the HomeKit pairing code. The code is on the device itself or the packaging. +3. To pair the device, enter the HomeKit pairing code. The code is on the device itself or the packaging. - To pair a battery-powered device, you may need to press a button on the device to wake it. - Bluetooth devices may take significantly longer to pair than IP devices. - Add the device to a room and **Finish**. -1. To open the device configuration page, on the **HomeKit** integration, select the **device**. -1. Under **Diagnostic**, check the status: +4. To open the device configuration page, on the **HomeKit** integration, select the **device**. +5. Under **Diagnostic**, check the status: - Depending on the device type, the mesh size and health, the Thread status can be **Child**, **Router**, or **Leader**. ![Thread status](/images/integrations/homekit_controller/homekit_controller_add_02.png) - That's it. Your HomeKit device now communicates via Thread. +## Supported devices + +There is currently support for the following device types (also called *domains*) within Home Assistant. They are listed with their default types. + +- Alarm Control Panel (HomeKit security system) +- Climate (HomeKit thermostats and air conditioners) +- Cover (HomeKit garage door openers, windows, or window coverings) +- Light (HomeKit lights) +- Lock (HomeKit lock) +- Switch (HomeKit switches, outlets and valves) +- Binary Sensor (HomeKit motion, contact, occupancy, carbon monoxide and smoke sensors) +- Sensor (HomeKit humidity, temperature, co2 and light level sensors) +- Fan +- Air Quality +- Humidifier (HomeKit humidifiers and dehumidifiers) +- Automation Triggers (HomeKit 'stateless' accessories like buttons, remotes and doorbells) + +
    + + If your device is not on this list then you may still be able to pair it, and it will be visible in the Device Registry. But Home Assistant may not create entities for it. + +
    + +The integration will enable push updates. Devices that connect through Wi-Fi or Ethernet may fall back to only polling if the connection is unstable. + ## 'Stateless' switches and sensors Some HomeKit devices (like buttons, remotes and doorbells) don't have sensors that can be read like a normal HomeKit device - they only inform Home Assistant when something happens. This means Home Assistant can't show an entity for them, as they have no state. But they are available for use as [device automations](/integrations/device_automation/). diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 93cb494457f..3e349c200dc 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -35,16 +35,16 @@ The [HomematicIP](https://www.homematic-ip.com/) integration platform is used as There is currently support for the following device types within Home Assistant: -* Alarm -* Binary Sensor -* Button -* Climate -* Cover -* Light -* Lock -* Sensor -* Switch -* Weather +- Alarm +- Binary Sensor +- Button +- Climate +- Cover +- Light +- Lock +- Sensor +- Switch +- Weather {% include integrations/config_flow.md %} @@ -89,112 +89,112 @@ Within this delay the device registration should be completed in the App, otherw ## Implemented and tested devices -* homematicip_cloud.alarm_control_panel - * Combined Alarm Control Panal with INTERNAL and EXTERNAL Security zones (*HmIP-SecurityZone*) +- homematicip_cloud.alarm_control_panel + - Combined Alarm Control Panal with INTERNAL and EXTERNAL Security zones (*HmIP-SecurityZone*) -* homematicip_cloud.binary_sensor - * Access Point Cloud Connection (*HmIP-HAP, HmIP-HAP-B1*) - * Acceleration Sensor (*HMIP-SAM*) - * Inclination and vibration Sensor (*HMIP-STV*) - * Window and door contact (*HmIP-SWDO, HmIP-SWDO-PL, HmIP-SWDO-I, HmIP-SWDM, HmIP-SWDM-B2*) - * Contact Interface flush-mount – 1x channel (*HmIP-FCI1*) - * Contact Interface flush-mount – 6x channels (*HmIP-FCI6*) - * Contact Interface (*HmIP-SCI*) - * Window Rotary Handle Sensor (*HmIP-SRH*) - * Smoke sensor and alarm (*HmIP-SWSD*) - * Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*) - * Motion Detector with Brightness Sensor - outdoor (*HmIP-SMO*) - * Presence Sensor – indoor (*HmIP-SPI*) - * Rain Sensor (*HmIP-SRD*) - * Water Sensor (*HmIP-SWD*) - * Remote Control - 8x buttons (*HmIP-RC8*) (battery only) - * Wall-mount Remote Control - 2x buttons (*HmIP-WRC2*) (battery only) - * Wall-mount Remote Control - flat - 2x buttons (*HmIP-WRCC2*) (battery only) - * Wall-mount Remote Control - 6x buttons (*HmIP-WRC6*) (battery only) - * Key Ring Remote Control - 4x buttons (*HmIP-KRC4*) (battery only) - * Key Ring Remote Control - alarm (*HmIP-KRCA*) (battery only) - * Alarm Siren (*HmIP-ASIR, -B1*) (battery only) - * Remote Control for brand switches – 2x buttons (*HmIP-BRC2*) (battery only) - * Pluggable Power Supply Monitoring (*HmIP-PMFS*) - * Wired Inbound module – 32x channels (*HMIPW-DRI32*) +- homematicip_cloud.binary_sensor + - Access Point Cloud Connection (*HmIP-HAP, HmIP-HAP-B1*) + - Acceleration Sensor (*HMIP-SAM*) + - Inclination and vibration Sensor (*HMIP-STV*) + - Window and door contact (*HmIP-SWDO, HmIP-SWDO-PL, HmIP-SWDO-I, HmIP-SWDM, HmIP-SWDM-B2*) + - Contact Interface flush-mount – 1x channel (*HmIP-FCI1*) + - Contact Interface flush-mount – 6x channels (*HmIP-FCI6*) + - Contact Interface (*HmIP-SCI*) + - Window Rotary Handle Sensor (*HmIP-SRH*) + - Smoke sensor and alarm (*HmIP-SWSD*) + - Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*) + - Motion Detector with Brightness Sensor - outdoor (*HmIP-SMO*) + - Presence Sensor – indoor (*HmIP-SPI*) + - Rain Sensor (*HmIP-SRD*) + - Water Sensor (*HmIP-SWD*) + - Remote Control - 8x buttons (*HmIP-RC8*) (battery only) + - Wall-mount Remote Control - 2x buttons (*HmIP-WRC2*) (battery only) + - Wall-mount Remote Control - flat - 2x buttons (*HmIP-WRCC2*) (battery only) + - Wall-mount Remote Control - 6x buttons (*HmIP-WRC6*) (battery only) + - Key Ring Remote Control - 4x buttons (*HmIP-KRC4*) (battery only) + - Key Ring Remote Control - alarm (*HmIP-KRCA*) (battery only) + - Alarm Siren (*HmIP-ASIR, -B1*) (battery only) + - Remote Control for brand switches – 2x buttons (*HmIP-BRC2*) (battery only) + - Pluggable Power Supply Monitoring (*HmIP-PMFS*) + - Wired Inbound module – 32x channels (*HMIPW-DRI32*) -* homematicip_cloud.button - * Wall Mounted Garage Door Controller (*HmIP-WGC*) +- homematicip_cloud.button + - Wall Mounted Garage Door Controller (*HmIP-WGC*) -* homematicip_cloud.climate - * Climate group (*HmIP-HeatingGroup*) - * This includes temperature/humidity measures for climate devices of a room delivered by: - * Wall-mounted thermostat (*HmIP-WTH, HmIP-WTH-2, HmIP-WTH-B*) - * Brand Wall-mounted thermostat (*HmIP-BWTH, HmIP-BWTH-24*) - * Radiator thermostat (*HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-C*) - should also work with (*HmIP-eTRV-2-UK, HmIP-eTRV-2-B, HmIP-eTRV-2-B1*) - * Temperature and humidity sensor (*HmIP-STH*) - * Temperature and humidity Sensor with display (*HmIP-STHD*) - * Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) - * Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) - * There is no need to directly support the following devices by Home Assistant, because their integration is done by the required wall thermostats: - * Floor Heating Actuator – 6x channels, 230V (*HMIP-FAL230-C6*) - * Floor Heating Actuator – 10x channels, 230V (*HMIP-FAL230-C10*) - * Floor Heating Actuator – 6x channels, 24V (*HMIP-FAL24-C6*) - * Floor Heating Actuator – 10x channels, 24V (*HMIP-FAL24-C10*) - * Floor Heating Actuator – 12x channels, motorized (*HMIP-FALMOT-C12*) +- homematicip_cloud.climate + - Climate group (*HmIP-HeatingGroup*) + - This includes temperature/humidity measures for climate devices of a room delivered by: + - Wall-mounted thermostat (*HmIP-WTH, HmIP-WTH-2, HmIP-WTH-B*) + - Brand Wall-mounted thermostat (*HmIP-BWTH, HmIP-BWTH-24*) + - Radiator thermostat (*HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-C*) - should also work with (*HmIP-eTRV-2-UK, HmIP-eTRV-2-B, HmIP-eTRV-2-B1*) + - Temperature and humidity sensor (*HmIP-STH*) + - Temperature and humidity Sensor with display (*HmIP-STHD*) + - Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) + - Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) + - There is no need to directly support the following devices by Home Assistant, because their integration is done by the required wall thermostats: + - Floor Heating Actuator – 6x channels, 230V (*HMIP-FAL230-C6*) + - Floor Heating Actuator – 10x channels, 230V (*HMIP-FAL230-C10*) + - Floor Heating Actuator – 6x channels, 24V (*HMIP-FAL24-C6*) + - Floor Heating Actuator – 10x channels, 24V (*HMIP-FAL24-C10*) + - Floor Heating Actuator – 12x channels, motorized (*HMIP-FALMOT-C12*) -* homematicip_cloud.cover - * Shutter actuator for brand-mount (*HmIP-BROLL*) - * Shutter actuator for flush-mount (*HmIP-FROLL*) - * Blind Actuator for brand switches (*HmIP-BBL*) - * Blind Actuator for DIN rail mount – 4x channels (*HMIP-DRBLI4*) - * Blind Actuator for flush-mount (*HmIP-FBL*) - * Garage door module for Tormatic (*HmIP-MOD_TM*) - * Module for Hoermann drives (*HMIP-MOD-HO*) - * Hunter Douglas & erfal window blinds (*HMIP-HDM1*) +- homematicip_cloud.cover + - Shutter actuator for brand-mount (*HmIP-BROLL*) + - Shutter actuator for flush-mount (*HmIP-FROLL*) + - Blind Actuator for brand switches (*HmIP-BBL*) + - Blind Actuator for DIN rail mount – 4x channels (*HMIP-DRBLI4*) + - Blind Actuator for flush-mount (*HmIP-FBL*) + - Garage door module for Tormatic (*HmIP-MOD_TM*) + - Module for Hoermann drives (*HMIP-MOD-HO*) + - Hunter Douglas & erfal window blinds (*HMIP-HDM1*) -* homematicip_cloud.light - * Switch actuator and meter for brand switches (*HmIP-BSM*) - * Dimming actuator for brand switches (*HmIP-BDT*) - * Dimming actuator flush-mount (*HmIP-FDT*) - * Pluggable Dimmer – trailing edge (*HmIP-PDT*) - * Switch Actuator for brand switches – with signal lamp (*HmIP-BSL*) - * Wired Dimmer module – 3x channels (*HMIPW-DRD3*) +- homematicip_cloud.light + - Switch actuator and meter for brand switches (*HmIP-BSM*) + - Dimming actuator for brand switches (*HmIP-BDT*) + - Dimming actuator flush-mount (*HmIP-FDT*) + - Pluggable Dimmer – trailing edge (*HmIP-PDT*) + - Switch Actuator for brand switches – with signal lamp (*HmIP-BSL*) + - Wired Dimmer module – 3x channels (*HMIPW-DRD3*) -* homematicip_cloud.lock - * Door Lock Drive - currently, usage just without a pin is possible (*HmIP-DLD*) +- homematicip_cloud.lock + - Door Lock Drive - currently, usage just without a pin is possible (*HmIP-DLD*) -* homematicip_cloud.sensor - * Access Point Duty Cycle (*HmIP-HAP, HmIP-HAP-B1*) - * Wall Mounted Thermostat (*HmIP-WTH, HmIP-WTH2, HmIP-WTH-B*) - * Radiator thermostat (*HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-C*) - should also work with (*HmIP-eTRV-2-UK, HmIP-eTRV-2-B, HmIP-eTRV-2-B1*) - * Temperature and Humidity Sensor without display - indoor (*HmIP-STH*) - * Temperature and Humidity Sensor with display - indoor (*HmIP-STHD*) - * Temperature and Humidity sensor - outdoor (*HmIP-STHO, -A*) - * Temperature sensor with external probes - 2-way (*HmIP-STE2-PCB*) - * Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*) - * Motion Detector with Brightness Sensor - outdoor (*HmIP-SMO*) - * Presence Sensor – indoor (*HmIP-SPI*) - * Light Sensor - outdoor (*HmIP-SLO*) - * Passage Sensor with Direction Recognition (*HmIP-SPDR*) (delta counter) - * Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) - * Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) +- homematicip_cloud.sensor + - Access Point Duty Cycle (*HmIP-HAP, HmIP-HAP-B1*) + - Wall Mounted Thermostat (*HmIP-WTH, HmIP-WTH2, HmIP-WTH-B*) + - Radiator thermostat (*HmIP-eTRV, HmIP-eTRV-2, HmIP-eTRV-C*) - should also work with (*HmIP-eTRV-2-UK, HmIP-eTRV-2-B, HmIP-eTRV-2-B1*) + - Temperature and Humidity Sensor without display - indoor (*HmIP-STH*) + - Temperature and Humidity Sensor with display - indoor (*HmIP-STHD*) + - Temperature and Humidity sensor - outdoor (*HmIP-STHO, -A*) + - Temperature sensor with external probes - 2-way (*HmIP-STE2-PCB*) + - Motion Detector with Brightness Sensor - indoor (*HmIP-SMI*) + - Motion Detector with Brightness Sensor - outdoor (*HmIP-SMO*) + - Presence Sensor – indoor (*HmIP-SPI*) + - Light Sensor - outdoor (*HmIP-SLO*) + - Passage Sensor with Direction Recognition (*HmIP-SPDR*) (delta counter) + - Alpha IP Wall Thermostat Display (*ALPHA-IP-RBG*) + - Alpha IP Wall Thermostat Display analog (*ALPHA-IP-RBGa*) -* homematicip_cloud.switch - * Pluggable Switch (*HmIP-PS*) - * Pluggable Switch and Meter (*HmIP-PSM*) - should also work with (*HmIP-PSM-CH, HmIP-PSM-IT, HmIP-PSM-UK, HmIP-PSM-PE*) - * Switch Actuator and Meter – flush-mount (*HmIP-FSM, HmIP-FSM16*) - * Switch Actuator with Push-button Input – flush-mount (*HmIP-FSI16*) - * Open Collector Module Receiver - 8x channels (*HmIP-MOD-OC8*) - * Multi IO Box - 2x (*HmIP-MIOB*) - * Switch Circuit Board - 1x channels (*HmIP-PCBS*) - * Switch Circuit Board - 2x channels (*HmIP-PCBS2*) - * Printed Circuit Board Switch Battery (*HmIP-PCBS-BAT*) - * Switch Actuator for heating systems – 2x channels (*HmIP-WHS2*) - * Wired Switch Actuator – 8x channels (*HMIPW-DRS8*) - * Switch Actuator for DIN rail mount – 4x channels (*HMIP-DRSI4*) - * Switch Actuator for DIN rail mount – 1x channels (*HMIP-DRSI1*) - * Switch Actuator - 2x channels (*HmIP-BS2*) +- homematicip_cloud.switch + - Pluggable Switch (*HmIP-PS*) + - Pluggable Switch and Meter (*HmIP-PSM*) - should also work with (*HmIP-PSM-CH, HmIP-PSM-IT, HmIP-PSM-UK, HmIP-PSM-PE*) + - Switch Actuator and Meter – flush-mount (*HmIP-FSM, HmIP-FSM16*) + - Switch Actuator with Push-button Input – flush-mount (*HmIP-FSI16*) + - Open Collector Module Receiver - 8x channels (*HmIP-MOD-OC8*) + - Multi IO Box - 2x (*HmIP-MIOB*) + - Switch Circuit Board - 1x channels (*HmIP-PCBS*) + - Switch Circuit Board - 2x channels (*HmIP-PCBS2*) + - Printed Circuit Board Switch Battery (*HmIP-PCBS-BAT*) + - Switch Actuator for heating systems – 2x channels (*HmIP-WHS2*) + - Wired Switch Actuator – 8x channels (*HMIPW-DRS8*) + - Switch Actuator for DIN rail mount – 4x channels (*HMIP-DRSI4*) + - Switch Actuator for DIN rail mount – 1x channels (*HMIP-DRSI1*) + - Switch Actuator - 2x channels (*HmIP-BS2*) -* homematicip_cloud.weather - * Weather Sensor – basic (*HmIP-SWO-B*) - * Weather Sensor – plus (*HmIP-SWO-PL*) - * Weather Sensor – pro (*HmIP-SWO-PR*) +- homematicip_cloud.weather + - Weather Sensor – basic (*HmIP-SWO-B*) + - Weather Sensor – plus (*HmIP-SWO-PL*) + - Weather Sensor – pro (*HmIP-SWO-PR*) ## What to do, if a device is missing in Home Assistant @@ -322,13 +322,13 @@ action: Push button devices are only available with a battery sensor. This is due to a limitation of the vendor API (eq3). It's not possible to detect a key press event on these devices at the moment. - * Remote Control - 8x buttons (*HmIP-RC8*) - * Wall-mount Remote Control for brand switches - 2x buttons (*HmIP-BRC2*) - * Motion Detector for 55mm frames - indoor (HmIP-SMI55)(Push button) - * Wall-mount Remote Control - 2x buttons (*HmIP-WRC2*) - * Wall-mount Remote Control - flat - 2x buttons (*HmIP-WRCC2*) - * Wall-mount Remote Control - 6x buttons (*HmIP-WRC6*) - * Key Ring Remote Control - 4x buttons (*HmIP-KRC4*) - * Key Ring Remote Control - alarm (*HmIP-KRCA*) - * Wall-mount Remote Control – flat (*HmIP-WRCC2*) - * Rotary Button (*HmIP-WRCR*) + - Remote Control - 8x buttons (*HmIP-RC8*) + - Wall-mount Remote Control for brand switches - 2x buttons (*HmIP-BRC2*) + - Motion Detector for 55mm frames - indoor (HmIP-SMI55)(Push button) + - Wall-mount Remote Control - 2x buttons (*HmIP-WRC2*) + - Wall-mount Remote Control - flat - 2x buttons (*HmIP-WRCC2*) + - Wall-mount Remote Control - 6x buttons (*HmIP-WRC6*) + - Key Ring Remote Control - 4x buttons (*HmIP-KRC4*) + - Key Ring Remote Control - alarm (*HmIP-KRCA*) + - Wall-mount Remote Control – flat (*HmIP-WRCC2*) + - Rotary Button (*HmIP-WRCR*) diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index be125853c1b..ef52cbb18f5 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -33,7 +33,7 @@ Home Assistant is integrated with the following devices through [https://mytotal - Thermostats - Every thermostat is exposed as a climate entity - - Known working devices: [TH6320R1004](https://customer.resideo.com/en-US/Pages/Product.aspx?cat=HonECC%2520Catalog&pid=TH6320R1004/U), [RTH9585WF1004](https://www.honeywellhome.com/us/en/products/air/thermostats/wifi-thermostats/wifi-color-touchscreen-thermostat-rth9585wf1004-u/) + - Known working devices: [TH6320R1004](https://customer.resideo.com/en-US/Pages/Product.aspx?cat=HonECC%2520Catalog&pid=TH6320R1004/U), [RTH9585WF1004](https://www.honeywellhome.com/us/en/products/air/thermostats/wifi-thermostats/wifi-color-touchscreen-thermostat-rth9585wf1004-u/), [RTH6580WF](https://www.honeywellhome.com/us/en/products/air/thermostats/wifi-thermostats/wifi-7-day-programmable-thermostat-rth6580wf1001-u1/) - Sensors - A Temperature sensor entity. - A Humidity sensor entity. diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index 8af8f80817a..c7055c289ab 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -51,12 +51,12 @@ vapid_email: The `html5` platform can only function if all of the following requirements are met: -* You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. Or you added your Home Assistant instance to your home screen on iOS 16.4 or higher. -* Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant. -* If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. -* If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e., `pywebpush` probably won't automatically install). -* You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running NGINX in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self-signed). -* You are willing to accept the notification permission in your browser. +- You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. Or you added your Home Assistant instance to your home screen on iOS 16.4 or higher. +- Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant. +- If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. +- If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e., `pywebpush` probably won't automatically install). +- You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running NGINX in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self-signed). +- You are willing to accept the notification permission in your browser. ### Configuring the platform @@ -224,7 +224,7 @@ During the lifespan of a single push notification, Home Assistant will emit a fe Common event payload parameters are: | Parameter | Description | -|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `action` | The `action` key that you set when sending the notification of the action clicked. Only appears in the `clicked` event. | | `data` | The data dictionary you originally passed in the notify payload, minus any parameters that were added to the HTML5 notification (`actions`, `badge`, `body`, `dir`, `icon`, `image`, `lang`, `renotify`, `requireInteraction`, `tag`, `timestamp`, `vibrate`). | | `tag` | The unique identifier of the notification. Can be overridden when sending a notification to allow for replacing existing notifications. | diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index 169415b9355..0156bd9c8ad 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -34,24 +34,32 @@ All configuration options are offered from the frontend. Choose `Options` under relevant entry on the `Integrations` page. Options supported: -- **Priority**: The priority for color and effects, make sure this is lower then the streaming sources priority in hyperion itself (typically lower than 200 is appropriate). +- **Priority**: The priority for color and effects. Hyperion will choose the source + with the lowest priority number as active input. If you have other sources (not + originating from Home Assistant) configured, make sure this option is lower than + those sources priority in Hyperion itself (typically lower than 200 is appropriate). - **Effects to hide**: An optional selection of effects to hide from the light effects list. New effects added to the Hyperion server will be shown by default. + ## Hyperion Instances This integration supports multiple Hyperion instances running on a single Hyperion server. As instances are added/removed on the Hyperion UI, they will automatically be added/removed from Home Assistant. +## Light Entity + +The default light entity will send data to Hyperion on the priority you have configured +during integration setup. When turned off, it will clear the configured priority again. +Other light sources independent of Home Assistant configured in Hyperion might still be +active and cause light to be emitted. In order to turn the light output off entirely +regardless of active light sources, you can enable the LED device entity that acts as +a global switch (see Advanced Entities). + ## Effects -The effect list is dynamically pulled from the Hyperion server. The following -extra effects will be available: - -- 'Boblight Server': Use a 'Boblight Server' configured in Hyperion. -- 'Platform Capture': Use a 'Platform Capture' grabber that is configured in Hyperion. -- 'USB Capture': Use a 'USB Capture' device that is configured in Hyperion. -- 'Solid': Use a solid color only. +The effect list is dynamically pulled from the Hyperion server. Additionally, there +will be a 'Solid' effect to switch (back) to showing a solid color only. ## Hyperion Camera @@ -70,20 +78,28 @@ advanced usecases. These entities expose 'raw' underlying Hyperion API component improved extensibility and interoperability which are particularly useful in cases where there are multiple Hyperion server clients (of which Home Assistant is one). -Provided advanced entities: - -- `light.[instance]_priority`: A "priority" light that acts exclusively on a given - Hyperion priority. Only color/effects (and not components) are available in this light. - Turning this light off will set a black color at this given priority rather than - turning the light off in absolute terms. -- `switch.[instance]_component_[component]`: A switch to turn on/off the relevant - underlying Hyperion component as shown on the Hyperion server `Remote Control` page - under `Component Control`. This allows fine grained control over sources (e.g. `USB Capture`) and - Hyperion functionality (e.g. `Blackbar Detection`). - These entities may be enabled by visiting the `Integrations` page, choosing the relevant entity and toggling `Enable entity`, followed by `Update`. +### Control over external sources: Screen capture and USB capture + +Provided entities for controlling external sources: + +- `switch.[instance]_component_platform_capture`: Toggles the `Screen Capture` source +- `switch.[instance]_component_usb_capture`: Toggles the `USB Capture` source + +### Control over Hyperion functionality + +Further advanced entities to control Hyperion functionality: + +- There will be additional `switch.[instance]_component_[component]` entities that can + be used to toggle the relevant underlying Hyperion component as shown on the Hyperion + server `Remote Control` page under `Components Control`. This allows fine grained + control over Hyperion functionality (e.g. `Blackbar Detection`) or device + state (`LED Device`). +- `switch.[instance]_component_all`: refers to the entire Hyperion instance state that + controls the toggle on the Hyperion server `Dashboard` page. + ## Examples To start Hyperion with an effect, use the following automation: @@ -135,9 +151,27 @@ To capture the screen on a USB capture device, when playing something on a media entity_id: media_player.plex to: "playing" action: - - service: light.turn_on + - service: switch.turn_on target: - entity_id: light.hyperion - data: - effect: "USB Capture" + entity_id: switch.[instance]_component_usb_capture +``` + +To toggle the LED device together with the light entity in order to turn light output on or off for all sources. In this example both entities are turned on together, create another automation with the values reversed for turning both off: + +```yaml +- alias: "Turn LED device on when Hyperion light is activated" + trigger: + - platform: state + entity_id: + - light.hyperion + from: "off" + to: "on" + condition: + - condition: state + entity_id: switch.[instance]_component_led_device + state: "off" + action: + - service: switch.turn_on + target: + entity_id: switch.[instance]_component_led_device ``` diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown index 14cab37919e..0ad3e5ec633 100644 --- a/source/_integrations/ibeacon.markdown +++ b/source/_integrations/ibeacon.markdown @@ -57,7 +57,7 @@ iBeacons with a randomized MAC address will be combined into a single set of ent The integration will create an Estimated Distance sensor by default. This estimated distance assumes perfect RF conditions and line of sight between the iBeacon and the Bluetooth adapter. Estimated distance is generally only helpful to tell if the iBeacon is in the immediate vicinity, near, or far away from the adapter. If the system has multiple adapters, the adapter with the best RSSI value for the iBeacon will be the one reporting the distance. As this can change, checking the source attribute when considering the distance is essential. -To get the Estimated distance sensor to work, in most cases, it has to be calibrated in the supplier's app. Place the device at 1m in light of sight of the Bluetooth adapter, read the signal strength in dBm, and set it in the corresponding field of the device app. +To get the Estimated distance sensor to work, in most cases, it has to be calibrated in the supplier's app. Place the device at 1m in line of sight of the Bluetooth adapter, read the signal strength in dBm, and set it in the corresponding field of the device app. ## Known working devices diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index aa721709445..aeb9bd5b80b 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -24,7 +24,7 @@ There is currently support for the following platforms within Home Assistant: - [Device Tracker](#device-tracker) - [Sensor](#sensor) -It does require that your devices are registered with the [Find My](https://www.apple.com/uk/icloud/find-my/) service. +It does require that your devices are registered with the [Find My](https://www.apple.com/icloud/find-my/) service. {% include integrations/config_flow.md %} diff --git a/source/_integrations/image.markdown b/source/_integrations/image.markdown index 42f2d5609c7..bdf166fc27f 100644 --- a/source/_integrations/image.markdown +++ b/source/_integrations/image.markdown @@ -5,7 +5,7 @@ ha_category: - Image ha_release: 2023.7 ha_quality_scale: internal -ha_domain: camera +ha_domain: image ha_codeowners: - '@home-assistant/core' ha_integration_type: entity diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index b4dfdd3356d..6471c32ccec 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -10,7 +10,6 @@ ha_platforms: - sensor ha_integration_type: integration ha_codeowners: - - '@engrbm87' - '@jbouwh' ha_config_flow: true --- @@ -37,19 +36,26 @@ If you’re going to use Gmail, you need to create an [App Password](https://sup By default, this integration will count unread emails. By configuring the search string, you can count other results, for example: -* `ALL` to count all emails in a folder -* `FROM`, `TO`, `SUBJECT` to find emails in a folder (see [IMAP RFC for all standard options](https://tools.ietf.org/html/rfc3501#section-6.4.4)) -* [Gmail's IMAP extensions](https://developers.google.com/gmail/imap/imap-extensions) allow raw Gmail searches, like `X-GM-RAW "in: inbox older_than:7d"` to show emails older than one week in your inbox. Note that raw Gmail searches will ignore your folder configuration and search all emails in your account! +- `ALL` to count all emails in a folder +- `FROM`, `TO`, `SUBJECT` to find emails in a folder (see [IMAP RFC for all standard options](https://tools.ietf.org/html/rfc3501#section-6.4.4)) +- [Gmail's IMAP extensions](https://developers.google.com/gmail/imap/imap-extensions) allow raw Gmail searches, like `X-GM-RAW "in: inbox older_than:7d"` to show emails older than one week in your inbox. Note that raw Gmail searches will ignore your folder configuration and search all emails in your account! + ### Selecting a charset supported by the imap server -Below is an example for setting up the integration to connect to your Microsoft 365 account that requires `US_ASCII` as charset: +Below is an example for setting up the integration to connect to your Microsoft 365 account that requires `US-ASCII` as charset: - Server: `outlook.office365.com` - Port: `993` - Username: Your full email address - Password: Your password - Charset: `US-ASCII` +
    + +Yahoo also requires the character set `US-ASCII`. + +
    + ### Selecting an alternate SSL cipher list or disable SSL verification (advanced mode) If the default IMAP server settings do not work, you might try to set an alternate SLL cipher list. @@ -77,6 +83,7 @@ The enforce polling option is an advanced setting. The option is available only 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. diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index d75ba415ad1..09eceab51ad 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -89,7 +89,7 @@ Configuration variables (host): type: string {% endconfiguration %} -#### Time period dictionary example +### Time period dictionary example ```yaml scan_interval: @@ -109,7 +109,7 @@ Parallel streams can help in some situations. As TCP attempts to be fair and con You can use the service `sensor.iperf3_update` to trigger a manual speed test for all sensors. Iperf3 has its own service call that allow to perform a speed test on a particular entity. -### Service +## Service Once loaded, the `iperf3` integration will expose a service (`iperf3.speedtest`) that can be called to run a speed test on demand. This can be useful if you have enabled manual mode. diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index 8d4363f1cc2..9ad91d0d3dc 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -11,6 +11,7 @@ ha_codeowners: - '@abmantis' ha_domain: ipma ha_platforms: + - sensor - weather ha_integration_type: integration --- diff --git a/source/_integrations/iqvia.markdown b/source/_integrations/iqvia.markdown index e17ca809b58..25f62223751 100644 --- a/source/_integrations/iqvia.markdown +++ b/source/_integrations/iqvia.markdown @@ -19,10 +19,10 @@ The `iqvia` sensor platform collects and displays allergy, asthma and disease information (based on a U.S. ZIP code) from [IQVIA](https://www.iqvia.com/). Data measured includes: -* Indices for allergies, asthma and cold/flu indices -* Trends -* Current outlook -* more! +- Indices for allergies, asthma and cold/flu indices +- Trends +- Current outlook +- more! {% include integrations/config_flow.md %} @@ -31,13 +31,13 @@ Data measured includes: Any index-related sensor will have a value between 0.0 and 12.0. The values map to the following human-friendly ratings: -Range | Rating ---------- | ----------- -0.0 - 2.4 | Low -2.5 - 4.8 | Low/Medium -4.9 - 7.2 | Medium -7.3 - 9.6 | Medium/High -9.7 - 12.0 | High +| Range | Rating | +| ---------- | ----------- | +| 0.0 - 2.4 | Low | +| 2.5 - 4.8 | Low/Medium | +| 4.9 - 7.2 | Medium | +| 7.3 - 9.6 | Medium/High | +| 9.7 - 12.0 | High | ## Understanding Asthma Allergens @@ -45,10 +45,10 @@ Several asthma-related sensors carry information regarding the top three "asthma allergens" (i.e., irritants that may exacerbate asthma symptoms). Example values include: -Pollutant | Symbol | More Info ---------- | ------ | --------- -Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) -Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) -Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) -Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) -Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) +| Pollutant | Symbol | More Info | +| ----------------------- | ------ | -------------------------------------------------------------------------------------- | +| Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) | +| Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) | +| Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) | +| Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) | +| Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) | diff --git a/source/_integrations/keyboard_remote.markdown b/source/_integrations/keyboard_remote.markdown index 4c611257128..6e067a378cf 100644 --- a/source/_integrations/keyboard_remote.markdown +++ b/source/_integrations/keyboard_remote.markdown @@ -9,7 +9,7 @@ ha_codeowners: - '@bendavid' - '@lanrat' ha_domain: keyboard_remote -ha_integration_type: integration +ha_integration_type: hub --- Receive signals from a keyboard and use it as a remote control. @@ -35,12 +35,12 @@ emulate_key_hold: type: boolean default: false emulate_key_hold_delay: - description: Number of milliseconds to wait before sending first emulated key hold event + description: Number of seconds to wait before sending first emulated key hold event required: false type: float default: 0.250 emulate_key_hold_repeat: - description: Number of milliseconds to wait before sending subsequent emulated key hold event + description: Number of seconds to wait before sending subsequent emulated key hold event required: false type: float default: 0.033 @@ -165,3 +165,29 @@ You can check ACLs permissions with: ```bash getfacl /dev/input/event* ``` + +## Containers + +If you are running Home Assistant Container, you need to pass the input device through to the container. You can pass the input device you want to use directly into the container with the `--devices` flag. However, restarting the container or unplugging and replugging your keyboard will break this integration. This is because only the instance of the keyboard that existed when the container first started will be available inside the container. + +Here is an incomplete example `docker-compose.yml` that allows Home Assistant persistent access to input devices in a container: + +```yaml +version: '3.7' + +services: + homeassistant: + image: ghrc.io/homeassistant/home-assistant:stable + volumes: + - config:/config/ + - /dev/input:/dev/input/ # this is needed to read input events. + restart: unless-stopped + device_cgroup_rules: + # allow creation of /dev/input/* with mknod, this is not enough on its own and needs mknod to be called in the container + - 'c 13:* rmw' + devices: + # since input id may change, pass them all in + - "/dev/input/" + ... + +``` diff --git a/source/_integrations/kitchen_sink.markdown b/source/_integrations/kitchen_sink.markdown index 26c4ac62e28..7179786c104 100644 --- a/source/_integrations/kitchen_sink.markdown +++ b/source/_integrations/kitchen_sink.markdown @@ -12,6 +12,7 @@ ha_iot_class: Calculated ha_platforms: - lock - sensor + - image ha_integration_type: integration --- diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 7cde6fca2e2..46f514055a6 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -44,8 +44,8 @@ ha_platforms: - sensor - switch - text - - time - weather + - time ha_config_flow: true ha_integration_type: hub --- @@ -338,7 +338,7 @@ address: type: string required: true type: - description: Type of the exposed value. Either `binary`, `time`, `date`, `datetime` or any supported type of [KNX Sensor](#sensor) (e.g., "temperature" or "humidity"). + description: Type of the exposed value. Either `binary`, `time` *DPT 10.001*, `date` *DPT 11.001*, `datetime` *DPT 19.001* or any supported type of [KNX Sensor](#sensor) (e.g., "temperature" or "humidity"). type: [string, integer] required: true entity_id: diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index 06ed519e360..5add29efbc2 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -32,9 +32,9 @@ There is currently support for the following device types within Home Assistant: If you previously had Kodi configured through `configuration.yaml`, it's advisable to remove it, and configure from the UI. If you do not remove it, your configuration will be imported with the following limitations: -* Your turn on/off actions will not be imported. This functionality is now available through device triggers. -* You may have duplicate entities. -* Kodi must be on when Home Assistant is loading for the first time for the configuration to be imported. +- Your turn on/off actions will not be imported. This functionality is now available through device triggers. +- You may have duplicate entities. +- Kodi must be on when Home Assistant is loading for the first time for the configuration to be imported. ### Turning On/Off @@ -73,23 +73,23 @@ automation: Add music to the default playlist (i.e., playlistid=0). -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Kodi entities where to add the media. | -| `media_type` | yes | Media type identifier. It must be one of SONG or ALBUM. | -| `media_id` | no | Unique Id of the media entry to add (`songid` or `albumid`). If not defined, `media_name` and `artist_name` are needed to search the Kodi music library. | -| `media_name` | no| Optional media name for filtering media. Can be 'ALL' when `media_type` is 'ALBUM' and `artist_name` is specified, to add all songs from one artist. | -| `artist_name` | no | Optional artist name for filtering media. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Name(s) of the Kodi entities where to add the media. | +| `media_type` | yes | Media type identifier. It must be one of SONG or ALBUM. | +| `media_id` | no | Unique Id of the media entry to add (`songid` or `albumid`). If not defined, `media_name` and `artist_name` are needed to search the Kodi music library. | +| `media_name` | no | Optional media name for filtering media. Can be 'ALL' when `media_type` is 'ALBUM' and `artist_name` is specified, to add all songs from one artist. | +| `artist_name` | no | Optional artist name for filtering media. | #### Service `kodi.call_method` Call a [Kodi JSON-RPC API](https://kodi.wiki/?title=JSON-RPC_API) method with optional parameters. Results of the Kodi API call will be redirected in a Home Assistant event: `kodi_call_method_result`. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | no | Name(s) of the Kodi entities where to run the API method. | -| `method` | yes | Name of the Kodi JSON-RPC API method to be called. | -| any other parameter | no | Optional parameters for the Kodi API call. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------- | +| `entity_id` | no | Name(s) of the Kodi entities where to run the API method. | +| `method` | yes | Name of the Kodi JSON-RPC API method to be called. | +| any other parameter | no | Optional parameters for the Kodi API call. | ### Event triggering diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index e6343c9e10a..8905dd99eb8 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -250,12 +250,12 @@ your LaMetric devices, use the following steps: 1. Log in with your LaMetric device account to [developer.lametric.com](https://developer.lametric.com). 2. Click the Create button and choose [Notification](https://developer.lametric.com/applications/createsource) app. 3. Fill in the form. You can put almost anything in the fields, they just need to be populated: - * App Name: Home Assistant - * Description: Home Assistant - * Redirect URI: `https://my.home-assistant.io/redirect/oauth` - * Privacy Policy: `http://localhost/` - * Check the "basic" and "read_devices" permission boxes - * Click Save + - App Name: Home Assistant + - Description: Home Assistant + - Redirect URI: `https://my.home-assistant.io/redirect/oauth` + - Privacy Policy: `http://localhost/` + - Check the "basic" and "read_devices" permission boxes + - Click Save 4. You should be directed to your [Notification Apps list](https://developer.lametric.com/applications/sources), click on "Home Assistant", copy your client ID and Client Secret. diff --git a/source/_integrations/light.rflink.markdown b/source/_integrations/light.rflink.markdown index d9b4c5d44e5..1e8b5e0e032 100644 --- a/source/_integrations/light.rflink.markdown +++ b/source/_integrations/light.rflink.markdown @@ -9,7 +9,7 @@ ha_release: 0.38 ha_domain: rflink --- -The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/en/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). First, you have to set up your [RFLink hub](/integrations/rflink/). diff --git a/source/_integrations/litterrobot.markdown b/source/_integrations/litterrobot.markdown index 44ba02d5543..1a45ea99844 100644 --- a/source/_integrations/litterrobot.markdown +++ b/source/_integrations/litterrobot.markdown @@ -24,6 +24,7 @@ ha_platforms: - switch - update - vacuum + - time ha_integration_type: hub --- diff --git a/source/_integrations/local_calendar.markdown b/source/_integrations/local_calendar.markdown index 265abf7d241..d0ad2e59ed0 100644 --- a/source/_integrations/local_calendar.markdown +++ b/source/_integrations/local_calendar.markdown @@ -25,8 +25,8 @@ A calendar entity has a state and attributes that represent the next upcoming ev Individual Calendar *Events* are what powers automations such as: -* Turn on a light at the *start* of the event named *Front Yard Light* -* Send a notification *5 minutes before the start of any event* -* Stop the media player *30 minutes after* the *end* of the event named *Exercise*. +- Turn on a light at the *start* of the event named *Front Yard Light* +- Send a notification *5 minutes before the start of any event* +- Stop the media player *30 minutes after* the *end* of the event named *Exercise*. See [Calendar Automations](/integrations/calendar#automation) for an overview, and read more about [Calendar Trigger Variables](/docs/automation/templating/#calendar) for the available information you can use in a condition or action such as the event `summary`, `description`, `location` and more. diff --git a/source/_integrations/lock.markdown b/source/_integrations/lock.markdown index 5db9a2e29ce..5b9178d05a6 100644 --- a/source/_integrations/lock.markdown +++ b/source/_integrations/lock.markdown @@ -13,8 +13,8 @@ ha_integration_type: entity Keeps track which locks are in your environment, their state and allows you to control them. - * Maintains a state per lock and a combined state `all_locks`. - * Registers services `lock.lock`, `lock.unlock` and `lock.open` (unlatch) to control locks. +- Maintains a state per lock and a combined state `all_locks`. +- Registers services `lock.lock`, `lock.unlock` and `lock.open` (unlatch) to control locks. ### Services @@ -24,9 +24,9 @@ A lock integration provides the following services: Lock your door, the attribute should appear under a 'data' attribute for the service. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | no | Entity of the relevant lock. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------- | +| `entity_id` | no | Entity of the relevant lock. | ##### Example @@ -41,9 +41,9 @@ action: Unlock your door, the attribute should appear under a 'data' attribute for the service. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | no | Entity of the relevant lock. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------- | +| `entity_id` | no | Entity of the relevant lock. | ##### Example @@ -62,6 +62,6 @@ Go to the **Developer Tools**, then to **Call Service** in the frontend, and cho {"entity_id":"lock.front_door"} ``` -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on specific lock. Use `entity_id: all` to target all. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific lock. Use `entity_id: all` to target all. | diff --git a/source/_integrations/logi_circle.markdown b/source/_integrations/logi_circle.markdown index fadce1c5bd0..16672154fda 100644 --- a/source/_integrations/logi_circle.markdown +++ b/source/_integrations/logi_circle.markdown @@ -23,18 +23,18 @@ The `logi_circle` implementation allows you to integrate your [Logi Circle](http 1. Navigate to the [Circle OAuth2 Client Request Form](https://docs.google.com/forms/d/184FUILJ10rVxotyOQR5DAiu6GcCbK31AZszUdzT1ybs). 2. Fill out your contact name and e-mail address. 3. For the User Visible Client Name, specify "Home Assistant" -3. Request the following scopes: - * `circle:activities` - * `circle:accessories` - * `circle:live_image` - * `circle:live` - * `circle:notifications` - * `circle:summaries` -4. Request the `authorization_code` grant type. -5. For the redirect URI, specify your Home Assistant URL followed by `/api/logi_circle`. For example, if your Home Assistant URL is `https://abc123.ui.nabu.casa`, then request `https://abc123.ui.nabu.casa/api/logi_circle`. The redirect URI must meet the following criteria: - * The URL must be HTTPS with a SSL certificate issued by a trusted CA (i.e., trusted by normal browsers). - * At the time you submit your request to Logitech, you need to demonstrate that you have exclusive control of the fully qualified domain name in your redirect URI. An active Home Assistant instance at the redirect URI will suffice. If you don't want to expose your Home Assistant instance publicly, you may also place a static page at the redirect URI with a short message that you will manage redirection of the authorization token to your local Home Assistant instance. Free static hosts that issue subdomains for hosting (e.g., Netlify) are permitted. - * As the redirect URI must be public facing, no local/reserved TLDs are permitted (eg. .local, .localhost, .example, etc. are not allowed). +4. Request the following scopes: + - `circle:activities` + - `circle:accessories` + - `circle:live_image` + - `circle:live` + - `circle:notifications` + - `circle:summaries` +5. Request the `authorization_code` grant type. +6. For the redirect URI, specify your Home Assistant URL followed by `/api/logi_circle`. For example, if your Home Assistant URL is `https://abc123.ui.nabu.casa`, then request `https://abc123.ui.nabu.casa/api/logi_circle`. The redirect URI must meet the following criteria: + - The URL must be HTTPS with a SSL certificate issued by a trusted CA (i.e., trusted by normal browsers). + - At the time you submit your request to Logitech, you need to demonstrate that you have exclusive control of the fully qualified domain name in your redirect URI. An active Home Assistant instance at the redirect URI will suffice. If you don't want to expose your Home Assistant instance publicly, you may also place a static page at the redirect URI with a short message that you will manage redirection of the authorization token to your local Home Assistant instance. Free static hosts that issue subdomains for hosting (e.g., Netlify) are permitted. + - As the redirect URI must be public facing, no local/reserved TLDs are permitted (eg. .local, .localhost, .example, etc. are not allowed). Please note that the turn-around time for API access takes up to a month after which you will be contacted by Logitech using the email address you provided in the form. @@ -134,11 +134,11 @@ The `logi_circle` platform exposes 3 services for interacting with your Logi Cir Initiates a recording of the camera's live stream. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Name(s) of entities to initiate a recording for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | -| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/recording_{{ entity_id }}.mp4`{% endraw %}. | -| `duration` | no | Duration of recording, in seconds. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------ | +| `entity_id` | yes | Name(s) of entities to initiate a recording for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/recording_{{ entity_id }}.mp4`{% endraw %}. | +| `duration` | no | Duration of recording, in seconds. | The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. @@ -148,10 +148,10 @@ Take a snapshot from a camera's live stream. This differs from the generic [snap Please note that new snapshots will only be generated if the cached snapshot is older than 30s. Requesting multiple snapshots in quick succession will likely return the same image. Likewise, requesting a snapshot from a camera that is actively streaming (ie. is not in deep sleep) will return a cached image no older than 30s. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Name(s) of entities to create a live stream snapshot from, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | -| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}.jpg`{% endraw %}. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | yes | Name(s) of entities to create a live stream snapshot from, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}.jpg`{% endraw %}. | The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. @@ -159,8 +159,8 @@ The path part of `filename` must be an entry in the `allowlist_external_dirs` in Sets a configuration property for your camera. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Name(s) of entities to set the operation mode for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | -| `mode` | no | Configuration property to set. Allowed values: `LED`, `RECORDING_MODE` | -| `value` | no | Mode value. Allowed values: `true`, `false` | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | yes | Name(s) of entities to set the operation mode for, e.g., `camera.living_room_camera`. If blank, targets all Logi Circle cameras. | +| `mode` | no | Configuration property to set. Allowed values: `LED`, `RECORDING_MODE` | +| `value` | no | Mode value. Allowed values: `true`, `false` | diff --git a/source/_integrations/loqed.markdown b/source/_integrations/loqed.markdown index e5def245f88..15928810cbd 100644 --- a/source/_integrations/loqed.markdown +++ b/source/_integrations/loqed.markdown @@ -1,19 +1,18 @@ --- -title: Loqed Touch Smart Lock +title: LOQED Touch Smart Lock description: Instructions on how to integrate a Loqed Touch Smart Lock ha_category: - Lock ha_release: 2023.7 ha_iot_class: Local Push ha_codeowners: - - "@mikewoudenbergs" + - '@mikewoudenberg' ha_domain: loqed ha_platforms: - lock - - sensor ha_config_flow: true -ha_dhcp: true ha_integration_type: integration +ha_zeroconf: true --- Integrate your LOQED Touch Smart Lock with Home Assistant. The lock instantly notifies Home Assistant of a lock state change and you can change the lock state yourself. @@ -57,4 +56,3 @@ On [LOQED personal access token website](https://integrations.production.loqed.c 1. Login with your LOQED App e-mail address (you need to be admin). 2. Select **delete** on the Personal Access Token you used when creating this integration. - diff --git a/source/_integrations/lyric.markdown b/source/_integrations/lyric.markdown index 52069813ff8..3a6a85019c7 100644 --- a/source/_integrations/lyric.markdown +++ b/source/_integrations/lyric.markdown @@ -25,9 +25,9 @@ The Honeywell Lyric integration integrates the Lyric thermostat platform into Ho To set up this integration, you first **must** set up a developer account with Honeywell: 1. Go to the [developer site](https://developer.honeywellhome.com) and register with an account. -1. Next, create a [new app](https://developer.honeywellhome.com/user/me/apps/add) via the `My Apps` section. +2. Next, create a [new app](https://developer.honeywellhome.com/user/me/apps/add) via the `My Apps` section. 1. App Name: You can use any name here, but it must not contain special characters. - 1. Callback URL: `https://my.home-assistant.io/redirect/oauth` + 2. Callback URL: `https://my.home-assistant.io/redirect/oauth` {% details "I have manually disabled My Home Assistant" %} diff --git a/source/_integrations/matter.markdown b/source/_integrations/matter.markdown index d2b33c916e8..6e5656e22db 100644 --- a/source/_integrations/matter.markdown +++ b/source/_integrations/matter.markdown @@ -85,25 +85,13 @@ Image taken from [this excellent article by The Verge](https://www.theverge.com/ For communicating with Matter devices, the Home Assistant integration runs its own "Matter controller" in a separate process which will be launched as an add-on. This add-on runs the controller software and connects your Matter network (called Fabric in technical terms) and Home Assistant. The Home Assistant Matter integration connects to this server via a WebSocket connection. -The only supported configuration (for now) for the Matter integration is by running the officially provided Home Assistant Matter add-on. Running the [Matter server](https://github.com/home-assistant-libs/python-matter-server) by any other means is at your own risk and is currently not officially supported. +### Supported installation types -## Current state of the integration +It is recommended to run the Matter add-on on Home Assistant OS. This is currently the best-supported option. -While the support for Matter is evolving, we will regularly update the Matter integration with new features or device support. Because it might be hard to track what's supported and what's not, we list the current state here and try to update this information regularly. +If you run Home Assistant in a container, you can run a Docker image of the [Matter server](https://github.com/home-assistant-libs/python-matter-server). The requirements and instructions for your host setup are described on that GitHub page. -Supported platforms (device types): - -- Binary sensor: We have so far tested door/window sensors and motion sensors, but others will probably work too. -- Climate: Support for thermostat devices has been added but availability of actual devices is limited. -- Cover: Has been implemented, but support for a tilt feature is still missing. -- Lights: All features (in the Matter specification) should be supported, including color control, etc. -- Locks: Basic lock control has been implemented, but not all devices and features are supported yet. -- Sensor: We have tested Illuminance and temperature sensors, but others will probably work too. -- Switch: Powerplugs should work (note: no support for energy metering yet in Matter). - -Note that a single Matter device can exist on multiple platforms. For example, a Motion sensor also has a temperature sensor and an illuminance sensor on board. - -If you own a (bridged) Matter device and you are missing controls for this device, create an issue on [GitHub](https://github.com/home-assistant/home-assistant.io) and make sure to post your Integration diagnostics there. In some cases, we can easily extend the existing platform support based on your diagnostics dump. +Running Matter on a Home Assistant Core installation is not supported. ## Adding Matter devices to Home Assistant @@ -162,9 +150,6 @@ This method will allow you to share a device that was added to Google Home to Ho -

    -At this time it is not yet possible to share a device from Home Assistant to another platform. This feature should be added after the Matter SDK 1.1 is released. -

    ## Experiment with Matter using a ESP32 dev board @@ -210,27 +195,37 @@ Did you test a device that is not listed below? It would be greatly appreciated [Eve Door & Window on Amazon](https://amzn.to/3RIU6ml) [Eve Motion on Amazon](https://amzn.to/3jDujiP) -### Nanoleaf Matter bulbs and Lightstrips +### Nanoleaf (Essentials) Matter bulbs and Lightstrips - Although the products work great once commissioned, multiple users have reported that commissioning them can be a bit difficult and requires some patience and multiple resets or optimizations to your home network. - Check the [Nanoleaf Matter infopage](https://nanoleaf.me/en-EU/integration/matter/) for all supported products and instructions. ### Philips Hue (V2) Bridge -The Philips Hue V2 bridge supports Matter since a recent update (the beta program closed, it is now officially available). You can enable Matter support from the Hue app after which you can commission it to Home Assistant and other fabrics. +The Philips Hue V2 bridge supports Matter. You can enable Matter support in the Hue app. You can then commission it to Home Assistant and other fabrics. - Binding the Hue bridge to Home Assistant does not make sense because you will lose functionality over the default Hue integration in Home Assistant, such as button press events and (dynamic) scenes. - You will need a Hue/Signify (cloud) account and the app before you can use Matter. - Device events for example for dimmer remotes are not supported. - Only basic control of lights is supported, no scenes, events, effects etc. +### SwitchBot Hub 2 + +SwitchBot has released a (beta) firmware update to enable Matter support on their Hub 2. The SwitchBot Hub 2 is a Matter bridge device. It is bridging some of the devices, such as curtain motors, into Matter. + +- To use Matter, in the SwitchBot app, enable Matter bridge support. Then, copy the code and use that to commission the Hub to Home Assistant. Another option is to use a second device to scan the QR code. +- Device support is limited. You bridge specific devices to Matter by adding them as **Secondary device** in the app. Note that not all SwitchBot devices can be bridged. +- Enabling Matter support does not convert the actual SwitchBot devices into matter devices. Those still need to be within the Bluetooth range of the hub. +- Bridged SwitchBot devices appear with a rather technical name in Home Assistant. This is a known issue. + + ### 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. +- Look for the _M_ addition in the model name. A device without the M (regular P125) is not Matter compliant. - This device is available in the US only. [TP-Link Tapo P125M on Amazon](https://amzn.to/3RILJah) @@ -239,15 +234,18 @@ Tasmota supports Matter over IP on all ESP32 based devices (in experimental phas ### General recommendations -- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS (version 10 and above) because of kernel patches to solve routing issues. Not using HAOS (and thus the official Matter add-on) is at your own risk. +- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Not using Home Assistant OS is at your own risk. We do provide some [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) on how to run the Matter Server as a Docker container. The documentation includes a description of the host and networking requirements. - To use Thread devices you will need a Thread Network with at least one Thread Border Router in your network nearby the Thread device(s). Apple users need for example the Apple TV 4K or the HomePod Mini, while Google users need a Nest Hub V2. Use the Thread integration in Home Assistant to diagnose your Thread network(s). -- Start simple and work from there, keep your network easy and add for example an ESP32 test device. Once that works, move on to the next step or more devices. +- Start simple and work from there, keep your network simple and add for example an ESP32 test device. Once that works, move on to the next step or more devices. - Realize that you are an early adopter, both on the hardware side and on the software (controller) side so you may run into compatibility issues or features that are still missing. Report any issues you may find and help out others if you find a workaround or tested a device. -- Make sure IPv6 (multicast) traffic travels freely from your network to the Home Assistant host. There is no requirement to have an IPv6-enabled internet connection or DHCPv6 server. However, IPv6 support has to be enabled (it's enabled by default on Home Assistant OS). +- Make sure IPv6 (multicast) traffic travels freely from your network to the Home Assistant host. There is no requirement to have an IPv6-enabled internet connection or DHCPv6 server. However, IPv6 support has to be enabled on Home Assistant. Go to **{% my network title="Settings > System > Network" %}**, and make sure **IPv6** is set to **Automatic** or **static**, depending on your network setup. If you're unsure, use **Automatic**. + +- For more detailed information on network configuration, refer to the [README of the Matter server repository](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md). + ### I do not see the button "Commission using the Companion app" @@ -267,4 +265,4 @@ Also see this [extended troubleshooting guide](https://developers.home.google.co The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices that use Wi-Fi (including Thread Border routers) must be on the same LAN/VLAN as Home Assistant. Matter devices that only use Thread must be joined to Thread networks for which there is at least one border router connected to the Home Assistant LAN. -Investigate your network topology if you experience any issues with discovering devices (like the initial commission keeps failing) or if devices become unavailable randomly. For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and do not play nicely with enterprise networking solutions like VLANs, Multicast filtering, and IGMP snooping. Try to keep your network as simple and flat as possible to avoid issues. +If you experience any issues with discovering devices (for example, if the initial commission keeps failing or if devices become unavailable randomly), investigate your network topology. For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and may not integrate well with enterprise networking solutions like VLANs, Multicast filtering, and (malfunctioning) IGMP snooping. To avoid issues, try to keep your network topology as simple and flat as possible. diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown index 108e97a4b48..de8bc7e353c 100644 --- a/source/_integrations/media_extractor.markdown +++ b/source/_integrations/media_extractor.markdown @@ -55,11 +55,11 @@ media_content_type: music Query examples with explanations: - * **bestvideo**: Best video only stream - * **best**: Best video + audio stream - * **bestaudio[ext=m4a]**: Best audio stream with m4a extension - * **worst**: Worst video + audio stream - * **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best m4a audio, otherwise best ogg audio and only then any best audio +- **bestvideo**: Best video only stream +- **best**: Best video + audio stream +- **bestaudio[ext=m4a]**: Best audio stream with m4a extension +- **worst**: Worst video + audio stream +- **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best m4a audio, otherwise best ogg audio and only then any best audio More info about queries can be found [here](https://github.com/ytdl-org/youtube-dl#format-selection). @@ -69,8 +69,8 @@ Navigate to the **Services** tab inside **Developer Tools**. From the "Service" This will download the file from the given URL. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Name(s) of entities to seek media on, e.g., `media_player.living_room_chromecast`. Defaults to all. -| `media_content_id` | no | The ID of the content to play. Platform dependent. -| `media_content_type` | no | The type of the content to play. Must be one of MUSIC, TVSHOW, VIDEO, EPISODE, CHANNEL or PLAYLIST MUSIC. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------- | +| `entity_id` | yes | Name(s) of entities to seek media on, e.g., `media_player.living_room_chromecast`. Defaults to all. | +| `media_content_id` | no | The ID of the content to play. Platform dependent. | +| `media_content_type` | no | The type of the content to play. Must be one of MUSIC, TVSHOW, VIDEO, EPISODE, CHANNEL or PLAYLIST MUSIC. | diff --git a/source/_integrations/meraki.markdown b/source/_integrations/meraki.markdown index 52bf549bec8..26f5224d80e 100644 --- a/source/_integrations/meraki.markdown +++ b/source/_integrations/meraki.markdown @@ -16,13 +16,13 @@ Use your Meraki AP as device tracker. Note that Meraki will see all devices, not ### Prerequisites 1. Go to Network-wide/General page, and find the Location and scanning section. -1. Make sure analytics and Scanning API are both enabled. -1. Make note of the Validator string, which will be used in the `device_tracker` configuration. -1. Click **Add a Post URL**: - 1. Set the Post URL to `https://YOUR_HOSTNAME/api/meraki` - 1. Set the Secret to a randomly generated string, and make note of it for the `device_tracker` configuration. - 1. Make sure the API Version is set to `2.0`. - 1. Hit **Save** in the bottom right of the page. +2. Make sure analytics and Scanning API are both enabled. +3. Make note of the Validator string, which will be used in the `device_tracker` configuration. +4. Click **Add a Post URL**: + 1. Set the Post URL to `https://YOUR_HOSTNAME/api/meraki` + 2. Set the Secret to a randomly generated string, and make note of it for the `device_tracker` configuration. + 3. Make sure the API Version is set to `2.0`. + 4. Hit **Save** in the bottom right of the page. ## Configuration diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index 5cdb852c5f6..f333dea30f9 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -80,9 +80,9 @@ icon: mdi:alert There are a few awareness levels: -* 2; yellow; Moderate -* 3; orange; Severe -* 4; red; High +- 2; yellow; Moderate +- 3; orange; Severe +- 4; red; High Example automation diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 6176ac8848f..70a94fb415d 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -1176,9 +1176,10 @@ and restart Home Assistant, reproduce the problem, and include the log in the is ## Building on top of Modbus - - [Modbus Binary Sensor](#configuring-platform-binary_sensor) + - [Modbus Binary Sensor](#configuring-platform-binary-sensor) - [Modbus Climate](#configuring-platform-climate) - [Modbus Cover](#configuring-platform-cover) - [Modbus Fan](#configuring-platform-fan) + - [Modbus Light](#configuring-platform-light) - [Modbus Sensor](#configuring-platform-sensor) - [Modbus Switch](#configuring-platform-switch) diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index 9d35704c189..446ebab98ef 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -48,11 +48,15 @@ The following bridges are reported to work with this integration: - D1554 Connector mini-bridge - DD7002B Brel-Home box - D1554 Brel Home USB plug + - Brel HUB-03 {% include integrations/config_flow.md %} ## Retrieving the API Key +The 16 character API key needed to setup the Home Assistant integration needs to be retrieved by first connecting the blind/bridge to the official app of its respective brand. +In that app the key can often be found by clicking multiple times on specific places on the "About" page. + ### Motion Blinds app The Motion Blinds API uses a 16 character key that can be retrieved from the official "Motion Blinds" app for [IOS](https://apps.apple.com/us/app/motion-blinds/id1437234324) or [Android](https://play.google.com/store/apps/details?id=com.coulisse.motion). diff --git a/source/_integrations/motioneye.markdown b/source/_integrations/motioneye.markdown index 6e44a7bb7e0..ebd1c46ba67 100644 --- a/source/_integrations/motioneye.markdown +++ b/source/_integrations/motioneye.markdown @@ -62,15 +62,15 @@ Steam URL template: ### Entities -| Platform | Description | -| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `camera` | An MJPEG camera that shows the motionEye video stream. | -| `switch` | Switch entities to enable/disable motion detection, text overlay, video streaming, still image capture, movie capture and upload enabled. | -| `sensor` | An "action sensor" that shows the number of configured [actions](https://github.com/ccrisan/motioneye/wiki/Action-Buttons) for this device. The names of the available actions are viewable in the `actions` attribute of the sensor entity. | +| Platform | Description | +| -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `camera` | An MJPEG camera that shows the motionEye video stream. | +| `switch` | Switch entities to enable/disable motion detection, text overlay, video streaming, still image capture, movie capture and upload enabled. | +| `sensor` | An "action sensor" that shows the number of configured [actions](https://github.com/ccrisan/motioneye/wiki/Action-Buttons) for this device. The names of the available actions are viewable in the `actions` attribute of the sensor entity. | **Note**: - * If the video streaming switch is turned off, the camera entity, and services that operate on that camera, will become unavailable. The rest of the integration will continue to function. - * As cameras are added or removed to motionEye, devices/entities are automatically added or removed from Home Assistant. + - If the video streaming switch is turned off, the camera entity, and services that operate on that camera, will become unavailable. The rest of the integration will continue to function. + - As cameras are added or removed to motionEye, devices/entities are automatically added or removed from Home Assistant.
    @@ -83,7 +83,7 @@ that is configured in the `motionEye` UI (under `Video Streaming`) on the host t motionEye integration is configured to use. Example: -* If this integration is configured to talk to motionEye at `http://motioneye:8765`, and +- If this integration is configured to talk to motionEye at `http://motioneye:8765`, and a camera is configured to stream on port `8081` -- Home Assistant needs to be able to communicate to `motioneye` port `8081`. @@ -133,21 +133,21 @@ in automations (etc). #### Data in events -* The event data includes the Home Assistant `device_id` for this motionEye +- The event data includes the Home Assistant `device_id` for this motionEye camera device and the Home Assistant device `name`. -* Event data also includes as many [Motion Conversion +- Event data also includes as many [Motion Conversion Specifiers](https://motion-project.github.io/motion_config.html#conversion_specifiers) as make sense for that event type. -* Any additional `&key=value` pairs added manually to the motionEye webhook +- Any additional `&key=value` pairs added manually to the motionEye webhook (in the motionEye UI) will automatically propagate to the event data. If you manually tweak the webhook, remove the `src=hass-motioneye` parameter or the webhook will be overwritten. -* For file storage events, the integration will automatically add +- For file storage events, the integration will automatically add `media_content_id` (an identifier that can be used to play the media in a Home Assistant media player) and `file_url` (a raw URL to the media). See [example automation](#automation-movies) below for an illustration of how this can be used. -* `file_type` will be less than 8 if the media stored is an image, otherwise, +- `file_type` will be less than 8 if the media stored is an image, otherwise, it is a movie/video. See [the motion source](https://github.com/Motion-Project/motion/blob/master/src/motion.h#L177) for more details. @@ -245,9 +245,9 @@ Trigger a motionEye action (see [MotionEye Action Buttons](https://github.com/cc Parameters: -| Parameter | Description | -| - | - | -| `entity_id` `device_id` | An entity id or device id to trigger the action on. | +| Parameter | Description | +| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` `device_id` | An entity id or device id to trigger the action on. | | `action` | A string representing the motionEye action to trigger. One of `snapshot`, `lock`, `unlock`, `light_on`, `light_off`, `alarm_on`, `alarm_off`, `up`, `right`, `down`, `left`, `zoom_in`, `zoom_out`, `preset1`-`preset9`, `record_start` or `record_stop` | **Note**: `record_start` and `record_stop` action are only partially implemented in motionEye itself and thus do not function as would be expected at this time ([relevant code](https://github.com/ccrisan/motioneye/blob/dev/motioneye/handlers.py#L1741)). @@ -258,17 +258,17 @@ Set the text overlay for a camera. Parameters: -| Parameter | Description | -| - | - | +| Parameter | Description | +| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `entity_id` `device_id` | An entity id or device id to set the text overlay on. | | `left_text` `right_text` | One of `timestamp`, `camera-name`, `custom-text` or `disabled` to show a timestamp, the name of the camera, custom text or nothing at all, on the left or right-hand side. | | `custom_left_text` `custom_right_text` | Custom text to show on the left or right, if the `custom-text` value is selected. | **Note**: -* Calling this service triggers a reset of the motionEye cameras which will pause the +- Calling this service triggers a reset of the motionEye cameras which will pause the stream / recordings / motion detection (etc). -* Ensure the `Text Overlay` switch is turned on to actually display the configured text overlays. +- Ensure the `Text Overlay` switch is turned on to actually display the configured text overlays. #### Example: diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 9d7e2471718..9694733f63b 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -36,6 +36,7 @@ ha_platforms: - update - vacuum - water_heater + - image ha_integration_type: integration ha_quality_scale: gold --- @@ -72,8 +73,8 @@ MQTT broker settings are configured when the MQTT integration is first set up an Add the MQTT integration, then provide your broker's hostname (or IP address) and port and (if required) the username and password that Home Assistant should use. To change the settings later, follow these steps: 1. Go to **{% my integrations title="Settings > Devices & Services" %}**. -1. On the MQTT integration, select the cogwheel. -1. Select **Configure**, then **Re-configure MQTT**. +2. Select the MQTT integration. +3. Select **Configure**, then **Re-configure MQTT**.
    @@ -128,9 +129,9 @@ A configured client certificate will only be active if broker certificate valida To change the settings, follow these steps: 1. Go to **{% my integrations title="Settings > Devices & Services" %}**. -1. On the MQTT integration, select the cogwheel. -1. Select **Configure**, then **Re-configure MQTT**. -1. To open the MQTT options page, select **Next**. +2. Select the MQTT integration. +3. Select **Configure**, then **Re-configure MQTT**. +4. To open the MQTT options page, select **Next**. ### Discovery options @@ -156,8 +157,8 @@ 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" . 1. Go to **{% my integrations title="Settings > Devices & Services" %}**. -1. On the Mosquitto broker integration, select the cogwheel, then select **Configure**. -1. Enter something similar to the example below into the **topic** field under **Publish a packet**. Select **Publish**. +2. Select the Mosquitto broker integration, then select **Configure**. +3. Enter something similar to the example below into the **topic** field under **Publish a packet**. Select **Publish**. ```bash homeassistant/switch/1/power @@ -568,6 +569,7 @@ The following software has built-in support for MQTT discovery: - [HASS.Agent](https://github.com/LAB02-Research/HASS.Agent) - [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0) - [MiFlora MQTT Daemon](https://github.com/ThomDietrich/miflora-mqtt-daemon) +- [MyElectricalData](https://github.com/MyElectricalData/myelectricaldata#english) - [Nuki Hub](https://github.com/technyon/nuki_hub) - [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) @@ -593,16 +595,18 @@ A motion detection device which can be represented by a [binary sensor](/integra - Configuration topic: `homeassistant/binary_sensor/garden/config` - State topic: `homeassistant/binary_sensor/garden/state` -- Payload: `{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}` +- Configuration payload: `{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state", "unique_id": "motion01ad", "device": {"identifiers": ["01ad"], "name": "Garden" }}` - Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts. -To create a new sensor manually. +It is also a good idea to add a `unique_id` to allow changes to the entity and a `device` mapping so we can group all sensors of a device together. + +To create a new sensor manually: ```bash -mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}' +mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state", "unique_id": "motion01ad", "device": {"identifiers": ["01ad"], "name": "Garden" }}' ``` -Update the state. +Update the state: ```bash mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON @@ -621,9 +625,9 @@ For more details please refer to the [MQTT testing section](/integrations/mqtt/# Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. - Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` -- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` +- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}","unique_id": "temp01ae", "device": {"identifiers": ["bedroom01ae"], "name": "Bedroom" }}` - Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` -- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` +- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}","unique_id": "hum01ae", "device": {"identifiers": ["bedroom01ae"], "name": "Bedroom" } }` - Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` #### Entities with command topics @@ -633,15 +637,15 @@ Setting up a light, switch etc. is similar but requires a `command_topic` as men - Configuration topic: `homeassistant/switch/irrigation/config` - State topic: `homeassistant/switch/irrigation/state` - Command topic: `homeassistant/switch/irrigation/set` -- Payload: `{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}` +- Payload: `{"name": "Irrigation", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}` - Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts. ```bash mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \ - -m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}' + -m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}}' ``` -Set the state. +Set the state: ```bash mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON @@ -680,7 +684,6 @@ Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-sch #### Use object_id to influence the entity id - The entity id is automatically generated from the entity's name. All MQTT integrations optionally support providing an `object_id` which will be used instead if provided. - Configuration topic: `homeassistant/sensor/device1/config` @@ -835,14 +838,14 @@ The MQTT integration will register the service `mqtt.publish` which allows publi ### Service `mqtt.publish` -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `topic` | no | Topic to publish payload to. -| `topic_template` | no | Template to render as topic to publish payload to. -| `payload` | yes | Payload to publish. -| `payload_template` | yes | Template to render as payload value. -| `qos` | yes | Quality of Service to use. (default: 0) -| `retain` | yes | If message should have the retain flag set. (default: false) +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------ | +| `topic` | no | Topic to publish payload to. | +| `topic_template` | no | Template to render as topic to publish payload to. | +| `payload` | yes | Payload to publish. | +| `payload_template` | yes | Template to render as payload value. | +| `qos` | yes | Quality of Service to use. (default: 0) | +| `retain` | yes | If message should have the retain flag set. (default: false) |

    You must include either `topic` or `topic_template`, but not both. If providing a payload, you need to include either `payload` or `payload_template`, but not both. @@ -919,10 +922,10 @@ retain: true Listen to the specified topic matcher and dumps all received messages within a specific duration into the file `mqtt_dump.txt` in your configuration folder. This is useful when debugging a problem. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `topic` | no | Topic to dump. Can contain a wildcard (`#` or `+`). -| `duration` | yes | Duration in seconds that we will listen for messages. Default is 5 seconds. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------- | +| `topic` | no | Topic to dump. Can contain a wildcard (`#` or `+`). | +| `duration` | yes | Duration in seconds that we will listen for messages. Default is 5 seconds. | ```yaml topic: openzwave/# diff --git a/source/_integrations/myq.markdown b/source/_integrations/myq.markdown index 14028bc5a3e..560fc428e26 100644 --- a/source/_integrations/myq.markdown +++ b/source/_integrations/myq.markdown @@ -9,7 +9,6 @@ ha_release: 0.39 ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - - '@bdraco' - '@ehendrix23' ha_domain: myq ha_homekit: true diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown index 72480e5a412..4b570f6f400 100644 --- a/source/_integrations/mysensors.markdown +++ b/source/_integrations/mysensors.markdown @@ -189,7 +189,7 @@ Visit the [library API][MySensors library api] of MySensors for more information The following binary sensor types are supported: -#### MySensors version 1.4 and higher +### MySensors version 1.4 and higher | S_TYPE | V_TYPE | | -------- | --------- | @@ -197,7 +197,7 @@ The following binary sensor types are supported: | S_MOTION | V_TRIPPED | | S_SMOKE | V_TRIPPED | -#### MySensors version 1.5 and higher +### MySensors version 1.5 and higher | S_TYPE | V_TYPE | | ------------ | --------- | @@ -207,7 +207,7 @@ The following binary sensor types are supported: | S_VIBRATION | V_TRIPPED | | S_MOISTURE | V_TRIPPED | -#### Binary Sensor example sketch +### Binary Sensor example sketch ```cpp /** @@ -259,7 +259,7 @@ void loop() The following actuator types are supported: -#### MySensors version 1.5 and higher +### MySensors version 1.5 and higher | S_TYPE | V_TYPE | | ------ | ------------------------------------------------------------------------------------ | @@ -282,7 +282,7 @@ You can use V_HVAC_SPEED to control the Speed setting of the Fan in the HVAC. You can use V_TEMP to send the current temperature from the node to Home Assistant. -#### Climate example sketch for MySensors 2.x +### Climate example sketch for MySensors 2.x ```cpp /* @@ -462,13 +462,13 @@ void sendHeatpumpCommand() { The following actuator types are supported: -#### MySensors version 1.4 +### MySensors version 1.4 | S_TYPE | V_TYPE | | ------- | ------------------------------------------- | | S_COVER | V_UP, V_DOWN, V_STOP, [V_DIMMER or V_LIGHT] | -#### MySensors version 1.5 and higher +### MySensors version 1.5 and higher | S_TYPE | V_TYPE | | ------- | ------------------------------------------------ | @@ -476,7 +476,7 @@ The following actuator types are supported: All V_TYPES above are required. Use V_PERCENTAGE (or V_DIMMER) if you know the exact position of the cover in percent, use V_STATUS (or V_LIGHT) if you don't. -#### Cover example sketch +### Cover example sketch ```cpp /* @@ -608,13 +608,13 @@ This sketch is ideally for star topology wiring. You can run up to 12 covers wit The following sensor types are supported: -#### MySensors version 2.0 and higher +### MySensors version 2.0 and higher | S_TYPE | V_TYPE | | ------ | ---------- | | S_GPS | V_POSITION | -#### Device Tracker example sketch for MySensors 2.x +### Device Tracker example sketch for MySensors 2.x ```cpp /** @@ -691,13 +691,13 @@ void loop() The following actuator types are supported: -#### MySensors version 1.4 +### MySensors version 1.4 | S_TYPE | V_TYPE | | -------- | --------------------- | | S_DIMMER | V_DIMMER\*, V_LIGHT\* | -#### MySensors version 1.5 and higher +### MySensors version 1.5 and higher | S_TYPE | V_TYPE | | ------------ | -------------------------------------------------------------- | @@ -844,21 +844,21 @@ void send_status_message() The following type combinations are supported: -#### MySensors version 1.4 and higher +### MySensors version 1.4 and higher -| S_TYPE | V_TYPE | -| -------- | ------------------ | -| S_IR | V_IR_SEND, V_LIGHT | +| S_TYPE | V_TYPE | +| ------ | ------------------ | +| S_IR | V_IR_SEND, V_LIGHT | -#### MySensors version 1.5 and higher +### MySensors version 1.5 and higher -| S_TYPE | V_TYPE | -| ------------ | --------------------- | -| S_IR | V_IR_SEND, V_STATUS | +| S_TYPE | V_TYPE | +| ------ | ------------------- | +| S_IR | V_IR_SEND, V_STATUS | V_LIGHT or V_STATUS is required to report the on / off state of the remote. Use either V_LIGHT or V_STATUS depending on library version. -#### IR transceiver example sketch +### IR transceiver example sketch ```cpp /* @@ -934,7 +934,7 @@ void incomingMessage(const MyMessage &message) { The following sensor types are supported: -#### MySensors version 1.4 and higher +### MySensors version 1.4 and higher | S_TYPE | V_TYPE | | ------------------ | -------------------------------------- | @@ -968,7 +968,7 @@ The following sensor types are supported: | S_AIR_QUALITY | V_LEVEL (replaces V_DUST_LEVEL) | | S_DUST | V_LEVEL (replaces V_DUST_LEVEL) | -#### MySensors version 2.0 and higher +### MySensors version 2.0 and higher | S_TYPE | V_TYPE | | --------------- | ------------------------- | @@ -984,7 +984,7 @@ Some sensor value types are not specific for a certain sensor type. These do not By using V_UNIT_PREFIX, it's possible to set a custom unit for any sensor. The string value that is sent for V_UNIT_PREFIX will be used in preference to any other unit of measurement, for the defined sensors. V_UNIT_PREFIX can't be used as a stand-alone sensor value type. Sending a supported value type and value from the tables above is also required. V_UNIT_PREFIX is available with MySensors version 1.5 and later. -#### Sensor example sketch for MySensors 2.x +### Sensor example sketch for MySensors 2.x ```cpp /** @@ -1053,17 +1053,17 @@ void receive(const MyMessage &message) { The following actuator types are supported: -#### MySensors version 1.4 and higher +### MySensors version 1.4 and higher -| S_TYPE | V_TYPE | -| -------- | ------------------ | -| S_DOOR | V_ARMED | -| S_MOTION | V_ARMED | -| S_SMOKE | V_ARMED | -| S_LIGHT | V_LIGHT | -| S_LOCK | V_LOCK_STATUS | +| S_TYPE | V_TYPE | +| -------- | ------------- | +| S_DOOR | V_ARMED | +| S_MOTION | V_ARMED | +| S_SMOKE | V_ARMED | +| S_LIGHT | V_LIGHT | +| S_LOCK | V_LOCK_STATUS | -#### MySensors version 1.5 and higher +### MySensors version 1.5 and higher | S_TYPE | V_TYPE | | ------------ | --------------------- | @@ -1075,7 +1075,7 @@ The following actuator types are supported: | S_VIBRATION | V_ARMED | | S_MOISTURE | V_ARMED | -#### MySensors version 2.0 and higher +### MySensors version 2.0 and higher | S_TYPE | V_TYPE | | --------------- | -------- | @@ -1083,7 +1083,7 @@ The following actuator types are supported: All V_TYPES for each S_TYPE above are required to activate the actuator for the platform. Use either V_LIGHT or V_STATUS depending on library version for cases where that V_TYPE is required. -#### Switch example sketch +### Switch example sketch ```cpp /* @@ -1133,13 +1133,13 @@ void incomingMessage(const MyMessage &message) The following sensor types are supported: -#### MySensors version 2.0 and higher +### MySensors version 2.0 and higher | S_TYPE | V_TYPE | | ------ | ------ | | S_INFO | V_TEXT | -#### Text example sketch +### Text example sketch ```cpp /* diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index 8004ca711f2..7e1fcc6aaae 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -18,7 +18,6 @@ ha_platforms: ha_integration_type: integration --- - There is currently support for the following device types within Home Assistant: - [Lights and switches](#lights-and-switches) @@ -27,7 +26,15 @@ There is currently support for the following device types within Home Assistant: ## Lights and switches -The myStrom integration allows you to control your [myStrom](https://mystrom.ch/) WiFi Bulbs and WiFi Switches. Make sure that you have enabled the REST API under **Advanced** in the web frontend of the switch. +The myStrom integration allows you to control your [myStrom](https://mystrom.ch/) Wi-Fi Bulbs and Wi-Fi Switches. Make sure that you have enabled the REST API under **Advanced** in the web frontend of the switch. + +Supported devices are: + - Switch CH v1 (101) + - Bulb (102) + - LED strip (105) + - Switch CH v2 (106) + - Switch EU (107) + - Switch Zero (120) {%include integrations/config_flow.md %} @@ -130,4 +137,3 @@ curl -d "double=get://192.168.1.3:8123/api/mystrom?api_password%3Dapi_password%2 The command-line tool [`mystrom`](https://github.com/fabaff/python-mystrom) is a helper to configure myStrom buttons. If you have set [`login_attempts_threshold`](/integrations/http/) and forget to include the `api_password` for an action and that action is triggered then after the threshold is reached will the button no longer work because it is banned. See [IP filtering and banning](/integrations/http/#ip-filtering-and-banning) about how to revert the banning. - diff --git a/source/_integrations/ness_alarm.markdown b/source/_integrations/ness_alarm.markdown index e15bd605e7e..ddd35b8dd6a 100644 --- a/source/_integrations/ness_alarm.markdown +++ b/source/_integrations/ness_alarm.markdown @@ -86,7 +86,7 @@ zones: type: string {% endconfiguration %} -#### Time period dictionary example +### Time period dictionary example ```yaml scan_interval: diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 1ccf4147ffe..8e510ee6578 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -55,10 +55,10 @@ Adding Nest to your Home Assistant instance can be done via the user interface, {% details "Manual configuration steps" %} 1. Browse to your Home Assistant instance. -1. Go to **{% my integrations title="Settings > Devices & Services" %}**. -1. In the bottom right corner, select the +2. Go to **{% my integrations title="Settings > Devices & Services" %}**. +3. In the bottom right corner, select the **{% my config_flow_start icon domain=page.ha_domain %}** button. -1. From the list, select **Nest** and follow the instructions on screen. +4. From the list, select **Nest** and follow the instructions on screen. {% enddetails %} @@ -70,23 +70,23 @@ By the end of this section you will have a Cloud Project with the necessary APIs 1. Go to the [Google Cloud Console](https://console.developers.google.com/apis/credentials). -1. If this is your first time here, you likely need to create a new Google Cloud project. Click **Create Project** then **New +2. If this is your first time here, you likely need to create a new Google Cloud project. Click **Create Project** then **New Project**. ![Screenshot of APIs and Services Cloud Console with no existing project](/images/integrations/nest/api_project_needed.png) -1. Give your Cloud Project a name then click **Create**. +3. Give your Cloud Project a name then click **Create**. -1. You will need to hold on to your *Cloud Project ID* to enable a subscription to receive updates from devices. Visit the [Cloud Console](https://console.cloud.google.com/home/dashboard) and copy the *Project ID* needed by Home Assistant. +4. You will need to hold on to your *Cloud Project ID* to enable a subscription to receive updates from devices. Visit the [Cloud Console](https://console.cloud.google.com/home/dashboard) and copy the *Project ID* needed by Home Assistant. ![Screenshot of success](/images/integrations/nest/console_project_id.png) -1. Go to [APIs & Services > Library](https://console.cloud.google.com/apis/library) where you can enable APIs. +5. Go to [APIs & Services > Library](https://console.cloud.google.com/apis/library) where you can enable APIs. -1. From the API Library search for [Smart Device management](https://console.cloud.google.com/apis/library/smartdevicemanagement.googleapis.com) and click **Enable**. +6. From the API Library search for [Smart Device management](https://console.cloud.google.com/apis/library/smartdevicemanagement.googleapis.com) and click **Enable**. ![Screenshot of Search for SDM API](/images/integrations/nest/enable_sdm_api.png) -1. From the API Library search for [Cloud Pub/Sub API](https://console.developers.google.com/apis/library/pubsub.googleapis.com) in the Cloud Console and click **Enable**. +7. From the API Library search for [Cloud Pub/Sub API](https://console.developers.google.com/apis/library/pubsub.googleapis.com) in the Cloud Console and click **Enable**. You now have a cloud project ready for the next section to configure authentication with OAuth. @@ -99,25 +99,25 @@ your cloud project. 1. Go to the [Google API Console](https://console.developers.google.com/apis/credentials). -1. Click [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent) and configure it. +2. Click [OAuth consent screen](https://console.cloud.google.com/apis/credentials/consent) and configure it. -1. Select **External** (the only choice if you are not a G-Suite user) then click **Create**. While you are here, you may click the *Let us know what you think* to give Google's OAuth team any feedback about your experience configuring credentials for self-hosted software. They make regular improvements to this flow and appear to value feedback. +3. Select **External** (the only choice if you are not a G-Suite user) then click **Create**. While you are here, you may click the *Let us know what you think* to give Google's OAuth team any feedback about your experience configuring credentials for self-hosted software. They make regular improvements to this flow and appear to value feedback. ![Screenshot of OAuth consent screen creation](/images/integrations/nest/oauth_consent_create.png) -1. The *App Information* screen needs you to enter an **App name** and **User support email**, then enter your email again under **Developer contact email**. These are only shown while you later go through the OAuth flow to authorize Home Assistant to access your account. Click **Save and Continue**. Omit unnecessary information (e.g. logo) to avoid additional review by Google. +4. The *App Information* screen needs you to enter an **App name** and **User support email**, then enter your email again under **Developer contact email**. These are only shown while you later go through the OAuth flow to authorize Home Assistant to access your account. Click **Save and Continue**. Omit unnecessary information (e.g. logo) to avoid additional review by Google. -1. On the *Scopes* step click **Save and Continue**. +5. On the *Scopes* step click **Save and Continue**. -1. On the *Test Users* step, you need to add your Google Account (e.g., your @gmail.com address) to the list. Click *Save* on your test account then **Save and Continue** to finish the consent flow. +6. On the *Test Users* step, you need to add your Google Account (e.g., your @gmail.com address) to the list. Click *Save* on your test account then **Save and Continue** to finish the consent flow. ![Screenshot of OAuth consent screen test users](/images/integrations/nest/oauth_consent_test_users.png) -1. Navigate back to the *OAuth consent screen* and click **Publish App** to set the *Publishing status* is **In Production**. +7. Navigate back to the *OAuth consent screen* and click **Publish App** to set the *Publishing status* is **In Production**. ![Screenshot of OAuth consent screen production status](/images/integrations/nest/oauth_consent_production_status.png) -1. The warning says your *app will be available to any user with a Google Account* which refers to the fields you entered on the *App Information* screen if someone finds the URL. This does not expose your Google Account or Nest data. +8. The warning says your *app will be available to any user with a Google Account* which refers to the fields you entered on the *App Information* screen if someone finds the URL. This does not expose your Google Account or Nest data. -1. Make sure the status is not *Testing*, or you will get logged out every 7 days. +9. Make sure the status is not *Testing*, or you will get logged out every 7 days. {% enddetails %} @@ -130,23 +130,23 @@ The steps below use *Web Application Auth* with *My Home Assistant* to handle Go 1. Navigate to the [Credentials](https://console.cloud.google.com/apis/credentials) page and click **Create Credentials**. ![Screenshot of APIs and Services Cloud Console](/images/integrations/nest/create_credentials.png) -1. From the drop-down list select *OAuth client ID*. +2. From the drop-down list select *OAuth client ID*. ![Screenshot of OAuth client ID selection](/images/integrations/nest/oauth_client_id.png) -1. Enter *Web Application* for the Application type. +3. Enter *Web Application* for the Application type. -1. Pick a name for your credential. +4. Pick a name for your credential. -1. Add **Authorized redirect URIs** end enter `https://my.home-assistant.io/redirect/oauth` +5. Add **Authorized redirect URIs** end enter `https://my.home-assistant.io/redirect/oauth` -1. Click *Create* to create the credential. +6. Click *Create* to create the credential. ![Screenshot of creating OAuth credentials](/images/integrations/nest/oauth_redirect_uri.png) -1. You should now be presented with an *OAuth client created* message. +7. You should now be presented with an *OAuth client created* message. ![Screenshot of OAuth Client ID and Client Secret](/images/integrations/nest/oauth_created.png) -1. You now have *OAuth Client ID* and *OAuth Client Secret* needed by Home Assistant. See [Application Credentials](/integrations/application_credentials) for more general detail about how Home Assistant manages credentials. +8. You now have *OAuth Client ID* and *OAuth Client Secret* needed by Home Assistant. See [Application Credentials](/integrations/application_credentials) for more general detail about how Home Assistant manages credentials. {% enddetails %} @@ -157,25 +157,25 @@ Now that you have authentication configured, you will create a Nest Device Acces 1. Go to the [Device Access Registration](https://developers.google.com/nest/device-access/registration) page. Click on the button **[Go to the Device Access Console](https://console.nest.google.com/device-access/)**. ![Screenshot of Device Access Registration](/images/integrations/nest/device_access.png) -1. Check the box to "Accept the Terms of Service" and click **Continue to Payment** where you need to pay a fee (currently US$5). +2. Check the box to "Accept the Terms of Service" and click **Continue to Payment** where you need to pay a fee (currently US$5). ![Screenshot of accepting terms](/images/integrations/nest/accept_terms.png)

    It is currently not possible to share/be invited to a home with a G-Suite account. Make sure that you pay the fee with an account that has access to your devices.
    -1. Now the [Device Access Console](https://console.nest.google.com/device-access/project-list) should be visible. Click on **Create project**. +3. Now the [Device Access Console](https://console.nest.google.com/device-access/project-list) should be visible. Click on **Create project**. -1. Give your Device Access project a name and click **Next**. +4. Give your Device Access project a name and click **Next**. ![Screenshot of naming a project](/images/integrations/nest/project_name.png) -1. Next you will be asked for an *OAuth client ID* which you created in the previous step and click **Next**. +5. Next you will be asked for an *OAuth client ID* which you created in the previous step and click **Next**. ![Screenshot of Device Access Console OAuth client ID](/images/integrations/nest/device_access_oauth_client_id.png) -1. Enable Events by clicking on **Enable** and **Create project**. +6. Enable Events by clicking on **Enable** and **Create project**. ![Screenshot of enabling events](/images/integrations/nest/enable_events.png) -1. You now have a *Device Access Project ID* needed by Home Assistant. +7. You now have a *Device Access Project ID* needed by Home Assistant. {% enddetails %} @@ -190,28 +190,28 @@ Note that *OAuth for Apps* has been [deprecated](https://developers.googleblog.c 1. In Home Assistant, you should already be going through the setup flow. If not, go back and click the *My: Add Integration* button above to start the setup. The integration will ask you for all of the necessary integration configuration. -1. Once all configuration information is entered in Home Assistant, a new tab opens, allowing you to choose a Google account. This should be the same developer account you configured above. +2. Once all configuration information is entered in Home Assistant, a new tab opens, allowing you to choose a Google account. This should be the same developer account you configured above. -1. The *Google Nest permissions* screen will allow you to choose which devices to configure and lets you select devices from multiple homes. You likely want to enable everything, however, you can leave out any feature you do not wish to use with Home Assistant. +3. The *Google Nest permissions* screen will allow you to choose which devices to configure and lets you select devices from multiple homes. You likely want to enable everything, however, you can leave out any feature you do not wish to use with Home Assistant. ![Screenshot of Nest permissions authorization](/images/integrations/nest/oauth_approve.png) -1. You will get redirected to another account selection page. +4. You will get redirected to another account selection page. -1. You may see a warning screen that says *Google hasn't verified this app* since you just set up an un-verified developer workflow. Click *Continue* to proceed. +5. You may see a warning screen that says *Google hasn't verified this app* since you just set up an un-verified developer workflow. Click *Continue* to proceed. ![Screenshot OAuth warning](/images/integrations/nest/oauth_app_verification.png) -1. Then you will be asked to grant access to additional permissions. Click *Allow*. +6. Then you will be asked to grant access to additional permissions. Click *Allow*. ![Screenshot 1 of granting permissions](/images/integrations/nest/oauth_grant1.png) ![Screenshot 2 of granting permissions](/images/integrations/nest/oauth_grant2.png) -1. Confirm you want to allow persistent access to Home Assistant. +7. Confirm you want to allow persistent access to Home Assistant. ![Screenshot of OAuth confirmation](/images/integrations/nest/oauth_confirm.png) -1. You will now see a page hosted by *My Home Assistant* asking if you would like to *Link account to Home Assistant?* Click **Link Account** to continue. +8. You will now see a page hosted by *My Home Assistant* asking if you would like to *Link account to Home Assistant?* Click **Link Account** to continue. -1. If all went well, you are ready to go! +9. If all went well, you are ready to go! ![Screenshot of success](/images/integrations/nest/finished.png) @@ -271,15 +271,15 @@ This feature is enabled by the following permissions: All cameras have motion and person triggers, however only some support capturing snapshots for events. The table below summarizes the [Supported SDM API features](https://developers.google.com/nest/device-access/supported-devices) for each device. -| Device | Live Stream | Triggers / Events | Media Source
    for Triggers / Events | -| ------ | :---------: | :------: | :--------------------: | -| Nest Cam (indoor, wired)
    Nest Cam (outdoor, battery) | WebRTC | Motion
    Person | N/A | -| Nest Cam Indoor
    Nest Cam IQ Indoor
    Nest Cam IQ Outdoor
    Nest Cam Outdoor | RTSP
    Recording | Motion
    Person
    Sound | Snapshot (jpg) | -| Nest Cam with floodlight | WebRTC | Motion
    Person | N/A | -| Nest Doorbell (battery) | WebRTC | Motion
    Person
    Chime | Clip Preview (mp4, gif) | -| Nest Doorbell (wired, 1st gen) | RTSP
    Recording | Motion
    Person
    Sound
    Chime | Snapshot (jpg) | -| Nest Doorbell (wired, 2nd gen) | WebRTC | Motion
    Person
    Chime | Clip Preview (mp4, gif) | -| Nest Hub Max | RTSP
    Recording | Motion
    Person
    Sound
    | Snapshot (jpg) | +| Device | Live Stream | Triggers / Events | Media Source
    for Triggers / Events | +| -------------------------------------------------------------------------------- | :---------------: | :--------------------------------: | :------------------------------------: | +| Nest Cam (indoor, wired)
    Nest Cam (outdoor, battery) | WebRTC | Motion
    Person | N/A | +| Nest Cam Indoor
    Nest Cam IQ Indoor
    Nest Cam IQ Outdoor
    Nest Cam Outdoor | RTSP
    Recording | Motion
    Person
    Sound | Snapshot (jpg) | +| Nest Cam with floodlight | WebRTC | Motion
    Person | N/A | +| Nest Doorbell (battery) | WebRTC | Motion
    Person
    Chime | Clip Preview (mp4, gif) | +| Nest Doorbell (wired, 1st gen) | RTSP
    Recording | Motion
    Person
    Sound
    Chime | Snapshot (jpg) | +| Nest Doorbell (wired, 2nd gen) | WebRTC | Motion
    Person
    Chime | Clip Preview (mp4, gif) | +| Nest Hub Max | RTSP
    Recording | Motion
    Person
    Sound
    | Snapshot (jpg) | Given a camera named `Front Yard` then the camera is created with a name such as `camera.front_yard`. @@ -309,9 +309,9 @@ This is an example of what the `nest_event` payload looks like for a Device Trig } ``` -* `device_id`: The Home Assistant device identifier for the camera -* `nest_event_id`: is an opaque identifier that can be used with the Media Source Attachments described below for supported cameras. -* `zones`: Zones triggering the event if available. Zones are configured in the Google Home App, though not supported by all cameras. Events in the area outside of a named zone will be an empty zone name. +- `device_id`: The Home Assistant device identifier for the camera +- `nest_event_id`: is an opaque identifier that can be used with the Media Source Attachments described below for supported cameras. +- `zones`: Zones triggering the event if available. Zones are configured in the Google Home App, though not supported by all cameras. Events in the area outside of a named zone will be an empty zone name. {% enddetails %} @@ -336,9 +336,9 @@ The table above describes which devices support event image snapshots or 10-fram The Media Source APIs can be used in [Companion App Attachments](https://companion.home-assistant.io/docs/notifications/notification-attachments) for Notifications as actions for Device Triggers above like *Doorbell Pressed*. You will need to be familiar with both the Media Sources supported for your camera, as well as the media capabilities of the companion apps. -* `/api/nest/event_media/DEVICE_ID/EVENT_ID`: Media for the event, which supports image snapshots (jpg) or clip previews (mp4) depending on the camera type. +- `/api/nest/event_media/DEVICE_ID/EVENT_ID`: Media for the event, which supports image snapshots (jpg) or clip previews (mp4) depending on the camera type. -* `/api/nest/event_media/DEVICE_ID/EVENT_ID/thumbnail`: A thumbnail preview of the media, which supports image snapshots (jpg) or clip previews (gif) depending on the camera type. +- `/api/nest/event_media/DEVICE_ID/EVENT_ID/thumbnail`: A thumbnail preview of the media, which supports image snapshots (jpg) or clip previews (gif) depending on the camera type. You can use the event payload fields `device_id` and `event_id` in an [automation](/getting-started/automation/) to send a notification from an [actions](/getting-started/automation-action/) as shown in the examples below. @@ -422,12 +422,12 @@ To improve security and reduce phishing risk Google has [deprecated](https://dev {% details "Reconfigure the integration %} 1. Make sure to upgrade to the latest version of Home Assistant. -1. Go to **{% my integrations title="Settings > Devices & Services" %}**. -1. The **Nest** integration should appear with alert. +2. Go to **{% my integrations title="Settings > Devices & Services" %}**. +3. The **Nest** integration should appear with alert. ![Screenshot of success](/images/integrations/nest/attention.png) -1. Click **Reconfigure**. +4. Click **Reconfigure**. ![Screenshot of success](/images/integrations/nest/deprecation.png) @@ -439,27 +439,27 @@ If the *Nest* integration does not have an Alert then you probably used *Web Aut {% details "Create new Web Auth Application Credentials" %} 1. In the Home Assistant flow confirm your *Google Cloud Project ID* and proceed to the next step. -1. You will be prompted to enter new *Application Credentials*. -1. In another tab visit the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) -1. On the *Credentials* page click **Create Credential**. -1. From the drop-down list select **OAuth client ID**. -1. Enter **Web Application** for the Application type. -1. Pick a new name for your credential. -1. Add **Authorized redirect URIs** end enter `https://my.home-assistant.io/redirect/oauth` -1. Click *Create* to create the credential. -1. You now have *OAuth Client ID* and *OAuth Client Secret* needed by Home Assistant. -1. Back in Home Assistant, you should now be prompted to create [Application Credentials](/integrations/application_credentials) where you will enter the *Client ID* and *Client Secret*. +2. You will be prompted to enter new *Application Credentials*. +3. In another tab visit the [Google Cloud Console](https://console.cloud.google.com/apis/credentials) +4. On the *Credentials* page click **Create Credential**. +5. From the drop-down list select **OAuth client ID**. +6. Enter **Web Application** for the Application type. +7. Pick a new name for your credential. +8. Add **Authorized redirect URIs** end enter `https://my.home-assistant.io/redirect/oauth` +9. Click *Create* to create the credential. +10. You now have *OAuth Client ID* and *OAuth Client Secret* needed by Home Assistant. +11. Back in Home Assistant, you should now be prompted to create [Application Credentials](/integrations/application_credentials) where you will enter the *Client ID* and *Client Secret*. {% enddetails %} {% details "Update Device Access Project" %} 1. Visit the [Device Access Console](https://console.nest.google.com/device-access/) -1. Select the *Device Access Project* used by *Home Assistant* -1. You need to then delete the old *OAuth Client ID* by clicking the Trash icon to unlink your Nest project from the deprecated Auth method. -1. Click the overflow menu `...` then *Add Client ID* -1. Enter the new *OAuth Client ID* for *Web App Auth* credentials -1. Back in Home Assistant confirm your *Device Access Project ID* +2. Select the *Device Access Project* used by *Home Assistant* +3. You need to then delete the old *OAuth Client ID* by clicking the Trash icon to unlink your Nest project from the deprecated Auth method. +4. Click the overflow menu `...` then *Add Client ID* +5. Enter the new *OAuth Client ID* for *Web App Auth* credentials +6. Back in Home Assistant confirm your *Device Access Project ID* {% enddetails %} diff --git a/source/_integrations/nexity.markdown b/source/_integrations/nexity.markdown index c609c6afaf5..411bb153502 100644 --- a/source/_integrations/nexity.markdown +++ b/source/_integrations/nexity.markdown @@ -2,7 +2,7 @@ title: Nexity Eugénie description: Connect and control your Nexity Eugénie devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/nissan_leaf.markdown b/source/_integrations/nissan_leaf.markdown index 80e6394d0ea..1d69293c0e1 100644 --- a/source/_integrations/nissan_leaf.markdown +++ b/source/_integrations/nissan_leaf.markdown @@ -18,10 +18,10 @@ ha_integration_type: integration The `nissan_leaf` integration offers integration with the [NissanConnect EV](https://www.nissan.co.uk/dashboard.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. It offers: -* sensors for the battery status, range and charging status -* a switch to start and stop the climate control -* a button to request the car starts charging. -* service to request updates from the car. +- sensors for the battery status, range and charging status +- a switch to start and stop the climate control +- a button to request the car starts charging. +- service to request updates from the car. ## Configuration @@ -117,14 +117,14 @@ You can also use the `nissan_leaf.update` service to request an on-demand update ## Hints -* The update interval has a minimum of two minutes. -* Requesting updates uses a small amount of energy from the 12 V battery. The 12 V battery charges from the main traction battery when the car is not plugged in. If the car is left plugged in for a long time, or if the main traction battery is very low then the 12 V battery may gradually discharge. A low update interval may cause the 12 V battery to become flat. When the 12 V battery is flat the car will not start. _Do not set the update interval too low. Use at your own risk._ -* This integration communicates with the Nissan Servers which then communicate with the car. The communication between the car and the Nissan Servers is very slow, and takes up to five minutes to get information from the car, therefore the default polling interval is set to one hour to not overwhelm the connection. -* Responses from the Nissan servers are received separately for the battery/range, climate control and location. The `updated_on` attribute will show the last time the data was retrieved from the server. There are separate attributes for when the `next_update` is scheduled, and to indicate if `update_in_progress`. The `nissan_leaf.update` service will reset the `next_update` attribute. -* The Nissan APIs do not allow charging to be stopped remotely. -* The Nissan servers have a history of being unstable, therefore please confirm that the official Nissan Leaf app/website is working correctly before reporting bugs. -* In the UK the cut-off for Carwings was the 16 plate 24 kWh and the 65 plate 30 kWh. Cars after this have NissanConnect. -* As of 25 July 2019 the MyCarFinder API is not longer available, hence the device_tracker support has been removed. +- The update interval has a minimum of two minutes. +- Requesting updates uses a small amount of energy from the 12 V battery. The 12 V battery charges from the main traction battery when the car is not plugged in. If the car is left plugged in for a long time, or if the main traction battery is very low then the 12 V battery may gradually discharge. A low update interval may cause the 12 V battery to become flat. When the 12 V battery is flat the car will not start. _Do not set the update interval too low. Use at your own risk._ +- This integration communicates with the Nissan Servers which then communicate with the car. The communication between the car and the Nissan Servers is very slow, and takes up to five minutes to get information from the car, therefore the default polling interval is set to one hour to not overwhelm the connection. +- Responses from the Nissan servers are received separately for the battery/range, climate control and location. The `updated_on` attribute will show the last time the data was retrieved from the server. There are separate attributes for when the `next_update` is scheduled, and to indicate if `update_in_progress`. The `nissan_leaf.update` service will reset the `next_update` attribute. +- The Nissan APIs do not allow charging to be stopped remotely. +- The Nissan servers have a history of being unstable, therefore please confirm that the official Nissan Leaf app/website is working correctly before reporting bugs. +- In the UK the cut-off for Carwings was the 16 plate 24 kWh and the 65 plate 30 kWh. Cars after this have NissanConnect. +- As of 25 July 2019 the MyCarFinder API is not longer available, hence the device_tracker support has been removed. Please report bugs using the following logger configuration. diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown index 20932e3f90e..5d61a9fee40 100644 --- a/source/_integrations/openai_conversation.markdown +++ b/source/_integrations/openai_conversation.markdown @@ -14,7 +14,7 @@ ha_integration_type: service The OpenAI integration adds a conversation agent powered by [OpenAI](https://www.openai.com) in Home Assistant. -This conversation agent is unable to control your house. It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide OpenAI with the details of your house, which include areas, devices and their states. +This conversation agent is unable to control your house. The OpenAI conversation agent can be used in automations, but not as a [sentence trigger](/docs/automation/trigger/#sentence-trigger). It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide OpenAI with the details of your house, which include areas, devices and their states. This integration requires an API key to use, [which you can generate here.](https://platform.openai.com/account/api-keys). This is a paid service, we advise you to monitor your costs in the [OpenAI portal](https://platform.openai.com/account) closely and configure [usage limits](https://platform.openai.com/account/billing/limits) to avoid unwanted costs associated with using the service. diff --git a/source/_integrations/openhome.markdown b/source/_integrations/openhome.markdown index c01d3b2fa17..d193136a0c7 100644 --- a/source/_integrations/openhome.markdown +++ b/source/_integrations/openhome.markdown @@ -3,6 +3,7 @@ title: Linn / OpenHome description: Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant. ha_category: - Media Player + - Update ha_release: 0.39 ha_iot_class: Local Polling ha_config_flow: true @@ -12,6 +13,7 @@ ha_codeowners: - '@bazwilliams' ha_platforms: - media_player + - update ha_integration_type: integration --- diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index dcec979bf1b..543a8483142 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -75,9 +75,9 @@ Floor Temperature: Reset the OpenTherm Gateway. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | ### Service `set_central_heating_ovrd` @@ -86,10 +86,10 @@ When overriding the control setpoint (via a [set_control_setpoint](#service-open To return control of the central heating to the thermostat, call the [set_control_setpoint](#service-opentherm_gwset_control_setpoint) service with temperature value 0. **You will only need this if you are writing your own software thermostat.** -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `ch_override` | no | The desired value for the central heating override. Use `0` to disable or `1` to enable. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `ch_override` | no | The desired value for the central heating override. Use `0` to disable or `1` to enable. |
    @@ -101,11 +101,11 @@ Please read [this information](http://otgw.tclcode.com/standalone.html) from the Provide the time and day of week to the OpenTherm Gateway. The value provided here will be forwarded to the thermostat on the next date/time request from the thermostat. The OpenTherm Gateway does not have the ability to accurately keep track of time, so it will only retain the information provided here for a maximum of about 61 seconds. -| Service data attribute | Optional | Default | Description | -| ---------------------- | -------- | ------- | ----------- | -| `gateway_id` | no | N/A | The `gateway_id` as specified during configuration. -| `date` | yes | Today's date | Date from which the day of week will be extracted. Format: `YYYY-MM-DD`. -| `time` | yes | Current time | Time in 24h format. +| Service data attribute | Optional | Default | Description | +| ---------------------- | -------- | ------------ | ------------------------------------------------------------------------ | +| `gateway_id` | no | N/A | The `gateway_id` as specified during configuration. | +| `date` | yes | Today's date | Date from which the day of week will be extracted. Format: `YYYY-MM-DD`. | +| `time` | yes | Current time | Time in 24h format. | ### Service `opentherm_gw.set_control_setpoint` @@ -117,10 +117,10 @@ Set the central heating control setpoint override on the OpenTherm Gateway. In a normal situation, the thermostat will calculate and control the central heating setpoint on the boiler. Setting this to any value other than 0 will enable the override and allow the OpenTherm Gateway to control this setting. While the override is active, the OpenTherm Gateway will also request your boiler to activate the central heating circuit. For your boiler's actual maximum and minimum supported setpoint value, please see the `slave_ch_max_setp` and `slave_ch_min_setp` [sensors](#sensors). Due to the potential consequences of leaving this setting enabled for prolonged periods, the override will be disabled when Home Assistant is shut down or restarted. **You will only need this if you are writing your own software thermostat.** -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `temperature` | no | The central heating setpoint. Values between `0.0` and `90.0` are accepted, but your boiler may not support the full range. Set to `0` to disable the override. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `temperature` | no | The central heating setpoint. Values between `0.0` and `90.0` are accepted, but your boiler may not support the full range. Set to `0` to disable the override. |
    @@ -136,41 +136,41 @@ been configured to let the room unit control when to keep a small amount of water preheated, this command can influence that. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `dhw_override` | no | The domestic hot water override state. Value should be 0 or 1 to enable the override in off or on state, or "A" to disable the override. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `dhw_override` | no | The domestic hot water override state. Value should be 0 or 1 to enable the override in off or on state, or "A" to disable the override. | ### Service `opentherm_gw.set_hot_water_setpoint` Set the domestic hot water setpoint on the OpenTherm Gateway. Not all boilers support this feature. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `temperature` | no | The domestic hot water setpoint to set on the gateway. Values between 0 and 90 are accepted, but not all boilers support this range. Check the values of the `slave_dhw_min_setp` and `slave_dhw_max_setp` sensors to see the supported range on your boiler. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `temperature` | no | The domestic hot water setpoint to set on the gateway. Values between 0 and 90 are accepted, but not all boilers support this range. Check the values of the `slave_dhw_min_setp` and `slave_dhw_max_setp` sensors to see the supported range on your boiler. | ### Service `opentherm_gw.set_gpio_mode` Configure the GPIO behavior on the OpenTherm Gateway. For an explanation of the possible modes, see [GPIO modes](#gpio-modes) -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `id` | no | The GPIO ID, `A` or `B`. -| `mode` | no | The GPIO mode to be set. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `id` | no | The GPIO ID, `A` or `B`. | +| `mode` | no | The GPIO mode to be set. | ### Service `opentherm_gw.set_led_mode` Configure the function of the LEDs on the OpenTherm Gateway. For a list of possible modes with explanation, see [LED modes](#led-modes) -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `id` | no | The LED ID, accepted values are `A` through `F`. -| `mode` | no | The LED mode to be set. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `id` | no | The LED ID, accepted values are `A` through `F`. | +| `mode` | no | The LED mode to be set. | ### Service `opentherm_gw.set_max_modulation` @@ -182,10 +182,10 @@ Set the maximum modulation level override on the OpenTherm Gateway. In a normal situation, the thermostat will control the maximum modulation level on the boiler. Setting this to any value other than `-1` will enable the override and allow the OpenTherm Gateway to control this setting. Due to the potential consequences of leaving this setting enabled, the override will be disabled when Home Assistant is shut down or restarted. **You will only need this if you are writing your own software thermostat.** -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `level` | no | The maximum modulation level. Accepted values are `-1` through `100`. Set to `-1` to disable the override. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `level` | no | The maximum modulation level. Accepted values are `-1` through `100`. Set to `-1` to disable the override. |
    @@ -198,20 +198,20 @@ Please read [this information](http://otgw.tclcode.com/standalone.html) from the Provide the outside temperature to the thermostat. If your thermostat is unable to display an outside temperature and does not support OTC (Outside Temperature Correction), this has no effect. Note that not all thermostats are able to display the full supported range. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `temperature` | no | The outside temperature to provide to the thermostat. Accepted values are `-40.0` through `64.0`. Any value above `64.0` will clear a previously configured value (suggestion: `99`). +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `temperature` | no | The outside temperature to provide to the thermostat. Accepted values are `-40.0` through `64.0`. Any value above `64.0` will clear a previously configured value (suggestion: `99`). | ### Service `opentherm_gw.set_setback_temperature` Configure the setback temperature on the OpenTherm Gateway. The value you provide here will be used with the GPIO `home` (5) and `away` (6) modes. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified during configuration. -| `temperature` | no | The setback temperature. Accepted values are `0.0` through `30.0`. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------ | +| `gateway_id` | no | The `gateway_id` as specified during configuration. | +| `temperature` | no | The setback temperature. Accepted values are `0.0` through `30.0`. | ## Sensors @@ -529,28 +529,28 @@ Possible modes and their meaning for the GPIO pins are listed here: Bulletpoints and numbers to match the LED mode layout below. {% endcomment %} -* 1\. No function, default for both ports on a freshly flashed chip. -* 2\. Ground - A permanently low output (0V). Could be used for a power LED. -* 3\. Vcc - A permanently high output (5V). Can be used as a short-proof power supply for some external circuitry used by the other GPIO port. -* 4\. LED E - An additional LED if you want to present more than 4 LED functions. -* 5\. LED F - An additional LED if you want to present more than 5 LED functions. -* 6\. Home - Set thermostat to setback temperature when pulled low. -* 7\. Away - Set thermostat to setback temperature when pulled high. -* 8\. DS1820 (GPIO port B only) - Data line for a DS18S20 or DS18B20 temperature sensor used to measure the outside temperature. A 4k7 resistor should be connected between GPIO port B and Vcc. +- 1\. No function, default for both ports on a freshly flashed chip. +- 2\. Ground - A permanently low output (0V). Could be used for a power LED. +- 3\. Vcc - A permanently high output (5V). Can be used as a short-proof power supply for some external circuitry used by the other GPIO port. +- 4\. LED E - An additional LED if you want to present more than 4 LED functions. +- 5\. LED F - An additional LED if you want to present more than 5 LED functions. +- 6\. Home - Set thermostat to setback temperature when pulled low. +- 7\. Away - Set thermostat to setback temperature when pulled high. +- 8\. DS1820 (GPIO port B only) - Data line for a DS18S20 or DS18B20 temperature sensor used to measure the outside temperature. A 4k7 resistor should be connected between GPIO port B and Vcc. ## LED modes Possible LED modes and their meaning are listed here: -* R. Receiving an OpenTherm message from the thermostat or boiler. -* X. Transmitting an OpenTherm message to the thermostat or boiler. -* T. Transmitting or receiving a message on the thermostat interface. -* B. Transmitting or receiving a message on the boiler interface. -* O. Remote setpoint override is active. -* F. Flame is on. -* H. Central heating is on. -* W. Hot water is on. -* C. Comfort mode (Domestic Hot Water Enable) is on. -* E. Transmission error has been detected. -* M. Boiler requires maintenance. -* P. Raised power mode active on thermostat interface. +- R. Receiving an OpenTherm message from the thermostat or boiler. +- X. Transmitting an OpenTherm message to the thermostat or boiler. +- T. Transmitting or receiving a message on the thermostat interface. +- B. Transmitting or receiving a message on the boiler interface. +- O. Remote setpoint override is active. +- F. Flame is on. +- H. Central heating is on. +- W. Hot water is on. +- C. Comfort mode (Domestic Hot Water Enable) is on. +- E. Transmission error has been detected. +- M. Boiler requires maintenance. +- P. Raised power mode active on thermostat interface. diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index 56c1537ef5b..d80562b6892 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -34,19 +34,19 @@ To generate an API key, log in at [the OpenUV website](https://www.openuv.io/). ## Sensors -| Name | Type | Value | -|------|------|-------| -| Current Ozone Level | Sensor | ozone level in du (Dobson Units) | -| Current UV Index | Sensor | UV Index (numerical value) | -| Current UV Level | Sensor | UV Level (as literal) | -| Max UV Index | Sensor | max UV Index for the day (at solar noon) | -| Protection Window | Binary Sensor | whether sunblock protection should be used | -| Skin Type 1 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 1](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | -| Skin Type 2 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 2](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | -| Skin Type 3 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 3](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | -| Skin Type 4 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 4](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | -| Skin Type 5 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 5](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | -| Skin Type 6 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 6](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | +| Name | Type | Value | +| ------------------------------ | ------------- | --------------------------------------------------------------------------------------------------------------------------- | +| Current Ozone Level | Sensor | ozone level in du (Dobson Units) | +| Current UV Index | Sensor | UV Index (numerical value) | +| Current UV Level | Sensor | UV Level (as literal) | +| Max UV Index | Sensor | max UV Index for the day (at solar noon) | +| Protection Window | Binary Sensor | whether sunblock protection should be used | +| Skin Type 1 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 1](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | +| Skin Type 2 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 2](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | +| Skin Type 3 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 3](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | +| Skin Type 4 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 4](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | +| Skin Type 5 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 5](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | +| Skin Type 6 Safe Exposure Time | Sensor | the amount of time [Fitzpatrick skin type 6](https://en.wikipedia.org/wiki/Fitzpatrick_scale) can be in the sun unprotected | ## Updating Data @@ -63,16 +63,16 @@ query the API for new data after it initially loads. To request new data, the Note that in the case of UV and ozone data, selecting any one of: -* Current Ozone Level -* Current UV Index -* Current UV Level -* Max UV Index -* Skin Type 1 Safe Exposure Time -* Skin Type 2 Safe Exposure Time -* Skin Type 3 Safe Exposure Time -* Skin Type 4 Safe Exposure Time -* Skin Type 5 Safe Exposure Time -* Skin Type 6 Safe Exposure Time +- Current Ozone Level +- Current UV Index +- Current UV Level +- Max UV Index +- Skin Type 1 Safe Exposure Time +- Skin Type 2 Safe Exposure Time +- Skin Type 3 Safe Exposure Time +- Skin Type 4 Safe Exposure Time +- Skin Type 5 Safe Exposure Time +- Skin Type 6 Safe Exposure Time ...as the target for the `homeassistant.update_entity` service will update the data for _all_ of these entities. @@ -87,9 +87,9 @@ The Protection Window binary sensor will be `on` when sunblock protection should By default, this occurs anytime the UV index is above 3.5. This behavior can be configured via the config entry options within the UI. Two parameters are given: -* `Starting UV index for the protection window`: the UV index that, when passed, indicates +- `Starting UV index for the protection window`: the UV index that, when passed, indicates protection should be utilized -* `Ending UV index for the protection window`: the UV index that, when passed, indicates +- `Ending UV index for the protection window`: the UV index that, when passed, indicates protection is no longer required ## Examples of Updating Data diff --git a/source/_integrations/oralb.markdown b/source/_integrations/oralb.markdown index 97170cb1d7e..8e6521addd2 100644 --- a/source/_integrations/oralb.markdown +++ b/source/_integrations/oralb.markdown @@ -42,9 +42,9 @@ The integration can discover most Bluetooth-enabled Oral-B toothbrushes. Brushes ## Sensor -* Mode - selected cleaning mode e.g. daily clean. -* Number of sectors - brushing areas set in the **Set Pacer Visualisation** in the brushing preferences in the mobile app. -* Sector - the current sector of brush goal you are in (i.e. if brush goal is 2:00 minutes, and you are at 0:37, you are in sector 2) -* Time - total brushing time in seconds. -* Toothbrush state - whether the toothbrush is running, idle. -* Battery - toothbrush battery percentage. +- Mode - selected cleaning mode e.g. daily clean. +- Number of sectors - brushing areas set in the **Set Pacer Visualisation** in the brushing preferences in the mobile app. +- Sector - the current sector of brush goal you are in (i.e. if brush goal is 2:00 minutes, and you are at 0:37, you are in sector 2) +- Time - total brushing time in seconds. +- Toothbrush state - whether the toothbrush is running, idle. +- Battery - toothbrush battery percentage. diff --git a/source/_integrations/overkiz.markdown b/source/_integrations/overkiz.markdown index 7cad9043011..5824eda96e1 100644 --- a/source/_integrations/overkiz.markdown +++ b/source/_integrations/overkiz.markdown @@ -2,7 +2,7 @@ title: Overkiz description: Instructions on how to integrate hubs whom use the Overkiz platform with Home Assistant. ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index 83546ac5a07..f82e0bda988 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -21,16 +21,16 @@ By default, the integration listens for incoming messages from OwnTracks via HTT ## Configuration 1. To set up OwnTracks in Home Assistant, go to **{% my integrations title="Settings > Devices & Services" %}**. -1. Add the **OwnTracks** integration. - * This will give you the **Webhook** URL as well as the **Encryption key** to use during mobile device configuration (below). +2. Add the **OwnTracks** integration. + - This will give you the **Webhook** URL as well as the **Encryption key** to use during mobile device configuration (below). ### Configuring the app - Android 1. Install the [OwnTracks](https://play.google.com/store/apps/details?id=org.owntracks.android) application for Android. - * If you need a version of OwnTracks without Google Play Services, the "OSS" flavour is available [here](https://github.com/owntracks/android/releases). + - If you need a version of OwnTracks without Google Play Services, the "OSS" flavour is available [here](https://github.com/owntracks/android/releases). -1. In the app, open the sidebar and select **Preferences**, then **Connection**. -1. Change the following settings: +2. In the app, open the sidebar and select **Preferences**, then **Connection**. +3. Change the following settings: - **Mode**: HTTP - **Host**: `` @@ -45,9 +45,8 @@ By default, the integration listens for incoming messages from OwnTracks via HTT ### Configuring the app - iOS 1. [Install the OwnTracks application for iOS.](https://itunes.apple.com/us/app/owntracks/id692424691?mt=8) - -1. In the OwnTracks app, tap the (i) in the top left and select **Settings**. -1. Change the following settings: +2. In the OwnTracks app, tap the (i) in the top left and select **Settings**. +3. Change the following settings: - **Mode**: HTTP - **URL**: `` diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index e247e09598b..f1750843f86 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -50,7 +50,7 @@ name: default: Ping [hostname] {% endconfiguration %} -The sensor exposes the different round trip times values measured by `ping` as attributes: +The sensor exposes the different round trip times in milliseconds measured by `ping` as attributes: - `round_trip_time_mdev` - `round_trip_time_avg` diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index c9b6e14b3d1..3efd880f4c4 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -172,11 +172,11 @@ The integration must be configured with a token for playback commands to work. T #### Music -| Service data attribute | Description | -| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | `entity_id` of the client | +| Service data attribute | Description | +| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `entity_id` | `entity_id` of the client | | `media_content_id` | Quoted JSON containing:
    • `library_name` (Required)
    • `artist_name` or `artist.title`
    • `album_name` or `album.title`
    • `track_name` or `track.title`
    • `track_number` or `track.index`
    • `shuffle` (0 or 1)
    • `allow_multiple` (0 or 1)
    | -| `media_content_type` | `MUSIC` | +| `media_content_type` | `MUSIC` | ##### Examples: @@ -216,11 +216,11 @@ media_content_id: '{ "playlist_name": "The Best of Disco", "shuffle": "1" }' #### TV Episode -| Service data attribute | Description | -| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | `entity_id` of the client | +| Service data attribute | Description | +| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | `entity_id` of the client | | `media_content_id` | Quoted JSON containing:
    • `library_name` (Required)
    • `show_name` or `show.title`
    • `season_number` or `season.index`
    • `episode_number` or `episode.index`
    • `shuffle` (0 or 1)
    • `resume` (0 or 1)
    • `offset` (in seconds)
    • `allow_multiple` (0 or 1)
    | -| `media_content_type` | `EPISODE` | +| `media_content_type` | `EPISODE` | ##### Examples: @@ -250,11 +250,11 @@ media_content_id: '{ "library_name": "News TV", "show_name": "60 Minutes", "epis #### Movie -| Service data attribute | Description | -| ---------------------- | ------------------------------------------------------------------------------------------------------- | -| `entity_id` | `entity_id` of the client | +| Service data attribute | Description | +| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | `entity_id` of the client | | `media_content_id` | Quoted JSON containing:
    • `library_name` (Required)
    • `title`
    • `resume` (0 or 1)
    • `offset` (in seconds)
    | -| `media_content_type` | `movie` | +| `media_content_type` | `movie` | ##### Examples: @@ -272,16 +272,16 @@ Instead of searching for a specific known piece of media, many additional parame These are examples of optional keys that can be included in the `media_content_id` JSON payload customize the search: -* `unwatched`: Restrict search to unwatched items only (`true`, `false`) -* `actor`: Restrict search for movies that include a specific actor -* `collection`: Restrict search within a named Plex collection ("Back to the Future", "Indiana Jones") -* `contentRating`: Restrict search to a specific content rating ("PG", "R") -* `country`: Restrict search to a specific country of origin -* `decade`: Restrict search to a specific decade ("1960", "2010") -* `director`: Restrict search to a specific director -* `genre`: Restrict search to a specific genre ("Animation", "Drama", "Sci-Fi") -* `resolution`: Restrict search to a specific video resolution (480, 720, 1080, "4k") -* `year`: Restrict search to a specific year +- `unwatched`: Restrict search to unwatched items only (`true`, `false`) +- `actor`: Restrict search for movies that include a specific actor +- `collection`: Restrict search within a named Plex collection ("Back to the Future", "Indiana Jones") +- `contentRating`: Restrict search to a specific content rating ("PG", "R") +- `country`: Restrict search to a specific country of origin +- `decade`: Restrict search to a specific decade ("1960", "2010") +- `director`: Restrict search to a specific director +- `genre`: Restrict search to a specific genre ("Animation", "Drama", "Sci-Fi") +- `resolution`: Restrict search to a specific video resolution (480, 720, 1080, "4k") +- `year`: Restrict search to a specific year More parameters and additional details can be found in the `plexapi` library [documentation](https://python-plexapi.readthedocs.io/en/latest/modules/library.html#plexapi.library.LibrarySection.search). @@ -324,15 +324,15 @@ The search will attempt to guess the type of media based on the search parameter ### Compatibility -| Client | Limitations | -| --- | --- | -| Remote clients | Controls are unavailable | -| Apple TV | None | -| iOS | None | -| NVidia Shield | None | -| Plexamp | None (music playback only) | +| Client | Limitations | +| ------------------ | ------------------------------------------ | +| Remote clients | Controls are unavailable | +| Apple TV | None | +| iOS | None | +| NVidia Shield | None | +| Plexamp | None (music playback only) | | Plex Desktop & Web | Controls are unavailable (as of June 2022) | -| Plex HTPC | None | +| Plex HTPC | None | ## Sonos Playback @@ -344,7 +344,7 @@ To play Plex music directly to Sonos speakers, the following requirements must b Call the `media_player.play_media` service with the `entity_id` of a Sonos integration device and `media_content_type` prepended with `plex://`. Both [music](#music) and [playlist](#playlist) `media_content_type` values are supported. -##### Examples: +### Examples: Play a track with advanced filtering on a Sonos Speaker @@ -368,10 +368,10 @@ media_content_id: 'plex://{ "playlist_name": "Party Mix" }' Refresh a Plex library to scan for new and updated media. -| Service data attribute | Required | Description | Example | -| --- | --- | --- | --- | -| `server_name` | No | Name of Plex server to use if multiple servers configured. | "My Plex Server" | -| `library_name` | Yes | Name of Plex library to update. | "TV Shows" | +| Service data attribute | Required | Description | Example | +| ---------------------- | -------- | ---------------------------------------------------------- | ---------------- | +| `server_name` | No | Name of Plex server to use if multiple servers configured. | "My Plex Server" | +| `library_name` | Yes | Name of Plex library to update. | "TV Shows" | ## Notes diff --git a/source/_integrations/profiler.markdown b/source/_integrations/profiler.markdown index 92825c70b9f..8dce2096093 100644 --- a/source/_integrations/profiler.markdown +++ b/source/_integrations/profiler.markdown @@ -20,21 +20,21 @@ The Profiler integration provides a profile which is a set of statistics that id Start the profiler for the specified number of seconds. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `seconds` | yes | The number of seconds to run the profile. Defaults to 60.0 +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------- | +| `seconds` | yes | The number of seconds to run the profile. Defaults to 60.0 | When the profile is complete, Profiler will generate a Python `cprof` and a `callgrind.out` file in your configuration directory. The exact path to these files will appear in a persistent notification so they can be easily located and copied to your desktop. The `cprof` file can be viewed with: -* [SnakeViz](https://jiffyclub.github.io/snakeviz/) -* [Gprof2dot](https://github.com/jrfonseca/gprof2dot) +- [SnakeViz](https://jiffyclub.github.io/snakeviz/) +- [Gprof2dot](https://github.com/jrfonseca/gprof2dot) Additionally, the profiler will generate a `callgrind.out` file that can be viewed with: -* [KCachegrind or QCachegrind](https://kcachegrind.github.io/) -* [Gprof2dot](https://github.com/jrfonseca/gprof2dot) +- [KCachegrind or QCachegrind](https://kcachegrind.github.io/) +- [Gprof2dot](https://github.com/jrfonseca/gprof2dot) The gprof2dot tool generates [DOT](http://www.graphviz.org/doc/info/lang.html) files, which can be converted to images using the `dot` tool from [Graphviz](http://www.graphviz.org/) or viewed directly using [xdot](https://github.com/jrfonseca/xdot.py). The `-e` and `-n` parameters can be used to set the minimum percentage required to include a function in the output file. Observe these examples: @@ -55,9 +55,9 @@ gprof2dot -f pstats profile.1234567890123456.cprof | dot -Tsvg -o profile.svg Start the memory profiler for the specified number of seconds. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `seconds` | yes | The number of seconds to run the profile. Defaults to 60.0 +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------- | +| `seconds` | yes | The number of seconds to run the profile. Defaults to 60.0 | When the memory profile is complete, Profiler will generate a `.hpy` file in your configuration directory. The exact path to these files will appear in a persistent notification so they can be easily located and copied to your desktop. @@ -73,9 +73,9 @@ hpy().pb() Start logging the growth of objects in memory. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0 +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------- | +| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0 | Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks. This service can be run for long periods to find slow leaks. For finding fast leaks, `profiler.start_log_object_sources` is preferred; however, it is much more CPU intensive. @@ -87,10 +87,10 @@ Stop logging the growth of objects in memory. Start logging the growth of objects in memory and attempt to find the source of the new objects. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0 -| `max_objects` | yes | The number of new objects to examine for source information. Defaults to 5 +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------------------------------------------- | +| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0 | +| `max_objects` | yes | The number of new objects to examine for source information. Defaults to 5 | Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks. @@ -102,9 +102,9 @@ Stop logging the growth of objects with sources in memory. ### Service {% my developer_call_service service="profiler.dump_log_objects" %} -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `type` | no | The type of object to dump to the log. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------- | +| `type` | no | The type of object to dump to the log. | When `start_log_objects` highlights the growth of a collection of objects in memory, this service can help investigate. The `repr` of each object that matches `type` will be logged. diff --git a/source/_integrations/prusalink.markdown b/source/_integrations/prusalink.markdown index 7dcecbb4f95..f9c090fd6c8 100644 --- a/source/_integrations/prusalink.markdown +++ b/source/_integrations/prusalink.markdown @@ -24,4 +24,4 @@ To obtain the API key: - On your printer, navigate to **Settings** > **Network** > **PrusaLink**. - The API key is shown at the bottom of the screen. -{% include integrations/config_flow.md %} \ No newline at end of file +{% include integrations/config_flow.md %} diff --git a/source/_integrations/purpleair.markdown b/source/_integrations/purpleair.markdown index 013362fd0b3..b68ff6682b4 100644 --- a/source/_integrations/purpleair.markdown +++ b/source/_integrations/purpleair.markdown @@ -31,6 +31,21 @@ Settings: description: Configure additional settings (e.g., show/hide sensor icons on the map). {% endconfiguration_basic %} +## Creating an API key + +To add this integration, you need a (free) Purple Air API Key. A new account currently comes with 1 million free points. After that, you need to buy additional points to continue to use the API. The current plugin uses ~30K points/day. The 1 million points last about a month. A lack of points will trigger API errors until you buy more points. + +Detailed instructions can be found [here](https://community.purpleair.com/t/creating-api-keys/3951) but in summary you: + +- Create an account at https://develop.purpleair.com/ (which uses Single Sign-On through a Google account). +- On the ['keys'](https://develop.purpleair.com/keys) page press the "plus" button to create an API key. Leave the defaults of **Read** and **Enabled**. +- Go to the ['projects'](https://develop.purpleair.com/projects) page and select the edit (pencil) button on the listed Project. Add points (for example 1,000,000), then select **Update**. +- Go back to the ['keys'](https://develop.purpleair.com/keys) page and copy the API key. It will be a value like XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX. +- Paste that API key into the **API Key** field when creating the integration in Home Assistant. + +Note that if you are using your own sensor, it will need to be set to **Public** to be visible. + + ## Creating an AQI Rating from Raw Particulate Data The PurpleAir API does not provide AQI data; therefore, the integration does not create diff --git a/source/_integrations/qnap.markdown b/source/_integrations/qnap.markdown index c54033180fe..aab6e2b1030 100644 --- a/source/_integrations/qnap.markdown +++ b/source/_integrations/qnap.markdown @@ -9,7 +9,9 @@ ha_domain: qnap ha_config_flow: true ha_platforms: - sensor -ha_integration_type: integration +ha_integration_type: device +ha_codeowners: + - '@disforw' --- The QNAP integration allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). diff --git a/source/_integrations/remote.markdown b/source/_integrations/remote.markdown index a6adec6984a..f8d38397a68 100644 --- a/source/_integrations/remote.markdown +++ b/source/_integrations/remote.markdown @@ -13,8 +13,8 @@ ha_integration_type: entity Keeps track which remotes are in your environment, their state and allows you to control them. - * Maintains a state per remote and a combined state `all_remotes`. - * Registers services `remote/turn_on`, `remote/turn_off`, `remote/toggle`, and `remote/send_command` to control remotes. +- Maintains a state per remote and a combined state `all_remotes`. +- Registers services `remote/turn_on`, `remote/turn_off`, `remote/toggle`, and `remote/send_command` to control remotes. ### Use the services @@ -24,8 +24,8 @@ Go to the **Developer Tools**, then to **Call Service** in the frontend, and cho {"entity_id":"remote.family_room"} ``` -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | Only act on a specific remote, else target all. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------- | +| `entity_id` | yes | Only act on a specific remote, else target all. | See the platform documentation for each type of remote for more detailed examples. diff --git a/source/_integrations/renson.markdown b/source/_integrations/renson.markdown index 5bc7d29e597..36c9ba8d828 100644 --- a/source/_integrations/renson.markdown +++ b/source/_integrations/renson.markdown @@ -4,16 +4,17 @@ description: Instructions on how to integrate Renson Endura Delta sensors into H ha_category: - Sensor ha_release: 2023.7 -ha_iot_class: Local Poll +ha_iot_class: Local Polling ha_config_flow: true ha_codeowners: - '@jimmyd-be' ha_domain: renson ha_platforms: - sensor +ha_integration_type: integration --- The Renson integration pulls in data from the Renson Endura delta device. Most of the sensors that can be monitored from inside the Android/iOS application can be monitored with this integration. -{% include integrations/config_flow.md %} \ No newline at end of file +{% include integrations/config_flow.md %} diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index a6ed97d823e..50507437d80 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -59,6 +59,7 @@ The latency for receiving the events is the best for ONVIF push and the worst fo For redundancy, these sensors are polled every 60 seconds together with the update of all other entities. Not all camera models generate ONVIF push events for all event types, some binary sensors might, therefore, only be polled. For list of Reolink products that support ONVIF see the [Reolink Support Site](https://support.reolink.com/hc/en-us/articles/900000617826). +To ensure you have the best latency possible, refer to the [Reducing latency of motion events](#Reducing_latency_of_motion_events) section. ## Asterisk (*) next to entities listed in this documentation @@ -179,36 +180,42 @@ The latest firmware can be downloaded from the [Reolink download center](https:/ The following models have been tested and confirmed to work: -- C1 Pro -- C2 Pro -- E1 Zoom -- E1 Outdoor -- E1 Outdoor Pro -- RLC-410 -- RLC-410W -- RLC-411 -- RLC-420 -- RLC-510A -- RLC-511 -- RLC-511W -- RLC-520 -- RLC-520A -- RLC-522 -- RLC-810A -- RLC-811A -- RLC-81PA -- RLC-820A -- RLC-822A -- RLC-823A -- RLC-833A -- RLC-1224A -- RLN8-410 NVR -- RLN16-410 NVR -- RLN36 NVR -- Reolink Duo 2 WiFi -- Reolink Duo Floodlight PoE -- Reolink TrackMix (PoE and Wi-Fi) -- Reolink Video Doorbell (PoE and Wi-Fi) +- C1 Pro* +- C2 Pro* +- [CX410](https://reolink.com/product/cx410/) +- [E1 Zoom](https://reolink.com/product/e1-zoom/) +- [E1 Outdoor](https://reolink.com/product/e1-outdoor/) +- [E1 Outdoor PoE](https://reolink.com/product/e1-outdoor-poe/) +- [E1 Outdoor Pro](https://reolink.com/product/e1-outdoor-pro/) +- RLC-410* +- [RLC-410W](https://reolink.com/product/rlc-410w/) +- RLC-411* +- RLC-420* +- RLC-423* +- [RLC-510A](https://reolink.com/product/rlc-510a/) +- RLC-511* +- RLC-511W* +- [RLC-511WA](https://reolink.com/product/rlc-511wa/) +- RLC-520* +- [RLC-520A](https://reolink.com/product/rlc-520a/) +- RLC-522* +- [RLC-810A](https://reolink.com/product/rlc-810a/) +- [RLC-811A](https://reolink.com/product/rlc-811a/) +- [RLC-81PA](https://reolink.com/product/rlc-81pa/) +- [RLC-820A](https://reolink.com/product/rlc-820a/) +- [RLC-822A](https://reolink.com/product/rlc-822a/) +- [RLC-823A](https://reolink.com/product/rlc-823a/) +- [RLC-833A](https://reolink.com/product/rlc-833a/) +- [RLC-1224A](https://reolink.com/product/rlc-1224a/) +- [RLN8-410 NVR](https://reolink.com/product/rln8-410/) +- [RLN16-410 NVR](https://reolink.com/product/rln16-410/) +- [RLN36 NVR](https://reolink.com/product/rln36/) +- [Reolink Duo 2 WiFi](https://reolink.com/product/reolink-duo-wifi/) +- [Reolink Duo Floodlight PoE](https://reolink.com/product/reolink-duo-floodlight-poe/) +- Reolink TrackMix ([PoE](https://reolink.com/product/reolink-trackmix-poe/) and [Wi-Fi](https://reolink.com/product/reolink-trackmix-wifi/)) +- Reolink Video Doorbell ([PoE](https://reolink.com/product/reolink-video-doorbell/) and [Wi-Fi](https://reolink.com/product/reolink-video-doorbell-wifi/)) + +*These models are discontinued and not sold anymore, they will continue to work with Home Assistant. Battery-powered cameras are not yet supported. @@ -256,3 +263,16 @@ Then power up the camera while pointing it at the QR code. It takes about a minu - 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. - Do not set a static IP in the Reolink device itself, but leave the **Connection Type** on **DHCP** under **Settings** > **Network** > **Network Information** > **Set Up**. If you set it to **static** on the Reolink device itself, this is known to cause incorrect DHCP requests on the network. The incorrect DHCP request causes Home Assistant to use the wrong IP address for the camera, resulting in connection issues. The issue originates from the Reolink firmware, which keeps sending DCHP requests even when you set a static IP address in the Reolink device. + +### Reducing latency of motion events + +ONVIF push will result in slightly faster state changes of the binary motion/AI event sensors than ONVIF long polling. +However, ONVIF push has some additional network configuration requirements: + +- Reolink products can not push motion events to an HTTPS address (SSL). +Therefore, make sure a (local) HTTP address at which HA is reachable is configured under **Home Assistant URL** in the {% my network title="network settings" %}. +A valid address could, for example, be `http://192.168.1.10:8123` where `192.168.1.10` is the IP of the Home Assistant device". + +- Since a HTTP address is needed, Reolink push is incompatible with a global SSL certificate. +Therefore, ensure no Global SSL certificate is configured in the [`configuration.yaml` under HTTP](/integrations/http/#ssl_certificate). +An SSL certificate can still be enforced for external connections, by, for instance, using the [NGINX add-on](https://github.com/home-assistant/addons/tree/master/nginx_proxy) or [NGINX Proxy Manager add-on](https://github.com/hassio-addons/addon-nginx-proxy-manager) instead of a globally enforced SSL certificate. diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown index d29dd5890d9..ead521e0b13 100644 --- a/source/_integrations/repetier.markdown +++ b/source/_integrations/repetier.markdown @@ -104,8 +104,8 @@ camera: To generate the needed API-key do the following: -* Go to your Repetier Server web-console -* Push the settings icon (the gear icon) -* Select User Profiles. -* Create a new user, deselect all options and click Create User. -* Edit the newly created user and take note of the API-key for this user, that's the one to use in the Home Assistant Settings +- Go to your Repetier Server web-console +- Push the settings icon (the gear icon) +- Select User Profiles. +- Create a new user, deselect all options and click Create User. +- Edit the newly created user and take note of the API-key for this user, that's the one to use in the Home Assistant Settings diff --git a/source/_integrations/rexel.markdown b/source/_integrations/rexel.markdown index a003b45f259..540f84a8277 100644 --- a/source/_integrations/rexel.markdown +++ b/source/_integrations/rexel.markdown @@ -2,7 +2,7 @@ title: Rexel Energeasy Connect description: Connect and control your Rexel Energeasy Connect devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index ebe82669094..60e1c80f055 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -17,7 +17,7 @@ ha_codeowners: ha_integration_type: integration --- -The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/en/21-rflink-). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/21-rflink-). RFLink Gateway is an Arduino Mega firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). The 433 MHz spectrum is used by many manufacturers mostly using their own protocol/standard and includes devices like: light switches, blinds, weather stations, alarms and various other sensors. @@ -101,7 +101,7 @@ Tested with Wifi serial bridge [esp-link V2.2.3](https://github.com/jeelabs/esp-
    -Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for IKEA Ansluta and Philips Living Colors) +Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://aliexpress.com/item/32238089139.html) is recommended for the CC2500 transceiver (used for IKEA Ansluta and Philips Living Colors)
    diff --git a/source/_integrations/ridwell.markdown b/source/_integrations/ridwell.markdown index eeadaf87081..4f07405fb97 100644 --- a/source/_integrations/ridwell.markdown +++ b/source/_integrations/ridwell.markdown @@ -25,9 +25,9 @@ The Ridwell integration allows users to track waste recycling pickups scheduled The pickup sensor contains a `pickup_types` state attribute, which contains: -* The items being picked up during this particular event -* The category of each item -* The quantity of each item +- The items being picked up during this particular event +- The category of each item +- The quantity of each item For example: diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown index bc45189bf82..9197c2bf208 100644 --- a/source/_integrations/rituals_perfume_genie.markdown +++ b/source/_integrations/rituals_perfume_genie.markdown @@ -16,6 +16,7 @@ ha_codeowners: ha_domain: rituals_perfume_genie ha_platforms: - binary_sensor + - diagnostics - number - select - sensor diff --git a/source/_integrations/roborock.markdown b/source/_integrations/roborock.markdown index 0b2212c83f5..9d65669a263 100644 --- a/source/_integrations/roborock.markdown +++ b/source/_integrations/roborock.markdown @@ -16,6 +16,7 @@ ha_codeowners: - '@Lash-L' ha_domain: roborock ha_platforms: + - diagnostics - select - sensor - switch @@ -27,7 +28,7 @@ The Roborock integration allows you to control your [Roborock](https://us.roboro 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. +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. The device communicates on port 58867. Depending on your firewall, you may need to allow communication from Home Assistant to your vacuum on that port. {% include integrations/config_flow.md %} @@ -43,7 +44,7 @@ As of right now - no. When the vacuum is disconnected from the internet, it will 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. +We are working on adding a lot of features to the core integration. We have reverse-engineered over [100 commands](https://python-roborock.readthedocs.io/en/latest/api_commands.html). The documentation is currently very bare-bones, and we are looking for users to help us make it more complete. 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 @@ -53,13 +54,14 @@ We are working on adding a lot of features to the core integration. We have reve ### How can I clean a specific room? We plan to make the process simpler in the future, but for now, it is a multi-step process. -1) Enable debug logging for this integration and reload it. -2) Search your logs for 'Got home data' and then find the attribute rooms. -3) Write the rooms down; they have a name and 6 digit ID. -4) Go to **Developer Tools** > **Services** > **Vacuum: Send Command**. Select your vacuum as the entity and 'get_room_mapping' as the command. -5) Go back to your logs and look at the response to `get_room_mapping`. This is a list of the 6-digit IDs you saw earlier to 2-digit IDs. In your original list of room names and 6-digit IDs, replace the 6-digit ID with its pairing 2-digit ID. -6) Now, you have the 2-digit ID that your vacuum uses to describe a room. -7) Go back to **Developer Tools** > **Services** > **Vacuum: Send Command** then type `app_segment_clean` as your command and 'segments' with a list of the 2-digit IDs you want to clean. Then, add `repeat` with a number (ranging from 1 to 3) to determine how many times you want to clean these areas. +1. Make sure to first name the rooms in the Roborock app; otherwise, they won't appear in the debug log. +2. [Enable debug logging](/docs/configuration/troubleshooting/#enabling-debug-logging) for this integration and reload it. +3. Search your logs for 'Got home data' and find the attribute rooms. +4. Write the rooms down; they have a name and 6 digit ID. +5. Go to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Vacuum: Send Command**" %}. Select your vacuum as the entity and `get_room_mapping` as the command. +6. Go back to your logs and look at the response to `get_room_mapping`. This is a list of the 6-digit IDs you saw earlier to 2-digit IDs. In your original list of room names and 6-digit IDs, replace the 6-digit ID with its pairing 2-digit ID. +7. Now, you have the 2-digit ID that your vacuum uses to describe a room. +8. Go back to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Vacuum: Send Command**" %} then type `app_segment_clean` as your command and `segments` with a list of the 2-digit IDs you want to clean. Then, add `repeat` with a number (ranging from 1 to 3) to determine how many times you want to clean these areas. Example: ```yaml diff --git a/source/_integrations/roon.markdown b/source/_integrations/roon.markdown index 78a39506701..2aca290e722 100644 --- a/source/_integrations/roon.markdown +++ b/source/_integrations/roon.markdown @@ -20,24 +20,24 @@ This integration uses Roon Core, a Roon application that runs on a machine on yo ## Configuration -1. From the Home Assistant front-end, go to {% my integrations title="**Settings** > **Devices & Services**" %}. On the **Roon** integration, select the cogwheel. Then, select **Configure**. -1. Home Assistant will then try to find your Roon Core - if it is successful it will display `Authorize HomeAssistant in Roon`. Select **Submit** and skip to step 4. -1. If your Roon Core is not automatically found, enter the `Hostname` or `IP address` for the Roon Core machine when requested and select **Submit**. -1. Home Assistant will then contact your Roon Core and ask to be authorized. You will need to enable this extension in the Room Application. Go to **Settings** and then **Extensions**. There, you will see an entry for Home Assistant with a button next to it. Select **Enable**. -1. Roon core will then provide Home Assistant with the details of your media players. -1. In Home Assistant you can then pick an area for each of your music players, and add them to Home Assistant. +1. From the Home Assistant front-end, go to {% my integrations title="**Settings** > **Devices & Services**" %}. Select the **Roon** integration. Then, select **Configure**. +2. Home Assistant will then try to find your Roon Core - if it is successful it will display `Authorize HomeAssistant in Roon`. Select **Submit** and skip to step 4. +3. If your Roon Core is not automatically found, enter the `Hostname` or `IP address` for the Roon Core machine when requested and select **Submit**. +4. Home Assistant will then contact your Roon Core and ask to be authorized. You will need to enable this extension in the Room Application. Go to **Settings** and then **Extensions**. There, you will see an entry for Home Assistant with a button next to it. Select **Enable**. +5. Roon core will then provide Home Assistant with the details of your media players. +6. In Home Assistant you can then pick an area for each of your music players, and add them to Home Assistant. ## Services -#### Service `media_player.play_media` +### Service `media_player.play_media` Roon uses a path based on the roon browser hierarchy to specify which media to play. You can find this by using the media browser, or by following the examples below. If roon can't follow the path you will find an error in the log that will show which part of the path roon could not follow, and the possibilities at that point. -| Service data attribute | Optional | Description | -| -----------------------| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. To target all media players, use `all`. | -| `media_content_id` | no | A path to specify the media you want to play, see examples below. | -| `media_content_type` | no | Only `music` is supported | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------- | +| `entity_id` | yes | Target a specific media player. To target all media players, use `all`. | +| `media_content_id` | no | A path to specify the media you want to play, see examples below. | +| `media_content_type` | no | Only `music` is supported | For example to play the album Harvest by Neil Young you should set `media_content_id` to `Library/Artists/Neil Young/Harvest` and to play BBC Radio 4 you would set `media_content_id` to `My Live Radio/BBC Radio 4` @@ -45,7 +45,7 @@ Roon uses a path based on the roon browser hierarchy to specify which media to p Transfer playback from one player to another. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | id of the source player. -| `transfer_id` | no | id of the destination player. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------- | +| `entity_id` | yes | id of the source player. | +| `transfer_id` | no | id of the destination player. | diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index dd988d79a57..a4138699ae7 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -23,36 +23,7 @@ ha_integration_type: device The `samsungtv` platform allows you to control a [Samsung Smart TV](https://www.samsung.com/uk/tvs/all-tvs/). -### Setup - -Go to the integrations page in your configuration and click on new integration -> Samsung TV. -If your TV is on and you have enabled [SSDP](/integrations/ssdp) discovery, it's likely that you just have to confirm the detected device. - -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. - -### YAML Configuration - -YAML configuration is around for people that prefer YAML. -To use this integration, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -samsungtv: - - host: IP_ADDRESS -``` - -{% configuration %} -host: - description: "The hostname or IP of the Samsung Smart TV, e.g., `192.168.0.10`." - required: true - type: string -name: - description: The name you would like to give to the Samsung Smart TV. - required: false - type: string -{% endconfiguration %} - -After saving the YAML configuration, the TV must be turned on _before_ launching Home Assistant in order for the TV to be registered the first time. +{% include integrations/config_flow.md %} ### Turn on action diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 529300d77c8..30959148f41 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -1,5 +1,5 @@ --- -title: Scenes +title: Scene description: Instructions on how to setup scenes within Home Assistant. ha_category: - Organization @@ -11,6 +11,24 @@ ha_domain: scene ha_integration_type: entity --- +A scene entity is an entity that can restore the state of a group of entities. +Scenes can be user-defined or can be provided through an integration. + +## The state of a scene + +The scene entity is stateless, as in, it cannot have a state like the `on` or +`off` state that, for example, a normal switch entity has. + +Every scene entity does keep track of the timestamp of when the last time +the scene entity was called via the Home Assistant UI or called via +a service call. + +## Scenes created by integrations + +Some integrations like [Philips Hue](/integrations/hue), [MQTT](/integrations/mqtt), and [KNX](/integrations/knx) provide scenes. You can activate them from the Home Assistant UI or via as service calls. In this case, the integration provides the preferred states to restore. + +## Creating a scene + You can create scenes that capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red. Scenes can be created and managed via the user interface using the [Scene Editor](/docs/scene/editor/). They can also be manually configured via `configuration.yaml`. Note that the entity data is not service call parameters, it's a representation of the wanted state: diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index 1fc50d91491..99d38e72257 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -163,7 +163,7 @@ In this section you find some real-life examples of how to use this sensor. Ther ### Home Assistant -The current release Home Assistant is published on [https://www.home-assistant.io/](/) +The current release Home Assistant is published on [homepage](/) {% raw %} @@ -259,3 +259,28 @@ scrape: ``` {% endraw %} + +### Container cleaning by CleanProfs in The Netherlands + +This example gets the container type and container cleaning date for the next two cleanings. + +```yaml +# Example configuration.yaml entry. Change postal code and house number to your own address. +scrape: + - resource: https://crm.cleanprofs.nl/search/planning + method: POST + payload: zipcode=5624JW&street_number=17 + headers: + Content-Type: application/x-www-form-urlencoded + sensor: + - name: "Type container 1" + select: "div.nk-tb-item:nth-child(2) > div:nth-child(1) > span:nth-child(1)" + - name: "Date container 1" + select: "div.nk-tb-item:nth-child(2) > div:nth-child(3) > span:nth-child(1) > span:nth-child(1)" + - name: "Type container 2" + select: "div.nk-tb-item:nth-child(3) > div:nth-child(1) > span:nth-child(1)" + - name: "Date container 2" + select: "div.nk-tb-item:nth-child(3) > div:nth-child(3) > span:nth-child(1) > span:nth-child(1)" + +``` + diff --git a/source/_integrations/screenlogic.markdown b/source/_integrations/screenlogic.markdown index 809cbb10e26..47baf691aeb 100644 --- a/source/_integrations/screenlogic.markdown +++ b/source/_integrations/screenlogic.markdown @@ -34,7 +34,7 @@ The Pentair ScreenLogic integration allows you to integrate your Pentair Intelli ScreenLogic options are set via **Settings** -> **Devices & Services** -> **Pentair ScreenLogic** -> **Options**. -* Seconds between scans - How many seconds between each polling of the ScreenLogic gateway. +-= Seconds between scans - How many seconds between each polling of the ScreenLogic gateway. ## Services diff --git a/source/_integrations/select.markdown b/source/_integrations/select.markdown index 566ee76dccf..05a9f43a8fc 100644 --- a/source/_integrations/select.markdown +++ b/source/_integrations/select.markdown @@ -94,7 +94,7 @@ The {% my developer_call_service service="select.select_option" %} service changes the selected option to a specific desired option provided in the service call using the required `option` service call data. -The service call wil not succeed if the selected option is not available in +The service call will not succeed if the selected option is not available in the list of options for the targeted entity. {% my developer_call_service badge service="select.select_option" %} diff --git a/source/_integrations/sensor.rflink.markdown b/source/_integrations/sensor.rflink.markdown index 453e6e1333b..fb4dbc91cfd 100644 --- a/source/_integrations/sensor.rflink.markdown +++ b/source/_integrations/sensor.rflink.markdown @@ -9,7 +9,7 @@ ha_release: 0.38 ha_domain: rflink --- -The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/en/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example the [Nodo RFLink Gateway](https://www.nodo-shop.nl/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). ## Configuration diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown index c066e1e0d0e..cf0f2d044f7 100644 --- a/source/_integrations/sentry.markdown +++ b/source/_integrations/sentry.markdown @@ -28,10 +28,10 @@ Before configuring the Sentry integration, you'll need to get Sentry account and Follow these steps to get the DSN: 1. Go to **Projects**. -1. Select **Create project**. -1. Fill out the **Give your project a name** and **choose Assign a Team** fields and select the **Create project** button. -1. Select the **Get your DSN** link in top of the page. - * Your DSN is now visible and looks like +2. Select **Create project**. +3. Fill out the **Give your project a name** and **choose Assign a Team** fields and select the **Create project** button. +4. Select the **Get your DSN** link in top of the page. + - Your DSN is now visible and looks like {% include integrations/config_flow.md %} @@ -46,6 +46,6 @@ The Sentry integration provides settings to: - Ability to send out events originating from third-party Python packages. - Enable performance tracing and tune the tracing sample rate used. -To change the settings, go to {% my integrations title="**Settings** > **Devices & Services**" %}. On the already installed **Sentry** integration, select the cogwheel and select **Options**. +To change the settings, go to {% my integrations title="**Settings** > **Devices & Services**" %}. Select the **Sentry** integration. Then, select **Options**. After changing the Sentry settings, you'll need to restart Home Assistant in order to make them effective. diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown index 862ac2455c5..3604453576e 100644 --- a/source/_integrations/serial_pm.markdown +++ b/source/_integrations/serial_pm.markdown @@ -19,14 +19,14 @@ Cheap LED based sensors usually use a GPIO interface that is hard to attach to c At this time, the following sensors are supported: -* oneair,s3 -* novafitness,sds021 -* novafitness,sds011 -* plantower,pms1003 -* plantower,pms5003 -* plantower,pms7003 -* plantower,pms2003 -* plantower,pms3003 +- oneair,s3 +- novafitness,sds021 +- novafitness,sds011 +- plantower,pms1003 +- plantower,pms5003 +- plantower,pms7003 +- plantower,pms2003 +- plantower,pms3003 ## Configuration diff --git a/source/_integrations/sharkiq.markdown b/source/_integrations/sharkiq.markdown index 3950504eb9c..c1dcdcb217e 100644 --- a/source/_integrations/sharkiq.markdown +++ b/source/_integrations/sharkiq.markdown @@ -28,11 +28,6 @@ Currently supported services are: - `stop` - `return_to_base` - `locate` +- `set_fan_speed` If `pause` does not work for you, then it is not supported by your vacuum. The `stop` service will provide similar functionality. - -## Troubleshooting - -### Integration Disconnecting - -If the integration frequently disconnects and you have an ad blocker runner like [Pi-hole](https://pi-hole.net/) or [AdGuard](https://adguard.com) add `ads-field.aylanetworks.com` to the Allow list . This domain is needed for the connection and can be part of the automatic blocking because of `ads` being part of the subdomain. diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 7060b1cf021..4109072a1d7 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -53,7 +53,7 @@ We recommend using `unicast` for communication. To enable this, enter the local ## Shelly device configuration (generation 2) -Generation 2 devices use the `RPC` protocol to communicate with the integration. Battery powered devices need manual outbound websocket configuration, Navigate to the local IP address of your Shelly device, **Settings** >> **Connectivity** >> **Outbound websocket** and check the box **Enable Outbound Websocket**, under server enter the following address: +Generation 2 devices use the `RPC` protocol to communicate with the integration. Battery powered devices need manual outbound WebSocket configuration, Navigate to the local IP address of your Shelly device, **Settings** >> **Connectivity** >> **Outbound WebSocket** and check the box **Enable Outbound WebSocket**, under server enter the following address: `ws://` + `Home_Assistant_local_ip_address:Port` + `/api/shelly/ws` (for example: `ws://192.168.1.100:8123/api/shelly/ws`), click **Apply** to save the settings. diff --git a/source/_integrations/sigfox.markdown b/source/_integrations/sigfox.markdown index 4557896abaa..c75f5968ba8 100644 --- a/source/_integrations/sigfox.markdown +++ b/source/_integrations/sigfox.markdown @@ -18,9 +18,9 @@ ha_integration_type: integration Note that `your_api_login` and `your_api_password` are your **API access credentials** which can be accessed by following: 1. Log into [Sigfox backend](https://backend.sigfox.com) -1. Select `GROUP` -1. Select `API ACCESS` -1. Click on `new` and create new access entry +2. Select `GROUP` +3. Select `API ACCESS` +4. Click on `new` and create new access entry ## Configuration diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index f17f659bcb6..8e62a198107 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -38,11 +38,11 @@ There is currently support for the following device types within Home Assistant: - **Smoke+CO Detector**: reports on the smoke and carbon monoxide sensor status*. - **Water Sensor**: reports on water sensor status*. -* Sensor status is only available for SimpliSafe V3 systems and is updated once every 30 seconds, so information displayed in Home Assistant may be delayed. +- Sensor status is only available for SimpliSafe V3 systems and is updated once every 30 seconds, so information displayed in Home Assistant may be delayed. ## SimpliSafe Plans -SimpliSafe offers several [monitoring plans](https://support.simplisafe.com/articles/alarm-events-monitoring/what-are-the-service-plan-options/6344794a013ba90af0bce6a4). Currently, only the Standard and Interactive Monitoring are known to work with this integration; if you find otherwise, please consider updating this documentation. +SimpliSafe offers several [monitoring plans](https://support.simplisafe.com/articles/alarm-events-monitoring/what-are-the-service-plan-options/6344794a013ba90af0bce6a4). Currently, only the Standard and Fast Protect are known to work with this integration; if you find otherwise, please consider updating this documentation. {% include integrations/config_flow.md %} @@ -62,16 +62,16 @@ Remove a SimpliSafe PIN (by label or PIN value). | Service Data Attribute | Optional | Description | | ---------------------- | -------- | -------------------------------- | -| `label_or_pin` | no | The PIN label or value to remove | +| `label_or_pin` | no | The PIN label or value to remove | ### `simplisafe.set_pin` Set a SimpliSafe PIN. -| Service Data Attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------- | -| `label` | no | The label to show in the SimpliSafe UI | -| `pin` | no | The PIN value to use | +| Service Data Attribute | Optional | Description | +| ---------------------- | -------- | -------------------------------------- | +| `label` | no | The label to show in the SimpliSafe UI | +| `pin` | no | The PIN value to use | ### `simplisafe.system_properties` @@ -79,14 +79,14 @@ Set one or more system properties. | Service Data Attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------------------------------- | -| `alarm_duration` | yes | The number of seconds a triggered alarm should sound | -| `chime_volume` | yes | The volume of the door chime | -| `entry_delay_away` | yes | The number of seconds to delay triggering when entering with an "away" state | -| `entry_delay_home` | yes | The number of seconds to delay triggering when entering with a "home" state | -| `exit_delay_away` | yes | The number of seconds to delay triggering when exiting with an "away" state | -| `exit_delay_home` | yes | The number of seconds to delay triggering when exiting with a "home" state | -| `light` | yes | Whether the light on the base station should display when armed | -| `voice_prompt_volume` | yes | The volume of the base station's voice prompts | +| `alarm_duration` | yes | The number of seconds a triggered alarm should sound | +| `chime_volume` | yes | The volume of the door chime | +| `entry_delay_away` | yes | The number of seconds to delay triggering when entering with an "away" state | +| `entry_delay_home` | yes | The number of seconds to delay triggering when entering with a "home" state | +| `exit_delay_away` | yes | The number of seconds to delay triggering when exiting with an "away" state | +| `exit_delay_home` | yes | The number of seconds to delay triggering when exiting with a "home" state | +| `light` | yes | Whether the light on the base station should display when armed | +| `voice_prompt_volume` | yes | The volume of the base station's voice prompts | ## Events @@ -96,14 +96,14 @@ Set one or more system properties. web and mobile apps. When received, they come with event data that contains the following keys: -* `last_event_changed_by`: the PIN that triggered the event (if appropriate) -* `last_event_type`: the type of event -* `last_event_info`: a human-friendly string describing the event in more detail -* `last_event_sensor_name`: the sensor that triggered the event (if appropriate) -* `last_event_sensor_serial`: the serial number of the sensor that triggered the event (if appropriate) -* `last_event_sensor_type`: the type of sensor that triggered the event (if appropriate) -* `system_id`: the system ID to which the event belongs -* `last_event_timestamp`: the UTC datetime at which the event was received +- `last_event_changed_by`: the PIN that triggered the event (if appropriate) +- `last_event_type`: the type of event +- `last_event_info`: a human-friendly string describing the event in more detail +- `last_event_sensor_name`: the sensor that triggered the event (if appropriate) +- `last_event_sensor_serial`: the serial number of the sensor that triggered the event (if appropriate) +- `last_event_sensor_type`: the type of sensor that triggered the event (if appropriate) +- `system_id`: the system ID to which the event belongs +- `last_event_timestamp`: the UTC datetime at which the event was received For example, when someone rings the doorbell, a `SIMPLISAFE_EVENT` event will fire with the following event data: @@ -133,13 +133,13 @@ For example, when someone rings the doorbell, a `last_event_type` can have the following values: -* `automatic_test` -* `camera_motion_detected` -* `doorbell_detected` -* `device_test` -* `secret_alert_triggered` -* `sensor_paired_and_named` -* `user_initiated_test` +- `automatic_test` +- `camera_motion_detected` +- `doorbell_detected` +- `device_test` +- `secret_alert_triggered` +- `sensor_paired_and_named` +- `user_initiated_test` To build an automation using one of these, use `SIMPLISAFE_EVENT` as an event trigger, with `last_event_type` as the `event_data`. @@ -159,10 +159,10 @@ trigger: messages section of the SimpliSafe web and mobile apps. When received, they come with event data that contains the following keys: -* `category`: The notification category (e.g., `error`) -* `code`: The SimpliSafe code for the notification -* `message`: The actual text of the notification -* `timestamp`: The UTC timestamp of the notification +- `category`: The notification category (e.g., `error`) +- `code`: The SimpliSafe code for the notification +- `message`: The actual text of the notification +- `timestamp`: The UTC timestamp of the notification Note that when Home Assistant restarts, `SIMPLISAFE_NOTIFICATION` events will fire once again for any notifications still active in the SimpliSafe web and mobile apps. To diff --git a/source/_integrations/simu.markdown b/source/_integrations/simu.markdown index 8a4c41e7077..573da357f0a 100644 --- a/source/_integrations/simu.markdown +++ b/source/_integrations/simu.markdown @@ -2,7 +2,7 @@ title: SIMU LiveIn2 description: Connect and control your SIMU LiveIn2 devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 2df8bad9aac..acc12a69753 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -36,28 +36,28 @@ ha_integration_type: integration SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The features of this integration include: 1. Controlling SmartThings devices as Home Assistant entities ([see platforms for supported devices and capabilities](#platforms)). -1. Entities automatically synchronized upon restart of Home Assistant when changed in SmartThings. -1. Support for multiple SmartThings accounts and locations with each represented as an integration instance in Home Assistant. -1. No brokers, bridges, or additional dependencies. +2. Entities automatically synchronized upon restart of Home Assistant when changed in SmartThings. +3. Support for multiple SmartThings accounts and locations with each represented as an integration instance in Home Assistant. +4. No brokers, bridges, or additional dependencies. ## Prerequisites 1. A SmartThings [personal access token](https://account.smartthings.com/tokens). -1. An internet accessible incoming webhook or active Home Assistant Cloud subscription. +2. An internet accessible incoming webhook or active Home Assistant Cloud subscription. ### Personal Access Token (PAT) The PAT is used to create a Home Assistant SmartApp in your SmartThings account during setup of the integration. 1. Log into the [personal access tokens page](https://account.smartthings.com/tokens) and click '[Generate new token](https://account.smartthings.com/tokens/new)' -1. Enter a token name (can be whatever you want), for example, 'Home Assistant' and select the following authorized scopes: +2. Enter a token name (can be whatever you want), for example, 'Home Assistant' and select the following authorized scopes: - Devices (all) - Installed Applications (all) - Apps (all) - Locations (all) - Scenes (all) - Schedules (all) -1. Click 'Generate token'. When the token is displayed copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again. +3. Click 'Generate token'. When the token is displayed copy and save it somewhere safe (such as your keystore) as you will not be able to retrieve it again. ### Webhook @@ -73,14 +73,14 @@ After completing the prerequisite steps above, you are ready to setup the integr {% include integrations/config_flow.md %} 1. Confirm the callback URL is correct. If using Home Assistant Cloud, it will start with `https://hooks.nabuca.casa`. If the URL is not correct, update your Home Assistant configuration, restart, and try again. -1. Enter your Personal Access Token. -1. Select the SmartThings Location to add to Home Assistant. -1. On the window that opens: +2. Enter your Personal Access Token. +3. Select the SmartThings Location to add to Home Assistant. +4. On the window that opens: 1. Login with your SmartThings account (if not already logged in). - 1. Optionally change the display name and click 'Done' at the bottom of the screen. - 1. Authorize the integration by clicking 'Allow' on the bottom right of the screen. - 1. Click 'Close Window' or close it manually. -1. Back in Home Assistant click 'Finish'. + 2. Optionally change the display name and click 'Done' at the bottom of the screen. + 3. Authorize the integration by clicking 'Allow' on the bottom right of the screen. + 4. Click 'Close Window' or close it manually. +5. Back in Home Assistant click 'Finish'.
    @@ -110,13 +110,13 @@ The integration will trigger an event when a device with the [button](https://de } ``` -| Attribute | Description | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. For multi-button devices, the current SmartThings API will no longer pass the ButtonNumber but use a child component_id for each button. The device handler installed on SmartThings must be able to create those child components. | -| `device_id` | The unique id of the device in SmartThings. This can be located in the Home Assistant device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | -| `location_id` | The unique id of the location the device is part of. This can be found in the configuration entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | -| `value` | Describes the action taken on the button. See the [button](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#button) capability reference for a list of possible values (not all are supported by every device). | -| `name` | The name given to the device in SmartThings. | +| Attribute | Description | +| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. For multi-button devices, the current SmartThings API will no longer pass the ButtonNumber but use a child component_id for each button. The device handler installed on SmartThings must be able to create those child components. | +| `device_id` | The unique id of the device in SmartThings. This can be located in the Home Assistant device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | +| `location_id` | The unique id of the location the device is part of. This can be found in the configuration entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). | +| `value` | Describes the action taken on the button. See the [button](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#button) capability reference for a list of possible values (not all are supported by every device). | +| `name` | The name given to the device in SmartThings. | Event data payloads are logged at the debug level, see [debugging](#debugging) for more information. @@ -140,15 +140,15 @@ Support for additional platforms will be added in the future. The SmartThings Binary Sensor platform lets you view devices that have binary sensor-related capabilities. A Binary Sensor entity will be created for each attribute (below) supported by the device. -| Capability | Attribute | On-Value | -| ----------------------------------------------------------------------------------------------------------------------- | -------------- | ---------- | +| Capability | Attribute | On-Value | +| ------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ---------- | | [`accelerationSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#accelerationSensor) | `acceleration` | `active` | | [`contactSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#contactSensor) | `contact` | `open` | -| [`filterStatus`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#filterStatus) | `filterStatus` | `replace` | +| [`filterStatus`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#filterStatus) | `filterStatus` | `replace` | | [`motionSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#motionSensor) | `motion` | `active` | | [`presenceSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#presenceSensor) | `presence` | `present` | | [`tamperAlert`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#tamperAlert) | `tamper` | `detected` | -| [`valve`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#valve) | `valve` | `open` | +| [`valve`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#valve) | `valve` | `open` | | [`waterSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#waterSensor) | `water` | `wet` | ### Climate @@ -159,25 +159,25 @@ The SmartThings Climate platform lets you control devices that have air conditio For a SmartThings Air Conditioner to be represented by the climate platform, it must have all of the following required capabilities: -| Capability | Climate Features | -| ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [`airConditionerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#airConditionerMode) (required) | `hvac mode`, `hvac action` | -| [`airConditionerFanMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#airConditionerFanMode) (required) | `fan mode` | -| [`temperatureMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#temperatureMeasurement) (required) | `temperature` | -| [`thermostatCoolingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatCoolingSetpoint) (required) | `target temp` | -| [`demandResponseLoadControl`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#demandResponseLoadControl) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) | +| Capability | Climate Features | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [`airConditionerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#airConditionerMode) (required) | `hvac mode`, `hvac action` | +| [`airConditionerFanMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#airConditionerFanMode) (required) | `fan mode` | +| [`temperatureMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#temperatureMeasurement) (required) | `temperature` | +| [`thermostatCoolingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatCoolingSetpoint) (required) | `target temp` | +| [`demandResponseLoadControl`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#demandResponseLoadControl) | `drlc_status_duration` (state attribute), `drlc_status_level` (state attribute), `drlc_status_override` (state attribute), `drlc_status_start` (state attribute) | #### Thermostats For a SmartThings thermostat to be represented by the climate platform, it must have all the capabilities from either "set a" _or_ "set b": -| Capability | Climate Features | -| ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -| [`thermostat`](https://developer-preview.smartthings.com/docs/devices/capabilities/deprecated#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` | -| [`thermostatMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatMode) (set b) | `hvac mode` | +| Capability | Climate Features | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| [`thermostat`](https://developer-preview.smartthings.com/docs/devices/capabilities/deprecated#thermostat) (set a) | `hvac mode`, `hvac action`, `target temp high`, `target temp low` and `fan mode` | +| [`thermostatMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatMode) (set b) | `hvac mode` | | [`thermostatCoolingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatCoolingSetpoint) (seb b) | `target temp low` | | [`thermostatHeatingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatHeatingSetpoint) (set b) | `target temp high` | -| [`temperatureMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#temperatureMeasurement) (set b) | +| [`temperatureMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#temperatureMeasurement) (set b) | | [`thermostatOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatOperatingState) | `hvac action` | | [`thermostatFanMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatFanMode) | `fan mode` | | [`relativeHumidityMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#relativeHumidityMeasurement) | `humidity` (state attribute) | @@ -186,29 +186,29 @@ For a SmartThings thermostat to be represented by the climate platform, it must The SmartThings Cover platform lets you control devices that have open/close related capabilities. For a device to be represented by the cover platform, it must have one of the capabilities from "set a" below. -| Capability | Cover Features | -| ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------- | -| [`doorControl`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#doorControl) (set a) | `open` and `close` | +| Capability | Cover Features | +| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | +| [`doorControl`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#doorControl) (set a) | `open` and `close` | | [`garageDoorControl`](https://developer-preview.smartthings.com/docs/devices/capabilities/deprecated#garageDoorControl) (seb a) | `open` and `close` | -| [`windowShade`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#windowShade) (set a) | `open` and `close` | -| [`switchLevel`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#switchLevel) | `position` | -| [`windowShadeLevel`](https://developer.smartthings.com/docs/devices/capabilities/capabilities-reference/#windowShadeLevel) | `position` | -| [`battery`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#battery) | `battery_level` (state attribute) | +| [`windowShade`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#windowShade) (set a) | `open` and `close` | +| [`switchLevel`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#switchLevel) | `position` | +| [`windowShadeLevel`](https://developer.smartthings.com/docs/devices/capabilities/capabilities-reference/#windowShadeLevel) | `position` | +| [`battery`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#battery) | `battery_level` (state attribute) | ### Fan The SmartThings Fan platform lets you control devices that have fan-related capabilities. For a SmartThings device to be represented by the fan platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. -| Capability | Fan Features | -| --------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| Capability | Fan Features | +| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [`fanSpeed`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#fanSpeed) | `speed` (`off`, `low`, `medium`, and `high`) | ### Light The SmartThings Light platform lets you control devices that have light-related capabilities. For a SmartThings device to be represented by the light platform, it must have one or more of the capabilities below in addition to the [`switch`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Switch) capability. -| Capability | Light Features | -| ------------------------------------------------------------------------------------------------------------------- | ----------------------------- | +| Capability | Light Features | +| --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | | [`switchLevel`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#switchLevel) | `brightness` and `transition` | | [`colorControl`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#colorControl) | `color` | | [`colorTemperature`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#colorTemperature) | `color_temp` | @@ -221,62 +221,62 @@ The SmartThings Lock platform lets you control devices that have the [`lock`](ht The SmartThings Sensor platform lets your view devices that have sensor-related capabilities. A Sensor entity is created for each attribute (below) supported by the device. -| Capability | Attributes | -| --------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | -| [`activityLightingMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#activityLightingMode) | `lightingMode` | -| [`airConditionerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#airConditionerMode) | `airConditionerMode` | -| [`airQualitySensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#airQualitySensor) | `airQuality` | -| [`alarm`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#alarm) | `alarm` | -| [`audioVolume`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#audioVolume) | `volume` | -| [`battery`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#battery) | `battery` | -| [`bodyMassIndexMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#bodyMassIndexMeasurement) | `bmiMeasurement` | -| [`bodyWeightMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#bodyWeightMeasurement) | `bodyWeightMeasurement` | -| [`carbonDioxideMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#carbonDioxideMeasurement) | `carbonDioxide` | -| [`carbonMonoxideDetector`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#carbonMonoxideDetector) | `carbonMonoxide` | -| [`carbonMonoxideMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#carbonMonoxideMeasurement) | `carbonMonoxideLevel` | -| [`dishwasherOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#dishwasherOperatingState) | `machineState`, `dishwasherJobState` and `completionTime` | -| [`dryerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#dryerMode) | `dryerMode` | -| [`dryerOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#dryerOperatingState) | `machineState`, `dryerJobState` and `completionTime` | -| [`dustSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#dustSensor) | `fineDustLevel` and `dustLevel` | -| [`energyMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#energyMeter) | `energy` | -| [`equivalentCarbonDioxideMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#equivalentCarbonDioxideMeasurement) | `equivalentCarbonDioxideMeasurement` | -| [`formaldehydeMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#formaldehydeMeasurement) | `formaldehydeLevel` | -| [`gasMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#gasMeter) | `gasMeter`, `meterCalorific`, `meterTime`, and `meterVolume` | -| [`illuminanceMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#illuminanceMeasurement) | `illuminance` | -| [`infraredLevel`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#infraredLevel) | `infraredLevel` | -| [`lock`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#lock) | `lock` | -| [`mediaInputSource`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaInputSource) | `inputSource` | -| [`mediaPlaybackRepeat`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaPlaybackRepeat) | `playbackRepeatMode` | -| [`mediaPlaybackShuffle`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaPlaybackShuffle) | `playbackShuffle` | -| [`mediaPlayback`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaPlayback) | `playbackStatus` | -| [`odorSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#odorSensor) | `odorLevel` | -| [`ovenMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#ovenMode) | `ovenMode` | -| [`ovenOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#ovenOperatingState) | `machineState`, `ovenJobState` and `completionTime` | -| [`ovenSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#ovenSetpoint) | `ovenSetpoint` | -| [`powerConsumptionReport`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#powerConsumptionReport) | `deltaEnergy`, `energy`, `energySaved`, `power`, `powerEnergy` | -| [`powerMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#powerMeter) | `power` | -| [`powerSource`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#powerSource) | `powerSource` | -| [`refrigerationSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#refrigerationSetpoint) | `refrigerationSetpoint` | -| [`relativeHumidityMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#relativeHumidityMeasurement) | `humidity` | -| [`robotCleanerCleaningMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#robotCleanerCleaningMode) | `robotCleanerCleaningMode` | -| [`robotCleanerMovement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#robotCleanerMovement) | `robotCleanerMovement` | -| [`robotCleanerTurboMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#robotCleanerTurboMode) | `robotCleanerTurboMode` | -| [`signalStrength`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#signalStrength) | `lqi` and `rssi` | -| [`smokeDetector`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#smokeDetector) | `smoke` | -| [`temperatureMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#temperatureMeasurement) | `temperature` | -| [`thermostatCoolingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatCoolingSetpoint) | `coolingSetpoint` | -| [`thermostatFanMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatFanMode) | `thermostatFanMode` | -| [`thermostatHeatingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatHeatingSetpoint) | `heatingSetpoint` | -| [`thermostatMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatMode) | `thermostatMode` | -| [`thermostatOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatOperatingState) | `thermostatOperatingState` | -| [`thermostatSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/deprecated#thermostatSetpoint) | `thermostatSetpoint` | -| [`threeAxis`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#threeAxis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) | -| [`tvChannel`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#tvChannel) | `tvChannel` and `tvChannelName` | -| [`tvocMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#tvocMeasurement) | `tvocLevel` | -| [`ultravioletIndex`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#ultravioletIndex) | `ultravioletIndex` | -| [`voltageMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#voltageMeasurement) | `voltage` | -| [`washerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#washerMode) | `washerMode` | -| [`washerOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#washerOperatingState) | `machineState`, `washerJobState` and `completionTime` | +| Capability | Attributes | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | +| [`activityLightingMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#activityLightingMode) | `lightingMode` | +| [`airConditionerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#airConditionerMode) | `airConditionerMode` | +| [`airQualitySensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#airQualitySensor) | `airQuality` | +| [`alarm`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#alarm) | `alarm` | +| [`audioVolume`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#audioVolume) | `volume` | +| [`battery`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#battery) | `battery` | +| [`bodyMassIndexMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#bodyMassIndexMeasurement) | `bmiMeasurement` | +| [`bodyWeightMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#bodyWeightMeasurement) | `bodyWeightMeasurement` | +| [`carbonDioxideMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#carbonDioxideMeasurement) | `carbonDioxide` | +| [`carbonMonoxideDetector`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#carbonMonoxideDetector) | `carbonMonoxide` | +| [`carbonMonoxideMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#carbonMonoxideMeasurement) | `carbonMonoxideLevel` | +| [`dishwasherOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#dishwasherOperatingState) | `machineState`, `dishwasherJobState` and `completionTime` | +| [`dryerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#dryerMode) | `dryerMode` | +| [`dryerOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#dryerOperatingState) | `machineState`, `dryerJobState` and `completionTime` | +| [`dustSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#dustSensor) | `fineDustLevel` and `dustLevel` | +| [`energyMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#energyMeter) | `energy` | +| [`equivalentCarbonDioxideMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#equivalentCarbonDioxideMeasurement) | `equivalentCarbonDioxideMeasurement` | +| [`formaldehydeMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#formaldehydeMeasurement) | `formaldehydeLevel` | +| [`gasMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#gasMeter) | `gasMeter`, `meterCalorific`, `meterTime`, and `meterVolume` | +| [`illuminanceMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#illuminanceMeasurement) | `illuminance` | +| [`infraredLevel`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#infraredLevel) | `infraredLevel` | +| [`lock`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#lock) | `lock` | +| [`mediaInputSource`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaInputSource) | `inputSource` | +| [`mediaPlaybackRepeat`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaPlaybackRepeat) | `playbackRepeatMode` | +| [`mediaPlaybackShuffle`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaPlaybackShuffle) | `playbackShuffle` | +| [`mediaPlayback`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#mediaPlayback) | `playbackStatus` | +| [`odorSensor`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#odorSensor) | `odorLevel` | +| [`ovenMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#ovenMode) | `ovenMode` | +| [`ovenOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#ovenOperatingState) | `machineState`, `ovenJobState` and `completionTime` | +| [`ovenSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#ovenSetpoint) | `ovenSetpoint` | +| [`powerConsumptionReport`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#powerConsumptionReport) | `deltaEnergy`, `energy`, `energySaved`, `power`, `powerEnergy` | +| [`powerMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#powerMeter) | `power` | +| [`powerSource`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#powerSource) | `powerSource` | +| [`refrigerationSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#refrigerationSetpoint) | `refrigerationSetpoint` | +| [`relativeHumidityMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#relativeHumidityMeasurement) | `humidity` | +| [`robotCleanerCleaningMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#robotCleanerCleaningMode) | `robotCleanerCleaningMode` | +| [`robotCleanerMovement`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#robotCleanerMovement) | `robotCleanerMovement` | +| [`robotCleanerTurboMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#robotCleanerTurboMode) | `robotCleanerTurboMode` | +| [`signalStrength`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#signalStrength) | `lqi` and `rssi` | +| [`smokeDetector`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#smokeDetector) | `smoke` | +| [`temperatureMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#temperatureMeasurement) | `temperature` | +| [`thermostatCoolingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatCoolingSetpoint) | `coolingSetpoint` | +| [`thermostatFanMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatFanMode) | `thermostatFanMode` | +| [`thermostatHeatingSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatHeatingSetpoint) | `heatingSetpoint` | +| [`thermostatMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatMode) | `thermostatMode` | +| [`thermostatOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#thermostatOperatingState) | `thermostatOperatingState` | +| [`thermostatSetpoint`](https://developer-preview.smartthings.com/docs/devices/capabilities/deprecated#thermostatSetpoint) | `thermostatSetpoint` | +| [`threeAxis`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#threeAxis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) | +| [`tvChannel`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#tvChannel) | `tvChannel` and `tvChannelName` | +| [`tvocMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#tvocMeasurement) | `tvocLevel` | +| [`ultravioletIndex`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#ultravioletIndex) | `ultravioletIndex` | +| [`voltageMeasurement`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#voltageMeasurement) | `voltage` | +| [`washerMode`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#washerMode) | `washerMode` | +| [`washerOperatingState`](https://developer-preview.smartthings.com/docs/devices/capabilities/proposed#washerOperatingState) | `machineState`, `washerJobState` and `completionTime` | ### Scene @@ -286,8 +286,8 @@ The SmartThings Scene platform lets you activate scenes defined in SmartThings w The SmartThings Switch platform lets you control devices that have the [`switch`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#switch) capability that are not already represented by a more specific platform. The following optional capabilities will provide energy and power utilization information: -| Capability | Switch Features | -| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| Capability | Switch Features | +| ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [`energyMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#energyMeter) | energy consumption (`today_energy_kwh` state attribute) | | [`powerMeter`](https://developer-preview.smartthings.com/docs/devices/capabilities/capabilities-reference#powerMeter) | power consumption (`current_power_w` state attribute) | @@ -331,8 +331,8 @@ This error message occurs when all of the SmartThings locations under the accoun #### Webhook Troubleshooting Checklist 1. Ensure external URL is properly set to the _external address_ that Home Assistant is available to the internet. SmartThings must be able to reach this address. -1. Validate there are no problems with your certificate or SSL configuration by using an online checker, such as [https://www.digicert.com/help/](https://www.digicert.com/help/). -1. Some reverse proxy configuration settings can interfere with communication from SmartThings. For example, TLSv1.3 is not supported. Setting the supported cipher suite too restrictly will prevent handshaking. The following NGINX SSL configuration is known to work: +2. Validate there are no problems with your certificate or SSL configuration by using an online checker, such as [https://www.digicert.com/help/](https://www.digicert.com/help/). +3. Some reverse proxy configuration settings can interfere with communication from SmartThings. For example, TLSv1.3 is not supported. Setting the supported cipher suite too restrictly will prevent handshaking. The following NGINX SSL configuration is known to work: ```nginx # cert.crt also contains intermediate certificates ssl_certificate /path/to/cert.crt; @@ -346,7 +346,7 @@ This error message occurs when all of the SmartThings locations under the accoun ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ``` -1. While the error message (above) is being displayed, run the following command from outside your local network to confirm it is responding to the ping lifecycle event: +4. While the error message (above) is being displayed, run the following command from outside your local network to confirm it is responding to the ping lifecycle event: ```bash curl -X POST https://{EXTERNAL_URL}/api/webhook/{WEBHOOK_ID} -H "Content-Type: application/json; charset=utf-8" -d $'{"lifecycle": "PING", "executionId": "00000000-0000-0000-0000-000000000000", "locale": "en", "version": "1.0.0", "pingData": { "challenge": "00000000-0000-0000-0000-000000000000"}}' ``` diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index 72f41d0fd9a..631dae8101d 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -2,7 +2,7 @@ title: Somfy description: Connect and control your Somfy devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/spc.markdown b/source/_integrations/spc.markdown index 8a27c774e9a..439ef80f94f 100644 --- a/source/_integrations/spc.markdown +++ b/source/_integrations/spc.markdown @@ -38,7 +38,7 @@ api_url: required: true type: string ws_url: - description: URL of the SPC Web Gateway websocket, e.g., `ws://:8088/ws/spc`. + description: URL of the SPC Web Gateway WebSocket, e.g., `ws://:8088/ws/spc`. required: true type: string {% endconfiguration %} diff --git a/source/_integrations/starlingbank.markdown b/source/_integrations/starlingbank.markdown index f13bbc6b8e9..173aa1ceb4b 100644 --- a/source/_integrations/starlingbank.markdown +++ b/source/_integrations/starlingbank.markdown @@ -13,9 +13,9 @@ ha_integration_type: integration The Starling Bank sensor platform allows you to monitor your account balance data as sensors in Home Assistant. -* Turn off the lights when money's tight? -* Play a song when you reach a savings goal? -* Sound an alarm if you go into your overdraft? +- Turn off the lights when money's tight? +- Play a song when you reach a savings goal? +- Sound an alarm if you go into your overdraft? You can find more information about Starling Bank at [their website](https://www.starlingbank.com/). Information on their API can be found on their [developers site](https://developer.starlingbank.com/). diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown index 56551de695d..5fcd4d483f1 100644 --- a/source/_integrations/stt.markdown +++ b/source/_integrations/stt.markdown @@ -1,10 +1,10 @@ --- title: Speech-to-text (STT) description: Instructions on how to set up speech-to-text (STT) with Home Assistant. -ha_release: "0.102" +ha_release: '0.102' ha_codeowners: - - "@home-assistant/core" - - "@pvizeli" + - '@home-assistant/core' + - '@pvizeli' ha_domain: stt ha_quality_scale: internal ha_category: [] diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index 874f3e622eb..92a09903256 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -38,7 +38,7 @@ If that is the case, you can configure it as described in the next paragraphs. ## YAML Configuration -Alternatlively, this integration can be configured and set up manually via YAML +Alternatively, this integration can be configured and set up manually via YAML instead. To enable the sun integration in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/switch.rflink.markdown b/source/_integrations/switch.rflink.markdown index 29936fc2f8d..7316083e596 100644 --- a/source/_integrations/switch.rflink.markdown +++ b/source/_integrations/switch.rflink.markdown @@ -9,7 +9,7 @@ ha_release: 0.38 ha_domain: rflink --- -The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/en/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). +The `rflink` integration supports devices that use [RFLink gateway firmware](https://www.rflink.nl/download.php), for example, the [Nodo RFLink Gateway](https://www.nodo-shop.nl/21-rflink-). RFLink gateway is an Arduino firmware that allows two-way communication with a multitude of RF wireless devices using cheap hardware (Arduino + transceiver). First, you have to set up your [RFLink hub](/integrations/rflink/). diff --git a/source/_integrations/switch_as_x.markdown b/source/_integrations/switch_as_x.markdown index 7d9f0ca600f..2e467e67fb6 100644 --- a/source/_integrations/switch_as_x.markdown +++ b/source/_integrations/switch_as_x.markdown @@ -1,5 +1,5 @@ --- -title: Switch as X +title: Change device type of a switch description: Instructions on how to convert any Home Assistant switch into something else. ha_category: - Cover @@ -25,7 +25,7 @@ ha_platforms: ha_integration_type: helper --- -The Switch as X integrations lets you convert any Home Assistant switch into +The **Change device type of a switch** helper integrations lets you convert any Home Assistant switch into a Home Assistant Light, Cover, Fan, Lock, or Siren. In Home Assistant's world, a wall plug is a switch. And while that is correct @@ -33,7 +33,7 @@ for a wall plug in general, those plugs are often used with e.g, a light fixture or a fan. General-purpose relays are similar, as they are sometimes used for things like locks or garage doors. -Using the Switch as X integration, you can convert those switches into the +Using the **Change device type of a switch** helper integration, you can convert those switches into the entity types that best matches your use case. {% include integrations/config_flow.md name="Switch as X" %} @@ -44,8 +44,8 @@ Type: description: The type of entity you want the switch to become. {% endconfiguration_basic %} -## Switch as X from the existing entity +## **Change device type of a switch** from the existing entity -Where compatible, Switch as X will appear on entity properties. A list of entities can be found in {% my entities title="Settings -> Devices & Services -> Entities" %}. +Where compatible, **Change device type of a switch** will appear on entity properties. A list of entities can be found in **{% my entities title="Settings > Devices & Services > Entities" %}**. -![Entity properties exampl](/images/integrations/switch_as_x/Entities_Properties.png) +![Entity properties example](/images/integrations/switch_as_x/Entities_Properties.png) diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 7ae9871f364..669f0c50646 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -168,3 +168,7 @@ The SwitchBot integration will automatically discover devices once the [Bluetoot "No unconfigured devices found": description: Make sure your devices are powered on and are in range. {% endconfiguration_basic %} + +### Slow connection times + +Move the device closer, or replace the Bluetooth adapter with a faster one. See [Improving connection times](/integrations/bluetooth/#improving-connection-times) for more information. diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown index c14ddca5756..54b10291d65 100644 --- a/source/_integrations/system_log.markdown +++ b/source/_integrations/system_log.markdown @@ -43,23 +43,23 @@ To manually clear the system log, call this service. Write a log entry -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------- | -| `message` | no | Message to log | -| `level` | yes | Log level: debug, info, warning, error, critical. Defaults to 'error'. | -| `logger` | yes | Logger name under which to log the message. Defaults to 'system_log.external'. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------ | +| `message` | no | Message to log | +| `level` | yes | Log level: debug, info, warning, error, critical. Defaults to 'error'. | +| `logger` | yes | Logger name under which to log the message. Defaults to 'system_log.external'. | ## Events Errors and warnings are posted as the event `system_log_event`, so it is possible to write automations that trigger whenever a warning or error occurs. The following information is included in each event: | Field | Description | -|-------------|-----------------------------------------------------------------------------| +| ----------- | --------------------------------------------------------------------------- | | `level` | Either `WARNING` or `ERROR` depending on severity. | | `source` | File that triggered the error, e.g., `core.py` or `media_player/yamaha.py`. | | `exception` | Full stack trace if available, an empty string otherwise. | | `message` | Descriptive message of the error, e.g., "Error handling request". | -| `name` | Name of the integration, e.g., `homeassistant.components.device_tracker` | +| `name` | Name of the integration, e.g., `homeassistant.components.device_tracker` | | `timestamp` | Unix timestamp with as a double, e.g., 1517241010.237416. | Live examples of these events can be found in the Home Assistant log file (`home-assistant.log`) or by just looking in the system log. An example could, for instance, look like this: @@ -109,7 +109,7 @@ This automation will create a persistent notification whenever an error or warni ```yaml automation: - - alias: "Create notifications for "service" errors" + - alias: "Create notifications for 'service' errors" trigger: platform: event event_type: system_log_event diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index 19361b8fb79..01dd5b819e0 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -17,19 +17,19 @@ The `telegram` integration uses [Telegram](https://www.telegram.org) to deliver To create your first [Telegram bot](https://core.telegram.org/bots#how-do-i-create-a-bot), follow these steps: - * Bots are not allowed to contact users. You need to make the first contact from the user for which you want to set up the bot. + - Bots are not allowed to contact users. You need to make the first contact from the user for which you want to set up the bot. 1. Tell Telegram to create a bot for you: - * In Telegram, open a chat with @BotFather and enter `/newbot`. - * Follow the instructions on screen and give your bot a name. - * BotFather will give you a link to your new bot and an HTTP API token. - * Store the token somewhere safe. -1. To get a chat ID, send any message to the [GetIDs bot](https://t.me/getidsbot). - * Then, enter `/start`. - * The bot will return your chat ID and the user name. -1. Create a [Telegram bot in Home Assistant](/integrations/telegram_bot): - * Paste this into your configuration file: - * Replace the `api_key` and the `allowed_chat_ids` with your data. + - In Telegram, open a chat with @BotFather and enter `/newbot`. + - Follow the instructions on screen and give your bot a name. + - BotFather will give you a link to your new bot and an HTTP API token. + - Store the token somewhere safe. +2. To get a chat ID, send any message to the [GetIDs bot](https://t.me/getidsbot). + - Then, enter `/start`. + - The bot will return your chat ID and the user name. +3. Create a [Telegram bot in Home Assistant](/integrations/telegram_bot): + - Paste this into your [configuration file](/docs/configuration/): + - Replace the `api_key` and the `allowed_chat_ids` with your data. ```yaml # Telegram Bot @@ -40,9 +40,9 @@ To create your first [Telegram bot](https://core.telegram.org/bots#how-do-i-crea - 44441111 ``` -1. Create a notifier: - * Paste this into your configuration file: - * Replace the `name` and the `chat_id` with your data. +4. Create a notifier: + - Paste this into your configuration file: + - Replace the `name` and the `chat_id` with your data. ```yaml # Notifier @@ -51,23 +51,23 @@ To create your first [Telegram bot](https://core.telegram.org/bots#how-do-i-crea name: "sarah" chat_id: 44441111 ``` + - Restart Home Assistant. -1. From the conversation with BotFather, select the link to open a chat with your new bot. -1. In the chat with the new bot, enter `/start`. -1. Test the service: - * Go to [**Developer tools** > **Services** > **YAML mode**](https://my.home-assistant.io/redirect/developer_call_service/?service=homeassistant.turn_on). - * Paste this into the YAML file: - * Replace the `service` and the `message` with your data. +5. From the conversation with BotFather, select the link to open a chat with your new bot. +6. In the chat with the new bot, enter `/start`. +7. Test the service: + - Go to [**Developer tools** > **Services** > **YAML mode**](https://my.home-assistant.io/redirect/developer_call_service/?service=homeassistant.turn_on). + - Paste this into the YAML file: + - Replace the `service` and the `message` with your data. ```yaml service: notify.sarah data: message: "Yay! A message from Home Assistant." ``` - * Select **Call service**. You should now get a message. - -1. You can do more with this. Check out the configuration descriptions and examples below. + - Select **Call service**. You should now get a message. +8. You can do more with this. Check out the configuration descriptions and examples below. ## Methods to retrieve a `chat_id` diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index b544e558962..fe03cc64ed0 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -3,6 +3,10 @@ title: Template description: Instructions on how to integrate Template Sensors into Home Assistant. ha_category: - Binary Sensor + - Button + - Image + - Number + - Select - Sensor ha_release: 0.12 ha_iot_class: Local Push @@ -26,6 +30,7 @@ ha_platforms: - switch - vacuum - weather + - image ha_integration_type: integration --- diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 93c21fd747b..d4e012633d6 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -54,6 +54,7 @@ See [Supported Devices in python-kasa](https://github.com/python-kasa/python-kas - KP125 - KP401 - EP10 +- EP25 ### Power Strips @@ -96,6 +97,12 @@ See [Supported Devices in python-kasa](https://github.com/python-kasa/python-kas Other bulbs may also work, but with limited color temperature range (2700-5000). If you find a bulb isn't reaching the full-color temperature boundaries, submit a bug report to [python-kasa](https://github.com/python-kasa/python-kasa). +## Unsupported devices + +### Plugs + +- KP125M (supported via [Matter](/integrations/matter/#tp-link-tapo-p125m-power-plug), but without energy monitoring features) + ### Random Effect - Service `tplink.random_effect` The light strips allow setting a random effect. diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index ece4f66635c..d6fc8fd75da 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -6,8 +6,8 @@ ha_category: - Text-to-speech ha_release: 0.35 ha_codeowners: - - "@home-assistant/core" - - "@pvizeli" + - '@home-assistant/core' + - '@pvizeli' ha_domain: tts ha_quality_scale: internal ha_platforms: diff --git a/source/_integrations/twilio_call.markdown b/source/_integrations/twilio_call.markdown index 1e045f4e41a..38cee1467fc 100644 --- a/source/_integrations/twilio_call.markdown +++ b/source/_integrations/twilio_call.markdown @@ -12,7 +12,7 @@ ha_integration_type: integration --- The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). -Passed message will be read by Text-To-Speech service. +Passed message will be read by Text-to-speech service. The requirement is that you have setup [Twilio](/integrations/twilio/). diff --git a/source/_integrations/twitch.markdown b/source/_integrations/twitch.markdown index 1afa8d5e270..3ad57ca98c7 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -9,6 +9,8 @@ ha_domain: twitch ha_platforms: - sensor ha_integration_type: integration +ha_codeowners: + - '@joostlek' --- The `twitch` platform will allow you to monitor [Twitch](https://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. diff --git a/source/_integrations/ubiwizz.markdown b/source/_integrations/ubiwizz.markdown index 281945781f9..9eee961b09a 100644 --- a/source/_integrations/ubiwizz.markdown +++ b/source/_integrations/ubiwizz.markdown @@ -2,7 +2,7 @@ title: Ubiwizz description: Connect and control your Ubiwizz devices using the Overkiz integration ha_category: - - Alarm Control Panel + - Alarm - Binary Sensor - Button - Climate diff --git a/source/_integrations/ultraloq.markdown b/source/_integrations/ultraloq.markdown deleted file mode 100644 index e2bdff1ebb0..00000000000 --- a/source/_integrations/ultraloq.markdown +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Ultraloq -description: Connect and control your Ultraloq Z-Wave series devices using the Z-Wave integration -ha_release: '2022.11' -ha_category: - - Lock -ha_domain: ultraloq -ha_integration_type: virtual -works_with: - - zwave -ha_iot_standard: zwave ---- - -
    -There is a bug in the firmware of Ultraloq devices that causes the door state sensor to not be updated and the latch to always be reported as "OPEN".
    -We are fully aware that this is not what you expect from a Works With Home Assistant brand and we are in contact Ultraloq to get this resolved! -
    - -Ultraloq smart locks allow users to enter their homes without a key. The lock can be controlled remotely using the Ultraloq app or by using Home Assistant. U-tec, their parent company, is a member of the Works with Home Assistant partner program. This means they are committed to making sure the Ultraloq Z-Wave products are up-to-date and ready to use with Home Assistant. - -Ultraloq Z-Wave Series smart locks work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). - -To add Ultraloq Z-Wave products, pair them as Z-Wave devices: - -{% my add_zwave_device badge domain=page.ha_domain %} - -[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/) diff --git a/source/_integrations/unifiprotect.markdown b/source/_integrations/unifiprotect.markdown index 12140a85f1c..97a326506a6 100644 --- a/source/_integrations/unifiprotect.markdown +++ b/source/_integrations/unifiprotect.markdown @@ -22,8 +22,8 @@ ha_iot_class: Local Push ha_config_flow: true ha_quality_scale: platinum ha_codeowners: - - '@AngellusMortis' - - '@bdraco' + - "@AngellusMortis" + - "@bdraco" ha_domain: unifiprotect ha_platforms: - binary_sensor @@ -49,9 +49,9 @@ The UniFi Protect integration adds support for retrieving Camera feeds and Senso This Integration supports all UniFi OS Consoles that can run UniFi Protect. Currently, this includes: -* Any UniFi Protect Network Video Recorder (**[UNVR](https://store.ui.com/collections/unifi-protect-nvr/products/unvr)** or **[UNVRPRO](https://store.ui.com/collections/unifi-protect-nvr/products/unvr-pro)**) -* Any UniFi "Dream" device (**[UDMPRO](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-pro)**, **[UDR](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-router)**, or **[UDMSE](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-machine-se)**), _except the base UniFi Dream Machine/UDM_ -* UniFi Cloud Key Gen2 Plus (**[UCKP](https://store.ui.com/collections/unifi-protect-nvr/products/unifi-cloudkey-plus)**) firmware version v2.0.24+ +- Any UniFi Protect Network Video Recorder (**[UNVR](https://store.ui.com/collections/unifi-protect-nvr/products/unvr)** or **[UNVRPRO](https://store.ui.com/collections/unifi-protect-nvr/products/unvr-pro)**) +- Any UniFi "Dream" device (**[UDMPRO](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/udm-pro)**, **[UDR](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-router)**, or **[UDMSE](https://store.ui.com/collections/unifi-network-unifi-os-consoles/products/dream-machine-se)**), _except the base UniFi Dream Machine/UDM_ +- UniFi Cloud Key Gen2 Plus (**[UCKP](https://store.ui.com/collections/unifi-protect-nvr/products/unifi-cloudkey-plus)**) firmware version v2.0.24+ UCKP with Firmware v1.x **do NOT run UniFi OS**, you must upgrade to firmware `[v2.0.24](https://community.ui.com/releases/UniFi-Cloud-Key-Firmware-2-0-24/b6684f1e-8542-4660-bc0b-74e0634448e8)` or newer. @@ -66,6 +66,7 @@ The absolute **minimal** software version is `[v1.20.0](https://community.ui.com **Early Access releases are not supported by Home Assistant.** Using Early Access versions will likely cause your UniFi Protect integration to break unexpectedly. +
    #### Downgrading UniFi Protect @@ -102,12 +103,12 @@ but it is not required. The entities that are created will automatically adjust use has. 1. Login to your _Local Portal_ on your UniFi OS device, and click on _Users_. **Note**: This **must** be done from - the UniFi OS by accessing it directly by IP address (i.e. _Local Portal_), not via `unifi.ui.com` or within the - UniFi Protect app. -2. In the upper right corner, click on _Add User_. -3. Fill out the fields for your user. Be sure the role you assign to the user grants them access to at least one or - more UniFi Protect devices. -4. Click _Add_ in the bottom right. + the UniFi OS by accessing it directly by IP address (i.e. _Local Portal_), not via `unifi.ui.com` or within the + UniFi Protect app. +2. Go to **Admins** from the left hand side menu or [IP address]/admins/users e.g. 192.168.1.1/admins/users. +3. Click on **Add New Admin**. +4. Select **Full Management** for the role. Uncheck **Allow Remote Access** and fill out the fields for your user. +5. Click **Add** in the bottom right. ![UniFi OS User Creation](/images/integrations/unifiprotect/user.png) @@ -118,10 +119,10 @@ you can stream your camera in Home Assistant. This may already be enabled by def check that this is done. To check and enable the feature: 1. Open UniFi Protect and click on _Devices_. -1. Select the camera you want to ensure can stream in UniFi Protect. -1. Click the _Settings_ tab in the top right. -1. Expand the _Advanced_ section at the bottom. -1. Enable a minimum 1 stream out of the 3 available. The Stream with the Highest resolution is the default enabled one. +2. Select the camera you want to ensure can stream in UniFi Protect. +3. Click the _Settings_ tab in the top right. +4. Expand the _Advanced_ section at the bottom. +5. Enable a minimum 1 stream out of the 3 available. The Stream with the Highest resolution is the default enabled one. {% include integrations/config_flow.md %} @@ -144,8 +145,8 @@ and in many cases, get a read-only sensor instead of an editable switch/select/n **Smart Detections**: The following cameras have Smart Detections: -* All "AI" series cameras. This includes the [AI 360](https://store.ui.com/collections/unifi-protect/products/unifi-protect-ai-360) and the [AI Bullet](https://store.ui.com/collections/unifi-protect/products/uvc-ai-bullet). -* All "G4" series cameras. This includes the [G4 Doorbell](https://store.ui.com/collections/unifi-protect/products/uvc-g4-doorbell), [G4 Bullet](https://store.ui.com/collections/unifi-protect/products/uvc-g4-bullet), [G4 Pro](https://store.ui.com/collections/unifi-protect/products/uvc-g4-pro) and [G4 Instant](https://store.ui.com/collections/unifi-protect/products/camera-g4-instant). +- All "AI" series cameras. This includes the [AI 360](https://store.ui.com/collections/unifi-protect/products/unifi-protect-ai-360) and the [AI Bullet](https://store.ui.com/collections/unifi-protect/products/uvc-ai-bullet). +- All "G4" series cameras. This includes the [G4 Doorbell](https://store.ui.com/collections/unifi-protect/products/uvc-g4-doorbell), [G4 Bullet](https://store.ui.com/collections/unifi-protect/products/uvc-g4-bullet), [G4 Pro](https://store.ui.com/collections/unifi-protect/products/uvc-g4-pro) and [G4 Instant](https://store.ui.com/collections/unifi-protect/products/camera-g4-instant). G3 Series cameras do _not_ have Smart detections. @@ -153,41 +154,41 @@ G3 Series cameras do _not_ have Smart detections. Each UniFi Protect camera will get a device in Home Assistant with the following: -* **Camera** - A camera for each camera channel and RTSP(S) combination found for each camera (up to 7). Only the highest resolution RTSPS camera entity will be enabled by default. - * If your camera is a G4 Doorbell Pro, an additional camera entity will be added for the Package Camera. The Package Camera entity will _not_ have streaming capabilities regardless of whether RTSPS is enabled on the channel or not. This is due to the Package Camera having a very low FPS that does not make it compatible with HLS streaming. -* **Media Player** - If your camera has a speaker, you will get a media player entity that allows you to play audio to your camera's speaker. Any audio file URI that is playable by FFmpeg will be able to be played to your speaker, including via the [TTS Say Service](/integrations/tts/#service-say). -* **Privacy Mode** - If your camera allows for Privacy Masks, there will be a configuration switch to toggle a "Privacy Mode" that disables recording, microphone, and a black privacy zone over the whole camera. -* **Sensors** - Sensors include "Is Dark", "Motion Detected", detected object sensors (if the camera supports smart detections), and "Doorbell Chime" (if the camera has a chime). Several diagnostics sensors are added including sensors on uptime, network connection stats, and storage stats. Doorbells will also have a "Voltage" sensor for troubleshooting electrical issues. - * There is one detected object sensor per Smart Detection supported by the camera and a combined sensor for if _any_ object is detected. -* **Device Configuration** - Cameras will get various configuration controls based on the features available to the camera. Currently provided configuration controls: - * configuration sliders for Chime Type, Zoom Level, Microphone Sensitivity, and WDR Level - * configuration switches Overlay Information, Smart Detections types, Status Light, HDR, High FPS mode, System Sounds - * configuration text and select for LCD Screen for doorbells to either set custom messages or use predefined messages -* **Button** - A disabled by default button is added for each camera device. The button will let you reboot your camera device. +- **Camera** - A camera for each camera channel and RTSP(S) combination found for each camera (up to 7). Only the highest resolution RTSPS camera entity will be enabled by default. + - If your camera is a G4 Doorbell Pro, an additional camera entity will be added for the Package Camera. The Package Camera entity will _not_ have streaming capabilities regardless of whether RTSPS is enabled on the channel or not. This is due to the Package Camera having a very low FPS that does not make it compatible with HLS streaming. +- **Media Player** - If your camera has a speaker, you will get a media player entity that allows you to play audio to your camera's speaker. Any audio file URI that is playable by FFmpeg will be able to be played to your speaker, including via the [TTS Say Service](/integrations/tts/#service-say). +- **Privacy Mode** - If your camera allows for Privacy Masks, there will be a configuration switch to toggle a "Privacy Mode" that disables recording, microphone, and a black privacy zone over the whole camera. +- **Sensors** - Sensors include "Is Dark", "Motion Detected", detected object sensors (if the camera supports smart detections), and "Doorbell Chime" (if the camera has a chime). Several diagnostics sensors are added including sensors on uptime, network connection stats, and storage stats. Doorbells will also have a "Voltage" sensor for troubleshooting electrical issues. + - There is one detected object sensor per Smart Detection supported by the camera and a combined sensor for if _any_ object is detected. +- **Device Configuration** - Cameras will get various configuration controls based on the features available to the camera. Currently provided configuration controls: + - configuration sliders for Chime Type, Zoom Level, Microphone Sensitivity, and WDR Level + - configuration switches Overlay Information, Smart Detections types, Status Light, HDR, High FPS mode, System Sounds + - configuration text and select for LCD Screen for doorbells to either set custom messages or use predefined messages +- **Button** - A disabled by default button is added for each camera device. The button will let you reboot your camera device. ### UniFi Protect Floodlights Each UniFi Protect floodlight will get a device in Home Assistant with the following: -* **Light** - A light entity will be added for each floodlight device. The light entity will let you control turning on or off your light as well as adjust the brightness of your floodlight. -* **Sensors** - Sensors are provided for data provided from floodlight devices. Sensors include "Is Dark" and "Motion Detected". -* **Device Configuration** - Floodlights will get configuration controls for the PIR Motion Sensitivity, the Auto-shutoff Duration after detected motion, and Status Light switch -* **Button** - A disabled by default button is added for each floodlight device. The button will let you reboot your floodlight device. +- **Light** - A light entity will be added for each floodlight device. The light entity will let you control turning on or off your light as well as adjust the brightness of your floodlight. +- **Sensors** - Sensors are provided for data provided from floodlight devices. Sensors include "Is Dark" and "Motion Detected". +- **Device Configuration** - Floodlights will get configuration controls for the PIR Motion Sensitivity, the Auto-shutoff Duration after detected motion, and Status Light switch +- **Button** - A disabled by default button is added for each floodlight device. The button will let you reboot your floodlight device. ### UniFi Protect Smart Sensors UniFi Protect smart sensors are a bit different than normal sensors. They are a multi-sensor that can act as a contact sensor (door/window), a motion detector, a light level detector, a humidity sensor, a temperature level sensor, an alarm sound sensor, and/or a leak detector. Each sensor function can be enabled or disabled dynamically. Disabled sensors will be marked as "unavailable". -* **Sensors** - A sensor is provided for each major function of the smart sensor device: - * **Contact** - A contact sensor will be available if the mount type is set as "Door", "Window" or "Garage". - * **Motion Detection** - A motion detection sensor will be available if the mount type is not set to "Leak" and motion detection is enabled. - * **Light Level** - A light level sensor will be available if the mount type is not set to "Leak" and the light sensor is enabled. - * **Humidity** - A humidity sensor will be available if the mount type is not set to "Leak" and the humidity sensor is enabled. - * **Temperature** - A temperature sensor will be available if the mount type is not set to "Leak" and the temperature sensor is enabled. - * **Alarm Sound** - An alarm sensor will be available if the mount type is not set to "Leak" and the alarm sound sensor is enabled. The Alarm Sound sensor can have the values "none", "smoke" and "co". More values may be added over time automatically as UniFi Protect adds support for detecting more alarms. - * **Tamper** - A binary sensor to detect tampering. -* **Device Configuration** - Smart sensors will get configuration controls for the Status Light, enabling/disabling all of the main sensors, selecting the Paired Camera, and changing the Mount Type of the sensor. -* **Button** - A button to clear the tampered state as well as a disabled by default button to restart the device. +- **Sensors** - A sensor is provided for each major function of the smart sensor device: + - **Contact** - A contact sensor will be available if the mount type is set as "Door", "Window" or "Garage". + - **Motion Detection** - A motion detection sensor will be available if the mount type is not set to "Leak" and motion detection is enabled. + - **Light Level** - A light level sensor will be available if the mount type is not set to "Leak" and the light sensor is enabled. + - **Humidity** - A humidity sensor will be available if the mount type is not set to "Leak" and the humidity sensor is enabled. + - **Temperature** - A temperature sensor will be available if the mount type is not set to "Leak" and the temperature sensor is enabled. + - **Alarm Sound** - An alarm sensor will be available if the mount type is not set to "Leak" and the alarm sound sensor is enabled. The Alarm Sound sensor can have the values "none", "smoke" and "co". More values may be added over time automatically as UniFi Protect adds support for detecting more alarms. + - **Tamper** - A binary sensor to detect tampering. +- **Device Configuration** - Smart sensors will get configuration controls for the Status Light, enabling/disabling all of the main sensors, selecting the Paired Camera, and changing the Mount Type of the sensor. +- **Button** - A button to clear the tampered state as well as a disabled by default button to restart the device. #### Tamper Sensor @@ -197,30 +198,30 @@ Once the tamper sensor is triggered, it stays active until manually cleared. A b Each UniFi Protect viewer will get a device in Home Assistant with the following: -* **Liveview Select** - A select control will be added for each viewer device that will allow you to select which liveview is being displayed on the viewer. -* **Button** - A disabled by default button is added for each viewer device. The button will let you reboot your viewer device. +- **Liveview Select** - A select control will be added for each viewer device that will allow you to select which liveview is being displayed on the viewer. +- **Button** - A disabled by default button is added for each viewer device. The button will let you reboot your viewer device. ### UniFi Protect DoorLock Each UniFi Protect door lock will get a device in Home Assistant with the following: -* **Lock** - A lock control will be added to lock and unlock your door lock device. -* **Device Configuration** - Door locks will get configuration controls for the Auto-Lock Timeout, selecting the Paired Camera, and Status Light switch -* **Button** - A disabled by default button is added for each door lock device. The button will let you reboot your door lock device. +- **Lock** - A lock control will be added to lock and unlock your door lock device. +- **Device Configuration** - Door locks will get configuration controls for the Auto-Lock Timeout, selecting the Paired Camera, and Status Light switch +- **Button** - A disabled by default button is added for each door lock device. The button will let you reboot your door lock device. ### UniFi Protect Smart Chime Each UniFi Protect smart chime will get a device in Home Assistant with the following: -* **Button** - A button to trigger the chime manually for each smart chime device. Also, a disabled by default button is added to let you reboot your smart chime device. -* **Device Configuration** - Smart chimes will get a volume slider to adjust the chime's loudness and a sensor for the last time the chime rang. +- **Button** - A button to trigger the chime manually for each smart chime device. Also, a disabled by default button is added to let you reboot your smart chime device. +- **Device Configuration** - Smart chimes will get a volume slider to adjust the chime's loudness and a sensor for the last time the chime rang. ### NVR Your main UniFi Protect NVR device also gets a number of diagnostics sensors that can be used for tracking the state of your UniFi Protect system: -* **Disk Health**: Each disk installed in your NVR will have a disk health sensor. These are simple good/bad sensors and the order is not promised to match the order in UniFi OS. Disk model number is provided as a state attribute though to help map sensor to disk. -* **Utilization and Storage Sensors**: Several other sensors are also added for uptime, hardware utilization, and distribution details of the video on disk. +- **Disk Health**: Each disk installed in your NVR will have a disk health sensor. These are simple good/bad sensors and the order is not promised to match the order in UniFi OS. Disk model number is provided as a state attribute though to help map sensor to disk. +- **Utilization and Storage Sensors**: Several other sensors are also added for uptime, hardware utilization, and distribution details of the video on disk. ## Media Source @@ -234,10 +235,10 @@ The media source is split into 5 folders/levels: 2. Camera Selector - either lets you select all cameras or a specific camera to view events for. 3. Event Selector - either lets you select all events or a specific event type to view events for. 4. Time Selector - filters events for a given time range: - * Last 24 Hours - * Last 7 Days - * Last 30 Days - * By Month since start of recording - selecting a month lets you either view the whole month or a specific date + - Last 24 Hours + - Last 7 Days + - Last 30 Days + - By Month since start of recording - selecting a month lets you either view the whole month or a specific date 5. Event Selector - lets you select the specific event for playback Since the media browser does not have any pagination or filtering, all of the events must be loaded into memory. As a result, the number of events loaded at once is truncated to 10,000 by default. The number of events will be listed at "10000 (TRUNCATED)" if the event count was truncated. You can raise or lower the limit of the number of events that can be loaded using the Config Entry Options. @@ -257,37 +258,37 @@ Below are the accepted identifiers to resolve media. Since events do not necessa Sets the default doorbell message. This will be the message that is automatically selected when a message "expires". -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | -| `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | -| `message` | No | The default message for your Doorbell. Must be less than 30 characters. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------- | +| `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | +| `message` | No | The default message for your Doorbell. Must be less than 30 characters. | ### Service unifiprotect.add_doorbell_text Adds a new custom message for Doorbells. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | -| `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | -| `message` | No | New custom message to add for Doorbells. Must be less than 30 characters. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------- | +| `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | +| `message` | No | New custom message to add for Doorbells. Must be less than 30 characters. | ### Service unifiprotect.remove_doorbell_text Removes an existing message for Doorbells. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | -| `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | -| `message` | No | Existing custom message to remove for Doorbells. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------- | +| `device_id` | No | Any device from the UniFi Protect instance you want to change. In case you have multiple Protect instances. | +| `message` | No | Existing custom message to remove for Doorbells. | ### Service unifiprotect.set_chime_paired_doorbells Use to set the paired doorbell(s) with a smart chime. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ | -| `device_id` | No | The device ID of the Chime you want to pair or unpair doorbells to. | -| `doorbells` | Yes | A target selector for any number of doorbells you want to pair to the chime. No value means unpair all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------- | +| `device_id` | No | The device ID of the Chime you want to pair or unpair doorbells to. | +| `doorbells` | Yes | A target selector for any number of doorbells you want to pair to the chime. No value means unpair all. | ## Views @@ -295,9 +296,9 @@ The integration provides two proxy views to proxy media content from your Home A These URLs work great when trying to send notifications. Home Assistant will automatically sign the URLs and make them safe for external consumption if used in an automation or [notify service](/integrations/notify/). -| View URL | Description | -| ------------------------------------------------------------ | -------------------------------------------------- | -| `/api/unifiprotect/thumbnail/{nvr_id}/{event_id}` | Proxies a JPEG event thumbnail from UniFi Protect. | +| View URL | Description | +| ------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `/api/unifiprotect/thumbnail/{nvr_id}/{event_id}` | Proxies a JPEG event thumbnail from UniFi Protect. | | `/api/unifiprotect/video/{nvr_id}/{camera_id}/{start}/{end}` | Proxies a MP4 video clip from UniFi Protect for a specific camera. Start and end must be in [ISO 8601 format](https://www.iso.org/iso-8601-date-and-time-format.html). | `nvr_id` can either be the UniFi Protect ID of your NVR or the config entry ID for your UniFi Protect integration. `camera_id` can either be the UniFi Protect ID of your camera or an entity ID of any entity provided by the UniFi Protect integration that can be reversed to a UniFi Protect camera (i.e., an entity ID of a detected object sensor). @@ -306,7 +307,7 @@ These URLs work great when trying to send notifications. Home Assistant will aut ### Delay in Video Feed -The default settings on the stream integration will give you a 5-15+ second delay. You can reduce this delay to 1-3 seconds, by enabling [LL-HLS in the stream integration](/integrations/stream/#ll-hls). You will also want to put an HTTP/2 reserve proxy in front of Home Assistant so you can have connection pooling. If you do not add a reverse proxy, you may start to get "Waiting for Websocket..." messages while trying to view too many camera streams at once. One way to do this is using the official NGINX Proxy Add-on: +The default settings on the stream integration will give you a 5-15+ second delay. You can reduce this delay to 1-3 seconds, by enabling [LL-HLS in the stream integration](/integrations/stream/#ll-hls). You will also want to put an HTTP/2 reserve proxy in front of Home Assistant so you can have connection pooling. If you do not add a reverse proxy, you may start to get "Waiting for WebSocket..." messages while trying to view too many camera streams at once. One way to do this is using the official NGINX Proxy Add-on: {% my supervisor_addon addon="core_nginx_proxy" badge %} diff --git a/source/_integrations/vacuum.markdown b/source/_integrations/vacuum.markdown index de3155326c8..7e65a41f08e 100644 --- a/source/_integrations/vacuum.markdown +++ b/source/_integrations/vacuum.markdown @@ -1,10 +1,11 @@ --- title: Vacuum -description: Instructions on how to setup and use vacuum's in Home Assistant. +description: Instructions on how to setup and use vacuums in Home Assistant. ha_release: 0.51 ha_domain: vacuum ha_quality_scale: internal -ha_category: [] +ha_category: + - Vacuum ha_codeowners: - '@home-assistant/core' ha_integration_type: entity @@ -12,111 +13,75 @@ ha_integration_type: entity The `vacuum` integration enables the ability to control home cleaning robots within Home Assistant. -## Configuration +## Services -To use this integration in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/integrations/xiaomi_miio#xiaomi-mi-robot-vacuum). - -```yaml -# Example configuration.yaml entry -vacuum: - - platform: xiaomi_miio - name: Living room - host: 192.168.1.2 -``` - -### Integration services - -Available services: `turn_on`, `turn_off`, `start_pause`, `start`, `pause`, `stop`, `return_to_base`, `locate`, `clean_spot`, `set_fan_speed` and `send_command`. +Available services: `start`, `pause`, `stop`, `return_to_base`, `locate`, `clean_spot`, `set_fan_speed` and `send_command`. Before calling one of these services, make sure your vacuum platform supports it. -#### Service `vacuum.turn_on` - -Start a new cleaning task. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.start` instead. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | - -#### Service `vacuum.turn_off` - -Stop the current cleaning task and return to the dock. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.stop` instead. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | - -#### Service `vacuum.start_pause` - -Start, pause or resume a cleaning task. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.start` and `vacuum.pause` instead. - -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | - -#### Service `vacuum.start` +### Service `vacuum.start` Start or resume a cleaning task. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -#### Service `vacuum.pause` +### Service `vacuum.pause` Pause a cleaning task. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -#### Service `vacuum.stop` +### Service `vacuum.stop` Stop the current activity of the vacuum. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -#### Service `vacuum.return_to_base` +### Service `vacuum.return_to_base` Tell the vacuum to return home. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -#### Service `vacuum.locate` +### Service `vacuum.locate` Locate the vacuum cleaner robot. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -#### Service `vacuum.clean_spot` +### Service `vacuum.clean_spot` Tell the vacuum cleaner to do a spot clean-up. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -#### Service `vacuum.set_fan_speed` +### Service `vacuum.set_fan_speed` Set the fan speed of the vacuum. The `fanspeed` can be a label, as `balanced` or `turbo`, or be a number; it depends on the `vacuum` platform. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -| `fan_speed` | no | Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium', or by percentage, between 0 and 100. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------ | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| `fan_speed` | no | Platform dependent vacuum cleaner fan speed, with speed steps, like 'medium', or by percentage, between 0 and 100. | -#### Service `vacuum.send_command` +### Service `vacuum.send_command` Send a platform-specific command to the vacuum cleaner. -| Service data attribute | Optional | Description | -|---------------------------|----------|-------------------------------------------------------| -| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | -| `command` | no | Command to execute. | -| `params` | yes | Parameters for the command. | +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------------------- | +| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. | +| `command` | no | Command to execute. | +| `params` | yes | Parameters for the command. | diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown index 8df9daa95c7..69ad45ef75f 100644 --- a/source/_integrations/vacuum.mqtt.markdown +++ b/source/_integrations/vacuum.mqtt.markdown @@ -8,322 +8,11 @@ ha_domain: mqtt --- The `mqtt` vacuum integration allows you to control your MQTT-enabled vacuum. -There are two possible message schemas - `legacy` and `state`, chosen by setting the `schema` configuration parameter. -New installations should use the `state` schema as `legacy` is deprecated and might be removed someday in the future. -The `state` schema is preferred because the vacuum will then be represented as a `StateVacuumDevice` which is the preferred parent vacuum entity. -The initial state of the state vacuum entity will set to `unknown` and can be reset by a device by sending a `null` payload as state. The legacy `mqtt` vacuum does not support handling an `unknown` state. - -This documentation has 3 sections. Configuration for `legacy` vacuum with examples, configuration for `state` vacuum with examples and shared section with examples which are the same for both schemas. +The initial state of the MQTT vacuum entity will set to `unknown` and can be reset by a device by sending a `null` payload as state. ## Configuration - - -To add your MQTT vacuum to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -mqtt: - - vacuum: - command_topic: "vacuum/command" -``` - -## Legacy Configuration - -Legacy MQTT vacuum configuration section. - -{% configuration %} -availability: - description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`. - required: false - type: list - keys: - payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online - payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline - topic: - description: An MQTT topic subscribed to receive availability (online/offline) updates. - required: true - type: string - value_template: - description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`." - required: false - type: template -availability_mode: - description: When `availability` is configured, this controls the conditions needed to set the entity to `available`. Valid entries are `all`, `any`, and `latest`. If set to `all`, `payload_available` must be received on all configured availability topics before the entity is marked as online. If set to `any`, `payload_available` must be received on at least one configured availability topic before the entity is marked as online. If set to `latest`, the last `payload_available` or `payload_not_available` received on any configured availability topic controls the availability. - required: false - type: string - default: latest -availability_template: - description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`." - required: false - type: template -availability_topic: - description: The MQTT topic subscribed to receive availability (online/offline) updates. Must not be used together with `availability`. - required: false - type: string -battery_level_template: - description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the battery level of the vacuum. This is required if `battery_level_topic` is set. - required: false - type: template -battery_level_topic: - description: The MQTT topic subscribed to receive battery level values from the vacuum. - required: false - type: string -charging_template: - description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the charging state of the vacuum. This is required if `charging_topic` is set. - required: false - type: template -charging_topic: - description: The MQTT topic subscribed to receive charging state values from the vacuum. - required: false - type: string -cleaning_template: - description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the cleaning state of the vacuum. This is required if `cleaning_topic` is set. - required: false - type: template -cleaning_topic: - description: The MQTT topic subscribed to receive cleaning state values from the vacuum. - required: false - type: string -command_topic: - description: The MQTT topic to publish commands to control the vacuum. - required: false - type: string -docked_template: - description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the docked state of the vacuum. This is required if `docked_topic` is set. - required: false - type: template -docked_topic: - description: The MQTT topic subscribed to receive docked state values from the vacuum. - required: false - type: string -enabled_by_default: - description: Flag which defines if the entity should be enabled when first added. - required: false - type: boolean - default: true -encoding: - description: The encoding of the payloads received and published messages. Set to `""` to disable decoding of incoming payload. - required: false - type: string - default: "utf-8" -entity_category: - description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity. - required: false - type: string - default: None -error_template: - description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define potential error messages emitted by the vacuum. This is required if `error_topic` is set. - required: false - type: template -error_topic: - description: The MQTT topic subscribed to receive error messages from the vacuum. - required: false - type: string -fan_speed_list: - description: List of possible fan speeds for the vacuum. - required: false - type: [string, list] -fan_speed_template: - description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the fan speed of the vacuum. This is required if `fan_speed_topic` is set. - required: false - type: template -fan_speed_topic: - description: The MQTT topic subscribed to receive fan speed values from the vacuum. - required: false - type: string -icon: - description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity." - required: false - type: icon -json_attributes_template: - description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation." - required: false - type: template -json_attributes_topic: - description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation. - required: false - type: string -name: - description: The name of the vacuum. Can be set to `null` if only the device name is relevant. - required: false - type: string - default: MQTT Vacuum -object_id: - description: Used instead of `name` for automatic generation of `entity_id` - required: false - type: string -payload_available: - description: The payload that represents the available state. - required: false - type: string - default: online -payload_clean_spot: - description: The payload to send to the `command_topic` to begin a spot cleaning cycle. - required: false - type: string - default: clean_spot -payload_locate: - description: The payload to send to the `command_topic` to locate the vacuum (typically plays a song). - required: false - type: string - default: locate -payload_not_available: - description: The payload that represents the unavailable state. - required: false - type: string - default: offline -payload_return_to_base: - description: The payload to send to the `command_topic` to tell the vacuum to return to base. - required: false - type: string - default: return_to_base -payload_start_pause: - description: The payload to send to the `command_topic` to start or pause the vacuum. - required: false - type: string - default: start_pause -payload_stop: - description: The payload to send to the `command_topic` to stop the vacuum. - required: false - type: string - default: stop -payload_turn_off: - description: The payload to send to the `command_topic` to turn the vacuum off. - required: false - type: string - default: turn_off -payload_turn_on: - description: The payload to send to the `command_topic` to begin the cleaning cycle. - required: false - type: string - default: turn_on -qos: - description: The maximum QoS level of the state topic. - required: false - type: integer - default: 0 -retain: - description: If the published message should have the retain flag on or not. - required: false - type: boolean - default: false -schema: - description: The schema to use. Must be `legacy` or omitted to select the legacy schema. - required: false - type: string - default: legacy -send_command_topic: - description: The MQTT topic to publish custom commands to the vacuum. - required: false - type: string -set_fan_speed_topic: - description: The MQTT topic to publish commands to control the vacuum's fan speed. - required: false - type: string -supported_features: - description: List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`). - required: false - type: [string, list] - default: "`turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`" -unique_id: - description: An ID that uniquely identifies this vacuum. If two vacuums have the same unique ID, Home Assistant will raise an exception. - required: false - type: string -{% endconfiguration %} - -### Legacy configuration example - -{% raw %} - -```yaml -# Example configuration.yaml entry -mqtt: - - vacuum: - name: "MQTT Vacuum" - supported_features: - - turn_on - - turn_off - - pause - - stop - - return_home - - battery - - status - - locate - - clean_spot - - fan_speed - - send_command - command_topic: "vacuum/command" - battery_level_topic: "vacuum/state" - battery_level_template: "{{ value_json.battery_level }}" - charging_topic: "vacuum/state" - charging_template: "{{ value_json.charging }}" - cleaning_topic: "vacuum/state" - cleaning_template: "{{ value_json.cleaning }}" - docked_topic: "vacuum/state" - docked_template: "{{ value_json.docked }}" - error_topic: "vacuum/state" - error_template: "{{ value_json.error }}" - fan_speed_topic: "vacuum/state" - fan_speed_template: "{{ value_json.fan_speed }}" - set_fan_speed_topic: "vacuum/set_fan_speed" - fan_speed_list: - - min - - medium - - high - - max - send_command_topic: "vacuum/send_command" -``` - -{% endraw %} - -### Legacy MQTT Protocol - -The above configuration for this integration expects an MQTT protocol like the following. -See also [Shared MQTT Protocol](#shared-mqtt-protocol). - -#### Legacy Basic Commands - -MQTT topic: `vacuum/command` - -Possible MQTT payloads: - -- `turn_on` - Begin cleaning -- `turn_off` - Turn the Vacuum off -- `return_to_base` - Return to base/dock -- `stop` - Stop the Vacuum -- `clean_spot` - Initialize a spot cleaning cycle -- `locate` - Locate the vacuum (typically by playing a song) -- `start_pause` - Toggle the vacuum between cleaning and stopping - -#### Status/Sensor Updates - -MQTT topic: `vacuum/state` - -MQTT payload: - -```json -{ - "battery_level": 61, - "docked": true, - "cleaning": false, - "charging": true, - "fan_speed": "off", - "error": "Error message" -} -``` - -## State Configuration - -State MQTT vacuum configuration section. +MQTT vacuum configuration section. {% configuration %} availability: @@ -488,7 +177,7 @@ retain: type: boolean default: false schema: - description: The schema to use. Must be `state` to select the state schema. + description: The schema to use. Must be `state`. required: false type: string default: legacy @@ -515,7 +204,7 @@ unique_id: type: string {% endconfiguration %} -### State configuration example +## Configuration example ```yaml # Example configuration.yaml entry @@ -545,12 +234,11 @@ mqtt: send_command_topic: "vacuum/send_command" ``` -### State MQTT Protocol +## MQTT Protocol -The above configuration for this integration expects an MQTT protocol like the following. -See also [Shared MQTT Protocol](#shared-mqtt-protocol). +The configuration for this integration expects an MQTT protocol like the following. -#### State Basic Commands +### Basic Commands MQTT topic: `vacuum/command` @@ -563,82 +251,6 @@ Possible MQTT payloads: - `clean_spot` - Initialize a spot cleaning cycle - `locate` - Locate the vacuum (typically by playing a song) -#### Send Custom Command - -Vacuum send_command allows three parameters: - -- entity_id -- command -- params - optional - -If params are not provided it sends command as payload to MQTT send_command topic. -If params are provided service sends JSON as payload with such structure: - -```json -{ - 'command': 'command', - 'param1-key': 'param1-value' -} -``` - -Service trigger example: - -```yaml -- alias: "Push command based on sensor" - trigger: - - platform: state - entity_id: sensor.sensor - action: - service: vacuum.send_command - target: - entity_id: vacuum.vacuum_entity - data: - command: "custom_command" - params: - - key: value -``` - -MQTT topic: `vacuum/send_command` - -#### Status/Sensor Updates - -MQTT topic: `vacuum/state` - -MQTT payload: - -```json -{ - "battery_level": 61, - "state": "docked", - "fan_speed": "off" -} -``` - -State has to be one of vacuum states supported by Home Assistant: - -- cleaning, -- docked, -- paused, -- idle, -- returning, -- error. - -## Shared MQTT Protocol - -The configuration for this integration expects an MQTT protocol like the following. -These services are identical for both - legacy and state vacuum. - -### Set Fan Speed - -MQTT topic: `vacuum/set_fan_speed` - -Possible MQTT payloads: - -- `min` - Minimum fan speed -- `medium` - Medium fan speed -- `high` - High fan speed -- `max` - Max fan speed - ### Send Custom Command Vacuum send_command allows three parameters: @@ -676,6 +288,40 @@ Service trigger example: MQTT topic: `vacuum/send_command` +### Status/Sensor Updates + +MQTT topic: `vacuum/state` + +MQTT payload: + +```json +{ + "battery_level": 61, + "state": "docked", + "fan_speed": "off" +} +``` + +State has to be one of vacuum states supported by Home Assistant: + +- cleaning, +- docked, +- paused, +- idle, +- returning, +- error. + +### Set Fan Speed + +MQTT topic: `vacuum/set_fan_speed` + +Possible MQTT payloads: + +- `min` - Minimum fan speed +- `medium` - Medium fan speed +- `high` - High fan speed +- `max` - Max fan speed + ## Usage examples ### Usage with cloudless Xiaomi vacuums diff --git a/source/_integrations/vacuum.template.markdown b/source/_integrations/vacuum.template.markdown index 1f186efc3c9..5dd93a77d8b 100644 --- a/source/_integrations/vacuum.template.markdown +++ b/source/_integrations/vacuum.template.markdown @@ -1,7 +1,8 @@ --- title: "Template Vacuum" description: "Instructions how to setup Template vacuums within Home Assistant." -ha_category: Vacuum +ha_category: + - Vacuum ha_release: 0.96 ha_iot_class: Local Push ha_quality_scale: internal diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index d4ece32357e..2fb4c2f9b83 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -92,7 +92,7 @@ itself. Note that prior versions of the integration exposed these as state attri | `sensor._energy_use_yearly` | Total energy usage for year start from 12:01AM on Jan 1 in kWh | 105.25 | ## Fan & Air Quality Sensors -All VeSync air purifiers expose the remaining filter life, and some also expose air quality measurements. +All VeSync air purifiers expose the remaining filter lifetime, and some also expose air quality measurements. | Sensor | Description | Example | | --------------------------------------- | ------------------------------------------------------------------ | ------- | diff --git a/source/_integrations/water_heater.markdown b/source/_integrations/water_heater.markdown index 3426fda2d24..f74ed77e1b3 100644 --- a/source/_integrations/water_heater.markdown +++ b/source/_integrations/water_heater.markdown @@ -38,9 +38,9 @@ Sets target temperature of water heater device. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Use `entity_id: all` to target all. +| `entity_id` | yes | String or list of strings that point at the `entity_id` of water heater devices to control. Use `entity_id: all` to target all. | `temperature` | no | New target temperature for water heater -| `operation_mode` | yes | Operation mode to set the temperature to. This defaults to current_operation mode if not set, or set incorrectly. +| `operation_mode` | yes | Operation mode to set the temperature to. This defaults to current_operation mode if not set, or set incorrectly. For a list of possible modes, refer to the integration documentation. #### Automation example @@ -64,8 +64,8 @@ Set operation mode for water heater device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Use `entity_id: all` to target all. -| `operation_mode` | no | New value of operation mode +| `entity_id` | yes | String or list of strings that point at the `entity_id` of water heater devices to control. Use `entity_id: all` to target all. +| `operation_mode` | no | New value of operation mode. For a list of possible modes, refer to the integration documentation. #### Automation example @@ -88,7 +88,7 @@ Turn away mode on or off for water heater device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. Use `entity_id: all` to target all. +| `entity_id` | yes | String or list of strings that point at the `entity_id` of water heater devices to control. Use `entity_id: all` to target all. | `away_mode` | no | New value of away mode. 'on'/'off' or True/False #### Automation example diff --git a/source/_integrations/watttime.markdown b/source/_integrations/watttime.markdown index dcee4e6c2d4..44b7dd1f809 100644 --- a/source/_integrations/watttime.markdown +++ b/source/_integrations/watttime.markdown @@ -43,11 +43,11 @@ The sensors available to you will depend on the type of WattTime subscription yo
    | Name | Subscription Level | Meaning | -|---------------------------------------|--------------------|-------------------------------------------------------------------------------------------------------------| +| ------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------- | | Marginal Operating Emissions Rate | Pro | The currently measured amount of lbs of CO2 per MWh | | Relative Marginal Emissions Intensity | All | A percentage between the lowest (cleanest) and highest (highest) MOER values observed in the past two weeks | You can learn more about the data that WattTime collects by viewing these articles: -* https://www.watttime.org/aer/what-is-aer/ -* https://www.watttime.org/aer/how-aer-works/ +- https://www.watttime.org/aer/what-is-aer/ +- https://www.watttime.org/aer/how-aer-works/ diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index 99f88931caa..7aac703e9ff 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -27,7 +27,7 @@ Notes: ## Manual Polling -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 cogwheel. On the integration entry, select the three 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. +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 select the **Waze Travel Time** integration. On the integration entry, select the three 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 diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index bba9429e366..502833141fb 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -23,8 +23,8 @@ The `webostv` platform allows you to control a [LG](https://www.lg.com/) webOS S There is currently support for the following device types within Home Assistant: -- [Media Player](#media-player) -- [Notifications](#notifications) +- [Media Player](/integrations/media_player/) +- [Notifications](/integrations/notification/) To begin with enable *LG Connect Apps* feature in *Network* settings of the TV. diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index fc54907addd..4f37e7d534c 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -118,7 +118,7 @@ There are several attributes which can be used for automations and templates: | `current_humidity` | An integer that indicates the current relative humidity percentage of the room, as determined by the device's onboard humidity sensor. | `fan_mode` | String that indicates the current fan speed setting, as reported by the WeMo humidifier. | `filter_expired` | A boolean that indicates whether the filter has expired and needs to be replaced. -| `filter_life` | The used life of the filter (as a percentage). +| `filter_life` | The used lifetime of the filter (as a percentage). | `target_humidity` | An integer that indicates the desired relative humidity percentage (this is constrained to the humidity settings of the device, which are 45, 50, 55, 60, and 100). | `water level` | String that indicates whether the water level is Good, Low, or Empty. @@ -133,7 +133,7 @@ There are several services which can be used for automations and control of the | `turn_off` | Calling this service will turn the humidifier off (entity_id is required). | `turn_on` | Calling this service will turn the humidifier on and set the speed to the last used speed (defaults to medium, entity_id is required). | `wemo.set_humidity` | Calling this service will set the desired relative humidity setting on the device (entity_id is a required list of 1 or more entities to set humidity on, and target_humidity is a required float value between 0 and 100 (this value will be rounded down and mapped to one of the valid desired humidity settings of 45, 50, 55, 60, or 100 that are supported by the WeMo humidifier)). -| `wemo.reset_filter_life` | Calling this service will reset the humdifier's filter life back to 100% (entity_id is a required list of 1 or more entities to reset the filter life on). Call this service when you change the filter on your humidifier. +| `wemo.reset_filter_life` | Calling this service will reset the humdifier's filter lifetime back to 100% (entity_id is a required list of 1 or more entities to reset the filter lifetime on). Call this service when you change the filter on your humidifier. ## Long Press Events and Triggers diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index 5edb8a8adc9..35cde5452d0 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -18,7 +18,7 @@ ha_config_flow: true The Wyoming integration connects external voice services to Home Assistant using a [small protocol](https://github.com/rhasspy/rhasspy3/blob/master/docs/wyoming.md). This enables [Assist](/voice_control/) to use a variety of local [speech-to-text](/integrations/stt/) and [text-to-speech](/integrations/tts/) systems, such as: -* Whisper {% my supervisor_addon badge addon="core_whisper" %} -* Piper {% my supervisor_addon badge addon="core_piper" %} +- Whisper {% my supervisor_addon badge addon="core_whisper" %} +- Piper {% my supervisor_addon badge addon="core_piper" %} {% include integrations/config_flow.md %} diff --git a/source/_integrations/xiaomi.markdown b/source/_integrations/xiaomi.markdown index 2dccc9ec56a..f47b8c49807 100644 --- a/source/_integrations/xiaomi.markdown +++ b/source/_integrations/xiaomi.markdown @@ -20,10 +20,10 @@ To successfully implement this platform, the Home Assistant host should be capab In order to integrate the camera with Home Assistant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found for each models. -* [Yi 720p](https://github.com/fritz-smh/yi-hack) -* [Yi Home 17CN / 27US / 47US / 1080p Home / Dome / 1080p Dome](https://github.com/shadow-1/yi-hack-v3) -* [Recent Yi 1080p Home / 1080p Dome](https://github.com/roleoroleo/yi-hack-MStar) -* [Xiaofang 1080p Camera](https://github.com/samtap/fang-hacks) +- [Yi 720p](https://github.com/fritz-smh/yi-hack) +- [Yi Home 17CN / 27US / 47US / 1080p Home / Dome / 1080p Dome](https://github.com/shadow-1/yi-hack-v3) +- [Recent Yi 1080p Home / 1080p Dome](https://github.com/roleoroleo/yi-hack-MStar) +- [Xiaofang 1080p Camera](https://github.com/samtap/fang-hacks) Once installed, please ensure that you have enabled FTP. diff --git a/source/_integrations/xiaomi_ble.markdown b/source/_integrations/xiaomi_ble.markdown index f38dc3bd8ec..d3bf2c56280 100644 --- a/source/_integrations/xiaomi_ble.markdown +++ b/source/_integrations/xiaomi_ble.markdown @@ -50,15 +50,15 @@ The entities for the sensor classes are added after the values are first receive Some devices use AES encryption to protect the sensor values they are broadcasting. -* MiBeacon v2/v3 use unauthenticated AES with a 24 character hexadecimal (12 byte) key -* MiBeacon v4/v5 use authenticated AES with a 32 character hexadecimal (16 byte) key +- MiBeacon v2/v3 use unauthenticated AES with a 24 character hexadecimal (12 byte) key +- MiBeacon v4/v5 use authenticated AES with a 32 character hexadecimal (16 byte) key This key is called the bindkey or beaconkey. There are a few ways to obtain a bindkey for your device: -* Set your own. The [Telink Flasher](https://atc1441.github.io/TelinkFlasher.html) allows you to generate new bindkeys for devices it supports. The new bind key will work with Home Assistant, but the Mi Home app will not recognize the sensor anymore once the device has been activated by the TeLink flasher application. To use the sensor again with the Xiaomi Mi Home app, the device needs to be removed and then re-added inside the Mi Home app. -* Extract the keys from Xiaomi Cloud using a [token extractor](https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor) tool. +- Set your own. The [Telink Flasher](https://atc1441.github.io/TelinkFlasher.html) allows you to generate new bindkeys for devices it supports. The new bind key will work with Home Assistant, but the Mi Home app will not recognize the sensor anymore once the device has been activated by the TeLink flasher application. To use the sensor again with the Xiaomi Mi Home app, the device needs to be removed and then re-added inside the Mi Home app. +- Extract the keys from Xiaomi Cloud using a [token extractor](https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor) tool. ## Devices @@ -68,12 +68,12 @@ HHCCJCY01, also known as MiFlora or "Flower Care", should be automatically disco Flower Care firmware update steps: -* Install the official "Flower Care" app by HHCC: - * [Google Play](https://play.google.com/store/apps/details?id=com.huahuacaocao.flowercare) (requires location and storage permission) - * [Apple App Store](https://apps.apple.com/us/app/flower-care/id1095274672) -* Place the device with the app within 10cm of the plant sensor -* Press the "+" button on the top right in the devices tab of the app -* Add the plant sensor to the app and select an arbitrary plant -* Wait for the synchronization of the sensor to finish, and a dialog asking for a firmware update should appear (this might take a few minutes) -* The installed and latest firmware version can be verified by selecting the plant -> three-dot menu -> Hardware settings -> Hardware update -* The Flower Care account and app are not required any further for this integration to work +- Install the official "Flower Care" app by HHCC: + - [Google Play](https://play.google.com/store/apps/details?id=com.huahuacaocao.flowercare) (requires location and storage permission) + - [Apple App Store](https://apps.apple.com/app/flower-care/id1095274672) +- Place the device with the app within 10cm of the plant sensor +- Press the "+" button on the top right in the devices tab of the app +- Add the plant sensor to the app and select an arbitrary plant +- Wait for the synchronization of the sensor to finish, and a dialog asking for a firmware update should appear (this might take a few minutes) +- The installed and latest firmware version can be verified by selecting the plant -> three-dot menu -> Hardware settings -> Hardware update +- The Flower Care account and app are not required any further for this integration to work diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 1032f494e95..dbcd1b9023d 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -13,9 +13,9 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.51 ha_codeowners: - - "@rytilahti" - - "@syssi" - - "@starkillerOG" + - '@rytilahti' + - '@syssi' + - '@starkillerOG' ha_domain: xiaomi_miio ha_config_flow: true ha_zeroconf: true @@ -274,16 +274,16 @@ Supported devices: - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Purify Volume | The volume of purified air in qubic meter | False | -| Temperature | The current temperature measured | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining life of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Purify Volume | The volume of purified air in qubic meter | False | +| Temperature | The current temperature measured | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Switch entities @@ -317,7 +317,7 @@ Supported devices: | Sensor | Description | Enabled by default | | --------------------- | ------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | +| Filter Life Remaining | The remaining lifetime of the filter | True | | Filter Use | Filter usage time in hours | True | | Humidity | The current humidity measured | True | | Illuminance | The current illuminance measured | True | @@ -353,17 +353,17 @@ Supported devices: - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| Illuminance | The current illuminance measured | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Second Motor Speed | The current second motor speed measured in rpm | True | -| Temperature | The current temperature measured | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| Illuminance | The current illuminance measured | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Second Motor Speed | The current second motor speed measured in rpm | True | +| Temperature | The current temperature measured | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Switch entities @@ -396,16 +396,16 @@ Supported devices: - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | --------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Temperature | The current temperature measured | True | -| Illuminance | The current illuminance meassured on top of the device 0-200lux | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | --------------------------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Temperature | The current temperature measured | True | +| Illuminance | The current illuminance meassured on top of the device 0-200lux | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Switch entities @@ -432,15 +432,15 @@ Supported devices: - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Temperature | The current temperature measured | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Temperature | The current temperature measured | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Switch entities @@ -474,16 +474,16 @@ This model uses newer MiOT communication protocol. - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Purify Volume | The volume of purified air in qubic meter | False | -| Temperature | The current temperature measured | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Purify Volume | The volume of purified air in qubic meter | False | +| Temperature | The current temperature measured | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Switch entities @@ -505,12 +505,12 @@ This model uses newer MiOT communication protocol. - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | - Switch entities @@ -531,15 +531,15 @@ This model uses newer MiOT communication protocol. - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | -------------------------------------------------------------- | ------------------ | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Humidity | The current humidity measured | True | -| Temperature | The current temperature measured | True | -| TVOC | The current concentration of Total Organic Volatile Components | True | +| Sensor | Description | Enabled by default | +| ------------------------- | -------------------------------------------------------------- | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Humidity | The current humidity measured | True | +| Temperature | The current temperature measured | True | +| TVOC | The current concentration of Total Organic Volatile Components | True | - Switch entities @@ -566,16 +566,16 @@ This model uses newer MiOT communication protocol. - `button_pressed` - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Illuminance | The current illuminance measured | True | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Motor Speed | The current motor speed measured in rpm | True | -| Second Motor Speed | The current second motor speed measured in rpm | True | -| Purify Volume | The volume of purified air in qubic meter | False | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Illuminance | The current illuminance measured | True | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Motor Speed | The current motor speed measured in rpm | True | +| Second Motor Speed | The current second motor speed measured in rpm | True | +| Purify Volume | The volume of purified air in qubic meter | False | +| Use Time | The accumulative number of seconds the device has been in use | False | - Switch entities @@ -607,17 +607,17 @@ These models use newer MiOT communication protocol. - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------ | ------------------ | -| Filter Life Remaining | The remaining life of the filter in % | True | -| Filter Time Left | The remaining life of the filter in days | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| Motor Speed | The current motor speed measured in rpm | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| PM10 | The current particulate matter 10 measured(4 PRO only) | True | -| Purify Volume | The volume of purified air in qubic meter | False | -| Temperature | The current temperature measured | True | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------ | ------------------ | +| Filter Lifetime Remaining | The remaining lifetime of the filter in % | True | +| Filter Time Left | The remaining lifetime of the filter in days | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| Motor Speed | The current motor speed measured in rpm | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| PM10 | The current particulate matter 10 measured(4 PRO only) | True | +| Purify Volume | The volume of purified air in qubic meter | False | +| Temperature | The current temperature measured | True | - Switch entities @@ -639,21 +639,21 @@ These models use newer MiOT communication protocol. - Button entities -| Button | Description | -| ----------------- | --------------------------------------------------- | -| Reset Dust Filter | Resets filter lifetime and usage of the dust filter | +| Button | Description | +| ----------------- | ------------------------------------------------------- | +| Reset Dust Filter | Resets filter lifetimetime and usage of the dust filter | - Sensor entities -| Sensor | Description | -| ------------------------------- | --------------------------------------- | -| Carbon Dioxide | The current carbon dioxide in ppm | -| Dust filter life remaining | The remaining life of the filter | -| Dust filter life remaining days | The remaining life of the filter in day | -| PM2.5 | The current particulate matter 2.5 | -| Temperature | The current outside temperature | -| Control Speed | The current motor speed in rpm | -| Favorite Speed | The favorite motor speed in rpm | +| Sensor | Description | +| ----------------------------------- | ------------------------------------------- | +| Carbon Dioxide | The current carbon dioxide in ppm | +| Dust filter lifetime remaining | The remaining lifetime of the filter | +| Dust filter lifetime remaining days | The remaining lifetime of the filter in day | +| PM2.5 | The current particulate matter 2.5 | +| Temperature | The current outside temperature | +| Control Speed | The current motor speed in rpm | +| Favorite Speed | The favorite motor speed in rpm | - Switch entities @@ -673,15 +673,15 @@ These models use newer MiOT communication protocol. - `extra_features` - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| Carbon Dioxide | The current carbon dioxide measured in ppm | True | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Temperature | The current temperature measured | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| Carbon Dioxide | The current carbon dioxide measured in ppm | True | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Temperature | The current temperature measured | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Select entities @@ -706,15 +706,15 @@ These models use newer MiOT communication protocol. - `extra_features` - Sensor entities -| Sensor | Description | Enabled by default | -| --------------------- | ------------------------------------------------------------- | ------------------ | -| Carbon Dioxide | The current carbon dioxide measured in ppm | True | -| Filter Life Remaining | The remaining life of the filter | True | -| Filter Use | Filter usage time in hours | True | -| Humidity | The current humidity measured | True | -| PM2.5 | The current particulate matter 2.5 measured | True | -| Temperature | The current temperature measured | True | -| Use Time | The accumulative number of seconds the device has been in use | False | +| Sensor | Description | Enabled by default | +| ------------------------- | ------------------------------------------------------------- | ------------------ | +| Carbon Dioxide | The current carbon dioxide measured in ppm | True | +| Filter Lifetime Remaining | The remaining lifetime of the filter | True | +| Filter Use | Filter usage time in hours | True | +| Humidity | The current humidity measured | True | +| PM2.5 | The current particulate matter 2.5 measured | True | +| Temperature | The current temperature measured | True | +| Use Time | The accumulative number of seconds the device has been in use | False | - Select entities @@ -757,17 +757,17 @@ These models use newer MiOT communication protocol. - Sensor entities -| Sensor | Description | -| -------------------------------- | ---------------------------------------------- | -| Carbon Dioxide | The current carbon dioxide in ppm | -| Dust filter life remaining | The remaining life of the dust filter | -| Dust filter life remaining days | The remaining life of the dust filter in days | -| Upper filter life remaining | The remaining life of the upper filter | -| Upper filter life remaining days | The remaining life of the upper filter in days | -| PM2.5 | The current particulate matter 2.5 | -| Temperature | The current outside temperature | -| Control Speed | The current motor speed in rpm | -| Favorite Speed | The favorite motor speed in rpm | +| Sensor | Description | +| ------------------------------------ | -------------------------------------------------- | +| Carbon Dioxide | The current carbon dioxide in ppm | +| Dust filter lifetime remaining | The remaining lifetime of the dust filter | +| Dust filter lifetime remaining days | The remaining lifetime of the dust filter in days | +| Upper filter lifetime remaining | The remaining lifetime of the upper filter | +| Upper filter lifetime remaining days | The remaining lifetime of the upper filter in days | +| PM2.5 | The current particulate matter 2.5 | +| Temperature | The current outside temperature | +| Control Speed | The current motor speed in rpm | +| Favorite Speed | The favorite motor speed in rpm | - Switch entities diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index b175ea27823..4e584020741 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -125,7 +125,7 @@ In this section known problems and their resolution are documented. ### Errors on handling UDP messages The Yamaha MusicCast integration is working with updates sent from the device to Home Assistant instead of pulling all information every few seconds. There is no error correction mechanism in these messages, so that only 100% correct messages can be processed. Whenever there is a corrupt message the Yamaha MusicCast integration will update all device information and log an error message like these: -* `Received invalid message: ` -* `Received non UTF-8 compliant message: b''` +- `Received invalid message: ` +- `Received non UTF-8 compliant message: b''` If you receive these errors frequently, you should first try to disconnect your MusicCast devices from the power, wait 30 seconds and reconnect them to the power. If this does not help, you can try to use a LAN cable instead of WiFi to connect the device to the network. diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index 381fe0aae2d..4fd04caf2ea 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -15,10 +15,10 @@ ha_integration_type: device The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: -* Yi Home 17CN / 27US / 47US -* Yi 1080p Home -* Yi Dome -* Yi 1080p Dome +- Yi Home 17CN / 27US / 47US +- Yi 1080p Home +- Yi Dome +- Yi 1080p Dome To successfully implement this platform, the Home Assistant host should be capable of multiple simultaneous reads. For every concurrent Home Assistant user, a connection will be made to the camera every 10 seconds. This should normally not be a problem. diff --git a/source/_integrations/yolink.markdown b/source/_integrations/yolink.markdown index 22f604f1f89..a88cda30240 100644 --- a/source/_integrations/yolink.markdown +++ b/source/_integrations/yolink.markdown @@ -39,22 +39,22 @@ If you want to use separate credentials, please contact to The integration is tested and verified for the following devices from YoLink: -* YS6602/4 YS6704 (outlet | plug) -* YS7103/4/5 (siren) -* YS7704/7705/7706 (door sensor) -* YS7707 (Contact Sensor) -* YS7804/5 (motion sensor) -* YS7903/4 (leak sensor) -* YS8003/4/5/6 (temperature/humidity sensor) -* YS7201 (vibration sensor) -* YS7606/7 (lock) -* YS4909 YS5001 (valve controller) -* YS5705/6 (switch) -* YS7A01/2 (CO & Smoke Sensor) -* YS4002/3 (Thermostat) -* YS4906/8 (Garage Door Sensor/ Garage Door Controller) -* YS5707 (Dimmer) -* YS6801/2 (MultiOutlet) -* YS3604 (FlexFob) -* YS7106 (PowerFailureAlar) -* YS4908 (Finger) +- YS6602/4 YS6704 (outlet | plug) +- YS7103/4/5 (siren) +- YS7704/7705/7706 (door sensor) +- YS7707 (Contact Sensor) +- YS7804/5 (motion sensor) +- YS7903/4 (leak sensor) +- YS8003/4/5/6 (temperature/humidity sensor) +- YS7201 (vibration sensor) +- YS7606/7 (lock) +- YS4909 YS5001 (valve controller) +- YS5705/6 (switch) +- YS7A01/2 (CO & Smoke Sensor) +- YS4002/3 (Thermostat) +- YS4906/8 (Garage Door Sensor/ Garage Door Controller) +- YS5707 (Dimmer) +- YS6801/2 (MultiOutlet) +- YS3604 (FlexFob) +- YS7106 (PowerFailureAlar) +- YS4908 (Finger) diff --git a/source/_integrations/youless.markdown b/source/_integrations/youless.markdown index 09e1d1cd346..0551d51eebf 100644 --- a/source/_integrations/youless.markdown +++ b/source/_integrations/youless.markdown @@ -19,9 +19,9 @@ The YouLess integration for Home Assistant allows you to read the meter values f The integration is tested and verified for the following devices from YouLess: -* LS110 -* LS120 running PVOutput firmware -* LS120 running Enologic firmware +- LS110 +- LS120 running PVOutput firmware +- LS120 running Enologic firmware {% include integrations/config_flow.md %} diff --git a/source/_integrations/youtube.markdown b/source/_integrations/youtube.markdown index 741569a8519..4709f3f022e 100644 --- a/source/_integrations/youtube.markdown +++ b/source/_integrations/youtube.markdown @@ -16,8 +16,8 @@ ha_integration_type: service The YouTube integration allows you to connect YouTube channels to Home Assistant. For every channel you add, it will create sensors for: -* Subscriber count -* The latest uploaded video +- Subscriber count +- The latest uploaded video ## Prerequisites diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 3ca471af398..1d096ce7359 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -106,7 +106,7 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl ### Other supported but not recommended Zigbee radio adapters or modules - Silicon Labs EmberZNet based radios using legacy hardware using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy) - - [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/) (Note! [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170). Also, this first have to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html)) + - [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/) (Note! [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170). Also, this first has to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html)) - [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware)) - [Bitron Video/Smabit BV AV2010/10 USB-Stick](https://bv.smabit.eu/index.php/smart-home-produkte/zb-funkstick/) with Silicon Labs Ember 3587 - Telegesis ETRX357USB/ETRX357USB-LR/ETRX357USB-LRS+8M (Note! These first have to be [flashed with other EmberZNet firmware](https://github.com/walthowd/husbzb-firmware)) @@ -154,13 +154,13 @@ a new pop-up asking for a radio type. In the pop-up: - Radio Type -| Radio Type | Zigbee Radio Hardware | -| ------------- | ------------- | -| `ezsp` | Silicon Labs EmberZNet protocol (e.g., Home Assistant SkyConnect, Elelabs, HUSBZB-1, Telegesis) | -| `deconz` | dresden elektronik deCONZ protocol (e.g., ConBee I/II, RaspBee I/II) | -| `znp` | Texas Instruments (e.g., CC253x, CC26x2, CC13x2) | -| `zigate` | ZiGate Serial protocol (e.g., ZiGate USB-TTL, PiZiGate, ZiGate WiFi) | -| `xbee` | Digi XBee ZB Coordinator Firmware protocol (e.g., Digi XBee Series 2, 2C, 3) | +| Radio Type | Zigbee Radio Hardware | +| ---------- | ----------------------------------------------------------------------------------------------- | +| `ezsp` | Silicon Labs EmberZNet protocol (e.g., Home Assistant SkyConnect, Elelabs, HUSBZB-1, Telegesis) | +| `deconz` | dresden elektronik deCONZ protocol (e.g., ConBee I/II, RaspBee I/II) | +| `znp` | Texas Instruments (e.g., CC253x, CC26x2, CC13x2) | +| `zigate` | ZiGate Serial protocol (e.g., ZiGate USB-TTL, PiZiGate, ZiGate WiFi) | +| `xbee` | Digi XBee ZB Coordinator Firmware protocol (e.g., Digi XBee Series 2, 2C, 3) | - Submit @@ -191,22 +191,22 @@ If you are use ZiGate or Sonoff ZBBridge you have to use some special usb_path c Some devices can be auto-discovered, which can simplify the ZHA setup process. The following devices have been tested with discovery and offer a quick setup experience: -| Device | Discovery Method | Identifier | -| -------| ---------------- | ---------- | -| [ITead SONOFF Zigbee 3.0 USB Dongle Plus V2 Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/) | USB | 1A86:55D4 | -| [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-P" (CC2652P variant)](https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus/) | USB | 10C4:EA60 | -| [Bitron Video/SMaBiT BV AV2010/10](https://bv.smabit.eu/index.php/smart-home-produkte/zb-funkstick/) | USB | 10C4:8B34 | -| [ConBee II](https://phoscon.de/conbee2) | USB | 1CF1:0030 | -| [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) | USB | 10C4:8A2A | -| [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/) | USB | 10C4:EA60 | -| [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/) | USB | 1A86:7523 | -| [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/) | USB| 10C4:EA60 | -| [ZigStar Coordinators](https://zig-star.com/) | USB| 1A86:7523 | -| [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/) | Zeroconf | slzb-06.local. | -| [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/) | Zeroconf | zigstargw.local. | -| [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2.local. | -| [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2_poe.local. | -| [Tube's EFR32 Based Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_efr32.local. | +| Device | Discovery Method | Identifier | +| ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------ | +| [ITead SONOFF Zigbee 3.0 USB Dongle Plus V2 Model "ZBDongle-E" (EFR32MG21 variant)](https://itead.cc/product/zigbee-3-0-usb-dongle/) | USB | 1A86:55D4 | +| [ITead SONOFF Zigbee 3.0 USB Dongle Plus Model "ZBDongle-P" (CC2652P variant)](https://itead.cc/product/sonoff-zigbee-3-0-usb-dongle-plus/) | USB | 10C4:EA60 | +| [Bitron Video/SMaBiT BV AV2010/10](https://bv.smabit.eu/index.php/smart-home-produkte/zb-funkstick/) | USB | 10C4:8B34 | +| [ConBee II](https://phoscon.de/conbee2) | USB | 1CF1:0030 | +| [Nortek HUSBZB-1](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) | USB | 10C4:8A2A | +| [slae.sh CC2652RB development stick](https://slae.sh/projects/cc2652/) | USB | 10C4:EA60 | +| [ZigStar Stick (CC2652 + CH340B variant)](https://zig-star.com/projects/zigbee-stick-v4/) | USB | 1A86:7523 | +| [Tube’s EFR32 Pro Ethernet/Serial Coordinator](https://www.tubeszb.com/) | USB | 10C4:EA60 | +| [ZigStar Coordinators](https://zig-star.com/) | USB | 1A86:7523 | +| [SMLIGHT SLZB-06 POE Zigbee LAN WiFi USB Adapter](https://smlight.tech/product/slzb-06/) | Zeroconf | slzb-06.local. | +| [ZigStar LAN/POE Coordinators](https://zig-star.com/projects/zigbee-gw-lan/) | Zeroconf | zigstargw.local. | +| [Tube's CC2652P2 USB-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2.local. | +| [Tube's CC2652P2 PoE-powered Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_cc2652p2_poe.local. | +| [Tube's EFR32 Based Zigbee to Ethernet Serial Coordinator)](https://www.tubeszb.com/) | Zeroconf | tube_zb_gw_efr32.local. | Additional devices in the [Known working Zigbee radio modules](#known-working-zigbee-radio-modules) list may be discoverable, however, only devices that have been confirmed discoverable are listed above. @@ -316,19 +316,19 @@ To add new devices to the network, call the `permit` service on the `zha` domain This service opens network for joining new devices. -| Data | Optional | Description | -| ---- | ---- | ----------- | -| `duration` | yes | For how long to allow new devices to join, default 60s -| `ieee` | yes | allow new devices to join via an existing device +| Data | Optional | Description | +| ---------- | -------- | ------------------------------------------------------ | +| `duration` | yes | For how long to allow new devices to join, default 60s | +| `ieee` | yes | allow new devices to join via an existing device | To join a new device using an install code (ZB3 devices) use the following data attributes (must use parameters only from the same group: -| Data | Parameter Group | Description | -| ---- | ---- | ----------- | -| `src_ieee` | install_code | The IEEE address of the joining ZB3 device. Use with `install_code` -| `install_code` | install_code | Install Code of the joining device. Use with `src_ieee` -| `qr_code` | qr_code | QR code containing IEEE and Install Code of the joining ZB3 device +| Data | Parameter Group | Description | +| -------------- | --------------- | ------------------------------------------------------------------- | +| `src_ieee` | install_code | The IEEE address of the joining ZB3 device. Use with `install_code` | +| `install_code` | install_code | Install Code of the joining device. Use with `src_ieee` | +| `qr_code` | qr_code | QR code containing IEEE and Install Code of the joining ZB3 device |
    Currently `qr_code` supports QR Install Codes from: @@ -343,42 +343,42 @@ from the same group: This service removes an existing device from the network. You can find the IEEE address of the device on the device card of Zigbee devices. An example of an IEEE address data parameter format is `00:0d::6f:00:05:7d:2d:34`. -| Data | Optional | Description | -| ---- | ---- | ----------- | -| `ieee` | no | IEEE address of the device to remove +| Data | Optional | Description | +| ------ | -------- | ------------------------------------ | +| `ieee` | no | IEEE address of the device to remove | ### Service `zha.set_lock_user_code` This service sets a lock code on a Zigbee lock. -| Data | Optional | Description | -| --------- | ---- | ----------- | -| `code_slot` | no | Which lock code slot to store the code. Ex. 1-32 will work for Kwikset 954 -| `user_code` | no | Code to set on the lock. Ex. Kwikset accepts numbers 4-8 digits in length +| Data | Optional | Description | +| ----------- | -------- | -------------------------------------------------------------------------- | +| `code_slot` | no | Which lock code slot to store the code. Ex. 1-32 will work for Kwikset 954 | +| `user_code` | no | Code to set on the lock. Ex. Kwikset accepts numbers 4-8 digits in length | ### Service `zha.clear_lock_user_code` This service clears a lock code from a Zigbee lock. -| Data | Optional | Description | -| --------- | ---- | ----------- | -| `code_slot` | no | Which lock code slot to clear +| Data | Optional | Description | +| ----------- | -------- | ----------------------------- | +| `code_slot` | no | Which lock code slot to clear | ### Service `zha.enable_lock_user_code` This service enables a lock code on a Zigbee lock. -| Data | Optional | Description | -| --------- | ---- | ----------- | -| `code_slot` | no | Which lock code slot to enable +| Data | Optional | Description | +| ----------- | -------- | ------------------------------ | +| `code_slot` | no | Which lock code slot to enable | ### Service `zha.disable_lock_user_code` This service disables a lock code on a Zigbee lock. -| Data | Optional | Description | -| --------- | ---- | ----------- | -| `code_slot` | no | Which lock code slot to disable +| Data | Optional | Description | +| ----------- | -------- | ------------------------------- | +| `code_slot` | no | Which lock code slot to disable | ## Adding devices @@ -387,10 +387,10 @@ Tip! It is highly recommended that you read through the two segments under the t **To add a new Zigbee device:** 1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. On the **Zigbee Home Automation** integration select the cogwheel, the select **Configure**. -1. To start a scan for new devices, on the bottom right corner of the screen, select **Add device**. -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. +2. Select the **Zigbee Home Automation** integration. Then, select **Configure**. +3. To start a scan for new devices, on the bottom right corner of the screen, select **Add device**. +4. 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. +5. 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. ### Using router devices to add more devices @@ -431,6 +431,44 @@ After restoring a Home Assistant backup, you can re-configure ZHA and migrate to Within ZHA is possible to use this backup and restore feature to migrate between some different radio types, if the respective radio library supports it. Currently, ZHA supports migrating the Zigbee network between different Zigbee Coordinator adapters based on chips from Silicon Labs, Texas Instruments, or ConBee/RaspBee if the backup was made from inside ZHA. +## Migrating to a new Zigbee coordinator adapter inside ZHA + +Follow this guide if you have a Zigbee Home Assistant (ZHA) network running and want to migrate from one Zigbee coordinator radio adapter to another Zigbee coordinator radio adapter. + +### Prerequisites + +- Your old Zigbee Coordinator radio adapter is used in the ZHA integration (not in deCONZ or MQTT). +- It is of radio type ezsp (Silicon Labs EmberZnet), znp (Texas Instruments Z-Stack ZNP), or deCONZ (ConBee/RaspBee from dresden elektronik). + - If your old Zigbee coordinator is a deCONZ (ConBee/RaspBee) radio adapter, make sure it is running [firmware 0x26700700 (from 2021-08-18)](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/Firmware-Changelog) or later. + +### To migrate to a new Zigbee coordinator radio inside ZHA + +1. Go to **{% my integrations title="Settings > Devices & Services" %}** and select the ZHA integration. Then select **Configure**. +2. Under **Network settings**, select **Migrate radio**. +3. Reconfiguration of ZHA will start. Select **Submit**. +4. Under **Migrate or re-configure**, select **Migrate to a new radio**. +5. **Migrate to a new radio** will inform you that an automatic backup will be performed and that your old Zigbee coordinator radio will then be reset before the backup is automatically restored. + - Select **Submit**. +6. **Unplug your old radio** will inform you that your old Zigbee coordinator radio has been reset and that you can now plug in your new Zigbee coordinator radio adapter. + - To avoid interference, use a USB extension cable. + - Use a USB 2.0 port or a powered USB 2.0 hub and keep the Zigbee stick away from USB 3.0 devices. + - You may now also choose to either unplug your old Zigbee coordinator radio adapter or keep your old radio plugged in. + - If that radio was a combined Z-Wave and Zigbee radio, like the HUSBZB-1 adapter, then only the Zigbee radio part of it was reset. Confirm that the Zigbee Coordinator radio adapter is properly connected and select **Submit**. +7. You now need to start the backup restore process. + - Select your new Zigbee radio from the list of serial ports and select **Next**. + - If your new radio does not appear or you need to reboot after plugging in new hardware, you can resume the migration after a reboot: under **Network Settings**, select **Re-configure the current radio** and choose your new radio. +8. Under **Network Formation**, select **Restore an automatic backup**. +9. Under **Restore Automation Backup**, choose the latest automatic backup and select **Submit**. +10. If your radio requires overwriting the IEEE address, you will see a screen titled **Overwrite Radio IEEE Address**. Check the **Permanently replace the radio IEEE address** box and click **Submit**. Overwriting the IEEE address may take a while. + - Your old Zigbee Coordinator radio and your new stick will now have the same Zigbee IEEE address (unique MAC address for the Zigbee device). + - Selecting this option is required for the migration process to complete successfully. + - From this point onwards, you should not operate the old stick in the same area unless you change the Zigbee IEEE address on it. + - If you do not migrate the Zigbee IEEE address from your old Zigbee Coordinator radio, then you will have to re-join/re-pair many of your devices in order to keep them working. +11. Finally, a **Success!** message should pop up with information that all options were successfully saved. + - Select **Finish** to confirm. + +The migration process is complete. However, be aware that you will not be able to control your existing Zigbee devices until the new coordinator fully joins the network. This process can take a few minutes. If some existing devices do not function after some time, try power-cycling them to allow them to re-join the network. + ## Troubleshooting To help resolve any kinks or compatibility problems, report bugs as issues with debug logs. Please note the current limitations and follow the instructions in this troubleshooting section. @@ -471,8 +509,8 @@ People familiar with other Zigbee gateway solutions for home automation may know 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. + - 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. @@ -505,7 +543,7 @@ For example, interference from USB 3.x ports, unshielded USB 3.x devices, and no Zigbee also uses [mesh networking topology](https://en.wikipedia.org/wiki/Mesh_networking), which means that most mains-powered devices are a "Zigbee Router" that can act as a signal repeater and range extended by transmitting data over long distances by passing data messages through the Zigbee network mesh of intermediate devices to reach more distant Zigbee devices. Thus to have a healthy Zigbee network, you need many Zigbee Router devices relatively close to each other in order to achieve good coverage and range. -##### Actions to optimize Zigbee Coordinator radio hardware +#### Actions to optimize Zigbee Coordinator radio hardware Common root causes of unreliable performance are often seen with outdated Zigbee Coordinator radio adapter hardware, limited by obsolete chips, bad antenna designs, or old/buggy firmware. You can improve most Zigbee setups by using a good Zigbee Coordinator radio adapter and maintaining it. @@ -522,7 +560,7 @@ Common root causes of unreliable performance are often seen with outdated Zigbee While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware and/or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when run into problems with devices. -##### Actions to avoid or workaround EMI/EMF/RMI interference +#### Actions to avoid or workaround EMI/EMF/RMI interference Since all Zigbee Coordinator radio adapters are very sensitive/susceptible to all types of EMI/EMF/RMI you should always try to optimize the placement of the Zigbee Coordinator and avoid known sources of interference. @@ -550,7 +588,7 @@ When reporting issues, please provide the following information in addition to i 1. Debug logs for the issue, see [debug logging](#debug-logging) 2. Model of Zigbee radio being used 3. If the issue is related to a specific Zigbee device, provide both the **Zigbee Device Signature** and the **Diagnostics** information. - * Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & Services**" %}. On the **Zigbee Home Automation** integration, select the cogwheel. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively. + - Both the **Zigbee Device Signature** and the **Diagnostics** information can be found under {% my integrations title="**Settings** > **Devices & Services**" %}. Select the **Zigbee Home Automation** integration. Then, select **Configure** > **Devices** (pick your device). Select **Zigbee Device Signature** and **Download Diagnostics**, respectively. ### Debug logging diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index d2321a86d30..450d0039d95 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -51,46 +51,46 @@ The Z-Wave integration allows you to control a Z-Wave network via the [Z-Wave JS To run a Z-Wave network, you need the following elements: -* A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](#which-z-wave-controller-should-i-buy). -* A running Z-Wave JS server. -* An installed Z-Wave integration in Home Assistant. +- A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](#which-z-wave-controller-should-i-buy). +- A running Z-Wave JS server. +- An installed Z-Wave integration in Home Assistant. ### Setting up a Z-Wave JS server -The easiest way to get started is by using the built-in Z-Wave JS add-on in Home Assistant. +If you are running Home Assistant Operating System or Home Assistant Supervised, the easiest way to get started is by using the built-in Z-Wave JS add-on in Home Assistant. For other ways to setup a Z-Wave server, refer to the [advanced installation instructions](#advanced-installation-instructions). Follow these steps: 1. Open the Home Assistant user interface. -1. Plug the Z-Wave dongle into the device running Home Assistant. - * Most likely, your dongle will be recognized automatically. On the user interface, you will be asked if you want to set up this device with the Z-Wave JS add-on. Select **Submit**. - * If your dongle is not recognized, follow these steps: +2. Plug the Z-Wave dongle into the device running Home Assistant. + - Most likely, your dongle will be recognized automatically. On the user interface, you will be asked if you want to set up this device with the Z-Wave JS add-on. Select **Submit**. + - If your dongle is not recognized, follow these steps: {% details "Manual setup steps" %} Use this My button: {% my config_flow_start badge domain="zwave_js" %}, or follow these steps: -* Browse to your Home Assistant instance. -* Go to **{% my integrations title="Settings > Devices & Services" %}**. -* In the bottom right, select the +- Browse to your Home Assistant instance. +- Go to **{% my integrations title="Settings > Devices & Services" %}**. +- In the bottom right, select the **{% my config_flow_start icon domain="zwave_js" %}** button. -* From the list, select **Z-Wave**. -* Follow the instructions on screen to complete the setup. +- From the list, select **Z-Wave**. +- Follow the instructions on screen to complete the setup. {% enddetails %} 3. Wait for the installation to complete. -1. You are prompted for network security keys. - * If you are using Z-Wave for the first time, leave all the fields empty and select **Submit**. The system will generate network security keys for you. - * If this Z-Wave dongle has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you. - * Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave dongle to another device. Copy and paste them somewhere safe. -1. Wait for the Z-Wave JS add-on to start up. -1. Once the installation is complete, the **Device info** of the Z-Wave controller is shown. - * You successfully installed the Z-Wave integration and the Z-Wave JS add-on. - * You can now [add](/integrations/zwave_js/#adding-a-new-device-to-the-z-wave-network) devices to the Z-Wave network. +4. You are prompted for network security keys. + - If you are using Z-Wave for the first time, leave all the fields empty and select **Submit**. The system will generate network security keys for you. + - If this Z-Wave dongle has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you. + - Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave dongle to another device. Copy and paste them somewhere safe. +5. Wait for the Z-Wave JS add-on to start up. +6. Once the installation is complete, the **Device info** of the Z-Wave controller is shown. + - You successfully installed the Z-Wave integration and the Z-Wave JS add-on. + - You can now [add](/integrations/zwave_js/#adding-a-new-device-to-the-z-wave-network) devices to the Z-Wave network.

    While your Z-Wave mesh is permanently stored on your dongle, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave dongle, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time, this is a button press on those devices (see their manual). It is not necessary to exclude and re-include devices from the mesh. @@ -99,30 +99,30 @@ While your Z-Wave mesh is permanently stored on your dongle, the additional meta ### Adding a new device to the Z-Wave network 1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. In the Z-Wave integration, select the cogwheel, then select **Configure**. -1. Select **Add device**. - * The Z-Wave controller is now in inclusion mode. -1. If your device supports SmartStart (700 series controller), select **Scan QR code** and scan the QR code on your device. -1. If your device does not support SmartStart, set the device in inclusion mode. Refer to the device manual to see how this is done. - * If your device is included using S2 security, you may be prompted to enter a PIN number provided with your device. Often, this PIN is provided with the documentation _and_ is also printed on the device itself. For more information on secure inclusion, refer to [this section](/integrations/zwave_js/#should-i-use-secure-inclusion). -1. The UI should confirm that the device was added. After a short while (seconds to minutes), the entities should also be created. -1. If the controller fails to add/find your device, cancel the inclusion process. - * In some cases, it might help to first [remove](/integrations/zwave_js/#removing-a-device-from-the-z-wave-network) a device (exclusion) before you add it, even when the device has not been added to this Z-Wave network yet. - * Another approach would be to factory reset the device. Refer to the device manual to see how this is done. +2. Select the Z-Wave integration. Then select **Configure**. +3. Select **Add device**. + - The Z-Wave controller is now in inclusion mode. +4. If your device supports SmartStart (700 series controller), select **Scan QR code** and scan the QR code on your device. +5. If your device does not support SmartStart, set the device in inclusion mode. Refer to the device manual to see how this is done. + - If your device is included using S2 security, you may be prompted to enter a PIN number provided with your device. Often, this PIN is provided with the documentation _and_ is also printed on the device itself. For more information on secure inclusion, refer to [this section](/integrations/zwave_js/#should-i-use-secure-inclusion). +6. The UI should confirm that the device was added. After a short while (seconds to minutes), the entities should also be created. +7. If the controller fails to add/find your device, cancel the inclusion process. + - In some cases, it might help to first [remove](/integrations/zwave_js/#removing-a-device-from-the-z-wave-network) a device (exclusion) before you add it, even when the device has not been added to this Z-Wave network yet. + - Another approach would be to factory reset the device. Refer to the device manual to see how this is done. **Important:** 1. **Do not move your Z-Wave stick to include devices.** This is no longer necessary and leads to broken routes. -1. **Do not initiate device inclusion from the Z-Wave stick itself.** This is no longer supported. +2. **Do not initiate device inclusion from the Z-Wave stick itself.** This is no longer supported. ### Removing a device from the Z-Wave network 1. In Home Assistant, go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. In the Z-Wave integration, select the cogwheel, then select **Configure**. -1. Select **Remove device**, then **Start exclusion**. - * The Z-Wave controller is now in exclusion mode. -1. Put the device you want to remove in exclusion mode. Refer to its manual how this is done. -1. The UI should confirm that the device was removed and the device and entities will be removed from Home Assistant. +2. Select the **Z-Wave** integration. Then, select **Configure**. +3. Select **Remove device**, then **Start exclusion**. + - The Z-Wave controller is now in exclusion mode. +4. Put the device you want to remove in exclusion mode. Refer to its manual how this is done. +5. The UI should confirm that the device was removed and the device and entities will be removed from Home Assistant. ## Special Z-Wave entities @@ -150,18 +150,18 @@ The following features can be accessed from the integration configuration panel: ![Z-Wave integration configuration panel](/images/integrations/z-wave/z-wave-integration-config-panel.png) -* **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network. -* **Remove device:** Starts the exclusion process for removing a device from your network. -* **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. -* **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality. -* **Third-party data opt-in/out:** Allows you to opt-in or out of telemetry that the Z-Wave JS project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated. +- **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network. +- **Remove device:** Starts the exclusion process for removing a device from your network. +- **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. +- **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality. +- **Third-party data opt-in/out:** Allows you to opt-in or out of telemetry that the Z-Wave JS project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated. ### Integration menu Some features can be accessed from the menu of integration itself. As they are not specific to Z-Wave, they are not described here in detail. ![Z-Wave integration configuration panel](/images/integrations/z-wave/z-wave-integration-menu.png) -* **[Download diagnostics](/docs/configuration/troubleshooting/#download-diagnostics):** Exports a JSON file describing the entities of all devices registered with this integration. +- **[Download diagnostics](/docs/configuration/troubleshooting/#download-diagnostics):** Exports a JSON file describing the entities of all devices registered with this integration. ### Device panel @@ -169,13 +169,13 @@ The following features can be accessed from the device panel of a Z-Wave device: ![Z-Wave device panel](/images/integrations/z-wave/z-wave-device-info.png) -* **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one-off changes. -* **Re-interview:** Forces the device to go through the interview process again so that Z-Wave-JS can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device. -* **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. -* **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process. -* **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device. -* **Update:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class). -* **Download diagnostics:** Exports a JSON file describing the entities of this specific device. +- **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one-off changes. +- **Re-interview:** Forces the device to go through the interview process again so that Z-Wave-JS can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device. +- **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. +- **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process. +- **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device. +- **Update:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class). +- **Download diagnostics:** Exports a JSON file describing the entities of this specific device. ## Services @@ -183,14 +183,14 @@ The following features can be accessed from the device panel of a Z-Wave device: This service will update a configuration parameter. To update multiple partial parameters in a single call, use the `zwave_js.bulk_set_partial_config_parameters` service. -| Service Data Attribute | Required | Description | -|------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `device_id` | no | Device ID (or list of device IDs) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `parameter` | yes | The parameter number or the name of the property. The name of the property is case sensitive. | -| `bitmask` | no | The bitmask for a partial parameter in hex (0xff) or decimal (255) format. If the name of the parameter is provided, this is not needed. | -| `value` | yes | The target value for the parameter as the integer value or the state label. The state label is case sensitive. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the configuration parameter on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `parameter` | yes | The parameter number or the name of the property. The name of the property is case sensitive. | +| `bitmask` | no | The bitmask for a partial parameter in hex (0xff) or decimal (255) format. If the name of the parameter is provided, this is not needed. | +| `value` | yes | The target value for the parameter as the integer value or the state label. The state label is case sensitive. | #### Examples of setting a single parameter value @@ -236,13 +236,13 @@ data: This service will bulk set multiple partial configuration parameters. Be warned that correctly using this service requires advanced knowledge of Z-Wave to use correctly. -| Service Data Attribute | Required | Description | -|------------------------ |----------- |------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `device_id` | no | Device ID (or list of device IDs) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `parameter` | yes | The parameter number of the property. The name of the property is case sensitive. | -| `value` | yes | Either the raw integer value that you want to set for the entire parameter, or a dictionary where the keys are either the bitmasks (in integer or hex form) or the partial parameter name and the values are the value you want to set on each partial (either the integer value or a named state when applicable). Note that when using a dictionary, and bitmasks that are not provided will be set to their currently cached values. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to bulk set partial configuration parameters on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `parameter` | yes | The parameter number of the property. The name of the property is case sensitive. | +| `value` | yes | Either the raw integer value that you want to set for the entire parameter, or a dictionary where the keys are either the bitmasks (in integer or hex form) or the partial parameter name and the values are the value you want to set on each partial (either the integer value or a named state when applicable). Note that when using a dictionary, and bitmasks that are not provided will be set to their currently cached values. | #### Examples of bulk setting partial parameter values @@ -325,68 +325,68 @@ data: This service will refresh the value(s) for an entity. This service will generate extra traffic on your Z-Wave network and should be used sparingly. Updates from devices on battery may take some time to be received. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Entity or list of entities to refresh values for. | -| `refresh_all_values` | no | Whether all values should be refreshed. If `false`, only the primary value will be refreshed. If `true`, all watched values will be refreshed. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `entity_id` | yes | Entity or list of entities to refresh values for. | +| `refresh_all_values` | no | Whether all values should be refreshed. If `false`, only the primary value will be refreshed. If `true`, all watched values will be refreshed. | ### Service `zwave_js.set_value` This service will set a value on a Z-Wave device. It is for advanced use cases where you need to modify the state of a node and can't do it using native Home Assistant entity functionality. Be warned that correctly using this service requires advanced knowledge of Z-Wave. The service provides minimal validation and blindly calls the Z-Wave JS API, so if you are having trouble using it, it is likely because you are providing an incorrect value somewhere. To set a config parameter, you should use the `zwave_js.set_config_parameter` or `zwave_js.bulk_set_partial_config_parameters` services instead of this one. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `device_id` | no | Device ID (or list of device IDs) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | -| `command_class` | yes | ID of Command Class that you want to set the value for. | -| `property` | yes | ID of Property that you want to set the value for. | -| `property_key` | no | ID of Property Key that you want to set the value for. | -| `endpoint` | no | ID of Endpoint that you want to set the value for. | -| `value` | yes | The new value that you want to set. | -| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | -| `wait_for_result` | no | Boolean that indicates whether or not to wait for a response from the node. If not included in the payload, the integration will decide whether to wait or not. If set to `true`, note that the service call can take a while if setting a value on an asleep battery device. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `device_id` | no | Device ID (or list of device IDs) to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on. At least one `entity_id`, `device_id`, or `area_id` must be provided. | +| `command_class` | yes | ID of Command Class that you want to set the value for. | +| `property` | yes | ID of Property that you want to set the value for. | +| `property_key` | no | ID of Property Key that you want to set the value for. | +| `endpoint` | no | ID of Endpoint that you want to set the value for. | +| `value` | yes | The new value that you want to set. | +| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | +| `wait_for_result` | no | Boolean that indicates whether or not to wait for a response from the node. If not included in the payload, the integration will decide whether to wait or not. If set to `true`, note that the service call can take a while if setting a value on an asleep battery device. | ### Service `zwave_js.multicast_set_value` This service will set a value on multiple Z-Wave devices using multicast. It is for advanced use cases where you need to set the same value on multiple nodes simultaneously. Be warned that correctly using this service requires advanced knowledge of Z-Wave. The service provides minimal validation beyond what is necessary to properly call the Z-Wave JS API, so if you are having trouble using it, it is likely because you are providing an incorrect value somewhere. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | -| `device_id` | no | Device ID (or list of device IDs) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | -| `broadcast` | no | Boolean that indicates whether you want the message to be broadcast to all nodes on the network. If you have only one Z-Wave network configured, you do not need to provide a `device_id` or `entity_id` when this is set to true. When you have multiple Z-Wave networks configured, you MUST provide at least one `device_id` or `entity_id` so the service knows which network to target. | -| `command_class` | yes | ID of Command Class that you want to set the value for. | -| `property` | yes | ID of Property that you want to set the value for. | -| `property_key` | no | ID of Property Key that you want to set the value for. | -| `endpoint` | no | ID of Endpoint that you want to set the value for. | -| `value` | yes | The new value that you want to set. | -| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `device_id` | no | Device ID (or list of device IDs) to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to set the value on via multicast. At least two `entity_id` or `device_id` must be resolved if not broadcasting the command. | +| `broadcast` | no | Boolean that indicates whether you want the message to be broadcast to all nodes on the network. If you have only one Z-Wave network configured, you do not need to provide a `device_id` or `entity_id` when this is set to true. When you have multiple Z-Wave networks configured, you MUST provide at least one `device_id` or `entity_id` so the service knows which network to target. | +| `command_class` | yes | ID of Command Class that you want to set the value for. | +| `property` | yes | ID of Property that you want to set the value for. | +| `property_key` | no | ID of Property Key that you want to set the value for. | +| `endpoint` | no | ID of Endpoint that you want to set the value for. | +| `value` | yes | The new value that you want to set. | +| `options` | no | Set value options map. Refer to the Z-Wave JS documentation for more information on what options can be set. | ### Service `zwave_js.invoke_cc_api` Call this service to use the Command Class API directly. In most cases, the `zwave_js.set_value` service will accomplish what you need to, but some Command Classes have API commands that can't be accessed via that service. Refer to the [Z-Wave JS Command Class documentation](https://zwave-js.github.io/node-zwave-js/#/api/CCs/index) for the available APIs and arguments. Be sure to know what you are doing when calling this service. -| Service Data Attribute | Required | Description | -|------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the primary value endpoint will be used for each entity. | -| `device_id` | no | Device ID (or list of device IDs) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each device. | -| `area_id` | no | Area ID (or list of area IDs) for devices/entities to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each `zwave_js` device in the area. | -| `command_class` | yes | ID of Command Class that you want to set the value for. | -| `endpoint` | no | The endpoint to call the CC API against. | -| `method_name` | yes | The name of the method that is being called from the CC API. | -| `parameters` | yes | A list of parameters to pass to the CC API method. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the primary value endpoint will be used for each entity. | +| `device_id` | no | Device ID (or list of device IDs) to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each device. | +| `area_id` | no | Area ID (or list of area IDs) for devices/entities to ping. At least one `entity_id`, `device_id`, or `area_id` must be provided. If `endpoint` is specified, that endpoint will be used to make the CC API call for all devices, otherwise the root endpoint (0) will be used for each `zwave_js` device in the area. | +| `command_class` | yes | ID of Command Class that you want to set the value for. | +| `endpoint` | no | The endpoint to call the CC API against. | +| `method_name` | yes | The name of the method that is being called from the CC API. | +| `parameters` | yes | A list of parameters to pass to the CC API method. | ### Service `zwave_js.reset_meter` This service will reset the meters on a device that supports the Meter Command Class. -| Service Data Attribute | Required | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------ | -| `entity_id` | yes | Entity (or list of entities) for the meters you want to reset. | -| `meter_type` | no | If supported by the device, indicates the type of meter to reset. Not all devices support this option. | -| `value` | no | If supported by the device, indicates the value to reset the meter to. Not all devices support this option. | +| Service Data Attribute | Required | Description | +| ---------------------- | -------- | ----------------------------------------------------------------------------------------------------------- | +| `entity_id` | yes | Entity (or list of entities) for the meters you want to reset. | +| `meter_type` | no | If supported by the device, indicates the type of meter to reset. Not all devices support this option. | +| `value` | no | If supported by the device, indicates the value to reset the meter to. Not all devices support this option. | ### Service `zwave_js.set_lock_usercode` @@ -536,9 +536,9 @@ Due to some devices not following the Z-Wave Specification, there are scenarios The following devices currently support this event: -| Make | Model | Entity Domain | -|----------------- |---------------------------------- |--------------- | -| Vision Security | ZL7432 In Wall Dual Relay Switch | `switch` | +| Make | Model | Entity Domain | +| --------------- | -------------------------------- | ------------- | +| Vision Security | ZL7432 In Wall Dual Relay Switch | `switch` | Value Updated example: @@ -613,7 +613,7 @@ trigger: In addition to the [standard automation trigger data](/docs/automation/templating/#all), the `zwave_js.value_updated` trigger platform has additional trigger data available for use. | Template variable | Data | -|------------------------------|--------------------------------------------------------------------------------------------| +| ---------------------------- | ------------------------------------------------------------------------------------------ | | `trigger.device_id` | Device ID for the device in the device registry. | | `trigger.node_id` | Z-Wave node ID. | | `trigger.command_class` | Command class ID. | @@ -660,13 +660,13 @@ trigger: In addition to the [standard automation trigger data](/docs/automation/templating/#all), the `zwave_js.event` trigger platform has additional trigger data available for use. -| Template variable | Data | -|------------------------------|--------------------------------------------------------------------------------------------| -| `trigger.device_id` | Device ID for the device in the device registry (only included for node events). | -| `trigger.node_id` | Z-Wave node ID (only included for node events). | -| `trigger.event_source` | Source of event (node, controller, or driver). | -| `trigger.event` | Name of event. | -| `trigger.event_data` | Any data included in the event. | +| Template variable | Data | +| ---------------------- | -------------------------------------------------------------------------------- | +| `trigger.device_id` | Device ID for the device in the device registry (only included for node events). | +| `trigger.node_id` | Z-Wave node ID (only included for node events). | +| `trigger.event_source` | Source of event (node, controller, or driver). | +| `trigger.event` | Name of event. | +| `trigger.event_data` | Any data included in the event. | ## Advanced installation instructions @@ -674,7 +674,7 @@ If you are using Home Assistant Container, Home Assistant Core, or you don't wan ### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server) -This application provides the connection between your Z-Wave USB stick and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a websocket connection. You need to run this Z-Wave JS server before you can use the integration. +This application provides the connection between your Z-Wave USB stick and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a WebSocket connection. You need to run this Z-Wave JS server before you can use the integration. There are multiple ways to run this server: The chart below illustrates Options 1 and 2, which are available for Home Assistant OS only. @@ -725,7 +725,7 @@ Once you have the Z-Wave JS server up and running, you need to install and confi If you're running full Home Assistant with supervisor, you will be presented with a dialog that asks if you want to use the Z-Wave JS Supervisor add-on. You **must** uncheck this box if you are running the Z-Wave JS server in any manner other than the official Z-Wave JS add-on, including using Z-Wave JS UI add-on. -If you're not running the supervisor or you've unchecked the above-mentioned box, you will be asked to enter a websocket URL (defaults to ws://localhost:3000). It is very important that you fill in the correct (Docker) IP/hostname here. For example for the Z-Wave JS UI add-on this is `ws://a0d7b954-zwavejs2mqtt:3000`. +If you're not running the supervisor or you've unchecked the above-mentioned box, you will be asked to enter a WebSocket URL (defaults to ws://localhost:3000). It is very important that you fill in the correct (Docker) IP/hostname here. For example for the Z-Wave JS UI add-on this is `ws://a0d7b954-zwavejs2mqtt:3000`. ## Frequently Asked Questions @@ -749,12 +749,12 @@ For more information, see [Supported Z-Wave dongles](/docs/z-wave/controllers/#s Some Z-Wave USB sticks can be auto-discovered, which can simplify the Z-Wave setup process. The following devices have been tested with discovery, and offer a quick setup experience; however, these are **not** all of the devices supported by Z-Wave: -| Device | Identifier | Vendor | -| -------| ---------- | ------ | -| Aeotec Z-Stick Gen5+ | 0658:0200 | | -| Nortek HUSBZB-1 | 10C4:8A2A | | -| Zooz ZST10 | 10C4:EA60 | | -| Z-WaveMe UZB | 0658:0200 | | +| Device | Identifier | Vendor | +| -------------------- | ---------- | ---------------------------------------------------------------------------------- | +| Aeotec Z-Stick Gen5+ | 0658:0200 | | +| Nortek HUSBZB-1 | 10C4:8A2A | | +| Zooz ZST10 | 10C4:EA60 | | +| Z-WaveMe UZB | 0658:0200 | | Additional devices may be discoverable, however only devices that have been confirmed discoverable are listed above. @@ -842,9 +842,9 @@ Your device might not send automatic status updates to the controller. While the Z-Wave does not automatically poll devices on a regular basis. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary. -* We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on. +- We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on. -* Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible. +- Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible.

    Polling should only be used as a last resort. You must use it with care and accept the negative impact on your network. Z-Wave is a very low speed network and poll requests can easily flood your network and slow down your commands. @@ -861,8 +861,8 @@ If the interview is complete, then the device does not yet have a device file fo When trying to determine why something isn't working as you expect, or when reporting an issue with the integration, it is helpful to know what Z-Wave JS sees as the current state of your Z-Wave network. To get a dump of your current network state, follow these steps: 1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. On the **Z-Wave** integration, select the cogwheel, then select the three dots. -1. From he dropdown menu, select **Download diagnostics**. +2. Select the **Z-Wave** integration. Then, select the three dots. +3. From he dropdown menu, select **Download diagnostics**. ### Interference issues @@ -873,19 +873,19 @@ Many users have reported issues with interference when the USB stick was directl Z-Wave JS writes details to its logs. To access these logs, follow these steps: 1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. -1. On the **Z-Wave** integration, select the cogwheel, then select **Configure**. -1. Open the **Logs** tab. -1. Make sure to keep this browser tab open. Otherwise the logging is not active. +2. Select the **Z-Wave** integration. Then, select **Configure**. +3. Open the **Logs** tab. +4. Make sure to keep this browser tab open. Otherwise the logging is not active. ## Z-Wave terminology For some of the concepts, you may come across different terminology in Z-Wave than in Home Assistant. The table below provides equivalents for some of those terms. -| Z-Wave functionality | Home Assistant | -| -------------------------------------- | ------------------------------------------------------------------------| -| inclusion | add | -| exclusion | remove | -| barrier operator | cover | -| window covering | cover | -| multilevel switch | represented by different entity types: cover, fan, dimmer, etc. | +| Z-Wave functionality | Home Assistant | +| -------------------- | --------------------------------------------------------------- | +| inclusion | add | +| exclusion | remove | +| barrier operator | cover | +| window covering | cover | +| multilevel switch | represented by different entity types: cover, fan, dimmer, etc. | diff --git a/source/_posts/2015-01-24-release-notes.markdown b/source/_posts/2015-01-24-release-notes.markdown index 4ca68b27162..0c3d4392439 100644 --- a/source/_posts/2015-01-24-release-notes.markdown +++ b/source/_posts/2015-01-24-release-notes.markdown @@ -21,11 +21,11 @@ Thanks to the work done by John McLaughlin and Geoff Norton we now support the l **The getting started guide and component page have been reorganized**
    The getting started instructions have been split into separate pages per component and a general overview page. The goal is to have a page per component that describes: - * What it does - * How to set it up - * Which states it maintains - * Which services it provides - * Additional development tips +- What it does +- How to set it up +- Which states it maintains +- Which services it provides +- Additional development tips **More reasonable errors**
    Home Assistant should now throw better errors and offer solutions if you do not have the right version of Python 3, forgot to clone the git submodules or install the dependencies. diff --git a/source/_posts/2015-02-07-looking-at-the-past.markdown b/source/_posts/2015-02-07-looking-at-the-past.markdown index 245aab06075..109ac5eed65 100644 --- a/source/_posts/2015-02-07-looking-at-the-past.markdown +++ b/source/_posts/2015-02-07-looking-at-the-past.markdown @@ -12,8 +12,8 @@ categories: Ever since the launch of Home Assistant you have been able to track the state of your house. But the view has always been limited to what the current state is. Not what it was. Today we are going to change that by introducing two brand new components: -* Recorder component that will record every event to a SQLite database -* History component that will query and aggregate the recorded events +- Recorder component that will record every event to a SQLite database +- History component that will query and aggregate the recorded events By adding this view into the past, we are adding an extra dimension into the state of your house. This brings great new possibilities for future features. The focus of today's release is on getting the recording component to you to start recording and getting some data. To show what is being recorded a view has been added that shows the last 24 hours of your house. Expect more extensive tools to explore your history in the future. diff --git a/source/_posts/2015-05-09-utc-time-zone-awareness.markdown b/source/_posts/2015-05-09-utc-time-zone-awareness.markdown index 442b7855770..23218f9d08c 100644 --- a/source/_posts/2015-05-09-utc-time-zone-awareness.markdown +++ b/source/_posts/2015-05-09-utc-time-zone-awareness.markdown @@ -33,6 +33,6 @@ This refactor adds a new migration for the database adding a `utc_offset` column All built-in components have been upgraded. The following list is only for people that run custom components: - * `hass.track_time_change` and `hass.track_point_in_time` will now return a time zone aware datetime object. Python does not allow comparing a naive with an aware datetime object. - * the sun attributes for rising and setting are now in UTC. The methods `sun.next_rising(hass)` and `sun.next_setting(hass)` are backwards compatible, just be careful if you used to read the raw attributes. - * the API sends all times in UTC. If you use anything else besides the frontend to talk to HA, make sure it handles it differently. +- `hass.track_time_change` and `hass.track_point_in_time` will now return a time zone aware datetime object. Python does not allow comparing a naive with an aware datetime object. +- the sun attributes for rising and setting are now in UTC. The methods `sun.next_rising(hass)` and `sun.next_setting(hass)` are backwards compatible, just be careful if you used to read the raw attributes. +- the API sends all times in UTC. If you use anything else besides the frontend to talk to HA, make sure it handles it differently. diff --git a/source/_posts/2015-06-10-release-notes.markdown b/source/_posts/2015-06-10-release-notes.markdown index d5aed27afa5..9ceaf1507b3 100644 --- a/source/_posts/2015-06-10-release-notes.markdown +++ b/source/_posts/2015-06-10-release-notes.markdown @@ -28,17 +28,17 @@ To update to the latest version, run scripts/update. Please report Before jumping into the newly supported platforms, here are the other improvements that are landing this release: - * Fronted upgraded to Polymer 1.0 by @balloob - * Include other YAML files using the `!include` keyword by @andythigpen - * Switch support and bug fixes for Vera platform by @jamespcole - * HTTP session support for the HTTP component by @jamespcole - * Device tracker bugfixes by @Dutchy- - * Bugfix for device tracker platform by @fbradyirl - * Fixing Chromecast support by @wind-rider - * Media player improvements by @balloob and @wind-rider - * Nest thermostat bugfixes by @balloob - * Fix the device tracker getting in a deadlock by @balloob - * Update documentation by @fabaff +- Fronted upgraded to Polymer 1.0 by @balloob +- Include other YAML files using the `!include` keyword by @andythigpen +- Switch support and bug fixes for Vera platform by @jamespcole +- HTTP session support for the HTTP component by @jamespcole +- Device tracker bugfixes by @Dutchy- +- Bugfix for device tracker platform by @fbradyirl +- Fixing Chromecast support by @wind-rider +- Media player improvements by @balloob and @wind-rider +- Nest thermostat bugfixes by @balloob +- Fix the device tracker getting in a deadlock by @balloob +- Update documentation by @fabaff __Music Player Daemon__ Fabaff has contributed MusicPlayerDaemon support. The mpd platform allows you to control a [Music Player Daemon](http://www.musicpd.org/) from Home Assistant. Right now, only playback is supported and not playlist manipulation. diff --git a/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown b/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown index a7cb68e5745..31b87fe756a 100644 --- a/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown +++ b/source/_posts/2015-11-16-zwave-switches-lights-and-honeywell-thermostats-now-supported.markdown @@ -28,20 +28,20 @@ homeassistant: - * Thermostat: [Honeywell](/integrations/honeywell/) now supported ([@sander76]) - * Switch: [Orvibo](/integrations/orvibo) now supported ([@happyleavesaoc]) - * Camera: [mjpeg camera's](/integrations/mjpeg) now supported ([@ryanturner]) - * Notify: Pushetta now supported ([@fabaff]) - * Light: [MQTT](/integrations/light.mqtt/) now supported ([@hexxter]) - * Light: [Z-Wave](/integrations/zwave/) now supported ([@leoc]) - * Switch: [Z-Wave](/integrations/zwave/) now supported ([@leoc]) - * New component [logger](/integrations/logger/) allows filtering logged data ([@badele]) - * New component [updater](/integrations/updater/) will notify users if an update for Home Assistant is available ([@rmkraus]) - * Notify: [PushBullet](/integrations/pushbullet) now allows targeting contacts/channels/specific devices ([@tomduijf]) - * Light: Allow controlling color temperature ([@tomduijf]) - * Frontend: about page added ([@balloob]) - * Switch RGB as the color unit used in light component ([@balloob]) - * Re-install platform and component dependencies after a Home Assistant version upgrade ([@balloob]) +- Thermostat: [Honeywell](/integrations/honeywell/) now supported ([@sander76]) +- Switch: [Orvibo](/integrations/orvibo) now supported ([@happyleavesaoc]) +- Camera: [mjpeg camera's](/integrations/mjpeg) now supported ([@ryanturner]) +- Notify: Pushetta now supported ([@fabaff]) +- Light: [MQTT](/integrations/light.mqtt/) now supported ([@hexxter]) +- Light: [Z-Wave](/integrations/zwave/) now supported ([@leoc]) +- Switch: [Z-Wave](/integrations/zwave/) now supported ([@leoc]) +- New component [logger](/integrations/logger/) allows filtering logged data ([@badele]) +- New component [updater](/integrations/updater/) will notify users if an update for Home Assistant is available ([@rmkraus]) +- Notify: [PushBullet](/integrations/pushbullet) now allows targeting contacts/channels/specific devices ([@tomduijf]) +- Light: Allow controlling color temperature ([@tomduijf]) +- Frontend: about page added ([@balloob]) +- Switch RGB as the color unit used in light component ([@balloob]) +- Re-install platform and component dependencies after a Home Assistant version upgrade ([@balloob]) [Material Design Icons]: https://pictogrammers.com/library/mdi/ [@sander76]: https://github.com/sander76 diff --git a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown index a3b525aebd3..05d7dd5cc0a 100644 --- a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown +++ b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown @@ -32,15 +32,15 @@ For my next trick, let's hand out some... I felt that I had to 1-up Paulus ([@balloob]) somehow with his 500,000 pageviews stat he shared in the [0.26 blog post](/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/), so I pushed myself and our development community as a whole super hard the last two weeks to put a lot of love into Home Assistant to bring you not just one, but six **#Amazing** stats for this release. As of 0.27, we have now surpassed the following milestones: -* [10,000](https://travis-ci.org/home-assistant/home-assistant/builds/154660811) builds on Travis (congrats to [@BluGeni]) -* [3,000](https://github.com/home-assistant/home-assistant/pull/3000) issues and pull requests (thanks [@kellerza]!) -* [2,000](https://github.com/home-assistant/home-assistant/pull/2991) pull requests alone (awesome [@fabaff]!!) -* 900 forks on Github! +- [10,000](https://travis-ci.org/home-assistant/home-assistant/builds/154660811) builds on Travis (congrats to [@BluGeni]) +- [3,000](https://github.com/home-assistant/home-assistant/pull/3000) issues and pull requests (thanks [@kellerza]!) +- [2,000](https://github.com/home-assistant/home-assistant/pull/2991) pull requests alone (awesome [@fabaff]!!) +- 900 forks on Github! In addition, -* We are very close to 4,000 stars on Github! -* [I'm now #5 contributor by most commits!!!](https://github.com/home-assistant/home-assistant/graphs/contributors) Hey wait, how'd this get in here 😳... +- We are very close to 4,000 stars on Github! +- [I'm now #5 contributor by most commits!!!](https://github.com/home-assistant/home-assistant/graphs/contributors) Hey wait, how'd this get in here 😳... Now that we have that great news out of the way, onto this week's release which is going to keep the **#Amazing** gravy train rolling right along and get to the stuff you all _really_ are here for. diff --git a/source/_posts/2016-10-24-explaining-the-updater.markdown b/source/_posts/2016-10-24-explaining-the-updater.markdown index ed9a4ecf1ce..c4cb5d3069d 100644 --- a/source/_posts/2016-10-24-explaining-the-updater.markdown +++ b/source/_posts/2016-10-24-explaining-the-updater.markdown @@ -26,11 +26,11 @@ Please note that this functionality is not done yet but will be available in a f As developers of Home Assistant, we will be able to see in what kind of environments Home Assistant is running. Here’s a few data points we didn’t have until now: -* Total number of instances -* Which operating systems versions and flavors are in use -* Python version -* What option is more popular: Docker, Virtualenv or bare metal installs? -* How popular is our new [Raspberry Pi image][rpi-image]? +- Total number of instances +- Which operating systems versions and flavors are in use +- Python version +- What option is more popular: Docker, Virtualenv or bare metal installs? +- How popular is our new [Raspberry Pi image][rpi-image]? ## Why we look up your IP address with GeoIP diff --git a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown index a0fec3cf789..6fbf5663fec 100644 --- a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown +++ b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown @@ -25,12 +25,12 @@ The brand new [`remote`][remote] component made by [@iandday] will simplify the The [HomeMatic][homematic] component has received some updates worth mentioning: -* Additional services - * `reconnect`: Reconnect to your CCU/Homegear without restarting Home Assistant. - * `set_dev_value`: Manually control a device, even if it's not supported by Home Assistant yet. -* Support for multiple HomeMatic hosts -* Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices) -* Various improvements and fixes, especially for HM-Sec-Key (KeyMatic) +- Additional services + - `reconnect`: Reconnect to your CCU/Homegear without restarting Home Assistant. + - `set_dev_value`: Manually control a device, even if it's not supported by Home Assistant yet. +- Support for multiple HomeMatic hosts +- Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices) +- Various improvements and fixes, especially for HM-Sec-Key (KeyMatic) The support for multiple hosts is a result of allowing mixed configurations with wireless, wired, and IP devices. This has the drawback of making the update a breaking change (along with the renamed `set_value` service). However, the benefits and possibilities gained will be worth it. diff --git a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown index 30668843a00..69c56f70fc0 100644 --- a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown +++ b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown @@ -22,16 +22,16 @@ The app could be hosted on any Node.js hosting. I prefer [Heroku: Cloud Applicat 1. Configure [CloudMQTT](https://www.cloudmqtt.com/). Check this [video tutorial](https://www.youtube.com/watch?v=VaWdvVVYU3A) for details. 1. [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/petkov/http_to_mqtt) HTTP to MQTT bridge app. 1. Add the [Configuration Variables](https://devcenter.heroku.com/articles/config-vars#setting-up-config-vars-for-a-deployed-application) to your Heroku app mentioned here. - * AUTH_KEY: Can be any string, eg. `912ec803b2ce49e4a541068d495ab570`. - * MQTT_HOST: The host of your MQTT broker, eg. mqtts://k99.cloudmqtt.com:21234. - * MQTT_USER: MQTT username - * MQTT_PASS: MQTT password + - AUTH_KEY: Can be any string, eg. `912ec803b2ce49e4a541068d495ab570`. + - MQTT_HOST: The host of your MQTT broker, eg. mqtts://k99.cloudmqtt.com:21234. + - MQTT_USER: MQTT username + - MQTT_PASS: MQTT password 1. Create an IFTTT applet the same way as described in [BRUH Automation](https://youtu.be/087tQ7Ly7f4?t=265) video. 1. Configure [Maker Webhooks](https://ifttt.com/maker_webhooks) service with below parameters. - * URL: `https://.herokuapp.com/post/` - * Method: `POST` - * Content Type: `application/json` - * Body: `{"topic":"","message":"","key":""}` + - URL: `https://.herokuapp.com/post/` + - Method: `POST` + - Content Type: `application/json` + - Body: `{"topic":"","message":"","key":""}` ### Subscribe to latest version diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown index ab9381e8be8..1386f2fc92a 100644 --- a/source/_posts/2017-09-09-release-53.markdown +++ b/source/_posts/2017-09-09-release-53.markdown @@ -91,8 +91,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - The new customize editor is using the file `customize.yaml` in your config folder. If you are using this file today for other config, make sure to rename it before using the new customize UI editor. ([@andrey-git] - [#9134]) ([config docs]) (breaking change) (new-platform) - The frontend component now supports loading custom html files when Home Assistant front end starts ([@andrey-git] - [#9150]) (breaking change). It could be Javascript, CSS or custom Web Components. Along there was a breaking change in the way Custom UI is used: - * `custom_ui_state_card` now specifies the exact element name and not a suffix after `state-card`. So if you had `state_card_custom_ui: custom-ui` in your config, you should change it to `state_card_custom_ui: state-card-custom-ui` - * `custom_ui_state_card` no longer makes the html fetch, you should make it separately: + - `custom_ui_state_card` now specifies the exact element name and not a suffix after `state-card`. So if you had `state_card_custom_ui: custom-ui` in your config, you should change it to `state_card_custom_ui: state-card-custom-ui` + - `custom_ui_state_card` no longer makes the html fetch, you should make it separately: ```yaml frontend: diff --git a/source/_posts/2019-02-06-release-87.markdown b/source/_posts/2019-02-06-release-87.markdown index a2de7b78eee..d7c307ab935 100644 --- a/source/_posts/2019-02-06-release-87.markdown +++ b/source/_posts/2019-02-06-release-87.markdown @@ -97,7 +97,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - SolarEdge sensors: This PR changes the **entity names** of this sensor and the **monitoring condition keys** in the configuration: `sensor.solaredge_current_power` -> `sensor.solaredge_current_power`, `sensor.solaredge_last_day_data` -> `sensor.solaredge_energy_today`, `sensor.solaredge_last_month_data` -> `sensor.solaredge_energy_this_month`, `sensor.solaredge_last_year_data` -> `sensor.solaredge_energy_this_year`, `sensor.solaredge_life_time_data` -> `sensor.solaredge_lifetime_energy`, ([@LouisMT] - [#20109]) ([sensor.solaredge docs]) (breaking change) - Geolocation is no longer creating a default group. ([@exxamalte] - [#20338]) ([geo_location docs]) (breaking change) - The Dovado sensor platform has been broken up into a Dovado component with sensor and notify platforms. The configuration variables have been changed. Please refer to the documentation for the correct configuration. ([@rohankapoorcom] - [#20339]) ([dovado docs]) ([sensor.dovado docs]) (breaking change) -- Brottsplatskartan: The incident type count is reset every day. Before this change, it didn't reset until you restarted Home assistant. ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) +- Brottsplatskartan: The incident type count is reset every day. Before this change, it didn't reset until you restarted Home Assistant. ([@chrillux] - [#20117]) ([sensor.brottsplatskartan docs]) (breaking change) - Ambient PWS has new configuration and entity IDs will change. Configure it now via the integrations page. ([@bachya] - [#20332]) ([ambient_station docs]) ([sensor.ambient_station docs]) (breaking change) - New Transmission component. With the introduction of the Transmission component, the configuration for Transmission sensor and switch has been moved to the component configuration. Configuration must be changed accordingly. ([@MatteGary] - [#19230]) ([transmission docs]) ([sensor.transmission docs]) (breaking change) (new-platform) - The alarm control panel will now flag mistyped configs from `configuration.yaml` correctly as invalid, instead of just ignoring them. ([@emontnemery] - [#20224]) ([alarm_control_panel docs]) (breaking change) diff --git a/source/_posts/2019-02-11-hass-cli-0-dot-5-area-entity-registry-and-event-cli.markdown b/source/_posts/2019-02-11-hass-cli-0-dot-5-area-entity-registry-and-event-cli.markdown index 3940cf811bb..c878b68e0a3 100644 --- a/source/_posts/2019-02-11-hass-cli-0-dot-5-area-entity-registry-and-event-cli.markdown +++ b/source/_posts/2019-02-11-hass-cli-0-dot-5-area-entity-registry-and-event-cli.markdown @@ -119,32 +119,32 @@ The full change list including bugfixes from community is as follows: New features: -* Device, Area and event support [237ade8](http://github.com/home-assistant/home-assistant-cli/commit/237ade81372d25bfb3655c6a9f10d4aa697cad2e) @maxandersen -* add minimal dockerfile [2b00bd7](http://github.com/home-assistant/home-assistant-cli/commit/2b00bd7e5b865775e7787c9cedf8d9c17d5f68cb) Ben Lebherz +- Device, Area and event support [237ade8](http://github.com/home-assistant/home-assistant-cli/commit/237ade81372d25bfb3655c6a9f10d4aa697cad2e) @maxandersen +- add minimal dockerfile [2b00bd7](http://github.com/home-assistant/home-assistant-cli/commit/2b00bd7e5b865775e7787c9cedf8d9c17d5f68cb) Ben Lebherz Bug fixes: -* fix(entity): honor --columns in entity get [67397a1](http://github.com/home-assistant/home-assistant-cli/commit/67397a102295381d5d9101a51764643a3668e1e6) @maxandersen -* Fix result reporting from service calls [14fc952](http://github.com/home-assistant/home-assistant-cli/commit/14fc9527ec0861a7dd26e185f4937bf9aace7f07) @maxandersen -* Remove pyaml and move to ruamel only for yaml [df9f8c2](http://github.com/home-assistant/home-assistant-cli/commit/df9f8c23fa9993f16c735159634f29d2a50e1a43) @maxandersen +- fix(entity): honor --columns in entity get [67397a1](http://github.com/home-assistant/home-assistant-cli/commit/67397a102295381d5d9101a51764643a3668e1e6) @maxandersen +- Fix result reporting from service calls [14fc952](http://github.com/home-assistant/home-assistant-cli/commit/14fc9527ec0861a7dd26e185f4937bf9aace7f07) @maxandersen +- Remove pyaml and move to ruamel only for yaml [df9f8c2](http://github.com/home-assistant/home-assistant-cli/commit/df9f8c23fa9993f16c735159634f29d2a50e1a43) @maxandersen Minor fixes: -* fix: release 0.5.0 version [200a099](http://github.com/home-assistant/home-assistant-cli/commit/200a099d066f2f5b34cce986e29952f4b6bb6594) @maxandersen -* fix: be pep440 complant [98320f8](http://github.com/home-assistant/home-assistant-cli/commit/98320f888b75c8a091c5d19b154cac5b2946ac7b) @maxandersen -* fix: fix lint errors [eca26fa](http://github.com/home-assistant/home-assistant-cli/commit/eca26fa4c2ebd0637a75a221dc17af60210bd0b3) @maxandersen -* fix: fix lint errors [ffd2369](http://github.com/home-assistant/home-assistant-cli/commit/ffd23695cace01e872590fba06dedab63a56693f) @maxandersen -* enable deploy of git timestamped build [4b27a65](http://github.com/home-assistant/home-assistant-cli/commit/4b27a65a2ddab302d97253b677df55739696c6d7) @maxandersen -* Merge branch 'master' into dev [caaf7b1](http://github.com/home-assistant/home-assistant-cli/commit/caaf7b160f1bc7f7854d82ecdb35d0954c5e7ea8) @maxandersen -* add docker reference [d3b64e8](http://github.com/home-assistant/home-assistant-cli/commit/d3b64e886f2a3380e0c4dceb0ea5a5c7d8e7eedc) @maxandersen -* docs: add docs for area, device and event watch [ee4f74a](http://github.com/home-assistant/home-assistant-cli/commit/ee4f74af87ec810a135c66d0d193a14242213328) @maxandersen -* Make dockerfile build from source + entrypoint [b7f8764](http://github.com/home-assistant/home-assistant-cli/commit/b7f876420df65b07a6b2a99c0e7dc7635711c1cd) @maxandersen -* Fix lint issue [8bb0c9e](http://github.com/home-assistant/home-assistant-cli/commit/8bb0c9e4d62ff364f54e1561573e37c7517a46c9) @fabaff -* Fix lint issues [58fdc83](http://github.com/home-assistant/home-assistant-cli/commit/58fdc835978f0448d43e43595379c32c161f3af3) @fabaff -* fix bad typing [499b544](http://github.com/home-assistant/home-assistant-cli/commit/499b5449b0441b546ea48aff212754433457dbd5) @maxandersen -* fix editor formatting [86d9bf8](http://github.com/home-assistant/home-assistant-cli/commit/86d9bf8bf6bfb5bec1a9f28177c105f84912a91b) @maxandersen -* Fix version [3765a03](http://github.com/home-assistant/home-assistant-cli/commit/3765a03ccf11f0865baa7e70937279bcaa245352) @maxandersen -* Fix version marker [edbe4bf](http://github.com/home-assistant/home-assistant-cli/commit/edbe4bf42e7d0993d68a367ca04ad80217aac395) @maxandersen +- fix: release 0.5.0 version [200a099](http://github.com/home-assistant/home-assistant-cli/commit/200a099d066f2f5b34cce986e29952f4b6bb6594) @maxandersen +- fix: be pep440 complant [98320f8](http://github.com/home-assistant/home-assistant-cli/commit/98320f888b75c8a091c5d19b154cac5b2946ac7b) @maxandersen +- fix: fix lint errors [eca26fa](http://github.com/home-assistant/home-assistant-cli/commit/eca26fa4c2ebd0637a75a221dc17af60210bd0b3) @maxandersen +- fix: fix lint errors [ffd2369](http://github.com/home-assistant/home-assistant-cli/commit/ffd23695cace01e872590fba06dedab63a56693f) @maxandersen +- enable deploy of git timestamped build [4b27a65](http://github.com/home-assistant/home-assistant-cli/commit/4b27a65a2ddab302d97253b677df55739696c6d7) @maxandersen +- Merge branch 'master' into dev [caaf7b1](http://github.com/home-assistant/home-assistant-cli/commit/caaf7b160f1bc7f7854d82ecdb35d0954c5e7ea8) @maxandersen +- add docker reference [d3b64e8](http://github.com/home-assistant/home-assistant-cli/commit/d3b64e886f2a3380e0c4dceb0ea5a5c7d8e7eedc) @maxandersen +- docs: add docs for area, device and event watch [ee4f74a](http://github.com/home-assistant/home-assistant-cli/commit/ee4f74af87ec810a135c66d0d193a14242213328) @maxandersen +- Make dockerfile build from source + entrypoint [b7f8764](http://github.com/home-assistant/home-assistant-cli/commit/b7f876420df65b07a6b2a99c0e7dc7635711c1cd) @maxandersen +- Fix lint issue [8bb0c9e](http://github.com/home-assistant/home-assistant-cli/commit/8bb0c9e4d62ff364f54e1561573e37c7517a46c9) @fabaff +- Fix lint issues [58fdc83](http://github.com/home-assistant/home-assistant-cli/commit/58fdc835978f0448d43e43595379c32c161f3af3) @fabaff +- fix bad typing [499b544](http://github.com/home-assistant/home-assistant-cli/commit/499b5449b0441b546ea48aff212754433457dbd5) @maxandersen +- fix editor formatting [86d9bf8](http://github.com/home-assistant/home-assistant-cli/commit/86d9bf8bf6bfb5bec1a9f28177c105f84912a91b) @maxandersen +- Fix version [3765a03](http://github.com/home-assistant/home-assistant-cli/commit/3765a03ccf11f0865baa7e70937279bcaa245352) @maxandersen +- Fix version marker [edbe4bf](http://github.com/home-assistant/home-assistant-cli/commit/edbe4bf42e7d0993d68a367ca04ad80217aac395) @maxandersen Have fun! diff --git a/source/_posts/2019-03-20-release-90.markdown b/source/_posts/2019-03-20-release-90.markdown index 6e47285f97a..08d177cda57 100644 --- a/source/_posts/2019-03-20-release-90.markdown +++ b/source/_posts/2019-03-20-release-90.markdown @@ -143,14 +143,14 @@ Experiencing issues introduced by this release? Please report them in our [issue - __http.api_password__ - __Deprecated__ - Users who are still using api_password for authentication will need to move its configuration under auth_providers. Please see the [updated documentation](/docs/authentication/providers/#legacy-api-password) for further details. Those who don't make this change will see an INFO level reminder in the Home Assistant logs until the fix is made for a time, but please note, __api_password authentication will eventually be removed completely__ and we advise users to change to use one of the [other authentication methods](/docs/authentication/providers/#available-auth-providers). If you manually specify auth providers in your `configuration.yaml`, you will need to migrate your API Password from the http section to the auth provider section to continue using it. ([@awarecan] - [#21884]) ([api docs]) ([frontend docs]) ([hassio docs]) ([http docs]) ([mqtt docs]) ([websocket_api docs]) ([zeroconf docs]) ([camera.proxy docs]) - __Default Config__ - Default config no longer contains the discovery component. That is now part of the initial written configuration.yaml. If you rely on default config and want to use discovery, add `discovery:` back to your configuration.yaml. - __Netatmo__ - * Added support for multiple Netatmo thermostats/valves allowing the user to specify different homes or rooms! Please check the [updated documentation](/integrations/netatmo#climate) for configuration details. ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs]) - * `current_operation` will no longer return the the boiler status, but the operation_mode. For example, heat, cool, or idle. Please check the [updated documentation](/integrations/netatmo#climate) for more details. ([@shanbs] - [#21633]) ([netatmo docs]) + - Added support for multiple Netatmo thermostats/valves allowing the user to specify different homes or rooms! Please check the [updated documentation](/integrations/netatmo#climate) for configuration details. ([@shanbs] - [#19407]) ([netatmo docs]) ([climate.netatmo docs]) + - `current_operation` will no longer return the the boiler status, but the operation_mode. For example, heat, cool, or idle. Please check the [updated documentation](/integrations/netatmo#climate) for more details. ([@shanbs] - [#21633]) ([netatmo docs]) - __Utility Meter__ - Currently the offset configuration parameter is an integer that limits daily cycles to have offsets in days, monthly cycles to have offsets in months, etc. This change increases the flexibility of offset by making it a more flexible time period that can be described in a combination of hours, days, months, etc. This makes it possible for a yearly cycle to start at a given day of a given month. Please see the [updated documentation](/integrations/utility_meter/) for the new configuration options. ([@dgomes] - [#20926]) ([utility_meter docs]) - __KNX__ - An update for xknx to version 0.10.0 requires users to update their configuration by changing `target_temperature_address` to `target_temperature_state_address`. Other fixes and features: - * Connection config can now be configured in xknx.yml. - * Introduce a configurable rate limit which limits the number of KNX telegrams sent to the bus per second. - * Users who configured their lights via xknx.yml no longer need to manually set min_kelvin and max_kelvin (fixes #21251) ([@marvin-w] - [#21541]) ([knx docs]) + - Connection config can now be configured in xknx.yml. + - Introduce a configurable rate limit which limits the number of KNX telegrams sent to the bus per second. + - Users who configured their lights via xknx.yml no longer need to manually set min_kelvin and max_kelvin (fixes #21251) ([@marvin-w] - [#21541]) ([knx docs]) - __Nanoleaf__ - The Nanoleaf component now supports _both_ nanoleaf lights, Aurora and Canvas. As a result of this change the user needs to change the platform from `nanoleaf_aurora` to `nanoleaf` ([@Oro] - [#21913]) ([light.nanoleaf docs]) - __FireTV__- is now androidtv. Instead of having near-duplicate integrations for androidtv and firetv, the decision was made to combine them into one. Users will need to change `- platform: firetv` to `- platform: androidtv` in their configuration. ([@JeffLIrion] - [#21944]) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 6dcd4fec974..4af3430ae19 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -205,8 +205,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Netgear lte__ - The previous three components (network, notify, and sensor) now fall under one netgear_lte component. Check the [updated documentation](/integrations/netgear_lte/) for more information. ([@amelchio] - [#22105]) ([netgear_lte docs]) - __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](/integrations/websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([websocket_api docs]) - __Public Transit (GTFS)__ - * The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) - * Sensor updates were running many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) + - The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) + - Sensor updates were running many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) - __Yeelight__ - This is now its own component and has been broken out from the light platform. More Yeelights are being released with more features and this will make if possible to support them. Examples would be adding sensors for a ceiling light, getting the current power mode (daylight/nightlight), or supporting switches to turn moonlight on or off without having to use a service call. Make sure to visit the updated documentation. ([@zewelor] - [#21593]) ([yeelight docs]) - __Axis__ - Events supplied from component might differ. Events will not be configurable in the beginning but will instead provide a subset set of events supported per device. This will be configurable in a later stage when config entry options are available. Configuration.yaml support for Axis component will be removed in the future so make sure to remove references to Axis component after upgrade. ([@Kane610] - [#18543]) ([axis docs]) - __HTTP__ - Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) diff --git a/source/_posts/2019-04-15-hassio-ingress.markdown b/source/_posts/2019-04-15-hassio-ingress.markdown index b64b04e4169..27d799c8414 100644 --- a/source/_posts/2019-04-15-hassio-ingress.markdown +++ b/source/_posts/2019-04-15-hassio-ingress.markdown @@ -21,15 +21,15 @@ Demo with an add-on on Ingress. Some add-ons already have been upgraded to support the new Ingress feature. Here are a couple of add-ons that support Ingress and are available on the add-on store right now: Core add-ons: -* [Configurator](/addons/configurator/) -* [deCONZ](https://github.com/home-assistant/hassio-addons/tree/master/deconz#readme) +- [Configurator](/addons/configurator/) +- [deCONZ](https://github.com/home-assistant/hassio-addons/tree/master/deconz#readme) Community add-ons: -* [Node-RED](https://github.com/hassio-addons/addon-node-red#readme) -* [Visual Studio Code](https://github.com/hassio-addons/addon-vscode#readme) -* [InfluxDB](https://github.com/hassio-addons/addon-influxdb#readme) -* [SSH & Web Terminal](https://github.com/hassio-addons/addon-ssh#readme) -* [AdGuard Home](https://github.com/hassio-addons/addon-adguard-home#readme) +- [Node-RED](https://github.com/hassio-addons/addon-node-red#readme) +- [Visual Studio Code](https://github.com/hassio-addons/addon-vscode#readme) +- [InfluxDB](https://github.com/hassio-addons/addon-influxdb#readme) +- [SSH & Web Terminal](https://github.com/hassio-addons/addon-ssh#readme) +- [AdGuard Home](https://github.com/hassio-addons/addon-adguard-home#readme) You can recognize add-ons that support the Ingress feature by the Ingress icon on the add-on information tab: @@ -48,8 +48,8 @@ Releasing the Ingress feature is just a start. It allows us to make even better While adding Ingress support, we have tweaked and polished some other things in the Hass.io user interface: -* Network ports in the add-on view now have a description, so you know what they are being used for. -* Reloading the add-on store will now show a spinner to indicate that reloading is being done. +- Network ports in the add-on view now have a description, so you know what they are being used for. +- Reloading the add-on store will now show a spinner to indicate that reloading is being done. ## For add-on developers @@ -63,16 +63,16 @@ Are you an add-on developer looking to support Ingress on your add-on? [Check th Hass.io Ingress is a new and complex technology. Without a doubt, now that everybody starts using it, we will discover new issues. Here are some frequently asked questions and some currently known issues with the Ingress feature. -* **After upgrading the add-on, I’m unable to access it directly.**
    +- **After upgrading the add-on, I’m unable to access it directly.**
    Direct access to the add-on might now be disabled by default by the add-on developer. If the add-on supports running Ingress + direct access, you can re-enable direct access by setting a port number in the “Network” section of the add-on configuration. -* **After upgrading the add-on, my `panel_iframe` doesn’t work anymore.**
    +- **After upgrading the add-on, my `panel_iframe` doesn’t work anymore.**
    This is related to the question above. Once you enable direct access again, your iFrame panel will start working again. Until the automated panel integration lands in 0.92, you can also manually add a panel that points at Ingress. -* **I cannot upgrade my add-on: “This update is no longer compatible with your system.”**
    +- **I cannot upgrade my add-on: “This update is no longer compatible with your system.”**
    Please update your Home Assistant installation to 0.91.3 or higher. -* **I cannot access the add-on via Ingress using the Tor Browser or Firefox.**
    +- **I cannot access the add-on via Ingress using the Tor Browser or Firefox.**
    We found a last minute issue impacting Firefox based browsers (including the Tor Browser). There are some issues accessing add-ons that use WebSockets. We have identified the issue and expect it to be solved with the release of Home Assistant 0.91.4. diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown index c53437dd638..d4d21167a27 100644 --- a/source/_posts/2019-04-24-release-92.markdown +++ b/source/_posts/2019-04-24-release-92.markdown @@ -175,9 +175,9 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Amcrest__ - Remove Build Date, Version and Serial Number attributes from sensors. These values do not change during the life of the device and are not appropriate for state attributes. ([@pnbruckner] - [#22418]) ([amcrest docs]) - __Insteon__ - Placeholders that forwarded users from insteon_plm and insteon_local to insteon component have been removed. ([@balloob] - [#22710]) - __Logi Circle__ - This is a breaking change to the Logi Circle integration which migrates from Logitech's private API to their public API. - * Authentication with Logi Circle's API is now performed using an authorization code grant, and is managed by the Integrations page. It's no longer possible to authenticate with a username and password directly. Please remove any existing configuration for the logi_circle integration and follow the directions here to configure the logi_circle integration with at least a client_id, client_secret, api_key and redirect_uri. - * Logi Circle camera and sensor entities are now auto-discovered once the integration is authenticated. Users should remove the logi_circle integration from camera and sensor platforms as this is no longer supported. - * Logi Circle services have been moved from the camera domain to the logi_circle domain + - Authentication with Logi Circle's API is now performed using an authorization code grant, and is managed by the Integrations page. It's no longer possible to authenticate with a username and password directly. Please remove any existing configuration for the logi_circle integration and follow the directions here to configure the logi_circle integration with at least a client_id, client_secret, api_key and redirect_uri. + - Logi Circle camera and sensor entities are now auto-discovered once the integration is authenticated. Users should remove the logi_circle integration from camera and sensor platforms as this is no longer supported. + - Logi Circle services have been moved from the camera domain to the logi_circle domain Please check the documentation for further details. ([@evanjd] - [#20624]) ([logi_circle docs]) - __Introduction__ - The introduction integration has been removed. It used to be part of the initially created configuration but no longer served a purpose. ([@balloob] - [#22944]) ([introduction docs]) diff --git a/source/_posts/2019-05-16-release-93.markdown b/source/_posts/2019-05-16-release-93.markdown index bf0f2387e3d..4624a7f75b8 100644 --- a/source/_posts/2019-05-16-release-93.markdown +++ b/source/_posts/2019-05-16-release-93.markdown @@ -157,8 +157,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Homematic IP Cloud__ - Adds homematicip cloud temperature sensor from thermostats. Entity IDs of HmIP-SLO (Light Sensor Outdoor) will change and stale entities will need to be removed from the entity registry. ([@SukramJ] - [#23263]) ([homematicip_cloud docs]) - __Pollen.com__ - * IQVIA is the parent company which hosts a variety of sites (https://pollen.com, https://flustar.com, etc.) from which valid data can come. To accommodate this, the Pollen.com sensor platform is now the IQVIA component and the configuration.yaml schema has changed accordingly. ([@bachya] - [#22986]) ([iqvia docs]) ([pollen docs]) - * The IQVIA component no longer provides historical data for allergen and asthma conditions. Tactically, this means all historical sensors – including "Yesterday" sensors – will no longer appear; users will need to update any automations that previously relied on these sensors. ([@bachya] - [#23258]) ([iqvia docs]) + - IQVIA is the parent company which hosts a variety of sites (https://pollen.com, https://flustar.com, etc.) from which valid data can come. To accommodate this, the Pollen.com sensor platform is now the IQVIA component and the configuration.yaml schema has changed accordingly. ([@bachya] - [#22986]) ([iqvia docs]) ([pollen docs]) + - The IQVIA component no longer provides historical data for allergen and asthma conditions. Tactically, this means all historical sensors – including "Yesterday" sensors – will no longer appear; users will need to update any automations that previously relied on these sensors. ([@bachya] - [#23258]) ([iqvia docs]) Example configuration: ```yaml @@ -170,8 +170,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Sonos__ - * Configuring the Sonos integration as a media_player: platform in configuration.yaml was deprecated in 0.72 and has now been removed. Please see the notes above in this release post as well as the component documentation for further info. ([@amelchio] - [#23385]) ([sonos docs]) - * Sonos-specific services have been moved from the media_player domain to the sonos domain. For example, media_player.sonos_join has become sonos.join. Services sonos.set_sleep_timer, sonos.clear_sleep_timer, sonos.update_alarm and sonos.set_option now require the entity_id parameter and will not target all when it is missing. You can use all to target all. ([@amelchio] - [#23670]) ([sonos docs]) + - Configuring the Sonos integration as a media_player: platform in configuration.yaml was deprecated in 0.72 and has now been removed. Please see the notes above in this release post as well as the component documentation for further info. ([@amelchio] - [#23385]) ([sonos docs]) + - Sonos-specific services have been moved from the media_player domain to the sonos domain. For example, media_player.sonos_join has become sonos.join. Services sonos.set_sleep_timer, sonos.clear_sleep_timer, sonos.update_alarm and sonos.set_option now require the entity_id parameter and will not target all when it is missing. You can use all to target all. ([@amelchio] - [#23670]) ([sonos docs]) - __Nmap__ - In Linux, and when running a setuid nmap, MAC addresses are reported with a leading zero in each byte. Under Mac OS X, when running the arp command, there is no leading zero. This makes it annoying to share config files between a Mac and Linux setup. This change fixes this by forcing MAC addresses to be zero padded, "breaking" Mac detection on a Mac by aligning it to the convention on Linux ([@mikeage] - [#23492]) ([nmap_tracker docs]) diff --git a/source/_posts/2019-06-05-release-94.markdown b/source/_posts/2019-06-05-release-94.markdown index ef670af4c92..f958180dba9 100644 --- a/source/_posts/2019-06-05-release-94.markdown +++ b/source/_posts/2019-06-05-release-94.markdown @@ -207,9 +207,9 @@ Experiencing issues introduced by this release? Please report them in our [issue ``` - __Plex__ - * Configuration option `include_non_clients` has been removed. The component was unnecessarily complicated with separate update methods for Plex devices and Plex sessions. This change always updates all known Plex clients regardless of type. The previous design also had issues where the Plex sessions are never polled if there are no Plex clients connected at startup and only 'session' client types connect after that point. This leads to a failure to discover new devices. This is a breaking change if the config option `include_non_clients` is being used since it has been removed. ([@jjlawren] - [#24038]) ([plex docs]) + - Configuration option `include_non_clients` has been removed. The component was unnecessarily complicated with separate update methods for Plex devices and Plex sessions. This change always updates all known Plex clients regardless of type. The previous design also had issues where the Plex sessions are never polled if there are no Plex clients connected at startup and only 'session' client types connect after that point. This leads to a failure to discover new devices. This is a breaking change if the config option `include_non_clients` is being used since it has been removed. ([@jjlawren] - [#24038]) ([plex docs]) - * Configuration options use_custom_entity_ids and entity_namespace have been removed. This change will prepend the display name (and therefore the default entity_id) of each newly created entity with 'Plex' for easy identification. Users may customize each display name and entity_id as desired via the Entity Registry. Entities created before this PR will not be affected as the unique_id remains the same. ([@jjlawren] - [#24072]) ([plex docs]) + - Configuration options use_custom_entity_ids and entity_namespace have been removed. This change will prepend the display name (and therefore the default entity_id) of each newly created entity with 'Plex' for easy identification. Users may customize each display name and entity_id as desired via the Entity Registry. Entities created before this PR will not be affected as the unique_id remains the same. ([@jjlawren] - [#24072]) ([plex docs]) - __Verisure__ - Base entity_id of alarm_control_panel on alias of installation set by giid rather than first installation. This is a breaking change as it will change entity_id of alarm_control_panel in cases where a user is configuring an installation using giid that is not the first installation. ([@tkjacobsen] - [#23606]) ([verisure docs]) - __Zestimate__ - Changed name property to return Zestimate and the property address. This will make it easier to distinguish multiple Zestimate sensor entities in the UI and is a breaking change as it will change entity_id of Zestimate sensors. If you have automations relying on your Zestimate sensor(s) you may need to revisit them to fix the ID's to the new ones. Also, you may need to update your Zestimate sensor(s) in your Lovelace UI. ([@dreed47] - [#23770]) ([zestimate docs]) diff --git a/source/_posts/2019-08-07-release-97.markdown b/source/_posts/2019-08-07-release-97.markdown index e8a4043da65..212e1ed25d7 100644 --- a/source/_posts/2019-08-07-release-97.markdown +++ b/source/_posts/2019-08-07-release-97.markdown @@ -167,7 +167,7 @@ Experiencing issues introduced by this release? Please report them in our [issue language: french ``` -- **TotalConnect** - Total Connect Client was upgraded to support more than one alarm panel and allow future support for additional sensors. Previous `alarm_control_panel` entries must be removed, and a new totalconnect entry must be added to configuration.yaml. See https://www.home-assistant.io/integrations/totalconnect/ for configuration details. ([@austinmroczek] - [#24427]) ([totalconnect docs]) +- **TotalConnect** - Total Connect Client was upgraded to support more than one alarm panel and allow future support for additional sensors. Previous `alarm_control_panel` entries must be removed, and a new totalconnect entry must be added to configuration.yaml. See for configuration details. ([@austinmroczek] - [#24427]) ([totalconnect docs]) - **Nuki** - The `lock.nuki_unlatch` service has been removed. It has been replaced by the `lock.open` service. The `lock.nuki_lock_n_go` service has been renamed to `nuki.lock_n_go`. Users that are using the removed or renamed services in automations need to replace them with the new services. ([@franfos] - [#22888]) ([nuki docs]) - **Snapcast** - This changes adds multiroom support for the snapcast component. It adds 2 services `media_player.snapcast_join` and `media_player.snapcast_unjoin` to group/ungroup a client with another client. Also added source selection support in the snapcast clients as the groups are unusable due to their dynamic nature. ([@lyghtnox] - [#24061]) ([snapcast docs]) - **Ambient Weather Station** - The `unique_id` for Ambient sensors uses a new formula, meaning that even though they have the same friendly names, new sensors will be created. The integration will automatically perform this migration under the hood, but if you've altered the entity IDs of any Ambient PWS entities, you'll need do the same to the new entities upon creation. Additionally, the `monitored_keys` configuration option is no longer supported in `configuration.yaml`. The integration will now create sensors for all conditions supported by the particular device. diff --git a/source/_posts/2019-09-18-release-99.markdown b/source/_posts/2019-09-18-release-99.markdown index 5b826ffe91b..b623adfd537 100644 --- a/source/_posts/2019-09-18-release-99.markdown +++ b/source/_posts/2019-09-18-release-99.markdown @@ -266,12 +266,12 @@ Experiencing issues introduced by this release? Please report them in our [issue password: password ``` -* **Radiotherm** - Update climate attributes. Automations may break if the user is checking against the previous "mode" or "fan" attributes or previous mode or fan attribute values. - ([@dieselrabbit] - [#26465]) ([radiotherm docs]) +- **Radiotherm** - Update climate attributes. Automations may break if the user is checking against the previous "mode" or "fan" attributes or previous mode or fan attribute values. - ([@dieselrabbit] - [#26465]) ([radiotherm docs]) - The old "mode" attribute is now supported via "hvac_action" attribute. - The old "fan" attribute now called "fan_action" to follow "hvac_action" . -* **SolarEdge** - Monitored conditions are no longer supported. - ([@Cereal2nd] - [#26282]) ([solaredge docs]) +- **SolarEdge** - Monitored conditions are no longer supported. - ([@Cereal2nd] - [#26282]) ([solaredge docs]) - **SMA** - Removes deprecated SMA config - ([@balloob] - [#26306]) ([sma docs]) diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown index 2f11e06f058..38fea446d85 100644 --- a/source/_posts/2019-12-17-hassos-release-3.markdown +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -51,7 +51,7 @@ Another option is to use our powerful CLI, that is shipped with the SSH add-on. After some confusion about the statement of supporting virtual environments and running Hass.io on top of a custom Linux; so let's clarify it. -The supported ways to run Hass.io are documented here: +The supported ways to run Hass.io are [documented here](/installation/) This also includes running Hass.io on Linux using the [Generic Linux](https://github.com/home-assistant/hassio-installer) installer, which is a supported method. diff --git a/source/_posts/2020-05-20-release-110.markdown b/source/_posts/2020-05-20-release-110.markdown index 229d8087efb..e608767b0ef 100644 --- a/source/_posts/2020-05-20-release-110.markdown +++ b/source/_posts/2020-05-20-release-110.markdown @@ -392,8 +392,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - **Fortigate** *(Deprecated)* - The Fortigate integration will be removed in 0.112.0 and has a replacement in the FortiOS integration. - Please refer to the fortios integration on how to configure the new - parameters: https://www.home-assistant.io/integrations/fortios/ - + Please refer to the [fortios integration](/integrations/fortios) on how to configure the new + parameters. - ([@kifeo] - [#34854]) - **Raspberry Pi Camera** - To align with ADR-0007, configuration has been diff --git a/source/_posts/2020-08-05-mobile-apps-new-features.markdown b/source/_posts/2020-08-05-mobile-apps-new-features.markdown index 4d21b706fec..b8afeddf976 100644 --- a/source/_posts/2020-08-05-mobile-apps-new-features.markdown +++ b/source/_posts/2020-08-05-mobile-apps-new-features.markdown @@ -91,11 +91,11 @@ Screenshot of Biometric Unlock. We have also been hard at working making improvements in other areas of the app: -* There are now 2 [widgets](https://companion.home-assistant.io/docs/integrations/android-widgets) that you can set up, with Entity State being the latest addition. The Entity State widget will display the state and any attribute of the selected entity. It will update once every 30 minutes or when tapped. The Service Call widget was also enhanced to allow you to select from a list of valid and available services along with the ability to add additional data fields that the service may require. -* In App Configuration the Home Network WiFi SSID option now allows the user to select multiple SSIDs. -* A Cookie Manager was added to our WebView that will allow you to save cookies from sites that you may use in the [webpage card](/dashboards/iframe/). -* More descriptive SSL error messages were added to help users resolve local issues they may encounter while setting up the app. -* Device ID is now sent with the event data for actionable notifications. +- There are now 2 [widgets](https://companion.home-assistant.io/docs/integrations/android-widgets) that you can set up, with Entity State being the latest addition. The Entity State widget will display the state and any attribute of the selected entity. It will update once every 30 minutes or when tapped. The Service Call widget was also enhanced to allow you to select from a list of valid and available services along with the ability to add additional data fields that the service may require. +- In App Configuration the Home Network WiFi SSID option now allows the user to select multiple SSIDs. +- A Cookie Manager was added to our WebView that will allow you to save cookies from sites that you may use in the [webpage card](/dashboards/iframe/). +- More descriptive SSL error messages were added to help users resolve local issues they may encounter while setting up the app. +- Device ID is now sent with the event data for actionable notifications. ### iOS diff --git a/source/_posts/2020-08-28-android-230-release.markdown b/source/_posts/2020-08-28-android-230-release.markdown index 25b8fd60134..dea74cc3e03 100644 --- a/source/_posts/2020-08-28-android-230-release.markdown +++ b/source/_posts/2020-08-28-android-230-release.markdown @@ -31,22 +31,22 @@ We have had quite a bit of sensors get added since we last spoke so here's whats Available for Google Play Store version only: -* Activity +- Activity Available for all users: -* Audio -* Bluetooth -* Do Not Disturb -* Last Reboot -* Light -* Phone -* Pressure -* Proximity -* Next Alarm -* Sim 1 & 2 -* Steps -* Storage +- Audio +- Bluetooth +- Do Not Disturb +- Last Reboot +- Light +- Phone +- Pressure +- Proximity +- Next Alarm +- Sim 1 & 2 +- Steps +- Storage ## Sensor Enhancements @@ -82,10 +82,10 @@ Screenshot of App Theme selection. ## Additional Improvements -* Support for H265 videos was added -* Entity state widget was enhanced to allow for multiple attributes and a custom separator -* Widgets were enhanced overall to allow material icons -* Notifications can now use `:smiley:` like you can in Discord -* Lots of fixes across the board +- Support for H265 videos was added +- Entity state widget was enhanced to allow for multiple attributes and a custom separator +- Widgets were enhanced overall to allow material icons +- Notifications can now use `:smiley:` like you can in Discord +- Lots of fixes across the board Special thanks to [chriss158](https://github.com/chriss158), [colincachia](https://github.com/colincachia), [David-Development](https://github.com/David-Development), [JBassett](https://github.com/JBassett), [klejejs](https://github.com/klejejs), [noam148](https://github.com/noam148), [skynetua](https://github.com/skynetua) and [uvjustin](https://github.com/uvjustin) for all of your contributions. So keep them bug reports and feature requests [coming](https://github.com/home-assistant/android/issues/new/choose), we'll chat again soon! \ No newline at end of file diff --git a/source/_posts/2020-10-28-release-117.markdown b/source/_posts/2020-10-28-release-117.markdown index 9bf514f8d1b..4dc04c06bee 100644 --- a/source/_posts/2020-10-28-release-117.markdown +++ b/source/_posts/2020-10-28-release-117.markdown @@ -51,7 +51,7 @@ So, keep an eye on our social media for the announcement. - [Compact header](#compact-header) - [Script and automation YAML editor](#script-and-automation-yaml-editor) - [Xbox integration](#xbox-integration) -- [Counters & Timers available as helpers in the UI](#counters--timers-available-as-helpers-in-the-ui) +- [Counters \& Timers available as helpers in the UI](#counters--timers-available-as-helpers-in-the-ui) - [Native types support for templates (Beta)](#native-types-support-for-templates-beta) - [Other noteworthy changes](#other-noteworthy-changes) - [New Integrations](#new-integrations) @@ -738,8 +738,7 @@ Options are now set through the UI (global options/add device/remove device/chan For newly added or detected devices, `device_class` cannot be set. -Instead, it should be set by customizing entities: - +Instead, it should be set by [customizing entities](/docs/configuration/customizing-devices/). The debug key is removed as option for the integration. Instead, log level for the library can be set by configuring the logger (see below). diff --git a/source/_posts/2021-04-09-android-april-2021-release.markdown b/source/_posts/2021-04-09-android-april-2021-release.markdown index 7a111e1fcc4..7ee35251ab7 100644 --- a/source/_posts/2021-04-09-android-april-2021-release.markdown +++ b/source/_posts/2021-04-09-android-april-2021-release.markdown @@ -50,19 +50,19 @@ Screenshot of Shortcuts Here is a list of the other changes you may notice: -* [Battery Temperature Sensor](https://companion.home-assistant.io/docs/core/sensors#battery-sensors) -* Notification command to [turn on the screen](https://companion.home-assistant.io/docs/notifications/notification-commands#screen-on) -* [BLE Transmitter](https://companion.home-assistant.io/docs/core/sensors#bluetooth-sensors) has a new setting to enable/disable the transmitter so the sensor can remain enabled. This new setting will correspond to the existing notification command. -* High Accuracy mode has a new zone-based automation feature allowing you to trigger this mode faster. See the [documentation](https://companion.home-assistant.io/docs/core/location#high-accuracy-mode) for more details. +- [Battery Temperature Sensor](https://companion.home-assistant.io/docs/core/sensors#battery-sensors) +- Notification command to [turn on the screen](https://companion.home-assistant.io/docs/notifications/notification-commands#screen-on) +- [BLE Transmitter](https://companion.home-assistant.io/docs/core/sensors#bluetooth-sensors) has a new setting to enable/disable the transmitter so the sensor can remain enabled. This new setting will correspond to the existing notification command. +- High Accuracy mode has a new zone-based automation feature allowing you to trigger this mode faster. See the [documentation](https://companion.home-assistant.io/docs/core/location#high-accuracy-mode) for more details.

    Screenshot of High Accuracy Zoning Screenshot of High Accuracy Zoning.

    -* Long-pressing an entity in Android's Power Menu will now take you directly to the entity instead of the home page. -* Covers that support setting the position are also supported in Android's Power Menu. -* Lots of fixes and improvements in all other areas of the app. +- Long-pressing an entity in Android's Power Menu will now take you directly to the entity instead of the home page. +- Covers that support setting the position are also supported in Android's Power Menu. +- Lots of fixes and improvements in all other areas of the app. Big thank you to everyone involved. Please keep those bug reports and feature requests coming! diff --git a/source/_posts/2021-12-21-android-december-2021-release.markdown b/source/_posts/2021-12-21-android-december-2021-release.markdown index b2de7d191dc..81e572010ce 100644 --- a/source/_posts/2021-12-21-android-december-2021-release.markdown +++ b/source/_posts/2021-12-21-android-december-2021-release.markdown @@ -75,24 +75,24 @@ Screenshot of welcome screen With so many changes since the last update its impossible to list all of the other cool new features but here is a list of some welcomed improvements: -* New sensor to report the state of [High Accuracy Mode] by [dshokouhi] -* New notification parameters to change the [Status Bar Icon] and also to [alert once] for any given notification by [dshokouhi] -* New [WebView] settings to keep the screen on and to auto play videos by [dshokouhi] and [skynetua] -* New [notification command] to keep the screen on by [skynetua] -* Updated notification commands to accept URL encoding in extras by [mvn23] -* [BLE Transmitter] improvements to power output and adverister mode by [Alfiegerner] and [amadeo-alex] -* Quick Settings Tile limit increased from 5 to 12 by [dshokouhi] -* Support for Android 12 by [dshokouhi] -* Updated design for Media Player Widget by [jannis3005] +- New sensor to report the state of [High Accuracy Mode] by [dshokouhi] +- New notification parameters to change the [Status Bar Icon] and also to [alert once] for any given notification by [dshokouhi] +- New [WebView] settings to keep the screen on and to auto play videos by [dshokouhi] and [skynetua] +- New [notification command] to keep the screen on by [skynetua] +- Updated notification commands to accept URL encoding in extras by [mvn23] +- [BLE Transmitter] improvements to power output and adverister mode by [Alfiegerner] and [amadeo-alex] +- Quick Settings Tile limit increased from 5 to 12 by [dshokouhi] +- Support for Android 12 by [dshokouhi] +- Updated design for Media Player Widget by [jannis3005]

    Screenshot of Media Player Widget Screenshot of Media Player Widget

    -* Support for cookie based authentication by [duncf] -* Setting to always try the internal URL first. This is helpful to those who like to leave location off by [dshokouhi] -* Support for entity category and state class in sensors by [dshokouhi] +- Support for cookie based authentication by [duncf] +- Setting to always try the internal URL first. This is helpful to those who like to leave location off by [dshokouhi] +- Support for entity category and state class in sensors by [dshokouhi] Big thank you to everyone involved. Please keep those bug reports and feature requests coming! Be sure to watch the State of the Open Home address for what to expect in 2022 and a live demo of some of the features above! diff --git a/source/_posts/2022-01-07-android-quest.markdown b/source/_posts/2022-01-07-android-quest.markdown index 53c406a9a6b..5836100b7a5 100644 --- a/source/_posts/2022-01-07-android-quest.markdown +++ b/source/_posts/2022-01-07-android-quest.markdown @@ -47,14 +47,14 @@ The app on Sidequest is the [minimal version] of the Home Assistant Companion An We can't just make a post like this and ignore the new release for the Phone app that just went out the other day without highlighting it right?! While the 2022.1 release may not be as jam-packed as 2021.12 we do still have some neat features to cover. -* A new sensor to determine if your devices [work profile] is active by [zmarties]. This sensor will update as soon as a state change is detected allowing you to make unique automations based on the profile being active. -* [dshokouhi] has added a new sensor allowing you to see what the [Last Used App] was. Pair this new sensor with the Quest and you can make specific automations based on what game you are currently playing! +- A new sensor to determine if your devices [work profile] is active by [zmarties]. This sensor will update as soon as a state change is detected allowing you to make unique automations based on the profile being active. +- [dshokouhi] has added a new sensor allowing you to see what the [Last Used App] was. Pair this new sensor with the Quest and you can make specific automations based on what game you are currently playing! ![Screenshot of Last Used App](/images/blog/2022-01-android/last_used_app.png) -* [jpelgrom] has worked on our WebSocket implementation to finally bring in areas to the app. Device controls are the first feature to get area support so you can easily add entities from areas. The area will also be shown in the device control button itself. Be on the lookout for more area support in other parts of the app as it should make finding entities a lot easier. -* [JBassett] has also made more progress on the WebSocket implementation by bringing in better error handling to prevent the application from crashing and producing a lot of unnecessary errors. -* For the Wear OS app [SkechyWolf] has added support for the back button to properly function and exit the app. +- [jpelgrom] has worked on our WebSocket implementation to finally bring in areas to the app. Device controls are the first feature to get area support so you can easily add entities from areas. The area will also be shown in the device control button itself. Be on the lookout for more area support in other parts of the app as it should make finding entities a lot easier. +- [JBassett] has also made more progress on the WebSocket implementation by bringing in better error handling to prevent the application from crashing and producing a lot of unnecessary errors. +- For the Wear OS app [SkechyWolf] has added support for the back button to properly function and exit the app. A big thank you to all of our contributors and users for bringing in awesome features and great feedback/bugs. We look forward to improving the android app even further in 2022! As always please remember to add your feature requests and bugs to GitHub. diff --git a/source/_posts/2022-02-08-android-february.markdown b/source/_posts/2022-02-08-android-february.markdown index 92681db6406..66f9644eef2 100644 --- a/source/_posts/2022-02-08-android-february.markdown +++ b/source/_posts/2022-02-08-android-february.markdown @@ -44,8 +44,8 @@ A big thank you to [JBassett] for kicking off this feature and working hard to s The remaining breaking changes in this release are related to 2 sensors offered by all versions of the app. -* [Do Not Disturb Sensor] - No longer available on devices running Android 5 or lower. This sensor, which was previously offered to all supported Android versions, has been updated to use the official Android API instead of the undocumented one. The Android API is only available on devices running Android 6+. Older devices will no longer see this sensor in the Manage Sensors screen. -* [Last Used App Sensor] - This sensor previously reported its state as the application label. We realized that this is not always unique, multiple apps can have the exact same name. The state has changed to report the package id which is guaranteed to be unique. The application name is now available as an attribute. +- [Do Not Disturb Sensor] - No longer available on devices running Android 5 or lower. This sensor, which was previously offered to all supported Android versions, has been updated to use the official Android API instead of the undocumented one. The Android API is only available on devices running Android 6+. Older devices will no longer see this sensor in the Manage Sensors screen. +- [Last Used App Sensor] - This sensor previously reported its state as the application label. We realized that this is not always unique, multiple apps can have the exact same name. The state has changed to report the package id which is guaranteed to be unique. The application name is now available as an attribute. ## In-App Changelog @@ -59,37 +59,37 @@ The changelog prompt will be maintained by contributors of the app as we do not The Wear OS app continues to grow with more features each release and this month we have some welcomed additions! -* Breaking Change: The Wear OS app has a breaking change this release to hide non-primary entities from the home screen. The entities will still be accessible if you add them as a [favorite] and also under the "All entities" screen. This change was done to match the behavior of the autogenerated dashboard of the Home Assistant frontend, thank you [jpelgrom]. -* A new tile was added by [leroyboerefijn] that allows you to render any template in the tile. You will need to use the phone app to setup the template tile as the Wear OS keyboard is missing some important keys that are required for templates. You can also set the refresh interval for the tile in settings as well. +- Breaking Change: The Wear OS app has a breaking change this release to hide non-primary entities from the home screen. The entities will still be accessible if you add them as a [favorite] and also under the "All entities" screen. This change was done to match the behavior of the autogenerated dashboard of the Home Assistant frontend, thank you [jpelgrom]. +- A new tile was added by [leroyboerefijn] that allows you to render any template in the tile. You will need to use the phone app to setup the template tile as the Wear OS keyboard is missing some important keys that are required for templates. You can also set the refresh interval for the tile in settings as well. ![Screenshot of template tile](/images/blog/2022-02-android/template_tile.png) -* Multi-Factor Authentication is now supported when logging into the watch, thank you [jpelgrom] -* Areas were added to allow you to view entities by the selected area, thank you [jpelgrom] -* The shortcuts tile got an enhancement to show the entity friendly name around the icon. If you do not change your entity icons to custom ones you will want to enable this feature. Look in the settings screen to enable this feature, thank you [leroyboerefijn]. -* A new "Sign in on phone" button was added to the Wear OS login screen so you no longer have to enter those long passwords on a small screen. Thank you [jpelgrom] +- Multi-Factor Authentication is now supported when logging into the watch, thank you [jpelgrom] +- Areas were added to allow you to view entities by the selected area, thank you [jpelgrom] +- The shortcuts tile got an enhancement to show the entity friendly name around the icon. If you do not change your entity icons to custom ones you will want to enable this feature. Look in the settings screen to enable this feature, thank you [leroyboerefijn]. +- A new "Sign in on phone" button was added to the Wear OS login screen so you no longer have to enter those long passwords on a small screen. Thank you [jpelgrom] ![Screenshot of sign in on phone](/images/blog/2022-02-android/sign_in_on_phone.png) -* `button`, `cover`, `fan` and `input_button` domains have been added to the Wear OS app by [jpelgrom] +- `button`, `cover`, `fan` and `input_button` domains have been added to the Wear OS app by [jpelgrom] ## Other Changes -* A new [In Use sensor] for Quest devices was added by [SkechyWolf]. This new sensor turns on only when the headset is worn by the user. It is a bit more precise than using the interactive sensor, which was previously mentioned for this use case. -* [Device controls] were updated to add support for `button` and `input_button` domains. The `climate` domain was enhanced for supported HVAC modes and proper temperature increments. The More Info pop-up, when a tile is long pressed, is now more reliable. Thanks for these improvements [jpelgrom]. -* [dshokouhi] and [jpelgrom] worked together to remove additional Google Service dependencies from the minimal version -* A new settings page was added by [dshokouhi] to allow users to easily find Notification Channel settings for the app -* The Manage Widgets page was updated by [dshokouhi] and [jpelgrom] to have a new design based on Jetpack Compose. It is also now possible to add widgets from the settings page to your home screen, if the device supports it. +- A new [In Use sensor] for Quest devices was added by [SkechyWolf]. This new sensor turns on only when the headset is worn by the user. It is a bit more precise than using the interactive sensor, which was previously mentioned for this use case. +- [Device controls] were updated to add support for `button` and `input_button` domains. The `climate` domain was enhanced for supported HVAC modes and proper temperature increments. The More Info pop-up, when a tile is long pressed, is now more reliable. Thanks for these improvements [jpelgrom]. +- [dshokouhi] and [jpelgrom] worked together to remove additional Google Service dependencies from the minimal version +- A new settings page was added by [dshokouhi] to allow users to easily find Notification Channel settings for the app +- The Manage Widgets page was updated by [dshokouhi] and [jpelgrom] to have a new design based on Jetpack Compose. It is also now possible to add widgets from the settings page to your home screen, if the device supports it. ![Screenshot of adding widgets](/images/blog/2022-02-android/add_widget.png) -* A notification command to [update sensors] was added by [dshokouhi] -* The Manage Shortcuts and Manage Tiles pages had design updates based on Jetpack Compose by [dshokouhi] -* Notification commands for `command_activity` and `command_broadcast_intent` were updated for more types of intent extras by [moritzgloeckl] -* The [WiFi state sensor] now receives instant updates on devices that did not have instant updates before, thank you [dshokouhi] -* [JBassett] has now made it possible to update the Google Play Store listing directly from GitHub -* Downloading is now supported in the Home Assistant Frontend, thank you [jpelgrom] -* `button` and `input_button` domain support was added to [quick settings] by [jpelgrom] +- A notification command to [update sensors] was added by [dshokouhi] +- The Manage Shortcuts and Manage Tiles pages had design updates based on Jetpack Compose by [dshokouhi] +- Notification commands for `command_activity` and `command_broadcast_intent` were updated for more types of intent extras by [moritzgloeckl] +- The [WiFi state sensor] now receives instant updates on devices that did not have instant updates before, thank you [dshokouhi] +- [JBassett] has now made it possible to update the Google Play Store listing directly from GitHub +- Downloading is now supported in the Home Assistant Frontend, thank you [jpelgrom] +- `button` and `input_button` domain support was added to [quick settings] by [jpelgrom] Special thank you to all other contributors who have helped in bug fixing and other various under the hood improvements to the code base. Thank you [NotWoods], [joostlek] and [chriss158]. As always please remember to add your feature requests and bugs to GitHub. diff --git a/source/_posts/2022-10-25-ultraloq-partner.markdown b/source/_posts/2022-10-25-ultraloq-partner.markdown index bfb62d7ae1d..d0abb44c5e9 100644 --- a/source/_posts/2022-10-25-ultraloq-partner.markdown +++ b/source/_posts/2022-10-25-ultraloq-partner.markdown @@ -12,9 +12,8 @@ categories: og_image: /images/blog/2022-10-25-ultraloq-partner/social.png --- -
    -There is a bug in the firmware of Ultraloq devices that causes the door state sensor to not be updated and the latch to always be reported as "OPEN".
    -We are fully aware that this is not what you expect from a Works With Home Assistant brand and we are in contact Ultraloq to get this resolved! +
    +On July 11th, 2023, due to fundamentally different perceptions of best Home Assistant user experience, Ultraloq by U-tec was removed from Works With Home Assistant partner program.
    Works via Zigbee with Home Assistant diff --git a/source/_posts/2022-12-20-year-of-voice.markdown b/source/_posts/2022-12-20-year-of-voice.markdown index 90b98e262e7..77c28d40063 100644 --- a/source/_posts/2022-12-20-year-of-voice.markdown +++ b/source/_posts/2022-12-20-year-of-voice.markdown @@ -14,6 +14,14 @@ og_image: /images/blog/2022-12-20-year-of-voice/conversation.png _**TL;DR**: It is our goal for 2023 to let users control Home Assistant in their own language. Mike Hansen, creator of Rhasspy, has joined Nabu Casa to lead this effort. We’re starting off by building a [collection of intent matching sentences in every language](https://github.com/home-assistant/intents)._ +**Updates:** + + - [Year of the Voice - Chapter 1](https://www.home-assistant.io/blog/2023/01/26/year-of-the-voice-chapter-1/) (January 26, 2023) + - [Year of the Voice - Chapter 2](/blog/2023/04/27/year-of-the-voice-chapter-2/) (April 27, 2023) + - [Year of the Voice - Chapter 3](/blog/2023/07/20/year-of-the-voice-chapter-3/) (July 20, 2023) + +
    + Usually, the month of December is meant to reflect back. However, we already did that last month when we hosted the [State of the Open Home 2022](https://www.youtube.com/watch?v=D936T1Ze8-4). We didn’t only reflect, we also announced our focus for next year: 2023 is going to be the year of voice.
    It is our goal for 2023 to let users control Home Assistant in their own language.
    diff --git a/source/_posts/2023-07-05-release-20237.markdown b/source/_posts/2023-07-05-release-20237.markdown new file mode 100644 index 00000000000..d9249f8b687 --- /dev/null +++ b/source/_posts/2023-07-05-release-20237.markdown @@ -0,0 +1,1035 @@ +--- +layout: post +title: "2023.7: Responding services" +description: "Services can now respond with data, a new dialog for lock, sentence triggers, fewer breaking changes, Bluetooth proxies are now the fastest option, copy 'n paste in dashboards, brand new image entities, a dashboard action to open assist, climate support for Matter, and more!" +date: 2023-07-05 00:00:00 +date_formatted: "July 5, 2023" +author: Franck Nijhof +author_twitter: frenck +comments: true +categories: + - Release-Notes + - Core +og_image: /images/blog/2023-07/social.png +--- + + + +Home Assistant Core 2023.7! 🎉 + +The previous release was a big one, and this one is no different! + +This release brings in a change to Home Assistant, which we consider to be one +of the biggest game changers of the past years: Services can now respond with +data! 🤯 + +It is such a fundamental change, which will allow for many new use cases and +opens the gates for endless possibilities. I'm so excited about this one! + +But that is not all; there is a lot more in store for you! Some of my favorites: +The Bluetooth proxies are now lightning fast, copy 'n paste in dashboards, a new +sentence trigger, and I love that a broken automation no longer disappears +into thin air but now shows up in the UI marked as problematic. + +All-in-all, a great release packed with many new features and a lot of +quality-of-life improvements. + +Enjoy the release! + +../Frenck + + + +- [Services can now respond](#services-can-now-respond) +- [New entity dialog for Locks](#new-entity-dialog-for-locks) +- [Sentence trigger](#sentence-trigger) +- [Open assist action](#open-assist-action) +- [Image entities](#image-entities) +- [Energy dashboard: Self-sufficiency](#energy-dashboard-self-sufficiency) +- [Copy 'n paste support in dashboards](#copy-n-paste-support-in-dashboards) +- [Select the timezone to use/display](#select-the-timezone-to-usedisplay) +- [Iteration of the integrations dashboard](#iteration-of-the-integrations-dashboard) +- [Unavailable automations and scripts](#unavailable-automations-and-scripts) +- [New script dialog](#new-script-dialog) +- [Lightning fast Bluetooth proxies](#lightning-fast-bluetooth-proxies) +- [Matter updates](#matter-updates) +- [Reducing the risk of running into breaking changes](#reducing-the-risk-of-running-into-breaking-changes) +- [Other noteworthy changes](#other-noteworthy-changes) +- [New integrations](#new-integrations) +- [Release 2023.7.1 - July 6](#release-202371---july-6) +- [Release 2023.7.2 - July 13](#release-202372---july-13) +- [Release 2023.7.3 - July 21](#release-202373---july-21) +- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Need help? Join the community!](#need-help-join-the-community) +- [Breaking changes](#breaking-changes) +- [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=r0DLyU-4nWo) +5 July 2023, at 12:00 PDT / 21:00 CEST! + + + +## Services can now respond + +Services can now respond with data! 🎉 + +Yes, you read that right! This advanced feature is a huge step forward for +Home Assistant and will allow for a lot of new possibilities. It is one of the +biggest fundamental changes to Home Assistant made in the past years. + +Calling a service in an automation or script was a one-way communication +to control your devices and services. For example, turn on a light, or make +an announcement on your speakers. + +So, what is the use of a service responding with data? Well, it could be used to +ask for information from a device or service. For example, you could ask +Home Assistant which events are on your calendar today and use the +answer from that service call to create a notification or announcement. + +Screenshot showing a response to a service call in the Home Assistant developers tools, listing waste pickup calendar events. + +In this release, we have included two brand-new services to play with service responses: + +- {% my developer_call_service service="conversation.process" %} - This + service allows you to ask Assist a command or question and get a response + back. +- {% my developer_call_service service="calendar.list_events" %} - This service + enables you to ask Home Assistant for a list of events on your calendar. + +If you combine those in an automation, in the morning, you could ask +Home Assistant for today's calendar events, add things like weather information, +send it to ChatGPT using the conversation process, and ask it to summarize it +and use that response to send a notification to your phone. + +[@allenporter] has put this all together for you in +[this Blueprint](/blueprints/blog/2023-07/notify_agent_agenda.yaml): + +{% my blueprint_import badge blueprint_url="https://www.home-assistant.io/blueprints/blog/2023-07/notify_agent_agenda.yaml" %} + +This is just one example, but the possibilities are endless! It is exciting +to see what other creative use cases and new services with responses will +be added in the future! + +[This feature is also added to scripts!](/docs/scripts#stopping-a-script-sequence) +So, you can make your scripts respond and use that response in your automations. +This is a great way to make your scripts more dynamic and flexible. + +A special thanks to [@allenporter], who has been responsible for building out +the larger part of this feature! + +[@allenporter]: https://github.com/allenporter + +## New entity dialog for Locks + +We are continuing to improve the entity dialogs. This time, we have reworked +the entity dialog for locks. It looks great! + +It looks similar to the entity dialog for the switch, but it has a few +extra features like asking for an unlock code and has a beautiful animation +when it is (un)locking. + +Screen recording demonstrating the new lock entity dialog. + +## Sentence trigger + +Our [Assist](/voice_control/) is getting more and more powerful! This time, +we have added a new trigger to our automation editor that allows you to +trigger an automation when a sentence is said to the default Assist conversation +agent. 🤯 + +Screenshot of the new sentence trigger that can be used with automations. + +Creating an automation based on something that is said, has never been easier. +In the above screenshot, just mentioning "what a mess" will send out the living +room vacuum to start cleaning up the mess. + +## Open assist action + +Another one for the Year of the Voice, a brand new action for use in dashboard +cards, has been added: the Assist action! + +Screenshot showing the new Assist action available in dashboard cards. + +With this action, you can directly open Assist from your dashboards using, +for example, a button and even make Assist listen right away. + +Screen recording of the new Assist action in use. Shows the normal action and the action that start listening immediately. +

    +There are quite a few cases where this action can be useful. For example, if +you have a tablet mounted on the wall, you can use this action to open Assist +and start listening immediately using a single button touch. + +## Image entities + +There is a brand new entity type in town: the [image entity](/integrations/image/). + +The image entity is very similar to the [camera entity](/integrations/camera/), +but instead of providing a live stream, it provides a single image. For example, +a QR code that provides the Wi-Fi credentials for your guest network, a weather +map, an image of the last motion detected by your camera, or just the cute cat +picture of the day! + +Screenshot of a new image entity more information dialog, showing a QR code in the image. + +While the camera entity provided similar functionality, we wanted to make an +entity tailored for these specific use cases. An image entity is much +more lightweight and efficient compared to the camera entity. Also, this keeps +our camera entities focused on providing actual camera feeds. + +Support for this brand new entity has been added to the [AVM Fritz!Box Tools](/integrations/fritz/) +(for guest network access), and the [MQTT](/integrations/mqtt/) and +[Template](/integrations/template/) integrations if you want to build your own. + +## Energy dashboard: Self-sufficiency + +The energy dashboard has a new gauge, added by [@TillFleisch]: Self-sufficiency. + +This gauge tells you how self-sufficient your home is. The more you take from +the grid, the more the value will decrease. + +Screenshot showing the energy dashboard featuring the new self-sufficiency gauge. + +Increasing this value can be done by lowering your consumption from the grid, +for example, by using the washing machine when the sun is shining and solar +production is high or by creating automations that turn off devices when solar +production is low. Another more drastic way is by adding more solar panels +or battery storage. + +[@TillFleisch]: https://github.com/TillFleischmann + +## Copy 'n paste support in dashboards + +In the previous release, [@karwosts] added the amazing [copy 'n paste feature](/blog/2023/06/07/release-20236/#copy-n-paste-support-in-the-automation-editor) +to our automation and script editors. This release, he is back with the same +feature for our dashboards! + +You can now cut, copy, and paste cards between your dashboards, views, and +even inside other nested cards. This makes it a lot easier to reorganize your +dashboards! + +Screenshot showing the new cut and paste options available in the overflow menu of dashboards. + +Just like with automations, select the card you want to cut or copy, and +when adding a new card to your dashboard, you will see a new option to paste. + +When reorganizing your dashboards that use a masonry layout, it is mandatory to +understand the order of the cards across the different columns in your view. +To make that easier we now show a positional number on the card when +your dashboard is in edit mode. + +Added bonus: Who needs drag 'n drop when you've got click 'n ...teleport? +Just kidding, of course; however, teleporting already makes things a lot easier! +Click on the positional number to enter a new position for the card. + +Screen recording demonstrating clicking the positional number, provides a way to move a card to a different position. + +[@karwosts]: https://github.com/karwosts + +## Select the timezone to use/display + +You can now select which timezone the Home Assistant interface should use +in your user profile. Useful when traveling or when you, for example, +manage an instance for a relative in a different time zone. + +Screenshot showing a new option in the user profile, that allows you to choose if you want Home Assistant to use the server or your current timezone. + +You can choose to use the timezone of your current location, or use the timezone +that your Home Assistant server is in. The Home Assistant frontend will adjust +all of the date & times to the selected timezone. + +## Iteration of the integrations dashboard + +In the last release, we introduced new [integrations dashboard & pages](/blog/2023/06/07/release-20236/#integrations-dashboard--pages), +which many of you really liked. Yet, there has been some feedback, and we +have been working on improving it. + +The main goal was to make it feel less busy, more familiar and consistent with +all other UI you see in Home Assistant. + +Screenshot showing the latest updates and tweaks made to the integrations dashboard, making it less busy. + +The cards shown are now more consistent with the rest of Home Assistant and the +full integration name and logo is now clickable. The cog, device and service +items have been removed, and the indicators for custom integrations +and cloud services are no longer overlapping the logos. + +## Unavailable automations and scripts + +Automations and scripts are awesome! They can add a lot of comfort to your +home, making your home automation feel like magic. But they have a weird quirk: +if you made an error in their configuration, they would just disappear +from Home Assistant. 😞 + +This is no longer the case! 😀 If an automation or script has an error, it will +now show up as unavailable, accompanied by a red confused automation robot. + +Screenshot showing the list of automations, with one broken automation in that list. + +Selecting such an automation will show you the details of the error message +so you know what is going on and what to fix. + +Screenshot showing the automation editor displaying a broken automation, including the error message on what is wrong. + +## New script dialog + +When you create a new automation, you’ll get a nice dialog where you can create +a new one from scratch or use one of your imported blueprints +as a starting point. + +[@karwosts] has now added the same dialog to our script editor! 🎉 + +Screenshot of the dialog shown when creating a new script, allowing you to select blueprints as well. + +Being able to set up scripts from Blueprints is great, as combined with the +brand new [service response](#services-can-now-respond) feature, these +become a lot more powerful and a lot more useful for sharing! + +You can find new script Blueprints for you to use in the +[Blueprint Exchange on our community forum](https://community.home-assistant.io/tags/c/blueprints-exchange/53/script?ascending=false&order=views). + +[@karwosts]: https://github.com/karwosts + +## Lightning fast Bluetooth proxies + +A great way to extend the range of Bluetooth for your Home Assistant set up +is by using [Bluetooth proxies](https://esphome.github.io/bluetooth-proxies/). +These Bluetooth proxies are now even faster! Like... really fast! 🚀 + +You can expect to see a 40-80% decrease in network traffic between +Home Assistant and the proxy device. It now bundles and sends multiple +Bluetooth advertisements in bulk, instead of sending them one by one. + +Another large contributor to the speed increase is that the processing of the +advertisements is now done in Home Assistant instead of on the proxy device. +A win-win; it is faster this way and contributes to making the ESP device more +stable and reliable. + +For this to work, you need [ESPHome 2023.6.0](https://esphome.io) or later. + +## Matter updates + +Quite a few significant changes have been made to the Matter integration. + +The biggest change can be found in the way subscriptions are handled. Especially +on larger (Thread) networks, this will result in a much faster and more reliable +experience. This also affects startup time, which is now blazing fast (from +minutes to seconds). + +Changes to connected Matter bridges are now instantly detected, so when adding +a new device to a bridge (like, for example, a connected Aqara M2 hub) the device +will show up immediately. + +Last but most certainly not least: The Matter integration now supports +climate devices! 🎉 + +

    + +A Nest Thermostat connected as a Matter climate device. +

    + +This means if you have a [Nest Thermostat](https://support.google.com/googlenest/answer/9246551?sjid=11501903403631214779-EU) +(not the E or learning ones) with the latest firmware, you can now use it +directly with Home Assistant, entirely local without clouds! + +## Reducing the risk of running into breaking changes + +Breaking changes, nobody loves them, but they are sometimes necessary to move +forward. We try to keep them to an absolute minimum, but sometimes they are +inevitable. + +However, we do want to reduce the risk of running into them. Therefore we have +adopted [a new policy for deprecating YAML integration configuration options][adr]. + +We now require that a YAML configuration option is deprecated for at least 6 +months before being removed. This means you won’t be running into +a hard-breaking change if you skip a release or two. + +To improve this further, if possible, an automatic migration is now required +and an issue in the repairs dashboard will be raised if the deprecation applies +to your configuration. + +[adr]: https://github.com/home-assistant/architecture/blob/master/adr/0021-YAML-integration-configuration-deprecation-policy.md + +## Other noteworthy changes + +There are many more improvements in this release; here are some of the other +noteworthy changes this release: + +- You can now use network storages that have guest access enabled, and support + for older Samba versions has been added. Thanks, [@ludeeus]! +- When accessing the UI of an add-on via the sidebar that hasn't been + started yet, it will now ask if you want to start it. Nice, + [@mdegat01] and [@bramkragten]! +- The HomeKit Controller integration has been renamed to [HomeKit Device]; + this makes it clearer that the integration is to integrate HomeKit devices + into Home Assistant. +- [ESPHome] now has support for Alarm Control Panels! Thanks [@grahambrown11]! +- [@Petro31] added support for setting upper and lower limits on the + [compensation integration]. Cool! +- [Humidifiers] now have an attribute for the current humidity, thanks [@Shulyaka]! + [@jbouwh] updated the [Google Assistant] integration to support this. Additionally, + he added support to the [Xiaomi Miio], [HomeKit Device], [Tuya] and [MQTT] integrations. + Awesome! +- [@piitaya] updated all existing Humidifier cards to work with the above change, + and adjusted them to be more in line with the existing climate cards. Nice! +- The [weather entity] now supports more (forecast) attributes. It added support + for apparent temperature, dew point, cloud coverage, and wind gust speed; + Thanks, [@gjohansson-ST], [@vingerha], and [@bieniu]! +- The [Apple TV] integration now supports launching apps with [deep links]! + Thanks [@michalmo]! +- [@dougiteixeira] adjusted the [Derivative], [Riemann sum integral], + [Threshold], and [Utility Meter] helper to add the helper to the source device. + This makes them show up on the device page of the device the helper is using. + Nice work! +- [Sensirion BLE] now supports the SHT4x and SHT3x sensors, thanks [@akx]! +- The [MQTT][mqtt_water_heater] integration now has support for water heaters, + thanks [@hookedonunix]! +- [@Lash-L] kept improving the [Roborock] integration and added cleaning area + sensors and switches to control DnD mode. Thanks! +- We have a new trigger that allows automations to trigger on the creation, + deletion, or update of [persistent notifications]! Thanks, [@RoboMagus]! +- You can now dismiss all [persistent notifications] at once using the new + dismiss all service added by [@Petro31]! + +[@akx]: https://github.com/akx +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@dougiteixeira]: https://github.com/dougiteixeira +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@grahambrown11]: https://github.com/grahambrown11 +[@hookedonunix]: https://github.com/hookedonunix +[@jbouwh]: https://github.com/jbouwh +[@Lash-L]: https://github.com/Lash-L +[@ludeeus]: https://github.com/ludeeus +[@mdegat01]: https://github.com/mdegat01 +[@michalmo]: https://github.com/michalmo +[@Petro31]: https://github.com/Petro31 +[@piitaya]: https://github.com/piitaya +[@RoboMagus]: https://github.com/RoboMagus +[@Shulyaka]: https://github.com/Shulyaka +[@vingerha]: https://github.com/vingerha +[Apple TV]: /integrations/apple_tv/ +[compensation integration]: /integrations/compensation/ +[deep links]: /integrations/apple_tv/#launching-apps +[Derivative]: /integrations/derivative/ +[ESPHome]: /integrations/esphome/ +[Google Assistant]: /integrations/google_assistant/ +[HomeKit Device]: /integrations/homekit_controller/ +[Humidifiers]: /integrations/humidifier/ +[mqtt_water_heater]: /integrations/water_heater.mqtt/ +[MQTT]: /integrations/mqtt/ +[persistent notifications]: /integrations/persistent_notification/ +[Riemann sum integral]: /integrations/integration/ +[Roborock]: /integrations/roborock/ +[Sensirion BLE]: /integrations/sensirion_ble/ +[Threshold]: /integrations/threshold/ +[Tuya]: /integrations/tuya/ +[Utility Meter]: /integrations/utility_meter/ +[weather entity]: /integrations/weather +[Xiaomi Miio]: /integrations/xiaomi_miio/ + +## New integrations + +We welcome the following new integrations in this release: + +- **[Discovergy]**, added by [@jpbede]
    + Read out your Discovergy gas and electricity meters. +- **[Dremel 3D Printer]**, added by [@tkdrob]
    + Monitor your Dremel 3D printer and its printing progress. +- **[Renson]**, added by [@jimmyd-be]
    + Monitor your Renson ventilation system. +- **[Image]**, added by [@emontnemery]
    + A new entity type that is like a camera, but specifically for images. +- **[LOQED Touch Smart Lock]**, added by [@cpolhout] and [@mikewoudenberg]
    + Control your LOQED smart lock. + +[@cpolhout]: https://github.com/cpolhout +[@emontnemery]: https://github.com/emontnemery +[@jimmyd-be]: https://github.com/jimmyd-be +[@jpbede]: https://github.com/jpbede +[@mikewoudenberg]: https://github.com/mikewoudenberg +[@tkdrob]: https://github.com/tkdrob +[Discovergy]: /integrations/discovergy +[Dremel 3D Printer]: /integrations/dremel_3d_printer +[Image]: /integrations/image +[LOQED Touch Smart Lock]: /integrations/loqed +[Renson]: /integrations/renson + +## Release 2023.7.1 - July 6 + +- Fix not including device_name in friendly name if it is None ([@jbouwh] - [#95485]) +- Handle integrations with empty services or failing to load during service description enumeration ([@bdraco] - [#95911]) +- Update frontend to 20230705.1 ([@bramkragten] - [#95913]) ([frontend docs]) +- Make SwitchBot no_devices_found message more helpful ([@bdraco] - [#95916]) ([switchbot docs]) +- Migrate bracketed IP addresses in ZHA config entry ([@puddly] - [#95917]) ([zha docs]) +- Use device name for Nuki ([@joostlek] - [#95941]) ([nuki docs]) +- Add explicit device naming for Tuya sensors ([@joostlek] - [#95944]) ([tuya docs]) +- Fix entity name for Flick Electric ([@joostlek] - [#95947]) ([flick_electric docs]) +- Fix matter exception NoneType in set_brightness for optional min/max level values ([@neocolis] - [#95949]) ([matter docs]) +- Fix grouping feature for MusicCast ([@micha91] - [#95958]) ([yamaha_musiccast docs]) +- Bump pyrainbird to 2.1.0 ([@allenporter] - [#95968]) ([rainbird docs]) +- Add missing qnap translation ([@emontnemery] - [#95969]) ([qnap docs]) +- Set correct `response` value in service description when `async_set_service_schema` is used ([@bramkragten] - [#95985]) ([script docs]) +- Explicitly use device name as entity name for Xiaomi fan and humidifier ([@jpbede] - [#95986]) ([xiaomi_miio docs]) +- Make script services always respond when asked ([@bramkragten] - [#95991]) ([script docs]) +- Fix state of slimproto players ([@marcelveldt] - [#96000]) ([slimproto docs]) + +[#95485]: https://github.com/home-assistant/core/pull/95485 +[#95908]: https://github.com/home-assistant/core/pull/95908 +[#95911]: https://github.com/home-assistant/core/pull/95911 +[#95913]: https://github.com/home-assistant/core/pull/95913 +[#95916]: https://github.com/home-assistant/core/pull/95916 +[#95917]: https://github.com/home-assistant/core/pull/95917 +[#95941]: https://github.com/home-assistant/core/pull/95941 +[#95944]: https://github.com/home-assistant/core/pull/95944 +[#95947]: https://github.com/home-assistant/core/pull/95947 +[#95949]: https://github.com/home-assistant/core/pull/95949 +[#95958]: https://github.com/home-assistant/core/pull/95958 +[#95968]: https://github.com/home-assistant/core/pull/95968 +[#95969]: https://github.com/home-assistant/core/pull/95969 +[#95985]: https://github.com/home-assistant/core/pull/95985 +[#95986]: https://github.com/home-assistant/core/pull/95986 +[#95991]: https://github.com/home-assistant/core/pull/95991 +[#96000]: https://github.com/home-assistant/core/pull/96000 +[@allenporter]: https://github.com/allenporter +[@bdraco]: https://github.com/bdraco +[@bramkragten]: https://github.com/bramkragten +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@jbouwh]: https://github.com/jbouwh +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@marcelveldt]: https://github.com/marcelveldt +[@micha91]: https://github.com/micha91 +[@neocolis]: https://github.com/neocolis +[@puddly]: https://github.com/puddly +[abode docs]: /integrations/abode/ +[accuweather docs]: /integrations/accuweather/ +[acmeda docs]: /integrations/acmeda/ +[flick_electric docs]: /integrations/flick_electric/ +[frontend docs]: /integrations/frontend/ +[matter docs]: /integrations/matter/ +[nuki docs]: /integrations/nuki/ +[qnap docs]: /integrations/qnap/ +[rainbird docs]: /integrations/rainbird/ +[script docs]: /integrations/script/ +[slimproto docs]: /integrations/slimproto/ +[switchbot docs]: /integrations/switchbot/ +[tuya docs]: /integrations/tuya/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[zha docs]: /integrations/zha/ + +## Release 2023.7.2 - July 13 + +- Fix ESPHome deep sleep devices staying unavailable after unexpected disconnect ([@bdraco] - [#96354]) ([esphome docs]) +- Bump pydaikin 2.10.5 ([@mover85] - [#95656]) ([daikin docs]) +- Bump pywemo from 0.9.1 to 1.1.0 ([@esev] - [#95951]) ([wemo docs]) +- Get MyStrom device state before checking support ([@joostlek] - [#96004]) ([mystrom docs]) +- Refactor async_get_hass to rely on threading.local instead of a ContextVar ([@jbouwh] - [#96005]) ([mqtt docs]) +- Use explicit device naming for Switchbot ([@joostlek] - [#96011]) ([switchbot docs]) +- Remove openhome from discovery component ([@bazwilliams] - [#96021]) ([discovery docs]) +- UPB explicit device name ([@joostlek] - [#96042]) ([upb docs]) +- Use default MyStrom devicetype if not present ([@joostlek] - [#96070]) ([mystrom docs]) +- Fix implicit use of device name in Slimproto ([@frenck] - [#96081]) ([slimproto docs]) +- Fix implicit device name for RainMachine `update` entity ([@bachya] - [#96094]) ([rainmachine docs]) +- Use explicit device name for Yalexs BLE ([@joostlek] - [#96105]) ([yalexs_ble docs]) +- Fix reference to translation reference in buienradar translations ([@jbouwh] - [#96119]) ([buienradar docs]) +- Bump goalzero to 0.2.2 ([@tkdrob] - [#96121]) ([goalzero docs]) +- Fix implicitly using device name in Yale Smart Living ([@gjohansson-ST] - [#96161]) ([yale_smart_alarm docs]) +- Bump bthome to 2.12.1 ([@Ernst79] - [#96166]) ([bthome docs]) +- Use explicit device name for Stookwijzer ([@joostlek] - [#96184]) ([stookwijzer docs]) +- Enable retries on rainbird devices by loading model and version ([@allenporter] - [#96190]) ([rainbird docs]) +- Fix race fetching ESPHome dashboard when there are no devices set up ([@bdraco] - [#96196]) ([esphome docs]) +- Bump Roborock to v0.30.0 ([@Lash-L] - [#96268]) ([roborock docs]) +- Use explicit device naming for Escea ([@joostlek] - [#96270]) ([escea docs]) +- Fix ZHA serialization issue with warning devices ([@puddly] - [#96275]) ([zha docs]) +- Bump reolink_aio to 0.7.3 ([@starkillerOG] - [#96284]) ([reolink docs]) +- Bump aiohomekit to 2.6.7 ([@bdraco] - [#96291]) ([homekit_controller docs]) +- Add has entity name to Blink ([@joostlek] - [#96322]) ([blink docs]) +- Fix extra verbiage in Ridwell rotating category sensor ([@bachya] - [#96345]) ([ridwell docs]) +- Update RestrictedPython to 6.1 ([@frenck] - [#96358]) ([python_script docs]) +- Add explicit device naming to Led BLE ([@joostlek] - [#96421]) ([led_ble docs]) +- Always add guest wifi qr code entity in AVM Fritz!Tools ([@mib1185] - [#96435]) ([fritz docs]) +- Fix mixed case service schema registration ([@bdraco] - [#96448]) +- Ensure ESPHome dashboard connection recovers if its down when core starts ([@bdraco] - [#96449]) ([esphome docs]) + +[#95656]: https://github.com/home-assistant/core/pull/95656 +[#95908]: https://github.com/home-assistant/core/pull/95908 +[#95951]: https://github.com/home-assistant/core/pull/95951 +[#96004]: https://github.com/home-assistant/core/pull/96004 +[#96005]: https://github.com/home-assistant/core/pull/96005 +[#96006]: https://github.com/home-assistant/core/pull/96006 +[#96011]: https://github.com/home-assistant/core/pull/96011 +[#96021]: https://github.com/home-assistant/core/pull/96021 +[#96042]: https://github.com/home-assistant/core/pull/96042 +[#96070]: https://github.com/home-assistant/core/pull/96070 +[#96081]: https://github.com/home-assistant/core/pull/96081 +[#96094]: https://github.com/home-assistant/core/pull/96094 +[#96105]: https://github.com/home-assistant/core/pull/96105 +[#96119]: https://github.com/home-assistant/core/pull/96119 +[#96121]: https://github.com/home-assistant/core/pull/96121 +[#96161]: https://github.com/home-assistant/core/pull/96161 +[#96166]: https://github.com/home-assistant/core/pull/96166 +[#96184]: https://github.com/home-assistant/core/pull/96184 +[#96190]: https://github.com/home-assistant/core/pull/96190 +[#96196]: https://github.com/home-assistant/core/pull/96196 +[#96268]: https://github.com/home-assistant/core/pull/96268 +[#96270]: https://github.com/home-assistant/core/pull/96270 +[#96275]: https://github.com/home-assistant/core/pull/96275 +[#96284]: https://github.com/home-assistant/core/pull/96284 +[#96291]: https://github.com/home-assistant/core/pull/96291 +[#96322]: https://github.com/home-assistant/core/pull/96322 +[#96345]: https://github.com/home-assistant/core/pull/96345 +[#96354]: https://github.com/home-assistant/core/pull/96354 +[#96358]: https://github.com/home-assistant/core/pull/96358 +[#96421]: https://github.com/home-assistant/core/pull/96421 +[#96435]: https://github.com/home-assistant/core/pull/96435 +[#96448]: https://github.com/home-assistant/core/pull/96448 +[#96449]: https://github.com/home-assistant/core/pull/96449 +[@Ernst79]: https://github.com/Ernst79 +[@Lash-L]: https://github.com/Lash-L +[@allenporter]: https://github.com/allenporter +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bazwilliams]: https://github.com/bazwilliams +[@bdraco]: https://github.com/bdraco +[@esev]: https://github.com/esev +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@jbouwh]: https://github.com/jbouwh +[@joostlek]: https://github.com/joostlek +[@mib1185]: https://github.com/mib1185 +[@mover85]: https://github.com/mover85 +[@puddly]: https://github.com/puddly +[@starkillerOG]: https://github.com/starkillerOG +[@tkdrob]: https://github.com/tkdrob +[abode docs]: /integrations/abode/ +[accuweather docs]: /integrations/accuweather/ +[acmeda docs]: /integrations/acmeda/ +[blink docs]: /integrations/blink/ +[bthome docs]: /integrations/bthome/ +[buienradar docs]: /integrations/buienradar/ +[daikin docs]: /integrations/daikin/ +[discovery docs]: /integrations/discovery/ +[escea docs]: /integrations/escea/ +[esphome docs]: /integrations/esphome/ +[fritz docs]: /integrations/fritz/ +[goalzero docs]: /integrations/goalzero/ +[homekit_controller docs]: /integrations/homekit_controller/ +[led_ble docs]: /integrations/led_ble/ +[mqtt docs]: /integrations/mqtt/ +[mystrom docs]: /integrations/mystrom/ +[python_script docs]: /integrations/python_script/ +[rainbird docs]: /integrations/rainbird/ +[rainmachine docs]: /integrations/rainmachine/ +[reolink docs]: /integrations/reolink/ +[ridwell docs]: /integrations/ridwell/ +[roborock docs]: /integrations/roborock/ +[slimproto docs]: /integrations/slimproto/ +[stookwijzer docs]: /integrations/stookwijzer/ +[switchbot docs]: /integrations/switchbot/ +[upb docs]: /integrations/upb/ +[wemo docs]: /integrations/wemo/ +[yale_smart_alarm docs]: /integrations/yale_smart_alarm/ +[yalexs_ble docs]: /integrations/yalexs_ble/ +[zha docs]: /integrations/zha/ + +## Release 2023.7.3 - July 21 + +- Use device class naming for SimpliSafe ([@joostlek] - [#96093]) ([simplisafe docs]) +- Always try PullPoint with ONVIF ([@bdraco] - [#96377]) ([onvif docs]) +- Bump vallox-websocket-api to 3.3.0 ([@slovdahl] - [#96493]) ([vallox docs]) (dependency) +- Fix Vallox fan entity naming ([@slovdahl] - [#96494]) ([vallox docs]) +- Bump devolo_plc_api to 1.3.2 ([@Shutgun] - [#96499]) ([devolo_home_network docs]) (dependency) +- Support MyStrom switch 120 ([@joostlek] - [#96535]) ([mystrom docs]) +- Defer SSDP UPNP server start until the started event ([@bdraco] - [#96555]) ([ssdp docs]) +- Handle empty strings for ESPHome UOMs ([@bdraco] - [#96556]) ([esphome docs]) +- Bump onvif-zeep-async to 3.1.12 ([@bdraco] - [#96560]) ([onvif docs]) (dependency) +- Fix daikin missing key after migration ([@mover85] - [#96575]) ([daikin docs]) +- Ensure androidtv_remote does not block startup of HA ([@quthla] - [#96582]) ([androidtv_remote docs]) +- Bump pyrainbird to 2.1.1 ([@allenporter] - [#96601]) ([rainbird docs]) (dependency) +- Bump pyrainbird to 3.0.0 ([@allenporter] - [#96610]) ([rainbird docs]) (dependency) +- Fix SmartThings Cover Set Position (for window shades) ([@andrewsayre] - [#96612]) ([smartthings docs]) (dependency) +- Improve imap error handling for config entry ([@jbouwh] - [#96724]) ([imap docs]) +- Use explicit device name for Stookalert ([@joostlek] - [#96755]) ([stookalert docs]) +- Prevent otbr creating multiple config entries ([@emontnemery] - [#96783]) ([otbr docs]) +- Fix check for HA Yellow radio in otbr config flow ([@emontnemery] - [#96789]) ([otbr docs]) +- Update PyYAML to 6.0.1 ([@cdce8p] - [#96800]) (dependency) +- Update pycocotools to 2.0.6 ([@cdce8p] - [#96831]) ([tensorflow docs]) (dependency) +- Add username to Reauth flow in Honeywell ([@mkmer] - [#96850]) ([honeywell docs]) +- bump python-Roborock to 0.30.1 ([@Lash-L] - [#96877]) ([roborock docs]) (dependency) +- Avoid infinite loop on corrupt stream recording ([@uvjustin] - [#96881]) ([stream docs]) +- Bump AIOSomecomfort to 0.0.15 in Honeywell ([@mkmer] - [#96904]) ([honeywell docs]) (dependency) +- Fix timer switch in Sensibo ([@gjohansson-ST] - [#96911]) ([sensibo docs]) +- Disable wheels building for pycocotools ([@frenck] - [#96937]) +- Fix esphome entity ids in test ([@bdraco] - [#96965]) ([esphome docs]) +- Add custom bypass night arming to SIA alarm codes ([@etnoy] - [#95736]) ([sia docs]) +- Upgrade pymazda to 0.3.10 ([@bdr99] - [#96954]) ([mazda docs]) (dependency) +- Fix OTBR tests on RC ([@frenck] - [#96966]) ([otbr docs]) +- Update aiohttp to 3.8.5 ([@frenck] - [#96945]) (dependency) +- Remove stateclass from Systemmonitor process sensor ([@joostlek] - [#96973]) ([systemmonitor docs]) +- Fix task leak on config entry unload/retry ([@bdraco] - [#96981]) +- Bump env_canada to v0.5.36 ([@michaeldavie] - [#96987]) ([environment_canada docs]) +- Update pyfibaro dependency ([@rappenze] - [#97004]) ([fibaro docs]) (dependency) + +[#95736]: https://github.com/home-assistant/core/pull/95736 +[#95908]: https://github.com/home-assistant/core/pull/95908 +[#96006]: https://github.com/home-assistant/core/pull/96006 +[#96093]: https://github.com/home-assistant/core/pull/96093 +[#96377]: https://github.com/home-assistant/core/pull/96377 +[#96487]: https://github.com/home-assistant/core/pull/96487 +[#96493]: https://github.com/home-assistant/core/pull/96493 +[#96494]: https://github.com/home-assistant/core/pull/96494 +[#96499]: https://github.com/home-assistant/core/pull/96499 +[#96535]: https://github.com/home-assistant/core/pull/96535 +[#96555]: https://github.com/home-assistant/core/pull/96555 +[#96556]: https://github.com/home-assistant/core/pull/96556 +[#96560]: https://github.com/home-assistant/core/pull/96560 +[#96575]: https://github.com/home-assistant/core/pull/96575 +[#96582]: https://github.com/home-assistant/core/pull/96582 +[#96601]: https://github.com/home-assistant/core/pull/96601 +[#96610]: https://github.com/home-assistant/core/pull/96610 +[#96612]: https://github.com/home-assistant/core/pull/96612 +[#96724]: https://github.com/home-assistant/core/pull/96724 +[#96755]: https://github.com/home-assistant/core/pull/96755 +[#96783]: https://github.com/home-assistant/core/pull/96783 +[#96789]: https://github.com/home-assistant/core/pull/96789 +[#96800]: https://github.com/home-assistant/core/pull/96800 +[#96831]: https://github.com/home-assistant/core/pull/96831 +[#96850]: https://github.com/home-assistant/core/pull/96850 +[#96877]: https://github.com/home-assistant/core/pull/96877 +[#96881]: https://github.com/home-assistant/core/pull/96881 +[#96904]: https://github.com/home-assistant/core/pull/96904 +[#96911]: https://github.com/home-assistant/core/pull/96911 +[#96937]: https://github.com/home-assistant/core/pull/96937 +[#96945]: https://github.com/home-assistant/core/pull/96945 +[#96954]: https://github.com/home-assistant/core/pull/96954 +[#96965]: https://github.com/home-assistant/core/pull/96965 +[#96966]: https://github.com/home-assistant/core/pull/96966 +[#96973]: https://github.com/home-assistant/core/pull/96973 +[#96981]: https://github.com/home-assistant/core/pull/96981 +[#96987]: https://github.com/home-assistant/core/pull/96987 +[#97004]: https://github.com/home-assistant/core/pull/97004 +[@Lash-L]: https://github.com/Lash-L +[@Shutgun]: https://github.com/Shutgun +[@allenporter]: https://github.com/allenporter +[@andrewsayre]: https://github.com/andrewsayre +[@balloob]: https://github.com/balloob +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@cdce8p]: https://github.com/cdce8p +[@emontnemery]: https://github.com/emontnemery +[@etnoy]: https://github.com/etnoy +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@jbouwh]: https://github.com/jbouwh +[@joostlek]: https://github.com/joostlek +[@michaeldavie]: https://github.com/michaeldavie +[@mkmer]: https://github.com/mkmer +[@mover85]: https://github.com/mover85 +[@quthla]: https://github.com/quthla +[@rappenze]: https://github.com/rappenze +[@slovdahl]: https://github.com/slovdahl +[@uvjustin]: https://github.com/uvjustin +[abode docs]: /integrations/abode/ +[accuweather docs]: /integrations/accuweather/ +[acmeda docs]: /integrations/acmeda/ +[androidtv_remote docs]: /integrations/androidtv_remote/ +[daikin docs]: /integrations/daikin/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[fibaro docs]: /integrations/fibaro/ +[honeywell docs]: /integrations/honeywell/ +[imap docs]: /integrations/imap/ +[mazda docs]: /integrations/mazda/ +[mystrom docs]: /integrations/mystrom/ +[onvif docs]: /integrations/onvif/ +[otbr docs]: /integrations/otbr/ +[rainbird docs]: /integrations/rainbird/ +[roborock docs]: /integrations/roborock/ +[sensibo docs]: /integrations/sensibo/ +[sia docs]: /integrations/sia/ +[simplisafe docs]: /integrations/simplisafe/ +[smartthings docs]: /integrations/smartthings/ +[ssdp docs]: /integrations/ssdp/ +[stookalert docs]: /integrations/stookalert/ +[stream docs]: /integrations/stream/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tensorflow docs]: /integrations/tensorflow/ +[vallox docs]: /integrations/vallox/ + +## Integrations now available to set up from the UI + +The following integrations are now available via the Home Assistant UI: + +- **[myStrom]**, done by [@pail23] +- **[Google Translate text-to-speech]**, done by [@MartinHjelmare] +- **[Linn / Openhome]**, done by [@bazwilliams] +- **[QNAP]**, done by [@disforw] + +[@bazwilliams]: https://github.com/bazwilliams +[@disforw]: https://github.com/disforw +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@pail23]: https://github.com/pail23 +[Google Translate text-to-speech]: /integrations/google_translate +[Linn / Openhome]: /integrations/openhome +[myStrom]: /integrations/mystrom +[QNAP]: /integrations/qnap + +## 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 "Home Assistant Container (Docker)" %} + +If you use the Home Assistant Container installation method, for example, using +Docker, please make sure you are using our official (multi-platform) images. + +The correct and preferred image to use for our stable releases is: + +- `ghcr.io/home-assistant/home-assistant:stable` + +Although not the preferred location by the Home Assistant project, the image +is also available on DockerHub: + +- `homeassistant/home-assistant:stable` + +The reason for mentioning this in this breaking change section is that we have +seen usage of our internal, intermediate, platform build images. These images +are not meant for use directly, and using the above listed images is strongly +recommended. + +As of this release, we no longer publish our intermediate platform images to +DockerHub. This means that if you are using these images, you will no longer +receive updates. Please use the above-listed images instead. + +([@pvizeli] - [#95236]) + +[@pvizeli]: https://github.com/pvizeli +[#95236]: https://github.com/home-assistant/core/pull/95236 + +{% enddetails %} + +{% details "Bose SoundTouch" %} + +The previously deprecated YAML configuration of the Bose SoundTouch +integration has been removed. + +Bose SoundTouch 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. + +([@gjohansson-ST] - [#94090]) ([documentation](/integrations/soundtouch)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#94090]: https://github.com/home-assistant/core/pull/94090 + +{% enddetails %} + +{% details "Conversation" %} + +When using the Assist shortcut on iOS, it will now always talk to Home Assistant +conversation agent even if the OpenAI or Google LLM conversation integrations +are set up. + +([@balloob] - [#95225]) ([documentation](/integrations/conversation)) + +[@balloob]: https://github.com/balloob +[#95225]: https://github.com/home-assistant/core/pull/95225 + +{% enddetails %} + +{% details "ESPHome" %} + +As an additional security hardening measure, the default for allowing ESPHome +devices to make service calls has changed. If you want to permit the ESPHome +device to make service calls, it must be enabled in the options flow. + +- For existing devices, calling Home Assistant services continues to be allowed. +- For newly configured devices, it must now be enabled in the options flow. + +([@bdraco] - [#95143]) ([documentation](/integrations/esphome)) + +[@bdraco]: https://github.com/bdraco +[#95143]: https://github.com/home-assistant/core/pull/95143 + +{% enddetails %} + +{% details "Home Assistant Supervisor" %} + +The default name given to backups created with the `hassio.full_backup` +and `hassio.partial_backup` services is now longer `""` but the date and time +the backup was initiated (`%Y-%m-%d %H:%M:%S`, for example, +"2023-07-05 13:37:42"). + +([@ludeeus] - [#94468]) ([documentation](/integrations/hassio)) + +[@ludeeus]: https://github.com/ludeeus +[#94468]: https://github.com/home-assistant/core/pull/94468 + +{% enddetails %} + +{% details "Hyperion" %} + +The behavior of Hyperion lights has changed: + +Turning off the light entity will only clear the priority you have configured during the integration setup. Other Home Assistant independent light sources in Hyperion might still be active and cause light to be emitted. If you want to turn the light off entirely, regardless of active light sources, you can enable the `switch.[instance]_led_device` entity that acts as a global switch. + +External effects that are unrelated to the Hyperion light source (such as USB capture) have been removed from the light entity. To control them, enable the respective disabled-by-default switch entity. + +([@Sab44 ] - [#80478]) ([documentation](/integrations/hyperion)) + +[@Sab44]: https://github.com/Sab44 +[#80478]: https://github.com/home-assistant/core/pull/80478 + +{% enddetails %} + +{% details "MQTT" %} + +If the `initial` temperature, `min_temp`, or `max_temp` is not set, the default +temperature will be converted to the set `temperature_unit` or system default +temperature unit if this is not degrees Celsius. + +([@jbouwh] - [#93965]) ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#93965]: https://github.com/home-assistant/core/pull/93965 + +--- + +The behavior of MQTT climate when `power_command_topic` is set has been changed: + +- The `hvac_mode` state attribute is no longer optimistically set if + `power_command_topic` is defined and `climate.turn_on` or `climate.turn_off` + is called. +- When `hvac_mode` is changed, `payload_on` or `payload_off` messages will + not be published on the `power_command_topic`. + +This also means `power_command_topic` is no longer deprecated. + +([@jbouwh] - [#94832]) ([documentation](/integrations/mqtt)) + +[@jbouwh]: https://github.com/jbouwh +[#94832]: https://github.com/home-assistant/core/pull/94832 + +{% enddetails %} + +{% details "MusicCast" %} + +The values for the `source` attribute have changed. We wanted to show more user +friendly values for the `source` attribute, such as "Net Radio" instead +of "net_radio". + +If you have any automation depending on the `source` state attribute of the +media player entity, you will have to update these. Calling the `select_source` +service will still be possible using the old source names. +([@micha91] - [#74954]) ([documentation](/integrations/yamaha_musiccast)) + +[@micha91]: https://github.com/micha91 +[#74954]: https://github.com/home-assistant/core/pull/74954 + +{% enddetails %} + +{% details "SMHI" %} + +The attribute `cloudiness` has been replaced by the attribute `cloud_coverage`. +Please update any automation or scripts that is using this attribute to use the +newly added `cloud_coverage` attribute. + +([@gjohansson-ST] - [#95096]) ([documentation](/integrations/smhi)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#95096]: https://github.com/home-assistant/core/pull/95096 + +{% enddetails %} + +{% details "Slack" %} + +The previously deprecated YAML configuration of the Slack +integration has been removed. + +Slack 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. + +([@gjohansson-ST] - [#94106]) ([documentation](/integrations/slack)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#94106]: https://github.com/home-assistant/core/pull/94106 + +{% enddetails %} + +{% details "Xbox" %} + +The previously deprecated YAML configuration of the Xbox +integration has been removed. + +Xbox 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. + +([@gjohansson-ST] - [#94094]) ([documentation](/integrations/xbox)) + +[@gjohansson-ST]: https://github.com/gjohansson-ST +[#94094]: https://github.com/home-assistant/core/pull/94094 + +{% enddetails %} + +{% details "Z-Wave" %} + +Fan speed percentage for Honeywell(JE/Jasco) 39358 and Enbrighten(GE/Jasco) +55258 in wall fan controllers are now mapped to levels (low, medium, high). + +This may affect scripts or automatons setting fan speeds to specific percentages. + +([@jgrieger1] - [#92371]) ([documentation](/integrations/zwave_js)) + +[@jgrieger1]: https://github.com/jgrieger1 +[#92371]: https://github.com/home-assistant/core/pull/92371 + +{% 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: + +- [Changes to entity naming](https://developers.home-assistant.io/blog/2023/06/28/entity-name-changes) +- [Service Call API changes](https://developers.home-assistant.io/blog/2023/06/14/service-calls) +- [Service call description filters](https://developers.home-assistant.io/blog/2023/06/28/service-description-filters) + +[devblog]: https://developers.home-assistant.io/blog/ + +## Farewell to the following + +The following integrations are also no longer available as of this release: + +- **SenseME** has been removed. Big Ass Fans changed the protocol in a newer + firmware in April 2022. The [Big Ass Fans integration] can be used + as a replacement, after updating to the latest firmware. + ([@bdraco] - [#94363]) + +[@bdraco]: https://github.com/bdraco +[#94363]: https://github.com/home-assistant/core/pull/94363 +[Big Ass Fans integration]: /integrations/baf + +## 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.7](/changelogs/core-2023.7) diff --git a/source/_posts/2023-07-20-year-of-the-voice-chapter-3.markdown b/source/_posts/2023-07-20-year-of-the-voice-chapter-3.markdown new file mode 100644 index 00000000000..80481024e43 --- /dev/null +++ b/source/_posts/2023-07-20-year-of-the-voice-chapter-3.markdown @@ -0,0 +1,204 @@ +--- +layout: post +title: "Year of the Voice - Chapter 3: Ready when you are" +description: "The full power of Assist on all of your Android devices." +date: 2023-07-20 00:00:00 +date_formatted: "July 20, 2023" +author: Mike Hansen +comments: true +categories: Assist +og_image: /images/blog/2023-07-20-year-of-the-voice-chapter-3/social.png +--- + +

    + +This year is Home Assistant’s [Year of the Voice]. It is our goal for 2023 to let users control Home Assistant in their own language. Today we’re presenting our third milestone for the year: Chapter 3. + +In [Chapter 1], we focused on intents – what the user wants to do. The Home Assistant community has now translated common smart home commands and responses into [50 languages], coming even closer to the 62 languages that Home Assistant supports. + +In [Chapter 2], we introduced speech-to-text and text-to-speech. This allows users to talk and listen to their smart homes through the browser, [ESPHome], and even [analog phones]. + +For Chapter 3, we bring the full power of [Assist] to the million active Android devices running the Home Assistant Companion app. Got an Android phone, tablet, or watch? Set Assist as your default digital assistant and talk to your Home Assistant with one push! + + + + + +_To watch the video presentation of this blog post, including live demos, check [the recording of our live stream.][live-stream]_ + +[Year of the Voice]: https://www.home-assistant.io/blog/2022/12/20/year-of-voice/ +[Chapter 1]: https://www.home-assistant.io/blog/2023/01/26/year-of-the-voice-chapter-1/ +[Chapter 2]: https://www.home-assistant.io/blog/2023/04/27/year-of-the-voice-chapter-2/ +[50 languages]: https://home-assistant.github.io/intents/ +[live-stream]: https://youtube.com/live/sXzItFksYFA?feature=share +[Assist]: /voice_control/ +[ESPHome]: /voice_control/thirteen-usd-voice-remote/ +[analog phones]: /voice_control/worlds-most-private-voice-assistant/ + + + +## Native Assist on Android + +Starting in Chapter 3, Assist is now natively supported through the [Home Assistant Companion App]. With this update, the full power of Assist is available to over a million Android devices using Home Assistant. Access the Assist button in the app, and talk to your smart home from your phone: + +

    +Screenshot of Assist in HA Companion app +Assist on Android is built-in to the Android app and uses the speech-to-text from Home Assistant +

    + + +Have a [Home Assistant Cloud subscription]? You can now control your smart home via voice from anywhere in the world without giving up your privacy. [Multiple Home Assistant servers are supported], so you can just as easily talk to your parent's house: + +

    +Screenshot of Assist picking a voice assistant +Select a voice assistant from any of your configured Home Assistant instances +

    + +[Multiple Home Assistant servers are supported]: /voice_control/android/#using-assist-with-multiple-home-assistant-servers + +### Default digital assistant + +Why open an app if you don't have to? Set Home Assistant as your [default digital assistant app]! Now, holding the home or power button will instantly bring up Assist: + +

    +Screenshot of Assist activated on the home screen +Launch Assist from anywhere on Android without having to open the Home Assistant app +

    + +It's even possible to activate Assist directly from the lock screen: + + + +You can find the settings on Android: **Settings** > **Apps** > **Default apps** or tap on the tip in the Home Assistant Companion settings. + +[Home Assistant Companion App]: https://companion.home-assistant.io/ +[Home Assistant Cloud subscription]: https://www.nabucasa.com/ +[default digital assistant app]: /voice_control/android/#setting-up-home-assistant-assist-as-default-assistant-app-on-an-android-phone + +## Native Assist on Wear OS + +We didn't leave out watches! Wear OS devices can now natively [use Assist] as well: + + + +Text-to-speech responses are spoken directly from the watch, allowing you to listen instead of looking for confirmation. + +Like the phones, it is possible to set Home Assistant to be your [watch's default digital assistant]. Pressing the crown or holding the button on your watch now brings up Assist! + +

    +Screenshot of native Assist on Wear OS +Native Assist on Wear OS +

    + +[use Assist]: /voice_control/android/#assist-on-wear-os +[watch's default digital assistant]: /voice_control/android/#setting-up-home-assistant-assist-as-default-assistant-app-on-a-wear-os-watch + +## Sentence triggers + +While [custom sentences] were already part of Assist, they required manually editing YAML. With the new [sentence trigger], you can now add custom sentences directly in the UI: + +

    +Screenshot of sentence trigger creation +Configure your own sentences to trigger any action in the automation editor +

    + +These sentences take priority over the built-in commands, and work anywhere that Assist does. Some basic [template syntax] is available, such as marking parts of the sentence as optional. + +[custom sentences]: /voice_control/custom_sentences/ +[sentence trigger]: /voice_control/custom_sentences/#adding-a-custom-sentence-to-trigger-an-automation +[template syntax]: https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax + +## Assist debug tool + +The Home Assistant community is hard at work translating [common smart home commands]. To help contributors, we've added an ["Assist" developer tool] that lets you test out sentences without actually executing the commands: + +

    +Screenshot of Assist developer tool +Test sentence understanding with the Assist developer tool +

    + +For each test command or query, you can find out: + +- Which [intent] would be triggered with its slot values +- Which entities would be targeted +- Whether or not each targeted entity matched (queries only) + +[common smart home commands]: https://github.com/home-assistant/intents/ +[intent]: https://developers.home-assistant.io/docs/intent_builtin +["Assist" developer tool]: /voice_control/troubleshooting/#test-a-sentence-per-assistant-without-voice-while-executing-the-commands + +## Piper community voices + +[Piper] is a text-to-speech system created by Nabu Casa, designed to run locally on the Raspberry Pi 4. Since its introduction in Chapter 2, Piper has [grown rapidly] with adoption in the open source community as well as [academia]. + +

    +Piper logo +

    + +The upcoming release of the [Piper add-on] for Home Assistant 2023.8 will support 23 languages and over 70 different voices. This will include voices from 7 brand new [voice datasets] contributed by the Home Assistant community. These datasets have been collected and donated to the public domain by Nabu Casa for the benefit of text-to-speech research now and in the future. + +You can use [Piper in automations] to make text-to-speech announcements, or use it as your voice to [setup a fully local assistant]. + +[Piper]: https://github.com/rhasspy/piper/ +[grown rapidly]: https://building.open-home.io/piper-is-our-new-voice-for-the-open-home/ +[Piper add-on]: https://github.com/home-assistant/addons/blob/master/piper/README.md +[academia]: https://www.techrxiv.org/articles/preprint/Image_Captioning_for_the_Visually_Impaired_and_Blind_A_Recipe_for_Low-Resource_Languages/22133894 +[voice datasets]: https://github.com/NabuCasa/voice-datasets/ +[Piper in automations]: /voice_control/using_tts_in_automation/ +[setup a fully local assistant]: /voice_control/voice_remote_local_assistant/ + +## New ESPHome voice modes + +ATOM Echo Smart Speaker from M5Stack + +With hardware like the $13 [ATOM Echo], it was possible in Chapter 2 to [create a push-to-talk voice Assistant using ESPHome]. + +Using the latest ESPHome, you can push a button to start speaking and let Home Assistant detect the end of the voice command. Continuous mode is also available, allowing multiple conversation turns with Assist similar to an analog phone. + +```yaml +voice_assistant: + microphone: ... + speaker: ... + +binary_sensor: + - platform: gpio + pin: ... + on_click: + - if: + condition: voice_assistant.is_running + then: + - voice_assistant.stop: + else: + - voice_assistant.start_continuous: +``` +[ESPHome Voice Assistant documentation](https://esphome.io/components/voice_assistant.html#click-to-converse) + +### Silence detection + +ESPHome's new voice modes use Home Assistant to detect the end of each voice command. In your device's configuration, you can now adjust how much silence is needed with "Finished speaking detection": + +

    +Configure silence detection for your ESPHome voice assistant +ESPHome Voice Assistant have two config entities to automate it's behavior in Home Assistant +

    + +[ATOM Echo]: https://shop.m5stack.com/products/atom-echo-smart-speaker-dev-kit?ref=NabuCasa +[create a push-to-talk voice Assistant using ESPHome]: /voice_control/thirteen-usd-voice-remote/ + +## Until next time + +That does it for Chapter 3! A big thanks to [Joris Pelgröm] for his work on the Android app, and to the many Assist contributors. +And as always, thank you to [Nabu Casa](https://www.nabucasa.com) and all of the Home Assistant Cloud subscribers for making this possible. + +If you want to help fund our work on voice and further development of Home Assistant, ESPHome, Z-Wave JS and other related projects? Subscribe to [Home Assistant Cloud](https://www.nabucasa.com). + +### Where is wake word? + +After three chapters in the Year of Voice, the message from Home Assistant users and creators is loud and clear: we want a wake word for Assist! + +In Chapter 4, our focus will be on delivering the foundation for wake word detection. As a part of the [Open Home], this foundation will keep in line with our values: privacy, choice, and durability. Stay tuned! + +[Joris Pelgröm]: https://github.com/jpelgrom +[Open Home]: https://www.home-assistant.io/blog/2021/12/23/the-open-home/?ref=building.open-home.io + +_Some links on this page are affiliate links and purchases using these links support the Home Assistant project._ diff --git a/source/_redirects b/source/_redirects index 650f8865c72..b805dece7ef 100644 --- a/source/_redirects +++ b/source/_redirects @@ -256,7 +256,7 @@ layout: null /docs/mqtt/birth_will /integrations/mqtt/#birth-and-last-will-messages /docs/mqtt/broker /integrations/mqtt/#broker-configuration /docs/mqtt/certificate /integrations/mqtt/#advanced-broker-configuration -/integrations/mqtt/#mqtt-discovery /integrations/mqtt/#mqtt-discovery +/docs/mqtt/discovery/ /integrations/mqtt/#mqtt-discovery /docs/mqtt/logging /integrations/mqtt/#logging /docs/mqtt/service /integrations/mqtt/#publish--dump-services /docs/mqtt/testing /integrations/mqtt/#testing-your-setup @@ -544,6 +544,7 @@ layout: null /integrations/trackr /more-info/removed-integration 301 /integrations/ubee /more-info/removed-integration 301 /integrations/uber /more-info/removed-integration 301 +/integrations/ultraloq /more-info/removed-integration 301 /integrations/updater /more-info/removed-integration 301 /integrations/ups /more-info/removed-integration 301 /integrations/uscis /more-info/removed-integration 301 diff --git a/source/blueprints/blog/2023-07/notify_agent_agenda.yaml b/source/blueprints/blog/2023-07/notify_agent_agenda.yaml new file mode 100644 index 00000000000..fe246a56ea1 --- /dev/null +++ b/source/blueprints/blog/2023-07/notify_agent_agenda.yaml @@ -0,0 +1,141 @@ +blueprint: + name: Conversation agent agenda notification + description: + Conversation agent generates a notification based on the upcoming calendar + agenda, location, and weather. + author: allenporter + domain: automation + input: + notify_time: + name: Notification time + description: Time the automation is triggered to send the notification. + selector: + time: {} + default: 07:00:00 + notify_service: + name: Notify service name + description: + The name of the notify service where the notification should be + sent. + selector: + text: {} + default: notify.notify + calendar_entity: + name: Calendar + description: The calendar entity to use for finding upcoming calendar events. + selector: + entity: + multiple: false + filter: + - domain: + - calendar + calendar_duration: + name: Calendar event duration + description: How many hours ahead to look for upcoming calendar events. + selector: + duration: + default: + hours: 18 + weather_entity: + name: Weather entity + description: The weather entity to use for upcoming weather forecast. + selector: + entity: + multiple: false + filter: + - domain: + - weather + zone_entity: + name: Home zone entity + description: + The zone entity to use to determine approximate location for understanding + typical weather. + selector: + entity: + multiple: false + filter: + - domain: + - zone + conversation_agent: + name: Conversation agent + description: |- + The conversation agent to use for generating the notification text. + This should be a OpenAI conversation agent for this Blueprint to work. + selector: + conversation_agent: + prompt: + name: Conversation agent prompt + selector: + text: + multiline: true + type: text + default: |- + Please generate text for a notification that will be sent to the users + smartphone with helpful information. + + You are a helpful personal agent that generates text for the user: + - Your answers are helpful, friendly, warm, insightful. + - Your answers are not technical, and do not include Home Assistant internal details such as entities in responses. + - Your messages help the user prepare for their day, for example: + - Making note of unusual weather for the location and time of year (but not mundane details like "0% chance of precipitation") + - How much time remaining until their first meeting + - Anything that may be special or unique, such as celebrating a birthday + +trigger: + platform: time + at: !input notify_time + +action: + - variables: + weather_entity: !input weather_entity + calendar_entity: !input calendar_entity + zone_entity: !input zone_entity + calendar_duration: !input calendar_duration + prompt: !input prompt + - alias: Fetch Calendar Agenda + service: calendar.list_events + data: + duration: !input calendar_duration + target: + entity_id: !input calendar_entity + response_variable: agenda + - alias: "Conversation Agent Notification Text" + service: conversation.process + data: + text: |- + Time: {{ now() }} + {%- if zone_entity is defined %} + Latitude: {{ state_attr(zone_entity, 'latitude') | round(1) }} + Longitude: {{ state_attr(zone_entity, 'longitude') | round(1) }} + {% endif %} + + {%- if weather_entity is defined %} + {%- set forecast = state_attr(weather_entity, 'forecast')[0] %} + {%- set temperature_unit = state_attr(weather_entity, 'temperature_unit') -%} + Weather: {{ forecast.condition }} ({{ forecast.temperature }}{{ temperature_unit }}, {{ forecast.precipitation }}% precipitation) + {%- endif %} + + Calendar "{{ state_attr(calendar_entity, 'friendly_name') }}" events for the next {{ calendar_duration.hours }}: + {%- if agenda.events %} + {%- for event in agenda.events %} + - Summary: {{ event.summary }} + Start-End: {% if event.start is defined %}{{ event.start }} to {{ event.end }}{% else %}All Day{% endif %} + {%- if event.descripton is defined %} + Descripton: {{ event.descripton }} + {% endif -%} + {%- if event.location is defined %} + Location: {{ event.location }} + {% endif -%} + {%- endfor %} + {%- else %} + - No upcoming events. + {%- endif %} + + {{ prompt }} + agent_id: !input conversation_agent + response_variable: agent + - alias: "Send notification" + service: !input notify_service + data: + title: "{{ now().strftime('%A') }} Agenda" + message: "{{ agent.response.speech.plain.speech }}" diff --git a/source/changelogs/core-2023.7.markdown b/source/changelogs/core-2023.7.markdown new file mode 100644 index 00000000000..94e541df8d4 --- /dev/null +++ b/source/changelogs/core-2023.7.markdown @@ -0,0 +1,1864 @@ +--- +title: Full Changelog for Home Assistant Core 2023.7 +description: Detailed changelog for the Home Assistant Core 2023.7 release +--- + +These are all the changes included in the Home Assistant Core 2023.7 release. + +For a summary in a more readable format: +[Release notes blog for this release](/blog/2023/07/05/release-20237/). + +## Full Changelog + +- Bump version to 2023.7.0dev0 ([@frenck] - [#93869]) +- Add Dremel 3D Printer integration ([@tkdrob] - [#85969]) +- Pass device ID to conversation input ([@balloob] - [#93867]) +- Add zwave_js speed config for additional GE/Jasco fan controllers ([@jgrieger1] - [#92371]) +- Refactor try catch in hassio.issues per feedback ([@mdegat01] - [#93872]) +- Address late review for whirlpool ([@mkmer] - [#93874]) +- Add binary sensor platform to Dremel 3D Printer ([@tkdrob] - [#93881]) +- Fix package names to match pypi index metadata ([@bdraco] - [#93883]) +- Add CONFIG_SCHEMA to broadlink ([@emontnemery] - [#93854]) +- Remove async_setup from zerproc ([@emontnemery] - [#93903]) +- Remove async_setup from ring ([@emontnemery] - [#93902]) +- Remove setup from remote_rpi_gpio ([@emontnemery] - [#93901]) +- Add config entry only config schema to integrations a-r ([@emontnemery] - [#93899]) +- Add empty config schema to mobile_app ([@emontnemery] - [#93900]) +- Remove async_setup from econet ([@emontnemery] - [#93892]) +- Remove async_setup from gpslogger ([@emontnemery] - [#93893]) +- Remove async_setup from hyperion ([@emontnemery] - [#93894]) +- Add Ezviz light entity ([@RenierM26] - [#93710]) +- Rename `cv.no_yaml_config_schema` to `cv.config_entry_only_config_schema` ([@emontnemery] - [#93908]) +- Remove async_setup from sky_hub ([@emontnemery] - [#93911]) +- Remove async_setup from traccar ([@emontnemery] - [#93912]) +- Adding myself as codeowner to QNAP ([@disforw] - [#93915]) +- Fix typo in cloud ([@emontnemery] - [#93917]) +- Move QNAP constants ([@disforw] - [#93918]) +- Add platform only config schema to nsw_fuel_station and ping ([@emontnemery] - [#93913]) +- Properly order moon phases in attribute ([@vingerha] - [#93933]) +- Add humidity sensor to deconz component ([@Xyaren] - [#93024]) +- Adding new supported language code to Google translate ([@andiukas] - [#93926]) +- Fix typing_extensions to match metadata ([@bdraco] - [#93920]) +- Add config entry only config schema to integrations s-z ([@emontnemery] - [#93910]) +- Add save clips to Blink services ([@perdue] - [#84149]) +- Remove async_setup from locative ([@emontnemery] - [#93895]) +- Remove insteon import flow ([@emontnemery] - [#93952]) +- Add empty config schema to mailbox ([@emontnemery] - [#93953]) +- Add CONFIG_SCHEMA to imap_email_content ([@emontnemery] - [#93951]) +- Add empty config schema to stt ([@emontnemery] - [#93954]) +- Fritz: cleanup unused variables ([@chemelli74] - [#93971]) +- Fix broken URL in Z-Wave JS ([@wrt54g] - [#93983]) +- Keep track what devices support Assist features ([@balloob] - [#93990]) +- Add reload support to intent_script ([@Megabytemb] - [#93404]) +- Refactor Command Line binary sensor to use ManualTriggerEntity ([@gjohansson-ST] - [#94000]) +- Refactor Command Line cover to use ManualTriggerEntity ([@gjohansson-ST] - [#93997]) +- Drop codeowner for IMAP ([@engrbm87] - [#94033]) +- Refactor Command Line sensor to use ManualTriggerEntity ([@gjohansson-ST] - [#93999]) +- Drop codeowner for gogogate2 ([@bdraco] - [#94049]) +- Don't inherit SensorEntity/NumberEntity and RestoreEntity in Shelly integration ([@bieniu] - [#93531]) +- Add media stop to LG Netcast TV ([@Drafteed] - [#93615]) +- Remove miniaudio pin now that upstream package has been fixed ([@bdraco] - [#94034]) +- Add camera platform to Dremel ([@tkdrob] - [#93882]) +- Update pyipp to 0.14.0 ([@ctalkington] - [#94050]) +- Clean up error logging in qbittorrent ([@chrisx8] - [#94071]) +- Fix mqtt climate initial temperature conversion and precision ([@jbouwh] - [#93965]) +- Remove qbittorrent YAML configuration ([@gjohansson-ST] - [#93548]) +- Remove snapcast YAML configuration ([@gjohansson-ST] - [#93547]) +- Fix wheel builds on armhf and armv7 ([@bdraco] - [#94053]) +- Use shorthand attributes in NextBus ([@ViViDboarder] - [#94084]) +- Remove Xbox YAML configuration ([@gjohansson-ST] - [#94094]) +- Remove left-over issue from platform YAML in Radarr ([@gjohansson-ST] - [#94091]) +- Remove platform YAML for Bose SoundTouch ([@gjohansson-ST] - [#94090]) +- Add config flow to mystrom ([@pail23] - [#74719]) +- Remove leftover issue warning in SimpliSafe ([@gjohansson-ST] - [#94104]) +- Remove Slack YAML configuration ([@gjohansson-ST] - [#94106]) +- Stale doc string for mqtt light async_setup_entry ([@jbouwh] - [#94109]) +- Freeze time on `timer` tests that assert on remaining time ([@jbouwh] - [#94078]) +- Add new integration Discovergy ([@jpbede] - [#54280]) +- Improve discovergy generic typing ([@cdce8p] - [#94131]) +- Fix typo in Picnic strings ([@joostlek] - [#94117]) +- Remove left-over issue Simplepush ([@gjohansson-ST] - [#94103]) +- Remove leftover issue in nVent RAYCHEM SENZ ([@gjohansson-ST] - [#94105]) +- Remove left-over issue in Honeywell Lyric ([@gjohansson-ST] - [#94092]) +- Bump ruuvitag-ble to 0.1.2 ([@bdraco] - [#94144]) +- Update python-qbittorrent to 0.4.3 ([@chrisx8] - [#94072]) +- Change Ezviz detection sensitivity to update per entity ([@RenierM26] - [#93995]) +- Refactor async_set_temperature for mqtt climate ([@jbouwh] - [#94166]) +- Add support for ESPHome raw bluetooth advertisements ([@bdraco] - [#94138]) +- Update pydantic to 1.10.9 ([@cdce8p] - [#94178]) +- Sync Climate min/max temp with Google Assistant ([@hookedonunix] - [#94143]) +- Bump docker/login-action from 2.1.0 to 2.2.0 (@dependabot - [#94221]) +- Bump pymodbus to 3.3.1 ([@janiversen] - [#94162]) +- Add Water Heater platform to MQTT integration ([@hookedonunix] - [#93644]) +- Use stable USB device path in USB discovery ([@emontnemery] - [#94266]) +- Drop call to usb.get_serial_by_id from zha config flow ([@emontnemery] - [#94278]) +- Drop call to usb.get_serial_by_id from velbus config flow ([@emontnemery] - [#94276]) +- Drop call to usb.get_serial_by_id from modem_callerid config flow ([@emontnemery] - [#94275]) +- Upgrade ruff to 0.0.272 ([@scop] - [#94290]) +- Replace bandit with ruff ([@scop] - [#93200]) +- Improve coverage for LastFM ([@joostlek] - [#93661]) +- Use addon name as title in otbr hassio flow ([@emontnemery] - [#87081]) +- Request steam online friends from batches ([@joostlek] - [#91167]) +- Replace isort with ruff ([@frenck] - [#94302]) +- Bump Python-Roborock to 23.6 for crash fix ([@Lash-L] - [#94281]) +- Update URL in readme ([@wrt54g] - [#94282]) +- Drop call to usb.get_serial_by_id from zwave_js config flow ([@emontnemery] - [#94279]) +- Add comments about removing deprecated code from sky_connect config flow ([@emontnemery] - [#94262]) +- Tweak typing of Entity.platform ([@emontnemery] - [#88321]) +- Add missing super() call to EnergyCostSensor.add_to_platform_abort ([@emontnemery] - [#94322]) +- Cleanup MQTT schema from previous removed options ([@jbouwh] - [#94110]) +- Refactor some mqtt tests not the just use schema validation ([@jbouwh] - [#94330]) +- Migrate microsoft_face to EntityComponent ([@emontnemery] - [#94338]) +- Remove unneeded checks for Entity.platform ([@emontnemery] - [#94321]) +- Bump sensirion-ble to 0.1.0 ([@bdraco] - [#94352]) +- Bump reolink-aio to 0.6.0 ([@starkillerOG] - [#94259]) +- Renson integration ([@jimmyd-be] - [#56374]) +- Reduce I/O from cert_expiry ([@bdraco] - [#94399]) +- Improve renson typing ([@cdce8p] - [#94390]) +- Add Cleaning area sensors to Roborock ([@Lash-L] - [#94200]) +- Reduce in progress flow matching overhead ([@bdraco] - [#94403]) +- Improve the code quality of the Discovergy integration ([@jpbede] - [#94165]) +- Remove overridden entity_id property from WirelessTagSensor ([@emontnemery] - [#94339]) +- Use TemplateSelector on imap custom imap_content event template config option ([@jbouwh] - [#94429]) +- Add check for integration config schema to hassfest ([@emontnemery] - [#93587]) +- Bump actions/checkout from 3.5.2 to 3.5.3 (@dependabot - [#94452]) +- Remove Workday YAML configuration ([@gjohansson-ST] - [#94102]) +- Remove Brottsplatskartan YAML configuration ([@gjohansson-ST] - [#94101]) +- Add diagnostic support to Rituals Perfume Genie ([@frenck] - [#94373]) +- Bump home-assistant/builder from 2023.03.0 to 2023.06.0 (@dependabot - [#94453]) +- Fix flaky ESPHome test fixture ([@emontnemery] - [#94465]) +- Cleanup help_setup_helper in common mqtt tests ([@jbouwh] - [#94482]) +- Update OwnTracks UI strings to reflect OwnTracks UI ([@c0ffeeca7] - [#94476]) +- Add Roborock DnD switch ([@Lash-L] - [#94474]) +- Improve logging of mqtt discovery message errors ([@jbouwh] - [#94491]) +- Add missing assert to test_async_remove_ignores_in_flight_polling ([@emontnemery] - [#94487]) +- Remove unnecessary condition from edl21 sensor ([@emontnemery] - [#94493]) +- Bump google-nest-sdm to 2.2.5 ([@allenporter] - [#94398]) +- Bump dessant/lock-threads from 4.0.0 to 4.0.1 (@dependabot - [#94523]) +- Bump anyio to 3.7.0 ([@bdraco] - [#94516]) +- Bump orjson to 3.9.1 ([@bdraco] - [#94514]) +- Bump lru-dict to 1.2.0 ([@bdraco] - [#94513]) +- Bump zeroconf to 0.66.0 ([@bdraco] - [#94512]) +- Bump httpcore to 0.17.2 ([@bdraco] - [#94515]) +- Add missing callback decorator to event helpers ([@emontnemery] - [#94483]) +- Adjust default name in backup service calls to match documentation ([@ludeeus] - [#94468]) +- Bump bluetooth-data-tools to 1.0.0 ([@bdraco] - [#94145]) +- Name unnamed binary sensors by their device class ([@emontnemery] - [#92940]) +- Update sentry-sdk to 1.25.1 ([@frenck] - [#94374]) +- Bump python devcontainer ([@dupondje] - [#94540]) +- Fix ZHA tests ([@emontnemery] - [#94588]) +- Remove legacy STT provider from the demo integration ([@emontnemery] - [#94585]) +- Always setup demo platforms with device support from config entry ([@emontnemery] - [#94586]) +- Update solax to 0.3.2 ([@niclasku] - [#94545]) +- Reduce overhead to lookup items in the entity and device registry ([@bdraco] - [#94568]) +- Set has_entity_name in ws66i ([@emontnemery] - [#94608]) +- Set has_entity_name in sharkiq ([@emontnemery] - [#94606]) +- Always setup demo platforms with device support from config entry ([@emontnemery] - [#94601]) +- Set has_entity_name in webostv ([@emontnemery] - [#94607]) +- Fix async_timeout deprecation warning ([@synesthesiam] - [#94594]) +- Minor adjustment in sharkiq, webostv, ws66i ([@emontnemery] - [#94611]) +- Set has_entity_name in electrasmart ([@emontnemery] - [#94602]) +- Set has_entity_name in freedompro ([@emontnemery] - [#94603]) +- Set has_entity_name in kodi ([@emontnemery] - [#94604]) +- Set has_entity_name in mill ([@emontnemery] - [#94605]) +- Bump bluetooth-data-tools to 1.1.0 ([@bdraco] - [#94610]) +- Add coordinator to QNAP ([@disforw] - [#94413]) +- Remove _raw from zeroconf properties ([@bdraco] - [#94615]) +- Avoid double call to self.suggested_unit_of_measurement in sensor unit_of_measurement ([@bdraco] - [#94582]) +- Bump ZHA dependencies ([@puddly] - [#93989]) +- Fix timestamps for bluetooth scanners that bundle advertisements ([@bdraco] - [#94511]) +- Add CPU Power to System Bridge ([@timmo001] - [#80781]) +- Refactor XML parsing in rest ([@epenet] - [#94268]) +- Fix ESPHome entries reloading after startup when dashboard is in use ([@bdraco] - [#94362]) +- Change Entity.name default to UNDEFINED ([@emontnemery] - [#94574]) +- Fix HAVCMode typing in Intellifire ([@frenck] - [#94633]) +- Fix HAVCMode typing in Tuya ([@frenck] - [#94631]) +- Fix HAVCMode typing in Overkiz ([@frenck] - [#94632]) +- Fix HAVCMode typing in Fibaro ([@frenck] - [#94641]) +- Fix HAVCMode typing in Honeywell Total Connect Comfort ([@frenck] - [#94636]) +- Fix HAVCMode typing in Genius Hub ([@frenck] - [#94640]) +- Fix HAVCMode typing in AVM FRITZ!SmartHome ([@frenck] - [#94642]) +- Fix HAVCMode typing in ESPHome ([@frenck] - [#94630]) +- Use HAVCMode enum in BSB-Lan climate ([@frenck] - [#94638]) +- Fix HAVCMode typing in Rheem EcoNet ([@frenck] - [#94637]) +- Use HAVCMode enum in Atag climate ([@frenck] - [#94634]) +- Fix HAVCMode typing in Elk-M1 Control ([@frenck] - [#94639]) +- Fix HAVCAction typing in Overkiz ([@frenck] - [#94660]) +- Fix HAVCAction typing in Genius Hub ([@frenck] - [#94659]) +- Fix HAVCAction typing in Balboa Spa Client ([@frenck] - [#94658]) +- Fix HAVCAction typing in Atag ([@frenck] - [#94656]) +- Remove str as a valid HVACMode & HVACAction type ([@frenck] - [#94644]) +- Bump pyatv to 0.13.0 ([@michalmo] - [#94683]) +- Correct imap sensor measurement class and add suggested precision ([@jbouwh] - [#94060]) +- Drop codeowner for myq ([@bdraco] - [#94699]) +- Remove airplay filter now that apple tv supports airplay 2 ([@bdraco] - [#94693]) +- Bump bluetooth-data-tools to 1.2.0 ([@bdraco] - [#94696]) +- Debounce discoveries to improve event loop stability at the started event ([@bdraco] - [#94690]) +- Fix debouncer not scheduling timer when wrapped function raises ([@bdraco] - [#94689]) +- Add preheating HVAC action to climate ([@frenck] - [#94677]) +- Fix Command Line update twice issue ([@gjohansson-ST] - [#94672]) +- Update xknxproject to 3.2.0: support ETS 4 project files ([@farmio] - [#94692]) +- Fix typo in binary_sensor tests ([@emontnemery] - [#94712]) +- Remove unnecessary assert from Entity ([@emontnemery] - [#94711]) +- Update service call return values and error handling ([@allenporter] - [#94657]) +- Add support for services to return data ([@allenporter] - [#94401]) +- Support launching app deep links in apple_tv integration ([@michalmo] - [#94705]) +- Speed up entity service calls ([@bdraco] - [#94731]) +- Fix typo in tts tests ([@emontnemery] - [#94725]) +- Allow scripts to capture service response data in variables ([@allenporter] - [#94757]) +- Fix QNAP Sensor Entity Descriptions ([@disforw] - [#94749]) +- Bump cryptography to 41.0.1 and PyOpenSSL to 23.2.0 ([@bdraco] - [#94777]) +- Bump recommended esphome version for bluetooth to 2023.6.0 ([@bdraco] - [#94773]) +- Add hub to keyboard_remote manifest ([@lanrat] - [#94788]) +- pyWeMo serialnumber is deprecated, use serial_number ([@esev] - [#94791]) +- bmw_conected_drive: Allow WASHING_FLUID in condition based service ([@rikroe] - [#94762]) +- Bump reolink-aio to 0.7.1 ([@starkillerOG] - [#94761]) +- Bump zeroconf to 0.68.0 ([@bdraco] - [#94786]) +- Bump Shelly backend library to version 5.4.0 ([@bieniu] - [#94829]) +- Bump zeroconf to 0.69.0 ([@bdraco] - [#94828]) +- Explicitly opt-in to device name in the cast integration ([@emontnemery] - [#94847]) +- Explicitly opt-in to device name in the cpuspeed integration ([@emontnemery] - [#94844]) +- Explicitly opt-in to device name in the season integration ([@emontnemery] - [#94845]) +- Explicitly opt-in to device name in the uptime integration ([@emontnemery] - [#94846]) +- Add Twitch codeowner ([@joostlek] - [#94851]) +- Add missing abort string to apple_tv ([@bdraco] - [#94818]) +- Return `None` as Accuweather weather entity name ([@bieniu] - [#94803]) +- Return `None` as BraviaTV media_player/remote entity name ([@bieniu] - [#94804]) +- Log a traceback when importing a component fails ([@bdraco] - [#94778]) +- Add tests for kitchen_sink lock platform ([@emontnemery] - [#94723]) +- Add tests for kitchen_sink sensor platform ([@emontnemery] - [#94724]) +- Explicitly opt-in to device name in the demo integration ([@emontnemery] - [#94647]) +- Add image entity component ([@emontnemery] - [#90564]) +- Explicitly opt-in to device name in the imap integration ([@jbouwh] - [#94861]) +- Remove unreachable template validation for imap config flow ([@jbouwh] - [#94862]) +- Add Switchbot Indoor/Outdoor Meter ([@boozer2] - [#94836]) +- Improve test coverage of script ([@emontnemery] - [#94883]) +- Improve test coverage of automation extraction functions ([@emontnemery] - [#94878]) +- Fix memory leaks in websocket api ([@bdraco] - [#94780]) +- Bump yeelight to 0.7.11 ([@quthla] - [#94879]) +- ESPHome Alarm Control Panel ([@grahambrown11] - [#92357]) +- Bump ha-philipsjs to 3.1.0 ([@mfaraco] - [#94811]) +- Add source address early for KNX services ([@farmio] - [#94889]) +- Add `homeassistant.components.text` to `.strict-typing` ([@loopj] - [#94890]) +- Bump boschshcpy to 0.2.57 ([@tschamm] - [#94686]) +- Ezviz library bump 0.2.1.2 ([@RenierM26] - [#94823]) +- Humidifier current humidity ([@Shulyaka] - [#94874]) +- Dispatch when esphome static info changes ([@bdraco] - [#94876]) +- Regenerate instance ID on error ([@emontnemery] - [#94898]) +- Bump hass-nabucassa to 0.68.0 ([@emontnemery] - [#94910]) +- Teach alarm_control_panel device trigger about entity registry ids ([@emontnemery] - [#60977]) +- Improve service response data APIs ([@allenporter] - [#94819]) +- Avoid enumerating the whole state machine to find zone entities ([@bdraco] - [#94866]) +- Improve websocket api coverage and typing ([@bdraco] - [#94891]) +- Add cloud_connected method to CloudClient ([@emontnemery] - [#91997]) +- Follow redirects in generic camera ([@emontnemery] - [#94931]) +- Generic hygrostat current humidity ([@Shulyaka] - [#94912]) +- Add current_humidity attribute to xiaomi_miio humidifiers ([@jbouwh] - [#94934]) +- Replace assert_lists_same with pytest_unordered in integrations h-m ([@emontnemery] - [#94901]) +- Replace assert_lists_same with pytest_unordered in integrations a-f ([@emontnemery] - [#94900]) +- Replace assert_lists_same with pytest_unordered in integrations n-s ([@emontnemery] - [#94902]) +- Replace assert_lists_same with pytest_unordered in integrations t-z ([@emontnemery] - [#94903]) +- Add entity translations for AirQ ([@joostlek] - [#94280]) +- Add entity translations for AirNow ([@joostlek] - [#94175]) +- Add current_humidity attribute on homekit_controller humidifier ([@jbouwh] - [#94937]) +- Add current_humidity to humidifiers in google_assistant ([@jbouwh] - [#94935]) +- Improve storage helper typing ([@emontnemery] - [#94929]) +- Add device trigger for humidifier current_humidity ([@jbouwh] - [#94926]) +- Correct calls to super class in ZWaveConfigParameterSensor ([@emontnemery] - [#94925]) +- Correct calls to super class in ZHADeviceScannerEntity ([@emontnemery] - [#94924]) +- Correct calls to super class in TriggerEntity ([@emontnemery] - [#94916]) +- Ignore empty status update for mqtt number ([@jbouwh] - [#94800]) +- Name unnamed sensors by their device class ([@emontnemery] - [#94646]) +- Correct calls to super class in RecorderPool ([@emontnemery] - [#94923]) +- Bump arcam_fmj lib to 1.4.0 to support Arcam ST60 ([@lealoureiro] - [#94942]) +- Fix Netgear comment typo ([@Quentame] - [#94927]) +- Reduce code in entity filter ([@bdraco] - [#94882]) +- Refactor devolo_home_network tests ([@Shutgun] - [#88706]) +- Reduce overhead to update esphome entities ([@bdraco] - [#94930]) +- Improve alarm_control_panel device trigger tests ([@emontnemery] - [#94956]) +- Improve description in Workday config flow ([@gjohansson-ST] - [#94945]) +- Add entity translations for huisbaasje ([@joostlek] - [#94116]) +- Remove `base_url` configuration option from `tts` ([@emontnemery] - [#94905]) +- Add entity translations for Adguard ([@joostlek] - [#94171]) +- Add current_humidity attribute to tuya (de)humidifiers ([@jbouwh] - [#94953]) +- Relocate async_get_announce_addresses from zeroconf to network ([@bdraco] - [#94816]) +- Add trigger for persistent_notification ([@RoboMagus] - [#94809]) +- Add compatibility with sleeping Shelly gen2 devices with firmware 1.0.0 ([@bieniu] - [#94864]) +- Remove assert_lists_same test helper ([@emontnemery] - [#94904]) +- Use yt-dlp instead of youtube-dl ([@kylehild] - [#94625]) +- Migrate esphome light platform to use _on_static_info_update ([@bdraco] - [#94960]) +- Migrate esphome number platform to use _on_static_info_update ([@bdraco] - [#94958]) +- Teach binary_sensor device trigger about entity registry ids ([@emontnemery] - [#94963]) +- Teach button device trigger about entity registry ids ([@emontnemery] - [#94965]) +- Teach climate device trigger about entity registry ids ([@emontnemery] - [#94969]) +- Teach cover device trigger about entity registry ids ([@emontnemery] - [#94971]) +- Teach device_tracker device trigger about entity registry ids ([@emontnemery] - [#94972]) +- Teach lock device trigger about entity registry ids ([@emontnemery] - [#94975]) +- Teach netatmo device trigger about entity registry ids ([@emontnemery] - [#94980]) +- Teach select device trigger about entity registry ids ([@emontnemery] - [#94981]) +- Migrate esphome cover platform to use _on_static_info_update ([@bdraco] - [#94959]) +- Teach humidifier device trigger about entity registry ids ([@emontnemery] - [#94974]) +- Migrate google translate to config entries ([@MartinHjelmare] - [#93803]) +- Avoid fetching both unifiprotect RTSP urls ([@bdraco] - [#94978]) +- Migrate esphome switch platform to use _on_static_info_update ([@bdraco] - [#94962]) +- Teach media_player device trigger about entity registry ids ([@emontnemery] - [#94979]) +- Update mypy to 1.4.0 ([@cdce8p] - [#94987]) +- Bump slixmpp to 1.8.4 ([@centertivevier] - [#94944]) +- Migrate Linn / Openhome integration to SSDP config flow ([@bazwilliams] - [#94564]) +- Remove superclass from GMail Authentication ([@joostlek] - [#95001]) +- Remove superclass from YouTube ([@joostlek] - [#95002]) +- Add current_humidity attribute to mqtt humidifier ([@jbouwh] - [#94955]) +- Reduce overhead to fetch unifiprotect attributes ([@bdraco] - [#94976]) +- Limit cache size of EntityValues ([@bdraco] - [#94983]) +- Migrate esphome button platform to use _on_static_info_update ([@bdraco] - [#95007]) +- Teach homekit about entity registry ids in device triggers ([@emontnemery] - [#95009]) +- Fix race and add test coverage for esphome select platform ([@bdraco] - [#95019]) +- Add TypeVar defaults for DataUpdateCoordinator and EntityComponent ([@cdce8p] - [#95026]) +- Teach vacuum device trigger about entity registry ids ([@emontnemery] - [#94989]) +- Migrate esphome select platform to use _on_static_info_update ([@bdraco] - [#95022]) +- Migrate esphome fan platform to use _on_static_info_update ([@bdraco] - [#95031]) +- Bump Wandalen/wretry.action from 1.0.36 to 1.2.0 (@dependabot - [#95035]) +- Callback esphome EntityInfo by platform instead of all platforms ([@bdraco] - [#95021]) +- Update requests_mock to 1.11.0 ([@frenck] - [#94298]) +- Migrate esphome lock platform to use _on_static_info_update ([@bdraco] - [#95030]) +- Teach sensor device trigger about entity registry ids ([@emontnemery] - [#94988]) +- Small cleanups to esphome sensor and binary_sensor ([@bdraco] - [#95042]) +- Add esphome fan platform tests and remove unreachable code ([@bdraco] - [#95025]) +- Fix use_device_name in case device device class translations are used ([@frenck] - [#95010]) +- Use device class for AirQ entities ([@joostlek] - [#95037]) +- Add entity translations for Acmeda ([@joostlek] - [#94170]) +- Improve mqtt climate turn_on and turn_off service ([@jbouwh] - [#94832]) +- Add persistent_notification.dismiss_all service call ([@Petro31] - [#95004]) +- Make AirNow use device class ([@joostlek] - [#94986]) +- Add entity translations for Aladdin Connect ([@joostlek] - [#95051]) +- Add entity translations to Airthings ([@joostlek] - [#95052]) +- Add entity translations for Abode ([@joostlek] - [#94169]) +- Add entity translations to AirThings BLE ([@joostlek] - [#95061]) +- Fix async_scanner_devices_by_address unexpectedly combining Bluetooth scanners ([@bdraco] - [#94990]) +- Add websocket command to test intent recognition for default agent ([@synesthesiam] - [#94674]) +- Implement Apparent temperature in Weather entity component ([@gjohansson-ST] - [#95070]) +- Add coverage for binary_sensor platform to esphome ([@bdraco] - [#95067]) +- Migrate esphome media_player platform to use _on_static_info_update ([@bdraco] - [#95071]) +- Add climate tests to esphome ([@bdraco] - [#95045]) +- Add esphome sensor tests ([@bdraco] - [#95077]) +- Add basic light tests to esphome ([@bdraco] - [#95029]) +- Add esphome media player tests ([@bdraco] - [#95069]) +- Implement dew point in weather entity component ([@gjohansson-ST] - [#95072]) +- Implement Cloud coverage in Weather entity component ([@gjohansson-ST] - [#95068]) +- Add missing test for Apparent temperature in Weather component ([@gjohansson-ST] - [#95080]) +- Name unnamed numbers by their device class ([@frenck] - [#95083]) +- Name unnamed buttons by their device class ([@frenck] - [#95084]) +- Use snapshot for devolo Home Network diagnostics test ([@Shutgun] - [#94966]) +- Code quality update for EDL21 ([@StephanU] - [#94885]) +- Bump pyemby to 1.9 ([@jbergler] - [#94743]) +- Add the device of the source entity in the helper entities for Riemann sum integral ([@dougiteixeira] - [#94727]) +- Add humidity to weather forecast ([@vingerha] - [#95064]) +- Sentence trigger ([@synesthesiam] - [#94613]) +- Implement Wind Gust speed in Weather entity component ([@gjohansson-ST] - [#95065]) +- Use new attributes in Smhi ([@gjohansson-ST] - [#95096]) +- Fix Smhi name ([@gjohansson-ST] - [#95097]) +- Add test coverage for esphome alarm control panels ([@bdraco] - [#95090]) +- Clean up device class based entity translations in Verisure ([@frenck] - [#95082]) +- Bump Wandalen/wretry.action from 1.2.0 to 1.3.0 (@dependabot - [#95098]) +- Use entity name in Airzone Cloud sensors ([@Noltari] - [#95102]) +- Partial revert "Add TypeVar defaults for DataUpdateCoordinator (#95026)" ([@cdce8p] - [#95101]) +- Add missing apparent temp in forecast ([@gjohansson-ST] - [#95108]) +- Fix ESPHome color temperature precision for light entities ([@danielkent-net] - [#91424]) +- Remove invalid Signal Strength device class from Ondilo ([@frenck] - [#95109]) +- Remove signal strength device class from hunterdouglas_powerview ([@bdraco] - [#95113]) +- Motion blinds improve async_request_position_till_stop ([@starkillerOG] - [#93304]) +- Add Airzone Cloud Binary Sensors support ([@Noltari] - [#93583]) +- Clean up device class based entity translations in Rituals Perfume Genie ([@frenck] - [#95124]) +- Add `volatile_organic_compounds_parts` to device class selector strings for Scrape ([@dougiteixeira] - [#95128]) +- Add return value to conversation.process service ([@balloob] - [#94740]) +- Allow passing in device_id to pipeline run WS API ([@balloob] - [#95139]) +- Add VAD sensitivity option to VoIP devices ([@synesthesiam] - [#94688]) +- Add service response data for listing calendar events ([@allenporter] - [#94759]) +- Add new properties to the weather entity in Accuweather integration ([@bieniu] - [#95110]) +- Clean up device class based entity translations in Elgato ([@frenck] - [#95122]) +- Use device class translations for Airly ([@joostlek] - [#95115]) +- Bump aioesphomeapi to 14.1.1 ([@bdraco] - [#95166]) +- Reduce overhead to set up and write entity state ([@bdraco] - [#95162]) +- Reduce overhead to fire events ([@bdraco] - [#95163]) +- Retry solaredge on socket.gaierror ([@bdraco] - [#95153]) +- Bump sense-energy to 0.12.0 ([@bdraco] - [#95151]) +- Add entity translations to Big Ass Fans ([@joostlek] - [#95136]) +- Remove deprecated non-native number support ([@bdraco] - [#95178]) +- Fix esphome binary sensors when state is missing ([@bdraco] - [#95140]) +- Add test coverage for esphome lock platform ([@bdraco] - [#95023]) +- Relocate esphome entity code into its own module ([@bdraco] - [#95092]) +- Add dual IP stack support to HomeKit ([@bdraco] - [#94126]) +- Add script specific error messages for `response_variable` ([@allenporter] - [#95188]) +- Add entity translations to Deluge ([@joostlek] - [#95184]) +- Use device class translations for Broadlink ([@joostlek] - [#95183]) +- Use device class translations for Coolmaster ([@joostlek] - [#95182]) +- Update KNX frontend - add Group monitor telegram detail view ([@farmio] - [#95144]) +- Cache entity translation lookups and keys ([@bdraco] - [#95180]) +- Cleanup ping ([@gjohansson-ST] - [#95168]) +- Add new attributes to OpenWeatherMap weather entity ([@bieniu] - [#95173]) +- Fix hass_storage not clearing task ([@bdraco] - [#95209]) +- Fix spelling mistake in script.py ([@allenporter] - [#95210]) +- Update xknx to 2.11.0: Add support for Light DPT 9 color temperature ([@farmio] - [#95213]) +- Require newly configured esphome device to allow Home Assistant service calls ([@bdraco] - [#95143]) +- Support notification_id in notify.persistent_notification ([@KevinCathcart] - [#74822]) +- Fix esphome not removing entities when static info changes ([@bdraco] - [#95202]) +- Update mypy to 1.4.1 ([@cdce8p] - [#95220]) +- Use entity registry id in toggle_entity device automations ([@emontnemery] - [#94995]) +- Update aioairzone-cloud to v0.1.9 ([@Noltari] - [#95155]) +- Add additional coverage for ESPHome sensor and number ([@bdraco] - [#95226]) +- Update types packages ([@cdce8p] - [#95222]) +- Move Aurora coordinator to separate file ([@joostlek] - [#95130]) +- Add entity translations for EasyEnergy ([@joostlek] - [#95235]) +- Make deep sleep esphome entities unavailable on unexpected disconnect ([@bdraco] - [#95211]) +- Pass correct parameter when resolving media via WS ([@balloob] - [#90897]) +- Allow rounding two decimal places for Flume usage sensors ([@danlindow] - [#95219]) +- Cosign support ([@pvizeli] - [#95236]) +- Add entity translations to Dremel 3D printer ([@joostlek] - [#95234]) +- Add mqtt image platform ([@jbouwh] - [#94769]) +- Add identify device class to button ([@frenck] - [#95244]) +- Fix control4 light switches on OS 3.3+ ([@nalin29] - [#95196]) +- Stable entity registry id when a deleted entity is restored ([@emontnemery] - [#77710]) +- Add image platform to the template integration ([@emontnemery] - [#94928]) +- Use entity registry id in alarm_control_panel device actions ([@emontnemery] - [#95241]) +- Use new attributes in Met ([@gjohansson-ST] - [#95099]) +- Add the device of the source entity in the helper entities for Threshold ([@dougiteixeira] - [#94753]) +- Add the device of the source entity in the helper entities for Derivative ([@dougiteixeira] - [#94751]) +- Add the device of the source entity in the helper entities for Utility Meter ([@dougiteixeira] - [#94734]) +- Set explicit None for entity name in Overkiz when using device name ([@iMicknl] - [#95238]) +- Use entity registry id in humidifier device conditions ([@emontnemery] - [#95256]) +- Use entity registry id in cover device conditions ([@emontnemery] - [#95253]) +- Use entity registry id in binary_sensor device conditions ([@emontnemery] - [#95251]) +- Code tidyness for Dexcom ([@joostlek] - [#95232]) +- Move Aurora entity to separate file ([@joostlek] - [#95245]) +- Use shorthand attribute for EAFM ([@joostlek] - [#95233]) +- Use entity registry id in alarm_control_panel device conditions ([@emontnemery] - [#95250]) +- Add entity translations to Blink ([@joostlek] - [#95138]) +- Remove stale dep from google translate ([@MartinHjelmare] - [#95247]) +- Add service response values to service descriptions ([@balloob] - [#95262]) +- Add entity translations to BMW Connected Drive ([@joostlek] - [#95142]) +- Remove unused ConfigEntry from Airzone Cloud entities ([@Noltari] - [#95103]) +- Add entity translations to dormakaba ([@joostlek] - [#95230]) +- Update build system ([@cdce8p] - [#95237]) +- Improve exception handling for BMW remote services ([@rikroe] - [#92199]) +- Mark Plugwise Illuminance sensor as diagnostic ([@frenck] - [#95240]) +- Use entity registry id in climate device conditions ([@emontnemery] - [#95252]) +- Use entity registry id in device_tracker device conditions ([@emontnemery] - [#95254]) +- Use entity registry id in fan device conditions ([@emontnemery] - [#95255]) +- Use entity registry id in lock device conditions ([@emontnemery] - [#95257]) +- Use entity registry id in media_player device conditions ([@emontnemery] - [#95258]) +- Use entity registry id in select device conditions ([@emontnemery] - [#95259]) +- Use entity registry id in vacuum device conditions ([@emontnemery] - [#95261]) +- Use entity registry id in sensor device conditions ([@emontnemery] - [#95260]) +- Add optional limits to compensation sensors ([@Petro31] - [#85886]) +- Reolink ONVIF long polling ([@starkillerOG] - [#94770]) +- Keep esphome update entity available when disconnected is expected ([@bdraco] - [#95278]) +- Use entity registry id in button device actions ([@emontnemery] - [#95267]) +- Add entity translations to Environment Canada ([@joostlek] - [#95295]) +- Rename HomeKit Controller to HomeKit Device ([@balloob] - [#95286]) +- Use entity registry id in light device actions ([@emontnemery] - [#95271]) +- Add entity translations to edl21 ([@joostlek] - [#95289]) +- Use entity registry id in select device actions ([@emontnemery] - [#95274]) +- Tweak Dremel 3D Printer sensors ([@tkdrob] - [#94552]) +- Add VAD sensitivity to ESPHome ([@synesthesiam] - [#95283]) +- Migrate esphome alarm_control_panel platform to use _on_static_info_update ([@bdraco] - [#94961]) +- Add entity translations to filesize ([@joostlek] - [#95299]) +- Use entity registry id in humidifier device actions ([@emontnemery] - [#95270]) +- Use entity registry id in lock device actions ([@emontnemery] - [#95272]) +- Add entity translations to ecobee ([@joostlek] - [#95281]) +- Add entity translations to Energyzero ([@joostlek] - [#95293]) +- Use entity registry id in vacuum device actions ([@emontnemery] - [#95275]) +- Clean up Awair const ([@joostlek] - [#95135]) +- Add backport of cached_property from CPython 3.12 ([@emontnemery] - [#95292]) +- Add entity translations to Eufylife BLE ([@joostlek] - [#95296]) +- Check end stage as well when preparing pipeline ([@synesthesiam] - [#95303]) +- Use DeviceInfo type for Aurora ABB PowerOne ([@joostlek] - [#95133]) +- Add entity translation to Aussie broadband ([@joostlek] - [#95134]) +- Add test coverage for ESPHome switch platform ([@bdraco] - [#95306]) +- Improve type annotations of cached_property backport ([@emontnemery] - [#95309]) +- Use cached_property in entity.py instead of manual cache ([@bdraco] - [#95307]) +- Change conversation default agent behavior ([@balloob] - [#95225]) +- Fix ESPHome button not getting device updates ([@bdraco] - [#95311]) +- Use entity registry id in cover device actions ([@emontnemery] - [#95269]) +- Use entity registry id in number device actions ([@emontnemery] - [#95273]) +- Use entity registry id in water_heater device actions ([@emontnemery] - [#95276]) +- Allow stopping a script with a response value ([@balloob] - [#95284]) +- Add tests for ESPHome cover platform ([@bdraco] - [#95321]) +- Add entity translations to Awair ([@joostlek] - [#95308]) +- Change the device class name `volatile organic compounds parts` to `VOCs ratio` ([@dougiteixeira] - [#95126]) +- Add image url support ([@jbouwh] - [#95301]) +- Add entity translations to Aurora ABB PowerOne ([@joostlek] - [#95132]) +- Add entity translations to Radarr ([@tkdrob] - [#95317]) +- Use entity registry id in climate device actions ([@emontnemery] - [#95268]) +- Fix Cosign Image build ([@pvizeli] - [#95328]) +- Add entity translations to Litterrobot ([@tkdrob] - [#95316]) +- Make Dexcom use shorthand attributes ([@joostlek] - [#95231]) +- Add entity translations to Lidarr ([@tkdrob] - [#95313]) +- Add entity translations to Google Mail ([@tkdrob] - [#95312]) +- Bump sigstore/cosign-installer from 3.0.5 to 3.1.0 (@dependabot - [#95327]) +- Add entity translations to Efergy ([@joostlek] - [#95291]) +- Using builder 2023.06.1 ([@pvizeli] - [#95333]) +- Add new attributes into Template Weather ([@gjohansson-ST] - [#95100]) +- Move FiveM coordinator to separate file ([@joostlek] - [#95339]) +- Add validation of content_type to image entity ([@jbouwh] - [#95248]) +- Add state attribute translations to Switchbot ([@Nardol] - [#90861]) +- Use Python 3.11 in translations and builder workflows ([@frenck] - [#95335]) +- Clean up wheels building, removing cp310 abi ([@frenck] - [#95334]) +- Adjust image entity URL support ([@emontnemery] - [#95330]) +- Adjust the analytics collector to only report configured integrations ([@ludeeus] - [#95246]) +- Revert "Change the device class name `volatile organic compounds parts` to `VOCs ratio`" ([@emontnemery] - [#95332]) +- Clean up device class based entity translations in Community.Sensors ([@frenck] - [#95011]) +- Add entity translations to Fjaraskupan ([@joostlek] - [#95341]) +- Add url support for mqtt image platform ([@jbouwh] - [#95249]) +- Bump python-opensky to 0.0.10 ([@joostlek] - [#94335]) +- Onboard Google Translate ([@MartinHjelmare] - [#95352]) +- Move FiveM entity class to separate file ([@joostlek] - [#95348]) +- Clean up forecast_solar const file ([@joostlek] - [#95356]) +- Add entity translations to Flipr ([@joostlek] - [#95344]) +- Address late review comments on image entity URL support ([@emontnemery] - [#95338]) +- Verify that the MAC address that Fully Kiosk reported is usable ([@haimgel] - [#94887]) +- Improve MQTT image tests ([@emontnemery] - [#95359]) +- Use device class translations for Fritzbox ([@joostlek] - [#95363]) +- Use identify device class in HomeWizard identify button entity ([@frenck] - [#95369]) +- Updated pyopnsense to support a 20 second timeout ([@dylanowen] - [#95314]) +- Base entity ids on English for languages not using Latin script ([@emontnemery] - [#91357]) +- Add entity translations to Flick electric ([@joostlek] - [#95345]) +- Remove senseme integration ([@bdraco] - [#94363]) +- Use identify device class in LIFX identify button entity ([@frenck] - [#95372]) +- Improve content type handling in ImageEntity ([@emontnemery] - [#95365]) +- Bump hass-nabucassa to 0.69.0 ([@emontnemery] - [#95367]) +- Add Risk of Fire sensor to IPMA ([@dgomes] - [#80295]) +- Add editable install back [ci] ([@cdce8p] - [#95379]) +- Add entity translations to Flux led ([@joostlek] - [#95355]) +- Allow returning a script variable from a script ([@emontnemery] - [#95346]) +- Some small fixes for the Matter light platform ([@marcelveldt] - [#95343]) +- Bump pyatv to 0.13.2 ([@bdraco] - [#95388]) +- Add entity translations to Fully Kiosk ([@joostlek] - [#95368]) +- Use identify device class in ZHA identify button entity ([@frenck] - [#95373]) +- Add config_flow to QNAP ([@disforw] - [#80450]) +- Move overlapping pylint rules to ruff, disable mypy overlap ([@frenck] - [#94359]) +- Add button platform to Dremel 3D printer ([@tkdrob] - [#94517]) +- Add contents to connection_info handler in cloud client ([@ludeeus] - [#95059]) +- Move freedompro coordinator to separate file ([@joostlek] - [#95360]) +- Fix machine build templates ([@pvizeli] - [#95393]) +- Set automations which fail validation unavailable ([@emontnemery] - [#94856]) +- Set scripts which fail validation unavailable ([@emontnemery] - [#95381]) +- Use entity registry id in kodi device triggers ([@emontnemery] - [#95392]) +- Use entity registry id in arcam_fmj device triggers ([@emontnemery] - [#95391]) +- Add more coverage for ESPHome lights ([@bdraco] - [#95384]) +- Support importing Blueprints from the Home Assistant websites ([@frenck] - [#95340]) +- Add entity translations to FiveM ([@joostlek] - [#95370]) +- Refactor template image ([@emontnemery] - [#95353]) +- Use device class translations for Fritz ([@joostlek] - [#95362]) +- Use shorthand attributes for freedompro ([@joostlek] - [#95358]) +- Add entity translations to Flume ([@joostlek] - [#95350]) +- Add entity translations to FireServiceRota ([@joostlek] - [#95337]) +- Tag Aranet diagnostic entities appropriately ([@aschmitz] - [#95218]) +- Make `unique_id` of the Shelly button entity immutable ([@bieniu] - [#95160]) +- Use total increasing for ecowitt precipitation and lightning count ([@piitaya] - [#90099]) +- Add test to stop action ([@balloob] - [#95376]) +- Add entity translations to Geocaching ([@joostlek] - [#95396]) +- Teach validate_config to validate lists of conditions ([@emontnemery] - [#95380]) +- Distinguish multiple raise lower buttons on one Lutron keypad ([@mikeknoop] - [#92380]) +- Re-add "deactivate air conditioning" button to bmw_connected_drive ([@rikroe] - [#94765]) +- Remove current humidity humidifier device trigger ([@emontnemery] - [#95394]) +- Use identify device class in Elgato identify button entity ([@frenck] - [#95361]) +- Show all YouTube subscriptions in config flow ([@joostlek] - [#94287]) +- Add wemo options enable_subscription & enable_long_press ([@esev] - [#56972]) +- Improve climate turn_on service ([@frenck] - [#94645]) +- Use entity registry id in text device actions ([@emontnemery] - [#95398]) +- Bump pyoverkiz to 1.9.0 ([@iMicknl] - [#95400]) +- Fix sending a (default) pincode to Matter Lock operations ([@marcelveldt] - [#95402]) +- Fix keyboard_remote device_descriptor when using symbolic links ([@lanrat] - [#94744]) +- Add entity translations to Github ([@joostlek] - [#95404]) +- Improve the source labels for MusicCast players ([@micha91] - [#74954]) +- Add set_config service to Fully Kiosk Browser integration ([@cgarwood] - [#95318]) +- Set webhook local_only deprecation to 2023.11.0 ([@esev] - [#95401]) +- Add entity translations to Gios ([@joostlek] - [#95403]) +- Change subscription logic for Matter devices ([@marcelveldt] - [#95387]) +- Allow turning Airzone slave zones on with any HVAC mode ([@Noltari] - [#94721]) +- Simplify parsing of user input during config flow for generic ([@davet2001] - [#86256]) +- Add buttons for resetting vacuum consumable status in xiaomi_miio ([@zry98] - [#91483]) +- Add entity translations to Guardian ([@joostlek] - [#95411]) +- Add time entity for sleep mode start time to Litter-Robot 3 ([@natekspencer] - [#94194]) +- Add updated ISY994/IoX Units of Measurement ([@shbatm] - [#95408]) +- Add entity translations to HERE Travel time ([@joostlek] - [#95412]) +- Add Guest WiFi QR-Code image entity to AVM Fritz!Tools ([@mib1185] - [#95282]) +- Add entity translations to Flo ([@joostlek] - [#95347]) +- Add more test coverage for ESPHome lights ([@bdraco] - [#95415]) +- Add AirQuality SensorState support for Google Assistant ([@donholly] - [#80579]) +- Add reolink channel based record, push, email, ftp, and buzzer switches ([@starkillerOG] - [#91006]) +- Add preset support to electrasmart climate ([@rubeecube] - [#94068]) +- Fix ness_alarm tasks being fired before required sensors and panel are loaded asynchronously ([@hcross13] - [#94590]) +- Add support for HmIP-BS2 to HomematicIP Cloud ([@aschobba] - [#93599]) +- Bump sigstore/cosign-installer from 3.1.0 to 3.1.1 (@dependabot - [#95427]) +- Add new integration Loqed ([@cpolhout] - [#70080]) +- Do not allow zerovalue as total_increasing for homewizard sensors ([@jbouwh] - [#90982]) +- Remove unneded construct import for Eddystone ([@Lash-L] - [#95418]) +- Move Fjaraskupan coordinator to separate file ([@joostlek] - [#95342]) +- Fix invalid unique id for Transmission entities ([@avee87] - [#84664]) +- Capitalize a bunch of translations ([@balloob] - [#95421]) +- Update aioairzone-cloud to v0.2.0 ([@Noltari] - [#95429]) +- Add comment for assumed trigger_type ([@jbouwh] - [#95432]) +- Update Telegram bot to support URLs in inlineKeyboard ([@maximoei] - [#70445]) +- Replace NINA corona filter with regex ([@DeerMaximum] - [#83181]) +- Add current_humidity device_trigger for humidity component ([@jbouwh] - [#95435]) +- Fix test with time issue for xiaomi_miio button ([@jbouwh] - [#95438]) +- Add `action` attribute to Humidifier entity ([@Shulyaka] - [#95131]) +- Bump glances-api to 0.4.3 ([@freeDom-] - [#95431]) +- Expose host in ubus device tracker ([@chrisjohnson1988] - [#80621]) +- Extend Reolink update entity ([@starkillerOG] - [#94323]) +- Decouple Hyperion entitites and clear source when light is off ([@Sab44] - [#80478]) +- Add entity translations to honeywell ([@joostlek] - [#95440]) +- Add entity translations to HVV Departures ([@joostlek] - [#95442]) +- Migrate Transmission to new entity naming ([@avee87] - [#95436]) +- Add entity translations for homewizard ([@joostlek] - [#95416]) +- Add action topic to MQTT humidifier ([@jbouwh] - [#95212]) +- Fix a couple of typos ([@emontnemery] - [#95441]) +- Add time platform to KNX ([@farmio] - [#95302]) +- Fix error for stt when async_get_engine is not implemented ([@jbouwh] - [#95443]) +- Add entity translations to Growatt Server ([@joostlek] - [#95410]) +- Apply suggestion from late review of #95282 ([@mib1185] - [#95437]) +- Add `active_child_template` to universal media player ([@Drafteed] - [#88816]) +- Disable sun.sun no platform log ([@MartinHjelmare] - [#95450]) +- Update frontend to 20230628.0 ([@bramkragten] - [#95458]) +- Remove mutable object from hvv sensor ([@joostlek] - [#95454]) +- Make smartthings use the right unit of measurement for illuminance sensors ([@joostlek] - [#95456]) +- Use "Done" as a default response for sentence triggers ([@synesthesiam] - [#95463]) +- Fix setting number of digits for verisure lock PIN ([@Olen] - [#95449]) +- Add entity translations to iBeacon ([@joostlek] - [#95460]) +- Bump home-assistant-intents to 2023.6.28 ([@synesthesiam] - [#95451]) +- Fix qr code data update in AVM Fritz!Tools ([@mib1185] - [#95470]) +- Improve Obihai Connection Stability ([@ejpenney] - [#94406]) +- Remove polling_interval_seconds option from wemo ([@esev] - [#95468]) +- Migrate esphome climate platform to use _on_static_info_update ([@bdraco] - [#95471]) +- Add Update Entity for Linn devices ([@bazwilliams] - [#95217]) +- Disconnect VoIP on RTCP bye message ([@synesthesiam] - [#95452]) +- Add conversation agent selector, use in `conversation.process` service ([@bramkragten] - [#95462]) +- Fix Matter entity names ([@marcelveldt] - [#95477]) +- Bump ZHA dependencies ([@puddly] - [#95478]) +- Add targeted entities to sentence debug API ([@synesthesiam] - [#95480]) +- Update matter locks to support pin code validation ([@evanjarrett] - [#95481]) +- Remove incompatible button entities for Mazda electric vehicles ([@bdr99] - [#95486]) +- Add reload service to KNX ([@farmio] - [#95489]) +- Fix YouTube coordinator bug ([@joostlek] - [#95492]) +- Fix binary sensor device trigger for lock class ([@raman325] - [#95505]) +- Limit fields returned for the list events service ([@allenporter] - [#95506]) +- Add explicit device name to Spotify ([@joostlek] - [#95509]) +- Add explicit device name to Tuya ([@joostlek] - [#95511]) +- Add explicit device name to Switchbot ([@joostlek] - [#95512]) +- Add explicit device name to Roborock ([@joostlek] - [#95513]) +- Add explicit device name to Broadlink ([@joostlek] - [#95516]) +- Bump Matter Server to 3.6.3 ([@marcelveldt] - [#95519]) +- Mark text input required for conversation.process service ([@frenck] - [#95520]) +- Revert "Remove Brottsplatskartan YAML configuration (#94101)" ([@frenck] - [#95521]) +- Revert "Remove qbittorrent YAML configuration (#93548)" ([@frenck] - [#95522]) +- Revert "Remove snapcast YAML configuration (#93547)" ([@frenck] - [#95523]) +- Revert "Remove Workday YAML configuration (#94102)" ([@frenck] - [#95524]) +- Bump breaking version for YAML features ADR-0021 ([@frenck] - [#95525]) +- Use explicit naming in workday sensor ([@joostlek] - [#95531]) +- Use explicit naming in Nest ([@joostlek] - [#95532]) +- Fix manual specification of multiple advertise_ip with HomeKit ([@bdraco] - [#95548]) +- Bump Roborock to 0.29.2 ([@Lash-L] - [#95549]) +- Philips.js explicit device naming ([@joostlek] - [#95551]) +- Fix some entity naming ([@balloob] - [#95562]) +- Fix Android TV Remote entity naming ([@Drafteed] - [#95568]) +- Update frontend to 20230629.0 ([@bramkragten] - [#95570]) +- Fix entity name for iBeacon and Roku ([@balloob] - [#95574]) +- Ezviz IR string align with depreciation. ([@RenierM26] - [#95563]) +- Bump bluetooth-data-tools to 1.3.0 ([@bdraco] - [#95576]) +- Fix device source for Utility Meter ([@dougiteixeira] - [#95585]) +- Wiz set name explicitely to None ([@balloob] - [#95593]) +- Fix ZHA multi-PAN startup issue ([@puddly] - [#95595]) +- Google Assistant SDK: Always enable conversation agent and support multiple languages ([@tronikos] - [#93201]) +- Bump google-generativeai to 0.1.0 ([@tronikos] - [#95515]) +- Use explicit naming in Sensibo climate entity ([@RobertD502] - [#95591]) +- Handle DNSError during radio browser setup ([@bdraco] - [#95597]) +- Fix Diagnostics in Advantage Air ([@Bre77] - [#95608]) +- Explicity use device name in Advantage Air ([@Bre77] - [#95611]) +- Fix explicit device naming for integrations a-j ([@joostlek] - [#95619]) +- Fix explicit device naming for integrations m-r ([@joostlek] - [#95620]) +- Fix device source for Derivative ([@dougiteixeira] - [#95621]) +- Fix device source for Riemann sum integral ([@dougiteixeira] - [#95622]) +- Fix device source for Threshold ([@dougiteixeira] - [#95623]) +- Fix device source for Utility Meter select ([@dougiteixeira] - [#95624]) +- Bump aioesphomeapi to 15.0.1 ([@bdraco] - [#95629]) +- Update services.yaml ([@Mariusthvdb] - [#95630]) +- Update frontend to 20230630.0 ([@bramkragten] - [#95635]) +- Fix ZHA startup issue with older Silicon Labs firmwares ([@puddly] - [#95642]) +- Fix missing EntityDescription names in Overkiz ([@iMicknl] - [#95583]) +- Fix source device when source entity is changed for Utility Meter ([@dougiteixeira] - [#95636]) +- Add bmw connected drive region-specific scan interval ([@rikroe] - [#95649]) +- Upgrade pymazda to 0.3.9 ([@bdr99] - [#95655]) +- Handle missing or incorrect device name and unique id for ESPHome during manual add ([@bdraco] - [#95678]) +- Fix implicit device name for SimpliSafe locks ([@bachya] - [#95681]) +- Fix Shelly button `unique_id` migration ([@bieniu] - [#95707]) +- Bump zeroconf to 0.70.0 ([@bdraco] - [#95714]) +- Bump python-kasa to 0.5.2 ([@bdraco] - [#95716]) +- Handle invalid utf-8 from the ESPHome dashboard ([@bdraco] - [#95743]) +- Add Matter Climate support ([@hidaris] - [#95434]) +- Bump env_canada to v0.5.35 ([@michaeldavie] - [#95497]) +- Ensure trigger sentences do not contain punctuation ([@synesthesiam] - [#95633]) +- Bump bimmer_connected to 0.13.8 ([@rikroe] - [#95660]) +- Quality improvement on LOQED integration ([@mikewoudenberg] - [#95725]) +- Bump aioslimproto to 2.3.2 ([@marcelveldt] - [#95754]) +- Fix translation growatt inverter temperature ([@jbouwh] - [#95775]) +- Fix datetime parameter validation for list events ([@piitaya] - [#95778]) +- Fix implicit use of device name in TwenteMilieu ([@frenck] - [#95780]) +- Fix implicit use of device name in Verisure ([@frenck] - [#95781]) +- Fix execute device actions with WS execute_script ([@emontnemery] - [#95783]) +- Fix Growatt translation key ([@joostlek] - [#95784]) +- Update frontend to 20230703.0 ([@bramkragten] - [#95795]) +- Ensure that calendar output values are json types ([@allenporter] - [#95797]) +- Fix timezones used in list events ([@allenporter] - [#95804]) +- Bump aiounifi to v49 ([@Kane610] - [#95813]) +- Reolink fix missing title_placeholders ([@starkillerOG] - [#95827]) +- Disable proximity no platform log ([@MartinHjelmare] - [#95838]) +- Disable legacy device tracker no platform log ([@MartinHjelmare] - [#95839]) +- Revert "Remove airplay filter now that apple tv supports airplay 2" ([@frenck] - [#95843]) +- Remove unsupported services and fields from fan/services.yaml ([@emontnemery] - [#95858]) +- Fix reload in cert_expiry ([@bdraco] - [#95867]) +- Fix ESPHome alarm_control_panel when state is missing ([@bdraco] - [#95871]) +- Bump zamg to 0.2.4 ([@killer0071234] - [#95874]) +- Bump pydelijn to 1.1.0 ([@Emilv2] - [#95878]) +- Update frontend to 20230705.0 ([@bramkragten] - [#95890]) + +[#54280]: https://github.com/home-assistant/core/pull/54280 +[#56374]: https://github.com/home-assistant/core/pull/56374 +[#56972]: https://github.com/home-assistant/core/pull/56972 +[#60977]: https://github.com/home-assistant/core/pull/60977 +[#70080]: https://github.com/home-assistant/core/pull/70080 +[#70445]: https://github.com/home-assistant/core/pull/70445 +[#74719]: https://github.com/home-assistant/core/pull/74719 +[#74822]: https://github.com/home-assistant/core/pull/74822 +[#74954]: https://github.com/home-assistant/core/pull/74954 +[#77710]: https://github.com/home-assistant/core/pull/77710 +[#80295]: https://github.com/home-assistant/core/pull/80295 +[#80450]: https://github.com/home-assistant/core/pull/80450 +[#80478]: https://github.com/home-assistant/core/pull/80478 +[#80579]: https://github.com/home-assistant/core/pull/80579 +[#80621]: https://github.com/home-assistant/core/pull/80621 +[#80781]: https://github.com/home-assistant/core/pull/80781 +[#83181]: https://github.com/home-assistant/core/pull/83181 +[#84149]: https://github.com/home-assistant/core/pull/84149 +[#84664]: https://github.com/home-assistant/core/pull/84664 +[#85886]: https://github.com/home-assistant/core/pull/85886 +[#85969]: https://github.com/home-assistant/core/pull/85969 +[#86256]: https://github.com/home-assistant/core/pull/86256 +[#87081]: https://github.com/home-assistant/core/pull/87081 +[#88321]: https://github.com/home-assistant/core/pull/88321 +[#88706]: https://github.com/home-assistant/core/pull/88706 +[#88816]: https://github.com/home-assistant/core/pull/88816 +[#90099]: https://github.com/home-assistant/core/pull/90099 +[#90564]: https://github.com/home-assistant/core/pull/90564 +[#90861]: https://github.com/home-assistant/core/pull/90861 +[#90897]: https://github.com/home-assistant/core/pull/90897 +[#90982]: https://github.com/home-assistant/core/pull/90982 +[#91006]: https://github.com/home-assistant/core/pull/91006 +[#91167]: https://github.com/home-assistant/core/pull/91167 +[#91357]: https://github.com/home-assistant/core/pull/91357 +[#91424]: https://github.com/home-assistant/core/pull/91424 +[#91483]: https://github.com/home-assistant/core/pull/91483 +[#91997]: https://github.com/home-assistant/core/pull/91997 +[#92199]: https://github.com/home-assistant/core/pull/92199 +[#92357]: https://github.com/home-assistant/core/pull/92357 +[#92371]: https://github.com/home-assistant/core/pull/92371 +[#92380]: https://github.com/home-assistant/core/pull/92380 +[#92940]: https://github.com/home-assistant/core/pull/92940 +[#93024]: https://github.com/home-assistant/core/pull/93024 +[#93200]: https://github.com/home-assistant/core/pull/93200 +[#93201]: https://github.com/home-assistant/core/pull/93201 +[#93304]: https://github.com/home-assistant/core/pull/93304 +[#93404]: https://github.com/home-assistant/core/pull/93404 +[#93531]: https://github.com/home-assistant/core/pull/93531 +[#93547]: https://github.com/home-assistant/core/pull/93547 +[#93548]: https://github.com/home-assistant/core/pull/93548 +[#93583]: https://github.com/home-assistant/core/pull/93583 +[#93587]: https://github.com/home-assistant/core/pull/93587 +[#93599]: https://github.com/home-assistant/core/pull/93599 +[#93615]: https://github.com/home-assistant/core/pull/93615 +[#93644]: https://github.com/home-assistant/core/pull/93644 +[#93661]: https://github.com/home-assistant/core/pull/93661 +[#93710]: https://github.com/home-assistant/core/pull/93710 +[#93803]: https://github.com/home-assistant/core/pull/93803 +[#93854]: https://github.com/home-assistant/core/pull/93854 +[#93867]: https://github.com/home-assistant/core/pull/93867 +[#93869]: https://github.com/home-assistant/core/pull/93869 +[#93872]: https://github.com/home-assistant/core/pull/93872 +[#93874]: https://github.com/home-assistant/core/pull/93874 +[#93881]: https://github.com/home-assistant/core/pull/93881 +[#93882]: https://github.com/home-assistant/core/pull/93882 +[#93883]: https://github.com/home-assistant/core/pull/93883 +[#93892]: https://github.com/home-assistant/core/pull/93892 +[#93893]: https://github.com/home-assistant/core/pull/93893 +[#93894]: https://github.com/home-assistant/core/pull/93894 +[#93895]: https://github.com/home-assistant/core/pull/93895 +[#93899]: https://github.com/home-assistant/core/pull/93899 +[#93900]: https://github.com/home-assistant/core/pull/93900 +[#93901]: https://github.com/home-assistant/core/pull/93901 +[#93902]: https://github.com/home-assistant/core/pull/93902 +[#93903]: https://github.com/home-assistant/core/pull/93903 +[#93908]: https://github.com/home-assistant/core/pull/93908 +[#93910]: https://github.com/home-assistant/core/pull/93910 +[#93911]: https://github.com/home-assistant/core/pull/93911 +[#93912]: https://github.com/home-assistant/core/pull/93912 +[#93913]: https://github.com/home-assistant/core/pull/93913 +[#93915]: https://github.com/home-assistant/core/pull/93915 +[#93917]: https://github.com/home-assistant/core/pull/93917 +[#93918]: https://github.com/home-assistant/core/pull/93918 +[#93920]: https://github.com/home-assistant/core/pull/93920 +[#93926]: https://github.com/home-assistant/core/pull/93926 +[#93933]: https://github.com/home-assistant/core/pull/93933 +[#93951]: https://github.com/home-assistant/core/pull/93951 +[#93952]: https://github.com/home-assistant/core/pull/93952 +[#93953]: https://github.com/home-assistant/core/pull/93953 +[#93954]: https://github.com/home-assistant/core/pull/93954 +[#93965]: https://github.com/home-assistant/core/pull/93965 +[#93971]: https://github.com/home-assistant/core/pull/93971 +[#93983]: https://github.com/home-assistant/core/pull/93983 +[#93989]: https://github.com/home-assistant/core/pull/93989 +[#93990]: https://github.com/home-assistant/core/pull/93990 +[#93995]: https://github.com/home-assistant/core/pull/93995 +[#93997]: https://github.com/home-assistant/core/pull/93997 +[#93999]: https://github.com/home-assistant/core/pull/93999 +[#94000]: https://github.com/home-assistant/core/pull/94000 +[#94033]: https://github.com/home-assistant/core/pull/94033 +[#94034]: https://github.com/home-assistant/core/pull/94034 +[#94049]: https://github.com/home-assistant/core/pull/94049 +[#94050]: https://github.com/home-assistant/core/pull/94050 +[#94053]: https://github.com/home-assistant/core/pull/94053 +[#94060]: https://github.com/home-assistant/core/pull/94060 +[#94068]: https://github.com/home-assistant/core/pull/94068 +[#94071]: https://github.com/home-assistant/core/pull/94071 +[#94072]: https://github.com/home-assistant/core/pull/94072 +[#94078]: https://github.com/home-assistant/core/pull/94078 +[#94084]: https://github.com/home-assistant/core/pull/94084 +[#94090]: https://github.com/home-assistant/core/pull/94090 +[#94091]: https://github.com/home-assistant/core/pull/94091 +[#94092]: https://github.com/home-assistant/core/pull/94092 +[#94094]: https://github.com/home-assistant/core/pull/94094 +[#94101]: https://github.com/home-assistant/core/pull/94101 +[#94102]: https://github.com/home-assistant/core/pull/94102 +[#94103]: https://github.com/home-assistant/core/pull/94103 +[#94104]: https://github.com/home-assistant/core/pull/94104 +[#94105]: https://github.com/home-assistant/core/pull/94105 +[#94106]: https://github.com/home-assistant/core/pull/94106 +[#94109]: https://github.com/home-assistant/core/pull/94109 +[#94110]: https://github.com/home-assistant/core/pull/94110 +[#94116]: https://github.com/home-assistant/core/pull/94116 +[#94117]: https://github.com/home-assistant/core/pull/94117 +[#94126]: https://github.com/home-assistant/core/pull/94126 +[#94131]: https://github.com/home-assistant/core/pull/94131 +[#94138]: https://github.com/home-assistant/core/pull/94138 +[#94143]: https://github.com/home-assistant/core/pull/94143 +[#94144]: https://github.com/home-assistant/core/pull/94144 +[#94145]: https://github.com/home-assistant/core/pull/94145 +[#94162]: https://github.com/home-assistant/core/pull/94162 +[#94165]: https://github.com/home-assistant/core/pull/94165 +[#94166]: https://github.com/home-assistant/core/pull/94166 +[#94169]: https://github.com/home-assistant/core/pull/94169 +[#94170]: https://github.com/home-assistant/core/pull/94170 +[#94171]: https://github.com/home-assistant/core/pull/94171 +[#94175]: https://github.com/home-assistant/core/pull/94175 +[#94178]: https://github.com/home-assistant/core/pull/94178 +[#94194]: https://github.com/home-assistant/core/pull/94194 +[#94200]: https://github.com/home-assistant/core/pull/94200 +[#94221]: https://github.com/home-assistant/core/pull/94221 +[#94259]: https://github.com/home-assistant/core/pull/94259 +[#94262]: https://github.com/home-assistant/core/pull/94262 +[#94266]: https://github.com/home-assistant/core/pull/94266 +[#94268]: https://github.com/home-assistant/core/pull/94268 +[#94275]: https://github.com/home-assistant/core/pull/94275 +[#94276]: https://github.com/home-assistant/core/pull/94276 +[#94278]: https://github.com/home-assistant/core/pull/94278 +[#94279]: https://github.com/home-assistant/core/pull/94279 +[#94280]: https://github.com/home-assistant/core/pull/94280 +[#94281]: https://github.com/home-assistant/core/pull/94281 +[#94282]: https://github.com/home-assistant/core/pull/94282 +[#94287]: https://github.com/home-assistant/core/pull/94287 +[#94290]: https://github.com/home-assistant/core/pull/94290 +[#94298]: https://github.com/home-assistant/core/pull/94298 +[#94302]: https://github.com/home-assistant/core/pull/94302 +[#94321]: https://github.com/home-assistant/core/pull/94321 +[#94322]: https://github.com/home-assistant/core/pull/94322 +[#94323]: https://github.com/home-assistant/core/pull/94323 +[#94330]: https://github.com/home-assistant/core/pull/94330 +[#94335]: https://github.com/home-assistant/core/pull/94335 +[#94338]: https://github.com/home-assistant/core/pull/94338 +[#94339]: https://github.com/home-assistant/core/pull/94339 +[#94352]: https://github.com/home-assistant/core/pull/94352 +[#94359]: https://github.com/home-assistant/core/pull/94359 +[#94362]: https://github.com/home-assistant/core/pull/94362 +[#94363]: https://github.com/home-assistant/core/pull/94363 +[#94373]: https://github.com/home-assistant/core/pull/94373 +[#94374]: https://github.com/home-assistant/core/pull/94374 +[#94390]: https://github.com/home-assistant/core/pull/94390 +[#94398]: https://github.com/home-assistant/core/pull/94398 +[#94399]: https://github.com/home-assistant/core/pull/94399 +[#94401]: https://github.com/home-assistant/core/pull/94401 +[#94403]: https://github.com/home-assistant/core/pull/94403 +[#94406]: https://github.com/home-assistant/core/pull/94406 +[#94413]: https://github.com/home-assistant/core/pull/94413 +[#94429]: https://github.com/home-assistant/core/pull/94429 +[#94452]: https://github.com/home-assistant/core/pull/94452 +[#94453]: https://github.com/home-assistant/core/pull/94453 +[#94465]: https://github.com/home-assistant/core/pull/94465 +[#94468]: https://github.com/home-assistant/core/pull/94468 +[#94474]: https://github.com/home-assistant/core/pull/94474 +[#94476]: https://github.com/home-assistant/core/pull/94476 +[#94482]: https://github.com/home-assistant/core/pull/94482 +[#94483]: https://github.com/home-assistant/core/pull/94483 +[#94487]: https://github.com/home-assistant/core/pull/94487 +[#94491]: https://github.com/home-assistant/core/pull/94491 +[#94493]: https://github.com/home-assistant/core/pull/94493 +[#94511]: https://github.com/home-assistant/core/pull/94511 +[#94512]: https://github.com/home-assistant/core/pull/94512 +[#94513]: https://github.com/home-assistant/core/pull/94513 +[#94514]: https://github.com/home-assistant/core/pull/94514 +[#94515]: https://github.com/home-assistant/core/pull/94515 +[#94516]: https://github.com/home-assistant/core/pull/94516 +[#94517]: https://github.com/home-assistant/core/pull/94517 +[#94523]: https://github.com/home-assistant/core/pull/94523 +[#94540]: https://github.com/home-assistant/core/pull/94540 +[#94545]: https://github.com/home-assistant/core/pull/94545 +[#94552]: https://github.com/home-assistant/core/pull/94552 +[#94564]: https://github.com/home-assistant/core/pull/94564 +[#94568]: https://github.com/home-assistant/core/pull/94568 +[#94574]: https://github.com/home-assistant/core/pull/94574 +[#94582]: https://github.com/home-assistant/core/pull/94582 +[#94585]: https://github.com/home-assistant/core/pull/94585 +[#94586]: https://github.com/home-assistant/core/pull/94586 +[#94588]: https://github.com/home-assistant/core/pull/94588 +[#94590]: https://github.com/home-assistant/core/pull/94590 +[#94594]: https://github.com/home-assistant/core/pull/94594 +[#94601]: https://github.com/home-assistant/core/pull/94601 +[#94602]: https://github.com/home-assistant/core/pull/94602 +[#94603]: https://github.com/home-assistant/core/pull/94603 +[#94604]: https://github.com/home-assistant/core/pull/94604 +[#94605]: https://github.com/home-assistant/core/pull/94605 +[#94606]: https://github.com/home-assistant/core/pull/94606 +[#94607]: https://github.com/home-assistant/core/pull/94607 +[#94608]: https://github.com/home-assistant/core/pull/94608 +[#94610]: https://github.com/home-assistant/core/pull/94610 +[#94611]: https://github.com/home-assistant/core/pull/94611 +[#94613]: https://github.com/home-assistant/core/pull/94613 +[#94615]: https://github.com/home-assistant/core/pull/94615 +[#94625]: https://github.com/home-assistant/core/pull/94625 +[#94630]: https://github.com/home-assistant/core/pull/94630 +[#94631]: https://github.com/home-assistant/core/pull/94631 +[#94632]: https://github.com/home-assistant/core/pull/94632 +[#94633]: https://github.com/home-assistant/core/pull/94633 +[#94634]: https://github.com/home-assistant/core/pull/94634 +[#94636]: https://github.com/home-assistant/core/pull/94636 +[#94637]: https://github.com/home-assistant/core/pull/94637 +[#94638]: https://github.com/home-assistant/core/pull/94638 +[#94639]: https://github.com/home-assistant/core/pull/94639 +[#94640]: https://github.com/home-assistant/core/pull/94640 +[#94641]: https://github.com/home-assistant/core/pull/94641 +[#94642]: https://github.com/home-assistant/core/pull/94642 +[#94644]: https://github.com/home-assistant/core/pull/94644 +[#94645]: https://github.com/home-assistant/core/pull/94645 +[#94646]: https://github.com/home-assistant/core/pull/94646 +[#94647]: https://github.com/home-assistant/core/pull/94647 +[#94656]: https://github.com/home-assistant/core/pull/94656 +[#94657]: https://github.com/home-assistant/core/pull/94657 +[#94658]: https://github.com/home-assistant/core/pull/94658 +[#94659]: https://github.com/home-assistant/core/pull/94659 +[#94660]: https://github.com/home-assistant/core/pull/94660 +[#94672]: https://github.com/home-assistant/core/pull/94672 +[#94674]: https://github.com/home-assistant/core/pull/94674 +[#94677]: https://github.com/home-assistant/core/pull/94677 +[#94683]: https://github.com/home-assistant/core/pull/94683 +[#94686]: https://github.com/home-assistant/core/pull/94686 +[#94688]: https://github.com/home-assistant/core/pull/94688 +[#94689]: https://github.com/home-assistant/core/pull/94689 +[#94690]: https://github.com/home-assistant/core/pull/94690 +[#94692]: https://github.com/home-assistant/core/pull/94692 +[#94693]: https://github.com/home-assistant/core/pull/94693 +[#94696]: https://github.com/home-assistant/core/pull/94696 +[#94699]: https://github.com/home-assistant/core/pull/94699 +[#94705]: https://github.com/home-assistant/core/pull/94705 +[#94711]: https://github.com/home-assistant/core/pull/94711 +[#94712]: https://github.com/home-assistant/core/pull/94712 +[#94721]: https://github.com/home-assistant/core/pull/94721 +[#94723]: https://github.com/home-assistant/core/pull/94723 +[#94724]: https://github.com/home-assistant/core/pull/94724 +[#94725]: https://github.com/home-assistant/core/pull/94725 +[#94727]: https://github.com/home-assistant/core/pull/94727 +[#94731]: https://github.com/home-assistant/core/pull/94731 +[#94734]: https://github.com/home-assistant/core/pull/94734 +[#94740]: https://github.com/home-assistant/core/pull/94740 +[#94743]: https://github.com/home-assistant/core/pull/94743 +[#94744]: https://github.com/home-assistant/core/pull/94744 +[#94749]: https://github.com/home-assistant/core/pull/94749 +[#94751]: https://github.com/home-assistant/core/pull/94751 +[#94753]: https://github.com/home-assistant/core/pull/94753 +[#94757]: https://github.com/home-assistant/core/pull/94757 +[#94759]: https://github.com/home-assistant/core/pull/94759 +[#94761]: https://github.com/home-assistant/core/pull/94761 +[#94762]: https://github.com/home-assistant/core/pull/94762 +[#94765]: https://github.com/home-assistant/core/pull/94765 +[#94769]: https://github.com/home-assistant/core/pull/94769 +[#94770]: https://github.com/home-assistant/core/pull/94770 +[#94773]: https://github.com/home-assistant/core/pull/94773 +[#94777]: https://github.com/home-assistant/core/pull/94777 +[#94778]: https://github.com/home-assistant/core/pull/94778 +[#94780]: https://github.com/home-assistant/core/pull/94780 +[#94786]: https://github.com/home-assistant/core/pull/94786 +[#94788]: https://github.com/home-assistant/core/pull/94788 +[#94791]: https://github.com/home-assistant/core/pull/94791 +[#94800]: https://github.com/home-assistant/core/pull/94800 +[#94803]: https://github.com/home-assistant/core/pull/94803 +[#94804]: https://github.com/home-assistant/core/pull/94804 +[#94809]: https://github.com/home-assistant/core/pull/94809 +[#94811]: https://github.com/home-assistant/core/pull/94811 +[#94816]: https://github.com/home-assistant/core/pull/94816 +[#94818]: https://github.com/home-assistant/core/pull/94818 +[#94819]: https://github.com/home-assistant/core/pull/94819 +[#94823]: https://github.com/home-assistant/core/pull/94823 +[#94828]: https://github.com/home-assistant/core/pull/94828 +[#94829]: https://github.com/home-assistant/core/pull/94829 +[#94832]: https://github.com/home-assistant/core/pull/94832 +[#94836]: https://github.com/home-assistant/core/pull/94836 +[#94844]: https://github.com/home-assistant/core/pull/94844 +[#94845]: https://github.com/home-assistant/core/pull/94845 +[#94846]: https://github.com/home-assistant/core/pull/94846 +[#94847]: https://github.com/home-assistant/core/pull/94847 +[#94851]: https://github.com/home-assistant/core/pull/94851 +[#94856]: https://github.com/home-assistant/core/pull/94856 +[#94861]: https://github.com/home-assistant/core/pull/94861 +[#94862]: https://github.com/home-assistant/core/pull/94862 +[#94864]: https://github.com/home-assistant/core/pull/94864 +[#94866]: https://github.com/home-assistant/core/pull/94866 +[#94874]: https://github.com/home-assistant/core/pull/94874 +[#94876]: https://github.com/home-assistant/core/pull/94876 +[#94878]: https://github.com/home-assistant/core/pull/94878 +[#94879]: https://github.com/home-assistant/core/pull/94879 +[#94882]: https://github.com/home-assistant/core/pull/94882 +[#94883]: https://github.com/home-assistant/core/pull/94883 +[#94885]: https://github.com/home-assistant/core/pull/94885 +[#94887]: https://github.com/home-assistant/core/pull/94887 +[#94889]: https://github.com/home-assistant/core/pull/94889 +[#94890]: https://github.com/home-assistant/core/pull/94890 +[#94891]: https://github.com/home-assistant/core/pull/94891 +[#94898]: https://github.com/home-assistant/core/pull/94898 +[#94900]: https://github.com/home-assistant/core/pull/94900 +[#94901]: https://github.com/home-assistant/core/pull/94901 +[#94902]: https://github.com/home-assistant/core/pull/94902 +[#94903]: https://github.com/home-assistant/core/pull/94903 +[#94904]: https://github.com/home-assistant/core/pull/94904 +[#94905]: https://github.com/home-assistant/core/pull/94905 +[#94910]: https://github.com/home-assistant/core/pull/94910 +[#94912]: https://github.com/home-assistant/core/pull/94912 +[#94916]: https://github.com/home-assistant/core/pull/94916 +[#94923]: https://github.com/home-assistant/core/pull/94923 +[#94924]: https://github.com/home-assistant/core/pull/94924 +[#94925]: https://github.com/home-assistant/core/pull/94925 +[#94926]: https://github.com/home-assistant/core/pull/94926 +[#94927]: https://github.com/home-assistant/core/pull/94927 +[#94928]: https://github.com/home-assistant/core/pull/94928 +[#94929]: https://github.com/home-assistant/core/pull/94929 +[#94930]: https://github.com/home-assistant/core/pull/94930 +[#94931]: https://github.com/home-assistant/core/pull/94931 +[#94934]: https://github.com/home-assistant/core/pull/94934 +[#94935]: https://github.com/home-assistant/core/pull/94935 +[#94937]: https://github.com/home-assistant/core/pull/94937 +[#94942]: https://github.com/home-assistant/core/pull/94942 +[#94944]: https://github.com/home-assistant/core/pull/94944 +[#94945]: https://github.com/home-assistant/core/pull/94945 +[#94953]: https://github.com/home-assistant/core/pull/94953 +[#94955]: https://github.com/home-assistant/core/pull/94955 +[#94956]: https://github.com/home-assistant/core/pull/94956 +[#94958]: https://github.com/home-assistant/core/pull/94958 +[#94959]: https://github.com/home-assistant/core/pull/94959 +[#94960]: https://github.com/home-assistant/core/pull/94960 +[#94961]: https://github.com/home-assistant/core/pull/94961 +[#94962]: https://github.com/home-assistant/core/pull/94962 +[#94963]: https://github.com/home-assistant/core/pull/94963 +[#94965]: https://github.com/home-assistant/core/pull/94965 +[#94966]: https://github.com/home-assistant/core/pull/94966 +[#94969]: https://github.com/home-assistant/core/pull/94969 +[#94971]: https://github.com/home-assistant/core/pull/94971 +[#94972]: https://github.com/home-assistant/core/pull/94972 +[#94974]: https://github.com/home-assistant/core/pull/94974 +[#94975]: https://github.com/home-assistant/core/pull/94975 +[#94976]: https://github.com/home-assistant/core/pull/94976 +[#94978]: https://github.com/home-assistant/core/pull/94978 +[#94979]: https://github.com/home-assistant/core/pull/94979 +[#94980]: https://github.com/home-assistant/core/pull/94980 +[#94981]: https://github.com/home-assistant/core/pull/94981 +[#94983]: https://github.com/home-assistant/core/pull/94983 +[#94986]: https://github.com/home-assistant/core/pull/94986 +[#94987]: https://github.com/home-assistant/core/pull/94987 +[#94988]: https://github.com/home-assistant/core/pull/94988 +[#94989]: https://github.com/home-assistant/core/pull/94989 +[#94990]: https://github.com/home-assistant/core/pull/94990 +[#94995]: https://github.com/home-assistant/core/pull/94995 +[#95001]: https://github.com/home-assistant/core/pull/95001 +[#95002]: https://github.com/home-assistant/core/pull/95002 +[#95004]: https://github.com/home-assistant/core/pull/95004 +[#95007]: https://github.com/home-assistant/core/pull/95007 +[#95009]: https://github.com/home-assistant/core/pull/95009 +[#95010]: https://github.com/home-assistant/core/pull/95010 +[#95011]: https://github.com/home-assistant/core/pull/95011 +[#95019]: https://github.com/home-assistant/core/pull/95019 +[#95021]: https://github.com/home-assistant/core/pull/95021 +[#95022]: https://github.com/home-assistant/core/pull/95022 +[#95023]: https://github.com/home-assistant/core/pull/95023 +[#95025]: https://github.com/home-assistant/core/pull/95025 +[#95026]: https://github.com/home-assistant/core/pull/95026 +[#95029]: https://github.com/home-assistant/core/pull/95029 +[#95030]: https://github.com/home-assistant/core/pull/95030 +[#95031]: https://github.com/home-assistant/core/pull/95031 +[#95035]: https://github.com/home-assistant/core/pull/95035 +[#95037]: https://github.com/home-assistant/core/pull/95037 +[#95042]: https://github.com/home-assistant/core/pull/95042 +[#95045]: https://github.com/home-assistant/core/pull/95045 +[#95051]: https://github.com/home-assistant/core/pull/95051 +[#95052]: https://github.com/home-assistant/core/pull/95052 +[#95059]: https://github.com/home-assistant/core/pull/95059 +[#95061]: https://github.com/home-assistant/core/pull/95061 +[#95064]: https://github.com/home-assistant/core/pull/95064 +[#95065]: https://github.com/home-assistant/core/pull/95065 +[#95067]: https://github.com/home-assistant/core/pull/95067 +[#95068]: https://github.com/home-assistant/core/pull/95068 +[#95069]: https://github.com/home-assistant/core/pull/95069 +[#95070]: https://github.com/home-assistant/core/pull/95070 +[#95071]: https://github.com/home-assistant/core/pull/95071 +[#95072]: https://github.com/home-assistant/core/pull/95072 +[#95077]: https://github.com/home-assistant/core/pull/95077 +[#95080]: https://github.com/home-assistant/core/pull/95080 +[#95082]: https://github.com/home-assistant/core/pull/95082 +[#95083]: https://github.com/home-assistant/core/pull/95083 +[#95084]: https://github.com/home-assistant/core/pull/95084 +[#95090]: https://github.com/home-assistant/core/pull/95090 +[#95092]: https://github.com/home-assistant/core/pull/95092 +[#95096]: https://github.com/home-assistant/core/pull/95096 +[#95097]: https://github.com/home-assistant/core/pull/95097 +[#95098]: https://github.com/home-assistant/core/pull/95098 +[#95099]: https://github.com/home-assistant/core/pull/95099 +[#95100]: https://github.com/home-assistant/core/pull/95100 +[#95101]: https://github.com/home-assistant/core/pull/95101 +[#95102]: https://github.com/home-assistant/core/pull/95102 +[#95103]: https://github.com/home-assistant/core/pull/95103 +[#95108]: https://github.com/home-assistant/core/pull/95108 +[#95109]: https://github.com/home-assistant/core/pull/95109 +[#95110]: https://github.com/home-assistant/core/pull/95110 +[#95113]: https://github.com/home-assistant/core/pull/95113 +[#95115]: https://github.com/home-assistant/core/pull/95115 +[#95122]: https://github.com/home-assistant/core/pull/95122 +[#95124]: https://github.com/home-assistant/core/pull/95124 +[#95126]: https://github.com/home-assistant/core/pull/95126 +[#95128]: https://github.com/home-assistant/core/pull/95128 +[#95130]: https://github.com/home-assistant/core/pull/95130 +[#95131]: https://github.com/home-assistant/core/pull/95131 +[#95132]: https://github.com/home-assistant/core/pull/95132 +[#95133]: https://github.com/home-assistant/core/pull/95133 +[#95134]: https://github.com/home-assistant/core/pull/95134 +[#95135]: https://github.com/home-assistant/core/pull/95135 +[#95136]: https://github.com/home-assistant/core/pull/95136 +[#95138]: https://github.com/home-assistant/core/pull/95138 +[#95139]: https://github.com/home-assistant/core/pull/95139 +[#95140]: https://github.com/home-assistant/core/pull/95140 +[#95142]: https://github.com/home-assistant/core/pull/95142 +[#95143]: https://github.com/home-assistant/core/pull/95143 +[#95144]: https://github.com/home-assistant/core/pull/95144 +[#95151]: https://github.com/home-assistant/core/pull/95151 +[#95153]: https://github.com/home-assistant/core/pull/95153 +[#95155]: https://github.com/home-assistant/core/pull/95155 +[#95160]: https://github.com/home-assistant/core/pull/95160 +[#95162]: https://github.com/home-assistant/core/pull/95162 +[#95163]: https://github.com/home-assistant/core/pull/95163 +[#95166]: https://github.com/home-assistant/core/pull/95166 +[#95168]: https://github.com/home-assistant/core/pull/95168 +[#95173]: https://github.com/home-assistant/core/pull/95173 +[#95178]: https://github.com/home-assistant/core/pull/95178 +[#95180]: https://github.com/home-assistant/core/pull/95180 +[#95182]: https://github.com/home-assistant/core/pull/95182 +[#95183]: https://github.com/home-assistant/core/pull/95183 +[#95184]: https://github.com/home-assistant/core/pull/95184 +[#95188]: https://github.com/home-assistant/core/pull/95188 +[#95196]: https://github.com/home-assistant/core/pull/95196 +[#95202]: https://github.com/home-assistant/core/pull/95202 +[#95209]: https://github.com/home-assistant/core/pull/95209 +[#95210]: https://github.com/home-assistant/core/pull/95210 +[#95211]: https://github.com/home-assistant/core/pull/95211 +[#95212]: https://github.com/home-assistant/core/pull/95212 +[#95213]: https://github.com/home-assistant/core/pull/95213 +[#95217]: https://github.com/home-assistant/core/pull/95217 +[#95218]: https://github.com/home-assistant/core/pull/95218 +[#95219]: https://github.com/home-assistant/core/pull/95219 +[#95220]: https://github.com/home-assistant/core/pull/95220 +[#95222]: https://github.com/home-assistant/core/pull/95222 +[#95225]: https://github.com/home-assistant/core/pull/95225 +[#95226]: https://github.com/home-assistant/core/pull/95226 +[#95230]: https://github.com/home-assistant/core/pull/95230 +[#95231]: https://github.com/home-assistant/core/pull/95231 +[#95232]: https://github.com/home-assistant/core/pull/95232 +[#95233]: https://github.com/home-assistant/core/pull/95233 +[#95234]: https://github.com/home-assistant/core/pull/95234 +[#95235]: https://github.com/home-assistant/core/pull/95235 +[#95236]: https://github.com/home-assistant/core/pull/95236 +[#95237]: https://github.com/home-assistant/core/pull/95237 +[#95238]: https://github.com/home-assistant/core/pull/95238 +[#95240]: https://github.com/home-assistant/core/pull/95240 +[#95241]: https://github.com/home-assistant/core/pull/95241 +[#95244]: https://github.com/home-assistant/core/pull/95244 +[#95245]: https://github.com/home-assistant/core/pull/95245 +[#95246]: https://github.com/home-assistant/core/pull/95246 +[#95247]: https://github.com/home-assistant/core/pull/95247 +[#95248]: https://github.com/home-assistant/core/pull/95248 +[#95249]: https://github.com/home-assistant/core/pull/95249 +[#95250]: https://github.com/home-assistant/core/pull/95250 +[#95251]: https://github.com/home-assistant/core/pull/95251 +[#95252]: https://github.com/home-assistant/core/pull/95252 +[#95253]: https://github.com/home-assistant/core/pull/95253 +[#95254]: https://github.com/home-assistant/core/pull/95254 +[#95255]: https://github.com/home-assistant/core/pull/95255 +[#95256]: https://github.com/home-assistant/core/pull/95256 +[#95257]: https://github.com/home-assistant/core/pull/95257 +[#95258]: https://github.com/home-assistant/core/pull/95258 +[#95259]: https://github.com/home-assistant/core/pull/95259 +[#95260]: https://github.com/home-assistant/core/pull/95260 +[#95261]: https://github.com/home-assistant/core/pull/95261 +[#95262]: https://github.com/home-assistant/core/pull/95262 +[#95267]: https://github.com/home-assistant/core/pull/95267 +[#95268]: https://github.com/home-assistant/core/pull/95268 +[#95269]: https://github.com/home-assistant/core/pull/95269 +[#95270]: https://github.com/home-assistant/core/pull/95270 +[#95271]: https://github.com/home-assistant/core/pull/95271 +[#95272]: https://github.com/home-assistant/core/pull/95272 +[#95273]: https://github.com/home-assistant/core/pull/95273 +[#95274]: https://github.com/home-assistant/core/pull/95274 +[#95275]: https://github.com/home-assistant/core/pull/95275 +[#95276]: https://github.com/home-assistant/core/pull/95276 +[#95278]: https://github.com/home-assistant/core/pull/95278 +[#95281]: https://github.com/home-assistant/core/pull/95281 +[#95282]: https://github.com/home-assistant/core/pull/95282 +[#95283]: https://github.com/home-assistant/core/pull/95283 +[#95284]: https://github.com/home-assistant/core/pull/95284 +[#95286]: https://github.com/home-assistant/core/pull/95286 +[#95289]: https://github.com/home-assistant/core/pull/95289 +[#95291]: https://github.com/home-assistant/core/pull/95291 +[#95292]: https://github.com/home-assistant/core/pull/95292 +[#95293]: https://github.com/home-assistant/core/pull/95293 +[#95295]: https://github.com/home-assistant/core/pull/95295 +[#95296]: https://github.com/home-assistant/core/pull/95296 +[#95299]: https://github.com/home-assistant/core/pull/95299 +[#95301]: https://github.com/home-assistant/core/pull/95301 +[#95302]: https://github.com/home-assistant/core/pull/95302 +[#95303]: https://github.com/home-assistant/core/pull/95303 +[#95306]: https://github.com/home-assistant/core/pull/95306 +[#95307]: https://github.com/home-assistant/core/pull/95307 +[#95308]: https://github.com/home-assistant/core/pull/95308 +[#95309]: https://github.com/home-assistant/core/pull/95309 +[#95311]: https://github.com/home-assistant/core/pull/95311 +[#95312]: https://github.com/home-assistant/core/pull/95312 +[#95313]: https://github.com/home-assistant/core/pull/95313 +[#95314]: https://github.com/home-assistant/core/pull/95314 +[#95316]: https://github.com/home-assistant/core/pull/95316 +[#95317]: https://github.com/home-assistant/core/pull/95317 +[#95318]: https://github.com/home-assistant/core/pull/95318 +[#95321]: https://github.com/home-assistant/core/pull/95321 +[#95327]: https://github.com/home-assistant/core/pull/95327 +[#95328]: https://github.com/home-assistant/core/pull/95328 +[#95330]: https://github.com/home-assistant/core/pull/95330 +[#95332]: https://github.com/home-assistant/core/pull/95332 +[#95333]: https://github.com/home-assistant/core/pull/95333 +[#95334]: https://github.com/home-assistant/core/pull/95334 +[#95335]: https://github.com/home-assistant/core/pull/95335 +[#95337]: https://github.com/home-assistant/core/pull/95337 +[#95338]: https://github.com/home-assistant/core/pull/95338 +[#95339]: https://github.com/home-assistant/core/pull/95339 +[#95340]: https://github.com/home-assistant/core/pull/95340 +[#95341]: https://github.com/home-assistant/core/pull/95341 +[#95342]: https://github.com/home-assistant/core/pull/95342 +[#95343]: https://github.com/home-assistant/core/pull/95343 +[#95344]: https://github.com/home-assistant/core/pull/95344 +[#95345]: https://github.com/home-assistant/core/pull/95345 +[#95346]: https://github.com/home-assistant/core/pull/95346 +[#95347]: https://github.com/home-assistant/core/pull/95347 +[#95348]: https://github.com/home-assistant/core/pull/95348 +[#95350]: https://github.com/home-assistant/core/pull/95350 +[#95352]: https://github.com/home-assistant/core/pull/95352 +[#95353]: https://github.com/home-assistant/core/pull/95353 +[#95355]: https://github.com/home-assistant/core/pull/95355 +[#95356]: https://github.com/home-assistant/core/pull/95356 +[#95358]: https://github.com/home-assistant/core/pull/95358 +[#95359]: https://github.com/home-assistant/core/pull/95359 +[#95360]: https://github.com/home-assistant/core/pull/95360 +[#95361]: https://github.com/home-assistant/core/pull/95361 +[#95362]: https://github.com/home-assistant/core/pull/95362 +[#95363]: https://github.com/home-assistant/core/pull/95363 +[#95365]: https://github.com/home-assistant/core/pull/95365 +[#95367]: https://github.com/home-assistant/core/pull/95367 +[#95368]: https://github.com/home-assistant/core/pull/95368 +[#95369]: https://github.com/home-assistant/core/pull/95369 +[#95370]: https://github.com/home-assistant/core/pull/95370 +[#95372]: https://github.com/home-assistant/core/pull/95372 +[#95373]: https://github.com/home-assistant/core/pull/95373 +[#95376]: https://github.com/home-assistant/core/pull/95376 +[#95379]: https://github.com/home-assistant/core/pull/95379 +[#95380]: https://github.com/home-assistant/core/pull/95380 +[#95381]: https://github.com/home-assistant/core/pull/95381 +[#95384]: https://github.com/home-assistant/core/pull/95384 +[#95387]: https://github.com/home-assistant/core/pull/95387 +[#95388]: https://github.com/home-assistant/core/pull/95388 +[#95391]: https://github.com/home-assistant/core/pull/95391 +[#95392]: https://github.com/home-assistant/core/pull/95392 +[#95393]: https://github.com/home-assistant/core/pull/95393 +[#95394]: https://github.com/home-assistant/core/pull/95394 +[#95396]: https://github.com/home-assistant/core/pull/95396 +[#95398]: https://github.com/home-assistant/core/pull/95398 +[#95400]: https://github.com/home-assistant/core/pull/95400 +[#95401]: https://github.com/home-assistant/core/pull/95401 +[#95402]: https://github.com/home-assistant/core/pull/95402 +[#95403]: https://github.com/home-assistant/core/pull/95403 +[#95404]: https://github.com/home-assistant/core/pull/95404 +[#95408]: https://github.com/home-assistant/core/pull/95408 +[#95410]: https://github.com/home-assistant/core/pull/95410 +[#95411]: https://github.com/home-assistant/core/pull/95411 +[#95412]: https://github.com/home-assistant/core/pull/95412 +[#95415]: https://github.com/home-assistant/core/pull/95415 +[#95416]: https://github.com/home-assistant/core/pull/95416 +[#95418]: https://github.com/home-assistant/core/pull/95418 +[#95421]: https://github.com/home-assistant/core/pull/95421 +[#95427]: https://github.com/home-assistant/core/pull/95427 +[#95429]: https://github.com/home-assistant/core/pull/95429 +[#95431]: https://github.com/home-assistant/core/pull/95431 +[#95432]: https://github.com/home-assistant/core/pull/95432 +[#95434]: https://github.com/home-assistant/core/pull/95434 +[#95435]: https://github.com/home-assistant/core/pull/95435 +[#95436]: https://github.com/home-assistant/core/pull/95436 +[#95437]: https://github.com/home-assistant/core/pull/95437 +[#95438]: https://github.com/home-assistant/core/pull/95438 +[#95440]: https://github.com/home-assistant/core/pull/95440 +[#95441]: https://github.com/home-assistant/core/pull/95441 +[#95442]: https://github.com/home-assistant/core/pull/95442 +[#95443]: https://github.com/home-assistant/core/pull/95443 +[#95449]: https://github.com/home-assistant/core/pull/95449 +[#95450]: https://github.com/home-assistant/core/pull/95450 +[#95451]: https://github.com/home-assistant/core/pull/95451 +[#95452]: https://github.com/home-assistant/core/pull/95452 +[#95454]: https://github.com/home-assistant/core/pull/95454 +[#95456]: https://github.com/home-assistant/core/pull/95456 +[#95458]: https://github.com/home-assistant/core/pull/95458 +[#95460]: https://github.com/home-assistant/core/pull/95460 +[#95462]: https://github.com/home-assistant/core/pull/95462 +[#95463]: https://github.com/home-assistant/core/pull/95463 +[#95468]: https://github.com/home-assistant/core/pull/95468 +[#95470]: https://github.com/home-assistant/core/pull/95470 +[#95471]: https://github.com/home-assistant/core/pull/95471 +[#95477]: https://github.com/home-assistant/core/pull/95477 +[#95478]: https://github.com/home-assistant/core/pull/95478 +[#95480]: https://github.com/home-assistant/core/pull/95480 +[#95481]: https://github.com/home-assistant/core/pull/95481 +[#95486]: https://github.com/home-assistant/core/pull/95486 +[#95489]: https://github.com/home-assistant/core/pull/95489 +[#95492]: https://github.com/home-assistant/core/pull/95492 +[#95497]: https://github.com/home-assistant/core/pull/95497 +[#95505]: https://github.com/home-assistant/core/pull/95505 +[#95506]: https://github.com/home-assistant/core/pull/95506 +[#95509]: https://github.com/home-assistant/core/pull/95509 +[#95511]: https://github.com/home-assistant/core/pull/95511 +[#95512]: https://github.com/home-assistant/core/pull/95512 +[#95513]: https://github.com/home-assistant/core/pull/95513 +[#95515]: https://github.com/home-assistant/core/pull/95515 +[#95516]: https://github.com/home-assistant/core/pull/95516 +[#95519]: https://github.com/home-assistant/core/pull/95519 +[#95520]: https://github.com/home-assistant/core/pull/95520 +[#95521]: https://github.com/home-assistant/core/pull/95521 +[#95522]: https://github.com/home-assistant/core/pull/95522 +[#95523]: https://github.com/home-assistant/core/pull/95523 +[#95524]: https://github.com/home-assistant/core/pull/95524 +[#95525]: https://github.com/home-assistant/core/pull/95525 +[#95531]: https://github.com/home-assistant/core/pull/95531 +[#95532]: https://github.com/home-assistant/core/pull/95532 +[#95548]: https://github.com/home-assistant/core/pull/95548 +[#95549]: https://github.com/home-assistant/core/pull/95549 +[#95551]: https://github.com/home-assistant/core/pull/95551 +[#95562]: https://github.com/home-assistant/core/pull/95562 +[#95563]: https://github.com/home-assistant/core/pull/95563 +[#95568]: https://github.com/home-assistant/core/pull/95568 +[#95570]: https://github.com/home-assistant/core/pull/95570 +[#95574]: https://github.com/home-assistant/core/pull/95574 +[#95576]: https://github.com/home-assistant/core/pull/95576 +[#95583]: https://github.com/home-assistant/core/pull/95583 +[#95585]: https://github.com/home-assistant/core/pull/95585 +[#95591]: https://github.com/home-assistant/core/pull/95591 +[#95593]: https://github.com/home-assistant/core/pull/95593 +[#95595]: https://github.com/home-assistant/core/pull/95595 +[#95597]: https://github.com/home-assistant/core/pull/95597 +[#95608]: https://github.com/home-assistant/core/pull/95608 +[#95611]: https://github.com/home-assistant/core/pull/95611 +[#95619]: https://github.com/home-assistant/core/pull/95619 +[#95620]: https://github.com/home-assistant/core/pull/95620 +[#95621]: https://github.com/home-assistant/core/pull/95621 +[#95622]: https://github.com/home-assistant/core/pull/95622 +[#95623]: https://github.com/home-assistant/core/pull/95623 +[#95624]: https://github.com/home-assistant/core/pull/95624 +[#95629]: https://github.com/home-assistant/core/pull/95629 +[#95630]: https://github.com/home-assistant/core/pull/95630 +[#95633]: https://github.com/home-assistant/core/pull/95633 +[#95635]: https://github.com/home-assistant/core/pull/95635 +[#95636]: https://github.com/home-assistant/core/pull/95636 +[#95642]: https://github.com/home-assistant/core/pull/95642 +[#95649]: https://github.com/home-assistant/core/pull/95649 +[#95655]: https://github.com/home-assistant/core/pull/95655 +[#95660]: https://github.com/home-assistant/core/pull/95660 +[#95678]: https://github.com/home-assistant/core/pull/95678 +[#95681]: https://github.com/home-assistant/core/pull/95681 +[#95707]: https://github.com/home-assistant/core/pull/95707 +[#95714]: https://github.com/home-assistant/core/pull/95714 +[#95716]: https://github.com/home-assistant/core/pull/95716 +[#95725]: https://github.com/home-assistant/core/pull/95725 +[#95743]: https://github.com/home-assistant/core/pull/95743 +[#95754]: https://github.com/home-assistant/core/pull/95754 +[#95775]: https://github.com/home-assistant/core/pull/95775 +[#95778]: https://github.com/home-assistant/core/pull/95778 +[#95780]: https://github.com/home-assistant/core/pull/95780 +[#95781]: https://github.com/home-assistant/core/pull/95781 +[#95783]: https://github.com/home-assistant/core/pull/95783 +[#95784]: https://github.com/home-assistant/core/pull/95784 +[#95795]: https://github.com/home-assistant/core/pull/95795 +[#95797]: https://github.com/home-assistant/core/pull/95797 +[#95804]: https://github.com/home-assistant/core/pull/95804 +[#95813]: https://github.com/home-assistant/core/pull/95813 +[#95827]: https://github.com/home-assistant/core/pull/95827 +[#95838]: https://github.com/home-assistant/core/pull/95838 +[#95839]: https://github.com/home-assistant/core/pull/95839 +[#95843]: https://github.com/home-assistant/core/pull/95843 +[#95858]: https://github.com/home-assistant/core/pull/95858 +[#95867]: https://github.com/home-assistant/core/pull/95867 +[#95871]: https://github.com/home-assistant/core/pull/95871 +[#95874]: https://github.com/home-assistant/core/pull/95874 +[#95878]: https://github.com/home-assistant/core/pull/95878 +[#95890]: https://github.com/home-assistant/core/pull/95890 +[@Bre77]: https://github.com/Bre77 +[@DeerMaximum]: https://github.com/DeerMaximum +[@Drafteed]: https://github.com/Drafteed +[@Emilv2]: https://github.com/Emilv2 +[@Kane610]: https://github.com/Kane610 +[@KevinCathcart]: https://github.com/KevinCathcart +[@Lash-L]: https://github.com/Lash-L +[@Mariusthvdb]: https://github.com/Mariusthvdb +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@Megabytemb]: https://github.com/Megabytemb +[@Nardol]: https://github.com/Nardol +[@Noltari]: https://github.com/Noltari +[@Olen]: https://github.com/Olen +[@Petro31]: https://github.com/Petro31 +[@Quentame]: https://github.com/Quentame +[@RenierM26]: https://github.com/RenierM26 +[@RobertD502]: https://github.com/RobertD502 +[@RoboMagus]: https://github.com/RoboMagus +[@Sab44]: https://github.com/Sab44 +[@Shulyaka]: https://github.com/Shulyaka +[@Shutgun]: https://github.com/Shutgun +[@StephanU]: https://github.com/StephanU +[@ViViDboarder]: https://github.com/ViViDboarder +[@Xyaren]: https://github.com/Xyaren +[@allenporter]: https://github.com/allenporter +[@andiukas]: https://github.com/andiukas +[@aschmitz]: https://github.com/aschmitz +[@aschobba]: https://github.com/aschobba +[@avee87]: https://github.com/avee87 +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bazwilliams]: https://github.com/bazwilliams +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@bieniu]: https://github.com/bieniu +[@boozer2]: https://github.com/boozer2 +[@bramkragten]: https://github.com/bramkragten +[@c0ffeeca7]: https://github.com/c0ffeeca7 +[@cdce8p]: https://github.com/cdce8p +[@centertivevier]: https://github.com/centertivevier +[@cgarwood]: https://github.com/cgarwood +[@chemelli74]: https://github.com/chemelli74 +[@chrisjohnson1988]: https://github.com/chrisjohnson1988 +[@chrisx8]: https://github.com/chrisx8 +[@cpolhout]: https://github.com/cpolhout +[@ctalkington]: https://github.com/ctalkington +[@danielkent-net]: https://github.com/danielkent-net +[@danlindow]: https://github.com/danlindow +[@davet2001]: https://github.com/davet2001 +[@dgomes]: https://github.com/dgomes +[@disforw]: https://github.com/disforw +[@donholly]: https://github.com/donholly +[@dougiteixeira]: https://github.com/dougiteixeira +[@dupondje]: https://github.com/dupondje +[@dylanowen]: https://github.com/dylanowen +[@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 +[@evanjarrett]: https://github.com/evanjarrett +[@farmio]: https://github.com/farmio +[@freeDom-]: https://github.com/freeDom- +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@grahambrown11]: https://github.com/grahambrown11 +[@haimgel]: https://github.com/haimgel +[@hcross13]: https://github.com/hcross13 +[@hidaris]: https://github.com/hidaris +[@hookedonunix]: https://github.com/hookedonunix +[@iMicknl]: https://github.com/iMicknl +[@janiversen]: https://github.com/janiversen +[@jbergler]: https://github.com/jbergler +[@jbouwh]: https://github.com/jbouwh +[@jgrieger1]: https://github.com/jgrieger1 +[@jimmyd-be]: https://github.com/jimmyd-be +[@joostlek]: https://github.com/joostlek +[@jpbede]: https://github.com/jpbede +[@killer0071234]: https://github.com/killer0071234 +[@kylehild]: https://github.com/kylehild +[@lanrat]: https://github.com/lanrat +[@lealoureiro]: https://github.com/lealoureiro +[@loopj]: https://github.com/loopj +[@ludeeus]: https://github.com/ludeeus +[@marcelveldt]: https://github.com/marcelveldt +[@maximoei]: https://github.com/maximoei +[@mdegat01]: https://github.com/mdegat01 +[@mfaraco]: https://github.com/mfaraco +[@mib1185]: https://github.com/mib1185 +[@micha91]: https://github.com/micha91 +[@michaeldavie]: https://github.com/michaeldavie +[@michalmo]: https://github.com/michalmo +[@mikeknoop]: https://github.com/mikeknoop +[@mikewoudenberg]: https://github.com/mikewoudenberg +[@mkmer]: https://github.com/mkmer +[@nalin29]: https://github.com/nalin29 +[@natekspencer]: https://github.com/natekspencer +[@niclasku]: https://github.com/niclasku +[@pail23]: https://github.com/pail23 +[@perdue]: https://github.com/perdue +[@piitaya]: https://github.com/piitaya +[@puddly]: https://github.com/puddly +[@pvizeli]: https://github.com/pvizeli +[@quthla]: https://github.com/quthla +[@raman325]: https://github.com/raman325 +[@rikroe]: https://github.com/rikroe +[@rubeecube]: https://github.com/rubeecube +[@scop]: https://github.com/scop +[@shbatm]: https://github.com/shbatm +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@timmo001]: https://github.com/timmo001 +[@tkdrob]: https://github.com/tkdrob +[@tronikos]: https://github.com/tronikos +[@tschamm]: https://github.com/tschamm +[@vingerha]: https://github.com/vingerha +[@wrt54g]: https://github.com/wrt54g +[@zry98]: https://github.com/zry98 +[abode docs]: /integrations/abode/ +[accuweather docs]: /integrations/accuweather/ +[acmeda docs]: /integrations/acmeda/ +[adguard docs]: /integrations/adguard/ +[advantage_air docs]: /integrations/advantage_air/ +[airly docs]: /integrations/airly/ +[airnow docs]: /integrations/airnow/ +[airq docs]: /integrations/airq/ +[airthings docs]: /integrations/airthings/ +[airthings_ble docs]: /integrations/airthings_ble/ +[airzone docs]: /integrations/airzone/ +[airzone_cloud docs]: /integrations/airzone_cloud/ +[aladdin_connect docs]: /integrations/aladdin_connect/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[analytics docs]: /integrations/analytics/ +[androidtv_remote docs]: /integrations/androidtv_remote/ +[apple_tv docs]: /integrations/apple_tv/ +[aranet docs]: /integrations/aranet/ +[arcam_fmj docs]: /integrations/arcam_fmj/ +[assist_pipeline docs]: /integrations/assist_pipeline/ +[atag docs]: /integrations/atag/ +[aurora docs]: /integrations/aurora/ +[aurora_abb_powerone docs]: /integrations/aurora_abb_powerone/ +[aussie_broadband docs]: /integrations/aussie_broadband/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[baf docs]: /integrations/baf/ +[balboa docs]: /integrations/balboa/ +[binary_sensor docs]: /integrations/binary_sensor/ +[blink docs]: /integrations/blink/ +[blueprint docs]: /integrations/blueprint/ +[bluetooth docs]: /integrations/bluetooth/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bosch_shc docs]: /integrations/bosch_shc/ +[braviatv docs]: /integrations/braviatv/ +[broadlink docs]: /integrations/broadlink/ +[brottsplatskartan docs]: /integrations/brottsplatskartan/ +[button docs]: /integrations/button/ +[calendar docs]: /integrations/calendar/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[climate docs]: /integrations/climate/ +[cloud docs]: /integrations/cloud/ +[command_line docs]: /integrations/command_line/ +[compensation docs]: /integrations/compensation/ +[control4 docs]: /integrations/control4/ +[conversation docs]: /integrations/conversation/ +[coolmaster docs]: /integrations/coolmaster/ +[counter docs]: /integrations/counter/ +[cover docs]: /integrations/cover/ +[cpuspeed docs]: /integrations/cpuspeed/ +[deconz docs]: /integrations/deconz/ +[delijn docs]: /integrations/delijn/ +[deluge docs]: /integrations/deluge/ +[demo docs]: /integrations/demo/ +[derivative docs]: /integrations/derivative/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[devolo_home_network docs]: /integrations/devolo_home_network/ +[dexcom docs]: /integrations/dexcom/ +[discovergy docs]: /integrations/discovergy/ +[dlna_dms docs]: /integrations/dlna_dms/ +[dormakaba_dkey docs]: /integrations/dormakaba_dkey/ +[dremel_3d_printer docs]: /integrations/dremel_3d_printer/ +[dwd_weather_warnings docs]: /integrations/dwd_weather_warnings/ +[eafm docs]: /integrations/eafm/ +[easyenergy docs]: /integrations/easyenergy/ +[ecobee docs]: /integrations/ecobee/ +[econet docs]: /integrations/econet/ +[ecowitt docs]: /integrations/ecowitt/ +[eddystone_temperature docs]: /integrations/eddystone_temperature/ +[edl21 docs]: /integrations/edl21/ +[efergy docs]: /integrations/efergy/ +[electrasmart docs]: /integrations/electrasmart/ +[elgato docs]: /integrations/elgato/ +[emby docs]: /integrations/emby/ +[emulated_kasa docs]: /integrations/emulated_kasa/ +[energy docs]: /integrations/energy/ +[energyzero docs]: /integrations/energyzero/ +[environment_canada docs]: /integrations/environment_canada/ +[esphome docs]: /integrations/esphome/ +[eufylife_ble docs]: /integrations/eufylife_ble/ +[evohome docs]: /integrations/evohome/ +[ezviz docs]: /integrations/ezviz/ +[fan docs]: /integrations/fan/ +[filesize docs]: /integrations/filesize/ +[fints docs]: /integrations/fints/ +[fireservicerota docs]: /integrations/fireservicerota/ +[fivem docs]: /integrations/fivem/ +[fjaraskupan docs]: /integrations/fjaraskupan/ +[flick_electric docs]: /integrations/flick_electric/ +[flipr docs]: /integrations/flipr/ +[flo docs]: /integrations/flo/ +[flume docs]: /integrations/flume/ +[flux_led docs]: /integrations/flux_led/ +[forecast_solar docs]: /integrations/forecast_solar/ +[freedompro docs]: /integrations/freedompro/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ +[frontend docs]: /integrations/frontend/ +[fully_kiosk docs]: /integrations/fully_kiosk/ +[generic docs]: /integrations/generic/ +[generic_hygrostat docs]: /integrations/generic_hygrostat/ +[geniushub docs]: /integrations/geniushub/ +[geo_json_events docs]: /integrations/geo_json_events/ +[geocaching docs]: /integrations/geocaching/ +[gios docs]: /integrations/gios/ +[github docs]: /integrations/github/ +[glances docs]: /integrations/glances/ +[gogogate2 docs]: /integrations/gogogate2/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_assistant_sdk docs]: /integrations/google_assistant_sdk/ +[google_generative_ai_conversation docs]: /integrations/google_generative_ai_conversation/ +[google_mail docs]: /integrations/google_mail/ +[google_translate docs]: /integrations/google_translate/ +[gpslogger docs]: /integrations/gpslogger/ +[growatt_server docs]: /integrations/growatt_server/ +[gtfs docs]: /integrations/gtfs/ +[guardian docs]: /integrations/guardian/ +[hassio docs]: /integrations/hassio/ +[here_travel_time docs]: /integrations/here_travel_time/ +[homeassistant docs]: /integrations/homeassistant/ +[homeassistant_sky_connect docs]: /integrations/homeassistant_sky_connect/ +[homekit docs]: /integrations/homekit/ +[homekit_controller docs]: /integrations/homekit_controller/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[homewizard docs]: /integrations/homewizard/ +[honeywell docs]: /integrations/honeywell/ +[huisbaasje docs]: /integrations/huisbaasje/ +[humidifier docs]: /integrations/humidifier/ +[hunterdouglas_powerview docs]: /integrations/hunterdouglas_powerview/ +[hvv_departures docs]: /integrations/hvv_departures/ +[hyperion docs]: /integrations/hyperion/ +[ibeacon docs]: /integrations/ibeacon/ +[image docs]: /integrations/image/ +[imap docs]: /integrations/imap/ +[imap_email_content docs]: /integrations/imap_email_content/ +[influxdb docs]: /integrations/influxdb/ +[insteon docs]: /integrations/insteon/ +[integration docs]: /integrations/integration/ +[intellifire docs]: /integrations/intellifire/ +[intent_script docs]: /integrations/intent_script/ +[ipma docs]: /integrations/ipma/ +[ipp docs]: /integrations/ipp/ +[isy994 docs]: /integrations/isy994/ +[keyboard_remote docs]: /integrations/keyboard_remote/ +[kitchen_sink docs]: /integrations/kitchen_sink/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[lastfm docs]: /integrations/lastfm/ +[ld2410_ble docs]: /integrations/ld2410_ble/ +[led_ble docs]: /integrations/led_ble/ +[lg_netcast docs]: /integrations/lg_netcast/ +[lidarr docs]: /integrations/lidarr/ +[light docs]: /integrations/light/ +[litterrobot docs]: /integrations/litterrobot/ +[locative docs]: /integrations/locative/ +[lock docs]: /integrations/lock/ +[loqed docs]: /integrations/loqed/ +[luftdaten docs]: /integrations/luftdaten/ +[lutron docs]: /integrations/lutron/ +[lyric docs]: /integrations/lyric/ +[mailbox docs]: /integrations/mailbox/ +[matter docs]: /integrations/matter/ +[mazda docs]: /integrations/mazda/ +[media_extractor docs]: /integrations/media_extractor/ +[media_player docs]: /integrations/media_player/ +[media_source docs]: /integrations/media_source/ +[met docs]: /integrations/met/ +[meteo_france docs]: /integrations/meteo_france/ +[microsoft_face docs]: /integrations/microsoft_face/ +[mill docs]: /integrations/mill/ +[mobile_app docs]: /integrations/mobile_app/ +[modbus docs]: /integrations/modbus/ +[modem_callerid docs]: /integrations/modem_callerid/ +[moon docs]: /integrations/moon/ +[motion_blinds docs]: /integrations/motion_blinds/ +[mqtt docs]: /integrations/mqtt/ +[myq docs]: /integrations/myq/ +[mysensors docs]: /integrations/mysensors/ +[mystrom docs]: /integrations/mystrom/ +[ness_alarm docs]: /integrations/ness_alarm/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[network docs]: /integrations/network/ +[nextbus docs]: /integrations/nextbus/ +[nibe_heatpump docs]: /integrations/nibe_heatpump/ +[nina docs]: /integrations/nina/ +[notify docs]: /integrations/notify/ +[nsw_fuel_station docs]: /integrations/nsw_fuel_station/ +[number docs]: /integrations/number/ +[obihai docs]: /integrations/obihai/ +[onboarding docs]: /integrations/onboarding/ +[ondilo_ico docs]: /integrations/ondilo_ico/ +[openai_conversation docs]: /integrations/openai_conversation/ +[openhome docs]: /integrations/openhome/ +[opensky docs]: /integrations/opensky/ +[openweathermap docs]: /integrations/openweathermap/ +[opnsense docs]: /integrations/opnsense/ +[otbr docs]: /integrations/otbr/ +[overkiz docs]: /integrations/overkiz/ +[owntracks docs]: /integrations/owntracks/ +[persistent_notification docs]: /integrations/persistent_notification/ +[philips_js docs]: /integrations/philips_js/ +[picnic docs]: /integrations/picnic/ +[ping docs]: /integrations/ping/ +[plugwise docs]: /integrations/plugwise/ +[proximity docs]: /integrations/proximity/ +[qbittorrent docs]: /integrations/qbittorrent/ +[qnap docs]: /integrations/qnap/ +[radarr docs]: /integrations/radarr/ +[radio_browser docs]: /integrations/radio_browser/ +[recorder docs]: /integrations/recorder/ +[remote docs]: /integrations/remote/ +[remote_rpi_gpio docs]: /integrations/remote_rpi_gpio/ +[renson docs]: /integrations/renson/ +[renson_endura_delta docs]: /integrations/renson_endura_delta/ +[reolink docs]: /integrations/reolink/ +[rest docs]: /integrations/rest/ +[ring docs]: /integrations/ring/ +[rituals_perfume_genie docs]: /integrations/rituals_perfume_genie/ +[roborock docs]: /integrations/roborock/ +[roku docs]: /integrations/roku/ +[ruuvi_gateway docs]: /integrations/ruuvi_gateway/ +[ruuvitag_ble docs]: /integrations/ruuvitag_ble/ +[scrape docs]: /integrations/scrape/ +[script docs]: /integrations/script/ +[season docs]: /integrations/season/ +[select docs]: /integrations/select/ +[sense docs]: /integrations/sense/ +[senseme docs]: /integrations/senseme/ +[sensibo docs]: /integrations/sensibo/ +[sensirion_ble docs]: /integrations/sensirion_ble/ +[sensor docs]: /integrations/sensor/ +[senz docs]: /integrations/senz/ +[sharkiq docs]: /integrations/sharkiq/ +[shelly docs]: /integrations/shelly/ +[simplepush docs]: /integrations/simplepush/ +[simplisafe docs]: /integrations/simplisafe/ +[sky_hub docs]: /integrations/sky_hub/ +[slack docs]: /integrations/slack/ +[slimproto docs]: /integrations/slimproto/ +[smartthings docs]: /integrations/smartthings/ +[smhi docs]: /integrations/smhi/ +[snapcast docs]: /integrations/snapcast/ +[solaredge docs]: /integrations/solaredge/ +[solax docs]: /integrations/solax/ +[sonos docs]: /integrations/sonos/ +[soundtouch docs]: /integrations/soundtouch/ +[spotify docs]: /integrations/spotify/ +[steam_online docs]: /integrations/steam_online/ +[stt docs]: /integrations/stt/ +[sun docs]: /integrations/sun/ +[switch docs]: /integrations/switch/ +[switchbot docs]: /integrations/switchbot/ +[synology_dsm docs]: /integrations/synology_dsm/ +[system_bridge docs]: /integrations/system_bridge/ +[telegram_bot docs]: /integrations/telegram_bot/ +[template docs]: /integrations/template/ +[text docs]: /integrations/text/ +[thread docs]: /integrations/thread/ +[threshold docs]: /integrations/threshold/ +[timer docs]: /integrations/timer/ +[tplink docs]: /integrations/tplink/ +[traccar docs]: /integrations/traccar/ +[transmission docs]: /integrations/transmission/ +[tts docs]: /integrations/tts/ +[tuya docs]: /integrations/tuya/ +[twentemilieu docs]: /integrations/twentemilieu/ +[twitch docs]: /integrations/twitch/ +[ubus docs]: /integrations/ubus/ +[unifi docs]: /integrations/unifi/ +[unifiprotect docs]: /integrations/unifiprotect/ +[universal docs]: /integrations/universal/ +[update docs]: /integrations/update/ +[uptime docs]: /integrations/uptime/ +[usb docs]: /integrations/usb/ +[utility_meter docs]: /integrations/utility_meter/ +[vacuum docs]: /integrations/vacuum/ +[velbus docs]: /integrations/velbus/ +[verisure docs]: /integrations/verisure/ +[voip docs]: /integrations/voip/ +[water_heater docs]: /integrations/water_heater/ +[weather docs]: /integrations/weather/ +[webhook docs]: /integrations/webhook/ +[webostv docs]: /integrations/webostv/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whirlpool docs]: /integrations/whirlpool/ +[wirelesstag docs]: /integrations/wirelesstag/ +[wiz docs]: /integrations/wiz/ +[wled docs]: /integrations/wled/ +[workday docs]: /integrations/workday/ +[ws66i docs]: /integrations/ws66i/ +[wyoming docs]: /integrations/wyoming/ +[xbox docs]: /integrations/xbox/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xmpp docs]: /integrations/xmpp/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yeelight docs]: /integrations/yeelight/ +[yi docs]: /integrations/yi/ +[youtube docs]: /integrations/youtube/ +[zamg docs]: /integrations/zamg/ +[zeroconf docs]: /integrations/zeroconf/ +[zerproc docs]: /integrations/zerproc/ +[zha docs]: /integrations/zha/ +[zone docs]: /integrations/zone/ +[zwave_js docs]: /integrations/zwave_js/ \ No newline at end of file diff --git a/source/common-tasks/general.markdown b/source/common-tasks/general.markdown new file mode 100644 index 00000000000..08405a79f43 --- /dev/null +++ b/source/common-tasks/general.markdown @@ -0,0 +1,8 @@ +--- +title: "Common tasks - installation independent" +description: "Common tasks" +installation_name: "Installation independent" +--- +This section provides tasks that do not depend on a specific Home Assistant installation type or a specific integration. They may be referenced in other procedures. + +{% include common-tasks/enable_entities.md %} \ No newline at end of file diff --git a/source/dashboards/views.markdown b/source/dashboards/views.markdown index 95d44dd5784..77d9efb8614 100644 --- a/source/dashboards/views.markdown +++ b/source/dashboards/views.markdown @@ -18,7 +18,7 @@ Click the `+` button in the top menu bar. You can link to one view from a card in another view when using cards that support navigation (`navigation_path`). The string supplied here will be appended to the string `/lovelace/` to create the path to the view. Do not use special characters in paths. Do not begin a path with a number. This will cause the parser to read your path as a view index. -#### Example +### Example View configuration: @@ -42,7 +42,7 @@ Picture card configuration: If you define a view icon, the icon instead of the title will be displayed, the title will then be used as a tool-tip. -#### Example +### Example ```yaml - title: Garden @@ -53,7 +53,7 @@ If you define a view icon, the icon instead of the title will be displayed, the You can specify the visibility of views as a whole or per-user. (Note: This is only for the display of the tabs. The URL path is still accessible) -#### Example +### Example ```yaml views: @@ -88,7 +88,7 @@ user: You can change the layout of a view by using a different view type. The default is [`masonry`](/dashboards/masonry). -#### Example +### Example ```yaml - title: Map @@ -104,7 +104,7 @@ You can change the layout of a view by using a different view type. The default Set a separate [theme](/integrations/frontend/#themes) for the view and its cards. -#### Example +### Example ```yaml - title: Home @@ -115,7 +115,7 @@ Set a separate [theme](/integrations/frontend/#themes) for the view and its card You can style the background of your views with a [theme](/integrations/frontend/#themes). You can use the CSS variable `lovelace-background`. For wallpapers you probably want to use the example below, more options can be found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/background). -#### Example +### Example ```yaml # Example configuration.yaml entry @@ -134,7 +134,7 @@ By default, clicking on back button will navigate to the previous view but a cus You can access subviews from other parts of your dashboard by using [cards that support the `navigate` action](/dashboards/actions). -#### Example +### Example Simple subview: @@ -207,7 +207,7 @@ views: type: string {% endconfiguration %} -#### Example +### Example View configuration: diff --git a/source/examples/index.markdown b/source/examples/index.markdown index ed4f75ad7dd..68f469c9817 100644 --- a/source/examples/index.markdown +++ b/source/examples/index.markdown @@ -42,9 +42,9 @@ This is a list of the most popular [blueprints](/docs/automation/using_blueprint {% for recipe in examples %} {% if recipe.ha_category == category %} {% if recipe.ha_external_link %} - * [{{recipe.title}} ]({{recipe.ha_external_link}}) + - [{{recipe.title}} ]({{recipe.ha_external_link}}) {% else %} - * [{{recipe.title}}]({{recipe.url}}) + - [{{recipe.title}}]({{recipe.url}}) {% endif %} {% endif %} {% endfor %} diff --git a/source/getting-started/concepts-terminology.markdown b/source/getting-started/concepts-terminology.markdown index 9fd4aac1130..27de91c3e7e 100644 --- a/source/getting-started/concepts-terminology.markdown +++ b/source/getting-started/concepts-terminology.markdown @@ -24,9 +24,9 @@ Once an integration has been added, the hardware and/or data are represented in Devices are a logical grouping for one or more entities. A device may represent a physical device and the device may have one or more sensors which appear as entities associated to the device. For example, a motion sensor is represented as a device and the motion may provide motion detection, temperature and light levels as entities. Entities have states such as on when motion is detected and off when there is no motion. Devices and entities are used throughout Home Assistant. To name a few examples: -* [Dashboards](#dashboards) can show a state of an entity like if a light bulb is on or off as well as buttons that interact with devices like turning a light bulb on or off. -* An [automation](#automations) can be triggered from a state change on an entity e.g. a light turning on and control another device or entity. -* A predefined setting for light device saved as a [scene](#scenes). +- [Dashboards](#dashboards) can show a state of an entity like if a light bulb is on or off as well as buttons that interact with devices like turning a light bulb on or off. +- An [automation](#automations) can be triggered from a state change on an entity e.g. a light turning on and control another device or entity. +- A predefined setting for light device saved as a [scene](#scenes). ![Home Assistant Device](/images/getting-started/home-assistant-device.png) diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown index 48a17e6902f..81e5c728197 100644 --- a/source/getting-started/onboarding.markdown +++ b/source/getting-started/onboarding.markdown @@ -20,26 +20,26 @@ In this step, you will create the owner account of Home Assistant. This account ![Set your username and password.](/images/getting-started/username.png) -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. +2. 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. ![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/). +3. 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) -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. +4. 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. ![Discovery of devices on your network.](/images/getting-started/onboarding_devices.png) -1. Finally, select **Finish**. - * Now you're brought to the Home Assistant web interface. This screen will show all of your devices. +5. 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/images/assist/android_multi-server_01.png b/source/images/assist/android_multi-server_01.png new file mode 100644 index 00000000000..378a074d121 Binary files /dev/null and b/source/images/assist/android_multi-server_01.png differ diff --git a/source/images/assist/android_watch_1.png b/source/images/assist/android_watch_1.png index 9c921883a26..c9c893f8c8e 100644 Binary files a/source/images/assist/android_watch_1.png and b/source/images/assist/android_watch_1.png differ diff --git a/source/images/assist/android_watch_2.png b/source/images/assist/android_watch_2.png index 769bcc4c362..571542e6704 100644 Binary files a/source/images/assist/android_watch_2.png and b/source/images/assist/android_watch_2.png differ diff --git a/source/images/assist/android_watch_3.png b/source/images/assist/android_watch_3.png index 7614b7ca75b..4ca65efdbda 100644 Binary files a/source/images/assist/android_watch_3.png and b/source/images/assist/android_watch_3.png differ diff --git a/source/images/assist/android_watch_5.png b/source/images/assist/android_watch_5.png new file mode 100644 index 00000000000..b63cc600805 Binary files /dev/null and b/source/images/assist/android_watch_5.png differ diff --git a/source/images/assist/android_watch_6.png b/source/images/assist/android_watch_6.png new file mode 100644 index 00000000000..beb34a7d8f4 Binary files /dev/null and b/source/images/assist/android_watch_6.png differ diff --git a/source/images/assist/android_watch_7.png b/source/images/assist/android_watch_7.png new file mode 100644 index 00000000000..3f741d273f8 Binary files /dev/null and b/source/images/assist/android_watch_7.png differ diff --git a/source/images/assist/assistant-debug-06.png b/source/images/assist/assistant-debug-06.png new file mode 100644 index 00000000000..ebc0ab10f86 Binary files /dev/null and b/source/images/assist/assistant-debug-06.png differ diff --git a/source/images/assist/assistant-debug-pipeline-03.png b/source/images/assist/assistant-debug-pipeline-03.png index 3f7bf927aa5..bbc77885f85 100644 Binary files a/source/images/assist/assistant-debug-pipeline-03.png and b/source/images/assist/assistant-debug-pipeline-03.png differ diff --git a/source/images/assist/assistant-openai-mario-03.png b/source/images/assist/assistant-openai-mario-03.png index 8617716b965..5839e85bca3 100644 Binary files a/source/images/assist/assistant-openai-mario-03.png and b/source/images/assist/assistant-openai-mario-03.png differ diff --git a/source/images/assist/assistant-openai-mario-04.png b/source/images/assist/assistant-openai-mario-04.png index f81416c275f..53035e81736 100644 Binary files a/source/images/assist/assistant-openai-mario-04.png and b/source/images/assist/assistant-openai-mario-04.png differ diff --git a/source/images/assist/assistant-openai-mario-config.png b/source/images/assist/assistant-openai-mario-config.png index 0d81b88bad3..d197a408624 100644 Binary files a/source/images/assist/assistant-openai-mario-config.png and b/source/images/assist/assistant-openai-mario-config.png differ diff --git a/source/images/assist/esp32-atom_silence_detection_01.png b/source/images/assist/esp32-atom_silence_detection_01.png new file mode 100644 index 00000000000..4ec2894477b Binary files /dev/null and b/source/images/assist/esp32-atom_silence_detection_01.png differ diff --git a/source/images/assist/m5stack-atom-echo-discovered-33.png b/source/images/assist/m5stack-atom-echo-discovered-33.png index b0738836f7e..0cd8cf4a8b8 100644 Binary files a/source/images/assist/m5stack-atom-echo-discovered-33.png and b/source/images/assist/m5stack-atom-echo-discovered-33.png differ diff --git a/source/images/assist/piper-whisper-install-new-03.png b/source/images/assist/piper-whisper-install-new-03.png index b7fe1da11f9..e9052e69c47 100644 Binary files a/source/images/assist/piper-whisper-install-new-03.png and b/source/images/assist/piper-whisper-install-new-03.png differ diff --git a/source/images/assist/voip_configuration.png b/source/images/assist/voip_configuration.png index 8e874ef7bb3..e39c35363ba 100644 Binary files a/source/images/assist/voip_configuration.png and b/source/images/assist/voip_configuration.png differ diff --git a/source/images/assist/voip_device_available.png b/source/images/assist/voip_device_available.png index f15efc75d8f..25567aa4a18 100644 Binary files a/source/images/assist/voip_device_available.png and b/source/images/assist/voip_device_available.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/atom_echo.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/atom_echo.png new file mode 100644 index 00000000000..fcd0c4d9d89 Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/atom_echo.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/esphome_config.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/esphome_config.png new file mode 100644 index 00000000000..6265c733517 Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/esphome_config.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/multi-server.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/multi-server.png new file mode 100644 index 00000000000..de2da6ba8a9 Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/multi-server.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/phone-ha.jpg b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/phone-ha.jpg new file mode 100644 index 00000000000..6b7d7a9bd2f Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/phone-ha.jpg differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/phone.jpg b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/phone.jpg new file mode 100644 index 00000000000..d293dc1379b Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/phone.jpg differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/sentence-debug.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/sentence-debug.png new file mode 100644 index 00000000000..b86eebdc497 Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/sentence-debug.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/sentence-trigger.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/sentence-trigger.png new file mode 100644 index 00000000000..4c31d43c02f Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/sentence-trigger.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/social.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/social.png new file mode 100644 index 00000000000..21e44cd4a46 Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/social.png differ diff --git a/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/watch.png b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/watch.png new file mode 100644 index 00000000000..be66e34802f Binary files /dev/null and b/source/images/blog/2023-07-20-year-of-the-voice-chapter-3/watch.png differ diff --git a/source/images/blog/2023-07/assist-action.gif b/source/images/blog/2023-07/assist-action.gif new file mode 100644 index 00000000000..eb176428d2e Binary files /dev/null and b/source/images/blog/2023-07/assist-action.gif differ diff --git a/source/images/blog/2023-07/assist-action.png b/source/images/blog/2023-07/assist-action.png new file mode 100644 index 00000000000..6ba476cdb6d Binary files /dev/null and b/source/images/blog/2023-07/assist-action.png differ diff --git a/source/images/blog/2023-07/broken-automation-details.png b/source/images/blog/2023-07/broken-automation-details.png new file mode 100644 index 00000000000..a1df984702c Binary files /dev/null and b/source/images/blog/2023-07/broken-automation-details.png differ diff --git a/source/images/blog/2023-07/broken-automation.png b/source/images/blog/2023-07/broken-automation.png new file mode 100644 index 00000000000..db6460213af Binary files /dev/null and b/source/images/blog/2023-07/broken-automation.png differ diff --git a/source/images/blog/2023-07/choose-used-timezone-in-ui.png b/source/images/blog/2023-07/choose-used-timezone-in-ui.png new file mode 100644 index 00000000000..56fea1c3597 Binary files /dev/null and b/source/images/blog/2023-07/choose-used-timezone-in-ui.png differ diff --git a/source/images/blog/2023-07/cut-and-paste-card.png b/source/images/blog/2023-07/cut-and-paste-card.png new file mode 100644 index 00000000000..a7b1f36bee8 Binary files /dev/null and b/source/images/blog/2023-07/cut-and-paste-card.png differ diff --git a/source/images/blog/2023-07/dashboard-teleport.gif b/source/images/blog/2023-07/dashboard-teleport.gif new file mode 100644 index 00000000000..abd973e9d87 Binary files /dev/null and b/source/images/blog/2023-07/dashboard-teleport.gif differ diff --git a/source/images/blog/2023-07/entity-dialog-lock.gif b/source/images/blog/2023-07/entity-dialog-lock.gif new file mode 100644 index 00000000000..ed06f6a6751 Binary files /dev/null and b/source/images/blog/2023-07/entity-dialog-lock.gif differ diff --git a/source/images/blog/2023-07/image-entity.png b/source/images/blog/2023-07/image-entity.png new file mode 100644 index 00000000000..f00cb86b9ac Binary files /dev/null and b/source/images/blog/2023-07/image-entity.png differ diff --git a/source/images/blog/2023-07/integration-dashboard-improvements.png b/source/images/blog/2023-07/integration-dashboard-improvements.png new file mode 100644 index 00000000000..e6970d2e9d3 Binary files /dev/null and b/source/images/blog/2023-07/integration-dashboard-improvements.png differ diff --git a/source/images/blog/2023-07/matter-climate-nest-thermostat.png b/source/images/blog/2023-07/matter-climate-nest-thermostat.png new file mode 100644 index 00000000000..b7601e6390c Binary files /dev/null and b/source/images/blog/2023-07/matter-climate-nest-thermostat.png differ diff --git a/source/images/blog/2023-07/new-script-dialog.png b/source/images/blog/2023-07/new-script-dialog.png new file mode 100644 index 00000000000..d34b2fc1100 Binary files /dev/null and b/source/images/blog/2023-07/new-script-dialog.png differ diff --git a/source/images/blog/2023-07/self-sufficiency.png b/source/images/blog/2023-07/self-sufficiency.png new file mode 100644 index 00000000000..bbc91cf0c64 Binary files /dev/null and b/source/images/blog/2023-07/self-sufficiency.png differ diff --git a/source/images/blog/2023-07/sentence-trigger.png b/source/images/blog/2023-07/sentence-trigger.png new file mode 100644 index 00000000000..f66b096d7e5 Binary files /dev/null and b/source/images/blog/2023-07/sentence-trigger.png differ diff --git a/source/images/blog/2023-07/service-response-example.png b/source/images/blog/2023-07/service-response-example.png new file mode 100644 index 00000000000..2d3787e4f47 Binary files /dev/null and b/source/images/blog/2023-07/service-response-example.png differ diff --git a/source/images/blog/2023-07/social.png b/source/images/blog/2023-07/social.png new file mode 100644 index 00000000000..6a84d5e66e1 Binary files /dev/null and b/source/images/blog/2023-07/social.png differ diff --git a/source/images/docs/developer-tools/Assist.png b/source/images/docs/developer-tools/Assist.png new file mode 100644 index 00000000000..61bd212c468 Binary files /dev/null and b/source/images/docs/developer-tools/Assist.png differ diff --git a/source/images/docs/developer-tools/statistics_issue.png b/source/images/docs/developer-tools/statistics_issue.png new file mode 100644 index 00000000000..653c14a7a6d Binary files /dev/null and b/source/images/docs/developer-tools/statistics_issue.png differ diff --git a/source/images/frontpage/year-of-the-voice-chapter-3.png b/source/images/frontpage/year-of-the-voice-chapter-3.png new file mode 100644 index 00000000000..8264549194c Binary files /dev/null and b/source/images/frontpage/year-of-the-voice-chapter-3.png differ diff --git a/source/images/getting-started/integrations-new.png b/source/images/getting-started/integrations-new.png index 15e92e6ef0d..8252d691cd5 100644 Binary files a/source/images/getting-started/integrations-new.png and b/source/images/getting-started/integrations-new.png differ diff --git a/source/images/integrations/switch_as_x/Entities_Properties.png b/source/images/integrations/switch_as_x/Entities_Properties.png index 268fe89c5e6..b875115da86 100644 Binary files a/source/images/integrations/switch_as_x/Entities_Properties.png and b/source/images/integrations/switch_as_x/Entities_Properties.png differ diff --git a/source/images/integrations/unifiprotect/user.png b/source/images/integrations/unifiprotect/user.png index 1a4f2daa72b..52141b59bfc 100644 Binary files a/source/images/integrations/unifiprotect/user.png and b/source/images/integrations/unifiprotect/user.png differ diff --git a/source/images/integrations/z-wave/z-wave-device-info.png b/source/images/integrations/z-wave/z-wave-device-info.png index 2138c26241f..e059e78b87b 100644 Binary files a/source/images/integrations/z-wave/z-wave-device-info.png and b/source/images/integrations/z-wave/z-wave-device-info.png differ diff --git a/source/images/integrations/z-wave/z-wave-integration-menu.png b/source/images/integrations/z-wave/z-wave-integration-menu.png index 55295e6efea..a5bb376e8fd 100644 Binary files a/source/images/integrations/z-wave/z-wave-integration-menu.png and b/source/images/integrations/z-wave/z-wave-integration-menu.png differ diff --git a/source/images/screenshots/developer-tools.png b/source/images/screenshots/developer-tools.png index d32b740e7d9..4c5dabc0218 100644 Binary files a/source/images/screenshots/developer-tools.png and b/source/images/screenshots/developer-tools.png differ diff --git a/source/images/screenshots/enable_entities_01.png b/source/images/screenshots/enable_entities_01.png new file mode 100644 index 00000000000..65745f68fae Binary files /dev/null and b/source/images/screenshots/enable_entities_01.png differ diff --git a/source/images/screenshots/enable_entities_03.png b/source/images/screenshots/enable_entities_03.png new file mode 100644 index 00000000000..a2717acea36 Binary files /dev/null and b/source/images/screenshots/enable_entities_03.png differ diff --git a/source/index.html b/source/index.html index 8f4c1f67b04..cab9c9706f3 100644 --- a/source/index.html +++ b/source/index.html @@ -90,12 +90,12 @@ feedback: false
    - +
    -
    \ No newline at end of file +
    diff --git a/source/installation/raspberrypi.markdown b/source/installation/raspberrypi.markdown index 96d40a31821..4b5d682d34f 100644 --- a/source/installation/raspberrypi.markdown +++ b/source/installation/raspberrypi.markdown @@ -36,30 +36,30 @@ If Raspberry Pi Imager is not supported by your platform, you can use [Balena Et 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. +2. Open the Raspberry Pi Imager. ![Open Raspberry Pi Imager](/images/installation/rpi-imager-start.png) -1. Choose the operating system: +3. Choose the operating system: 1. Select **Choose OS**. - 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). + 2. Select **Other specific-purpose OS** > **Home assistants and home automation** > **Home Assistant**. + 3. 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: +4. 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. + 2. Select your SD card. ![Select the storage](/images/installation/rpi-select-sd-card.png) -1. Write the installer onto the SD card: +5. Write the installer onto the SD card: 1. To start the process, select **Write**. - 1. Wait for the Home Assistant OS to be written to the SD card. + 2. Wait for the Home Assistant OS to be written to the SD card. ![Select write](/images/installation/rpi-select-write.png) -1. Eject the SD card. +6. Eject the SD card. ### Start up your Raspberry Pi 1. Insert the SD card into your Raspberry Pi. -1. Plug in an Ethernet cable that is connected to the network. -1. Connect the power supply to start up the device. +2. Plug in an Ethernet cable that is connected to the network. +3. Connect the power supply to start up the device. -1. In the browser of your desktop system, within a few minutes you will be able to reach your new Home Assistant at homeassistant.local:8123. +4. In the browser of your desktop system, within a few minutes you will be able to reach your new Home Assistant at homeassistant.local:8123.
    If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or `http://X.X.X.X:8123` (replace X.X.X.X with your Raspberry Pi’s IP address). @@ -79,11 +79,11 @@ With the Home Assistant Operating System installed and accessible, you can now c Use this procedure if Raspberry Pi Imager is not supported by your platform. 1. Insert the SD card into the computer. Note: the contents of the card will be overwritten. -1. Download and start Balena Etcher. You may need to run it with administrator privileges on Windows. -1. Select **Flash from URL**. +2. Download and start Balena Etcher. You may need to run it with administrator privileges on Windows. +3. Select **Flash from URL**. ![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1.png) -1. Copy the correct URL for the Raspberry Pi 3 or 4 (Note: there are 2 different links below!): +4. Copy the correct URL for the Raspberry Pi 3 or 4 (Note: there are 2 different links below!): {% tabbed_block %} {% for variant in site.installation.types[page.installation_type].variants %} @@ -101,13 +101,13 @@ _Select and copy the URL or use the "copy" button that appear when you hover it. 1. Paste the URL for the image into Balena Etcher and select **OK**. ![Screenshot of the Etcher software showing the URL bar with a URL pasted in.](/images/installation/etcher2.png) -1. When Balena Etcher has downloaded the image, select **Select target**. +2. When Balena Etcher has downloaded the image, select **Select target**. ![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png) -1. Select the SD card you want to use for your installation. +3. Select the SD card you want to use for your installation. ![Screenshot of the Etcher software showing teh targets available.](/images/installation/etcher4.png) -1. Select **Flash!** to start writing the image. +4. Select **Flash!** to start writing the image. ![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png) -1. Once Balena Etcher has finished writing the image, you will see a confirmation. +5. Once 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) diff --git a/source/more-info/unhealthy/supervisor.markdown b/source/more-info/unhealthy/supervisor.markdown index 36d0c4d225d..3de8e025565 100644 --- a/source/more-info/unhealthy/supervisor.markdown +++ b/source/more-info/unhealthy/supervisor.markdown @@ -9,7 +9,7 @@ This can happen when there was a network issue during the startup of the Supervi ## The solution -Manually update the Supervisor. This can be done from the {% my configuration title="Configuration" %} panel. On the card for "Supervisor", there is a button to update the Supervisor. +Manually update the Supervisor, in case there is an update pending. This can be done from the {% my updates %} panel. This can also be done with the CLI, by running the following command: ```bash diff --git a/source/skyconnect/index.html b/source/skyconnect/index.html index ff003239a03..c7c76d27ceb 100644 --- a/source/skyconnect/index.html +++ b/source/skyconnect/index.html @@ -258,6 +258,21 @@ frontpage_image: /images/skyconnect/skyconnect-cover.png
    + +
    +
    +
    🇨🇿
    +
    ALZA
    +
    Located in the Czech Republic
    +
    + + + +
    +
    +
    diff --git a/source/tag/index.markdown b/source/tag/index.markdown index a49fc99341e..3ea422058d2 100644 --- a/source/tag/index.markdown +++ b/source/tag/index.markdown @@ -11,8 +11,8 @@ You've reached this page because you navigated to an NFC, QR Code, or other URL- If you arrived here after scanning a tag on iOS, and you have the [Home Assistant Companion App](https://companion.home-assistant.io) installed, you may need to activate Universal Links: 1. Long-press on [this link](https://www.home-assistant.io/tag/example_from_documentation) -1. Choose "Open in 'Home Assistant'" -1. Attempt to scan the tag again +2. Choose "Open in 'Home Assistant'" +3. Attempt to scan the tag again If you do not have it, you must [install the iOS app](https://apps.apple.com/us/app/home-assistant/id1099568401?mt=8) for these tags to function. @@ -21,8 +21,8 @@ If you do not have it, you must [install the iOS app](https://apps.apple.com/us/ If you arrived here after scanning a tag on Android, and you have the [Home Assistant Companion App](https://companion.home-assistant.io) installed, you may need to change the link settings. 1. Launch Settings and navigate to "Apps & Notifications", revealing the "Advanced" section if necessary -1. Navigate to "Default apps" and then "Opening links" -1. Open the "Home Assistant" settings and choose "Clear defaults" -1. Attempt to scan the tag again, choosing to open in Home Assistant +2. Navigate to "Default apps" and then "Opening links" +3. Open the "Home Assistant" settings and choose "Clear defaults" +4. Attempt to scan the tag again, choosing to open in Home Assistant If you do not have it, you must [install the Android app](https://play.google.com/store/apps/details?id=io.homeassistant.companion.android) for these tags to function. diff --git a/source/tos/index.markdown b/source/tos/index.markdown index c1080767738..55e42aaf668 100644 --- a/source/tos/index.markdown +++ b/source/tos/index.markdown @@ -16,15 +16,15 @@ If you create an account on the Website, you are responsible for maintaining the If you post material to the Website, post links on the Website, or otherwise make (or allow any third party to make) material available by means of the Website (any such material, "Content"), You are entirely responsible for the content of, and any harm resulting from, that Content. That is the case regardless of whether the Content in question constitutes text, graphics, an audio file, or computer software. By making Content available, you represent and warrant that: -* the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party; -* if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content; -* you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms; -* the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content; -* the Content is not spam, is not machine- or randomly-generated, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing); -* the Content is not pornographic, does not contain threats or incite violence, and does not violate the privacy or publicity rights of any third party; -* your content is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, blogs and web sites, and similar unsolicited promotional methods; -* your content is not named in a manner that misleads your readers into thinking that you are another person or company; and -* you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Home Assistant or otherwise. +- the downloading, copying and use of the Content will not infringe the proprietary rights, including but not limited to the copyright, patent, trademark or trade secret rights, of any third party; +- if your employer has rights to intellectual property you create, you have either (i) received permission from your employer to post or make available the Content, including but not limited to any software, or (ii) secured from your employer a waiver as to all rights in or to the Content; +- you have fully complied with any third-party licenses relating to the Content, and have done all things necessary to successfully pass through to end users any required terms; +- the Content does not contain or install any viruses, worms, malware, Trojan horses or other harmful or destructive content; +- the Content is not spam, is not machine- or randomly-generated, and does not contain unethical or unwanted commercial content designed to drive traffic to third party sites or boost the search engine rankings of third party sites, or to further unlawful acts (such as phishing) or mislead recipients as to the source of the material (such as spoofing); +- the Content is not pornographic, does not contain threats or incite violence, and does not violate the privacy or publicity rights of any third party; +- your content is not getting advertised via unwanted electronic messages such as spam links on newsgroups, email lists, blogs and web sites, and similar unsolicited promotional methods; +- your content is not named in a manner that misleads your readers into thinking that you are another person or company; and +- you have, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Home Assistant or otherwise. ## 3. User Content License diff --git a/source/voice_control/android.markdown b/source/voice_control/android.markdown index 8362020498b..f7fbe58bfda 100644 --- a/source/voice_control/android.markdown +++ b/source/voice_control/android.markdown @@ -2,27 +2,135 @@ title: "Assist on Android" --- +## Assist on Android phones + +Assist is available on Android phones and tablets using the [Home Assistant Companion App](https://companion.home-assistant.io/docs/getting_started/) for Android. + +### Prerequisites + +- The devices you want to control with Assist are [exposed to Assist](/voice_control/voice_remote_expose_devices/) + +### Setting up Home Assistant Assist as default assistant app on an Android phone + +This section was written using an Android 13. Depending on your flavor of Android, the exact steps may vary. + +To define Home Assistant Assist as default assistant app, follow these steps: + +1. On the Android phone, go to **Settings** > **Apps** > **Default apps**. +2. Under **Digital assistant app**, select **Default digital assistant app**. + - On some Android versions, this might be under **Digital & voice input** > **Default digital assistant app** > **Voice Assistant**. +3. Select **Home Assistant**. + - On some Android versions, you might be able to change the assistants language settings here by selecting the cogwheel. +4. Go back one step. The **Default digital assistant app** should now show *Home Assistant* as the default. +5. Leave the **Settings**. +6. Start Assist using the gesture to start an assistant. The gesture may differ depending on the version. + - Swipe from the bottom left corner. + - Long press the power button. + - Hold the home button (square button at the bottom). +7. You can now also start Assist from your lock screen. + + +### Using Assist with multiple Home Assistant servers + +Once Assist has been defined as the default digital assistant on your phone, you can use Assist with multiple servers. This can be useful for example, if you maintain a Home Assistant instance for someone else's home. + +1. Make sure you have a voice assistant set up on the Home Assistant servers. +2. Make sure the servers are added to the companion app. + - On the Android phone, go to **Settings** > **Companion app** and select **Add server**. + - From the list, select the additional server. +3. Start Assist using the gesture to start an assistant. The gesture may differ depending on the version. + - Swipe from the bottom left corner. + - Long press the power button. + - Hold the home button (square button at the bottom). +4. Open the assistant drop-down menu. + + ![Using Assist with multiple servers](/images/assist/android_multi-server_01.png) + +5. Select the assistant from the instance you want to speak to. + - Speak your command. + +### Using Assist via shortcut + +1. On your phone, open the **Widgets** panel. +2. From the list, select **Home Assistant**. +3. Long tap the **Assist** icon and drag it onto your home screen. +4. Select the server and the assistant. +5. If you want to be able to use voice control, enable the **Start listening** toggle. +6. Repeat this procedure for each server you want to connect to, for example, if you support someone else's home. + +## Assist on Wear OS + Assist is available on Wear OS using the [Home Assistant Companion App](https://companion.home-assistant.io/) for Android and "Assist" tile. -## Installation +### Setting up Assist on Wear OS -After [installing the companion app](https://companion.home-assistant.io/docs/getting_started/) and connecting it to your Home Assistant, visit your watch companion app or the Wear OS app and click "Add tile" inside the Tiles area. Select the "Assist" tile to add it to your watch: +The way how Assist can be set up on your phone may differ depending on your version of Wear OS. -![Conversation tile](/images/assist/android_tile.png) +1. After [installing the companion app](https://companion.home-assistant.io/docs/getting_started/) and connecting it to your Home Assistant, Assist might appear automatically on the **Apps screen**. +2. If it does not, visit your watch companion app or the Wear OS app and select **Add tile** inside the **Tiles** area. +3. Tap the **Assist** tile to add it to your watch: + + ![Conversation tile](/images/assist/android_tile.png) + +### Adding Assist to the watch face + +1. On your phone, open the **Watch** app and select **Watch faces**. +2. Make sure you select a watch face that supports complications (little shortcut icons). +3. Tap **Edit**. +4. In the **Complications** section, select one of the slots and choose **Assist**. + - If you just recently added the Home Assistant app, Assist may not be listed yet. + - After rebooting your watch, under **Complications**, there should be a section with Home Assistant icons. +5. Save your changes. You should now see Assist as a complication on your watch face. + + ![Assist complication](/images/assist/android_watch_5.png) -## Usage +### Using Assist on Wear OS -Swipe left on your watch until the "Assist" button is visible: +1. On your watch, swipe left until the **Assist** button is visible. + + ![Assist button](/images/assist/android_watch_1.png) -![Assist button](/images/assist/android_watch_1.png) +2. After tapping **Assist**, wait for **How can I assist?** to be displayed and the microphone to start pulsing. + + ![How can I assist](/images/assist/android_watch_2.png) -After pressing "Assist", wait for "Speak Now" to be displayed: +3. Speak your command. + + ![Assist speak your command](/images/assist/android_watch_3.png) -![Assist button](/images/assist/android_watch_2.png) +4. To change the assistant, tap the current assistant (**Home Assistant Cloud** in the screenshot above). + - Select the assistant from the list. + + ![List of assistants](/images/assist/android_watch_6.png) -Speak your command, then press the "play" icon on the right to send the command to Home Assistant: -![Assist button](/images/assist/android_watch_3.png) +### Setting up Home Assistant Assist as default assistant app on a Wear OS watch + +This procedure was written using Wear OS version 3.5. The exact steps may vary depending on the watch and software version. + +To define Home Assistant Assist as default assistant app, follow these steps: + +1. On the watch, navigate to the **Apps screen** and select the cogwheel. +2. Go to **Apps** > **Choose default apps** > **Digital assistant app**. +3. From the list, select **Home Assistant**. +4. When you go back one step, under **Default app**, it now says **HA: Assist**. +5. On some watches, you can now start Assist by pressing the crown key. + - If this does not work, you can manually assign Assist to a button. +6. Now, use your key and speak a command. + +### Assigning a button to Assist + +Depending on your watch, you can assign Assist to a button so that you can start it directly with a long or double press. + +1. On your watch, go to **Settings** > **Advances features** > **Customize keys**. +2. Assign a key: + - To use double press, tap **Home key** > **Double press**. From the list of apps, select **HA: Assist**. + - On a Galaxy watch, if Assist is set as the default, you can use long press. Tap **Home key**, then tap **press and hold**. Select **Assistant**. + - Then long press the home key, and from the selection, select **HA: Assist**. + - Select **Always**. + + ![List of assistants](/images/assist/android_watch_7.png) +3. Now, use your key and speak a command. \ No newline at end of file diff --git a/source/voice_control/builtin_sentences.markdown b/source/voice_control/builtin_sentences.markdown index 0197eeaf27e..a55c2ed0ad7 100644 --- a/source/voice_control/builtin_sentences.markdown +++ b/source/voice_control/builtin_sentences.markdown @@ -5,22 +5,22 @@ title: "Assist - Default Sentences" Home Assistant comes with built-in sentences [contributed by the community](https://github.com/home-assistant/intents/) for [dozens of languages](https://developers.home-assistant.io/docs/voice/intent-recognition/supported-languages). These sentences allow you to: -* **Turn entities on and off** - * *"turn on the living room light"* - * *"turn off ceiling fan"* -* **Open and close covers** - * *"Close the garage door"* - * *"Open kitchen window"* -* **Set the brightness and color of lights** - * *"Change kitchen lights brightness to 50%"* - * *"Set bed light to green"* +- **Turn entities on and off** + - *"turn on the living room light"* + - *"turn off ceiling fan"* +- **Open and close covers** + - *"Close the garage door"* + - *"Open kitchen window"* +- **Set the brightness and color of lights** + - *"Change kitchen lights brightness to 50%"* + - *"Set bed light to green"* In addition to individual entities, commands can target **areas**: -* *"turn on all lights in the living room"* -* *"open windows in the kitchen"* -* *"change kitchen brightness to 50%"* -* *"set bedroom lights to green"* +- *"turn on all lights in the living room"* +- *"open windows in the kitchen"* +- *"change kitchen brightness to 50%"* +- *"set bedroom lights to green"* Entity [aliases](/voice_control/aliases) are also matched so multiple names can be used, even in different languages. @@ -34,27 +34,27 @@ If the voice assistant doesn't understand you, you may need to rephrase your sen To get an idea of the specific sentences that are supported for your language, you can do the following: 1. Take a look at the test sentences: - * On github, in the [tests](https://github.com/home-assistant/intents/tree/main/sentences) folder, open the subfolder for your language. - * Look through the test files to see the example sentences that have been tested. - * The second part of the file name shows the {% term intent %}, the first part shows the domain. For some domains, such as covers, fans, and light, there are specific sentences. + - On github, in the [tests](https://github.com/home-assistant/intents/tree/main/sentences) folder, open the subfolder for your language. + - Look through the test files to see the example sentences that have been tested. + - The second part of the file name shows the {% term intent %}, the first part shows the domain. For some domains, such as covers, fans, and light, there are specific sentences. The other domains are covered by the generic *homeassistant_*. ![Example of a folder of assistant sentence test files](/images/assist/intents-test-files.png) - * The screenshot below shows sentences used to test the command to turn on the lights. Note that *Living room* here is just a place holder. + - The screenshot below shows sentences used to test the command to turn on the lights. Note that *Living room* here is just a place holder. It could be any area that you have in your home. ![Example of a set of test sentences](/images/assist/assist-test-file-light-turn-on.png) 2. View the sentence definition: - * On github, in the [tests](https://github.com/home-assistant/intents/tree/main/tests) folder, open the subfolder for your language. - * Open the file of interest. + - On github, in the [tests](https://github.com/home-assistant/intents/tree/main/tests) folder, open the subfolder for your language. + - Open the file of interest. ![Sentences definition for turning on the light](/images/assist/assist-sentence-definition-01.png) - * () mean alternative elements. - * [] mean optional elements. - * <> mean an expansion rule. The view these rules, search for `expansion_rules` in the [_common.yaml](https://github.com/home-assistant/intents/blob/main/sentences/en/_common.yaml) file. - * The syntax is explained in detail in the [template sentence syntax documentation](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax/). + - () mean alternative elements. + - [] mean optional elements. + - <> mean an expansion rule. The view these rules, search for `expansion_rules` in the [_common.yaml](https://github.com/home-assistant/intents/blob/main/sentences/en/_common.yaml) file. + - The syntax is explained in detail in the [template sentence syntax documentation](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax/). diff --git a/source/voice_control/custom_sentences.markdown b/source/voice_control/custom_sentences.markdown index dfb4f99553f..4fc286d98bb 100644 --- a/source/voice_control/custom_sentences.markdown +++ b/source/voice_control/custom_sentences.markdown @@ -12,22 +12,24 @@ This is the easiest method to get started with custom sentences for automations. If you have not set up voice control yet, set up the hardware first. For instructions, refer to one of the following tutorials: -- [World's most private voice assistant](/voice_control/worlds-most-private-voice-assistant/): Using a phone. -- [$13 voice remote for Home Assistant](/voice_control/thirteen-usd-voice-remote/): Using a button with speaker and mic. +- [World's most private voice assistant](/voice_control/worlds-most-private-voice-assistant/): Using a classic landline phone +- [$13 voice remote for Home Assistant](/voice_control/thirteen-usd-voice-remote/): Using a button with speaker and mic +- [Assist for Apple](/voice_control/apple/): Using your iPhone, Mac, or Apple watch +- [Assist for Android](/voice_control/android/): Using your Android phone, tablet, or a Wear OS watch ### To add a custom sentence to trigger an automation 1. Under **{% my automations title="Settings > Automations & Scenes" %}**, in the bottom right corner, select **Create automation**. -1. In the **Trigger** drop-down menu, select **Sentence**. -1. Enter one or more sentences that you would like to trigger an automation. - * Do not use punctuation. - * You can add multiple sentences. They will then all trigger that automation. +2. In the **Trigger** drop-down menu, select **Sentence**. +3. Enter one or more sentences that you would like to trigger an automation. + - Do not use punctuation. + - You can add multiple sentences. They will then all trigger that automation. ![Add a custom sentence](/images/assist/sentence_trigger_01.png) -1. To test the automation, go to **Overview** and in the top right corner, open Assist. +4. To test the automation, go to **Overview** and in the top right corner, open Assist. - Enter one of the sentences. -1. If it did not work out, checkout the [troubleshooting](/voice_control/troubleshooting/) section. +5. If it did not work out, checkout the [troubleshooting](/voice_control/troubleshooting/) section. - One of the causes could be that the device you're targeting has not been exposed to Assist. -1. Pick up your voice control device and speak the custom sentence. +6. Pick up your voice control device and speak the custom sentence. - Your automation should now be triggered. ## Setting up custom sentences in configuration.yaml diff --git a/source/voice_control/index.markdown b/source/voice_control/index.markdown index de97cccee5b..1a57b837568 100644 --- a/source/voice_control/index.markdown +++ b/source/voice_control/index.markdown @@ -4,7 +4,7 @@ title: Assist - Talking to Home Assistant Assist logo -Assist is our feature to allow you to control Home Assistant using natural language. It is built on top of an open voice foundation and powered by knowledge provided by our community. +Assist is our feature to allow you to control Home Assistant using natural language. It is built on top of an open voice foundation and powered by knowledge provided by our community. _Want to use Home Assistant with Google Assistant or Amazon Alexa? Get started with [Home Assistant Cloud](https://www.nabucasa.com/config/)._ @@ -16,12 +16,13 @@ Assist is available to use on most platforms that can interface with Home Assist - Inside the Home Assistant app in the top-right corner - On Apple devices via [Siri and Assist shortcuts](/voice_control/apple) -- On Wear OS watches using [Assist tile](/voice_control/android) +- On Android phones as the default digital assistant or home screen shortcut +- On Wear OS watches as the default digital assistant or using [Assist tile or complication](/voice_control/android) Did Assist not understand your sentence? [Contribute them.](https://developers.home-assistant.io/docs/voice/intent-recognition/) The Assist icon doesn't show up? Make sure the [conversation](/integrations/conversation/) integration is enabled. If you use YAML for configuration and have removed `default_config:`, the conversation integration may not be included in the config file. - + _Assist was introduced in Home Assistant 2023.2._ diff --git a/source/voice_control/start_assist_from_dashboard.markdown b/source/voice_control/start_assist_from_dashboard.markdown new file mode 100644 index 00000000000..b7cb836d765 --- /dev/null +++ b/source/voice_control/start_assist_from_dashboard.markdown @@ -0,0 +1,18 @@ +--- +title: "Starting Assist from your dashboard" +--- + +If you are using Home Assistant in kiosk mode, for example if you have a tablet mounted on the wall, the Assist icon in the top right corner is not accessible. In this case, use a dashboard button to start Assist. + +## To add an Assist button to the dashboard + +1. On your dashboard, select **Add card** and select the **Button** card. +2. Clear the **Entity** field and give the card a name, such as *Assist - listen*. +3. Select an icon, such as `mdi:account-tie-voice`. +4. From the **Action** dropdown menu, select **Assist**. +5. From the **Assist** dropdown menu, select the assistant you want to use, for example **Home Assistant Cloud**. + - You can use any assistant you have previously set up. + - If you have assistants in different languages, you can add a button for each of these languages. +6. If you are using Assist with your voice, enable **Start listening**. + - If you don't want to use voice but just want to type, you do not need to enable listening. +7. **Save** your new button card. diff --git a/source/voice_control/thirteen-usd-voice-remote.markdown b/source/voice_control/thirteen-usd-voice-remote.markdown index 614149ffb1a..c999d65c422 100644 --- a/source/voice_control/thirteen-usd-voice-remote.markdown +++ b/source/voice_control/thirteen-usd-voice-remote.markdown @@ -11,74 +11,76 @@ your smart home. Issue commands and get responses! ## Required material -* Home Assistant 2023.5 or later -* [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) -* The password to your 2.4 GHz Wi-Fi network -* Chrome (or a Chromium-based browser like Edge) on desktop (not Android/iOS) -* [M5Stack ATOM Echo Development Kit](https://shop.m5stack.com/products/atom-echo-smart-speaker-dev-kit?ref=NabuCasa) -* USB-C cable to connect the ATOM Echo - - +- Home Assistant 2023.5 or later +- [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) +- The password to your 2.4 GHz Wi-Fi network +- Chrome (or a Chromium-based browser like Edge) on desktop (not Android/iOS) +- [M5Stack ATOM Echo Development Kit](https://shop.m5stack.com/products/atom-echo-smart-speaker-dev-kit?ref=NabuCasa) +- USB-C cable to connect the ATOM Echo ## Installing the software onto the ATOM Echo Before you can use this device with Home Assistant, you need to install a bit of software on it. 1. Make sure this page is opened in a Chromium-based browser on a desktop. It does not work on a tablet or phone. - * Select the **Connect** button below. If your browser does not support web serial, there is no button but a text. + - Select the **Connect** button below. If your browser does not support web serial, there is no button but a text. - * **For advanced users**: The configuration file is available on [GitHub](https://github.com/esphome/firmware/blob/main/voice-assistant/m5stack-atom-echo.yaml). + - **For advanced users**: The configuration file is available on [GitHub](https://github.com/esphome/firmware/blob/main/voice-assistant/m5stack-atom-echo.yaml). -1. Connect the ATOM Echo to your computer. - * In the popup window, view the available ports. - * Plug the USB-C cable into the ATOM Echo and connect it to your computer. - * In the pop-up window, there should now appear a new entry. Select this USB serial port and select **Connect**. - * Depending on your computer, the entry might look different. +2. Connect the ATOM Echo to your computer. + - In the popup window, view the available ports. + - Plug the USB-C cable into the ATOM Echo and connect it to your computer. + - In the pop-up window, there should now appear a new entry. Select this USB serial port and select **Connect**. + - Depending on your computer, the entry might look different. ![Select USB port](/images/assist/esp32-atom-flash-select-port.png) - * If no new port shows, your system may be missing a driver. Close the pop-up window. - * In the dialog, select the CH342 driver, install it, then **Try again**. + - If no new port shows, your system may be missing a driver. Close the pop-up window. + - In the dialog, select the CH342 driver, install it, then **Try again**. ![Open My link](/images/assist/esp32-atom-flash-no-port.png) -1. Select **Install Voice Assistant**, then **Install**. - * Follow the instructions provided by the installation wizard. - * Add the ATOM Echo to your Wi-Fi: - * 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**. -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. +3. Select **Install Voice Assistant**, then **Install**. + - Follow the instructions provided by the installation wizard. + - Add the ATOM Echo to your Wi-Fi: + - 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. + - 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) -1. Select **OK**. +5. Select **OK**. ![Set up ESPHome](/images/assist/esp32-atom-flash-07.png) -1. To add the newly discovered device, select the ATOM Echo from the list. - * Add your ATOM Echo to a room and select **Finish**. -1. You should now see the **ESPHome** integration. +6. 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 the **ESPHome** integration. ![New ESPHome device discovered](/images/assist/m5stack-atom-echo-discovered-33.png) -1. Select the cogwheel. Under **Devices**, you should see the **M5Stack Atom Echo** listed. +8. Select the **ESPHome** integration. Under **Devices**, you should see the **M5Stack Atom Echo** listed. ![ATOM Echo discovered](/images/assist/m5stack-atom-echo-discovered-new-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. -1. Congratulations! You can now voice control Home Assistant using a button with a built-in microphone. Now give some commands. + - 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. +9. Congratulations! You can now voice control Home Assistant using a button with a built-in microphone. Now give some commands. ## Controlling Home Assistant over the ATOM Echo -1. Press and hold the flat button with rounded shape on your ATOM Echo. - * The rectangular button on the side is the reset button. Do not press that one. - * The LED should light up in blue. -1. Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*. - * Make sure you’re using the area name exactly as you defined it in Home Assistant. - * You can also ask a question, such as - * *Is the front door locked?* - * *Which lights are on in the living room?* -1. Let go of the button. - * The LED should light up in green. - * Home Assistant will confirm the action. -1. Your command is not supported? [Add your own commands](/integrations/conversation/). +1. Press the flat button with rounded shape on your ATOM Echo. + - The rectangular button on the side is the reset button. Do not press that one. + - As soon as you press the button, the LED will light up in blue. + - While you are speaking, the blue LED is pulsing. + - Once the intent has been processed, the LED lights up in green and Home Assistant confirms the action. +2. Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*. + - Make sure you’re using the area name exactly as you defined it in Home Assistant. + - You can also ask a question, such as + - *Is the front door locked?* + - *Which lights are on in the living room?* +3. Your command is not supported? Add your own commands using [a sentence trigger](/voice_control/custom_sentences/). +4. You find ATOM Echo takes to long to start processing your command? + - Adjust the silence detection settings. This setting defines how much silence is needed for Assist to find you're done speaking and it can start processing your command. + - Go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the **ESPHome** integration. + - Under **M5Stack ATOM Echo**, select **1 device**. + ![Open My link](/images/assist/esp32-atom_silence_detection_01.png) ## Troubleshooting Are things not working as expected? -* Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting/). \ No newline at end of file +- Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting/). \ No newline at end of file diff --git a/source/voice_control/troubleshooting.markdown b/source/voice_control/troubleshooting.markdown index fb4beea83bd..f0743d7c2d3 100644 --- a/source/voice_control/troubleshooting.markdown +++ b/source/voice_control/troubleshooting.markdown @@ -7,47 +7,43 @@ This section lists a few steps that may help you troubleshoot issues with Assist ## View debug information 1. Go to {% my voice_assistants title="**Settings** > **Voice assistants**" %}. -1. From the list of assistants, select your assistant. +2. From the list of assistants, select your assistant. ![Select your assistant](/images/assist/assistant-select.png) -1. In the dialog, select **Debug**. +3. In the dialog, select **Debug**. ![Open the debug dialog](/images/assist/assistant-debug-03.png) -1. At the top of the screen, from the dropdown menu, select the run you are interested in. +4. At the top of the screen, from the dropdown menu, select the run you are interested in. ![Debug speech-to-text](/images/assist/assistant-debug-02.png) -## Test if the phrase works without voice +## Test a sentence per language without voice: without executing commands + +If you want to test if a sentence works in a specific language without actually executing the commands, use the sentence parser in the **Developer tools**. + +1. Go to {% my developer_assist title="**Developer tools** > **Assist**" %}. +2. In the sentence parser, select the language and enter the sentence you want to test. +3. The debug tool shows you the following: + - The intent triggered. + - The entities that were targeted. + - Which of the targeted entities were matched. +![Open the Assist developer tool sentence parser](/images/assist/assistant-debug-06.png) + + +## Test a sentence per assistant without voice: while executing the commands + +If you want to test if a sentence works with a specific assistant while actively executing the commands, use the sentence parser in the **Debug** view. 1. [Open the debug view](#view-debug-information). -1. In the top right corner, select the icon. +2. In the top right corner, select the icon. ![Open the pipeline debug dialog](/images/assist/assistant-debug-04.png) -1. Select **Run text pipeline**. +3. Select the assistant you want to test. +4. Select **Run text pipeline**. ![Open the pipeline debug dialog](/images/assist/assistant-debug-pipeline-01.png) -1. Enter the phrase you want to test and select **Run**. +5. Enter the phrase you want to test and select **Run**. ![Open the pipeline debug dialog](/images/assist/assistant-debug-pipeline-02.png) -1. Check if it worked. +6. Check if it worked. ![Open the pipeline debug dialog](/images/assist/assistant-debug-pipeline-03.png) - -## If the phrase did not work, even without voice - -1. Try a variant. For example, if *Turn off the light* doesn't work, try: *Turn off the lights in the kitchen*. -1. Check if the phrase is [supported](/voice_control/builtin_sentences/). -1. Check if the devices are exposed to Assist. - * Under {% my voice_assistants title="**Settings** > **Voice assistants**" %}, open the **Expose** tab. - * If you do not see the device in the list, select **Expose entities** and add the device. -1. If the phrase includes an area, make sure the device is added to that area. - * Under **{% my integrations title="Settings > Devices & Services" %}**, on the integration, select devices. - * From the list of devices, select the device of interest. - * In the top right corner, select the pencil item. - * Add the device to that area. -1. Make sure you are using the name of the area exactly as it is defined in Home Assistant. - -## If the phrase worked with Assist, but not with voice - -1. [Open the debug view](#view-debug-information). -1. If you see that speech-to-text failed: - - Go back to your voice assistant. - - Under **Speech-to-text**, check if there are multiple variants supported for your language. - - Try out different language variants. It could be that recognition works better with one of the variants. - + - 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](/voice_control/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 diff --git a/source/voice_control/using_tts_in_automation.markdown b/source/voice_control/using_tts_in_automation.markdown index 94437ae306d..302eb6c4c63 100644 --- a/source/voice_control/using_tts_in_automation.markdown +++ b/source/voice_control/using_tts_in_automation.markdown @@ -5,15 +5,15 @@ title: "Using Piper TTS in automations" This procedure shows you how to create a text-to-speech {% term action %}. For this, we use our local text-to-speech engine, Piper, and the media player {% term service %}. Home Assistant can then speak to you over your media player as part of an {% term automation %}. 1. Go to **{% my automations title="Settings > Automations & Scenes" %}**, and select **Create automation**. -1. Select **Create new automation**, then **Add action**. -1. From the drop-down menu, select **Play media** and select the media player you want to use for this automation. +2. Select **Create new automation**, then **Add action**. +3. From the drop-down menu, select **Play media** and select the media player you want to use for this automation. ![Select your media player](/images/assist/tts_select_media_player.png) -1. Select **Pick media**, then, select **Text-to-speech**. - ![Select your media source](/images/assist/tts_select_media_source.png) -1. To use fully local text-to-speech processing, select **Piper**. - ![Select Piper](/images/assist/tts_select_piper.png) -1. Enter the text you want to hear for this automation. - ![Enter text to be spoken](/images/assist/tts_enter_text.png) -1. Your text-to-speech action is now ready to be used in your script or automation. - ![Enter text to be spoken](/images/assist/tts_action.png) -1. Save your action. +4. Select **Pick media**, then, select **Text-to-speech**. + ![Select your media source](/images/assist/tts_select_media_source.png) +5. To use fully local text-to-speech processing, select **Piper**. + ![Select Piper](/images/assist/tts_select_piper.png) +6. Enter the text you want to hear for this automation. + ![Enter text to be spoken](/images/assist/tts_enter_text.png) +7. Your text-to-speech action is now ready to be used in your script or automation. + ![Enter text to be spoken](/images/assist/tts_action.png) +8. Save your action. diff --git a/source/voice_control/using_voice_assistants_overview.markdown b/source/voice_control/using_voice_assistants_overview.markdown index 1b20011f103..e16fef23162 100644 --- a/source/voice_control/using_voice_assistants_overview.markdown +++ b/source/voice_control/using_voice_assistants_overview.markdown @@ -2,17 +2,23 @@ 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. +We are in [chapter 3](/blog/2023/07/20/year-of-the-voice-chapter-3/) of Home Assistant's Year of the Voice. No, wake word detection is not yet supported. +But you can make Assist the default digital assistant and [start it on an Android](/voice_control/android/) phone, tablet, or Wear OS watch with one push of a button. -The video below provides a good overview of what is currently possible with voice assistants. It shows you the following: +![Assist complication on Wear OS](/images/assist/android_watch_5.png) -* How to voice-control devices using the Assist button, an [analog phone](/voice_control/worlds-most-private-voice-assistant/), or an [ATOM Echo](/voice_control/thirteen-usd-voice-remote/). -* How to [expose devices to Assist](/voice_control/voice_remote_expose_devices/). -* How to set up a [local voice assistant](/voice_control/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. +You can also create your own [custom sentences](/voice_control/custom_sentences/#adding-a-custom-sentence-to-trigger-an-automation) to start an automation. For example, you could say "Clean the floor when I'm gone" to start the vacuum after you left your home zone. For the full list of new features and some videos, head over to the [chapter 3 blog post](/blog/2023/07/20/year-of-the-voice-chapter-3/) or watch the stream. + + + +While the video below does not include these latest changes, it gives a good overview of some of the basics. + +- How to voice-control devices using the Assist button, an [analog phone](/voice_control/worlds-most-private-voice-assistant/), or an [ATOM Echo](/voice_control/thirteen-usd-voice-remote/). +- How to [expose devices to Assist](/voice_control/voice_remote_expose_devices/). +- How to set up a [local voice assistant](/voice_control/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/voice_control/voice_remote_expose_devices.markdown b/source/voice_control/voice_remote_expose_devices.markdown index e87f11601f2..d16a5bd7e17 100644 --- a/source/voice_control/voice_remote_expose_devices.markdown +++ b/source/voice_control/voice_remote_expose_devices.markdown @@ -8,8 +8,8 @@ This is to avoid that sensitive devices, such as locks and garage doors, can ina ## Exposing your devices to Assist 1. Go to **Settings** > **Voice assistants**. -1. Open the **Expose** tab. +2. Open the **Expose** tab. ![Expose entities tab](/images/assist/assistant-expose-01.png) -1. Select **Expose entities**. +3. Select **Expose entities**. 1. Select all entities you want to be able to control by voice. ![Expose entities tab](/images/assist/assistant-expose-02.png) \ No newline at end of file diff --git a/source/voice_control/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown index 472606376ab..8d2c201b1b9 100644 --- a/source/voice_control/voice_remote_local_assistant.markdown +++ b/source/voice_control/voice_remote_local_assistant.markdown @@ -47,8 +47,8 @@ For the quickest way to get your local Assist pipeline started, follow these ste - 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](/voice_control/voice_remote_expose_devices/#exposing-your-devices). +3. That's it. You ensured your voice commands can be processed locally on your device. +4. If you haven't done so yet, [expose your devices to Assist](/voice_control/voice_remote_expose_devices/#exposing-your-devices). - Otherwise you won't be able to control them by voice. ## Fine-tuning Whisper and Piper for your setup diff --git a/source/voice_control/worlds-most-private-voice-assistant.markdown b/source/voice_control/worlds-most-private-voice-assistant.markdown index 02674a4ca7f..ca33544d8bf 100644 --- a/source/voice_control/worlds-most-private-voice-assistant.markdown +++ b/source/voice_control/worlds-most-private-voice-assistant.markdown @@ -10,62 +10,62 @@ your smart home and issue commands and get responses. ## Required material -* Home Assistant 2023.5 or later -* An [analog phone](#about-the-analog-phone) with an RJ11 socket -* An analog telephone adapter +- Home Assistant 2023.5 or later +- An [analog phone](#about-the-analog-phone) with an RJ11 socket +- An analog telephone adapter [Grandstream HT801](https://amzn.to/40k7mRa) - * includes a 5 V power adapter and an Ethernet cable -* RJ11 phone cable to connect the phone to the Grandstream -* [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/integrations/assist_pipeline) + - includes a 5 V power adapter and an Ethernet cable +- RJ11 phone cable to connect the phone to the Grandstream +- [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/integrations/assist_pipeline) ## Setting up Grandstream 1. Connect the RJ11 cable from the phone to the green socket on the Grandstream. ![Grandstream HT801 ports](/images/assist/grandstream-ht801-interfaces.png) -1. Connect the Grandstream to your network: - * Plug the Ethernet cable into the blue socket and connect it to your router. -1. Start up the Grandstream. - * Connect the power supply. - * Once the Grandstream has booted, the two LEDs for power and Ethernet light up solid blue. The phone LED won't light up. -1. Identify the IP address of the Grandstream. - * If your phone has a star * key, you can get your phone to tell you it's IP address: - * Press *** (press the star key three times) and wait until you hear *Enter the menu option*. - * Press 02 and the phone will tell you its IP address. - * If your phone does not have a star * key, log onto your router to find the IP address. -1. Enter the IP address into a browser window and log onto the Grandstream *Device Configuration* software. - * The default credentials are: - * **Username**: `admin` - * **Password**: `admin` +2. Connect the Grandstream to your network: + - Plug the Ethernet cable into the blue socket and connect it to your router. +3. Start up the Grandstream. + - Connect the power supply. + - Once the Grandstream has booted, the two LEDs for power and Ethernet light up solid blue. The phone LED won't light up. +4. Identify the IP address of the Grandstream. + - If your phone has a star * key, you can get your phone to tell you it's IP address: + - Press *** (press the star key three times) and wait until you hear *Enter the menu option*. + - Press 02 and the phone will tell you its IP address. + - If your phone does not have a star * key, log onto your router to find the IP address. +5. Enter the IP address into a browser window and log onto the Grandstream *Device Configuration* software. + - The default credentials are: + - **Username**: `admin` + - **Password**: `admin` ![Login to Grandstream](/images/assist/grandstream_login.png) -1. Open the **FXS Port** tab and in the **Offhook Auto-Dial** field, enter the Home Assistant IP address in the following format: - * \*47192\*168\*1\*100\*5060 +6. Open the **FXS Port** tab and in the **Offhook Auto-Dial** field, enter the Home Assistant IP address in the following format: + - \*47192\*168\*1\*100\*5060 ![Define IP for autodial](/images/assist/grandstream_autodial.png) - * Note: instead of 192\*168\*1\*100\*, enter the IP address of your Home Assistant instance. - * At the bottom of the page, select **Apply**. + - Note: instead of 192\*168\*1\*100\*, enter the IP address of your Home Assistant instance. + - At the bottom of the page, select **Apply**. ![Define IP for autodial](/images/assist/grandstream_apply.png) - * *Offhook Auto-Dial* means that when you pick up the phone, it directly calls Home Assistant. No need to dial. + - *Offhook Auto-Dial* means that when you pick up the phone, it directly calls Home Assistant. No need to dial. ## Setting up the phone in Home Assistant 1. In Home Assistant, go to {% my config_flow_start domain="voip" title="**Settings** > **Devices & Services** > **Add integration**" %} and add the **Voice over IP** integration. ![Voice over IP integration](/images/assist/voip_install.png) -1. Once you see the integration, pick up the phone. - * You should now hear the message *This is your smart home speaking. Your phone is connected, but you must configure it within Home Assistant.* - * The integration should now include a device and entities. +2. Once you see the integration, pick up the phone. + - You should now hear the message *This is your smart home speaking. Your phone is connected, but you must configure it within Home Assistant.* + - The integration should now include a device and entities. ![Voice over IP integration with device and entities](/images/assist/voip_device_available.png) - * Don't hear the voice? Try these [troubleshooting steps](/voice_control/worlds-most-private-voice-assistant/#troubleshoot-grandstream). -1. Allow calls. - * Calls from new devices are blocked by default since voice commands could be used to control sensitive devices, such as locks and garage doors. - * In the **Voice over IP** integration, select the **device** link. - * To allow this phone to control your smart home, under **Configuration**, enable **Allow calls**. + - Don't hear the voice? Try these [troubleshooting steps](/voice_control/worlds-most-private-voice-assistant/#troubleshoot-grandstream). +3. Allow calls. + - Calls from new devices are blocked by default since voice commands could be used to control sensitive devices, such as locks and garage doors. + - In the **Voice over IP** integration, select the **device** link. + - To allow this phone to control your smart home, under **Configuration**, enable **Allow calls**. ![Voice over IP integration - allow calls](/images/assist/voip_configuration.png) -1. Congratulations! You set up your analog phone to work with Home Assistant. Now pick up the phone and control your device. - * Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*. - * You can also ask a question, such as - * *Is the front door locked?* - * *Which lights are on in the living room?* - * Make sure you're using the area name as you defined it in Home Assistant. If you have a room called *bathroom*, the phrase *Turn on the lights in the bath* won't work. - * Your command is not supported? [Add your own commands](/integrations/conversation/). +4. Congratulations! You set up your analog phone to work with Home Assistant. Now pick up the phone and control your device. + - Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn off the light in the kitchen*. + - You can also ask a question, such as + - *Is the front door locked?* + - *Which lights are on in the living room?* + - Make sure you're using the area name as you defined it in Home Assistant. If you have a room called *bathroom*, the phrase *Turn on the lights in the bath* won't work. + - Your command is not supported? [Add your own commands](/integrations/conversation/). ## Give your voice assistant personality using the OpenAI integration @@ -76,25 +76,29 @@ To reproduce this example, follow these steps: Note: this procedure requires an OpenAI account. To just run the example, the free trial option is sufficient. No need to leave your credit card information. 1. [Set up an OpenAI account and install the OpenAI conversation](/integrations/openai_conversation/) integration. -1. Create a Mario personality. - * Once you installed the OpenAI Conversation integration, go to {% my integrations title="**Settings** > **Devices & Services**" %} and in OpenAI Conversation integration, the select **Configure**. +2. Create a Mario personality. + - Once you installed the OpenAI Conversation integration, go to {% my integrations title="**Settings** > **Devices & Services**" %} and in OpenAI Conversation integration, the select **Configure**. ![Configure the OpenAI integration](/images/assist/assistant-openai-mario-config.png) - * In the **Prompt template** field, enter the following text: + - In the **Prompt template** field, enter the following text: `You are Super Mario from Mario Bros. Be funny.` and select **Submit**. ![Add prompt for Mario personality](/images/assist/assistant-openai-mario-02.png) -1. Create a Mario assistant: - * Under {% my voice_assistants title="**Settings** > **Voice assistants**" %}, select **Add assistant**. - * Give it a name, select a language and under **Conversation agent**, select the Mario OpenAI Conversation integration. + + - Give your personality a name. Select the three-dots menu, select **Rename** and change the name to `OpenAI Mario`. + +3. Create a Mario assistant: + - Under {% my voice_assistants title="**Settings** > **Voice assistants**" %}, select **Add assistant**. + - Give it a name, select a language and under **Conversation agent**, select the Mario OpenAI Conversation integration. ![Add a new assistant](/images/assist/assistant-openai-mario-04.png) - * Leave the other settings unchanged and select **Create**. -1. In the **Voice over IP** integration, under **Configuration**, select the Mario assistant you just created. + - Leave the other settings unchanged and select **Create**. +4. In the **Voice over IP** integration, under **Configuration**, select the Mario assistant you just created. ![VoIP: select OpenAI](/images/assist/assistant-openai-mario-03.png) -1. That's it! Pick up your phone and ask Mario a question. -1. You can repeat this with other characters. You can add as many OpenAI Conversation integrations as you would like. +5. That's it! Pick up your phone and ask Mario a question. +6. You can repeat this with other OpenAI personalities. You can add as many OpenAI Conversation integrations as you would like. + - To add a new personality, you need to create a new API key. Then, add a new OpenAI Conversation integration with that API key. ## Troubleshoot Grandstream @@ -103,12 +107,12 @@ Note: this procedure requires an OpenAI account. To just run the example, the fr If you’re unable to call Home Assistant, confirm the following settings in your Grandstream device’s web interface. 1. On the **FXS Port** tab, check the **Preferred Vocoder** list. - * Make sure that **OPUS** is selected for one of the choices: + - Make sure that **OPUS** is selected for one of the choices: ![Vocoder OPUS option](/images/assist/grandstream_vocoder.png) -1. Under **OPUS Payload type**, make sure the value is `123`. It's the default option. +2. Under **OPUS Payload type**, make sure the value is `123`. It's the default option. ![Vocoder OPUS payload type](/images/assist/grandstream_opus_payload.png) -1. At the bottom of the page, select **Apply**. -1. Pick up the phone again and check if you hear the voice. +3. At the bottom of the page, select **Apply**. +4. Pick up the phone again and check if you hear the voice. ### The Voice over IP integration no longer works @@ -118,16 +122,16 @@ The [debug information](/voice_control/troubleshooting#view-debug-information) s **Potential remedy** 1. Log onto the Grandstream *Device Configuration* software. -1. On the **Status** page, check if the **Hook** status changes from **On Hook** to **In Use** after you picked up the phone. +2. On the **Status** page, check if the **Hook** status changes from **On Hook** to **In Use** after you picked up the phone. ![Check the Grandstream status](/images/assist/grandstream-troubleshoot-10.png) - * The software is quite slow. Refresh the page and wait for a while before hanging up again. -1. If the status does not change, reboot the Grandstream and try calling Home Assistant again. + - The software is quite slow. Refresh the page and wait for a while before hanging up again. +3. If the status does not change, reboot the Grandstream and try calling Home Assistant again. ## Other troubleshooting steps Are things still not working as expected? -* Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting). +- Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting). ## About the analog phone