mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-15 21:36:52 +00:00
Merge branch 'current' into next
This commit is contained in:
commit
95de69ca39
7
.github/PULL_REQUEST_TEMPLATE.md
vendored
7
.github/PULL_REQUEST_TEMPLATE.md
vendored
@ -1,3 +1,10 @@
|
||||
<!--
|
||||
You are amazing! Thanks for contributing to our project!
|
||||
Please, DO NOT DELETE ANY TEXT from this template! (unless instructed).
|
||||
|
||||
Before submitting your pull request, please verify that you have chosen the correct target branch,
|
||||
and that the PR preview looks fine and does not include unrelated changes.
|
||||
-->
|
||||
## Proposed change
|
||||
<!--
|
||||
Describe the big picture of your changes here to communicate to the
|
||||
|
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
@ -10,7 +10,7 @@ jobs:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.1.7
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.0.3
|
||||
uses: actions/setup-node@v4.0.4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
@ -27,7 +27,7 @@ jobs:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.1.7
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.0.3
|
||||
uses: actions/setup-node@v4.0.4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
|
6
Gemfile
6
Gemfile
@ -4,14 +4,14 @@ ruby '> 2.5.0'
|
||||
|
||||
group :development do
|
||||
gem 'rake', '13.2.1'
|
||||
gem 'jekyll', '4.3.3'
|
||||
gem 'jekyll', '4.3.4'
|
||||
gem 'compass', '1.0.3'
|
||||
gem 'sass-globbing', '1.1.5'
|
||||
gem 'stringex', '2.8.6'
|
||||
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
|
||||
gem 'sassc', '2.1.0'
|
||||
gem 'rubocop', '1.65.1'
|
||||
gem 'ruby-lsp', '0.17.11'
|
||||
gem 'rubocop', '1.66.1'
|
||||
gem 'ruby-lsp', '0.18.2'
|
||||
gem 'rackup', '2.1.0'
|
||||
end
|
||||
|
||||
|
66
Gemfile.lock
66
Gemfile.lock
@ -21,20 +21,24 @@ GEM
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
compass-import-once (1.0.5)
|
||||
sass (>= 3.2, < 3.5)
|
||||
concurrent-ruby (1.3.3)
|
||||
concurrent-ruby (1.3.4)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.17.0-arm64-darwin)
|
||||
ffi (1.17.0-x86_64-linux-gnu)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.27.3-x86_64-linux)
|
||||
google-protobuf (4.28.2-arm64-darwin)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.28.2-x86_64-linux)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.5)
|
||||
i18n (1.14.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.3.3)
|
||||
jekyll (4.3.4)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
em-websocket (~> 0.5)
|
||||
@ -72,20 +76,22 @@ GEM
|
||||
listen (3.9.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
logger (1.6.0)
|
||||
logger (1.6.1)
|
||||
mercenary (0.4.0)
|
||||
multi_json (1.15.0)
|
||||
mustermann (3.0.1)
|
||||
mustermann (3.0.3)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.16.7-arm64-darwin)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.16.7-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
parallel (1.25.1)
|
||||
parser (3.3.4.1)
|
||||
parallel (1.26.3)
|
||||
parser (3.3.5.0)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
prism (0.30.0)
|
||||
prism (1.0.0)
|
||||
public_suffix (6.0.1)
|
||||
racc (1.8.1)
|
||||
rack (3.1.7)
|
||||
@ -102,38 +108,40 @@ GEM
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rbs (3.5.2)
|
||||
rbs (3.5.3)
|
||||
logger
|
||||
regexp_parser (2.9.2)
|
||||
rexml (3.3.4)
|
||||
strscan
|
||||
rouge (4.3.0)
|
||||
rubocop (1.65.1)
|
||||
rexml (3.3.7)
|
||||
rouge (4.4.0)
|
||||
rubocop (1.66.1)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (>= 3.17.0)
|
||||
parallel (~> 1.10)
|
||||
parser (>= 3.3.0.2)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 2.4, < 3.0)
|
||||
rexml (>= 3.2.5, < 4.0)
|
||||
rubocop-ast (>= 1.31.1, < 2.0)
|
||||
rubocop-ast (>= 1.32.2, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 3.0)
|
||||
rubocop-ast (1.32.0)
|
||||
rubocop-ast (1.32.3)
|
||||
parser (>= 3.3.1.0)
|
||||
ruby-lsp (0.17.11)
|
||||
ruby-lsp (0.18.2)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
prism (>= 0.29.0, < 0.31)
|
||||
prism (~> 1.0)
|
||||
rbs (>= 3, < 4)
|
||||
sorbet-runtime (>= 0.5.10782)
|
||||
ruby-progressbar (1.13.0)
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.77.8-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.26)
|
||||
sass-embedded (1.79.3-arm64-darwin)
|
||||
google-protobuf (~> 4.27)
|
||||
sass-embedded (1.79.3-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.27)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
sassc (2.1.0)
|
||||
ffi (~> 1.9)
|
||||
sassc (2.1.0-x86_64-linux)
|
||||
ffi (~> 1.9)
|
||||
sinatra (4.0.0)
|
||||
@ -142,25 +150,25 @@ GEM
|
||||
rack-protection (= 4.0.0)
|
||||
rack-session (>= 2.0.0, < 3)
|
||||
tilt (~> 2.0)
|
||||
sorbet-runtime (0.5.11514)
|
||||
sorbet-runtime (0.5.11581)
|
||||
stringex (2.8.6)
|
||||
strscan (3.1.0)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
tilt (2.4.0)
|
||||
tzinfo (2.0.6)
|
||||
concurrent-ruby (~> 1.0)
|
||||
tzinfo-data (1.2024.1)
|
||||
tzinfo-data (1.2024.2)
|
||||
tzinfo (>= 1.0.0)
|
||||
unicode-display_width (2.5.0)
|
||||
webrick (1.8.1)
|
||||
unicode-display_width (2.6.0)
|
||||
webrick (1.8.2)
|
||||
|
||||
PLATFORMS
|
||||
arm64-darwin-23
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
compass (= 1.0.3)
|
||||
jekyll (= 4.3.3)
|
||||
jekyll (= 4.3.4)
|
||||
jekyll-commonmark (= 1.4.0)
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
@ -168,8 +176,8 @@ DEPENDENCIES
|
||||
nokogiri (= 1.16.7)
|
||||
rackup (= 2.1.0)
|
||||
rake (= 13.2.1)
|
||||
rubocop (= 1.65.1)
|
||||
ruby-lsp (= 0.17.11)
|
||||
rubocop (= 1.66.1)
|
||||
ruby-lsp (= 0.18.2)
|
||||
sass-globbing (= 1.1.5)
|
||||
sassc (= 2.1.0)
|
||||
sinatra (= 4.0.0)
|
||||
|
@ -107,9 +107,9 @@ social:
|
||||
|
||||
# Home Assistant release details
|
||||
current_major_version: 2024
|
||||
current_minor_version: 8
|
||||
current_patch_version: 0
|
||||
date_released: 2024-08-07
|
||||
current_minor_version: 9
|
||||
current_patch_version: 3
|
||||
date_released: 2024-09-24
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
|
310
package-lock.json
generated
310
package-lock.json
generated
@ -20,7 +20,7 @@
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.0",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.0.5",
|
||||
"textlint": "^14.2.0",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
@ -416,65 +416,65 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-tester": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.0.5.tgz",
|
||||
"integrity": "sha512-fXIffKbOXwULZwMib9BtGf+IkARXs/CnEmFhAGwLhzPjLTB9YgNftjTyxmVvNbpKA02KTMdK3JFpgZ5Vyxsykg==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.2.0.tgz",
|
||||
"integrity": "sha512-k7HAVjv5hUFNWUeb1h+3yaoSnwhjKJ55FaFVlUPsW5qFRIAkWaZ0Xpo2IEAyGaa5jgulWe8vEX6ZTmvwi6bzUA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5",
|
||||
"@textlint/ast-node-types": "^14.2.0",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.0.5.tgz",
|
||||
"integrity": "sha512-5q/7vifbG8mqDEpByaUjAfHHjJlFiS737axziNQ8qXVswyrMdmRIRE9Wv0unvrs0W9mLKHcsPHh8JQd1RGpfIg==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.2.0.tgz",
|
||||
"integrity": "sha512-qmB+bbLTndlgIObMxoXhdE/t1o6JUQxgw1pzLEtd7rvZO7sNH4Agui1ddlWjaIczj+K40tm8jsfi/74NJtJ9fg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5"
|
||||
"@textlint/ast-node-types": "^14.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/config-loader": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.0.5.tgz",
|
||||
"integrity": "sha512-nZZGwXei1kizl8+3uvahfHcMg2npMnuE2WWQ8z8c8seNsnHLitoTNoSR8IQYZ0XDQ9Iy3ROOkRX2qUvKCQPgQQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.2.0.tgz",
|
||||
"integrity": "sha512-LDIr0zykTVsIWz/q+NIiYXoF0Fqdl1X+JLGIAG6E2CTKJhsGW4naKvt2d9zWhCjSM7E9ZX6XAdvo16WDJALYlg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/kernel": "^14.0.5",
|
||||
"@textlint/module-interop": "^14.0.5",
|
||||
"@textlint/types": "^14.0.5",
|
||||
"@textlint/utils": "^14.0.5",
|
||||
"@textlint/kernel": "^14.2.0",
|
||||
"@textlint/module-interop": "^14.2.0",
|
||||
"@textlint/types": "^14.2.0",
|
||||
"@textlint/utils": "^14.2.0",
|
||||
"debug": "^4.3.4",
|
||||
"rc-config-loader": "^4.1.3",
|
||||
"try-resolve": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/feature-flag": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.0.5.tgz",
|
||||
"integrity": "sha512-hTlCE+cyJ6BxsXgDJfe/mF/b/GVKrPUMzgqbd6n5bbGuhdTYO0hDrl/nCAbasQz4oJh6TGq4WH2dNts38TlZng==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.2.0.tgz",
|
||||
"integrity": "sha512-KjO4ACoKhA10XUi4Wp3dKixfEMFQAE+WLgCDEB5k+cAKPkwaFYjN5vezA1TGe+fSHcQiBjv268F0r3hmtsPf8Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/fixer-formatter": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.0.5.tgz",
|
||||
"integrity": "sha512-fRXWUQVBbg4Gp2k254YLbEzn42GwBcmAmRUODSJkXkF8oAu91uEQJ6uJlOE0/plQfZUOgQebco9KPmeL8+Jb+A==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.2.0.tgz",
|
||||
"integrity": "sha512-Ji4Kq0hckDj1WranfNwnN87nUE4EldMyf7z2AEQ51vDSqLeYk+WCQo6/Gc+a+ytQt5s/QPyfcpiHItr75xHF8g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/module-interop": "^14.0.5",
|
||||
"@textlint/types": "^14.0.5",
|
||||
"@textlint/module-interop": "^14.2.0",
|
||||
"@textlint/types": "^14.2.0",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"diff": "^5.2.0",
|
||||
@ -485,39 +485,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.0.5.tgz",
|
||||
"integrity": "sha512-AfCGRSq4XuH1UCAcKKurbBRxxypTJzdWmG3Netpa/cGmkdI4tcL+kfaimG3hSnXvQfv6VIzHASBB6u2WpUAGXg==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.2.0.tgz",
|
||||
"integrity": "sha512-QYF2ZGnkLhd+GYGWL2wpZNjK0ec8HqwGjAsmc49E0g5NKMDvX3U/TYGwjsM8g6WCxGVGS625wr0tm6UxIAK5+Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5",
|
||||
"@textlint/ast-tester": "^14.0.5",
|
||||
"@textlint/ast-traverse": "^14.0.5",
|
||||
"@textlint/feature-flag": "^14.0.5",
|
||||
"@textlint/source-code-fixer": "^14.0.5",
|
||||
"@textlint/types": "^14.0.5",
|
||||
"@textlint/utils": "^14.0.5",
|
||||
"@textlint/ast-node-types": "^14.2.0",
|
||||
"@textlint/ast-tester": "^14.2.0",
|
||||
"@textlint/ast-traverse": "^14.2.0",
|
||||
"@textlint/feature-flag": "^14.2.0",
|
||||
"@textlint/source-code-fixer": "^14.2.0",
|
||||
"@textlint/types": "^14.2.0",
|
||||
"@textlint/utils": "^14.2.0",
|
||||
"debug": "^4.3.4",
|
||||
"fast-equals": "^4.0.3",
|
||||
"structured-source": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/linter-formatter": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.0.5.tgz",
|
||||
"integrity": "sha512-Ht9/FNwoZuW95rsgJ4aR+d0LSkVqw5dC+wp5Hab4HtPhdSsDcTEA1Q53JUubjhcpKnwNxv/aNxh1iXMBiNrSqA==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.2.0.tgz",
|
||||
"integrity": "sha512-9+5n3UIhbKGNCvI5s0BJexHrWqw/TZQnUQLpvbL04SnJqwSH2xlUQfEwPAybPO1Tb9coUGHYlBZObRxy9tRwig==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@azu/format-text": "^1.0.2",
|
||||
"@azu/style-format": "^1.0.1",
|
||||
"@textlint/module-interop": "^14.0.5",
|
||||
"@textlint/types": "^14.0.5",
|
||||
"@textlint/module-interop": "^14.2.0",
|
||||
"@textlint/types": "^14.2.0",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"js-yaml": "^3.14.1",
|
||||
@ -531,12 +531,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.0.5.tgz",
|
||||
"integrity": "sha512-m6EIJL/qhvGuB5zXCQNHBF8MdhPpN4s2F2WPxfwFunXb/K58murSEkUTCviuHiDG/7XOFT030dY9eck3Pez0gg==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.2.0.tgz",
|
||||
"integrity": "sha512-vDcj8fuo1ZJinLtDwMO8yh9hxWujDFQRJ/MDd4Y+vxGDJRnB0c9ZVPOOPlQjaumlVNI7CB1fDsz+jx8z6/d8iw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5",
|
||||
"@textlint/ast-node-types": "^14.2.0",
|
||||
"debug": "^4.3.4",
|
||||
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
||||
"neotraverse": "^0.6.15",
|
||||
@ -548,9 +548,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/bail": {
|
||||
@ -780,73 +780,73 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/module-interop": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.0.5.tgz",
|
||||
"integrity": "sha512-naK1z6omW/1C0UF8kLlnmtx0Ikmnp2DUUm5C2mEt5dpEqpXF39/dKFNbMOrac0nLh/65QCpj8m9GlpbbrKKjHw==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.2.0.tgz",
|
||||
"integrity": "sha512-1X3DfCwF3y07eVyK41K6As0L+Ekyn5lAh98hVoUNOGDJQtjRvM3aKZ8z0o0BtbCeH7nYTyExo31lUgURWuDWnQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/source-code-fixer": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.0.5.tgz",
|
||||
"integrity": "sha512-JNSBVFQ09LXxeiebQ4PI72N1XTW/CZb3gVewnojL/un39oAo3yGjzFox/59TL5rdrGAqsijOq4CrWkJ+3Xb2kg==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.2.0.tgz",
|
||||
"integrity": "sha512-xMFtpwcs5Z1WTiFBmLN2Fe2GQg3u0kEZgF42AvFHKphbmToKYlGUMw1jaMsEXaxrTOTjqwj3SycRR7rrgKgOxg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/types": "^14.0.5",
|
||||
"@textlint/types": "^14.2.0",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.0.5.tgz",
|
||||
"integrity": "sha512-3dq1OL6gU522H+/b+NmE4z8OXMG5aLgKAlBu1zBbcXGAjgtIEdplYn6XGvpkGRM2FnypMzsDIUjzwUS8bjbpWw==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.2.0.tgz",
|
||||
"integrity": "sha512-i71ksLnlkb6epmeOiRv/xiHHLBWOtCx3gUBiTr8YC/9xbdhzBehFblJ6IjeikIJYPTfpzDECRmDqDNq7Cvos3Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5"
|
||||
"@textlint/ast-node-types": "^14.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-markdown": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.0.5.tgz",
|
||||
"integrity": "sha512-QjfATGYKuPkLVT+GsG8WjwrkgNpksKED6Qd4TDL/q2LwNVEZ6ULFLZmufL9z9ENCeBs6y0YDE7IbE26Vhq5zww==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.2.0.tgz",
|
||||
"integrity": "sha512-TDd132D816R5q+/ZDfxe15Cxua6RNegkQzPv0iaZZKob6t8lhMND6lUHfbXEEGHCtyignxZUXQXZGZcjKtWL4A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/markdown-to-ast": "^14.0.5"
|
||||
"@textlint/markdown-to-ast": "^14.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-text": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.0.5.tgz",
|
||||
"integrity": "sha512-OJJP5WXo3rqqL7bXYy44f8z9s1Ssb/2/nmTStbTepSOujQjOoEwehtwV+QBwdzwRkzbQFcZ0HS+dJ/yNdneKWA==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.2.0.tgz",
|
||||
"integrity": "sha512-5E39BWG9T5c0XOz5Vxdffa17FDwu9Woud29bYyq3OQ+JjwMQXSz3JPQ1MTNsJbqn0R58+ZKXfaWEZ/Gsoau5UA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/text-to-ast": "^14.0.5"
|
||||
"@textlint/text-to-ast": "^14.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.0.5.tgz",
|
||||
"integrity": "sha512-scrY5Zzz/SSAXaxw6OspbgFuiyQpHq88iK7OhUYE3BMnM90ijKzSohGMUHHK872zenzGTTOepE2sdjkIyXr1pA==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.2.0.tgz",
|
||||
"integrity": "sha512-lK8HCnkNg+spOHVw1HX0AvwP1BZVlJsbL4OLIHnwfvakfUxLQFXtJ6x2asAXMNMQGqwSWKQrLBCmWZWVsDtReg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5"
|
||||
"@textlint/ast-node-types": "^14.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/utils": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.0.5.tgz",
|
||||
"integrity": "sha512-+EDQlPx4t/DcH4EYXB62J+5mTRdJaMlFEyzCK7QUfZ9u2JeIE+AFt4D7xDAeiXcdxYTAm2ASdJ+lw7z3Z+vasQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.2.0.tgz",
|
||||
"integrity": "sha512-eXRygFRC1CK+BHRqIe2RRFiC8VJMpV7NwsLdBKsFMcivgNRgL6hkhhbrMI6MbPg+jdWM+nK5Z9+QpPYL9c9/pg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/concat-stream": {
|
||||
@ -3604,9 +3604,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/minipass": {
|
||||
"version": "7.0.3",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz",
|
||||
"integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==",
|
||||
"version": "7.1.2",
|
||||
"resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
|
||||
"integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
@ -3637,9 +3637,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/neotraverse": {
|
||||
"version": "0.6.15",
|
||||
"resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.15.tgz",
|
||||
"integrity": "sha512-HZpdkco+JeXq0G+WWpMJ4NsX3pqb5O7eR9uGz3FfoFt+LYzU8iRWp49nJtud6hsDoywM8tIrDo3gjgmOqJA8LA==",
|
||||
"version": "0.6.18",
|
||||
"resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz",
|
||||
"integrity": "sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 10"
|
||||
@ -3749,6 +3749,12 @@
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/package-json-from-dist": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",
|
||||
"integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/parse-entities": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz",
|
||||
@ -3823,29 +3829,26 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/path-scurry": {
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
|
||||
"integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
|
||||
"version": "1.11.1",
|
||||
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
|
||||
"integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"lru-cache": "^9.1.1 || ^10.0.0",
|
||||
"lru-cache": "^10.2.0",
|
||||
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
"node": ">=16 || 14 >=14.18"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/path-scurry/node_modules/lru-cache": {
|
||||
"version": "10.0.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz",
|
||||
"integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "14 || >=16.14"
|
||||
}
|
||||
"version": "10.4.3",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
|
||||
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/path-to-glob-pattern": {
|
||||
"version": "2.0.1",
|
||||
@ -6027,27 +6030,27 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.0.5.tgz",
|
||||
"integrity": "sha512-k2x1itoYuUPE6FCodxV7cW0Rcnycx8DVYMGQd8G/iFGPaT8As3XdXMfATTGRQIkMR5TkbCeBVVrWKTNHotCx2g==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.2.0.tgz",
|
||||
"integrity": "sha512-f3vT1mwpHuP2IWNG7AiE7n4nRKiOI/4Rxz7wQSv6KWaCgigcwi9x4JCMWKn1gpEvC/bssKW1/G0XxzHvKybCKg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.5",
|
||||
"@textlint/ast-traverse": "^14.0.5",
|
||||
"@textlint/config-loader": "^14.0.5",
|
||||
"@textlint/feature-flag": "^14.0.5",
|
||||
"@textlint/fixer-formatter": "^14.0.5",
|
||||
"@textlint/kernel": "^14.0.5",
|
||||
"@textlint/linter-formatter": "^14.0.5",
|
||||
"@textlint/module-interop": "^14.0.5",
|
||||
"@textlint/textlint-plugin-markdown": "^14.0.5",
|
||||
"@textlint/textlint-plugin-text": "^14.0.5",
|
||||
"@textlint/types": "^14.0.5",
|
||||
"@textlint/utils": "^14.0.5",
|
||||
"@textlint/ast-node-types": "^14.2.0",
|
||||
"@textlint/ast-traverse": "^14.2.0",
|
||||
"@textlint/config-loader": "^14.2.0",
|
||||
"@textlint/feature-flag": "^14.2.0",
|
||||
"@textlint/fixer-formatter": "^14.2.0",
|
||||
"@textlint/kernel": "^14.2.0",
|
||||
"@textlint/linter-formatter": "^14.2.0",
|
||||
"@textlint/module-interop": "^14.2.0",
|
||||
"@textlint/textlint-plugin-markdown": "^14.2.0",
|
||||
"@textlint/textlint-plugin-text": "^14.2.0",
|
||||
"@textlint/types": "^14.2.0",
|
||||
"@textlint/utils": "^14.2.0",
|
||||
"debug": "^4.3.4",
|
||||
"file-entry-cache": "^5.0.1",
|
||||
"get-stdin": "^5.0.1",
|
||||
"glob": "^7.2.3",
|
||||
"glob": "^10.4.5",
|
||||
"md5": "^2.3.0",
|
||||
"mkdirp": "^0.5.6",
|
||||
"optionator": "^0.9.3",
|
||||
@ -6169,11 +6172,70 @@
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.5.tgz",
|
||||
"integrity": "sha512-pOMQX9MGee9VYKYVsmQzJpZxllEiTHUgZgpRxorHDNqojrlU6cBKWDX1+cQhptpP+Ry/wS2VsWK6kHx6u1v7CQ==",
|
||||
"version": "14.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.2.0.tgz",
|
||||
"integrity": "sha512-dOnBuqvsmiNkhHHp1ZaZed1uwvDpVNZWGvZlrckWaJpzsrTTNtxtd627MkMRCdGvIT3+RkfmV9OHqh51JfexRg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint/node_modules/brace-expansion": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
|
||||
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"balanced-match": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/glob": {
|
||||
"version": "10.4.5",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
|
||||
"integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"foreground-child": "^3.1.0",
|
||||
"jackspeak": "^3.1.2",
|
||||
"minimatch": "^9.0.4",
|
||||
"minipass": "^7.1.2",
|
||||
"package-json-from-dist": "^1.0.0",
|
||||
"path-scurry": "^1.11.1"
|
||||
},
|
||||
"bin": {
|
||||
"glob": "dist/esm/bin.mjs"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/jackspeak": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
|
||||
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@isaacs/cliui": "^8.0.2"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@pkgjs/parseargs": "^0.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/minimatch": {
|
||||
"version": "9.0.5",
|
||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
|
||||
"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"brace-expansion": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16 || 14 >=14.17"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
|
||||
|
@ -15,7 +15,7 @@
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^4.0.0",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.0.5",
|
||||
"textlint": "^14.2.0",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^5.0.13"
|
||||
|
@ -40,29 +40,17 @@ module Jekyll
|
||||
end
|
||||
|
||||
<<~MARKUP
|
||||
<script>
|
||||
function showDetails(el) {
|
||||
const content = el.parentElement.querySelector(".details-block-content");
|
||||
const up = el.querySelector("svg#up");
|
||||
const down = el.querySelector("svg#down");
|
||||
const shouldExpand = down.style.display === "block";
|
||||
up.style.display = shouldExpand ? "block" : "none";
|
||||
down.style.display = !shouldExpand ? "block" : "none";
|
||||
content.hidden = !shouldExpand;
|
||||
el.ariaExpanded = shouldExpand;
|
||||
}
|
||||
</script>
|
||||
<div class="details-block">
|
||||
<div class='details-block-item'>
|
||||
<button class='details-block-title' onclick='showDetails(this)' aria-controls="content_#{idx}" aria-expanded="false">
|
||||
<details class='details-block-item'>
|
||||
<summary class='details-block-title'>
|
||||
<span>#{icon}#{title}</span>
|
||||
<div class='details-block-arrow'>
|
||||
<svg id="down" style="display: block;" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
|
||||
<svg id="up" style="display: none;" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></svg>
|
||||
<svg class="down" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
|
||||
<svg class="up" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></svg>
|
||||
</div>
|
||||
</button>
|
||||
<div class='details-block-content' id="content_#{idx}" hidden>#{contents}</div>
|
||||
</div>
|
||||
</summary>
|
||||
<div class='details-block-content' id="content_#{idx}">#{contents}</div>
|
||||
</details>
|
||||
</div>
|
||||
MARKUP
|
||||
end
|
||||
|
@ -184,14 +184,14 @@ header .grid {
|
||||
@include box-sizing(border-box);
|
||||
@include transition(all 0.5s linear);
|
||||
content: "☰";
|
||||
display: inline-block;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
padding: 4px 9px;
|
||||
background: $primary-color;
|
||||
text-align: center;
|
||||
font-family: $sans-serif;
|
||||
font-size: 16px;
|
||||
color: $white;
|
||||
white-space: nowrap;
|
||||
border-radius: 24px;
|
||||
@ -203,6 +203,7 @@ header .grid {
|
||||
|
||||
#toggle:checked + .toggle::after {
|
||||
content: attr(data-close);
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
/* submenus */
|
||||
|
@ -10,6 +10,16 @@ div.details-block {
|
||||
border: 1px solid rgba(0, 0, 0, .12);
|
||||
border-radius: 16px;
|
||||
|
||||
&[open] .details-block-title {
|
||||
.up {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.down {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.details-block-title {
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
@ -23,6 +33,14 @@ div.details-block {
|
||||
border: 0px;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
|
||||
.up {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.down {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.details-block-content {
|
||||
margin: 4px 0 12px 0;
|
||||
|
@ -155,6 +155,9 @@
|
||||
Covers are devices such as blinds, garage doors, etc that can be opened and
|
||||
closed and optionally set to a specific position.
|
||||
link: /integrations/cover
|
||||
- term: Custom integration
|
||||
definition: >-
|
||||
A custom integration is an integration that has been created by someone from the Home Assistant community and has been published for others to use at their own risk. Custom integrations are not supported by the Home Assistant project. They are not reviewed or tested by the Home Assistant development team and thus may negatively impact the stability of your Home Assistant instance. An example of a custom integration is the [Spook](https://spook.boo/) integration.
|
||||
- term: Customize
|
||||
definition: >-
|
||||
Customization allows you to overwrite the default parameters of your devices
|
||||
@ -219,7 +222,7 @@
|
||||
properties of entities are related to the state. Entities have optional
|
||||
attributes such as friendly name, unit of measurement, and an icon or
|
||||
picture that can be displayed in the frontend.
|
||||
link: /docs/configuration/state_object/
|
||||
link: /docs/configuration/entities_domains/
|
||||
excerpt: >
|
||||
An entity represents a sensor, actor, or function in Home Assistant.
|
||||
Entities are used to monitor physical properties or to control other
|
||||
@ -228,7 +231,7 @@
|
||||
- entities
|
||||
- term: Event
|
||||
definition: >-
|
||||
An event is when something happens.
|
||||
Every time something happens in Home Assistant, an event is fired. There are different types of events, such as state change events, when an action was triggered, or the time changed. All entities produce state change events. Every time a state changes, a state change event is produced. Events can be used to trigger automations or scripts. For example, you can trigger an automation when a light is turned on, then a speaker turns on in that room. Events can also be used to trigger actions in the frontend. For example, you can trigger an action when a button is pressed.
|
||||
link: /docs/configuration/events/
|
||||
aliases:
|
||||
- events
|
||||
@ -350,7 +353,7 @@
|
||||
excerpt: >
|
||||
Integrations connect and integrate Home Assistant with your devices,
|
||||
services, and more.
|
||||
link: /integrations/
|
||||
link: /getting-started/concepts-terminology/#integrations
|
||||
aliases:
|
||||
- integrations
|
||||
- term: Intent
|
||||
@ -489,20 +492,19 @@
|
||||
entities for organic, paper, and packaging waste. In terms of functionality,
|
||||
the information service is like a device. It is called *service* to avoid
|
||||
confusion, as it does not come with a piece of hardware.
|
||||
link: /docs/scripts/service-calls/
|
||||
link: /docs/scripts/perform-actions/
|
||||
aliases:
|
||||
- services
|
||||
- term: State
|
||||
definition: |-
|
||||
The state holds the information of interest of an entity. For example, if a
|
||||
light is on or off, the current temperature, or the amount of energy used.
|
||||
The data type of state is `string` (a textual value). Entities store 2
|
||||
timestamps related to the state: `last_updated` and `last_changed`. Each
|
||||
light is on or off, the current temperature, or the amount of energy used. Entities store 3
|
||||
timestamps related to the state: `last_updated`, `last_changed`, and `last_reported`. 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. For example,
|
||||
the state of a light is _on_, and the related state attributes could be its
|
||||
current brightness and color values. State changes can be used as the source
|
||||
of triggers. The current state can be used in conditions.
|
||||
current brightness and color values. State change events can be used as triggers.
|
||||
The current state can be used in conditions.
|
||||
|
||||
link: /docs/configuration/state_object/
|
||||
aliases:
|
||||
|
@ -87,7 +87,7 @@ automation:
|
||||
|
||||
## Event trigger
|
||||
|
||||
Fires when an event is being received. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data or context to be present.
|
||||
An event trigger fires when an [event](/docs/configuration/events/) is being received. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data or context to be present.
|
||||
|
||||
Events can be fired by integrations or via the API. There is no limitation to the types. A list of built-in events can be found [here](/docs/configuration/events/).
|
||||
|
||||
@ -294,8 +294,8 @@ In the example above, the trigger would fire a single time if a numeric_state go
|
||||
{% endnote %}
|
||||
|
||||
Number helpers (`input_number` entities), `number`, `sensor`, and `zone` entities
|
||||
that contain a numeric value, can be used in the `above` and `below` thresholds,
|
||||
making the trigger more dynamic, like:
|
||||
that contain a numeric value, can be used in the `above` and `below` thresholds.
|
||||
However, the comparison will only be made when the entity specified in the trigger is updated. This would look like:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
@ -359,12 +359,22 @@ If for your use case this is undesired, you could consider using the automation
|
||||
|
||||
## State trigger
|
||||
|
||||
Fires when the state of any of given entities changes. If only `entity_id` is given, the trigger will fire for all state changes, even if only state attributes change.
|
||||
If at least one of `from`, `to`, `not_from`, or `not_to` are given, the trigger will fire on any matching state change, but not if only attributes change. To trigger on all state changes, but not on changed attributes, set at least one of `from`, `to`, `not_from`, or `not_to` to `null`.
|
||||
In general, the state trigger fires when the state of any of given entities **changes**. The behavior is as follows:
|
||||
|
||||
{% note %}
|
||||
The values you see in your overview will often not be the same as the actual state of the entity. For instance, the overview may show `Connected` when the underlying entity is actually `on`. You should check the state of the entity by looking in the _States_ menu under _Developer tools_.
|
||||
{% endnote %}
|
||||
- If only the `entity_id` is given, the trigger fires for **all** state changes, even if only a state attribute changed.
|
||||
- If at least one of `from`, `to`, `not_from`, or `not_to` are given, the trigger fires on any matching state change, but not if only an attribute changed.
|
||||
- To trigger on all state changes, but not on changed attributes, set at least one of `from`, `to`, `not_from`, or `not_to` to `null`.
|
||||
- Use of the `for` option doesn't survive a Home Assistant restart or the reload of automations.
|
||||
- During restart or reload, automations that were awaiting `for` the trigger to pass, are reset.
|
||||
- If for your use case this is undesired, you could consider using the automation to set an [`input_datetime`](/integrations/input_datetime) to the desired time and then use that [`input_datetime`](/integrations/input_datetime) as an automation trigger to perform the desired actions at the set time.
|
||||
|
||||
{% tip %}
|
||||
The values you see in your overview will often not be the same as the actual state of the entity. For instance, the overview may show `Connected` when the underlying entity is actually `on`. You should check the state of the entity by checking the states in the developer tool, under {% my developer_states title="**Developer Tools** > **States**" %}.
|
||||
{% endtip %}
|
||||
|
||||
### Examples
|
||||
|
||||
This automation triggers if either Paulus or Anne-Therese are home for one minute.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
@ -397,7 +407,7 @@ automation:
|
||||
to: "error"
|
||||
```
|
||||
|
||||
Trigger on all state changes, but not attributes by setting `to` to `null`:
|
||||
If you want to trigger on all state changes, but not on attribute changes, you can `to` to `null` (this would also work by setting `from`, `not_from`, or `not_to` to `null`):
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
@ -407,7 +417,7 @@ automation:
|
||||
to:
|
||||
```
|
||||
|
||||
The `not_from` and `not_to` options are the counter parts of `from` and `to`. They can be used to trigger on state changes that are **not** the specified state. This can be useful to trigger on all state changes, except specific ones.
|
||||
If you want to trigger on all state changes *except* specific ones, use `not_from` or `not_to` The `not_from` and `not_to` options are the counter parts of `from` and `to`. They can be used to trigger on state changes that are **not** the specified state.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
@ -425,8 +435,8 @@ You cannot use `from` and `not_from` at the same time. The same applies to `to`
|
||||
### Triggering on attribute changes
|
||||
|
||||
When the `attribute` option is specified, the trigger only fires
|
||||
when the specified attribute changes. Changes to other attributes or the
|
||||
state are ignored.
|
||||
when the specified attribute **changes**. Changes to other attributes or
|
||||
state changes are ignored.
|
||||
|
||||
For example, this trigger only fires when the boiler has been heating for 10 minutes:
|
||||
|
||||
@ -467,8 +477,8 @@ automation:
|
||||
for: "00:00:30"
|
||||
```
|
||||
|
||||
Please note, that when holding a state, changes to attributes are ignored and
|
||||
do not cancel the hold time.
|
||||
When holding a state, changes to attributes are ignored. Changes to attributes
|
||||
don't cancel the hold time.
|
||||
|
||||
You can also fire the trigger when the state value changed from a specific
|
||||
state, but hasn't returned to that state value for the specified time.
|
||||
@ -530,12 +540,6 @@ The `for` template(s) will be evaluated when an entity changes as specified.
|
||||
Use quotes around your values for `from` and `to` to avoid the YAML parser from interpreting values as booleans.
|
||||
{% endtip %}
|
||||
|
||||
{% important %}
|
||||
Use of the `for` option will not survive Home Assistant restart or the reload of automations. During restart or reload, automations that were awaiting `for` the trigger to pass, are reset.
|
||||
|
||||
If for your use case this is undesired, you could consider using the automation to set an [`input_datetime`](/integrations/input_datetime) to the desired time and then use that [`input_datetime`](/integrations/input_datetime) as an automation trigger to perform the desired actions at the set time.
|
||||
{% endimportant %}
|
||||
|
||||
## Sun trigger
|
||||
|
||||
### Sunset / Sunrise trigger
|
||||
|
@ -72,9 +72,10 @@ homeassistant:
|
||||
keys:
|
||||
min_version:
|
||||
description: >
|
||||
Minimum required version of Home Assistant to use the blueprint. For example,
|
||||
`2022.4.0`. It is important to set this if the blueprint uses any features
|
||||
introduced in recent releases to head off issues.
|
||||
Minimum required version of Home Assistant to use the blueprint in the format of
|
||||
*major*.*minor*.*patch* (all parts are required). For example, `2022.4.0`. It is
|
||||
important to set this if the blueprint uses any features introduced in recent
|
||||
releases to head off issues.
|
||||
type: string
|
||||
required: false
|
||||
input:
|
||||
@ -149,12 +150,14 @@ A blueprint can have as many inputs as you like.
|
||||
### Blueprint input sections
|
||||
|
||||
One or more input sections can be added under the main `input` key. Each section visually groups the inputs in that section,
|
||||
allows an optional description, and optionally allows for collapsing those inputs.
|
||||
allows an optional description, and optionally allows for collapsing those inputs. Note that the section only impacts how
|
||||
inputs are displayed to the user when they fill in the blueprint. Inputs must have unique names and be referenced directly
|
||||
by their name; not by section and name.
|
||||
|
||||
A section is differentiated from an input by the presence of an additional `input` key within that section.
|
||||
|
||||
{% caution %}
|
||||
Input sections are a new feature in version 2024.6. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions.
|
||||
Input sections are a new feature in version 2024.6.0. Set the `min_version` for the blueprint to at least this version if using input sections. Otherwise, the blueprint will generate errors on older versions.
|
||||
{% endcaution %}
|
||||
|
||||
The full configuration for a section is below:
|
||||
|
@ -63,7 +63,7 @@ action:
|
||||
|
||||
The options that can be used with the `trigger` object are listed under [automation trigger variables](/docs/automation/templating/#available-trigger-data).
|
||||
In this example, a [state trigger](/docs/automation/templating/#state) is used.
|
||||
`turn_on` and `turn_off` are [`homeassistant` actions](/docs/scripts/service-calls/#homeassistant-actions). They are not tied to a specific domain. You can use them on lights, switches, and other domains.
|
||||
`turn_on` and `turn_off` are [`homeassistant` actions](/docs/scripts/perform-actions/#homeassistant-actions). They are not tied to a specific domain. You can use them on lights, switches, and other domains.
|
||||
|
||||
### Creating the blueprint file
|
||||
|
||||
|
51
source/_docs/configuration/entities_domains.markdown
Normal file
51
source/_docs/configuration/entities_domains.markdown
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
title: "Entities and domains"
|
||||
description: "Describes what entities and domains are in Home Assistant."
|
||||
related:
|
||||
- docs: /docs/configuration/state_object/
|
||||
title: State object, entity state
|
||||
---
|
||||
|
||||
Your {% term devices %} are represented in Home Assistant as entities. Entities are the basic building blocks to hold data in Home Assistant. An entity represents a {% term sensor %}, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a {% term device %} or a {% term service %}. Entities have [states](/docs/configuration/state_object/) and [attributes](#entity-attributes).
|
||||
|
||||
All your entities are listed in the entities table, under {% my entities title="**Settings** > **Devices & services** > **Entities**" %}.
|
||||
|
||||
<p class='img'><img src='/images/getting-started/entities.png' style='border: 0;box-shadow: none;' alt="Screenshot showing the Entities table">Screenshot of the Entities table. Each line represents an entity.</p>
|
||||
|
||||
## Entity attributes
|
||||
|
||||
Many entities have attributes. There are a few attributes that are available on all entities, such as `friendly_name` and `icon`. In addition to those, each integration has its own attributes to represent extra state data about the entity. For example, the light integration has attributes for the current brightness and color of the light. When an attribute is not available, Home Assistant will not write it to the state. The list of available attributes depends on the {% term device %}.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/light/state_light.png' alt='Screenshot showing three lights with different states and attributes'>
|
||||
Example showing three lights with differents states and different attributes.
|
||||
</p>
|
||||
|
||||
For more information on entity attributes, refer to the [attributes](/docs/configuration/state_object/#attributes) section on the state objects page.
|
||||
|
||||
## Domains
|
||||
|
||||
Each integration in Home Assistant has a unique identifier: a domain. All entities and actions available in Home Assistant are provided by integrations and thus belong to such a domain. The first part of the entity or action, before the `.` shows the domain they belong to. For example, `light.bed_light` is an entity in the light domain. `bed_light` is the ID of the entity.
|
||||
|
||||
The domain provides entities, services, and other functionality that other integrations can use. For example, IKEA and Philips Hue both use functionalities provided by the light integration. This is why the look and feel and behavior is similar in Home Assistant.
|
||||
|
||||
There are different types of domains: integration domains and entity domains:
|
||||
|
||||
- Integration domains provide functionality primarily for itself: examples are Hue, Matter, or Zigbee.
|
||||
- Entity domains don't use their own functionality as such. But they provide it for other integrations to use.
|
||||
|
||||
The integrations listed below are used as entity domains. They are also referred to as *building block integrations* or *entity integrations*:
|
||||
|
||||
<ul>
|
||||
{%- for integration in site.integrations %}
|
||||
|
||||
{%- if integration.ha_integration_type == "entity" %}
|
||||
{%- assign name = integration.title -%}
|
||||
{%- assign target = integration.ha_domain | prepend: "/integrations/" -%}
|
||||
|
||||
<li><a href="{{target}}">{{name}}</a></li>
|
||||
|
||||
{%- endif -%}
|
||||
{%- endfor %}
|
||||
|
||||
</ul>
|
@ -1,13 +1,24 @@
|
||||
---
|
||||
title: "Events"
|
||||
description: "Describes all there is to know about events in Home Assistant."
|
||||
related:
|
||||
- docs: /docs/automation/trigger/#event-trigger
|
||||
title: Event triggers
|
||||
- docs: /integrations/event/
|
||||
title: Event integration
|
||||
---
|
||||
|
||||
The core of Home Assistant is the event bus. The event bus allows any integration to fire or listen for events. It is the core of everything.
|
||||
The core of Home Assistant is the event bus. The event bus allows any integration to fire or listen for events.
|
||||
|
||||
For example, any state change will be announced on the event bus as a `state_changed` event containing the previous and the new state of an entity.
|
||||
## Events and state changes
|
||||
|
||||
Home Assistant contains a few built-in events that are used to coordinate between various integrations.
|
||||
All {% term entities %} produce state change events. Every time a {% term state %} changes, a state change event is produced. State change events are just one type of event on the event bus, but there are other kinds of events, such as the [built-in events](#built-in-events-core) that are used to coordinate between various integrations.
|
||||
|
||||
### State change events versus event entity
|
||||
|
||||
State change events are not to be confused with the [event entity](/integrations/event/). The event entity is a specific type of entity that itself produces event state changes, just like all other entities.
|
||||
|
||||
Any state change will be announced on the event bus as a `state_changed` event, containing the previous and the new state of an entity.
|
||||
|
||||
## Common fields
|
||||
|
||||
@ -28,12 +39,12 @@ In addition, all events contain a `data` dictionary with event-specific informat
|
||||
|
||||
This event is fired when an service action is performed
|
||||
|
||||
| Field | Description |
|
||||
| ----------------- | ------------------------------------------------------------------------------ |
|
||||
| `domain` | Domain of the action. Example: `light`. |
|
||||
| `service` | The service action that is performed. Example: `turn_on` |
|
||||
| Field | Description |
|
||||
| ----------------- | ---------------------------------------------------------------------- |
|
||||
| `domain` | Domain of the action. Example: `light`. |
|
||||
| `service` | The service action that is performed. Example: `turn_on` |
|
||||
| `service_data` | Dictionary with the call parameters. Example: `{ 'brightness': 120 }`. |
|
||||
| `service_call_id` | String with a unique call id. Example: `23123-4`. |
|
||||
| `service_call_id` | String with a unique call id. Example: `23123-4`. |
|
||||
|
||||
### `component_loaded`
|
||||
|
||||
@ -98,19 +109,19 @@ If you want to trigger automation on a Home Assistant stop event, we recommend u
|
||||
|
||||
This event is fired when a new service action has been registered within Home Assistant.
|
||||
|
||||
| Field | Description |
|
||||
| --------- | ----------------------------------------------------------------------- |
|
||||
| Field | Description |
|
||||
| --------- | ------------------------------------------------------------------------ |
|
||||
| `domain` | The domain of the integration that offers this action. Example: `light`. |
|
||||
| `service` | The name of the service action. Example: `turn_on` |
|
||||
| `service` | The name of the service action. Example: `turn_on` |
|
||||
|
||||
### `service_removed`
|
||||
|
||||
This event is fired when a service action has been removed from Home Assistant.
|
||||
|
||||
| Field | Description |
|
||||
| --------- | ----------------------------------------------------------------------- |
|
||||
| Field | Description |
|
||||
| --------- | ------------------------------------------------------------------------ |
|
||||
| `domain` | The domain of the integration that offers this action. Example: `light`. |
|
||||
| `service` | The name of the service action. Example: `turn_on` |
|
||||
| `service` | The name of the service action. Example: `turn_on` |
|
||||
|
||||
### `state_changed`
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
---
|
||||
title: "State objects"
|
||||
description: "Describes all there is to know about state objects in Home Assistant."
|
||||
related:
|
||||
- docs: /docs/configuration/entities_domains/
|
||||
title: Entities and domains
|
||||
---
|
||||
|
||||
Your {% term devices %} are represented in Home Assistant as entities. The {% term entities %} will write their current {% term state %} to the state machine for other entities/templates/frontend to access. States are a current representation of the {% term entity %}.
|
||||
@ -24,7 +27,7 @@ All states will always have an entity id, a state and a timestamp when last upda
|
||||
|
||||
## Attributes
|
||||
|
||||
The attributes of an {% term entity %} are optional. There are a few attributes that are used by Home Assistant for representing the entity in a specific way. Each integration will also have its own attributes to represent extra state data about the entity. For example, the light integration has attributes for the current brightness and color of the light. When an attribute is not available, Home Assistant will not write it to the state.
|
||||
The attributes of an {% term entity %} are optional.There are a few attributes that are available on all entities, such as `friendly_name` and `icon`. In addition to those, each integration has its own attributes to represent extra state data about the entity. For example, the light integration has attributes for the current brightness and color of the light. When an attribute is not available, Home Assistant will not write it to the state.
|
||||
|
||||
When using templates, attributes will be available by their name. For example `state.attributes.assumed_state`.
|
||||
|
||||
|
@ -722,7 +722,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
- `utcnow()` returns a datetime object of the current time in the UTC timezone.
|
||||
- For specific values: `utcnow().second`, `utcnow().minute`, `utcnow().hour`, `utcnow().day`, `utcnow().month`, `utcnow().year`, `utcnow().weekday()` and `utcnow().isoweekday()`.
|
||||
- Using `utcnow()` will cause templates to be refreshed at the start of every new minute.
|
||||
- `today_at(value)` converts a string containing a military time format to a datetime object with today's date in your time zone.
|
||||
- `today_at(value)` converts a string containing a military time format to a datetime object with today's date in your time zone. Defaults to midnight (`00:00`).
|
||||
|
||||
- Using `today_at()` will cause templates to be refreshed at the start of every new minute.
|
||||
|
||||
@ -736,8 +736,8 @@ For example, if you wanted to select a field from `trigger` in an automation bas
|
||||
{% endraw %}
|
||||
|
||||
- `as_datetime(value, default)` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. When the input is already a datetime object it will be returned as is. in case the input is a datetime.date object, midnight will be added as time. This function can also be used as a filter.
|
||||
- `as_timestamp(value, default)` converts datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter.
|
||||
- `as_local()` converts datetime object to local time. This function can also be used as a filter.
|
||||
- `as_timestamp(value, default)` converts a datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter.
|
||||
- `as_local()` converts a datetime object to local time. This function can also be used as a filter.
|
||||
- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
|
||||
- `time_since(datetime, precision)` converts a datetime object into its human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter.
|
||||
If the datetime is in the future, returns 0 seconds.
|
||||
@ -745,7 +745,7 @@ A precision of 0 returns all available units, default is 1.
|
||||
- `time_until(datetime, precision)` converts a datetime object into a human-readable time string. The time string can be in seconds, minutes, hours, days, months, and years. `precision` takes an integer (full number) and indicates the number of units returned. The last unit is rounded. For example: `precision = 1` could return "2 years" while `precision = 2` could return "1 year 11 months". This function can also be used as a filter.
|
||||
If the datetime is in the past, returns 0 seconds.
|
||||
A precision of 0 returns all available units, default is 1.
|
||||
- `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks.
|
||||
- `timedelta` returns a timedelta object, which represents a duration (an amount of time between two datetimes). It accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks.
|
||||
|
||||
{% raw %}
|
||||
|
||||
@ -756,7 +756,7 @@ A precision of 0 returns all available units, default is 1.
|
||||
|
||||
{% endraw %}
|
||||
|
||||
- `as_timedelta(string)` converts a string to a timedelta object. Expects data in the format `DD HH:MM:SS.uuuuuu`, `DD HH:MM:SS,uuuuuu`, or as specified by ISO 8601 (e.g. `P4DT1H15M20S` which is equivalent to `4 1:15:20`) or PostgreSQL’s day-time interval format (e.g. `3 days 04:05:06`) This function can also be used as a filter.
|
||||
- `as_timedelta(string)` converts a string to a timedelta object, which represents a duration (an amount of time between two datetimes). Expects data in the format `DD HH:MM:SS.uuuuuu`, `DD HH:MM:SS,uuuuuu`, or as specified by ISO 8601 (e.g. `P4DT1H15M20S` which is equivalent to `4 1:15:20`) or PostgreSQL’s day-time interval format (e.g. `3 days 04:05:06`). This function can also be used as a filter.
|
||||
|
||||
{% raw %}
|
||||
|
||||
|
@ -110,12 +110,18 @@ The first thing you will need before reporting an issue online is debug logs and
|
||||
|
||||
### Enabling debug logging
|
||||
|
||||
To enable debug logging for an integration, go to **Settings** > **Devices & Services** > **Integrations** and go to the detail page of the integration. Select the **Enable Debug Logging** button on the left side of the integration detail page.
|
||||
To enable debug logging for a specific integration, follow these steps:
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/docs/configuration/enable-debug-logging.png' alt='Example of Enable debug logging'>
|
||||
Example of Enable debug logging.
|
||||
</p>
|
||||
1. Go to {% my integrations title="**Settings** > **Devices & services**" %}.
|
||||
2. Select the integration card to open the detail page of the integration for which you want to enable debug logging.
|
||||
3. On the left side of the integration detail page, select **Enable Debug Logging**.
|
||||
- The screenshot uses the MQTT integration as an example for illustration purposes. It does not mean you need to install the MQTT integration.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/docs/configuration/enable-debug-logging.png' alt='Screenshot showing the Enable debug logging button on an integration detail page'>
|
||||
Screenshot showing the <b>Enable debug logging</b> button on an integration detail page. The MQTT integration is used as an example to show where the button can be found.
|
||||
</p>
|
||||
4. To see the error in the logs, you need to reproduce the error. Continue with the steps on [disabling debug logging and download logs](#disable-debug-logging-and-download-logs).
|
||||
|
||||
### Disable debug logging and download logs
|
||||
|
||||
|
@ -47,20 +47,21 @@ Use this procedure only if the following conditions are met:
|
||||
- You know the username.
|
||||
- You can access the [Home Assistant console](/hassio/commandline/) **on the device itself** (not via the SSH terminal from the add-ons).
|
||||
|
||||
1. Connect to the console of the Home Assistant server:
|
||||
- If you are using a virtual machine, connect to your virtual machine console.
|
||||
1. If you are using a Home Assistant Yellow or Green, refer to their documentation.
|
||||
- If you are using a Home Assistant Yellow, refer to the following procedure:
|
||||
- [Using the serial console on Windows](https://yellow.home-assistant.io/guides/use-serial-console-windows/)
|
||||
- [Using the serial console on macOS / Linux](https://yellow.home-assistant.io/guides/use-serial-console-linux-macos/)
|
||||
- [Resetting the owner password on Home Assistant Yellow](https://yellow.home-assistant.io/faq/#i-forgot-the-owner-password-for-home-assistant-how-can-i-reset-it)
|
||||
- If you are using a Home Assistant Green, refer to the following procedure:
|
||||
- [Using the terminal](https://green.home-assistant.io/guides/use-terminal/)
|
||||
- If you are using another board, connect a keyboard and monitor to your device and access the terminal. The procedure is likely very similar to the one described for the Green in the step above.
|
||||
2. Once you have opened the Home Assistant command line, enter the following command:
|
||||
- [Resetting the owner password on Home Assistant Green](https://green.home-assistant.io/faq/#i-forgot-the-owner-password-for-the-home-assistant-green-how-can-i-reset-it)
|
||||
2. If you are not using a Yellow or Green: Connect to the console of the Home Assistant server:
|
||||
- If you are using a virtual machine, connect to your virtual machine console.
|
||||
- If you are using another board, connect a keyboard and monitor to your device and access the terminal. The procedure is likely very similar to the one described for the Home Assistant Green.
|
||||
3. Once you have opened the Home Assistant command line, enter the following command:
|
||||
- Note: `existing_user` is a placeholder. Replace it with your username.
|
||||
- Note: `new_password` is a placeholder. Replace it with your new password.
|
||||
- **Command**: `ha auth reset --username existing_user --password new_password`
|
||||
- **Command**: `auth reset --username existing_user --password new_password`
|
||||

|
||||
- **Troubleshooting**: If you see the message `zsh: command not found: auth`, you likely did not enter the command in the serial console connected to the device itself, but in the terminal within Home Assistant.
|
||||
3. You can now log in to Home Assistant using this new password.
|
||||
4. You can now log in to Home Assistant using this new password.
|
||||
|
||||
### To reset a user's password, via the container command line
|
||||
|
||||
|
@ -1006,7 +1006,7 @@ will not be used by anything.
|
||||
[Script integration]: /integrations/script/
|
||||
[automations]: /docs/automation/action/
|
||||
[Alexa/Amazon Echo]: /integrations/alexa/
|
||||
[actions page]: /docs/scripts/service-calls/
|
||||
[actions page]: /docs/scripts/perform-actions/
|
||||
[conditions page]: /docs/scripts/conditions/
|
||||
[shorthand-template]: /docs/scripts/conditions/#template-condition-shorthand-notation
|
||||
[script variables]: /integrations/script/#configuration-variables
|
||||
|
@ -41,7 +41,7 @@
|
||||
{% icon "mdi:script-text" %} {% active_link /docs/scripts/ Scripts %}
|
||||
{% if doc == 'scripts' or include.docs_index %}
|
||||
<ul>
|
||||
<li>{% active_link /docs/scripts/service-calls/ Actions %}</li>
|
||||
<li>{% active_link /docs/scripts/perform-actions/ Actions %}</li>
|
||||
<li>{% active_link /docs/scripts/conditions/ Conditions %}</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
@ -209,6 +209,7 @@
|
||||
<li>{% active_link /docs/configuration/secrets/ Storing secrets %}</li>
|
||||
<li>{% active_link /docs/configuration/events/ Events %}</li>
|
||||
<li>{% active_link /docs/configuration/state_object/ State objects %}</li>
|
||||
<li>{% active_link /docs/configuration/entities_domains/ Entities and domains %}</li>
|
||||
<li>{% active_link /docs/configuration/templating/ Templating %}</li>
|
||||
<li>{% active_link /docs/configuration/platform_options/ Entity component platform options %}</li>
|
||||
</ul>
|
||||
|
@ -1,6 +1,21 @@
|
||||
## Enabling or disabling elements
|
||||
## Enabling or disabling entities
|
||||
|
||||
Some entities are disabled by default. To enable them, follow these steps:
|
||||
Some {% term entities %} are disabled by default. Whether a particular entity of a device is disable or enabled by default, depends on the integration. Diagnostic entities for example are often disabled by default so that they don't clutter Home Assistant. For example, the RSSI entity (representing the RF signal strength) provided by the ZHA integration for each Zigbee device is disabled by default.
|
||||
|
||||
There are different ways to enable {% term entities %}. You can enable a single entity in the entity settings, or you can enable multiple entities at once from the list of entities.
|
||||
|
||||
### To enable or disable a single entity
|
||||
|
||||
1. Go to {% my integrations title="**Settings** > **Devices & services**" %} and select your integration card.
|
||||
2. Select the device.
|
||||
3. To see all the entities, you may need to expand the **entity not shown** section.
|
||||
4. Select the entity of interest, select the cogwheel {% icon "mdi:cog-outline" %}, then select the toggle for **Enable**.
|
||||
5. Select **Update**.
|
||||
6. Confirm the notification stating that it will take about 30 seconds for the entity to become enabled. Select **OK**.
|
||||
|
||||

|
||||
|
||||
### To enable or disable multiple entities
|
||||
|
||||
1. In Home Assistant, open the table of interest.
|
||||
- To enable or disable entities, go to {% my entities title="**Settings** > **Devices & Services** > **Entities**" %}.
|
||||
@ -12,5 +27,6 @@ Some entities are disabled by default. To enable them, follow these steps:
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Customizing entities](/docs/configuration/customizing-devices/)
|
||||
- [Grouping your assets](/docs/organizing/)
|
||||
- [Working with tables](/docs/organizing/tables)
|
||||
|
@ -12,7 +12,7 @@ This installation method **does not have access to add-ons**. If you want to use
|
||||
<b>Prerequisites</b>
|
||||
This guide assumes that you already have an operating system setup and a container runtime installed (like Docker).
|
||||
|
||||
If you are using Docker then you need to be on at least version 19.03.9, ideally an even higher version, and `libseccomp` 2.4.2 or newer.
|
||||
If you are using Docker then you need to be on at least version 19.03.9, ideally an even higher version, and `libseccomp` 2.4.2 or newer. Docker _Desktop_ will not work, you must use Docker _Engine_.
|
||||
|
||||
{% endimportant %}
|
||||
|
||||
|
@ -12,14 +12,10 @@ As an alternative, Home Assistant OS can be installed in a Linux guest VM. Runni
|
||||
This is an advanced installation process, and some steps might differ on your system. Considering the nature of this installation type, we assume you can handle subtle differences between this document and the system configuration you are using. When in doubt, please consider one of the [other installation methods](/installation/), as they might be a better fit instead.
|
||||
{% endcaution %}
|
||||
|
||||
{% important %}
|
||||
|
||||
<b>Prerequisites</b>
|
||||
### Prerequisites
|
||||
|
||||
This guide assumes that you already have an operating system setup and have installed Python {{site.installation.versions.python}} (including the package `python3-dev`) or newer.
|
||||
|
||||
{% endimportant %}
|
||||
|
||||
### Install dependencies
|
||||
|
||||
Before you start, make sure your system is fully updated, all packages in this guide are installed with `apt`, if your OS does not have that, look for alternatives.
|
||||
@ -86,6 +82,8 @@ Once you have installed the required Python package, it is now time to install H
|
||||
pip3 install homeassistant=={{ site.current_major_version }}.{{ site.current_minor_version }}.{{ site.current_patch_version }}
|
||||
```
|
||||
|
||||
**Troubleshooting**: If you do not see the above version of Home Assistant package in your environment, make sure you have the correct Python version installed, as defined under the [Prerequisites](#prerequisites).
|
||||
|
||||
Start Home Assistant Core for the first time. This will complete the installation for you, automatically creating the `.homeassistant` configuration directory in the `/home/homeassistant` directory, and installing any basic dependencies.
|
||||
|
||||
```bash
|
||||
|
@ -479,7 +479,7 @@ With the Home Assistant Operating System installed and accessible, you can conti
|
||||
|
||||
{% endif %}
|
||||
|
||||
[generic-x86-64]: {{release_url}}/{{site.data.version_data.hassos['ova']}}/haos_generic-x86-64-{{site.data.version_data.hassos['generic-x86-64']}}.img.xz
|
||||
[generic-x86-64]: {{release_url}}/{{site.data.version_data.hassos['generic-x86-64']}}/haos_generic-x86-64-{{site.data.version_data.hassos['generic-x86-64']}}.img.xz
|
||||
[vmdk]: {{release_url}}/{{site.data.version_data.hassos['ova']}}/haos_ova-{{site.data.version_data.hassos['ova']}}.vmdk.zip
|
||||
[vhdx]: {{release_url}}/{{site.data.version_data.hassos['ova']}}/haos_ova-{{site.data.version_data.hassos['ova']}}.vhdx.zip
|
||||
[vdi]: {{release_url}}/{{site.data.version_data.hassos['ova']}}/haos_ova-{{site.data.version_data.hassos['ova']}}.vdi.zip
|
||||
|
@ -1 +1 @@
|
||||
After changing the {% term "`configuration.yaml`" %} file, [restart Home Assistant](/docs/configuration/#reloading-the-configuration-to-apply-changes) to apply the changes. {% if page.ha_platforms %} {% if page.ha_quality_scale != "internal" or page.ha_domain contains 'generic' %}. The integration is now shown on the integrations page under **{% my integrations title="Settings > Devices & services" %}**. Its entities are listed on the integration card itself and on the {% my entities title="**Entities**" %} tab. {% endif %}{% endif %}
|
||||
After changing the {% term "`configuration.yaml`" %} file, [restart Home Assistant](/docs/configuration/#reloading-the-configuration-to-apply-changes) to apply the changes. {% if page.ha_platforms %} {% if page.ha_quality_scale != "internal" or page.ha_domain contains 'generic' %} The integration is now shown on the integrations page under **{% my integrations title="Settings > Devices & services" %}**. Its entities are listed on the integration card itself and on the {% my entities title="**Entities**" %} tab. {% endif %}{% endif %}
|
||||
|
@ -1,33 +0,0 @@
|
||||
{% capture product_name %}{{ include.name | default: page.product_name }}{% endcapture %}
|
||||
|
||||
2. To connect the {{ product_name }} to your computer, follow these steps:
|
||||
- In the pop-up window, view the available ports.
|
||||
- Plug the USB-C cable into the {{ product_name }} and connect it to your computer.{% if page.product_name == 'ESP32-S3-BOX' %}
|
||||
- If you have an ESP32-S3-BOX-3, plug it into the box directly, not into the docking station (not into the blue part).
|
||||
- **Troubleshooting**: If your ESP32-S3-BOX-3 does not appear in the list of devices presented by your browser, you need to manually invoke "flash mode":
|
||||
- Hold the "boot" button (left side upper button) as you tap the "reset" button (left side lower button).
|
||||
- After a few seconds, the ESP32-S3-BOX-3 should appear in the list of USB devices presented by your browser.
|
||||
- Follow the steps until step 3. After selecting the **Next** button, on the S3-Box, tap the "Reset" button again.
|
||||
- Then, select the blue **Connect button** again, select the USB device and follow the prompts to configure the Wi-Fi.{% endif %}
|
||||
- In the pop-up window, there should now appear a new entry. Select this USB serial port and select **Connect**.{% if page.product_name == 'ATOM Echo' %}
|
||||
- **Troubleshooting**: 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**.
|
||||
{% endif %}
|
||||
3. Select **Install Voice Assistant**, then **Install**.
|
||||
- Once the installation is complete, select **Next**.
|
||||
- Add the {{ product_name }} 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 {{ product_name }} 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.
|
||||

|
||||
5. Select **OK**.
|
||||
|
||||

|
||||
6. To add the newly discovered device, select the {{ product_name }} from the list.
|
||||
- Add your {{ product_name }} to a room and select **Finish**.
|
||||
7. You should now see the **ESPHome** integration.
|
||||

|
||||
|
@ -27,3 +27,12 @@ The platforms cover the following levels (if they are available):
|
||||
- The NO2 (nitrogen dioxide) level.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of an air quality entity
|
||||
|
||||
The state of an air quality entity represents the concentration of particles in the air that are 2.5 microns or fewer in diameter. The state is a number. The number is followed by the unit of measurement (micrograms per cubic meter: "µg/m³"). For example, *PM2.5: 4 µg/m³*. In this example, the state is 4.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
@ -9,24 +9,46 @@ ha_domain: alarm_control_panel
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_integration_type: entity
|
||||
related:
|
||||
- docs: /integrations/manual/
|
||||
title: Manual alarm
|
||||
- docs: /integrations/alarm_control_panel.template/
|
||||
title: Template alarm
|
||||
---
|
||||
|
||||
Home Assistant can give you an interface which is similar to a classic alarm system.
|
||||
Please see [manual alarm](/integrations/manual) or [template alarm](/integrations/alarm_control_panel.template) for alarm configuration.
|
||||
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
### Actions
|
||||
## The state of an alarm panel entity
|
||||
|
||||
An alarm panel entity can have the following states. Not all integrations implement all the different states.
|
||||
|
||||
- **Disarmed**: The alarm is disarmed (off).
|
||||
- **Armed home**: The alarm is armed in home mode.
|
||||
- **Armed away**: The alarm is armed in away mode.
|
||||
- **Armed night**: The alarm is armed in night mode.
|
||||
- **Armed vacation**: The alarm is armed in vacation mode.
|
||||
- **Armed custom bypass**: The alarm is armed in bypass mode.
|
||||
- **Pending**: The alarm is pending (towards triggered).
|
||||
- **Arming**: The alarm is in the process of being armed.
|
||||
- **Disarming**: The alarm is in the process of being disarmed.
|
||||
- **Triggered**: The alarm has been triggered.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
|
||||
## Actions
|
||||
|
||||
Depending on features supported by a specific integration alarm may expose the following actions:
|
||||
|
||||
| Action | Data | Description |
|
||||
| ------- | ---- | ----------- |
|
||||
| `alarm_arm_home` | `entity_id` <br> `code` (optional) | Arm the alarm in the home mode.
|
||||
| `alarm_arm_away` | `entity_id` <br> `code` (optional) | Arm the alarm in the away mode.
|
||||
| `alarm_arm_night` | `entity_id` <br> `code` (optional) | Arm the alarm in the night mode.
|
||||
| `alarm_arm_vacation` | `entity_id` <br> `code` (optional) | Arm the alarm in the vacation mode.
|
||||
| `alarm_disarm` | `entity_id` <br> `code` (optional) | Disarm the alarm.
|
||||
| `alarm_trigger` | `entity_id` <br> `code` (optional) | Trigger the alarm manually.
|
||||
| `alarm_arm_custom_bypass` | `entity_id` <br> `code` (optional) | Send arm custom bypass command.
|
||||
| Action | Data | Description |
|
||||
| ------------------------- | ---------------------------------- | ----------------------------------- |
|
||||
| `alarm_arm_home` | `entity_id` <br> `code` (optional) | Arm the alarm in the home mode. |
|
||||
| `alarm_arm_away` | `entity_id` <br> `code` (optional) | Arm the alarm in the away mode. |
|
||||
| `alarm_arm_night` | `entity_id` <br> `code` (optional) | Arm the alarm in the night mode. |
|
||||
| `alarm_arm_vacation` | `entity_id` <br> `code` (optional) | Arm the alarm in the vacation mode. |
|
||||
| `alarm_disarm` | `entity_id` <br> `code` (optional) | Disarm the alarm. |
|
||||
| `alarm_trigger` | `entity_id` <br> `code` (optional) | Trigger the alarm manually. |
|
||||
| `alarm_arm_custom_bypass` | `entity_id` <br> `code` (optional) | Send arm custom bypass command. |
|
||||
|
@ -317,8 +317,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:arrow-up-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: DPAD_UP
|
||||
target:
|
||||
@ -334,8 +334,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:arrow-left-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: DPAD_LEFT
|
||||
target:
|
||||
@ -345,15 +345,15 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:circle
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: DPAD_CENTER
|
||||
target:
|
||||
entity_id: remote.living_room_tv
|
||||
hold_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: DPAD_CENTER
|
||||
hold_secs: 0.5
|
||||
@ -362,8 +362,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:arrow-right-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: DPAD_RIGHT
|
||||
target:
|
||||
@ -373,15 +373,15 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:arrow-left
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: BACK
|
||||
target:
|
||||
entity_id: remote.living_room_tv
|
||||
hold_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: BACK
|
||||
hold_secs: 0.5
|
||||
@ -390,8 +390,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:arrow-down-bold
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: DPAD_DOWN
|
||||
target:
|
||||
@ -401,15 +401,15 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:home-outline
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: HOME
|
||||
target:
|
||||
entity_id: remote.living_room_tv
|
||||
hold_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: HOME
|
||||
hold_secs: 0.5
|
||||
@ -422,15 +422,15 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:skip-previous
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MEDIA_PREVIOUS
|
||||
target:
|
||||
entity_id: remote.living_room_tv
|
||||
hold_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MEDIA_REWIND
|
||||
target:
|
||||
@ -438,15 +438,15 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:play-pause
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MEDIA_PLAY_PAUSE
|
||||
target:
|
||||
entity_id: remote.living_room_tv
|
||||
hold_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MEDIA_STOP
|
||||
target:
|
||||
@ -454,15 +454,15 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:skip-next
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MEDIA_NEXT
|
||||
target:
|
||||
entity_id: remote.living_room_tv
|
||||
hold_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MEDIA_FAST_FORWARD
|
||||
target:
|
||||
@ -470,8 +470,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:volume-off
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: MUTE
|
||||
target:
|
||||
@ -481,8 +481,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:volume-medium
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: VOLUME_DOWN
|
||||
target:
|
||||
@ -492,8 +492,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:volume-high
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.send_command
|
||||
action: perform-action
|
||||
perform_action: remote.send_command
|
||||
data:
|
||||
command: VOLUME_UP
|
||||
target:
|
||||
@ -507,8 +507,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:youtube
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.turn_on
|
||||
action: perform-action
|
||||
perform_action: remote.turn_on
|
||||
data:
|
||||
activity: https://www.youtube.com
|
||||
target:
|
||||
@ -518,8 +518,8 @@ cards:
|
||||
- type: button
|
||||
icon: mdi:netflix
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.turn_on
|
||||
action: perform-action
|
||||
perform_action: remote.turn_on
|
||||
data:
|
||||
activity: com.netflix.ninja
|
||||
target:
|
||||
@ -530,8 +530,8 @@ cards:
|
||||
image: >-
|
||||
https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Amazon_Prime_Video_logo.svg/450px-Amazon_Prime_Video_logo.svg.png
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.turn_on
|
||||
action: perform-action
|
||||
perform_action: remote.turn_on
|
||||
data:
|
||||
activity: com.amazon.amazonvideo.livingroom
|
||||
target:
|
||||
@ -542,8 +542,8 @@ cards:
|
||||
image: >-
|
||||
https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Disney%2B_logo.svg/440px-Disney%2B_logo.svg.png
|
||||
tap_action:
|
||||
action: call-service
|
||||
action: remote.turn_on
|
||||
action: perform-action
|
||||
perform_action: remote.turn_on
|
||||
data:
|
||||
activity: com.disney.disneyplus
|
||||
target:
|
||||
|
@ -1,17 +1,20 @@
|
||||
---
|
||||
title: ArtSound
|
||||
description: Connect and control your ArtSound media players using the LinkPlay integration
|
||||
ha_release: 2024.9
|
||||
ha_category:
|
||||
- Media player
|
||||
ha_domain: artsound
|
||||
ha_zeroconf: true
|
||||
ha_integration_type: virtual
|
||||
works_with:
|
||||
- linkplay
|
||||
ha_supporting_domain: linkplay
|
||||
ha_supporting_integration: LinkPlay
|
||||
ha_release: 2024.9
|
||||
ha_codeowners:
|
||||
- '@Velleman'
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- media_player
|
||||
ha_iot_class: Local Polling
|
||||
---
|
||||
|
||||
The **ArtSound** {% term integration %} allows users to control their ArtSound media players through the **LinkPlay** {% term integration %}.
|
||||
|
||||
[Learn more about LinkPlay in Home Assistant.](/integrations/linkplay/)
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
@ -29,6 +29,15 @@ or using an [input boolean helper](/integrations/input_boolean).
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of binary sensor
|
||||
|
||||
A binary sensor can have two states: **on** or **off**. However, in the frontend, they might not be called **on** or **off**, but use an alternative term to be more meaningful in context. For example, hot/cold, locked/unlocked. The meaning of an **on** or **off** state depends on the device class.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
### Device class
|
||||
|
||||
{% include integrations/device_class_intro.md %}
|
||||
|
@ -20,7 +20,7 @@ related:
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The **BloomSky** {% term integration %} allows you to access your [BloomSky](https://www.bloomsky.com/) weather station's.
|
||||
The **BloomSky** {% term integration %} allows you to access your [BloomSky](https://www.bloomsky.com/) weather stations.
|
||||
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
|
||||
|
@ -13,6 +13,13 @@ ha_integration_type: integration
|
||||
ha_config_flow: true
|
||||
ha_platforms:
|
||||
- diagnostics
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
- docs: /integrations/default_config/
|
||||
title: Default config
|
||||
- url: https://esphome.io/projects/?type=bluetooth
|
||||
title: Bluetooth proxy page
|
||||
---
|
||||
|
||||
The **Bluetooth** {% term integration %} will detect nearby Bluetooth devices. Discovered devices will show up in the discovered section on the integrations page in the configuration panel.
|
||||
|
@ -84,13 +84,12 @@ action:
|
||||
data:
|
||||
message: The name of the POI # this is shown on the iDrive dashboard
|
||||
data:
|
||||
location:
|
||||
latitude: 48.177024
|
||||
longitude: 11.559107
|
||||
street: Street name # Optional
|
||||
city: City name # Optional
|
||||
postal_code: Postal Code # Optional
|
||||
country: Country # Optional
|
||||
latitude: 48.177024
|
||||
longitude: 11.559107
|
||||
street: Street name # Optional
|
||||
city: City name # Optional
|
||||
postal_code: Postal Code # Optional
|
||||
country: Country # Optional
|
||||
```
|
||||
|
||||
## Lock
|
||||
|
@ -29,9 +29,17 @@ form of a stateless switch.
|
||||
The button {% term 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 button entity does keep track of the timestamp of when the last time
|
||||
the button entity has been pressed in the Home Assistant UI or pressed via
|
||||
an action.
|
||||
The state of a button is a timestamp showing the date and time of the last time the button had been pressed in the Home Assistant UI or via an action.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/button/state_button.png' alt='Screenshot showing the state of a button entity in the developer tools' />
|
||||
Screenshot showing the state of a button entity in the developer tools.
|
||||
</p>
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
Because the {% term state %} of a button entity in Home Assistant is a timestamp, it
|
||||
means we can use it in our automations. For example:
|
||||
|
@ -21,7 +21,6 @@ integrations page to find integrations offering calendar entities. For example,
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
|
||||
## Viewing and managing calendars
|
||||
|
||||
Each calendar is represented as its own {% term entity %} in Home Assistant and can be
|
||||
@ -34,6 +33,18 @@ the **Add event** button in the lower right corner of the calendar dashboard.
|
||||
|
||||
Also see [Actions](#actions) below.
|
||||
|
||||
## The state of a calendar entity
|
||||
|
||||
The state shows whether or not there is an active event:
|
||||
|
||||
- On: The calendar has an active event.
|
||||
- Off: The calendar does not have an active event.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Automation
|
||||
|
||||
Calendar [Triggers](/docs/automation/trigger) enable {% term automation %} based on an
|
||||
@ -142,22 +153,22 @@ automation:
|
||||
## Actions
|
||||
|
||||
Some calendar {% term integrations %} allow Home Assistant to manage your calendars
|
||||
directly using {% term actions %}. The actions provided by some calendar {% term entity %} are described below or you can read more about [actions](/docs/scripts/service-calls/).
|
||||
directly using {% term actions %}. The actions provided by some calendar {% term entity %} are described below or you can read more about [actions](/docs/scripts/perform-actions/).
|
||||
|
||||
### Action `calendar.create_event`
|
||||
|
||||
Add a new calendar event. A calendar `target` is selected with a [Target Selector](/docs/blueprint/selectors/#target-selector) and the `data` payload supports the following fields:
|
||||
|
||||
| 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 (exclusive). | 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 (exclusive). | 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
|
||||
| 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 (exclusive). | 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 (exclusive). | 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 |
|
||||
|
||||
|
||||
{% note %}
|
||||
@ -193,14 +204,14 @@ data:
|
||||
|
||||
### Action `calendar.get_events`
|
||||
|
||||
This action populates [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data)
|
||||
This action populates [Response Data](/docs/scripts/perform-actions#use-templates-to-handle-response-data)
|
||||
with calendar events within a date range. It can return events from multiple calendars.
|
||||
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| ---------------------- | -------- | ----------- | --------|
|
||||
| `start_date_time` | yes | Return active events after this time (exclusive). When not set, defaults to now. | 2019-03-10 20:00:00
|
||||
| `end_date_time` | yes | Return active events before this time (exclusive). Cannot be used with `duration`. You must specify either `end_date_time` or `duration`.| 2019-03-10 23:00:00
|
||||
| `duration` | yes | Return active events from `start_date_time` until the specified duration. Cannot be used with `end_date_time`. You must specify either `duration` or `end_date_time`. | `days: 2`
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| ----------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------- |
|
||||
| `start_date_time` | yes | Return active events after this time (exclusive). When not set, defaults to now. | 2019-03-10 20:00:00 |
|
||||
| `end_date_time` | yes | Return active events before this time (exclusive). Cannot be used with `duration`. You must specify either `end_date_time` or `duration`. | 2019-03-10 23:00:00 |
|
||||
| `duration` | yes | Return active events from `start_date_time` until the specified duration. Cannot be used with `end_date_time`. You must specify either `duration` or `end_date_time`. | `days: 2` |
|
||||
|
||||
{% note %}
|
||||
Use only one of `end_date_time` or `duration`.
|
||||
@ -221,13 +232,13 @@ response_variable: agenda
|
||||
The response data contains a field for every calendar entity (e.g. `calendar.school` and `calendar.work` in this case).
|
||||
Every calendar entity has a field `events` containing a list of events with these fields:
|
||||
|
||||
| Response data | Description | Example |
|
||||
| ---------------------- | ----------- | -------- |
|
||||
| `summary` | The title of the event. | Bowling
|
||||
| `description` | The description of the event. | Birthday bowling
|
||||
| `start` | The date or date time the event starts. | 2019-03-10 20:00:00
|
||||
| `end` | The date or date time the event ends (exclusive). | 2019-03-10 23:00:00
|
||||
| `location` | The location of the event. | Bowling center
|
||||
| Response data | Description | Example |
|
||||
| ------------- | ------------------------------------------------- | ------------------- |
|
||||
| `summary` | The title of the event. | Bowling |
|
||||
| `description` | The description of the event. | Birthday bowling |
|
||||
| `start` | The date or date time the event starts. | 2019-03-10 20:00:00 |
|
||||
| `end` | The date or date time the event ends (exclusive). | 2019-03-10 23:00:00 |
|
||||
| `location` | The location of the event. | Bowling center |
|
||||
|
||||
This example uses a template with response data in another action:
|
||||
|
||||
|
@ -18,7 +18,7 @@ The camera integration allows you to use IP cameras with Home Assistant.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
### Streaming video
|
||||
## Streaming video
|
||||
|
||||
If your camera supports it, and the [`stream`](/integrations/stream) integration is setup, you will be able to stream your cameras in the frontend and on supported media players.
|
||||
|
||||
@ -29,37 +29,47 @@ The `Preload stream` option will start the camera feed on Home Assistant startup
|
||||
Example showing the Preload Stream option in the camera dialog.
|
||||
</p>
|
||||
|
||||
### Actions
|
||||
## The state of a camera
|
||||
|
||||
A camera can have the following states. Not all camera integrations support all states.
|
||||
|
||||
- **Streaming**: The camera transmits a live play-back of the video data it is recording.
|
||||
- **Recording**: The camera is currently capturing video content.
|
||||
- **Idle**: The camera is not currently capturing video content.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
Once loaded, the `camera` platform will expose actions that can be called to perform various actions.
|
||||
|
||||
Available actions: `enable_motion_detection`, `disable_motion_detection`, `play_stream`, `record`, `snapshot`, `turn_off` and `turn_on`.
|
||||
|
||||
#### Action `enable_motion_detection`
|
||||
### Action `enable_motion_detection`
|
||||
|
||||
Enable the motion detection in a camera.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Name(s) of entities to enable motion detection, e.g., `camera.living_room_camera`. |
|
||||
| -------------- | -------- | ---------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Name(s) of entities to enable motion detection, e.g., `camera.living_room_camera`. |
|
||||
|
||||
#### Action `disable_motion_detection`
|
||||
### Action `disable_motion_detection`
|
||||
|
||||
Disable the motion detection in a camera.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Name(s) of entities to disable motion detection, e.g., `camera.living_room_camera`. |
|
||||
| -------------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Name(s) of entities to disable motion detection, e.g., `camera.living_room_camera`. |
|
||||
|
||||
#### Action `play_stream`
|
||||
### Action `play_stream`
|
||||
|
||||
Play a live stream from a camera to selected media player(s). Requires [`stream`](/integrations/stream) integration to be set up.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | no | Name of entity to fetch stream from, e.g., `camera.living_room_camera`. |
|
||||
| `media_player` | no | Name of media player to play stream on, e.g., `media_player.living_room_tv`. |
|
||||
| `format` | yes | Stream format supported by `stream` integration and selected `media_player`. Default: `hls` |
|
||||
| -------------- | -------- | ------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | no | Name of entity to fetch stream from, e.g., `camera.living_room_camera`. |
|
||||
| `media_player` | no | Name of media player to play stream on, e.g., `media_player.living_room_tv`. |
|
||||
| `format` | yes | Stream format supported by `stream` integration and selected `media_player`. Default: `hls` |
|
||||
|
||||
For example, the following action in an automation would send an `hls` live stream to your chromecast.
|
||||
|
||||
@ -72,18 +82,18 @@ action:
|
||||
media_player: media_player.chromecast
|
||||
```
|
||||
|
||||
#### Action `record`
|
||||
### Action `record`
|
||||
|
||||
Make a `.mp4` recording from a camera stream. Requires `stream` integration to be set up.
|
||||
|
||||
Both `duration` and `lookback` options are suggestions, but should be consistent per camera. The actual length of the recording may vary. It is suggested that you tweak these settings to fit your needs.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
|
||||
| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/{{ entity_id.name }}.mp4`{% endraw %}. |
|
||||
| `duration` | yes | Target recording length (in seconds). Default: 30 |
|
||||
| `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream. Default: 0 |
|
||||
| -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
|
||||
| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/{{ entity_id.name }}.mp4`{% endraw %}. |
|
||||
| `duration` | yes | Target recording length (in seconds). Default: 30 |
|
||||
| `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream. Default: 0 |
|
||||
|
||||
The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/integrations/homeassistant/#allowlist_external_dirs) section of your {% term "`configuration.yaml`" %} file.
|
||||
|
||||
@ -102,14 +112,14 @@ action:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
#### Action `snapshot`
|
||||
### Action `snapshot`
|
||||
|
||||
Take a snapshot from a camera.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
|
||||
| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id.name }}`{% endraw %}. |
|
||||
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
|
||||
| `filename` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id.name }}`{% endraw %}. |
|
||||
|
||||
The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/integrations/homeassistant/) section of your {% term "`configuration.yaml`" %} file.
|
||||
|
||||
@ -128,21 +138,21 @@ action:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
#### Action `turn_off`
|
||||
### Action `turn_off`
|
||||
|
||||
Turn off camera. Not all camera models support this action, please consult individual camera page.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Name(s) of entities to turn off, e.g., `camera.living_room_camera`. |
|
||||
| -------------- | -------- | ------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Name(s) of entities to turn off, e.g., `camera.living_room_camera`. |
|
||||
|
||||
#### Action `turn_on`
|
||||
### Action `turn_on`
|
||||
|
||||
Turn on camera. Not all camera models support this action, please consult individual camera page.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------ |
|
||||
| `entity_id` | yes | Name(s) of entities to turn on, e.g., `camera.living_room_camera`. |
|
||||
| -------------- | -------- | ------------------------------------------------------------------ |
|
||||
| `entity_id` | yes | Name(s) of entities to turn on, e.g., `camera.living_room_camera`. |
|
||||
|
||||
### Test if it works
|
||||
|
||||
|
@ -15,6 +15,20 @@ The **Climate** {% term integration %} allows you to control and monitor HVAC (h
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of an HVAC entity
|
||||
|
||||
An HVAC entity can have the following states, depending on the specific climate device and its capabilities.
|
||||
|
||||
- **Off**: The device is turned off.
|
||||
- **Heat**: The device is set to heat to a target temperature.
|
||||
- **Cool**: The device is set to cool to a target temperature.
|
||||
- **Heat/Cool**: The device is set to heat/cool to a target temperature range.
|
||||
- **Auto**: The device is set to a schedule, learned behavior, AI.
|
||||
- **Dry**: The device is set to dry/humidity mode.
|
||||
- **Fan only**: The device only has the fan on. No heating or cooling is taking place.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
### Climate control actions
|
||||
@ -165,7 +179,7 @@ automation:
|
||||
target:
|
||||
entity_id: climate.kitchen
|
||||
data:
|
||||
fan_mode: "On Low"
|
||||
fan_mode: "low"
|
||||
```
|
||||
|
||||
### Action `climate.set_hvac_mode`
|
||||
|
@ -11,11 +11,14 @@ ha_domain: config
|
||||
ha_platforms:
|
||||
- scene
|
||||
ha_integration_type: system
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
The `config` integration is designed to display panels in the frontend to configure and manage parts of Home Assistant.
|
||||
|
||||
This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
|
||||
This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your {% term "`configuration.yaml`" %} file. If that is the case, the following example shows you how to enable this integration manually:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
@ -166,7 +166,7 @@ Send a message to a conversation agent for processing.
|
||||
| `agent_id` | yes | ID of conversation agent. The conversation agent is the brains of the assistant. It processes the incoming text commands. |
|
||||
| `conversation_id` | yes | ID of a new or previous conversation. Will continue an old conversation or start a new one. |
|
||||
|
||||
This action is able to return [response data](/docs/scripts/service-calls/#use-templates-to-handle-response-data). The response is the same response as for the
|
||||
This action is able to return [response data](/docs/scripts/perform-actions/#use-templates-to-handle-response-data). The response is the same response as for the
|
||||
[`/api/conversation/process` API](https://developers.home-assistant.io/docs/intent_conversation_api#conversation-response).
|
||||
|
||||
## Action `conversation.reload`
|
||||
|
@ -20,6 +20,20 @@ Home Assistant can give you an interface to control covers such as rollershutter
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of a cover
|
||||
|
||||
A can have the following states:
|
||||
|
||||
- **Opening**: The cover is in the process of opening to reach a set position.
|
||||
- **Open**: The cover has reached the open position.
|
||||
- **Closing**: The cover is in the process of closing to reach a set position.
|
||||
- **Closed**: The cover has reached the closed position.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
|
||||
How the state of a cover is represented in the frontend depends on the device class.
|
||||
|
||||
## Device class
|
||||
|
||||
{% include integrations/device_class_intro.md %}
|
||||
@ -54,8 +68,8 @@ The following device classes are supported for covers.
|
||||
Available actions: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`, `cover.toggle`, `cover.open_cover_tilt`, `cover.close_cover_tilt`, `cover.stop_cover_tilt`, `cover.toggle_tilt`
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. |
|
||||
| -------------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. |
|
||||
|
||||
#### Automation example
|
||||
|
||||
@ -75,9 +89,9 @@ automation:
|
||||
Set cover position of one or multiple covers.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. |
|
||||
| `position` | no | Integer between 0 and 100. |
|
||||
| -------------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. |
|
||||
| `position` | no | Integer between 0 and 100. |
|
||||
|
||||
#### Automation example
|
||||
|
||||
@ -98,10 +112,10 @@ automation:
|
||||
|
||||
Set cover tilt position of one or multiple covers.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. |
|
||||
| `tilt_position` | no | Integer between 0 and 100. |
|
||||
| Data attribute | Optional | Description |
|
||||
| --------------- | -------- | ---------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all. |
|
||||
| `tilt_position` | no | Integer between 0 and 100. |
|
||||
|
||||
#### Automation example
|
||||
|
||||
|
@ -17,6 +17,20 @@ The **Date** {% term integration %} is built for the controlling and monitoring
|
||||
|
||||
If you are looking for a way to create a similar entity, please take a look at the [Date/Time helper](/integrations/input_datetime).
|
||||
|
||||
## The state of a date entity
|
||||
|
||||
The state of a date entity is the actual date value.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/date/state_date.png' alt='Screenshot showing the state of a date in the developer tools' />
|
||||
Screenshot showing the state of a date in the developer tools. In the example shown, the state is January 1, 2020; in the format YYYY-MM-DD.
|
||||
</p>
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
### Date actions
|
||||
@ -27,7 +41,7 @@ Available {% term actions %}: `date.set_value`
|
||||
|
||||
Set a new value for the date {% term entity %}.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | String or list of strings that point at `entity_id`'s of dates to control.
|
||||
| `date` | no | New date value to set.
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | -------------------------------------------------------------------------- |
|
||||
| `entity_id` | no | String or list of strings that point at `entity_id`'s of dates to control. |
|
||||
| `date` | no | New date value to set. |
|
||||
|
@ -17,6 +17,20 @@ The **Date/Time** {% term integration %} is built for the controlling and monito
|
||||
|
||||
If you are looking for a way to create a Date/Time entity, please take a look at the [Date/Time helper](/integrations/input_datetime).
|
||||
|
||||
## The state of a date/time entity
|
||||
|
||||
The state of a date/time entity is the actual date and time value.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/datetime/state_datetime.png' alt='Screenshot showing the state of a date/time entity in the developer tools' />
|
||||
Screenshot showing the state of a date/time entity in the developer tools. In the example shown, the state is January 1, 2020 at 12:00 in the format YYYY-MM-DD T HH:MM:SS.
|
||||
</p>
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
### datetime actions
|
||||
@ -28,6 +42,6 @@ Available {% term actions %}: `datetime.set_value`
|
||||
Set a new value for the datetime {% term entity %}.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | no | String or list of strings that point at `entity_id`'s of datetimes to control. |
|
||||
| `datetime` | no | New datetime value to set. If timezone is not included, the Home Assistant instance's timezone will be used. |
|
||||
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | no | String or list of strings that point at `entity_id`'s of datetimes to control. |
|
||||
| `datetime` | no | New datetime value to set. If timezone is not included, the Home Assistant instance's timezone will be used. |
|
||||
|
@ -134,10 +134,12 @@ your Visual Studio Code project to connect to the debugger.
|
||||
{
|
||||
// Example of attaching to local debug server
|
||||
"name": "Python: Attach Local",
|
||||
"type": "python",
|
||||
"type": "debugpy",
|
||||
"request": "attach",
|
||||
"port": 5678,
|
||||
"host": "localhost",
|
||||
"connect": {
|
||||
"port": 5678,
|
||||
"host": "localhost",
|
||||
},
|
||||
"pathMappings": [
|
||||
{
|
||||
"localRoot": "${workspaceFolder}",
|
||||
@ -148,10 +150,12 @@ your Visual Studio Code project to connect to the debugger.
|
||||
{
|
||||
// Example of attaching to my production server
|
||||
"name": "Python: Attach Remote",
|
||||
"type": "python",
|
||||
"type": "debugpy",
|
||||
"request": "attach",
|
||||
"port": 5678,
|
||||
"host": "homeassistant.local",
|
||||
"connect": {
|
||||
"port": 5678,
|
||||
"host": "homeassistant.local",
|
||||
},
|
||||
"pathMappings": [
|
||||
{
|
||||
"localRoot": "${workspaceFolder}",
|
||||
|
@ -47,7 +47,7 @@ Note that setting `track_new_devices: false` will still result in new devices be
|
||||
|
||||
{% endnote %}
|
||||
|
||||
The extended example from above would look like the following sample:
|
||||
In the {% term "`configuration.yaml`" %}, the extended example from above would look like the following sample:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry for Netgear device
|
||||
@ -96,23 +96,43 @@ In the example above, `devicename` refers to the detected name of the device. F
|
||||
| `picture` | None | A picture that you can use to easily identify the person or device. You can also save the image file in a folder "www" in the same location (can be obtained from developer tools) where you have your `configuration.yaml` file and just use `picture: /local/favicon-192x192.png`. The path 'local' is mapped to the 'www' folder you create. |
|
||||
| `icon` | mdi:account | An icon for this device (use as an alternative to `picture`). |
|
||||
| `gravatar` | None | An email address for the device's owner. If provided, it will override `picture`. |
|
||||
| `track` | [uses platform setting] | If `yes`/`on`/`true` then the device will be tracked. Otherwise its location and state will not update. |
|
||||
| `consider_home` | [uses platform setting] | Seconds to wait till marking someone as not home after not being seen. Allows you to override the global `consider_home` setting from the platform configuration on a per device level. |
|
||||
| `track` | [uses platform setting] | If `yes`/`on`/`true` then the device will be tracked. Otherwise its location and state will not update. The `track` setting only applies for devices that were configured directly in YAML. |
|
||||
| `consider_home` | [uses platform setting] | Seconds to wait till marking someone as not home after not being seen. Allows you to override the global `consider_home` setting from the platform configuration on a per device level. The `consider_home` setting only applies for devices that were configured directly in YAML. |
|
||||
|
||||
## Device states
|
||||
## The state of a tracked device
|
||||
|
||||
The state of your tracked device will be `'home'` if it is in the [home zone](/integrations/zone#home-zone), detected by your network or Bluetooth based presence detection. If you're using a presence detection method that includes coordinates then when it's in a zone the state will be the name of the zone (case sensitive). When a device isn't at home and isn't in any zone, the state will be `'not_home'`.
|
||||
The type of state a device tracker can have depends on whether it uses GPS or a router as the data source.
|
||||
|
||||
A device tracker with **GPS** as a source can have any number of string states. The integration can return one of the following options:
|
||||
|
||||
- Report GPS coordinates. The coordinates are then matched to a zone (which is set as state). If the home zone is matched, the state will be **Home**. If no zone was matched the state will be **Not home**.
|
||||
- Report a location. This could be any string which is set as state.
|
||||
|
||||
A device tracker with **router** as a source can have one of two states: **Home**, or **Not home**.
|
||||
|
||||
- **Home**: Your tracked device is in the [home zone](/integrations/zone#home-zone), detected by your network or Bluetooth-based presence detection. If you're using a presence detection method that includes coordinates: when it's in a zone, the state equals the name of the zone (case sensitive).
|
||||
- **Not home**: When a device isn't at home and isn't in any zone.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/device_tracker/state_device_tracker.png' alt='Screenshot showing the state of a device tracker entity in the developer tools' />
|
||||
Screenshot showing the state of a device tracker entity in the developer tools.
|
||||
</p>
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## `device_tracker.see` action
|
||||
|
||||
The `device_tracker.see` action can be used to manually update the state of a device tracker:
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | --------------------------------------------------------------------------------------- |
|
||||
| `dev_id` | no | The `object_id`, for example `tardis` for `device_tracker.tardis` |
|
||||
| `location_name` | yes | The location, `home`, `not_home`, or the name of the zone |
|
||||
| `host_name` | yes | The hostname of the device tracker |
|
||||
| `mac` | yes | The MAC address of the entity (only specify if you're updating a network based tracker) |
|
||||
| `gps` | yes | If you're providing a location, for example `[51.513845, -0.100539]` |
|
||||
| `gps_accuracy` | yes | The accuracy of the GPS fix |
|
||||
| `battery` | yes | The battery level of the device |
|
||||
| Data attribute | Optional | Description |
|
||||
| --------------- | -------- | --------------------------------------------------------------------------------------- |
|
||||
| `dev_id` | no | The `object_id`, for example `tardis` for `device_tracker.tardis` |
|
||||
| `location_name` | yes | The location, `home`, `not_home`, or the name of the zone |
|
||||
| `host_name` | yes | The hostname of the device tracker |
|
||||
| `mac` | yes | The MAC address of the entity (only specify if you're updating a network based tracker) |
|
||||
| `gps` | yes | If you're providing a location, for example `[51.513845, -0.100539]` |
|
||||
| `gps_accuracy` | yes | The accuracy of the GPS fix |
|
||||
| `battery` | yes | The battery level of the device |
|
||||
|
@ -16,7 +16,7 @@ The **DHCP discovery** {% term integration %} will watch the network for DHCP re
|
||||
|
||||
## Configuration
|
||||
|
||||
This {% term integration %} is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
|
||||
This {% term integration %} is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually in the {% term "`configuration.yaml`" %} file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
@ -16,7 +16,7 @@ The **Downloader** {% term integration %} provides an action to download files.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
If the path is not absolute, it’s assumed to be relative to the Home Assistant configuration directory (for example, .homeassistant/downloads).
|
||||
If the path is not absolute, it’s assumed to be relative to the Home Assistant configuration directory (for example, `/config/downloads`). So if you have a folder called `/config/my_download_folder`, when prompted to **Select a location to get to store downloads**, enter `my_download_folder`. Home Assistant checks if the directory exists.
|
||||
|
||||
### Use the action
|
||||
|
||||
|
@ -68,7 +68,7 @@ For the dynamic gas prices, only entities are created that display the
|
||||
|
||||
## Actions
|
||||
|
||||
The energy and gas prices are exposed using [actions](/docs/scripts/service-calls/). The actions populate [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data) with price data.
|
||||
The energy and gas prices are exposed using [actions](/docs/scripts/perform-actions/). The actions populate [response data](/docs/scripts/perform-actions#use-templates-to-handle-response-data) with price data.
|
||||
|
||||
### Action `easyenergy.get_gas_prices`
|
||||
|
||||
|
@ -22,13 +22,17 @@ ha_integration_type: integration
|
||||
|
||||
## Ecowitt Weather Station configuration
|
||||
|
||||
The following steps must be performed to set up this integration. For security reason, use the token path that you get from the Home Assistant config flow.
|
||||
The **Ecowitt** {% term integration %} works by first creating a callback endpoint on your Home Assistant instance and then adding this configuration to the Ecowitt console so that it starts sending data.
|
||||
|
||||
1. Use the Ecowitt App (on your phone) or access the Ecowitt WebUI in a browser at the station IP address.
|
||||
2. Pick your station -> Menu Others -> DIY Upload Servers.
|
||||
3. Hit next and select 'Customized'
|
||||
4. Pick the protocol Ecowitt, and put in the ip/hostname of your Home Assistant server.
|
||||
5. Path has to match! If using the Ecowitt App, remove the first forward slash from the API token, as the app will prepend one.
|
||||
6. Save configuration.
|
||||
To set up this integration:
|
||||
|
||||
1. Add the Ecowitt integration to your Home Assistant instance. When doing so, the config flow will display a Server IP, Path, and Port.
|
||||
2. Use the Ecowitt App (on your phone) or access the Ecowitt WebUI in a browser at the station IP address.
|
||||
3. Select your station > Menu **Others** > **DIY Upload Servers**.
|
||||
4. Select **Next**, then select **Customized**.
|
||||
5. Select the protocol **Ecowitt**.
|
||||
6. Enter the Server IP, Path, and Port that were displayed in step 1.
|
||||
- The path has to match! If using the Ecowitt app, remove the first forward slash from the path, as the app will prepend one.
|
||||
7. Save the configuration.
|
||||
|
||||
Ecowitt doesn't support TLS/SSL, you can use the NGINX TLS Proxy Add-on to support HTTPS and HTTP at the same time.
|
||||
|
@ -122,7 +122,7 @@ entities:
|
||||
type: list
|
||||
{% endconfiguration %}
|
||||
|
||||
A full configuration sample looks like the one below.
|
||||
A full configuration sample looks like the one below. Configuration entries are added to the {% term "`configuration.yaml`" %} file.
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
@ -57,18 +57,18 @@ For the dynamic gas prices, only entities are created that display the
|
||||
|
||||
## Actions
|
||||
|
||||
The energy and gas prices are exposed using [actions](/docs/scripts/service-calls/). The actions populate [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data) with price data.
|
||||
The energy and gas prices are exposed using [actions](/docs/scripts/perform-actions/). The actions populate [Response Data](/docs/scripts/perform-actions#use-templates-to-handle-response-data) with price data.
|
||||
|
||||
### Action `energyzero.get_gas_prices`
|
||||
|
||||
Fetches the gas prices. The `config_entry` value be found using the **Actions** tab in the **Developer Tools**, selecting the desired entity and then switching to YAML.
|
||||
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| ---------------------- | -------- | ----------- | --------|
|
||||
| `config_entry` | no | Config entry to use. | 1b4a46c6cba0677bbfb5a8c53e8618b0
|
||||
| `incl_vat` | no | Defines whether the prices include or exclude VAT. | false
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| -------------- | -------- | ---------------------------------------------------- | -------------------------------- |
|
||||
| `config_entry` | no | Config entry to use. | 1b4a46c6cba0677bbfb5a8c53e8618b0 |
|
||||
| `incl_vat` | no | Defines whether the prices include or exclude VAT. | false |
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
### Response data
|
||||
|
||||
@ -98,12 +98,12 @@ The response data is a dictionary with the gas timestamps and prices as string a
|
||||
|
||||
Fetches the energy prices. The `config_entry` value be found using the **Actions** tab in the **Developer Tools**, selecting the desired entity and then switching to YAML.
|
||||
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| ---------------------- | -------- | ----------- | --------|
|
||||
| `config_entry` | no | Config entry to use. Can be found using the **Actions** tab in the **Developer Tools** and switching to YAML. | 1b4a46c6cba0677bbfb5a8c53e8618b0
|
||||
| `incl_vat` | no | Defines whether the prices include or exclude VAT. | false
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------- | -------------------------------- |
|
||||
| `config_entry` | no | Config entry to use. Can be found using the **Actions** tab in the **Developer Tools** and switching to YAML. | 1b4a46c6cba0677bbfb5a8c53e8618b0 |
|
||||
| `incl_vat` | no | Defines whether the prices include or exclude VAT. | false |
|
||||
| `start` | yes | Start time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
| `end` | yes | End time to get prices. Defaults to today 00:00:00 | 2023-01-01 00:00:00 |
|
||||
|
||||
### Response data
|
||||
|
||||
|
@ -18,3 +18,7 @@ ha_iot_class: Cloud Polling
|
||||
---
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
||||
## Limitations
|
||||
|
||||
Unlike other utilities that use the [{{ page.ha_supporting_integration }}](/integrations/{{ page.ha_supporting_domain }}) integration, {{ name }} only publishes monthly data.
|
||||
|
@ -23,7 +23,16 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
An integration for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy-and-combiner) solar energy gateway. This integration works with older models that only have production metrics (ie. Envoy-C) and newer models that offer both production and consumption metrics (ie. Envoy-S). Firmware version 3.9 or newer is required.
|
||||
An integration for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy-and-combiner) solar energy gateway. This integration works with older models that only have production metrics (ie. Envoy-C) and newer models that offer both production and consumption metrics (ie. Envoy-S).
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- The Envoy must be configured and commissioned.
|
||||
- The Envoy must be on your local network with IPV4 connectivity from Home Assistant.
|
||||
- Envoy firmware version 3.9 or newer.
|
||||
- With Envoy firmware 7 and greater
|
||||
- an Enlighten cloud username and password.
|
||||
- Home Assistant 2023.9 or newer.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -10,6 +10,8 @@ ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_integration_type: entity
|
||||
related:
|
||||
- docs: /docs/automation/trigger/#event-trigger
|
||||
title: Event triggers
|
||||
- docs: /docs/configuration/customizing-devices/
|
||||
title: Customizing devices
|
||||
- docs: /dashboards/
|
||||
@ -18,6 +20,8 @@ related:
|
||||
|
||||
Events are signals that are emitted when something happens, for example, when a user presses a physical button like a doorbell or when a button on a remote control is pressed.
|
||||
|
||||
The **Event** {% term integration %} provides {% term entities %} that trigger state change events, as do all other entity integrations.
|
||||
|
||||
These events do not capture a state in the traditional sense. For example, a doorbell does not have a state such as "on" or "off" but instead is momentarily pressed. Some events can have variations in the type of event that is emitted. For example, maybe your remote control is capable of emitting a single press, a double press, or a long press.
|
||||
|
||||
The event entity can capture these events in the physical world and makes them available in Home Assistant as an entity.
|
||||
@ -26,13 +30,18 @@ The event entity can capture these events in the physical world and makes them a
|
||||
|
||||
## The state of an event entity
|
||||
|
||||
The event entity does not capture a state such as `on` or `off`. Instead, an event entity keeps track of the timestamp when the emitted event has last been detected.
|
||||
The event entity does not capture a state such as **On** or **Off**. Instead, an event entity keeps track of the timestamp when the emitted event has last been detected.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/event/event_timestamp.png' alt='Event entity with timestamp value in state and event type "pressed"'>
|
||||
Event entity with a timestamp value in state and event type "pressed".
|
||||
</p>
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
Because the state of an event entity in Home Assistant is a timestamp, it means we can use it in our automations. For example:
|
||||
|
||||
```yaml
|
||||
|
@ -11,10 +11,19 @@ ha_codeowners:
|
||||
ha_integration_type: entity
|
||||
---
|
||||
|
||||
The fan integration allows you to control and monitor fan devices.
|
||||
The **Fan** {% term integration %} allows you to control and monitor fan devices.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of a fan entity
|
||||
|
||||
The state of a fan entity can be either **On** or **Off**.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
### Fan control actions
|
||||
|
@ -25,7 +25,7 @@ ability to run scripts or invoke actions for each of the `turn_on`, `turn_off`,
|
||||
## Configuration
|
||||
|
||||
To enable template fans in your installation, add the following to your
|
||||
`configuration.yaml` file:
|
||||
{% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
|
@ -52,10 +52,12 @@ name:
|
||||
start_time:
|
||||
description: The start time.
|
||||
required: false
|
||||
default: sunrise
|
||||
type: time
|
||||
stop_time:
|
||||
description: The stop time.
|
||||
required: false
|
||||
default: dusk
|
||||
type: time
|
||||
start_colortemp:
|
||||
description: The color temperature at the start.
|
||||
@ -102,7 +104,7 @@ unique_id:
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
Full example:
|
||||
Full example of an entry in the {% term "`configuration.yaml`" %} file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
@ -11,7 +11,7 @@ ha_domain: frontend
|
||||
ha_integration_type: system
|
||||
---
|
||||
|
||||
This offers the official frontend to control Home Assistant. This integration is enabled by default unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
|
||||
This offers the official frontend to control Home Assistant. This integration is enabled by default unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your {% term "`configuration.yaml`" %} file. If that is the case, the following example shows you how to enable this integration manually in the {% term "`configuration.yaml`" %} file.
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
@ -52,6 +52,7 @@ frontend:
|
||||
### Theme format
|
||||
|
||||
The frontend integration allows you to create custom themes to influence the look and feel of the user interface.
|
||||
Example of a configuration entry in the {% term "`configuration.yaml`" %} file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
@ -163,9 +164,9 @@ There are two themes-related actions:
|
||||
### Action `set_theme`
|
||||
|
||||
| Data attribute | Description |
|
||||
| ---------------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `name` | Name of the theme to set, `default` for the default theme or `none` to restore to the default. |
|
||||
| `mode` | If the theme should be applied in light or dark mode `light` or `dark` (Optional, default `light`). |
|
||||
| -------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| `name` | Name of the theme to set, `default` for the default theme or `none` to restore to the default. |
|
||||
| `mode` | If the theme should be applied in light or dark mode `light` or `dark` (Optional, default `light`). |
|
||||
|
||||
If no dark mode backend theme is set, the light mode theme will also be used in dark mode.
|
||||
The backend theme settings will be saved and restored on a restart of Home Assistant.
|
||||
|
@ -33,7 +33,7 @@ If you need more specific features for your use case, the manual [YAML-configura
|
||||
|
||||
Alternatively, this integration can be configured and set up manually via YAML
|
||||
as well. To enable the generic hygrostat in your installation, add the
|
||||
following to your `configuration.yaml` file:
|
||||
following to your {% term "`configuration.yaml`" %} file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
@ -122,6 +122,8 @@ Time for `min_cycle_duration` and `keep_alive` must be set as "hh:mm:ss" or it m
|
||||
|
||||
## Full YAML configuration example
|
||||
|
||||
To be added to the {% term "`configuration.yaml`" %} file.
|
||||
|
||||
```yaml
|
||||
generic_hygrostat:
|
||||
- name: Bedroom
|
||||
|
@ -97,7 +97,7 @@ This action isn't tied to any integration entry, so it won't use the model, prom
|
||||
{% endtip %}
|
||||
|
||||
Allows you to ask Gemini Pro or Gemini Pro Vision to generate content from a prompt consisting of text and optionally images.
|
||||
This action populates [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data) with the generated content.
|
||||
This action populates [response data](/docs/scripts/perform-actions#use-templates-to-handle-response-data) with the generated content.
|
||||
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| ---------------------- | -------- | ----------------------------------------------- | ------------------- |
|
||||
|
@ -115,7 +115,7 @@ You can also use supported BCP 47 tags like the below or the 2-2 digit format fo
|
||||
|
||||
## Action speak
|
||||
|
||||
The `tts.speak` actiion is the modern way to use Google translate TTS action. Add the `speak` action, select the entity for your Google translate TTS (it's named for the language you created it with), select the media player entity or group to send the TTS audio to, and enter the message to speak.
|
||||
The `tts.speak` action is the modern way to use Google translate TTS action. Add the `speak` action, select the entity for your Google translate TTS (it's named for the language you created it with), select the media player entity or group to send the TTS audio to, and enter the message to speak.
|
||||
|
||||
For more options about `speak`, see the Speak section on the main [TTS](/integrations/tts/#action-speak) building block page.
|
||||
|
||||
|
@ -39,16 +39,26 @@ ha_integration_type: helper
|
||||
|
||||
The group integration lets you combine multiple entities into a single entity. Entities that are members of a group can be controlled and monitored as a whole.
|
||||
|
||||
This can be useful for cases where you want to control, for example, the
|
||||
multiple bulbs in a light fixture as a single light in Home Assistant.
|
||||
This can be useful, for example, in cases where you want to control multiple bulbs in a light fixture as a single light in Home Assistant. You also have the option of hiding the individual member entities in a group.
|
||||
|
||||
Home Assistant can group multiple binary sensors, covers, events, fans, lights, locks, media players, switches as a single entity, with the option of hiding the individual member entities.
|
||||
The following entities can be grouped:
|
||||
|
||||
- [binary sensor (binary sensors)](/integrations/binary_sensor/)
|
||||
- [button (buttons)](/integrations/button/)
|
||||
- [cover (covers)](/integrations/cover/)
|
||||
- [fan (fans)](/integrations/fan/)
|
||||
- [switch (switches)](/integrations/switch/)
|
||||
- [lock (locks)](/integrations/lock/)
|
||||
- [light (lights)](/integrations/light/)
|
||||
- [event (events)](/integrations/event/)
|
||||
- [media player (media players)](/integrations/media_player/)
|
||||
- [notify (notifications)](/integrations/notify/)
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
{% note %}
|
||||
Notification entities can only be grouped via the UI.
|
||||
The older notification services can only be grouped via YAML configuration.
|
||||
The older notification actions can only be grouped via YAML configuration.
|
||||
{% endnote %}
|
||||
|
||||
## Group behavior
|
||||
@ -145,6 +155,14 @@ To add or remove entities from an existing group, click on `Group options`, all
|
||||
|
||||

|
||||
|
||||
### Group attributes
|
||||
|
||||
These are the attributes available for a group.
|
||||
|
||||
| Attribute | Data |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `entity_id` | List of all the `entity_id`'s in the group. |
|
||||
|
||||
## YAML configuration
|
||||
|
||||
Alternatively, this integration can be configured and set up manually via YAML
|
||||
@ -344,7 +362,7 @@ services:
|
||||
required: true
|
||||
type: list
|
||||
keys:
|
||||
service:
|
||||
action:
|
||||
description: The name part of an entity ID, e.g., if you use `notify.html5` normally, just put `html5`. Note that you must put everything in lower case here. Although you might have capitals written in the actual notification actions!
|
||||
required: true
|
||||
type: string
|
||||
@ -452,6 +470,16 @@ It is possible to create a group that the system cannot calculate a group state.
|
||||
|
||||
These groups can still be in templates with the `expand()` directive, called using the `homeassistant.turn_on` and `homeassistant.turn_off` actions, etc.
|
||||
|
||||
### Attributes
|
||||
|
||||
These are the attributes available for an old-style group.
|
||||
|
||||
| Attribute | Data |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | List of all the `entity_id`'s in the group. |
|
||||
| `order` | Integer representing the order in which the entity was created, starting with `0`. |
|
||||
| `auto` | Boolean that will always be set to `true`. Only appears in groups that were created with the `set` action. |
|
||||
|
||||
### Actions
|
||||
|
||||
This integration provides the following actions to modify groups and a action to reload the configuration without restarting Home Assistant itself.
|
||||
|
@ -172,7 +172,7 @@ Here are some examples of periods you could work with, and what to write in your
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ today_at() }}"
|
||||
start: "{{ today_at('00:00') }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -183,7 +183,7 @@ Here are some examples of periods you could work with, and what to write in your
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
end: "{{ today_at() }}"
|
||||
end: "{{ today_at('00:00') }}"
|
||||
duration:
|
||||
hours: 24
|
||||
```
|
||||
@ -209,7 +209,7 @@ Here, last Monday is today at 00:00, minus the current weekday (the weekday is 0
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ today_at() - timedelta(days=now().weekday()) }}"
|
||||
start: "{{ today_at('00:00') - timedelta(days=now().weekday()) }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -220,7 +220,7 @@ Here, last Monday is today at 00:00, minus the current weekday (the weekday is 0
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ today_at().replace(day=1) }}"
|
||||
start: "{{ today_at('00:00').replace(day=1) }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -231,8 +231,8 @@ Here, last Monday is today at 00:00, minus the current weekday (the weekday is 0
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ (today_at().replace(day=1) - timedelta(days=1)).replace(day=1) }}"
|
||||
end: "{{ today_at().replace(day=1) }}"
|
||||
start: "{{ (today_at('00:00').replace(day=1) - timedelta(days=1)).replace(day=1) }}"
|
||||
end: "{{ today_at('00:00').replace(day=1) }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
@ -254,7 +254,7 @@ Here, last Monday is today at 00:00, minus the current weekday (the weekday is 0
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
end: "{{ today_at() }}"
|
||||
end: "{{ today_at('00:00') }}"
|
||||
duration:
|
||||
days: 30
|
||||
```
|
||||
|
@ -37,17 +37,20 @@ Note that it depends on the appliance and on API permissions which of the featur
|
||||
|
||||
1. Visit [https://developer.home-connect.com](https://developer.home-connect.com) and sign up for a developer account.
|
||||
2. Enter the email of your login for the original Home Connect App from Bosch/Siemens under "Default Home Connect User Account for Testing" in the sign up process.
|
||||
3. Under [Applications](https://developer.home-connect.com/applications), register a new App:
|
||||
3. Go to the [Applications](https://developer.home-connect.com/applications) page and select [Register Application](https://developer.home-connect.com/application/add):
|
||||
|
||||
- Application ID: Home Assistant (or whatever name makes sense to you)
|
||||
- OAuth Flow: Authorization Code Grant Flow
|
||||
- Redirect URI: `https://my.home-assistant.io/redirect/oauth`
|
||||
- Go to `https://my.home-assistant.io/` and make sure that your Home Assistant URL is set there. For example: `http://homeassistant:8123/` or `http://homeassistant.local:8123`
|
||||
|
||||
4. On success, you will be redirected to the **Applications** page. Select **Details** for your app. Make note of the client ID and secret - you will need it for the next step. Log out of the Home Connect developer portal.
|
||||
5. In Home Assistant, find the Home Connect integration and launch it. You will be prompted to create an [Application Credential](https://www.home-assistant.io/integrations/application_credentials). You will need to provide a name (it's arbitrary) in addition to the Client ID and Secret from the previous step. Then, follow the steps in the UI to complete setup.
|
||||
|
||||
*Important*:
|
||||
- **Power on** all your appliances during the integration configuration process; otherwise appliance programs list will be empty.
|
||||
- To update the appliance programs list, you can reload the Home Connect integration when an appliance is turned on. If the re-initialization process is not triggered by reload, restart the Home Assistant when an appliance is turned on.
|
||||
- After performing the steps above **log out** of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`.
|
||||
- After performing the steps above, [log out](https://developer.home-connect.com/user/logout) of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`.
|
||||
- The provided Home Connect User Account email address **must** be all lowercase otherwise it will result in authentication failures.
|
||||
- All changes in the developer portal take 15 minutes before the change is implemented.
|
||||
|
||||
|
@ -24,7 +24,7 @@ The **Home Assistant Core** {% term integration %} provides generic implementati
|
||||
|
||||
The Home Assistant Core integration is also responsible for the general settings. These settings are defined during onboarding, but you can change them later under {% my general title="**Settings** > **System** > **General**" %}. For the detailed steps, refer to [Basic settings](/docs/configuration/basic/).
|
||||
|
||||
If you prefer editing in YAML, you can define your general settings in the [`configuration.yaml` file](/docs/configuration/).
|
||||
If you prefer editing in YAML, you can define your general settings in the {% term "`configuration.yaml`" %} file.
|
||||
Note that for some of the settings, these can't be edited from the UI if they were defined in YAML. They will be grayed out or inaccessible.
|
||||
|
||||
<p class='img'>
|
||||
@ -34,7 +34,7 @@ Note that for some of the settings, these can't be edited from the UI if they we
|
||||
|
||||
To get started with the general settings in YAML, follow these steps:
|
||||
|
||||
1. Copy the following information to your [`configuration.yaml` file](/docs/configuration/).
|
||||
1. Copy the following information to your {% term "`configuration.yaml`" %} file.
|
||||
|
||||
```yaml
|
||||
homeassistant:
|
||||
@ -150,7 +150,7 @@ By default, all of your devices will be visible and have a default icon determin
|
||||
|
||||
Most of these settings can be changed from the UI. For the detailed steps, refer to [Customizing entities](/docs/configuration/customizing-devices/).
|
||||
|
||||
If you prefer editing in YAML, you can define your general settings in the [`configuration.yaml` file](/docs/configuration/).
|
||||
If you prefer editing in YAML, you can define your general settings in the {% term "`configuration.yaml`" %} file.
|
||||
|
||||
### Possible values
|
||||
|
||||
@ -212,7 +212,7 @@ For a list of the supported device classes, refer to the documentation of the pl
|
||||
### Manual customization
|
||||
|
||||
{% important %}
|
||||
If you implement `customize`, `customize_domain`, or `customize_glob` you must make sure it is done inside of `homeassistant:` or it will fail.
|
||||
If you implement `customize`, `customize_domain`, or `customize_glob`, in your {% term "`configuration.yaml`" %} file, you must make sure it is done inside of `homeassistant:` or it will fail.
|
||||
{% endimportant %}
|
||||
|
||||
```yaml
|
||||
@ -280,11 +280,11 @@ will take effect the next time an importing template is rendered.
|
||||
Reloads an integration config entry.
|
||||
|
||||
| Data attribute | Description |
|
||||
| ---------------------- | ---------------------------------------------------------- |
|
||||
| `entity_id` | List of entity ids used to reference a config entry. |
|
||||
| `area_id` | List of area ids used to reference a config entry. |
|
||||
| `device_id` | List of device ids used to reference a config entry. |
|
||||
| `entry_id` | A single config entry id used to reference a config entry. |
|
||||
| -------------- | ---------------------------------------------------------- |
|
||||
| `entity_id` | List of entity ids used to reference a config entry. |
|
||||
| `area_id` | List of area ids used to reference a config entry. |
|
||||
| `device_id` | List of device ids used to reference a config entry. |
|
||||
| `entry_id` | A single config entry id used to reference a config entry. |
|
||||
|
||||
### Action `homeassistant.reload_core_config`
|
||||
|
||||
@ -305,10 +305,10 @@ Stops the Home Assistant instance. Home Assistant must be restarted from the Hos
|
||||
Update the location of the Home Assistant default zone (usually "Home").
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | --------------------------- |
|
||||
| `latitude` | no | Latitude of your location. |
|
||||
| `longitude` | no | Longitude of your location. |
|
||||
| `elevation` | yes | Elevation of your location. |
|
||||
| -------------- | -------- | --------------------------- |
|
||||
| `latitude` | no | Latitude of your location. |
|
||||
| `longitude` | no | Longitude of your location. |
|
||||
| `elevation` | yes | Elevation of your location. |
|
||||
|
||||
#### Example
|
||||
|
||||
@ -329,8 +329,8 @@ action compared the others, is that is can be used to mix different domains,
|
||||
for example, a light and a switch can be toggled in a single action.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | --------------------------------------------- |
|
||||
| `entity_id` | yes | The entity_id of the device to toggle on/off. |
|
||||
| -------------- | -------- | --------------------------------------------- |
|
||||
| `entity_id` | yes | The entity_id of the device to toggle on/off. |
|
||||
|
||||
#### Example
|
||||
|
||||
@ -351,8 +351,8 @@ action compared the others, is that is can be used to mix different domains,
|
||||
for example, a light and a switch can be turned on in a single action.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | --------------------------------------- |
|
||||
| `entity_id` | yes | The entity_id of the device to turn on. |
|
||||
| -------------- | -------- | --------------------------------------- |
|
||||
| `entity_id` | yes | The entity_id of the device to turn on. |
|
||||
|
||||
#### Example
|
||||
|
||||
@ -373,8 +373,8 @@ action compared the others, is that is can be used to mix different domains,
|
||||
for example, a light and a switch can be turned off in a single action.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------- |
|
||||
| `entity_id` | yes | The entity_id of the device to turn off. |
|
||||
| -------------- | -------- | ---------------------------------------- |
|
||||
| `entity_id` | yes | The entity_id of the device to turn off. |
|
||||
|
||||
#### Example
|
||||
|
||||
@ -392,8 +392,8 @@ action:
|
||||
Force one or more entities to update its data rather than wait for the next scheduled update.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------- |
|
||||
| `entity_id` | no | One or multiple entity_ids to update. It can be a list. |
|
||||
| -------------- | -------- | ------------------------------------------------------- |
|
||||
| `entity_id` | no | One or multiple entity_ids to update. It can be a list. |
|
||||
|
||||
#### Example
|
||||
|
||||
|
@ -22,7 +22,7 @@ dashboard if an alert is found that impacts your system.
|
||||
## Configuration
|
||||
|
||||
This integration is by default enabled unless you've disabled or removed the
|
||||
[`default_config:`](/integrations/default_config/) line from your configuration.
|
||||
[`default_config:`](/integrations/default_config/) line from your {% term "`configuration.yaml`" %} file.
|
||||
If that is the case, the following example shows you how to enable this
|
||||
integration manually:
|
||||
|
||||
|
@ -86,7 +86,7 @@ ssl_profile:
|
||||
default: modern
|
||||
{% endconfiguration %}
|
||||
|
||||
The sample below shows a configuration entry with possible values:
|
||||
The sample below shows a configuration entry in the {% term "`configuration.yaml`" %} file with possible values:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
@ -78,3 +78,7 @@ Philips/Signify released a new version of their Hue bridge (square shape) and th
|
||||
- Scene entities are not automatically created for V1 bridges. To activate a Hue scene on a V1 bridge from Home Assistant we provide an action to active it the Hue scene by name.
|
||||
- State updates for devices/entities on a V1 bridges are not received instantly but polled on interval.
|
||||
- Light entities for Hue rooms are not automatically created for V1 bridges, you can opt-in for creating entities for rooms within the Integration's options.
|
||||
|
||||
For v1 Hue bridges, you can create a script using the **Scripts** tab.
|
||||
1. Select **Add New Script** > **Add Action** > **Philips Hue: Activate Scene**
|
||||
2. Then select the appropriate room name in the **Group** field and the scene name in the **Scene** field stored on your Hue bridge.
|
||||
|
@ -17,10 +17,19 @@ related:
|
||||
title: Dashboard
|
||||
---
|
||||
|
||||
The `humidifier` integration is built for the controlling and monitoring of humidifiers, dehumidifiers, and hygrostat devices.
|
||||
The **Humidifier** {% term integration %} is built for the controlling and monitoring of humidifiers, dehumidifiers, and hygrostat devices.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of a humidifier entity
|
||||
|
||||
The state of a humidifier entity can be either **On** or **Off**.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Device class
|
||||
|
||||
{% include integrations/device_class_intro.md %}
|
||||
|
@ -61,6 +61,20 @@ Your Husqvarna account username/password used for the *Automower® Connect* pho
|
||||
6. Leave this tab open in browser and continue with Home Assistant configuration.
|
||||

|
||||
|
||||
|
||||
{% details "I have manually disabled My Home Assistant" %}
|
||||
|
||||
If you don't have [My Home Assistant](/integrations/my) on your installation,
|
||||
you can use `<HOME_ASSISTANT_URL>/auth/external/callback` as the redirect URI
|
||||
instead.
|
||||
|
||||
The `<HOME_ASSISTANT_URL>` must be the same as used during the configuration/
|
||||
authentication process.
|
||||
|
||||
Internal examples: `http://192.168.0.2:8123/auth/external/callback`, `http://homeassistant.local:8123/auth/external/callback`."
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
### Home Assistant
|
||||
|
||||
The My Home Assistant redirect feature needs to be setup to redirect to your Home Assistant installation. See [My FAQ](https://my.home-assistant.io/faq) for additional information.
|
||||
|
@ -11,6 +11,15 @@ ha_codeowners:
|
||||
ha_integration_type: entity
|
||||
---
|
||||
|
||||
The image integration allows other integrations to display a static image.
|
||||
The **Image** {% term integration %} allows other integrations to display a static image.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of an image entity
|
||||
|
||||
The state of an image entity is a timestamp, showing the date and time when the image was last changed.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
@ -15,6 +15,15 @@ Image processing enables Home Assistant to process images from [cameras](/integr
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of an image processing entity
|
||||
|
||||
For face recognition applications, the state of an image processing entity can be the name of the detected person or motion that was detected.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## ALPR
|
||||
|
||||
ALPR entities have a vehicle counter attribute `vehicles` and all found plates are stored in the `plates` attribute.
|
||||
|
@ -19,7 +19,15 @@ The IMAP integration is observing your [IMAP server](https://en.wikipedia.org/wi
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
### Gmail with App Password
|
||||
### IMAP services with App Passwords
|
||||
|
||||
### Microsoft 365 and Live IMAP services
|
||||
|
||||
Microsoft has removed support for direct use (App) passwords when accessing IMAP without modern verification. You can create an App password, but access is only allowed though OAUTH2 enabled mail clients authorized by Microsoft or via an App registration in Microsoft Entra ID (school or business).
|
||||
|
||||
An OAUTH2 authentication flow is not supported for the IMAP integration. This means that unfortunately, it is not possible to use Home Assistant IMAP with Microsoft 365 IMAP services for school and business and the (free) personal Microsoft Live IMAP services.
|
||||
|
||||
### Google Gmail IMAP service
|
||||
|
||||
If you’re going to use Gmail, 2-step verification must be enabled on your Gmail account. Once it is enabled, you need to create an [App Password](https://support.google.com/mail/answer/185833).
|
||||
|
||||
@ -54,17 +62,7 @@ By default, this integration will count unread emails. By configuring the search
|
||||
|
||||
### 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:
|
||||
|
||||
- Server: `outlook.office365.com`
|
||||
- Port: `993`
|
||||
- Username: Your full email address
|
||||
- Password: Your password
|
||||
- Charset: `US-ASCII`
|
||||
|
||||
{% important %}
|
||||
Yahoo also requires the character set `US-ASCII`.
|
||||
{% endimportant %}
|
||||
Some IMAP services, like Yahoo, require a `US-ASCII` charset to be configured.
|
||||
|
||||
### Selecting message data to include in the IMAP event (advanced mode)
|
||||
|
||||
|
@ -30,7 +30,7 @@ default unless you removed it. If you removed `default_config:` from your
|
||||
configuration, you must add `input_boolean:` to your {% term "`configuration.yaml`" %} first,
|
||||
then you can use the UI.
|
||||
|
||||
Input booleans can also be configured via {% term "`configuration.yaml`" %}:
|
||||
Input booleans can also be configured via {% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% configuration %}
|
||||
input_boolean:
|
||||
|
@ -19,7 +19,7 @@ templates.
|
||||
The preferred way to configure input datetime is via the user interface at **{% my helpers title="Settings > Devices & services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain="input_datetime" title="Date and/or time" %}** option.
|
||||
|
||||
To be able to add **{% my helpers title="Helpers" %}** via the user interface you should have `default_config:` in your {% term "`configuration.yaml`" %}, it should already be there by default unless you removed it.
|
||||
If you removed `default_config:` from your configuration, you must add `input_datetime:` to your `configuration.yaml` first, then you can use the UI.
|
||||
If you removed `default_config:` from your configuration, you must add `input_datetime:` to your {% term "`configuration.yaml`" %} first, then you can use the UI.
|
||||
|
||||
`input_datetime` can also be configured via YAML. To add three datetime inputs to your installation,
|
||||
one with both date and time, and one with date or time each,
|
||||
@ -96,11 +96,11 @@ Available actions: `input_datetime.set_datetime` and `input_datetime.reload`.
|
||||
#### input_datetime.set_datetime
|
||||
|
||||
| Data attribute | Format String | Description |
|
||||
| ---------------------- | ------------------- | -------------------------------------------------------------------------------- |
|
||||
| `date` | `%Y-%m-%d` | This can be used to dynamically set the date. |
|
||||
| `time` | `%H:%M:%S` | This can be used to dynamically set the time. |
|
||||
| `datetime` | `%Y-%m-%d %H:%M:%S` | This can be used to dynamically set both the date & time. |
|
||||
| `timestamp` | N/A | This can be used to dynamically set both the date & time using a UNIX timestamp. |
|
||||
| -------------- | ------------------- | -------------------------------------------------------------------------------- |
|
||||
| `date` | `%Y-%m-%d` | This can be used to dynamically set the date. |
|
||||
| `time` | `%H:%M:%S` | This can be used to dynamically set the time. |
|
||||
| `datetime` | `%Y-%m-%d %H:%M:%S` | This can be used to dynamically set both the date & time. |
|
||||
| `timestamp` | N/A | This can be used to dynamically set both the date & time using a UNIX timestamp. |
|
||||
|
||||
To set both the date and time in the same call, use `date` and `time` together, or use `datetime` or `timestamp` by itself. Using `datetime` or `timestamp` has the advantage that both can be set using one template.
|
||||
|
||||
|
@ -118,7 +118,8 @@ You can use the `sensor.iperf3_update` action to trigger a manual speed test for
|
||||
Once loaded, the `iperf3` integration will expose an action (`iperf3.speedtest`) that can be called to run a speed test on demand. This can be useful if you have enabled manual mode.
|
||||
|
||||
| Data attribute | Description |
|
||||
| `host` | String that point at a configured `host` from `configuration.yaml`. Otherwise, tests will be run against all configured hosts.
|
||||
| --- | --- |
|
||||
| `host` | String that point at a configured `host` from `configuration.yaml`. Otherwise, tests will be run against all configured hosts. |
|
||||
|
||||
Example action data:
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: IronOS
|
||||
description: Instructions on how to integrate IronOS-based Pinecil V2 devices with Home Assistant.
|
||||
ha_category:
|
||||
- Number
|
||||
- Sensor
|
||||
ha_iot_class: Local Polling
|
||||
ha_release: 2024.8
|
||||
@ -17,6 +18,10 @@ ha_platforms:
|
||||
|
||||
The **IronOS** {% term integration %} seamlessly connects Home Assistant with PINE64's Pinecil V2 soldering irons, allowing for remote monitoring and control. This integration provides real-time updates on temperature, power, and various other settings and diagnostic information.
|
||||
|
||||
## Minimum requirements
|
||||
|
||||
- **Pinecil V2** requires IronOS v2.21 or higher to connect to Home Assistant. Please refer to the [Pinecil Wiki](https://wiki.pine64.org/wiki/Pinecil_Firmware#Overview) for update instructions.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Number controls
|
||||
@ -34,7 +39,7 @@ The **IronOS** {% term integration %} seamlessly connects Home Assistant with PI
|
||||
- **Max tip temperature:** Indicates the maximum temperature that the currently inserted soldering iron tip supports.
|
||||
- **Power level:** Displays the duty cycle of the pulse-width modulation (PWM) in percent, indicating the current power output of the soldering iron (for example, "50%" for a 50% duty cycle).
|
||||
- **Power source:** Identifies the current power source used by the soldering iron, such as DC input, USB Quick Charge, USB Power Delivery, or USB Power Delivery VBUS.
|
||||
- **Raw tip voltage:** Measures the raw voltage at the soldering iron tip.
|
||||
- **Raw tip voltage:** Measures the raw voltage at the soldering iron's thermocouple, which is then offset compensated and converted to the tip temperature.
|
||||
- **Tip resistance:** Indicates the resistance of the currently inserted soldering iron tip (for example, "6.2 Ω" for short tips, "8 Ω" for normal tips)
|
||||
- **Uptime:** Tracks the total operating time of the soldering iron since its last power-on.
|
||||
- **Hall effect strength:** (Optional) This feature requires the device to be [modified with a hall effect sensor](https://wiki.pine64.org/wiki/Pinecil_Hall_Effect_Sensor). If a neodymium magnet is attached to the stand, it enables proximity detection and can be utilized to calibrate when the iron enters sleep mode based on its proximity to the stand.
|
||||
|
@ -209,12 +209,12 @@ In addition to the [standard automation trigger data](/docs/automation/templatin
|
||||
- `trigger.dpt_sub` Destination group address sub datapoint type number
|
||||
- `trigger.dpt_name` DPT value type name - see Sensor value types
|
||||
- `trigger.payload` Raw telegram payload. DPT 1, 2, and 3 yield integers 0..255; other DPT yield lists of integers 0..255
|
||||
- `telegram.source` Source individual address
|
||||
- `telegram.source_name` Source name
|
||||
- `telegram.telegramtype` APCI type of telegram
|
||||
- `telegram.timestamp` Timestamp
|
||||
- `telegram.unit` Unit according to group address DPT
|
||||
- `telegram.value` Decoded telegram payload according to DPT
|
||||
- `trigger.source` Source individual address
|
||||
- `trigger.source_name` Source name
|
||||
- `trigger.telegramtype` APCI type of telegram
|
||||
- `trigger.timestamp` Timestamp
|
||||
- `trigger.unit` Unit according to group address DPT
|
||||
- `trigger.value` Decoded telegram payload according to DPT
|
||||
|
||||
| Template variable | Type | Project data required |
|
||||
|----------------------------|-----------------------------|-----------------------|
|
||||
@ -225,12 +225,12 @@ In addition to the [standard automation trigger data](/docs/automation/templatin
|
||||
| `trigger.dpt_sub` | integer | yes |
|
||||
| `trigger.dpt_name` | string | yes |
|
||||
| `trigger.payload` | integer or list of integers | no |
|
||||
| `telegram.source` | string | no |
|
||||
| `telegram.source_name` | string | yes |
|
||||
| `telegram.telegramtype` | string | no |
|
||||
| `telegram.timestamp` | timestamp | no |
|
||||
| `telegram.unit` | string | yes |
|
||||
| `telegram.value` | any | yes |
|
||||
| `trigger.source` | string | no |
|
||||
| `trigger.source_name` | string | yes |
|
||||
| `trigger.telegramtype` | string | no |
|
||||
| `trigger.timestamp` | timestamp | no |
|
||||
| `trigger.unit` | string | yes |
|
||||
| `trigger.value` | any | yes |
|
||||
|
||||
For values that require project data: if the information was not found, or if no project file was provided, data will be set to `null`.
|
||||
|
||||
@ -238,6 +238,8 @@ For values that require project data: if the information was not found, or if no
|
||||
|
||||
Example automation configuration
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
- alias: Single group address trigger
|
||||
description: ''
|
||||
@ -246,11 +248,13 @@ Example automation configuration
|
||||
destination: 1/2/3
|
||||
group_value_read: false
|
||||
outgoing: false
|
||||
condition: []
|
||||
condition: "{{ trigger.value == 0 }}"
|
||||
action: []
|
||||
mode: single
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Example trigger data
|
||||
|
||||
```yaml
|
||||
|
@ -11,10 +11,22 @@ ha_codeowners:
|
||||
ha_integration_type: entity
|
||||
---
|
||||
|
||||
The lawn mower integration allows the control of robotic lawn mowers to be reflected within Home Assistant.
|
||||
The **Lawn mower** {% term integration %} allows the control of robotic lawn mowers to be reflected within Home Assistant.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of a lawn mower entity
|
||||
|
||||
A lawn mower entity can have the following states:
|
||||
|
||||
- **Mowing**: The lawn mower is currently mowing.
|
||||
- **Docked**: The lawn mower is done mowing and is currently docked.
|
||||
- **Paused**: The lawn mower was active and is now paused.
|
||||
- **Returning**: The lawn mower is returning to the dock.
|
||||
- **Error**: The lawn mower encountered an error while active and needs assistance.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
Available actions: `start_mowing`, `pause` and `dock`.
|
||||
@ -25,22 +37,22 @@ Before calling one of these actions, make sure your lawn_mower platform supports
|
||||
|
||||
Start or resume a mowing task.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lawn_mower. Use `entity_id: all` to target all. |
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | -------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lawn_mower. Use `entity_id: all` to target all. |
|
||||
|
||||
### Action `lawn_mower.pause`
|
||||
|
||||
Pause a mowing task.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lawn_mower. Use `entity_id: all` to target all. |
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | -------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lawn_mower. Use `entity_id: all` to target all. |
|
||||
|
||||
### Action `lawn_mower.dock`
|
||||
|
||||
Tell the lawn_mower to return to dock.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lawn_mower. Use `entity_id: all` to target all. |
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | -------------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lawn_mower. Use `entity_id: all` to target all. |
|
||||
|
@ -23,13 +23,23 @@ ha_platforms:
|
||||
- scene
|
||||
- sensor
|
||||
- switch
|
||||
ha_config_flow: true
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The `lcn` integration for Home Assistant allows you to connect to [LCN](https://www.lcn.eu/) hardware devices.
|
||||
The **LCN** {% term integration %} for Home Assistant allows you to connect to [LCN](https://www.lcn.eu/) hardware devices.
|
||||
|
||||
The integration requires one unused license of the coupling software LCN-PCHK (version >2.8) and an LCN hardware coupler. Alternatively, an LCN-PKE coupler can be used which offers two PCHK licenses.
|
||||
With this setup sending and receiving commands to and from LCN modules is possible.
|
||||
## Prerequisites
|
||||
|
||||
- The integration requires one unused license of the coupling software LCN-PCHK (version >2.8) and an LCN hardware coupler.
|
||||
- Alternatively, an LCN-VISU or LCN-PKE coupler can be used which offers at least two PCHK licenses.
|
||||
With this setup, sending and receiving commands to and from LCN modules is possible.
|
||||
|
||||
The `lcn` integration allows connections to more than one hardware coupler. For each coupler, a new integration entry needs to be created.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Supported device types
|
||||
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
|
||||
@ -47,375 +57,16 @@ Therefore the `lcn` integration offers a variety of [events](#events), [device t
|
||||
They are ideal to be used in automation scripts or for the `template` platforms.
|
||||
{% endnote %}
|
||||
|
||||
## Configuration
|
||||
|
||||
To use your LCN system in your installation, add the following lines to your {% term "`configuration.yaml`" %} file.
|
||||
You have to specify at least one IP/port with login credentials for a PCHK host.
|
||||
Consider to store your credentials in a [`secrets.yaml`](/docs/configuration/secrets).
|
||||
## Setting up devices and entites
|
||||
|
||||
```yaml
|
||||
lcn:
|
||||
connections:
|
||||
- name: myhome
|
||||
host: 192.168.2.41
|
||||
port: 4114
|
||||
username: lcn
|
||||
password: lcn
|
||||
The `lcn` hardware modules and groups are represented by Home Assistant *devices*. The periphery of each `lcn` module is represented by Home Assistant *entities*. Peripheries are, for example, the output ports, relays, and variables of a module. Refer to the description of each [platform](#platforms) to learn about which entity should be used for which periphery.
|
||||
|
||||
binary_sensors:
|
||||
- name: Kitchen window
|
||||
address: myhome.s0.m7
|
||||
source: binsensor1
|
||||
The configuration of the `lcn` devices and entities is completely done using a web user interface (configuration panel).
|
||||
|
||||
climates:
|
||||
- name: Temperature bedroom
|
||||
address: myhome.s0.m7
|
||||
source: var1
|
||||
setpoint: r1varsetpoint
|
||||
min_temp: 17.
|
||||
max_temp: 30.
|
||||
lockable: true
|
||||
unit_of_measurement: °C
|
||||
Once the integration is added to Home Assistant, you can access the `lcn` configuration panel by selecting the **Configure** button next to the respective integration entry on the [LCN integration page](https://my.home-assistant.io/redirect/integration/?domain=lcn).
|
||||
|
||||
covers:
|
||||
- name: Living room cover
|
||||
address: myhome.s0.m7
|
||||
motor: motor1
|
||||
|
||||
lights:
|
||||
- name: Bedroom light
|
||||
address: myhome.s0.m7
|
||||
output: output1
|
||||
dimmable: true
|
||||
transition: 5
|
||||
|
||||
scenes:
|
||||
- name: Romantic
|
||||
address: myhome.s0.m7
|
||||
register: 1
|
||||
scene: 4
|
||||
outputs: [output1, output2, relais1, relais3, relais4]
|
||||
transition: 5
|
||||
|
||||
sensors:
|
||||
- name: Temperature
|
||||
address: myhome.s0.m7
|
||||
source: var3
|
||||
unit_of_measurement: °C
|
||||
|
||||
switches:
|
||||
- name: Sprinkler switch
|
||||
address: myhome.s0.m7
|
||||
output: relay1
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
connections:
|
||||
description: List of your connections.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
host:
|
||||
description: IP address of the LCN-PCHK host.
|
||||
required: true
|
||||
type: string
|
||||
port:
|
||||
description: Port of the LCN-PCHK host.
|
||||
required: true
|
||||
type: integer
|
||||
username:
|
||||
description: Login username for the LCN-PCHK host.
|
||||
required: true
|
||||
type: string
|
||||
password:
|
||||
description: Login password for the LCN-PCHK host.
|
||||
required: true
|
||||
type: string
|
||||
name:
|
||||
description: Optional connection identifier. If omitted, the connections will be named consecutively as _pchk_, _pchk1_, _pchk2_, ...
|
||||
required: false
|
||||
default: pchk
|
||||
type: string
|
||||
sk_num_tries:
|
||||
description: Segment coupler scans. Increase this number if you have at least one segment coupler in your system.
|
||||
required: false
|
||||
default: 0
|
||||
type: integer
|
||||
dim_mode:
|
||||
description: "Dimming mode for connected modules. The operation mode is programmed into the LCN modules by the LCN-PRO software and depends on their firmware. If you experience unexpected dimming behavior, the connection is probably in the wrong operation mode. Possible values: _steps50_, _steps200_"
|
||||
required: false
|
||||
default: steps50
|
||||
type: string
|
||||
|
||||
binary_sensors:
|
||||
description: List of your binary sensors.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: "Name of the sensor."
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
source:
|
||||
description: "Sensor source ([BINSENSOR](#ports), [SETPOINT](#variables-and-units), [KEYS](#keys))."
|
||||
required: true
|
||||
type: string
|
||||
|
||||
climates:
|
||||
description: List of your climate devices.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: "Name of the climate controller."
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
source:
|
||||
description: "Current temperature source ([VARIABLE](#variables-and-units))."
|
||||
required: true
|
||||
type: string
|
||||
setpoint:
|
||||
description: "Setpoint for target temperature ([VARIABLE](#variables-and-units), [SETPOINT](#variables-and-units))."
|
||||
required: true
|
||||
type: string
|
||||
unit_of_measurement:
|
||||
description: "Measurement unit ([VAR_UNIT](#variables-and-units))."
|
||||
required: false
|
||||
type: string
|
||||
default: "celsius"
|
||||
min_temp:
|
||||
description: "Minimum target temperature."
|
||||
required: false
|
||||
type: float
|
||||
default: 7.
|
||||
max_temp:
|
||||
description: "Maximum target temperature."
|
||||
required: false
|
||||
type: float
|
||||
default: 35.
|
||||
lockable:
|
||||
description: "Climate control can be locked."
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
covers:
|
||||
description: List of your covers.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: Name of the cover.
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
motor:
|
||||
description: "Motor port ([MOTOR_PORT](#ports))."
|
||||
required: true
|
||||
type: string
|
||||
reverse_time:
|
||||
description: "Reverse time ([REVERSE_TIME](#variables-and-units), see also [Cover](#cover))."
|
||||
required: false
|
||||
type: string
|
||||
|
||||
lights:
|
||||
description: List of your lights.
|
||||
required: true
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: Name of the light.
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
output:
|
||||
description: "Light source ([OUTPUT_PORT](#ports), [RELAY_PORT](#ports))."
|
||||
required: true
|
||||
type: string
|
||||
dimmable:
|
||||
description: Enable the dimming feature for this light.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
transition:
|
||||
description: Transition (ramp) time in seconds.
|
||||
required: false
|
||||
type: integer
|
||||
default: 0
|
||||
|
||||
scenes:
|
||||
description: List of your scenes.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: "Name of the scene."
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
register:
|
||||
description: Number of scene register (0..9).
|
||||
required: true
|
||||
type: integer
|
||||
scene:
|
||||
description: Number of scene (0..9).
|
||||
required: true
|
||||
type: integer
|
||||
outputs:
|
||||
description: "List of ports ([OUTPUT_PORT](#ports), [RELAY_PORT](#ports))."
|
||||
required: false
|
||||
type: list
|
||||
transition:
|
||||
description: Transition (ramp) time in seconds.
|
||||
required: false
|
||||
type: integer
|
||||
default: None
|
||||
|
||||
sensors:
|
||||
description: List of your sensors.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: "Name of the sensor."
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
source:
|
||||
description: "Sensor source ([VARIABLE](#variables-and-units), [SETPOINT](#variables-and-units), [THRESHOLD](#variables-and-units), [S0_INPUT](#variables-and-units), [LED_PORT](#ports), [LOGICOP_PORT](#ports))."
|
||||
required: true
|
||||
type: string
|
||||
unit_of_measurement:
|
||||
description: "Measurement unit ([VAR_UNIT](#variables-and-units))."
|
||||
required: false
|
||||
type: string
|
||||
default: "native"
|
||||
|
||||
switches:
|
||||
description: List of your switches.
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
name:
|
||||
description: "Name of the switch."
|
||||
required: true
|
||||
type: string
|
||||
address:
|
||||
description: "[Address](#lcn-addresses) of the module/group."
|
||||
required: true
|
||||
type: string
|
||||
output:
|
||||
description: "Switch source ([OUTPUT_PORT](#ports), [RELAY_PORT](#ports))."
|
||||
required: true
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
## LCN addresses
|
||||
|
||||
LCN hardware devices connected to the LCN bus are called _modules_. LCN modules are addressed by their numeric id in the range (5..254).
|
||||
|
||||
Modules can be arranged in _segments_. Segments can be addressed by their numeric id (5..128) or 0 (= no segment exist) or 3 (= target all segments).
|
||||
|
||||
LCN Modules within the _same_ segment can be grouped by their group id (5..254) or 3 (= target all groups.)
|
||||
|
||||
The LCN integration allows the connection to more than one hardware coupler. In this case, it has to be specified which hardware coupler should be used for addressing the specified module.
|
||||
|
||||
Whenever the address of a module or a group has to be specified, it can be addressed using one of the following syntaxes:
|
||||
|
||||
Example for modules:
|
||||
|
||||
```txt
|
||||
connid.s000.m007
|
||||
connid.s0.m7
|
||||
s0.m7
|
||||
0.7
|
||||
```
|
||||
|
||||
Example for groups:
|
||||
|
||||
```txt
|
||||
connid.s000.g007
|
||||
connid.s0.g7
|
||||
s0.g7
|
||||
0.g7
|
||||
```
|
||||
|
||||
Leading zeroes in the segment id or module/group id can be omitted. If the `connection_id` is omitted, the first connection defined in the [configuration](#configuration) will be used.
|
||||
|
||||
## LCN constants
|
||||
|
||||
The platforms and actions use several predefined constants as parameters.
|
||||
|
||||
### Ports
|
||||
|
||||
| Constant | Values |
|
||||
| -------------- | -------------------------------------------------------------------------------------------------------------- |
|
||||
| OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` |
|
||||
| RELAY_PORT | `relay1`, `relay2`, `relay3`, `relay4`, `relay5`, `relay6`, `relay7`, `relay8` |
|
||||
| MOTOR_PORT | `motor1`, `motor2`, `motor3`, `motor4`, `outputs` |
|
||||
| LED_PORT | `led1`, `led2`, `led3`, `led4`, `led5`, `led6`, `led7`, `led8`, `led9`, `led10`, `led11`, `led12` |
|
||||
| LOGICOP_PORT | `logicop1`, `logicop2`, `logicop3`, `logicop4` |
|
||||
| BINSENSOR_PORT | `binsensor1`, `binsensor2`, `binsensor3`, `binsensor4`, `binsensor5`, `binsensor6`, `binsensor7`, `binsensor8` |
|
||||
|
||||
The [MOTOR_PORT](#ports) values specify which hardware relay or outputs configuration will be used:
|
||||
|
||||
| Motor | Relay on/off | Relay up/down |
|
||||
| :------: | :----------: | :-----------: |
|
||||
| `motor1` | `relay1` | `relay2` |
|
||||
| `motor2` | `relay3` | `relay4` |
|
||||
| `motor3` | `relay5` | `relay6` |
|
||||
| `motor4` | `relay7` | `relay8` |
|
||||
|
||||
| Motor | Output up | Output down |
|
||||
| :-------: | :-------: | :---------: |
|
||||
| `outputs` | `output1` | `output2` |
|
||||
|
||||
|
||||
### Variables and Units
|
||||
|
||||
| Constant | Values |
|
||||
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| VARIABLE | `var1`, `var2`, `var3`, `var4`, `var5`, `var6`, `var7`, `var8`, `var9`, `var10`, `var11`, `var12`, `tvar`, `r1var`, `r2var` |
|
||||
| SETPOINT | `r1varsetpoint`, `r2varsetpoint` |
|
||||
| THRESHOLD | `thrs1`, `thrs2`, `thrs3`, `thrs4`, `thrs5`, `thrs2_1`, `thrs2_2`, `thrs2_3`, `thrs2_4`, `thrs3_1`, `thrs3_2`, `thrs3_3`, `thrs3_4`, `thrs4_1`, `thrs4_2`, `thrs4_3`, `thrs4_4` |
|
||||
| S0_INPUT | `s0input1`, `s0input2`, `s0input3`, `s0input4` |
|
||||
| VAR_UNIT | `native`, `°C`, `°K`, `°F`, `lux_t`, `lux_i`, `m/s`, `%`, `ppm`, `volt`, `ampere`, `degree` |
|
||||
| TIME_UNIT | `seconds`, `minutes`, `hours`, `days` |
|
||||
| RELVARREF | `current`, `prog` |
|
||||
| REVERSE_TIME | `rt70`, `rt600`, `rt1200` |
|
||||
|
||||
### States:
|
||||
|
||||
| Constant | Values |
|
||||
| ------------- | ---------------------------------- |
|
||||
| LED_STATE | `on`, `off`, `blink`, `flicker` |
|
||||
| LOGICOP_STATE | `none`, `some`, `all` |
|
||||
| KEY_STATE | `hit`, `make`, `break`, `dontsend` |
|
||||
|
||||
### Keys:
|
||||
|
||||
Whenever a key has to be provided, it is defined by a joint string consisting of the table identifier (`a`, `b`, `c`, `d`) and the corresponding key number.
|
||||
Examples: `a1`, `a5`, `d8`.
|
||||
The detailed documentation for the LCN frontend panel can be found [here](https://github.com/alengwenus/lcn-frontend/blob/main/docs/lcn-frontend.md).
|
||||
|
||||
## Platforms
|
||||
|
||||
@ -443,10 +94,11 @@ If you intend to leave the regulation to Home Assistant, you should consider usi
|
||||
### Cover
|
||||
|
||||
The `lcn` cover platform allows the control of [LCN](https://www.lcn.eu/) relays and output ports which have been configured as motor controllers.
|
||||
Refer to the [motors table](#motors) to learn about which motor uses which module periphery.
|
||||
|
||||
Only for the module with firmware earlier than 190C:<br>
|
||||
The configuration allows the optional definition of reverse time. This is the time which is waited during the switching of the motor currents.
|
||||
The reverse time should only be defined when using the [MOTOR_PORT](#ports) value `OUTPUTS`. For all other configuration, the reverse time has to be defined in the LCN Pro software.
|
||||
The reverse time should only be defined when using the module's output ports for driving the cover. For all other configuration, the reverse time has to be defined in the LCN Pro software.
|
||||
For the reverse time, you may choose one of the following constants: `RT70` (70ms), `RT600` (600ms), `RT1200` (1,2s).
|
||||
|
||||
{% important %}
|
||||
@ -1027,3 +679,50 @@ data:
|
||||
address: myhome.0.7
|
||||
pck: PIN4
|
||||
```
|
||||
|
||||
## LCN constants
|
||||
|
||||
The [actions](#actions) use several predefined constants as parameters.
|
||||
|
||||
### Ports
|
||||
|
||||
| Constant | Values |
|
||||
| -------------- | -------------------------------------------------------------------------------------------------------------- |
|
||||
| OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` |
|
||||
|
||||
### Motors
|
||||
|
||||
The motor values specify which hardware relay or outputs configuration will be used:
|
||||
|
||||
| Motor | Relay on/off | Relay up/down |
|
||||
| :------: | :----------: | :-----------: |
|
||||
| `motor1` | `relay1` | `relay2` |
|
||||
| `motor2` | `relay3` | `relay4` |
|
||||
| `motor3` | `relay5` | `relay6` |
|
||||
| `motor4` | `relay7` | `relay8` |
|
||||
|
||||
| Motor | Output up | Output down |
|
||||
| :-------: | :-------: | :---------: |
|
||||
| `outputs` | `output1` | `output2` |
|
||||
|
||||
### Variables and units
|
||||
|
||||
| Constant | Values |
|
||||
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| VARIABLE | `var1`, `var2`, `var3`, `var4`, `var5`, `var6`, `var7`, `var8`, `var9`, `var10`, `var11`, `var12`, `tvar`, `r1var`, `r2var` |
|
||||
| SETPOINT | `r1varsetpoint`, `r2varsetpoint` |
|
||||
| THRESHOLD | `thrs1`, `thrs2`, `thrs3`, `thrs4`, `thrs5`, `thrs2_1`, `thrs2_2`, `thrs2_3`, `thrs2_4`, `thrs3_1`, `thrs3_2`, `thrs3_3`, `thrs3_4`, `thrs4_1`, `thrs4_2`, `thrs4_3`, `thrs4_4` |
|
||||
| VAR_UNIT | `native`, `°C`, `°K`, `°F`, `lux_t`, `lux_i`, `m/s`, `%`, `ppm`, `volt`, `ampere`, `degree` |
|
||||
| TIME_UNIT | `seconds`, `minutes`, `hours`, `days` |
|
||||
|
||||
### States
|
||||
|
||||
| Constant | Values |
|
||||
| ------------- | ---------------------------------- |
|
||||
| LED_STATE | `on`, `off`, `blink`, `flicker` |
|
||||
| KEY_STATE | `hit`, `make`, `break`, `dontsend` |
|
||||
|
||||
### Keys
|
||||
|
||||
Whenever a key has to be provided, it is defined by a joint string consisting of the table identifier (`a`, `b`, `c`, `d`) and the corresponding key number.
|
||||
Examples: `a1`, `a5`, `d8`.
|
||||
|
@ -15,7 +15,16 @@ This integration allows you to track and control various light bulbs. Read the i
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
### Default turn-on values
|
||||
## State and attributes of a light entity
|
||||
|
||||
Light {% term entities %} can have the following {% term states %}: `on` or `off`. The list of available attributes depends on the {% term device %}. Refer to the integration documentation of your light.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/light/state_light.png' alt='Screenshot showing three lights with differents states: `on`, `off`, or `unavailable`'>
|
||||
Three lights with differents states: `on`, `off`, or `unavailable`.
|
||||
</p>
|
||||
|
||||
## Default turn-on values
|
||||
|
||||
To set the default color, brightness and transition values when the light is turned on, create a custom `light_profiles.csv`, normally located in the default configuration folder where you find {% term "`configuration.yaml`" %}.
|
||||
|
||||
@ -33,7 +42,7 @@ The `.default` suffix should be added to the entity identifier of each light to
|
||||
If a light entity is in the `on` state, the default profile brightness will only be applied if it is called in the action data attribute `profile`, like any other named profile. The transition attribute will be applied for all `light.turn_on`, `light.toggle`, and `light.turn_off` actions, unless specified otherwise in the action data.
|
||||
{% endnote %}
|
||||
|
||||
### Action `light.turn_on`
|
||||
## Action `light.turn_on`
|
||||
|
||||
Turns one light on or multiple lights on using [groups](/integrations/group/).
|
||||
|
||||
@ -101,7 +110,7 @@ automation:
|
||||
If no data is sent, and a default profile exists, the default profile will be applied.
|
||||
{% endnote %}
|
||||
|
||||
### Action `light.turn_off`
|
||||
## Action `light.turn_off`
|
||||
|
||||
Turns one or multiple lights off.
|
||||
|
||||
@ -111,7 +120,7 @@ Turns one or multiple lights off.
|
||||
| `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. |
|
||||
| `flash` | yes | Tell light to flash, can be either value `short` or `long`. |
|
||||
|
||||
### Action `light.toggle`
|
||||
## Action `light.toggle`
|
||||
|
||||
Toggles the state of one or multiple lights. Takes the same arguments as the [`light.turn_on`](#action-lightturn_on) action.
|
||||
|
||||
|
@ -23,7 +23,7 @@ ability to run scripts or invoke actions for each of the on, off, and
|
||||
brightness commands of a light.
|
||||
|
||||
To enable Template Lights in your installation, add the following to your
|
||||
`configuration.yaml` file:
|
||||
{% term "`configuration.yaml`" %} file:
|
||||
|
||||
{% raw %}
|
||||
|
||||
|
@ -19,6 +19,17 @@ ha_integration_type: integration
|
||||
|
||||
The Linear integration lets you control Linear garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Linear mobile app.
|
||||
|
||||
{% warning %}
|
||||
Nice North America has begun informing users of the new Nice G.O. app, and dropping support for the Linear app in the coming weeks. Support for the new app will be added as a new integration.
|
||||
Migrating now will cut off access to the old app and the integration will cease functioning for you.
|
||||
|
||||
For more information, refer to the [Nice G.O. migration documentation](https://na.niceforyou.com/features/nice-go-app/#migration).
|
||||
{% endwarning %}
|
||||
|
||||
## Prerequisites
|
||||
|
||||
This integration is for garage doors connected to the cloud by Wi-Fi using the Linear mobile app.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Cover
|
||||
|
@ -13,27 +13,8 @@ ha_config_flow: true
|
||||
ha_platforms:
|
||||
- media_player
|
||||
ha_iot_class: Local Polling
|
||||
ha_dhcp: true
|
||||
---
|
||||
|
||||
The LinkPlay {% term integrations %} for Home Assistant allows you to control various media players based on the LinkPlay protocol. The integration supports auto-discovery on your local network through [Zeroconf](/integrations/zeroconf).
|
||||
|
||||
{% include integrations/supported_brand.md %}
|
||||
|
||||
## Actions
|
||||
|
||||
The LinkPlay integration makes various custom actions available in addition to the [standard media player actions](/integrations/media_player/#actions).
|
||||
|
||||
### Action `linkplay.play_preset`
|
||||
|
||||
Play a preset on a LinkPlay media player.
|
||||
|
||||
{% note %}
|
||||
Companion apps, such as 4stream, allow to save music presets (for example, Spotify playlists). This action can be used to start playing these presets.
|
||||
{% endnote %}
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `entity_id` | no | The speakers to target. To target all LinkPlay devices, use `all`.
|
||||
| `preset_number` | no | The number of the preset to play.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
@ -18,19 +18,32 @@ Keeps track which locks are in your environment, their state and allows you to c
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
### Actions
|
||||
## The state of a lock entity
|
||||
|
||||
A lock entity can have the following states:
|
||||
|
||||
- **Jammed**: The lock is currently jammed.
|
||||
- **Open**: Indication of whether the lock is currently open.
|
||||
- **Opening**: Indication of whether the lock is currently opening.
|
||||
- **Locked**: The lock is currently locked.
|
||||
- **Locking**: The lock is in the process of being locked.
|
||||
- **Unlocking**: The lock is in the process of being unlocked.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
A lock integration provides the following actions:
|
||||
|
||||
#### Action `lock.lock`
|
||||
### Action `lock.lock`
|
||||
|
||||
Lock your door, the attribute should appear under a 'data' attribute for the action.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------- |
|
||||
| `entity_id` | no | Entity of the relevant lock. |
|
||||
| -------------- | -------- | ---------------------------- |
|
||||
| `entity_id` | no | Entity of the relevant lock. |
|
||||
|
||||
##### Example
|
||||
#### Example
|
||||
|
||||
```yaml
|
||||
action:
|
||||
@ -39,15 +52,15 @@ action:
|
||||
entity_id: lock.my_place
|
||||
```
|
||||
|
||||
#### Action `lock.unlock`
|
||||
### Action `lock.unlock`
|
||||
|
||||
Unlock your door, the attribute should appear under a 'data' attribute for the action.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------- |
|
||||
| `entity_id` | no | Entity of the relevant lock. |
|
||||
| -------------- | -------- | ---------------------------- |
|
||||
| `entity_id` | no | Entity of the relevant lock. |
|
||||
|
||||
##### Example
|
||||
#### Example
|
||||
|
||||
```yaml
|
||||
action:
|
||||
@ -56,7 +69,7 @@ action:
|
||||
entity_id: lock.my_place
|
||||
```
|
||||
|
||||
### Use the actions
|
||||
## Use the actions
|
||||
|
||||
Go to the **Developer Tools**, then to **Actions** in the frontend, and choose `lock.lock`, `lock.unlock` or `lock.open` from the list of available actions. Enter something like the sample below into the **data** field and select **Perform action**.
|
||||
|
||||
@ -65,5 +78,5 @@ Go to the **Developer Tools**, then to **Actions** in the frontend, and choose `
|
||||
```
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | -------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lock. Use `entity_id: all` to target all. |
|
||||
| -------------- | -------- | -------------------------------------------------------------- |
|
||||
| `entity_id` | yes | Only act on specific lock. Use `entity_id: all` to target all. |
|
||||
|
@ -9,11 +9,14 @@ ha_quality_scale: internal
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_integration_type: system
|
||||
related:
|
||||
- docs: /docs/configuration/
|
||||
title: Configuration file
|
||||
---
|
||||
|
||||
<img src='/images/screenshots/logbook.png' style='margin-left:10px; float: right;' height="100" />
|
||||
|
||||
The logbook integration provides a different perspective on the history of your
|
||||
The logbook {% term integration %} provides a different perspective on the history of your
|
||||
house by showing all the changes that happened to your house in reverse
|
||||
chronological order. It depends on
|
||||
the [`recorder`](/integrations/recorder/) integration for storing the data. This means that if the
|
||||
@ -21,7 +24,7 @@ the [`recorder`](/integrations/recorder/) integration for storing the data. This
|
||||
PostgreSQL as data store, the `logbook` integration does not use the default
|
||||
SQLite database to store data.
|
||||
|
||||
This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
|
||||
This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your {% term "`configuration.yaml`" %} file. If that is the case, the following example shows you how to enable this integration manually, by adding it to your {% term "`configuration.yaml`" %} file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
|
@ -322,9 +322,16 @@ This section provides a bit more information on some of the categories:
|
||||
|
||||
**IP addresses**: Typically more than one IPv6 address is shown: link local, unique local, and global unicast. In some cases a device also supports IPv4. In that case there will also be listed an IPv4 address here.
|
||||
|
||||
## Matter device updates
|
||||
## Matter OTA device updates
|
||||
|
||||
The Matter standard supports OTA (Over-the-Air) updates optionally. Matter devices that support Matter updates will have an [update entity](/integrations/update). Furthermore, the CSA DCL (Distributed Compliance Ledger) stores firmware update information. Home Assistant reads firmware update information directly from the DCL to learn about available updates. By default, the integration checks every 12 hours for an update. If you want to force an update check, use the `homeassistant.update_entity` [action](/integrations/homeassistant/) with the update entity as the target.
|
||||
The Matter protocol supports OTA (Over-the-Air) software updates. But the OTA software update is an optional feature for Matter devices, so not all Matter devices implement it. Home Assistant creates an update entity for every Matter device which does support Matter updates.
|
||||
|
||||
The CSA operates a Distributed Compliance Ledger (DCL) which provides metadata for firmware updates. By default, the Matter update entities check the DCL every 12 hours for updates. If you want to force an update check, use the `homeassistant.update_entity` [action](/integrations/homeassistant/), with the update entity as the target. Currently, Eve and Nanoleaf are using the DCL to provide updates. It is expected that in future, more and more firmware updates become available through the DCL.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/matter/matter_ota_message.png' alt='Matter device OTA update message'>
|
||||
Notification of an OTA update for a Matter device
|
||||
</p>
|
||||
|
||||
## Experiment with Matter using a ESP32 dev board
|
||||
|
||||
|
@ -20,6 +20,20 @@ Interacts with media players on your network.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of a media player
|
||||
|
||||
A media player can have the following states:
|
||||
|
||||
- **Off**: The media player is turned off and is not accepting commands until turned on.
|
||||
- **On**: The media player is turned on, but no details on its state are currently known.
|
||||
- **Idle**: The media player is turned on and accepting commands, but currently not playing any media. Possibly at some idle home screen.
|
||||
- **Playing**: The media player is currently playing media.
|
||||
- **Paused**: The media player has an active media and is currently paused
|
||||
- **Standby**: The media player is in a low power state, accepting commands.
|
||||
- **Buffering**: The media player is preparing to start playback of media.
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Actions
|
||||
|
||||
### Media control actions
|
||||
@ -183,7 +197,7 @@ Allows to group media players together for synchronous playback. Only works on s
|
||||
| ---------------------- | -------- | ---------------------------------------------------- |
|
||||
| `entity_id` | yes | Unjoin this media player from any player groups. |
|
||||
|
||||
### Device class
|
||||
## Device class
|
||||
|
||||
{% include integrations/device_class_intro.md %}
|
||||
|
||||
|
@ -31,6 +31,7 @@ Additionally the following brands have been reported to also work with this inte
|
||||
- [Dooya](http://www.dooya.com/)
|
||||
- [Gaviota](https://www.gaviotagroup.com/en/)
|
||||
- [Havana Shade](https://havanashade.com/)
|
||||
- [Heicko](https://heicko.de/en/tubular-motors/controls/e-smart-home/usb-smart-home-stick-bi-direktional-1-st.html)
|
||||
- [Hurrican Shutters Wholesale](https://www.hurricaneshutterswholesale.com/)
|
||||
- [Inspired Shades](https://www.inspired-shades.com/)
|
||||
- [iSmartWindow](https://www.ismartwindow.co.nz/)
|
||||
@ -62,6 +63,7 @@ The following bridges are reported to work with this integration:
|
||||
- Linx Hub USB
|
||||
- SIRO Connect SI7002
|
||||
- SIRO Connect SI7005
|
||||
- Heicko Smart Stick 1ST
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
@ -94,7 +96,12 @@ In the official Bloc Blinds app go to settings (three bars > gear icon), go to t
|
||||
|
||||
### Connector app
|
||||
|
||||
Click the about page of the connector app 5 times to get the key ([iOS app](https://apps.apple.com/us/app/connector/id1344058317), [Android app](https://play.google.com/store/apps/details?id=com.smarthome.app.connector)).
|
||||
To get the API key ([iOS app](https://apps.apple.com/us/app/connector/id1344058317), [Android app](https://play.google.com/store/apps/details?id=com.smarthome.app.connector)), follow these steps:
|
||||
|
||||
1. In the left sidebar of the app, open the **Settings** {% icon "mdi:gear-outline" %} (gear icon).
|
||||
2. Select the **About** page of the Connector app.
|
||||
3. Tap the screen 5 times while being on the **About** page.
|
||||
- This opens a window with the API key.
|
||||
|
||||
## Favorite position
|
||||
|
||||
|
@ -55,7 +55,7 @@ The following entities are available for a Motionblinds Bluetooth device:
|
||||
|
||||
## Actions
|
||||
|
||||
Since Motionblinds Bluetooth motors require a Bluetooth connection to control them, Home Assistant does not get automatic updates of the motor's state by default. Therefore, you can use the [homeassistant.update_entity](https://www.home-assistant.io/docs/scripts/service-calls/#homeassistant-actions) action on any entity belonging to a Motionblinds Bluetooth device, which will connect to your Motionblinds Bluetooth motor and update the state of all entities belong to that device. However, be aware that doing so may impact battery life.
|
||||
Since Motionblinds Bluetooth motors require a Bluetooth connection to control them, Home Assistant does not get automatic updates of the motor's state by default. Therefore, you can use the [homeassistant.update_entity](https://www.home-assistant.io/docs/scripts/perform-actions/#homeassistant-actions) action on any entity belonging to a Motionblinds Bluetooth device, which will connect to your Motionblinds Bluetooth motor and update the state of all entities belong to that device. However, be aware that doing so may impact battery life.
|
||||
|
||||
This can also be automated using a YAML automation. For instance, the following automation connects to your Motionblind every 24 hours to update its state in Home Assistant:
|
||||
|
||||
|
@ -1039,31 +1039,6 @@ Documentation on the MQTT components that support YAML [can be found here](/inte
|
||||
|
||||
The MQTT integration supports templating. Read more [about using templates with the MQTT integration](/docs/configuration/templating/#using-templates-with-the-mqtt-integration).
|
||||
|
||||
## MQTT Notifications
|
||||
|
||||
The MQTT notification support is different than for the other [notification](/integrations/notify/) integrations. It is an action. This means you need to provide more details when calling the action.
|
||||
|
||||
**Perform action** section from **Developer Tools** -> **Actions** allows you to send MQTT messages. Choose *mqtt.publish* from the list of available actions, and enter something like the sample below into the **data** field and select **Perform action**.
|
||||
|
||||
```json
|
||||
{
|
||||
"~":"homeassistant/switch/irrigation",
|
||||
"name":"garden",
|
||||
"cmd_t":"~/set",
|
||||
"stat_t":"~/state"
|
||||
}
|
||||
```
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/screenshots/mqtt-notify.png' alt='Screenshot showing how to publish a message to an MQTT topic'/>
|
||||
</p>
|
||||
|
||||
The same will work for automations.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/screenshots/mqtt-notify-action.png' alt='Screenshot showing how to publish a message to an MQTT topic for automations' />
|
||||
</p>
|
||||
|
||||
### Examples
|
||||
|
||||
#### REST API
|
||||
@ -1123,6 +1098,7 @@ The MQTT integration will register the `mqtt.publish` action, which allows publi
|
||||
| `qos` | yes | Quality of Service to use. (default: 0) |
|
||||
| `retain` | yes | If message should have the retain flag set. (default: false) |
|
||||
|
||||
|
||||
{% note %}
|
||||
When `payload` is rendered from [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) in a YAML script or automation, and the template renders to a `bytes` literal, the outgoing MQTT payload will only be sent as `raw` data, if the `evaluate_payload` option flag is set to `true`.
|
||||
{% endnote %}
|
||||
@ -1141,7 +1117,7 @@ payload: on
|
||||
|
||||
```yaml
|
||||
topic: homeassistant/light/1/state
|
||||
payload_template: "{{ states('device_tracker.paulus') }}"
|
||||
payload: "{{ states('device_tracker.paulus') }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
@ -1149,27 +1125,24 @@ payload_template: "{{ states('device_tracker.paulus') }}"
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
topic_template: "homeassistant/light/{{ states('sensor.light_active') }}/state"
|
||||
payload_template: "{{ states('device_tracker.paulus') }}"
|
||||
topic: "homeassistant/light/{{ states('sensor.light_active') }}/state"
|
||||
payload: "{{ states('device_tracker.paulus') }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
`payload` must be a string.
|
||||
Be aware that `payload` must be a string.
|
||||
If you want to send JSON using the YAML editor then you need to format/escape
|
||||
it properly. Like:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
topic: homeassistant/light/1/state
|
||||
payload: "{\"Status\":\"off\", \"Data\":\"something\"}"`
|
||||
```
|
||||
|
||||
When using Home Assistant's YAML editor for formatting JSON
|
||||
you should take special care if `payload` contains template content.
|
||||
Home Assistant will force you in to the YAML editor and will treat your
|
||||
definition as a template. Make sure you escape the template blocks as like
|
||||
in the example below. Home Assistant will convert the result to a string
|
||||
and will pass it to the MQTT publish action.
|
||||
{% endraw %}
|
||||
|
||||
The example below shows how to publish a temperature sensor 'Bathroom Temperature'.
|
||||
The `device_class` is set, so it is not needed to set the "name" option. The entity
|
||||
|
@ -396,7 +396,7 @@ The Media Source APIs can be used in [Companion App Attachments](https://compani
|
||||
|
||||
You can use the Nest Device Trigger payload fields `attachment.image` or `attachment.video`in an [automation](/getting-started/automation/) to send a notification from an [actions](/getting-started/automation-action/) as shown in the examples below.
|
||||
|
||||
{% details "Example Action: Clip Preview (mp4) attachment for iOS" %}
|
||||
{% details "Example Action: Clip Preview (mp4) attachment for Android or iOS" %}
|
||||
|
||||
Example for cameras that support Clip Previews used with iOS which can render video in notifications.
|
||||
|
||||
@ -408,8 +408,8 @@ data:
|
||||
message: Doorbell Pressed
|
||||
title: Someone pressed the doorbell
|
||||
data:
|
||||
image: {{ trigger.event.data.attachment.image }}
|
||||
video: {{ trigger.event.data.attachment.video }}
|
||||
image: "{{ trigger.event.data.attachment.image }}"
|
||||
video: "{{ trigger.event.data.attachment.video }}"
|
||||
mode: single
|
||||
```
|
||||
|
||||
@ -429,7 +429,7 @@ data:
|
||||
message: Doorbell Pressed
|
||||
title: Someone pressed the doorbell
|
||||
data:
|
||||
image: {{ trigger.event.data.attachment.image }}
|
||||
image: "{{ trigger.event.data.attachment.image }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
@ -448,7 +448,7 @@ data:
|
||||
message: Doorbell Pressed
|
||||
title: Someone pressed the doorbell
|
||||
data:
|
||||
image: {{ trigger.event.data.attachment.image }}
|
||||
image: "{{ trigger.event.data.attachment.image }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -17,16 +17,30 @@ If you want to send notifications to the Home Assistant web interface, you may u
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
## The state of a notify entity
|
||||
|
||||
The state of a notify entity is the date and time when a message was last sent.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/notify/state_notify.png' alt='Screenshot showing the state of a notify entity in the developer tools' />
|
||||
Screenshot showing the state of a notify entity in the developer tools.
|
||||
</p>
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Action
|
||||
|
||||
The legacy `notify` platform will expose a generic `notify` action that can be called to send notifications.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `message` | no | Body of the notification.
|
||||
| `title` | yes | Title of the notification.
|
||||
| `target` | yes | Some platforms allow specifying a recipient that will receive the notification. See your platform page if it is supported.
|
||||
| `data` | yes | On platforms who have extended functionality. See your platform page if it is supported.
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | -------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `message` | no | Body of the notification. |
|
||||
| `title` | yes | Title of the notification. |
|
||||
| `target` | yes | Some platforms allow specifying a recipient that will receive the notification. See your platform page if it is supported. |
|
||||
| `data` | yes | On platforms who have extended functionality. See your platform page if it is supported. |
|
||||
|
||||
## Usage
|
||||
|
||||
@ -38,10 +52,10 @@ One notification integration is automatically included, the Persistent Notificat
|
||||
|
||||
Integrations can also implement the notify entity platform. Entity platform implementations will replace the legacy notify action in time. There is an entity platform action `send_message` which allows you to send notification messages to multiple notify entities.
|
||||
|
||||
| Data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
| `message` | no | Body of the notification.
|
||||
| `title` | yes | Title of the notification.
|
||||
| Data attribute | Optional | Description |
|
||||
| -------------- | -------- | -------------------------- |
|
||||
| `message` | no | Body of the notification. |
|
||||
| `title` | yes | Title of the notification. |
|
||||
|
||||
## Companion app notifications
|
||||
|
||||
|
@ -23,6 +23,15 @@ Keeps track on `number` entities in your environment, their state, and allows yo
|
||||
|
||||
If you are looking for a way to create a number entity, please take a look at the [Number helper](/integrations/input_number).
|
||||
|
||||
## The state of a number entity
|
||||
|
||||
The state of a number entity is a number.
|
||||
|
||||
In addition, the entity can have the following states:
|
||||
|
||||
- **Unavailable**: The entity is currently unavailable.
|
||||
- **Unknown**: The state is not yet known.
|
||||
|
||||
## Device class
|
||||
|
||||
{% include integrations/device_class_intro.md %}
|
||||
@ -81,6 +90,6 @@ The following device classes are supported for numbers:
|
||||
|
||||
The Number entities registers the following actions:
|
||||
|
||||
| Action | Data | Description |
|
||||
| ------- | ---- | ----------- |
|
||||
| `set_value` | `value`<br>`entity_id(s)`<br>`area_id(s)` | Set the value of specific `number` entities
|
||||
| Action | Data | Description |
|
||||
| ----------- | ----------------------------------------- | ------------------------------------------- |
|
||||
| `set_value` | `value`<br>`entity_id(s)`<br>`area_id(s)` | Set the value of specific `number` entities |
|
||||
|
@ -26,11 +26,11 @@ According to the [API documentation](https://www.weather.gov/documentation/servi
|
||||
|
||||
Providing a METAR station code is optional, and if not supplied, the closest station to the latitude and longitude will be chosen. A list of nearby stations is printed to the log with level `DEBUG` if no station is supplied. Stations can also be found on the [NOAA website](https://www.cnrfc.noaa.gov/metar.php). Codes with only three characters, for example, `ADW` should be prefixed with the letter K, `KADW`.
|
||||
|
||||
One weather entity is created for each entry in the configuration. Hourly and day/night forecasts are provided through the [`weather.get_forecasts` action](/integrations/weather/action--weatherget_forecasts). The time supplied for each forecast is the start time for the forecast. Sensors are also created as disabled entities after configuration and can be enabled by the user.
|
||||
One weather entity is created for each entry in the configuration. Hourly and day/night forecasts are provided through the [`weather.get_forecasts` action](/integrations/weather#action-weatherget_forecasts). The time supplied for each forecast is the start time for the forecast. Sensors are also created as disabled entities after configuration and can be enabled by the user.
|
||||
|
||||
## Action `nws.get_forecasts_extra`
|
||||
|
||||
`nws.get_forecasts_extra` provides extra data in a form similar to `weather.get_forecasts`. See [`weather.get_forecasts` documentation](/integrations/weather/action--weatherget_forecasts).
|
||||
`nws.get_forecasts_extra` provides extra data in a form similar to `weather.get_forecasts`. See [`weather.get_forecasts` documentation](/integrations/weather#action-weatherget_forecasts).
|
||||
|
||||
| Data attribute | Optional | Description | Example |
|
||||
| ---------------------- | -------- | ----------- | --------|
|
||||
|
@ -13,6 +13,8 @@ ha_integration_type: service
|
||||
related:
|
||||
- docs: /docs/configuration/templating/
|
||||
title: Home Assistant Templating
|
||||
- docs: /voice_control/voice_remote_expose_devices/
|
||||
title: Exposing entities to Assist
|
||||
- docs: /docs/automation/trigger/#sentence-trigger
|
||||
title: Sentence trigger
|
||||
ha_platforms:
|
||||
@ -21,7 +23,9 @@ ha_platforms:
|
||||
|
||||
The **Ollama** {% term integration %} adds a conversation agent in Home Assistant powered by a local [Ollama](https://ollama.com/) server.
|
||||
|
||||
This conversation agent is unable to control your house. The Ollama 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 Ollama with the details of your house, which include areas, devices, and their states.
|
||||
Controlling Home Assistant is an experimental feature that provides the AI access to the Assist API of Home Assistant. You can control what devices and entities it can access from the {% my voice_assistants title="exposed entities page" %}. The AI is able to provide you information about your devices and control them.
|
||||
|
||||
This integration does not integrate with [sentence triggers](/docs/automation/trigger/#sentence-trigger).
|
||||
|
||||
This integration requires an external Ollama server, which is available for macOS, Linux, and Windows. Follow the [download instructions](https://ollama.com/download) to install the server. Once installed, configure Ollama to be [accessible over the network](https://github.com/ollama/ollama/blob/main/docs/faq.md#how-can-i-expose-ollama-on-my-network).
|
||||
|
||||
@ -34,9 +38,12 @@ URL:
|
||||
|
||||
Model:
|
||||
description: Name of the [Ollama model](https://ollama.com/library) to use, such as `mistral` or `llama2:13b`. Models will be automatically downloaded during setup.
|
||||
|
||||
Prompt template:
|
||||
description: The starting text for the AI language model to generate new text from. This text can include information about your Home Assistant instance, devices, and areas and is written using [Home Assistant Templating](/docs/configuration/templating/).
|
||||
|
||||
Instructions:
|
||||
description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
|
||||
|
||||
Control Home Assistant:
|
||||
description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. This feature is considered experimental and see [Controlling Home Assistant](#controlling-home-assistant) below for details on model limitations.
|
||||
|
||||
Context window size:
|
||||
description: "The context window size is the number of tokens the model can take as input. Home Assistant defaults to 8k, which is larger than the default value in Ollama Server (2k), and you may adjust it based on the maximum context size of the specific model used. A larger value will better support larger homes with more entities, and smaller values may lower Ollama server RAM usage."
|
||||
@ -47,3 +54,18 @@ Keep alive:
|
||||
description: Duration in seconds for the Ollama host to keep the model in memory after receiving a message (-1 = no limit, 0 = no retention). Default value is -1.
|
||||
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Controlling Home Assistant
|
||||
|
||||
If you want to experiment with local LLMs using Home Assistant, we currently recommend using the `llama3.1:8b` model and exposing fewer than 25 entities. Note that smaller models are more likely to make mistakes than larger models.
|
||||
|
||||
Only models that support [Tools](https://ollama.com/search?c=tools) may control Home Assistant.
|
||||
|
||||
Smaller models may not [reliably maintain a conversation](https://llama.meta.com/docs/model-cards-and-prompt-formats/llama3_1/#llama-3.1-instruct) when controlling
|
||||
Home Assistant is enabled. However, you may use multiple Ollama configurations that
|
||||
share the same model, but use different prompts:
|
||||
|
||||
- Add the Ollama integration without enabling control of Home Assistant. You can use
|
||||
this conversation agent to have a conversation.
|
||||
- Add an additional Ollama integration, using the same model, enabling control of Home Assistant.
|
||||
You can use this conversation agent to control Home Assistant.
|
||||
|
@ -82,7 +82,7 @@ You can use an OpenAI Conversation integration to [talk to Super Mario and, if d
|
||||
### Action `openai_conversation.generate_image`
|
||||
|
||||
Allows you to ask OpenAI to generate an image based on a prompt. This action
|
||||
populates [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data)
|
||||
populates [Response Data](/docs/scripts/perform-actions#use-templates-to-handle-response-data)
|
||||
with the requested image.
|
||||
|
||||
| Data attribute | Optional | Description | Example |
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user