mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-23 09:17:06 +00:00
Merge branch 'current' into next
This commit is contained in:
commit
a887764d23
2
.github/workflows/add_prs_to_project.yml
vendored
2
.github/workflows/add_prs_to_project.yml
vendored
@ -18,7 +18,7 @@ jobs:
|
||||
app_id: ${{ secrets.PROJECTS_APP_ID }}
|
||||
private_key: ${{ secrets.PROJECTS_APP_PEM }}
|
||||
- name: Add to Project
|
||||
uses: actions/add-to-project@v0.6.0
|
||||
uses: actions/add-to-project@v1.0.0
|
||||
with:
|
||||
project-url: https://github.com/orgs/home-assistant/projects/10
|
||||
github-token: ${{ steps.token.outputs.token }}
|
||||
|
4
.github/workflows/test.yml
vendored
4
.github/workflows/test.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.1.1
|
||||
uses: actions/checkout@v4.1.2
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
@ -25,7 +25,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Check out files from GitHub
|
||||
uses: actions/checkout@v4.1.1
|
||||
uses: actions/checkout@v4.1.2
|
||||
- name: Setting up Node.js
|
||||
uses: actions/setup-node@v4.0.2
|
||||
with:
|
||||
|
6
Gemfile
6
Gemfile
@ -10,8 +10,8 @@ group :development do
|
||||
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.61.0'
|
||||
gem 'ruby-lsp', '0.14.4'
|
||||
gem 'rubocop', '1.62.1'
|
||||
gem 'ruby-lsp', '0.14.6'
|
||||
gem 'rackup', '2.1.0'
|
||||
end
|
||||
|
||||
@ -23,7 +23,7 @@ group :jekyll_plugins do
|
||||
end
|
||||
|
||||
gem 'sinatra', '4.0.0'
|
||||
gem 'nokogiri', '1.16.2'
|
||||
gem 'nokogiri', '1.16.3'
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library
|
||||
|
32
Gemfile.lock
32
Gemfile.lock
@ -27,11 +27,11 @@ GEM
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.16.3)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (3.25.3-x86_64-linux)
|
||||
google-protobuf (4.26.0-x86_64-linux)
|
||||
rake (>= 13)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.3)
|
||||
i18n (1.14.4)
|
||||
concurrent-ruby (~> 1.0)
|
||||
racc (~> 1.7)
|
||||
jekyll (4.3.3)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
@ -74,7 +74,7 @@ GEM
|
||||
multi_json (1.15.0)
|
||||
mustermann (3.0.0)
|
||||
ruby2_keywords (~> 0.0.1)
|
||||
nokogiri (1.16.2-x86_64-linux)
|
||||
nokogiri (1.16.3-x86_64-linux)
|
||||
racc (~> 1.4)
|
||||
parallel (1.24.0)
|
||||
parser (3.3.0.5)
|
||||
@ -85,7 +85,7 @@ GEM
|
||||
prism (0.24.0)
|
||||
public_suffix (5.0.4)
|
||||
racc (1.7.3)
|
||||
rack (3.0.9.1)
|
||||
rack (3.0.10)
|
||||
rack-protection (4.0.0)
|
||||
base64 (>= 0.1.0)
|
||||
rack (>= 3.0.0, < 4)
|
||||
@ -101,8 +101,8 @@ GEM
|
||||
ffi (~> 1.0)
|
||||
regexp_parser (2.9.0)
|
||||
rexml (3.2.6)
|
||||
rouge (4.2.0)
|
||||
rubocop (1.61.0)
|
||||
rouge (4.2.1)
|
||||
rubocop (1.62.1)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (>= 3.17.0)
|
||||
parallel (~> 1.10)
|
||||
@ -110,12 +110,12 @@ GEM
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 1.8, < 3.0)
|
||||
rexml (>= 3.2.5, < 4.0)
|
||||
rubocop-ast (>= 1.30.0, < 2.0)
|
||||
rubocop-ast (>= 1.31.1, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 3.0)
|
||||
rubocop-ast (1.31.1)
|
||||
rubocop-ast (1.31.2)
|
||||
parser (>= 3.3.0.4)
|
||||
ruby-lsp (0.14.4)
|
||||
ruby-lsp (0.14.6)
|
||||
language_server-protocol (~> 3.17.0)
|
||||
prism (>= 0.22.0, < 0.25)
|
||||
sorbet-runtime (>= 0.5.10782)
|
||||
@ -123,8 +123,8 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
safe_yaml (1.0.5)
|
||||
sass (3.4.25)
|
||||
sass-embedded (1.71.1-x86_64-linux-gnu)
|
||||
google-protobuf (~> 3.25)
|
||||
sass-embedded (1.72.0-x86_64-linux-gnu)
|
||||
google-protobuf (>= 3.25, < 5.0)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
sassc (2.1.0-x86_64-linux)
|
||||
@ -135,7 +135,7 @@ GEM
|
||||
rack-protection (= 4.0.0)
|
||||
rack-session (>= 2.0.0, < 3)
|
||||
tilt (~> 2.0)
|
||||
sorbet-runtime (0.5.11285)
|
||||
sorbet-runtime (0.5.11311)
|
||||
stringex (2.8.6)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
@ -157,11 +157,11 @@ DEPENDENCIES
|
||||
jekyll-paginate (= 1.1.0)
|
||||
jekyll-sitemap (= 1.4.0)
|
||||
jekyll-toc (= 0.18.0)
|
||||
nokogiri (= 1.16.2)
|
||||
nokogiri (= 1.16.3)
|
||||
rackup (= 2.1.0)
|
||||
rake (= 13.1.0)
|
||||
rubocop (= 1.61.0)
|
||||
ruby-lsp (= 0.14.4)
|
||||
rubocop (= 1.62.1)
|
||||
ruby-lsp (= 0.14.6)
|
||||
sass-globbing (= 1.1.5)
|
||||
sassc (= 2.1.0)
|
||||
sinatra (= 4.0.0)
|
||||
|
@ -110,8 +110,8 @@ social:
|
||||
# Home Assistant release details
|
||||
current_major_version: 2024
|
||||
current_minor_version: 3
|
||||
current_patch_version: 0
|
||||
date_released: 2024-03-06
|
||||
current_patch_version: 3
|
||||
date_released: 2024-03-22
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
|
349
package-lock.json
generated
349
package-lock.json
generated
@ -17,10 +17,10 @@
|
||||
"remark-lint-no-shell-dollars": "^3.1.2",
|
||||
"remark-lint-ordered-list-marker-style": "^3.1.2",
|
||||
"remark-lint-ordered-list-marker-value": "^3.1.2",
|
||||
"remark-lint-prohibited-strings": "^3.1.0",
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^3.1.2",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.0.3",
|
||||
"textlint": "^14.0.4",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^4.0.1"
|
||||
@ -416,68 +416,68 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-tester": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.0.3.tgz",
|
||||
"integrity": "sha512-TNArbA0a/9nxJadZDsnfV6I4kB6C+Vb6BmFbDxBglS/NWtFqI9SYPV2tRhGBnTHFyTl5bgyzrAyb2FNSxbrSuQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-14.0.4.tgz",
|
||||
"integrity": "sha512-SQ/2DjxVlDVeCEjVlD8c8R2Sl3VGDZEx8o9+i8bV8NUdY8qsSHbo29/BfiUZf/uaX6eeNpZsurtstJ25hbVrsQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3",
|
||||
"@textlint/ast-node-types": "^14.0.4",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-tester/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.0.3.tgz",
|
||||
"integrity": "sha512-rZ0PwLWuLlAOkDp/9wGsHa1jZMjNdJ3CpZMPTNnqEppaxb3o4OKFbjt2Hh87E215B84Cz8KaeKFT/QEn+YiRjA==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-14.0.4.tgz",
|
||||
"integrity": "sha512-bzFC7UJ2FvhjH5ekXGQ0i9vjK+xzMT69gHBsYVEl+TtbplnH2YY3+sbw6B1j3LocJuo6xngZ2YWXXqmQlKgzLg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3"
|
||||
"@textlint/ast-node-types": "^14.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/config-loader": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.0.3.tgz",
|
||||
"integrity": "sha512-uUDVKEkIcq7VDljM6RWIpz76TvHQfOjXh+CFgZ/oVScSsPuvqR3TeBRLm8tgyho4MKmdTtHrhmuZj5DQrTOxig==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-14.0.4.tgz",
|
||||
"integrity": "sha512-qgAvZ1RcTq58+yNbzhaKHsb52yHRxt8SRpG7S4WFjYj2DEStjIxzssSQvlZtEBjSUQ7RZNJ93d+pL0YK8MIVoA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/kernel": "^14.0.3",
|
||||
"@textlint/module-interop": "^14.0.3",
|
||||
"@textlint/types": "^14.0.3",
|
||||
"@textlint/utils": "^14.0.3",
|
||||
"@textlint/kernel": "^14.0.4",
|
||||
"@textlint/module-interop": "^14.0.4",
|
||||
"@textlint/types": "^14.0.4",
|
||||
"@textlint/utils": "^14.0.4",
|
||||
"debug": "^4.3.4",
|
||||
"rc-config-loader": "^4.1.3",
|
||||
"try-resolve": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/feature-flag": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.0.3.tgz",
|
||||
"integrity": "sha512-qDQr8qA3glb6WF0cgmhG2OST5zTY5ft6OJ/J6smDoKse/1cnPlFwbvDLvrlxwnmWDyujvqb3p9Kw7GDToTIxYg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-14.0.4.tgz",
|
||||
"integrity": "sha512-1FMZqnjOA4KVpt/aloI1fNs46P0rUeHWcCRKl33/08wRHHMdcbaN4EsHkq7UfriuSfFgUuiyeo0bPjCpv15hhQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/fixer-formatter": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.0.3.tgz",
|
||||
"integrity": "sha512-Uk8CYLRye7KglYa1y8kW1BikA7kJ6bn9xK6FX93iwcL5yz9vOUUHYz9IINcOdg1NYfST4KaDbnBNKGfeQqr52Q==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-14.0.4.tgz",
|
||||
"integrity": "sha512-HkMxzGPo/pgA9UvddqJG6qm62ICNgil3AmBVp0QpOv5uTV1u9gCSQ5jOdb/aOJBw7W8fd+CcnEsEBYn9HT8e6A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/module-interop": "^14.0.3",
|
||||
"@textlint/types": "^14.0.3",
|
||||
"@textlint/module-interop": "^14.0.4",
|
||||
"@textlint/types": "^14.0.4",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"diff": "^5.1.0",
|
||||
"diff": "^5.2.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^6.0.1",
|
||||
"text-table": "^0.2.0",
|
||||
@ -485,39 +485,39 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.0.3.tgz",
|
||||
"integrity": "sha512-RRyY7oL6CD5JwD3cgl8KvSd80rbnJKSUXTsn2ZAtLAjqJR+io0tVZLkQwij7diXaMjCnoJQfmnbIJf8C29/G5Q==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-14.0.4.tgz",
|
||||
"integrity": "sha512-6WNoEBZ4lYTYOGK4EEEdjp+kgxSSC1nIFwN6tY9XGVkd4OACzDNothVTvJBwaX73FWFG5zoSjnNQxBDPUHMc8g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3",
|
||||
"@textlint/ast-tester": "^14.0.3",
|
||||
"@textlint/ast-traverse": "^14.0.3",
|
||||
"@textlint/feature-flag": "^14.0.3",
|
||||
"@textlint/source-code-fixer": "^14.0.3",
|
||||
"@textlint/types": "^14.0.3",
|
||||
"@textlint/utils": "^14.0.3",
|
||||
"@textlint/ast-node-types": "^14.0.4",
|
||||
"@textlint/ast-tester": "^14.0.4",
|
||||
"@textlint/ast-traverse": "^14.0.4",
|
||||
"@textlint/feature-flag": "^14.0.4",
|
||||
"@textlint/source-code-fixer": "^14.0.4",
|
||||
"@textlint/types": "^14.0.4",
|
||||
"@textlint/utils": "^14.0.4",
|
||||
"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.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/linter-formatter": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.0.3.tgz",
|
||||
"integrity": "sha512-CSwrE7LH/0KeQPP6/Nar5sakI+c1ToaYc14MwjWKCljK9RqkZCBFZqEWdy7LhXeIL5Pwf2BhsdGOImx14NpyHw==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.0.4.tgz",
|
||||
"integrity": "sha512-EQZJPydExEIvBARkdmkoGsKWie1ekNAiqerQgIqwPb3SqOzKnlaDGrZOMy40HufTcacZrrvlbByDyai6m30+Lw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@azu/format-text": "^1.0.2",
|
||||
"@azu/style-format": "^1.0.1",
|
||||
"@textlint/module-interop": "^14.0.3",
|
||||
"@textlint/types": "^14.0.3",
|
||||
"@textlint/module-interop": "^14.0.4",
|
||||
"@textlint/types": "^14.0.4",
|
||||
"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.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.0.3.tgz",
|
||||
"integrity": "sha512-+CkWt9a9pd1+Rl37dqiiEGQ2f2faLX/vd7qiV+OTfkKUyHQ0HkOLK7sfbPpTx5ee5+5fKVMTStTTHrFZz5mlBw==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-14.0.4.tgz",
|
||||
"integrity": "sha512-D9UUxnRJoNROVjOa9bhoQPDdRvlvS/xP3MJo0Kl6b/mJFi0dOlW31WUfpOFjZkp4uXkL+oo0ji7AMnmV6JORsQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3",
|
||||
"@textlint/ast-node-types": "^14.0.4",
|
||||
"debug": "^4.3.4",
|
||||
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
||||
"remark-footnotes": "^3.0.0",
|
||||
@ -548,9 +548,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast/node_modules/bail": {
|
||||
@ -780,73 +780,73 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/module-interop": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.0.3.tgz",
|
||||
"integrity": "sha512-76K6y4wNCZH3+BGziJm6iGPbKsBtb214332EgdXDMNsYah51LPT9YrXuOI1ROyxvfVoztJMH0MDZdtdY/t7cig==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.0.4.tgz",
|
||||
"integrity": "sha512-okv52pRSQ1aeC8rim8qp2D2Fmj/oKDYGY2itdeZhj9E/vdkU9/r7OpdcxyuNiuqLEd/sWw03EAwt3S6mlfNIOw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/source-code-fixer": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.0.3.tgz",
|
||||
"integrity": "sha512-/htnQzs+8qMIiZWQEpFF4+PgxDhi6flP+qIdoL8l5Q/jbIIZbGgOz9pdEFwnwOur/ddqFfuOKy5GtwZDoF+gOg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-14.0.4.tgz",
|
||||
"integrity": "sha512-gIUeWjF0WdSwgCUhW310hKJsWOyRyFe6PGaqqCk7Mhc+vVcePfmC8mmmhVgeuyys/Dhe+0iaP4M1eJf4COaIQw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/types": "^14.0.3",
|
||||
"@textlint/types": "^14.0.4",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.0.3.tgz",
|
||||
"integrity": "sha512-NrlZQ5RO3O6aSqDMzLzGWhKP5Rx2UlbGulVgO2sQ+59837+32cHjzrV+J1nBVVcsfsv+GOFperfo5C/Rn+F7SA==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-14.0.4.tgz",
|
||||
"integrity": "sha512-r2KSnKzhsCIvX72yX+7sEuu9nDQIS4+xRsSffuXYB0etRQUI6VTTsE6Ibd6yMbEsMDUF4BfKWzNGn+bQ8U7oHA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3"
|
||||
"@textlint/ast-node-types": "^14.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-markdown": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.0.3.tgz",
|
||||
"integrity": "sha512-1zwiwmayFRIElGdeCUXCJjlP+mpZDCCtcsNqB+07i/xi3UlSFM3NGRUzJ5CYQbjJ7Nrb3kmA5FKxB7xTMdZH4w==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-14.0.4.tgz",
|
||||
"integrity": "sha512-mqQieI9U5GTRTjkK4Cj57Axl6fVloaA8g0+sCsp3TjmNWyEgGBvt3aw+FIUiFTvheg9L3RGe/aXgvp5ORADOAA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/markdown-to-ast": "^14.0.3"
|
||||
"@textlint/markdown-to-ast": "^14.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-text": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.0.3.tgz",
|
||||
"integrity": "sha512-dDRkNAoOH/HHxpC5Ghn89L90Ax5GQ4CIwCiV91qmjYUaCH710wkqRppBCEIHnS+1E/5wq1ukhTbGJjvxe7rP4w==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-14.0.4.tgz",
|
||||
"integrity": "sha512-HwTQyOcwDRrPPHyD8lwSMyGR1ETasR2WK6BLO0PRbowRe6K/K4b9OBBd6+nJcRFa+9Nd6p7nxPzA2WxDi1X/Zg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/text-to-ast": "^14.0.3"
|
||||
"@textlint/text-to-ast": "^14.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.0.3.tgz",
|
||||
"integrity": "sha512-Ft08kK3BNxbuRYb0BOEjSr9CkJyHIYBiUfWvaNcqhXESQLhplb5EfynkXw0uAerzhx9CxkdC2FcOFU+HIcuYRg==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.0.4.tgz",
|
||||
"integrity": "sha512-SNdFG/GB6utYeHmNfoAMlI+K1NykPxK9TtilkEfhr/fF9TqmeeJ+6CMk5NLQzEvfKm6jUbv2pp5DPS27vo6GKg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3"
|
||||
"@textlint/ast-node-types": "^14.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/utils": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.0.3.tgz",
|
||||
"integrity": "sha512-Rt7KFrqPpLmpTz3ftTbA8A4kUABwW8CuvgbAAOL/XYpejnQeGPmVfVF3b3AvDtD5jYjp4rPkXHGHDPJTj+lYwA==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-14.0.4.tgz",
|
||||
"integrity": "sha512-/ThtVZCB/vB2e8+MnKquCFNO2cKXCPEGxFlkdvJ5g9q9ODpVyFcf2ogYoIlvR7cNotvq67zVjENS7dsGDNFEmw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/concat-stream": {
|
||||
@ -1319,9 +1319,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/diff": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz",
|
||||
"integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==",
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
|
||||
"integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.3.1"
|
||||
@ -4656,18 +4656,24 @@
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/remark-lint-prohibited-strings/-/remark-lint-prohibited-strings-3.1.0.tgz",
|
||||
"integrity": "sha512-zwfDDdYl7ye0gEHcwhdkv1ZGXj1ibw4gnLLZkkvySnDdTz2tshY3fOJLY5NikbVseaIRVGOr5qa+8J9WNQT/fA==",
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/remark-lint-prohibited-strings/-/remark-lint-prohibited-strings-4.0.0.tgz",
|
||||
"integrity": "sha512-dfLF4da5v3klRAdkHBLpNIC7WpvNdN7Eylgf+p19HPJn53CaxqlGjFvAQDAJU83xXEPWAmdonlx04GIS5ryLow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"escape-string-regexp": "^5.0.0",
|
||||
"unified-lint-rule": "^2.0.0",
|
||||
"unist-util-position": "^4.0.1",
|
||||
"unist-util-visit": "^4.0.0",
|
||||
"vfile-location": "^4.0.1"
|
||||
"unist-util-position": "^5.0.0",
|
||||
"unist-util-visit": "^5.0.0",
|
||||
"vfile-location": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/@types/unist": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz",
|
||||
"integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/escape-string-regexp": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
|
||||
@ -4680,6 +4686,117 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/unist-util-is": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz",
|
||||
"integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/unist-util-position": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz",
|
||||
"integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/unist-util-stringify-position": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz",
|
||||
"integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/unist-util-visit": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
|
||||
"integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0",
|
||||
"unist-util-is": "^6.0.0",
|
||||
"unist-util-visit-parents": "^6.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/unist-util-visit-parents": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz",
|
||||
"integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0",
|
||||
"unist-util-is": "^6.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/vfile": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz",
|
||||
"integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0",
|
||||
"unist-util-stringify-position": "^4.0.0",
|
||||
"vfile-message": "^4.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/vfile-location": {
|
||||
"version": "5.0.2",
|
||||
"resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz",
|
||||
"integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0",
|
||||
"vfile": "^6.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-prohibited-strings/node_modules/vfile-message": {
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
|
||||
"integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/unist": "^3.0.0",
|
||||
"unist-util-stringify-position": "^4.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/unified"
|
||||
}
|
||||
},
|
||||
"node_modules/remark-lint-unordered-list-marker-style": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-3.1.2.tgz",
|
||||
@ -5954,23 +6071,23 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.0.3.tgz",
|
||||
"integrity": "sha512-AqEG9OcGBSw4KHss55ZrBv75uWeruqTHfix3koQHwqnazRw3eAkFQwQ+NLpzMut+rIBWUUikUzuBN/SOG+obEw==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-14.0.4.tgz",
|
||||
"integrity": "sha512-xPQkC/BftPjizjs31wci/791EjwfN11iRLrNKiPVBogYd1r+6TnSxbCERZhgXCGcD9tEHss0kOYc0+vPEEG8jg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^14.0.3",
|
||||
"@textlint/ast-traverse": "^14.0.3",
|
||||
"@textlint/config-loader": "^14.0.3",
|
||||
"@textlint/feature-flag": "^14.0.3",
|
||||
"@textlint/fixer-formatter": "^14.0.3",
|
||||
"@textlint/kernel": "^14.0.3",
|
||||
"@textlint/linter-formatter": "^14.0.3",
|
||||
"@textlint/module-interop": "^14.0.3",
|
||||
"@textlint/textlint-plugin-markdown": "^14.0.3",
|
||||
"@textlint/textlint-plugin-text": "^14.0.3",
|
||||
"@textlint/types": "^14.0.3",
|
||||
"@textlint/utils": "^14.0.3",
|
||||
"@textlint/ast-node-types": "^14.0.4",
|
||||
"@textlint/ast-traverse": "^14.0.4",
|
||||
"@textlint/config-loader": "^14.0.4",
|
||||
"@textlint/feature-flag": "^14.0.4",
|
||||
"@textlint/fixer-formatter": "^14.0.4",
|
||||
"@textlint/kernel": "^14.0.4",
|
||||
"@textlint/linter-formatter": "^14.0.4",
|
||||
"@textlint/module-interop": "^14.0.4",
|
||||
"@textlint/textlint-plugin-markdown": "^14.0.4",
|
||||
"@textlint/textlint-plugin-text": "^14.0.4",
|
||||
"@textlint/types": "^14.0.4",
|
||||
"@textlint/utils": "^14.0.4",
|
||||
"debug": "^4.3.4",
|
||||
"file-entry-cache": "^5.0.1",
|
||||
"get-stdin": "^5.0.1",
|
||||
@ -6096,9 +6213,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/textlint/node_modules/@textlint/ast-node-types": {
|
||||
"version": "14.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.3.tgz",
|
||||
"integrity": "sha512-umIMn3yy2arl9QHH2fEhCxVgbLbQFC8NpzYbAzOQ4Y5m+p0RQaKClHtHXnDqsXHp6WKAVAXxcuFolW2SZMnhDQ==",
|
||||
"version": "14.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.0.4.tgz",
|
||||
"integrity": "sha512-O7L1pgle030Co9ou1+6e2/6GgcIpKgqwEc0XiBabokc22Yl0QEkrf00K/usBDmSx+wo1ficWBux2mfBEF0jnDA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/to-regex-range": {
|
||||
|
@ -12,10 +12,10 @@
|
||||
"remark-lint-no-shell-dollars": "^3.1.2",
|
||||
"remark-lint-ordered-list-marker-style": "^3.1.2",
|
||||
"remark-lint-ordered-list-marker-value": "^3.1.2",
|
||||
"remark-lint-prohibited-strings": "^3.1.0",
|
||||
"remark-lint-prohibited-strings": "^4.0.0",
|
||||
"remark-lint-unordered-list-marker-style": "^3.1.2",
|
||||
"remark-stringify": "^11.0.0",
|
||||
"textlint": "^14.0.3",
|
||||
"textlint": "^14.0.4",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^4.0.1"
|
||||
|
@ -831,6 +831,18 @@ $ha__primary_color: #03a9f4;
|
||||
}
|
||||
|
||||
.distributors {
|
||||
details {
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
padding: 16px 24px;
|
||||
color: #222222;
|
||||
margin: auto;
|
||||
|
||||
summary.region {
|
||||
display: list-item;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
|
||||
|
@ -5,7 +5,7 @@ sidebar_label: Alarm panel
|
||||
description: "The alarm panel card allows you to arm and disarm your alarm control panel integrations."
|
||||
---
|
||||
|
||||
The alarm panel card allows you to arm and disarm your [alarm control panel](/integrations/#alarm) integrations.
|
||||
The alarm panel card allows you to arm and disarm your [alarm control panel](/integrations/#alarm) {% term integrations %}.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/alarm_panel_card.gif' alt='Screenshot of the alarm panel card'>
|
||||
@ -81,3 +81,8 @@ states:
|
||||
- arm_night
|
||||
- armed_custom_bypass
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -5,7 +5,7 @@ sidebar_label: Area
|
||||
description: "The area card gives control of your entities in a specified area."
|
||||
---
|
||||
|
||||
The area card lets you control and monitor an individual area.
|
||||
The area card lets you control and monitor an individual {% term area %}.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/area-card.png' alt='Screenshot of the area card'>
|
||||
@ -16,9 +16,9 @@ The area card lets you control and monitor an individual area.
|
||||
|
||||
All options for this card can be configured via the user interface.
|
||||
|
||||
Buttons will appear on the card for the entities in the area including fan, light and switch. A motion sensor icon will appear in the top left if a motion sensor is in the area and motion is detected by the motion sensor.
|
||||
Buttons will appear on the card for the {% term entities %} in the area including fan, light, and switch. A motion sensor icon will appear in the top left if a motion sensor is in the area and if motion is detected by the motion sensor.
|
||||
|
||||
If a camera is added to the area you can show the camera feed instead of the area picture.
|
||||
If a camera is added to the {% term area %} you can show the camera feed instead of the area picture.
|
||||
|
||||
## YAML configuration
|
||||
|
||||
@ -86,3 +86,8 @@ navigation_path: my_bedroom
|
||||
show_camera: true
|
||||
theme: green
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -136,3 +136,10 @@ tap_action:
|
||||
<img src='/images/dashboards/entity_button_complex_card.png' alt='Screenshot of the Button card with script service'>
|
||||
Screenshot of the button card with script service.
|
||||
</p>
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Scripts](/docs/scripts/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -5,7 +5,7 @@ sidebar_label: Calendar
|
||||
description: "The calendar card displays your calendar entities in a month, day and list view"
|
||||
---
|
||||
|
||||
The calendar card displays your [calendar](/integrations/#calendar) entities in a month, day and list view (7 days).
|
||||
The calendar card displays your [calendar](/integrations/#calendar) {% term entities %} in a month, day, and list view (7 days).
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/calendar_card.png' alt='Screenshot of the
|
||||
@ -52,3 +52,8 @@ entities:
|
||||
- calendar.calendar_1
|
||||
- calendar.calendar_2
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
type: card
|
||||
title: Conditional Card
|
||||
title: Conditional card
|
||||
sidebar_label: Conditional
|
||||
description: The Conditional card displays another card based on conditions.
|
||||
---
|
||||
@ -36,6 +36,7 @@ card:
|
||||
## Examples
|
||||
|
||||
Only show when all the conditions are met:
|
||||
|
||||
```yaml
|
||||
type: conditional
|
||||
conditions:
|
||||
@ -59,6 +60,7 @@ card:
|
||||
```
|
||||
|
||||
Example condition where only one of the conditions needs to be met:
|
||||
|
||||
```yaml
|
||||
type: conditional
|
||||
conditions:
|
||||
@ -188,3 +190,7 @@ users:
|
||||
description: User ID that can see the card (unique hex value found on the Users configuration page).
|
||||
type: list
|
||||
{% endconfiguration %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -1,13 +1,13 @@
|
||||
---
|
||||
type: card
|
||||
title: "Energy Cards"
|
||||
sidebar_label: Energy Cards
|
||||
title: "Energy cards"
|
||||
sidebar_label: Energy cards
|
||||
description: "An overview of the energy cards that are available."
|
||||
---
|
||||
|
||||
This is a list of all the cards used in the energy dashboard, you can also place them anywhere you want in your dashboard.
|
||||
This is a list of all the cards used in the energy dashboard. You can also place them anywhere you want in your dashboard.
|
||||
|
||||
At the moment there are no configuration options available for these cards, you can configure them on the {% my config_energy title="energy configuration page" %}.
|
||||
Currently, there are no configuration options available for these cards. You can configure them on the {% my config_energy title="energy configuration page" %}.
|
||||
|
||||
## Energy date picker
|
||||
|
||||
@ -16,10 +16,11 @@ At the moment there are no configuration options available for these cards, you
|
||||
Screenshot of the Energy date selection card.
|
||||
</p>
|
||||
|
||||
This card will allow you to pick what data to show. Changing it in this card will influence the data in all other cards.
|
||||
This card allows you to pick what data to show. Changing it in this card will influence the data in all other cards.
|
||||
Specific dates and ranges can be selected by opening the date range picker. The current period can be compared to the previous one using the compare data option within the menu.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-date-selection
|
||||
```
|
||||
@ -35,6 +36,7 @@ The energy usage graph card shows the amount of energy your house has consumed,
|
||||
It will also show the amount of energy your have returned to the grid.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-usage-graph
|
||||
```
|
||||
@ -49,6 +51,7 @@ type: energy-usage-graph
|
||||
The solar production graph card shows the amount of energy your solar panels have produced per source, and if setup and available the forecast of the solar production.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-solar-graph
|
||||
```
|
||||
@ -97,6 +100,7 @@ If setup, it will also tell you how many kWh of the energy you got from the grid
|
||||
If you set `link_dashboard` to `true`, the card will include a link to the energy dashboard.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-distribution
|
||||
link_dashboard: true
|
||||
@ -113,6 +117,7 @@ The energy sources table card shows all your energy sources, and the correspondi
|
||||
If setup, it will also show the costs and compensation per source and the total.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-sources-table
|
||||
```
|
||||
@ -127,6 +132,7 @@ type: energy-sources-table
|
||||
The grid neutrality gauge card represents your energy dependency. If the needle is in the purple, you returned more energy to the grid than you consumed from it. If it's in the blue, you consumed more energy from the grid than you returned.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-grid-neutrality-gauge
|
||||
```
|
||||
@ -141,6 +147,7 @@ type: energy-grid-neutrality-gauge
|
||||
The solar consumed gauge represents how much of the solar energy was used by your home and was not returned to the grid. If you frequently return a lot, try to conserve this energy by installing a battery or buying an electric car to charge.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-solar-consumed-gauge
|
||||
```
|
||||
@ -155,6 +162,7 @@ type: energy-solar-consumed-gauge
|
||||
The carbon consumed gauge card represents how much of the energy consumed by your home was generated using non-fossil fuels like solar, wind and nuclear. It includes the solar energy you generated your self.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-carbon-consumed-gauge
|
||||
```
|
||||
@ -169,6 +177,7 @@ type: energy-carbon-consumed-gauge
|
||||
The self-sufficiency gauge represents how self-sufficient your home is. If you rely on grid imports, this value decreases. You can increase this value by adding more solar capacity or battery storage.
|
||||
|
||||
### Example
|
||||
|
||||
```yaml
|
||||
type: energy-self-sufficiency-gauge
|
||||
```
|
||||
@ -220,3 +229,8 @@ The following example limits the number of shown devices to 5:
|
||||
type: energy-devices-detail-graph
|
||||
max_devices: 5
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
type: card
|
||||
title: "Entities Card"
|
||||
title: "Entities card"
|
||||
sidebar_label: Entities
|
||||
description: "The entities card is the most common type of card. It groups items together into lists."
|
||||
---
|
||||
@ -456,3 +456,9 @@ entities:
|
||||
text: Are you sure you want to restart?
|
||||
service: script.libreelec_power_cycle
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Card header and footer](/dashboards/header-footer/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -78,3 +78,9 @@ footer:
|
||||
attribute: battery_level
|
||||
unit: "%"
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card header and footer](/dashboards/header-footer/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
type: card
|
||||
title: "Gauge Card"
|
||||
title: "Gauge card"
|
||||
sidebar_label: Gauge
|
||||
description: "The gauge card is a basic card that allows visually seeing sensor data."
|
||||
---
|
||||
@ -181,3 +181,9 @@ segments:
|
||||
- from: 65
|
||||
color: var(--error-color)
|
||||
```
|
||||
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -157,3 +157,9 @@ entities:
|
||||
tap_action:
|
||||
action: toggle
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -80,3 +80,8 @@ cards:
|
||||
entity: light.bed_light
|
||||
image: /local/bed_2.png
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -107,3 +107,8 @@ entities:
|
||||
- entity: sensor.attic_temperature
|
||||
name: "Attic"
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -46,3 +46,7 @@ cards:
|
||||
<img src='/images/dashboards/horizontal_stack.png' alt='Two picture cards in a horizontal stack card'>
|
||||
Two picture cards in a horizontal stack card.
|
||||
</p>
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -56,3 +56,8 @@ type: humidifier
|
||||
entity: humidifier.bedroom
|
||||
name: Bedroom Humidifier
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card features](/dashboards/features)
|
||||
- [Themes](/integrations/frontend/)
|
||||
|
@ -56,3 +56,7 @@ type: iframe
|
||||
url: https://www.home-assistant.io
|
||||
aspect_ratio: 75%
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -80,3 +80,9 @@ name: My Office
|
||||
<img src='/images/dashboards/light_complex_card.png' alt='Screenshot of the Light card'>
|
||||
Screenshot of the Light card names.
|
||||
</p>
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -65,3 +65,8 @@ entities:
|
||||
- light.ceiling_lights
|
||||
hours_to_show: 24
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -134,3 +134,8 @@ entities:
|
||||
focus: false
|
||||
hours_to_show: 48
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -140,3 +140,8 @@ content: |
|
||||
<ha-alert alert-type="success">This is a success alert — check it out!</ha-alert>
|
||||
<ha-alert title="Test alert">This is an alert with a title</ha-alert>
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -46,3 +46,8 @@ Basic example:
|
||||
type: media-control
|
||||
entity: media_player.lounge_room
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -401,7 +401,7 @@ user:
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
## Notes on Element Attributes
|
||||
## Notes on element attributes
|
||||
|
||||
### How to use the style object
|
||||
|
||||
@ -573,3 +573,9 @@ elements:
|
||||
top: 47%
|
||||
left: 42%
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -138,3 +138,9 @@ tap_action:
|
||||
{% endraw %}
|
||||
|
||||
The filename needs to be a path that is writable by Home Assistant in your system. You may need to configure `allowlist_external_dirs` ([documentation](/docs/configuration/basic/)).
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -267,3 +267,9 @@ state_image:
|
||||
"off": /local/living_room_off.png
|
||||
entity: group.living.room
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
type: card
|
||||
title: "Picture Card"
|
||||
title: "Picture card"
|
||||
sidebar_label: Picture
|
||||
description: "The picture card allows you to set an image to use for navigation to various paths in your interface or to call a service."
|
||||
---
|
||||
@ -74,3 +74,9 @@ tap_action:
|
||||
data:
|
||||
entity_id: light.ceiling_lights
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -48,3 +48,8 @@ Basic example:
|
||||
type: plant-status
|
||||
entity: plant.bonsai
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -6,16 +6,62 @@ description: "Lets you organize your cards in sections on a grid."
|
||||
---
|
||||
|
||||
The sections view lets you organize your cards in sections on a grid.
|
||||
It allows you to group card directly in sections, without having to use horizontal or vertical stack cards.
|
||||
You can group cards without using horizontal or vertical stack cards.
|
||||
|
||||
There are a few options to rearrange cards. You can move cards within the section,
|
||||
move them from one section into another or even move the entire section.
|
||||
You can also copy and paste cards.
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-example-dashboard.png" alt="A fully populated dashboard in Sections view layout"/>
|
||||
A fully populated dashboard in Sections view layout
|
||||
</p>
|
||||
|
||||
To see how it works, check out the demo:
|
||||
<div class='note notice'>
|
||||
<p>The sections view was released beginning of March 2024 and is experimental! Do not build your daily dashboard on top of it yet! We are still collecting feedback.</p><br><p>It is not possible to migrate dashboards into sections view.</p>
|
||||
</div>
|
||||
|
||||
## Creating a sections view
|
||||
|
||||
1. If you have multiple dashboards, in the left sidebar, select the dashboard to which you want to add the sections view.
|
||||
2. [Add a new view](/dashboards/views/#adding-a-view-to-a-dashboard) and under **View type**, select **Sections**.
|
||||
3. To add a card, select the **Add card** button.
|
||||
- Follow the [steps on adding cards](/dashboards/cards/#adding-cards-to-your-dashboard).
|
||||
|
||||

|
||||
|
||||
4. To add a section, select the **Create section** button.
|
||||
5. To edit the section title, select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-edit.png" alt="Edit icon"/> button.
|
||||
- If you leave the section title empty, this line will be hidden.
|
||||
6. To delete a section, select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-trash.png" alt="Delete icon"/> button.
|
||||
|
||||
## Rearranging sections and cards
|
||||
|
||||
In the sections view, you can rearrange sections and cards by dragging them to a new location. This is not yet possible in other views.
|
||||
|
||||
1. To edit your dashboard, in the top right corner, select the pencil icon.
|
||||
2. To rearrange sections, hold the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-move.png" alt="Move icon"/> button and move the card.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-sections.gif" alt="Rearranging sections by dragging"/>
|
||||
Rearranging sections by dragging
|
||||
</p>
|
||||
|
||||
3. To rearrange cards, tap and hold the card and move it to your desired location.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-cards.gif" alt="Rearranging cards by dragging"/>
|
||||
Rearranging cards by dragging
|
||||
</p>
|
||||
|
||||
## Check out the demo
|
||||
|
||||
Check out the demo from the March live stream on dashboards.
|
||||
|
||||
<lite-youtube videoid="XyBy0ckkiDU" videoStartAt="2047" videotitle="A Home-Approved Dashboard - Chapter 1: What about Grace?" posterquality="maxresdefault"></lite-youtube>
|
||||
|
||||
## About the sections view layout
|
||||
|
||||
To learn all about the design decisions and the grid layout used for the sections view, refer to the [Dashboard chapter 1 blog post](/blog/2024/03/04/dashboard-chapter-1/).
|
||||
|
||||
## YAML configuration
|
||||
|
||||
{% configuration %}
|
||||
type:
|
||||
required: false
|
||||
@ -28,3 +74,6 @@ type:
|
||||
- [Masonry view](/dashboards/masonry/)
|
||||
- [Panel view](/dashboards/panel/)
|
||||
- [Sidebar view](/dashboards/sidebar/)
|
||||
- [Dashboard chapter 1 blog post](/blog/2024/03/04/dashboard-chapter-1/)
|
||||
- [Adding cards to a view](/dashboards/cards/#adding-cards-to-your-dashboard)
|
||||
- [Adding a new view](/dashboards/views/#adding-a-view-to-a-dashboard)
|
@ -83,3 +83,8 @@ type: sensor
|
||||
entity: sensor.illumination
|
||||
name: Illumination
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -1,10 +1,10 @@
|
||||
---
|
||||
type: card
|
||||
title: "Shopping list card"
|
||||
sidebar_label: Shopping list
|
||||
description: "The shopping list card allows you to add, edit, check-off, and clear items from your shopping list."
|
||||
---
|
||||
|
||||
Note: the shopping list card is no longer available as a card to add from the user interface. Use the [to-do list card](/dashboards/todo-list/) instead.
|
||||
|
||||
The shopping list card allows you to add, edit, check-off, and clear items from your shopping list.
|
||||
|
||||
<p class='img'>
|
||||
@ -39,9 +39,14 @@ theme:
|
||||
|
||||
### Examples
|
||||
|
||||
Title Example:
|
||||
Title example:
|
||||
|
||||
```yaml
|
||||
type: shopping-list
|
||||
title: shopping list
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [To-do list integration](/integrations/todo)
|
||||
- [Local to-do integration](/integrations/local_todo/)
|
@ -171,4 +171,9 @@ period:
|
||||
minutes: -20
|
||||
seconds: -10
|
||||
stat_type: change
|
||||
```
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -96,3 +96,8 @@ entities:
|
||||
- entity: sensor.inside_temperature
|
||||
name: Inside
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -5,7 +5,7 @@ sidebar_label: Thermostat
|
||||
description: "The thermostat card gives control of your climate entity, allowing you to change the temperature and mode of the entity."
|
||||
---
|
||||
|
||||
The thermostat card gives control of your [climate](/integrations/#climate) entity, allowing you to change the temperature and mode of the entity.
|
||||
The thermostat card gives control of your [climate](/integrations/#climate) {% term entity %}, allowing you to change the temperature and mode of the {% term entity %}.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/thermostat_card.png' alt='Screenshot of the thermostat card'>
|
||||
@ -55,3 +55,8 @@ features:
|
||||
type: thermostat
|
||||
entity: climate.nest
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card features](/dashboards/features)
|
||||
- [Themes](/integrations/frontend/)
|
||||
|
@ -5,7 +5,7 @@ sidebar_label: Tile
|
||||
description: "The tile card gives you a quick overview of your entity. The card allows you to toggle the entity, show the more-info dialog, or custom actions."
|
||||
---
|
||||
|
||||
The tile card gives you a quick overview of your entity. The card allows you to toggle the entity and show the more info dialog. A badge is shown for some entities like the [climate](/integrations/climate) or [person](/integrations/person) entities.
|
||||
The tile card gives you a quick overview of your {% term entity %}. The card allows you to toggle the {% term entity %} and show the more info dialog. A badge is shown for some {% term entities %} like the [climate](/integrations/climate) or [person](/integrations/person) {% term entities %}.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/tile_card.png' alt='Screenshot of tile cards'>
|
||||
@ -126,6 +126,12 @@ features:
|
||||
- return_home
|
||||
```
|
||||
|
||||
## Available color tokens
|
||||
## Available colors
|
||||
|
||||
Some color tokens are available to colorize the tile card : `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black` and `white`.
|
||||
You want to colorize the tile card? Choose one of the following colors: `primary`, `accent`, `disabled`, `red`, `pink`, `purple`, `deep-purple`, `indigo`, `blue`, `light-blue`, `cyan`, `teal`, `green`, `light-green`, `lime`, `yellow`, `amber`, `orange`, `deep-orange`, `brown`, `grey`, `blue-grey`, `black` and `white`.
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Card actions](/dashboards/actions/)
|
||||
- [Card features](/dashboards/features)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
73
source/_dashboards/todo-list.markdown
Normal file
73
source/_dashboards/todo-list.markdown
Normal file
@ -0,0 +1,73 @@
|
||||
---
|
||||
type: card
|
||||
title: "To-do list card"
|
||||
sidebar_label: To-do list
|
||||
description: "The to-do list card allows you to add, edit, check-off, and clear items from your to-do list."
|
||||
---
|
||||
|
||||
The to-do list card allows you to add, edit, check-off, and clear items from your to-do list.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/todo-list_card_shopping-list.png' alt='Screenshot of the to-do list card'>
|
||||
Screenshot of the to-do list card.
|
||||
</p>
|
||||
|
||||
## Adding a to-do list card
|
||||
|
||||
1. [Add the card using the Add card button](/dashboards/cards/#adding-cards-to-your-dashboard).
|
||||
- In the **By card** dialog, select the **To-do list** card.
|
||||
2. In the **Entity** dropdown menu, select your list type.
|
||||
- If it is your first time working with to-do lists, there is only **Shopping list** in the menu.
|
||||
- This comes from the [shopping list integration](/integrations/shopping_list/), which is installed by default.
|
||||
- This is the same **Shopping list** as the one on the **To-do list** dashboard (accessible via sidebar).
|
||||
.
|
||||
3. The to-do list card can display lists from different [to-do list](/integrations/#to-do-list) integrations, such as **Bring!** or **Todoist**.
|
||||
- If you don't see your desired to-do list entity, you need to add its integration first.
|
||||
- Once you've added a to-do list integration, the lists are also available on the to-do list dashboard.
|
||||
|
||||
## YAML configuration
|
||||
|
||||
All options for this card can be configured via the user interface.
|
||||
|
||||
The following YAML options are available when you use YAML mode or just prefer to use YAML in the code editor in the UI.
|
||||
|
||||
{% configuration %}
|
||||
type:
|
||||
required: true
|
||||
description: "`todo-list`"
|
||||
type: string
|
||||
entity:
|
||||
required: true
|
||||
description: The to-do entity to show
|
||||
type: string
|
||||
title:
|
||||
required: false
|
||||
description: Title of to-do list.
|
||||
type: string
|
||||
theme:
|
||||
required: false
|
||||
description: Override the used theme for this card with any loaded theme. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
### Examples
|
||||
|
||||
Title example:
|
||||
|
||||
```yaml
|
||||
type: todo-list
|
||||
entity: todo-list
|
||||
title: todo list
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [To-do list integration documentation](/integrations/todo)
|
||||
- [List of to-do list integrations](/integrations/#to-do-list)
|
||||
- [Local to-do integration](/integrations/local_todo/)
|
||||
|
||||
### Dashboards, cards, and themes
|
||||
|
||||
- [Dashboards](/dashboards/dashboards/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
||||
- [Themes](/integrations/frontend/)
|
@ -71,3 +71,7 @@ cards:
|
||||
<img src="/images/dashboards/vertical-horizontal-stack.png" alt="Create a grid layout using vertical and horizontal stack">
|
||||
Create a grid layout using vertical and horizontal stack.
|
||||
</p>
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -153,3 +153,8 @@ Example theme configuration:
|
||||
```yaml
|
||||
--weather-icon-sunny: url("/local/sunny.png")
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Themes](/integrations/frontend/)
|
||||
- [Dashboard cards](/dashboards/cards/)
|
@ -257,7 +257,24 @@ automation:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
More dynamic and complex calculations can be done with `value_template`.
|
||||
More dynamic and complex calculations can be done with `value_template`. The variable 'state' is the [state object](/docs/configuration/state_object) of the entity specified by `entity_id`.
|
||||
|
||||
The state of the entity can be referenced like this:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.temperature
|
||||
value_template: "{{ state.state | float * 9 / 5 + 32 }}"
|
||||
above: 70
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Attributes of the entity can be referenced like this:
|
||||
|
||||
{% raw %}
|
||||
|
||||
|
@ -3,43 +3,72 @@ title: "Troubleshooting automations"
|
||||
description: "Tips on how to troubleshoot your automations."
|
||||
---
|
||||
|
||||
Automations and {% term scripts %} can be debugged in a few different ways. You can [test run](#testing-your-automation) the full sequence of actions, or test each condition and action separately. [Traces](#traces) let you see details of every step after an automation is run. For complicated automations with {% term templates %}, see the section [testing templates](#testing-templates).
|
||||
|
||||
## Testing your automation
|
||||
|
||||
Many automations can be tested directly in the automation editor UI.
|
||||
|
||||
### Running the entire automation
|
||||
|
||||
In the three dots menu in the automation list or automation editor UI, select the **Run** button. This will execute all of the {% term actions %}, while skipping all {% term triggers %} and {% term conditions %}. This lets you test the full sequence of actions, as if the automation was triggered and all conditions were true. Note that any [trigger ID](/docs/automation/trigger/#trigger-id) used in your triggers will not be active when you test this way. The Trigger ID or any data passed by in the `trigger` data in conditions or actions can't be tested directly this way.
|
||||
|
||||
You can also trigger an automation manually. This can test the conditions as if the automation was triggered by an event. Navigate to {% my developer_services title="**Developer tools** > **Services**" %}. In the service selection drop-down, select **Automation: Trigger**, then **Choose entity** to select the automation you are testing. Toggle whether to skip the conditions, then **Call service**. If needed, additional `trigger` or other data can be added in the YAML view for testing. The [trigger](/docs/automation/trigger/) page has more information about data within the trigger.
|
||||
|
||||
Testing with complex triggers, conditions, and variables can be difficult. Note that using the **Run** button will skip all triggers and conditions, while **Developer Tools** can be used with or without checking conditions.
|
||||
|
||||
### Running individual actions or conditions
|
||||
|
||||
In the automation editor UI, each {% term condition %} and {% term action %} can be tested individually. Select the three dots menu, then the **Test** button.
|
||||
|
||||
- Testing a condition will highlight it to show whether the condition passed at the moment it was tested. If all conditions pass, then the automation will run when triggered. Testing building blocks like an **and** condition will report whether the whole block registers as true or false, or you can test individual conditions within the building block.
|
||||
|
||||
- Testing an action block will run that block immediately.
|
||||
|
||||
Note that complex automations that depend on previous blocks, such as trigger IDs, variables in templates, or service calls that return data to use in subsequent blocks, cannot be tested this way.
|
||||
|
||||
If you are writing automations in YAML, it is also useful to go to {% my server_controls title="**Developer tools** > **YAML**" %}** and in the Configuration validation section, select the **Check configuration** button. This is to make sure there are no syntax errors before restarting Home Assistant. In order for **Check configuration** to be visible, you must enable **Advanced Mode** on {% my profile title="your user profile" %}.
|
||||
|
||||
## Traces
|
||||
|
||||
When an {% term automation %} is run, all steps are recorded and a trace is made. From the UI, open **Settings**, which is located in the sidebar, then select **Automations & Scenes** to go to the automation editor or click this button directly: {% my automations badge %}
|
||||
|
||||
Click on the clock icon next to an automation to enter the debugging screen. Alternatively, click on **Show trace** directly from a Logbook automation entry.
|
||||
From the automation editor UI, or in the automations list in the three dots menu, select **Traces**. Alternatively, select an automation entry shown in the Logbook.
|
||||
|
||||

|
||||
|
||||
The above screenshot shows a previous run of an automation. The automation is displayed using an interactive graph, highlighting which path the automation took. Each node in the graph can be clicked to view the details on what happened with the automation during that specific step. It traces the complete run of an automation.
|
||||
|
||||
The debugging screen is split into four features, the first being the Step Details which provides all details for each step of the automation. The second feature is the Trace Timeline which the screenshot above shows and where the automation can be followed on a timeline. The next is Related logbook entries, as the name says a logbook for all the entries related to the specific trace. The last two features are Automation Config and optionally Blueprint Config for the automation YAML code.
|
||||
The right side of the trace screen has tabs with more information:
|
||||
|
||||
- **Step Details** shows data and results of the step that is currently highlighted.
|
||||
- **Automation Config** shows the full YAML configuration at the time the automation was run.
|
||||
- **Trace Timeline**, shown in the screenshot above, lists the steps that were executed and their timing.
|
||||
- **Related logbook entries**, shows a logbook for all the entries related to the specific trace.
|
||||
- **Blueprint Config** will only be shown if the automation was created from a {% term blueprint %}.
|
||||
|
||||
The top bar shows the date and time the automation was triggered. Use the left and right arrows to view previous runs of the automation.
|
||||
|
||||
Automations created in YAML must have an [`id`](/docs/automation/yaml/#migrating-your-yaml-automations-to-automationsyaml) assigned in order for debugging traces to be stored.
|
||||
|
||||
#### Traces
|
||||
### Trace configuration
|
||||
|
||||
The last 5 traces are recorded for all automations. It is possible to change this by adding the following code to your automation.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
trace:
|
||||
stored_traces: 1
|
||||
stored_traces: 20
|
||||
```
|
||||
|
||||
[template]: /docs/configuration/templating/
|
||||
{% endraw %}
|
||||
|
||||
## Testing your automation
|
||||
## Testing templates
|
||||
|
||||
It is generally a difficult task to test an automation, especially if it includes several triggers and some conditions.
|
||||
If your automation uses [templates](/docs/configuration/templating/) in any part, you can do the following to make sure it works as expected:
|
||||
|
||||
Please note that if you click on **Trigger** of an automation in the frontend, **only the `action` part will be executed** by Home Assistant. That means you **can't** test your trigger or condition part that way. It also means that if your automation uses some data from triggers, it won't work properly as well just because `trigger` is not defined in this scenario.
|
||||
|
||||
All this makes that Trigger feature pretty limited and nearly useless for debugging purposes so you need to find another way.
|
||||
Make sure you check and adapt to your circumstances appropriate examples from Automation Trigger, Conditions and Actions.
|
||||
|
||||
It is also useful to go to **{% my server_controls title="Developer Tools -> YAML" %}** and click on **Check Configuration** button in Configuration validation section to make sure there are no syntax errors before restarting Home Assistant. In order for **Check configuration** to be visible, you must enable **Advanced Mode** on {% my profile title="your user profile" %}.
|
||||
|
||||
If your automation uses templates in any part, you can do the following to make sure it works as expected:
|
||||
|
||||
1. Go to **{% my developer_template title="Developer tools -> Template" %}** tab.
|
||||
1. Go to {% my developer_template title="**Developer tools** > **Template**" %} tab.
|
||||
2. Create all variables (sources) required for your template as described at the end of [this](https://www.home-assistant.io/docs/configuration/templating/#processing-incoming-data) paragraph.
|
||||
3. Copy your template code and paste it in Template editor straight after your variables.
|
||||
4. If necessary, change your sources' value and check if the template works as you want and does not generate any errors.
|
||||
|
@ -3,7 +3,7 @@ title: "Database"
|
||||
description: "Details about the database used by Home Assistant."
|
||||
---
|
||||
|
||||
Home Assistant uses databases to store {% term events %} and parameters for history and tracking. The default database used is [SQLite](https://www.sqlite.org/) and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `<path to config dir>/home-assistant_v2.db`); however, other databases can be used. If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder` integration](/integrations/recorder/).
|
||||
Home Assistant uses databases to store {% term events %} and parameters for history and tracking. The default database used is [SQLite](https://www.sqlite.org/) and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `<path to config dir>/home-assistant_v2.db`); however, other databases can be used. If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder`](/integrations/recorder/) integration.
|
||||
|
||||
To work with SQLite database manually from the command-line, you will need an [installation](https://www.sqlitetutorial.net/download-install-sqlite/) of `sqlite3`. Alternatively [DB Browser for SQLite](https://sqlitebrowser.org/) provides a viewer for exploring the database data and an editor for executing SQL commands.
|
||||
First load your database with `sqlite3`:
|
||||
|
@ -19,6 +19,6 @@ Smart relays sit behind your "normal" switches and make them smart. It allows yo
|
||||
|
||||
## Devices with power (W) sensors
|
||||
|
||||
Some smart devices, such as air conditioning, boilers, and others, may provide a power sensor, measured in Watts. You can use the [Integration (Riemann sum integral) integration](/integrations/integration/#energy) to calculate the energy your device is using. You can then use the energy sensor in the Energy Dashboard, as individual devices.
|
||||
Some smart devices, such as air conditioning, boilers, and others, may provide a power sensor, measured in Watts. You can use the [Integration (Riemann sum integral) integration](/integrations/integration/#energy) to calculate the energy your device is using. You can then use the energy sensor in the Energy Dashboard, as individual devices. For information on setting up an entity for use in the **Energy** dashboard, refer to the [energy FAQ](/docs/energy/faq/#troubleshooting-missing-entities).
|
||||
|
||||
<img src='/images/docs/energy/devices.png' alt='Graphic showing energy flowing from the home to individual devices.' style='border: 0;box-shadow: none; display: block; max-height: 400px; margin: 0 auto;'>
|
||||
|
@ -5,9 +5,19 @@ description: "Learn how to add information about your water usage to Home Assist
|
||||
|
||||
Home Assistant allows you to track your water usage in the home energy management too.
|
||||
|
||||
Although water usage is not strictly "energy", it is still a valuable resource to track and monitor as it is often tightly coupled with energy usage (like gas). Additionally, it can help you reduce your ecological footprint by using less water.
|
||||
Although water usage is not strictly "energy", it is still a valuable resource to track and monitor as it is often tightly coupled with energy usage (like gas). Additionally, it can help you reduce your ecological footprint by using less water.
|
||||
|
||||
## Hardware
|
||||
### Home water meters
|
||||
|
||||
There are several ways to measure water usage in your home. Multiple methods exist for reading your water usage. Older water meters typically feature a common arrow or only display total consumption. For these meters, you may require an [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) with an ESP32 camera. While effective, this solution can be tedious to set up as it leans towards a DIY approach.
|
||||
|
||||
Newer water meters are equipped with a rotary disk that can be read using two methods. The first method utilizes light sensors, while the second method employs proximity sensors. The proximity sensor detects changes in the magnetic field, with each rotation of the disk representing one liter of water used. Meanwhile, the light sensor method operates on an autocorrelation technique, providing accuracy down to 100 milliliters instead of the traditional one-liter step.
|
||||
|
||||
For most water meters, the rotary encoder disk suffices the light sensor version. However, some older or specialized meters may necessitate the use of a proximity meter instead.
|
||||
|
||||
Home Assistant also has integrations build into the platform that connect with existing products
|
||||
|
||||
## Home Assistant integrations
|
||||
|
||||
Home Assistant will need to know the amount of water that is being consumed to be able to track usage. Several [water metering (fluid flow rate sensor device)](https://en.wikipedia.org/wiki/Water_metering) hardware options are available to do this. Depending on your setup, the required hardware is provided by your public water utility company, or you may need to buy your own.
|
||||
|
||||
@ -18,7 +28,6 @@ We have the following integrations available for existing products that can prov
|
||||
- [Flo](/integrations/flo)
|
||||
- [Flume](/integrations/flume)
|
||||
- [HomeWizard Energy](/integrations/homewizard)
|
||||
- [P1 Monitor](/integrations/p1_monitor)
|
||||
- [StreamLabs](/integrations/streamlabswater)
|
||||
- [Suez Water](/integrations/suez_water)
|
||||
|
||||
@ -28,20 +37,29 @@ There are also products for water usage monitoring that are based on existing co
|
||||
- [Zigbee](/integrations/zha)
|
||||
- [Matter (BETA)](/integrations/matter)
|
||||
|
||||
Alternatively, the following shops sell ESPHome-based devices, that use a proximity sensor to detect a rotating magnet in your water meter and use that pulse to count each liter of water used.
|
||||
|
||||
- [S0tool](https://huizebruin.github.io/s0tool/) ("Made for ESPHome" approved)
|
||||
## Community-made sensors
|
||||
|
||||
If your water meter lacks a rotary disk, magnetic disk, or coil. There are alternative solutions available to seamlessly integrate water monitoring into your smart home setup:
|
||||
|
||||
- [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.:
|
||||
- [Muino water meter reader](https://watermeter.muino.nl/) (ESPHome)
|
||||
|
||||
Alternatively, the following shops sell ESPHome-based devices, that use a proximity sensor to detect a rotating magnet in your water meter and use that pulse to count each liter of water used:
|
||||
- [S0tool](https://s0tool.nl/) ("Made for ESPHome" approved)
|
||||
- [Waterlezer dongle](https://smart-stuff.nl/product/esphome-waterlezer-dongle/) (Dutch)
|
||||
- [Slimme Watermeter Gateway](https://smartgateways.nl/product/slimme-watermeter-gateway/) (Dutch)
|
||||
- [watermeterkit.nl](https://watermeterkit.nl/) (Dutch)
|
||||
|
||||
Alternatively, the following shops sell ESPHome-based devices that use a 3-phase light sensor to detect a rotating disk in your water meter and convert this to the amount of water used in milliliters (ml).
|
||||
- [Muino water meter reader](https://watermeter.muino.nl/)
|
||||
## DIY
|
||||
|
||||
Maybe you like to build one yourself?
|
||||
- Pieter Brinkman has quite a [nice blog article on how to create your own water sensor](https://www.pieterbrinkman.com/2022/02/02/build-a-cheap-water-usage-sensor-using-esphome-home-assistant-and-a-proximity-sensor/) using ESPHome, or [build a water meter](https://www.ztatz.nl/p1-monitor-watermeter/) that works with the [P1 Monitor](/integrations/p1_monitor) integration.
|
||||
- [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.
|
||||
- [watermeter](https://github.com/nohn/watermeter) running classic OCR and statistical pattern recognition on any system supporting Docker
|
||||
- Pieter Brinkman has quite a [nice blog article on how to create your own water sensor](https://www.pieterbrinkman.com/2022/02/02/build-a-cheap-water-usage-sensor-using-esphome-home-assistant-and-a-proximity-sensor/) using ESPHome, or [build a water meter](https://www.ztatz.nl/p1-monitor-watermeter/) that works with the [P1 Monitor](/integrations/p1_monitor) integration.
|
||||
- [AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant Discovery Functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways.
|
||||
- [watermeter](https://github.com/nohn/watermeter) running classic OCR and statistical pattern recognition on any system supporting Docker
|
||||
- [Muino water meter reader 3-phase](https://muino.nl/product/3-phase-muino-light-sensor-encoder/) Using the 3-phase sensor technique, a battery-powered version can be possible with this sensor.
|
||||
|
||||
If you manually integrate your sensors, for example, using the [MQTT](/integrations/mqtt) or [RESTful](/integrations/rest) integrations: Make sure you set and provide the `device_class`, `state_class`, and `unit_of_measurement` for those sensors.
|
||||
|
||||
|
@ -9,7 +9,7 @@ or need to recover your data.
|
||||
## Forgot user name
|
||||
|
||||
If you’ve forgotten your username, ask the owner to help you.
|
||||
If you are the owner and have forgotten your user name, then you need to [prepare the system to start a new onboarding process](/docs/locked_out/#to-prepare-the-system-to-start-a-new-onboarding-process).
|
||||
If you are using the Home Assistant Operating System and have access to the Home Assistant server, you can connect a terminal and enter the `auth list` command. This command lists all users that are registered on your Home Assistant.
|
||||
|
||||
## Forgot password
|
||||
|
||||
@ -131,3 +131,9 @@ For Windows or macOS you will need third party software. Below are some options.
|
||||
|
||||
- Windows: <https://www.diskinternals.com/linux-reader/> (read-only access to the SD)
|
||||
- macOS: <https://osxfuse.github.io/>
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Reset the Green](https://green.home-assistant.io/guides/reset/)
|
||||
- [Reset the Yellow](https://yellow.home-assistant.io/guides/factory-reset/)
|
||||
- [Listing all user names via command line](/common-tasks/os/#listing-all-users-from-the-command-line)
|
@ -7,11 +7,13 @@ no_toc: true
|
||||
|
||||
Scripts are a sequence of {% term actions %} that Home Assistant will execute. Scripts are available as an entity through the standalone [Script integration] but can also be embedded in {% term automations %} and [Alexa/Amazon Echo] configurations.
|
||||
|
||||
When the script is executed within an automation the `trigger` variable is available. See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data).
|
||||
When the script is executed within an {% term automation %}, the `trigger` variable is available. See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data).
|
||||
|
||||
The script syntax basic structure is a list of key/value maps that contain actions. If a script contains only 1 action, the wrapping list can be omitted.
|
||||
## Script syntax
|
||||
|
||||
All actions support an optional `alias`.
|
||||
The script syntax basic structure is a list of key/value maps that contain {% term actions %}. If a script contains only 1 {% term action %}, the wrapping list can be omitted.
|
||||
|
||||
All {% term actions %} support an optional `alias`.
|
||||
|
||||
```yaml
|
||||
# Example script integration containing script syntax
|
||||
@ -31,9 +33,9 @@ script:
|
||||
|
||||
{{ page.content | markdownify | toc_only }}
|
||||
|
||||
## Call a Service
|
||||
## Call a service
|
||||
|
||||
The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the [service calls page].
|
||||
The most important one is the action to call a {% term service %}. This can be done in various ways. For all the different possibilities, have a look at the [service calls page].
|
||||
|
||||
```yaml
|
||||
- alias: "Bedroom lights on"
|
||||
@ -44,9 +46,9 @@ The most important one is the action to call a service. This can be done in vari
|
||||
brightness: 100
|
||||
```
|
||||
|
||||
### Activate a Scene
|
||||
### Activate a scene
|
||||
|
||||
Scripts may also use a shortcut syntax for activating scenes instead of calling the `scene.turn_on` service.
|
||||
Scripts may also use a shortcut syntax for activating {% term scenes %} instead of calling the `scene.turn_on` service.
|
||||
|
||||
```yaml
|
||||
- scene: scene.morning_living_room
|
||||
@ -54,7 +56,7 @@ Scripts may also use a shortcut syntax for activating scenes instead of calling
|
||||
|
||||
## Variables
|
||||
|
||||
The variables action allows you to set/override variables that will be accessible by templates in actions after it. See also [script variables] for how to define variables accessible in the entire script.
|
||||
The variables {% term action %} allows you to set/override variables that will be accessible by templates in {% term action %} after it. See also [script variables] for how to define variables accessible in the entire script.
|
||||
|
||||
{% raw %}
|
||||
|
||||
@ -91,11 +93,11 @@ Variables can be templated.
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Scope of Variables
|
||||
### Scope of variables
|
||||
|
||||
Variables have local scope. This means that if a variable is changed in a nested sequence block, that change will not be visible in an outer sequence block.
|
||||
|
||||
Inside the `if` sequence the `variables` action will only alter the `people` variable for that sequence.
|
||||
Inside the `if` sequence the `variables` {% term action %} will only alter the `people` variable for that sequence.
|
||||
|
||||
{% raw %}
|
||||
|
||||
@ -125,13 +127,13 @@ sequence:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
## Test a Condition
|
||||
## Test a condition
|
||||
|
||||
While executing a script you can add a condition in the main sequence to stop further execution. When a condition does not return `true`, the script will stop executing. There are many different conditions which are documented at the [conditions page].
|
||||
While executing a script you can add a condition in the main sequence to stop further execution. When a condition does not return `true`, the script will stop executing. For documentation on the many different conditions refer to the [conditions page].
|
||||
|
||||
<div class='note'>
|
||||
|
||||
The `condition` action only stops executing the current sequence block. When it is used inside a [repeat](#repeat-a-group-of-actions) action, only the current iteration of the `repeat` loop will stop. When it is used inside a [choose](#choose-a-group-of-actions) action, only the actions within that `choose` will stop.
|
||||
The `condition` {% term action %} only stops executing the current sequence block. When it is used inside a [repeat](#repeat-a-group-of-actions) action, only the current iteration of the `repeat` loop will stop. When it is used inside a [choose](#choose-a-group-of-actions) action, only the {% term actions %} within that `choose` will stop.
|
||||
|
||||
</div>
|
||||
|
||||
@ -204,11 +206,11 @@ All forms accept templates.
|
||||
|
||||
## Wait
|
||||
|
||||
These actions allow a script to wait for entities in the system to be in a certain state as specified by a template, or some event to happen as expressed by one or more triggers.
|
||||
These {% term actions %} allow a script to wait for entities in the system to be in a certain state as specified by a template, or some event to happen as expressed by one or more triggers.
|
||||
|
||||
### Wait for a template
|
||||
|
||||
This action evaluates the template, and if true, the script will continue. If not, then it will wait until it is true.
|
||||
This {% term action %} evaluates the template, and if true, the script will continue. If not, then it will wait until it is true.
|
||||
|
||||
The template is re-evaluated whenever an entity ID that it references changes state. If you use non-deterministic functions like `now()` in the template it will not be continuously re-evaluated, but only when an entity ID that is referenced is changed. If you need to periodically re-evaluate the template, reference a sensor from the [Time and Date](/integrations/time_date/) integration that will update minutely or daily.
|
||||
|
||||
@ -224,7 +226,7 @@ The template is re-evaluated whenever an entity ID that it references changes st
|
||||
|
||||
### Wait for a trigger
|
||||
|
||||
This action can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires. All previously defined [trigger variables](/docs/automation/trigger#trigger-variables), [variables](#variables) and [script variables] are passed to the trigger.
|
||||
This {% term action %} can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires. All previously defined [trigger variables](/docs/automation/trigger#trigger-variables), [variables](#variables) and [script variables] are passed to the trigger.
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
@ -324,9 +326,9 @@ This can be used to take different actions based on whether or not the condition
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
## Fire an Event
|
||||
## Fire an event
|
||||
|
||||
This action allows you to fire an event. Events can be used for many things. It could trigger an automation or indicate to another integration that something is happening. For instance, in the below example it is used to create an entry in the logbook.
|
||||
This {% term action %} allows you to fire an event. Events can be used for many things. It could trigger an {% term automation %} or indicate to another integration that something is happening. For instance, in the below example it is used to create an entry in the logbook.
|
||||
|
||||
```yaml
|
||||
- alias: "Fire LOGBOOK_ENTRY event"
|
||||
@ -356,7 +358,7 @@ The `event_data` accepts templates.
|
||||
|
||||
### Raise and Consume Custom Events
|
||||
|
||||
The following automation example shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The action part could be inside a script or an automation.
|
||||
The following {% term automation %} example shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The {% term action %} part could be inside a script or an {% term automation %}.
|
||||
|
||||
```yaml
|
||||
- alias: "Fire Event"
|
||||
@ -370,7 +372,7 @@ The following automation example shows how to raise a custom event called `event
|
||||
state: "on"
|
||||
```
|
||||
|
||||
The following automation example shows how to capture the custom event `event_light_state_changed` with an [Event Automation Trigger](/docs/automation/trigger#event-trigger), and retrieve corresponding `entity_id` that was passed as the event trigger data, see [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data) for more details.
|
||||
The following {% term automation %} example shows how to capture the custom event `event_light_state_changed` with an [Event Automation Trigger](/docs/automation/trigger#event-trigger), and retrieve corresponding `entity_id` that was passed as the event trigger data, see [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data) for more details.
|
||||
|
||||
{% raw %}
|
||||
|
||||
@ -389,7 +391,7 @@ The following automation example shows how to capture the custom event `event_li
|
||||
|
||||
## Repeat a group of actions
|
||||
|
||||
This action allows you to repeat a sequence of other actions. Nesting is fully supported.
|
||||
This {% term action %} allows you to repeat a sequence of other {% term actions %}. Nesting is fully supported.
|
||||
There are three ways to control how many times the sequence will be run.
|
||||
|
||||
### Counted repeat
|
||||
@ -566,7 +568,7 @@ For example:
|
||||
|
||||
### Repeat loop variable
|
||||
|
||||
A variable named `repeat` is defined within the repeat action (i.e., it is available inside `sequence`, `while` & `until`.)
|
||||
A variable named `repeat` is defined within the repeat {% term action %} (i.e., it is available inside `sequence`, `while` & `until`.)
|
||||
It contains the following fields:
|
||||
|
||||
field | description
|
||||
@ -577,7 +579,7 @@ field | description
|
||||
|
||||
## If-then
|
||||
|
||||
This action allow you to conditionally (`if`) run a sequence of actions (`then`)
|
||||
This {% term action %} allow you to conditionally (`if`) run a sequence of actions (`then`)
|
||||
and optionally supports running other sequence when the condition didn't
|
||||
pass (`else`).
|
||||
|
||||
@ -600,13 +602,13 @@ script:
|
||||
message: "Skipped cleaning, someone is home!"
|
||||
```
|
||||
|
||||
This action supports nesting, however, if you find yourself using nested if-then
|
||||
This {% term action %} supports nesting, however, if you find yourself using nested if-then
|
||||
actions in the `else` part, you may want to consider using
|
||||
[choose](#choose-a-group-of-actions) instead.
|
||||
|
||||
## Choose a Group of Actions
|
||||
## Choose a group of actions
|
||||
|
||||
This action allows you to select a sequence of other actions from a list of sequences.
|
||||
This {% term action %} allows you to select a sequence of other {% term actions %} from a list of sequences.
|
||||
Nesting is fully supported.
|
||||
|
||||
Each sequence is paired with a list of conditions. (See the [conditions page] for available options and how multiple conditions are handled.) The first sequence whose conditions are all true will be run.
|
||||
@ -614,7 +616,7 @@ An _optional_ `default` sequence can be included which will be run only if none
|
||||
|
||||
An _optional_ `alias` can be added to each of the sequences, excluding the `default` sequence.
|
||||
|
||||
The `choose` action can be used like an "if/then/elseif/then.../else" statement. The first `conditions`/`sequence` pair is like the "if/then", and can be used just by itself. Or additional pairs can be added, each of which is like an "elif/then". And lastly, a `default` can be added, which would be like the "else."
|
||||
The `choose` {% term action %} can be used like an "if/then/elseif/then.../else" statement. The first `conditions`/`sequence` pair is like the "if/then", and can be used just by itself. Or additional pairs can be added, each of which is like an "elif/then". And lastly, a `default` can be added, which would be like the "else."
|
||||
|
||||
{% raw %}
|
||||
|
||||
@ -696,7 +698,7 @@ automation:
|
||||
|
||||
More `choose` can be used together. This is the case of an IF-IF.
|
||||
|
||||
The following example shows how a single automation can control entities that aren't related to each other but have in common the same trigger.
|
||||
The following example shows how a single {% term automation %} can control entities that aren't related to each other but have in common the same trigger.
|
||||
|
||||
When the sun goes below the horizon, the `porch` and `garden` lights must turn on. If someone is watching the TV in the living room, there is a high chance that someone is in that room, therefore the living room lights have to turn on too. The same concept applies to the `studio` room.
|
||||
|
||||
@ -753,13 +755,13 @@ automation:
|
||||
|
||||
## Parallelizing actions
|
||||
|
||||
By default, all sequences of actions in Home Assistant run sequentially. This
|
||||
means the next action is started after the current action has been completed.
|
||||
By default, all sequences of {% term actions %} in Home Assistant run sequentially. This
|
||||
means the next {% term action %} is started after the current action has been completed.
|
||||
|
||||
This is not always needed, for example, if the sequence of actions doesn't rely
|
||||
on each other and order doesn't matter. For those cases, the `parallel` action
|
||||
can be used to run the actions in the sequence in parallel, meaning all
|
||||
the actions are started at the same time.
|
||||
can be used to run the {% term actions %} in the sequence in parallel, meaning all
|
||||
the {% term actions %} are started at the same time.
|
||||
|
||||
The following example shows sending messages out at the same time (in parallel):
|
||||
|
||||
@ -802,32 +804,32 @@ script:
|
||||
|
||||
<div class='note'>
|
||||
|
||||
Running actions in parallel can be helpful in many cases, but use it with
|
||||
Running {% term actions %} in parallel can be helpful in many cases, but use it with
|
||||
caution and only if you need it.
|
||||
|
||||
There are some caveats (see below) when using parallel actions.
|
||||
|
||||
While it sounds attractive to parallelize, most of the time, just the regular
|
||||
sequential actions will work just fine.
|
||||
sequential {% term actions %} will work just fine.
|
||||
|
||||
</div>
|
||||
|
||||
Some of the caveats of running actions in parallel:
|
||||
Some of the caveats of running {% term actions %} in parallel:
|
||||
|
||||
- There is no order guarantee. The actions will be started in parallel, but
|
||||
- There is no order guarantee. The {% term actions %} will be started in parallel, but
|
||||
there is no guarantee that they will be completed in the same order.
|
||||
- If one action fails or errors, the other actions will keep running until
|
||||
- If one {% term action %} fails or errors, the other {% term actions %} will keep running until
|
||||
they too have finished or errored.
|
||||
- Variables created/modified in one parallelized action are not available
|
||||
in another parallelized action. Each step in a parallelized has its own scope.
|
||||
- Variables created/modified in one parallelized {% term action %} are not available
|
||||
in another parallelized {% term action %}. Each step in a parallelized has its own scope.
|
||||
|
||||
## Stopping a script sequence
|
||||
|
||||
It is possible to halt a script sequence at any point and return script responses
|
||||
using the `stop` action.
|
||||
using the `stop` {% term action %}.
|
||||
|
||||
The `stop` action takes a text as input explaining the reason for halting the
|
||||
sequence. This text will be logged and shows up in the automations and
|
||||
The `stop` {% term action %} takes a text as input explaining the reason for halting the
|
||||
sequence. This text will be logged and shows up in the {% term automations %} and
|
||||
script traces.
|
||||
|
||||
`stop` can be useful to halt a script halfway through a sequence when,
|
||||
@ -847,7 +849,7 @@ response data must contains a mapping of key/value pairs.
|
||||
```
|
||||
|
||||
There is also an `error` option, to indicate we are stopping because of
|
||||
an unexpected error. It stops the sequence as well, but marks the automation
|
||||
an unexpected error. It stops the sequence as well, but marks the {% term automation %}
|
||||
or script as failed to run.
|
||||
|
||||
```yaml
|
||||
@ -857,20 +859,20 @@ or script as failed to run.
|
||||
|
||||
## Continuing on error
|
||||
|
||||
By default, a sequence of actions will be halted when one of the actions in
|
||||
that sequence encounters an error. The automation or script will be halted,
|
||||
an error is logged, and the automation or script run is marked as errored.
|
||||
By default, a sequence of {% term actions %} will be halted when one of the {% term actions %} in
|
||||
that sequence encounters an error. The {% term automation %} or script will be halted,
|
||||
an error is logged, and the {% term automation %} or script run is marked as errored.
|
||||
|
||||
Sometimes these errors are expected, for example, because you know the service
|
||||
you call can be problematic at times, and it doesn't matter if it fails.
|
||||
You can set `continue_on_error` for those cases on such an action.
|
||||
You can set `continue_on_error` for those cases on such an {% term action %}.
|
||||
|
||||
The `continue_on_error` is available on all actions and is set to
|
||||
`false`. You can set it to `true` if you'd like to continue the action
|
||||
sequence, regardless of whether that action encounters an error.
|
||||
The `continue_on_error` is available on all {% term actions %} and is set to
|
||||
`false`. You can set it to `true` if you'd like to continue the {% term action %}
|
||||
sequence, regardless of whether that {% term action %} encounters an error.
|
||||
|
||||
The example below shows the `continue_on_error` set on the first action. If
|
||||
it encounters an error; it will continue to the next action.
|
||||
The example below shows the `continue_on_error` set on the first {% term action %}. If
|
||||
it encounters an error; it will continue to the next {% term action %}.
|
||||
|
||||
```yaml
|
||||
- alias: "If this one fails..."
|
||||
@ -891,8 +893,8 @@ or errors that Home Assistant does not handle.
|
||||
|
||||
## Disabling an action
|
||||
|
||||
Every individual action in a sequence can be disabled, without removing it.
|
||||
To do so, add `enabled: false` to the action. For example:
|
||||
Every individual {% term action %} in a sequence can be disabled, without removing it.
|
||||
To do so, add `enabled: false` to the {% term action %}. For example:
|
||||
|
||||
```yaml
|
||||
# Example script with a disabled action
|
||||
@ -916,8 +918,8 @@ script:
|
||||
|
||||
## Respond to a conversation
|
||||
|
||||
The `set_conversation_response` script action allows returning a custom response
|
||||
when an automation is triggered by a conversation engine, for example a voice
|
||||
The `set_conversation_response` script {% term action %} allows returning a custom response
|
||||
when an {% term automation %} is triggered by a conversation engine, for example a voice
|
||||
assistant. The conversation response can be templated.
|
||||
|
||||
{% raw %}
|
||||
@ -931,7 +933,7 @@ assistant. The conversation response can be templated.
|
||||
|
||||
{% endraw %}
|
||||
|
||||
The response is handed to the conversation engine when the automation finishes. If
|
||||
The response is handed to the conversation engine when the {% term automation %} finishes. If
|
||||
the `set_conversation_response` is executed multiple times, the most recent
|
||||
response will be handed to the conversation engine. To clear the response, set it
|
||||
to `None`:
|
||||
@ -941,7 +943,7 @@ to `None`:
|
||||
set_conversation_response: ~
|
||||
```
|
||||
|
||||
If the automation was not triggered by a conversation engine, the response
|
||||
If the {% term automation %} was not triggered by a conversation engine, the response
|
||||
will not be used by anything.
|
||||
|
||||
[Script integration]: /integrations/script/
|
||||
|
@ -28,7 +28,7 @@ Instead of targeting an entity, you can also target an {% term area %} or {% ter
|
||||
This is done with the `target` key.
|
||||
|
||||
A `target` is a map that contains at least one of the following: `area_id`, `device_id`, `entity_id`.
|
||||
Each of these can be a list.
|
||||
Each of these can be a list. The values should be lower-cased.
|
||||
|
||||
The following example uses a single service call to turn on the lights in the
|
||||
living room area, 2 additional light devices and 2 additional light entities:
|
||||
|
@ -100,7 +100,25 @@ Use "ha [command] --help" for more information about a command.
|
||||
```
|
||||
|
||||
{% if page.installation == "os" %}
|
||||
|
||||
### Console access
|
||||
|
||||
You can also access the Home Assistant Operating System via a directly connected keyboard and monitor, the console.
|
||||
|
||||
#### Wiping the data disk wipe from the command line
|
||||
|
||||
In Home Assistant Operating System, the `ha os datadisk wipe` command wipes the data disk. The command deletes all user data as well as Home Assistant Core, Supervisor, and any installed add-ons.
|
||||
|
||||
The command `ha os datadisk wipe` marks the data partition (either internal on the eMMC or the SD card, or on an external attached data disk) as to be cleared on the next reboot. The command automatically reboots the system. Upon reboot, the data is cleared. Then the system continues to boot and reinstalls the latest version of all Home Assistant components.
|
||||
|
||||
The `ha os datadisk wipe` command can only be run from the local terminal. Connect a display and keyboard and use the terminal.
|
||||
|
||||
Note, if you have a Home Assistant Yellow, there is a red hardware button to wipe the data disk. Follow the procedure on [resetting the device](https://yellow.home-assistant.io/guides/factory-reset/).
|
||||
|
||||
#### Listing all users from the command line
|
||||
|
||||
In Home Assistant Operating System, the `ha auth list` command lists all users that are registered on your Home Assistant.
|
||||
|
||||
The `ha auth list` command can only be run from the local terminal. Connect a display and keyboard and use the terminal.
|
||||
|
||||
{% endif %}
|
||||
|
@ -9,4 +9,4 @@ To add the {{ title | downcase }} to your user interface:
|
||||
- By editing the dashboard, you are taking over control of this dashboard.
|
||||
- This means that it is no longer automatically updated when new dashboard elements become available.
|
||||
- To continue, in the dialog, select the three dots menu, then select **Take control**.
|
||||
2. In the bottom right corner, select the **Add card** button and select from the card picker.
|
||||
2. [Add a card](/dashboards/cards/#adding-cards-to-your-dashboard) to your dashboard.
|
||||
|
@ -5,6 +5,11 @@
|
||||
|
||||
**Building block integration**
|
||||
|
||||
The {{ name | downcase }} integration cannot be directly used. You cannot create your own {{ domain | replace: "_", " " }} entities using this integration. This integration is a building block for other integrations to use, enabling them to create {{ domain | replace: "_", " " }} entities for you.
|
||||
This {{ name | downcase }} is a building block integration that cannot be added to your Home Assistant directly but is used and provided by other integrations.
|
||||
|
||||
A building block integration differs from the typical integration that connects to a device or service. Instead, other integrations that do integrate a device or service into Home Assistant use this {{ name | downcase }} building block to provide entities, services, and other functionality that you can use in your automations or dashboards.
|
||||
|
||||
If one of your integrations features this building block, this page documents the functionality the {{ name | downcase }} building block offers.
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -21,7 +21,7 @@ The sensor value shows the number of packages that are not in `Delivered` state.
|
||||
To use this sensor, you need an [AfterShip Account](https://accounts.aftership.com/register) and set up an API Key. To set up an API Key go to [AfterShip API](https://admin.aftership.com/settings/api-keys) page, and copy existing key or generate a new one.
|
||||
|
||||
<div class='note info'>
|
||||
AfterShip recently removed the tracking API functionality from the Forever Free plan. The tracking API functionality requires at least the Essentials plan.
|
||||
AfterShip removed the Tracking API functionality from the Forever Free plan, and also no longer offers it in the Essentials plan. Using this integration now requires at least the [Pro](https://www.aftership.com/pricing/tracking) plan.
|
||||
</div>
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
@ -75,7 +75,9 @@ foreign_exchange:
|
||||
|
||||
## API information
|
||||
|
||||
Alpha Vantage offers two tiers of the API key, one free and one paid for. If you are using the free version you will be limited to five queries per minute. This means that you'll likely only be able to have one or two ticker entries. The paid version starts at thirty queries per minute increasing ticker quantity quite a bit.
|
||||
Alpha Vantage offers two tiers of the API key, one free and one paid for. If you are using the free version, you will be limited to twenty-five queries per day. The sensor polls every 5 minutes, so you will only get data for the first two hours per day.
|
||||
|
||||
The paid version starts at 75 queries per minute, increasing ticker quantity quite a bit.
|
||||
|
||||
## Examples
|
||||
|
||||
|
@ -15,8 +15,15 @@ ha_platforms:
|
||||
- todo
|
||||
---
|
||||
|
||||
The **Bring** integration allows you to interact with your [Bring!](https://www.getbring.com/) shopping lists within Home Assistant.
|
||||
The **Bring!** integration allows you to interact with your [Bring!](https://www.getbring.com/) shopping lists within Home Assistant.
|
||||
|
||||
For authentication, the integration requires the `email` and `password` you used for your Bring! account. If you want to automatically receive notifications via the Bring! app when Home Assistant adds or removes an item from the list, you should use a dedicated account (such as `email: your.name+ha@gmail.com`) to connect Home Assistant with [Bring!](https://www.getbring.com/).
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Bring!](https://www.getbring.com/)
|
||||
- [To-do list integration documentation](/integrations/todo)
|
||||
- [List of to-do list integrations](/integrations/#to-do-list)
|
||||
- [To-do list card](/dashboards/todo-list/)
|
@ -14,7 +14,7 @@ ha_integration_type: integration
|
||||
ha_config_flow: true
|
||||
---
|
||||
|
||||
The CalDAV integration allows you to connect your WebDAV calendar to Home Assistant
|
||||
The **CalDAV** integration allows you to connect your WebDAV calendar to Home Assistant
|
||||
as one of these entity types:
|
||||
|
||||
- A [calendar](/integrations/calendar) entity which can be used to trigger automations based on the start or end of an event using criteria such as the event name or description.
|
||||
@ -203,3 +203,13 @@ to generate a new password for use by Home Assistant to avoid sharing your iClou
|
||||
password.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Calendar](/integrations/calendar)
|
||||
|
||||
### To-do list
|
||||
|
||||
- [To-do list integration documentation](/integrations/todo)
|
||||
- [List of to-do list integrations](/integrations/#to-do-list)
|
||||
- [To-do list card](/dashboards/todo-list/)
|
@ -2,7 +2,13 @@
|
||||
title: Comelit SimpleHome
|
||||
description: Instructions on how to integrate Comelit SimpleHome home automation devices into Home Assistant.
|
||||
ha_category:
|
||||
- Alarm
|
||||
- Climate
|
||||
- Cover
|
||||
- Humidifier
|
||||
- Light
|
||||
- Sensor
|
||||
- Switch
|
||||
ha_release: '2023.9'
|
||||
ha_domain: comelit
|
||||
ha_config_flow: true
|
||||
|
@ -183,12 +183,12 @@ Delete a vacation on the selected ecobee thermostat.
|
||||
|
||||
### Service `ecobee.resume_program`
|
||||
|
||||
Resumes the currently active schedule.
|
||||
Resumes the standard active schedule of presets. This cancels any manual temperature settings or selected preset. This will not cancel vacation events, use `delete_vacation`.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Use `entity_id: all` to target all. |
|
||||
| `resume_all` | no | true or false |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`s of climate devices to control. Omit to target all ecobee thermostats. |
|
||||
| `resume_all` | no | `true` will resume the standard schedule. `false` will only cancel the latest active event, which is not used often. |
|
||||
|
||||
### Service `ecobee.set_fan_min_on_time`
|
||||
|
||||
@ -196,7 +196,7 @@ Sets the minimum amount of time that the fan will run per hour.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Use `entity_id: all` to target all. |
|
||||
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of climate devices to control. Omit to target all ecobee thermostats. |
|
||||
| `fan_min_on_time` | no | integer (e.g., 5) |
|
||||
|
||||
### Service `ecobee.set_dst_mode`
|
||||
@ -205,7 +205,7 @@ Enable/disable automatic daylight savings time.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------ |
|
||||
| `entity_id` | yes | ecobee thermostat on which to set daylight savings time mode |
|
||||
| `entity_id` | yes | ecobee thermostat on which to set daylight savings time mode. Omit to target all ecobee thermostats. |
|
||||
| `dst_enabled` | no | true or false |
|
||||
|
||||
### Service `ecobee.set_mic_mode`
|
||||
@ -214,7 +214,7 @@ Enable/disable Alexa mic (only for ecobee 4).
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------- |
|
||||
| `entity_id` | yes | ecobee thermostat on which to set the mic mode |
|
||||
| `entity_id` | yes | ecobee thermostat on which to set the mic mode. Omit to target all ecobee thermostats. |
|
||||
| `mic_enabled` | no | true or false |
|
||||
|
||||
### Service `ecobee.set_occupancy_modes`
|
||||
@ -223,6 +223,6 @@ Enable/disable Smart Home/Away and Follow Me modes.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------- |
|
||||
| `entity_id` | yes | ecobee thermostat on which to set occupancy modes |
|
||||
| `entity_id` | yes | ecobee thermostat on which to set occupancy modes. Omit to target all ecobee thermostats. |
|
||||
| `auto_away` | yes | true or false |
|
||||
| `follow_me` | yes | true or false |
|
||||
|
@ -142,7 +142,7 @@ Finally, if a vacuum becomes unavailable (usually due to being idle and off its
|
||||
## Self-hosted configuration
|
||||
|
||||
Depending on your setup of the self-hosted instance, you can connect to the server using the following settings:
|
||||
- `Username`: Enter the e-mail address configured in your instance. If authentication is disabled, you can enter any valid e-mail address.
|
||||
- `Username`: Enter the email address configured in your instance. If authentication is disabled, you can enter any valid email address.
|
||||
- `Password`: Enter the password configured in your instance. If authentication is disabled, you can enter any string (series of characters).
|
||||
- `REST URL`: http://`SELF_HOSTED_INSTANCE`:8007
|
||||
- `MQTT URL`: mqtts://`SELF_HOSTED_INSTANCE`:8883
|
||||
|
@ -124,6 +124,12 @@ The following is an example implementation of an automation:
|
||||
entity_id: media_player.amplifier
|
||||
```
|
||||
|
||||
### Video tutorial
|
||||
|
||||
This comprehensive video tutorial explains how events work in Home Assistant and how you can set up Emulated Roku to control a media player using a physical remote control.
|
||||
|
||||
<lite-youtube videoid="nDHh1OjyuMA" videotitle="Event Triggers Unveiled: Control the Home Assistant Media Player with Your Remote Control!" posterquality="maxresdefault"></lite-youtube>
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you change your advertised IP or ports, you will have to re-add the emulated Roku in your app.
|
||||
|
@ -83,3 +83,9 @@ The following device classes are supported by event entities:
|
||||
- **button**: For remote control buttons.
|
||||
- **doorbell**: Specifically for buttons that are used as a doorbell.
|
||||
- **motion**: For motion events detected by a motion sensor.
|
||||
|
||||
### Video tutorial
|
||||
|
||||
This comprehensive video tutorial explains how events work in Home Assistant and how you can set up Emulated Roku to control a media player using a physical remote control.
|
||||
|
||||
<lite-youtube videoid="nDHh1OjyuMA" videotitle="Event Triggers Unveiled: Control the Home Assistant Media Player with Your Remote Control!" posterquality="maxresdefault"></lite-youtube>
|
||||
|
@ -2,7 +2,7 @@
|
||||
title: Freebox
|
||||
description: Instructions on how to integrate Freebox routers into Home Assistant.
|
||||
ha_category:
|
||||
- Alarm Control Panel
|
||||
- Alarm
|
||||
- Camera
|
||||
- Network
|
||||
- Presence detection
|
||||
|
@ -2,6 +2,7 @@
|
||||
title: Google Assistant SDK
|
||||
description: Instructions on how to use Google Assistant SDK in Home Assistant.
|
||||
ha_category:
|
||||
- Notifications
|
||||
- Voice
|
||||
ha_iot_class: Cloud Polling
|
||||
ha_release: 2023.1
|
||||
|
@ -89,6 +89,6 @@ data:
|
||||
|
||||
### Video tutorial
|
||||
|
||||
This video tutorial explains how to set up Gmail in Home Assistant and how you can create a dashboard and automations to send e-mail and toggle your out-of-office notice.
|
||||
This video tutorial explains how to set up Gmail in Home Assistant and how you can create a dashboard and automations to send email and toggle your out-of-office notice.
|
||||
|
||||
<lite-youtube videoid="IHKliqSFZvM" videotitle="How To send e-mail PERFECTLY using Gmail in Home Assistant - Tutorial" posterquality="maxresdefault"></lite-youtube>
|
||||
|
@ -19,7 +19,7 @@ each task list, allowing you to create, update, or delete items on the list from
|
||||
|
||||
<div class='note'>
|
||||
|
||||
The Google Tasks public API does not support viewing or setting the due time of tasks, only the due date.
|
||||
The Google Tasks public API does not support viewing or setting the due time of tasks, only the due date.
|
||||
|
||||
</div>
|
||||
|
||||
@ -78,3 +78,14 @@ The integration setup will next give you instructions to enter the [Application
|
||||
## Troubleshooting
|
||||
|
||||
If you have an error with your credentials, you can delete them in the [Application Credentials](/integrations/application_credentials/) user interface.
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Google Tasks](https://support.google.com/tasks/answer/7675772)
|
||||
- [Google Developers Console](https://console.cloud.google.com/apis/library/tasks.googleapis.com)
|
||||
|
||||
### To-do list
|
||||
|
||||
- [To-do list integration documentation](/integrations/todo)
|
||||
- [List of to-do list integrations](/integrations/#to-do-list)
|
||||
- [To-do list card](/dashboards/todo-list/)
|
@ -13,7 +13,7 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/room-thermostats/) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP.
|
||||
The `heatmiser` climate platform lets you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/room-thermostats/) thermostats from Heatmiser. The module itself is currently set up to work over a RS232 -> RS485 converter, therefore it connects over IP.
|
||||
|
||||
Further work would be required to get this setup to connect over Wi-Fi, but the HeatmiserV3 Python module being used is a full implementation of the V3 protocol.
|
||||
|
||||
|
@ -37,7 +37,7 @@ sensor:
|
||||
entity_id: light.my_lamp
|
||||
state: "on"
|
||||
type: time
|
||||
start: "{{ now().replace(hour=0, minute=0, second=0) }}"
|
||||
start: "{{ today_at() }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -147,7 +147,7 @@ Here are some examples of periods you could work with, and what to write in your
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}"
|
||||
start: "{{ today_at() }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -158,7 +158,7 @@ Here are some examples of periods you could work with, and what to write in your
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
end: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}"
|
||||
end: "{{ today_at() }}"
|
||||
duration:
|
||||
hours: 24
|
||||
```
|
||||
@ -170,7 +170,7 @@ Here are some examples of periods you could work with, and what to write in your
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ now().replace(hour=6, minute=0, second=0, microsecond=0) }}"
|
||||
start: "{{ today_at('06:00') }}"
|
||||
duration:
|
||||
hours: 5
|
||||
```
|
||||
@ -179,12 +179,12 @@ Here are some examples of periods you could work with, and what to write in your
|
||||
|
||||
**Current week**: starts last Monday at 00:00, ends right now.
|
||||
|
||||
Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekday (86400 is the number of seconds in one day, the weekday is 0 on Monday, 6 on Sunday).
|
||||
Here, last Monday is today at 00:00, minus the current weekday (the weekday is 0 on Monday, 6 on Sunday).
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ as_timestamp( now().replace(hour=0, minute=0, second=0, microsecond=0) ) - now().weekday() * 86400 }}"
|
||||
start: "{{ today_at() - timedelta(days=now().weekday()) }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -195,7 +195,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ now().replace(day=1, hour=0, minute=0, second=0, microsecond=0 ) }}"
|
||||
start: "{{ today_at().replace(day=1) }}"
|
||||
end: "{{ now() }}"
|
||||
```
|
||||
|
||||
@ -206,8 +206,8 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
start: "{{ now().replace(day=1, month=now().month-1, hour=0, minute=0, second=0, microsecond=0) }}"
|
||||
end: "{{ now().replace(day=1, hour=0, minute=0, second=0, microsecond=0) }}"
|
||||
start: "{{ (today_at().replace(day=1) - timedelta(days=1)).replace(day=1) }}"
|
||||
end: "{{ today_at().replace(day=1) }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
@ -217,7 +217,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
end: "{{ (now().replace(minute=0, second=0, microsecond=0) + timedelta(hours=8)).replace(hour=16) }}"
|
||||
end: "{{ (now() + timedelta(hours=8)).replace(hour=16, minute=0, second=0, microsecond=0) }}"
|
||||
duration:
|
||||
hours: 24
|
||||
```
|
||||
@ -229,7 +229,7 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
end: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}"
|
||||
end: "{{ today_at() }}"
|
||||
duration:
|
||||
days: 30
|
||||
```
|
||||
|
@ -66,7 +66,7 @@ Sensors for P1 meter, only available when smart meter exposes these values:
|
||||
- **Power failures**: Two sensors that indicate the number of power failures that have been detected by the smart meter. One for all power failures and another for 'long' power failures.
|
||||
- **Peak demand**: Belgium users are starting to get charged for the peak usage per month (see [capaciteitstarief](https://www.fluvius.be/thema/factuur-en-tarieven/capaciteitstarief)). Two sensors are available: One that shows the current quarterly average and another that shows the peak measured this month. Both these sensors are provided directly from the smart meter and can be used to keep the peak as low as possible.
|
||||
|
||||
Sensors for kWh meter:
|
||||
Sensors for Energy Socket and kWh meter:
|
||||
- **Voltage (V)**: Active voltage that is measured on each phase.
|
||||
- **Current (A)**: Active current that is measured on each phase.
|
||||
- **Frequency (Hz)**: Net frequency.
|
||||
|
@ -42,7 +42,7 @@ vapid_prv_key:
|
||||
required: true
|
||||
type: string
|
||||
vapid_email:
|
||||
description: The e-mail account of your Google account associated with your Firebase project, [see configuring the platform](#configuring-the-platform).
|
||||
description: The email account of your Google account associated with your Firebase project, [see configuring the platform](#configuring-the-platform).
|
||||
required: true
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
@ -105,6 +105,7 @@ Resume suspended integration.
|
||||
Devices we know to be working with this integration based on the [documentation of used libraries](https://github.com/Salamek/huawei-lte-api/#huawei-lte-api) and reports by users:
|
||||
|
||||
- Huawei B310s-22
|
||||
- Huawei B315s-936
|
||||
- Huawei B525s-23a
|
||||
- Huawei E5186s-22a
|
||||
- Huawei B618
|
||||
|
@ -68,7 +68,7 @@ This service will play the Lost iPhone sound on your iDevice. It will still ring
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|---------------------------------------------------------|
|
||||
| `account` | no | E-mail address of the iCloud account |
|
||||
| `account` | no | Email address of the iCloud account |
|
||||
| `device_name` | no | Human Friendly device name like Bob's iPhone |
|
||||
|
||||
### Service `icloud.display_message`
|
||||
|
@ -50,5 +50,5 @@ Example values include:
|
||||
| Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) |
|
||||
| Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) |
|
||||
| Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) |
|
||||
| Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) |
|
||||
| Sulfur Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) |
|
||||
| Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) |
|
||||
|
@ -44,7 +44,7 @@ timeout:
|
||||
|
||||
You create your API token on the LIFX website:
|
||||
1. Sign in to the [LIFX Cloud](https://cloud.lifx.com/)
|
||||
2. Click on your e-mail address and select _Personal Access Tokens_
|
||||
2. Click on your email address and select _Personal Access Tokens_
|
||||
3. Now click _Generate New Token_
|
||||
4. Enter a meaningful label, such as 'Home Assistant'
|
||||
5. Click _Generate_
|
||||
|
@ -363,7 +363,7 @@ state_topic:
|
||||
required: false
|
||||
type: string
|
||||
state_value_template:
|
||||
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the state value. The template should match the payload `on` and `off` values, so if your light uses `power on` to turn on, your `state_value_template` string should return `power on` when the switch is on. For example if the message is just `on`, your `state_value_template` should be `power {{ value }}`."
|
||||
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the state value. The template should return the `payload_on` and `payload_off` values, so if your light uses `power on` to turn on, your `state_value_template` string should return `power on` when the switch is on. For example, if the message is just `on`, your `state_value_template` should be `power {{ value }}`. When your `payload_on = 27`, `payload_off = 'off'`, then this template might be `'off' if value_json.my_custom_brightness_field <= 0 else 27`."
|
||||
required: false
|
||||
type: template
|
||||
unique_id:
|
||||
|
@ -41,7 +41,7 @@ api_key:
|
||||
required: true
|
||||
type: string
|
||||
to:
|
||||
description: E-Mail address the Automate-Fiber is configured for.
|
||||
description: Email address the Automate-Fiber is configured for.
|
||||
required: true
|
||||
type: string
|
||||
device:
|
||||
@ -71,7 +71,7 @@ Receiving cloud messages in Automate:
|
||||
4. Connect OK from Flow beginning to IN of Cloud receive
|
||||
5. Connect OK from Cloud receive to Toast show
|
||||
6. Connect OK form Toast show to IN of Cloud receive
|
||||
7. Tap Cloud receive and select the E-Mail account as setup in your configuration
|
||||
7. Tap Cloud receive and select the email account as setup in your configuration
|
||||
8. Assign a variable name for the Payload
|
||||
9. Tap Toast show and set the message value to the variable you've specified
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Local To-do
|
||||
title: Local to-do
|
||||
description: Instructions on how to use local to-do lists in Home Assistant.
|
||||
ha_category:
|
||||
- To-do list
|
||||
@ -22,3 +22,8 @@ See the [**To-do list** integration](/integrations/todo) for additional details
|
||||
about to-do list entities.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [**To-do list** integration](/integrations/todo)
|
||||
- [To-do list card](/dashboards/todo-list/)
|
@ -32,7 +32,7 @@ On the [LOQED personal access token website](https://integrations.production.loq
|
||||
|
||||
{% details "Generate access token" %}
|
||||
|
||||
1. Login with your LOQED App e-mail address (you need to be an admin).
|
||||
1. Login with your LOQED App email address (you need to be an admin).
|
||||
2. Select **Create**.
|
||||
3. Give your personal access token a name (this will not be used further on, but we recommend something like "Home Assistant" to recognize it as used by Home Assistant).
|
||||
4. Select **Save**.
|
||||
@ -55,5 +55,5 @@ First, remove the integration from Home Assistant. This will remove any configur
|
||||
|
||||
On [LOQED personal access token website](https://integrations.production.loqed.com/personal-access-tokens), please follow the following steps:
|
||||
|
||||
1. Login with your LOQED App e-mail address (you need to be admin).
|
||||
1. Login with your LOQED App email address (you need to be admin).
|
||||
2. Select **delete** on the Personal Access Token you used when creating this integration.
|
||||
|
@ -122,8 +122,8 @@ Make sure you have all these components ready before trying to add a Matter devi
|
||||
|
||||
- Have either an Android or iPhone ready and Bluetooth enabled. For information why Bluetooth is required, refer to the section on [Bluetooth used during commissioning](#bluetooth-used-during-commissioning):
|
||||
- Android:
|
||||
- Have an Android phone (a full Android, not F-Droid).
|
||||
- Have the latest version of the Home Assistant Companion app installed.
|
||||
- Have the Android version 8.1 or higher.
|
||||
- Have the latest version of the Home Assistant Companion app, installed from the Play Store (full version).
|
||||
- If you are using {% term Thread %}: Make sure there is a Thread border router device (Nest Hub (2nd Gen) or Nest Wi-Fi Pro) present in your home network.
|
||||
- iPhone
|
||||
- Have the iOS version 16 or higher
|
||||
|
@ -11,9 +11,9 @@ ha_domain: notify
|
||||
ha_integration_type: entity
|
||||
---
|
||||
|
||||
The `notify` integration makes it possible to send notifications to a wide variety of platforms. To use it you have to setup at least one notification target (notifier), check the [integrations list](/integrations/#notifications) for one that fits your use case.
|
||||
The **Notify** {% term integration %} makes it possible to send notifications to a wide variety of platforms. To use it, you have to set up at least one notification target (notifier). Check the [integrations list](/integrations/#notifications) for one that fits your use case.
|
||||
|
||||
If you want to send notifications to the Home Assistant web interface, you may use the [Persistent Notification integration](/integrations/persistent_notification/). The Persistent Notification integration is also available as an automatically configured notifier. See [its documentation](/integrations/persistent_notification/) for more details.
|
||||
If you want to send notifications to the Home Assistant web interface, you may use the [Persistent Notification integration](/integrations/persistent_notification/). It is available as an automatically configured notifier. See [its documentation](/integrations/persistent_notification/) for more details.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
@ -28,43 +28,64 @@ Once loaded, the `notify` platform will expose a service that can be called to s
|
||||
| `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.
|
||||
|
||||
The notify integration supports specifying [templates](/docs/configuration/templating/). This will allow you to use the current state of Home Assistant in your notifications.
|
||||
## Usage
|
||||
|
||||
In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this with a customized subject.
|
||||
The different **Notify** integrations you have set up will each show up as a different automation {% term action %} or {% term service %} call that you can use.
|
||||
|
||||
Be aware that you might want to change the actual service to whatever service you are actually using since `notify.notify` is shorthand for the first notify service the system can find and might therefore not be working as intended.
|
||||
One notification integration is automatically included, the Persistent Notifications which creates a notification in the sidebar of the web interface of Home Assistant. This can be chosen with the action named "Notifications: Send a persistent notification" which uses the service `notify.persistent_notification`.
|
||||
|
||||
```yaml
|
||||
action:
|
||||
service: notify.notify
|
||||
data:
|
||||
message: "Your message goes here"
|
||||
title: "Custom subject"
|
||||
```
|
||||
Another common notification integration is via the companion app for Android or iPhone. This can be chosen with the action "Send a notification via mobile_app_your_phone_name" which uses the service `notify.mobile_app_your_phone_name`. See the [companion app documentation](https://companion.home-assistant.io/docs/notifications/notifications-basic) for lots of customization options.
|
||||
|
||||
With any of these integrations, the `message` data input in the automation editor is the main text that will be sent. Other fields are optional, and some integrations support additional `data` or `target` information to customize the action. For more details, refer to their integration documentation.
|
||||
|
||||
Be aware that the `notify.notify` service is shorthand for the first notify service the system can find. It might not work as intended. Choose a specific service to make sure your message goes to the right place.
|
||||
|
||||
Notifications can also be sent using [Notify groups](https://www.home-assistant.io/integrations/group/#notify-groups). These allow you to send notification to multiple devices with a single call, or to update which device is notified by only changing it in a single place.
|
||||
|
||||
### Test if it works
|
||||
|
||||
After you setup a [notifier](/integrations/#notifications) a simple way to test if you have set up your notify platform correctly, is to open **Developer Tools** from the sidebar and then select the **Services** tab. Choose your service from the **Service** dropdown menu, enter the sample below into the **Service Data** field, and press the **CALL SERVICE** button.
|
||||
After you setup a [notifier](/integrations/#notifications), a simple way to test if you have set up your notify platform correctly is to open {% my developer_services title="**Developer tools** > **Services**" %}** tab from the sidebar. Choose your service from the **Service** dropdown menu depending on the integration you want to test, such as **Notifications: Send a persistent notification** or **Notifications: Send a notification via mobile_app_your_phone_name**. Enter your message into the **message** field, and select the **CALL SERVICE** button.
|
||||
|
||||
### Examples
|
||||
|
||||
In the **Developer Tools**, on the **Services** tab, select the **Notifications: Send a persistent notification** action. Enter a message and test sending it.
|
||||
|
||||
If you switch to view the YAML data under **Developer Tools**, it will appear as below. The same {% term action %} can be chosen in {% term automation %} actions %, whose YAML will appear the same:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```json
|
||||
{
|
||||
"message": "The sun is {% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}!"
|
||||
}
|
||||
```yaml
|
||||
service: notify.persistent_notification
|
||||
data:
|
||||
message: "Can you hear me now?"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
The automation equivalent would be:
|
||||
|
||||
|
||||
The notify integration supports specifying [templates](/docs/configuration/templating/). This will allow you to use the current state of entities in Home Assistant in your notifications, or use more complex logic to decide the message that is sent.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
action:
|
||||
service: notify.notify
|
||||
service: notify.persistent_notification
|
||||
data:
|
||||
message: "You have {{ states('todo.shopping_list') }} items on your shopping list."
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
action:
|
||||
service: notify.persistent_notification
|
||||
data:
|
||||
message: "The sun is {% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}!"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
|
||||
|
@ -88,8 +88,8 @@ For electricity:
|
||||
- Current bill electric cost to date
|
||||
- Current bill electric forecasted usage (for the first few days of the bill this is 0)
|
||||
- Current bill electric forecasted cost (for the first few days of the bill this is 0)
|
||||
- Typical monthly electric usage
|
||||
- Typical monthly electric cost
|
||||
- Typical monthly electric usage (based on the same month for previous years, not populated for accounts younger than a year)
|
||||
- Typical monthly electric cost (based on the same month for previous years, not populated for accounts younger than a year)
|
||||
|
||||
For gas:
|
||||
|
||||
@ -97,8 +97,8 @@ For gas:
|
||||
- Current bill gas cost to date
|
||||
- Current bill gas forecasted usage (for the first few days of the bill this is 0)
|
||||
- Current bill gas forecasted cost (for the first few days of the bill this is 0)
|
||||
- Typical monthly gas usage
|
||||
- Typical monthly gas cost
|
||||
- Typical monthly gas usage (based on the same month for previous years, not populated for accounts younger than a year)
|
||||
- Typical monthly gas cost (based on the same month for previous years, not populated for accounts younger than a year)
|
||||
|
||||
Note the unit for gas is CCF (centum cubic feet). 1 CCF is one hundred cubic feet which is equivalent to 1 therm.
|
||||
|
||||
|
@ -18,3 +18,10 @@ This integration connects with an [OurGroceries](https://www.ourgroceries.com/)
|
||||
It adds a [to-do list entity](/integrations/todo) for each shopping list, allowing you to create, update, or delete items on the list from the **To-do list** dashboard.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [OurGroceries](https://www.ourgroceries.com/)
|
||||
- [To-do list integration documentation](/integrations/todo)
|
||||
- [List of to-do list integrations](/integrations/#to-do-list)
|
||||
- [To-do list card](/dashboards/todo-list/)
|
@ -85,6 +85,8 @@ Start logging the growth of objects in memory.
|
||||
|
||||
Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks. This service can be run for long periods to find slow leaks. For finding fast leaks, `profiler.start_log_object_sources` is preferred; however, it is much more CPU intensive.
|
||||
|
||||
See the [corresponding documentation for `growth()`](https://mg.pov.lt/objgraph/objgraph.html#objgraph.growth) regarding the format in which this data is logged.
|
||||
|
||||
### Service profiler.stop_log_objects
|
||||
|
||||
{% my developer_call_service badge service="profiler.stop_log_objects" %}
|
||||
|
@ -88,7 +88,6 @@ alexa:
|
||||
service: notify.notify
|
||||
data:
|
||||
message: "The location of {{ User }} has been queried via Alexa."
|
||||
data:
|
||||
title: "Home Assistant"
|
||||
target: pixel
|
||||
data:
|
||||
|
@ -33,6 +33,8 @@ The Roku integration allows you to control a [Roku](https://www.roku.com/) devic
|
||||
|
||||
When adding the integration, you will be asked to provide a {% term host %}. Unless you changed the hostname, this refers to the IP address of your Roku device. You can find the IP address or hostname in the network settings of your Roku device, by checking your router, or by using a network scanning tool.
|
||||
|
||||
If you are having issues connecting, you may have to adjust the settings on your Roku device to allow local control. The common setting is: `Settings / System / Advanced / Control by mobile apps / Network access`
|
||||
|
||||
There is currently support for the following device types within Home Assistant:
|
||||
|
||||
- Media player
|
||||
|
@ -42,7 +42,7 @@ api_key:
|
||||
required: true
|
||||
type: string
|
||||
sender:
|
||||
description: The e-mail address of the sender.
|
||||
description: The email address of the sender.
|
||||
required: true
|
||||
type: string
|
||||
sender_name:
|
||||
|
@ -3,13 +3,16 @@ title: Shelly
|
||||
description: Integrate Shelly devices
|
||||
ha_category:
|
||||
- Binary sensor
|
||||
- Climate
|
||||
- Cover
|
||||
- Event
|
||||
- Energy
|
||||
- Light
|
||||
- Number
|
||||
- Sensor
|
||||
- Switch
|
||||
- Update
|
||||
- Valve
|
||||
ha_release: 0.115
|
||||
ha_codeowners:
|
||||
- '@balloob'
|
||||
|
@ -16,7 +16,7 @@ ha_platforms:
|
||||
|
||||
The `shopping_list` integration allows you to keep track of shopping list items.
|
||||
|
||||
Your shopping list will be accessible from the sidebar, and you can optionally add the [shopping list card](/dashboards/shopping-list/) to your dashboard. With the [conversation integration](/integrations/conversation/) you can add items to your shopping list using voice commands like "Add eggs to my shopping list."
|
||||
Your shopping list will be accessible from the sidebar, and you can optionally add the [To-do list card](/dashboards/todo-list/) to your dashboard. With the [conversation integration](/integrations/conversation/), you can add items to your shopping list using voice commands like "Add eggs to my shopping list."
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -17,10 +17,15 @@ ha_integration_type: integration
|
||||
|
||||
The SMA Solar integration will poll a [SMA](http://www.sma-solar.com/) [(US)](https://www.sma-america.com/) solar inverter, energy meter or battery inverter and present the values as sensors in Home Assistant.
|
||||
|
||||
The integration uses the web interface of the device. Before you start, make sure you are able to connect to the solar inverter from your favorite web browser.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Supported Devices
|
||||
|
||||
Not all inverters, energy meters and batteries from SMA are supported.
|
||||
|
||||
The integration uses the device's web interface (called webconnect). Before you start, make sure you are able to connect to the solar inverter from your favorite web browser. Devices with the ennexos operating system (like the Tripower X series) and all Energy Meters (SMA Energy Meter and SMA Sunny Home Manager) are not supported.
|
||||
|
||||
## Sensors
|
||||
|
||||
The SMA WebConnect module supports a wide variety of sensors, but not all of these have been mapped in the `pysma` library. Currently available sensors can be found below. Feel free to submit additional sensors to be added as standard sensors to the [pysma library](https://github.com/rklomp/pysma/blob/master/pysma/definitions.py).
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: SMTP
|
||||
description: Instructions on how to add e-mail notifications to Home Assistant.
|
||||
description: Instructions on how to add email notifications to Home Assistant.
|
||||
ha_category:
|
||||
- Notifications
|
||||
ha_iot_class: Cloud Push
|
||||
@ -11,9 +11,9 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
The SMTP platform allows you to deliver notifications from Home Assistant to an e-mail recipient.
|
||||
The SMTP platform allows you to deliver notifications from Home Assistant to an email recipient.
|
||||
|
||||
To enable notification by e-mail in your installation, add the following to your `configuration.yaml` file:
|
||||
To enable notification by email in your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
@ -24,7 +24,7 @@ notify:
|
||||
recipient: "YOUR_RECIPIENT"
|
||||
```
|
||||
|
||||
Check your e-mail provider configuration or help pages to get the correct SMTP settings.
|
||||
Check your email provider configuration or help pages to get the correct SMTP settings.
|
||||
|
||||
{% configuration %}
|
||||
name:
|
||||
@ -33,11 +33,11 @@ name:
|
||||
type: string
|
||||
default: notify
|
||||
sender:
|
||||
description: E-mail address of the sender.
|
||||
description: email address of the sender.
|
||||
required: true
|
||||
type: string
|
||||
recipient:
|
||||
description: Default E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients.<br>This is where you want to send your E-mail notifications by default (when not specifying `target` in the service call). Any E-mail address(es) specified in the service call's `target` field will override this recipient content.
|
||||
description: Default email address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients.<br>This is where you want to send your email notifications by default (when not specifying `target` in the service call). Any email address(es) specified in the service call's `target` field will override this recipient content.
|
||||
required: true
|
||||
type: [list, string]
|
||||
server:
|
||||
@ -184,10 +184,10 @@ burglar:
|
||||
|
||||
To learn more about how to use notifications in your automations, please see the [getting started with automation page](/getting-started/automation/).
|
||||
|
||||
## Specific E-Mail Provider Configuration
|
||||
## Specific email provider configuration
|
||||
|
||||
Check below some configurations examples for specific e-mail providers.
|
||||
If you are in doubt about the SMTP settings required, check your e-mail provider configuration or help pages for more information about its specific SMTP configuration.
|
||||
Check below some configurations examples for specific email providers.
|
||||
If you are in doubt about the SMTP settings required, check your email provider configuration or help pages for more information about its specific SMTP configuration.
|
||||
|
||||
### Google Mail
|
||||
|
||||
|
@ -23,7 +23,7 @@ Currently, only covers (shutters in SUPLA's terminology), gates, garage doors, a
|
||||
|
||||
Right now, it's impossible to add a device -- all of them are discovered from SUPLA-CLOUD's servers or yours.
|
||||
|
||||
For more complete Home Assistant support based on MQTT autodiscovery, consider switching your Supla devices to MQTT (through the setup interface). Or use the MQTT broker provided by [Supla Cloud] (https://cloud.supla.org/integrations/mqtt-broker).
|
||||
For more complete Home Assistant support based on MQTT autodiscovery, consider switching your Supla devices to MQTT (through the setup interface). Or use the MQTT broker provided by [Supla Cloud](https://cloud.supla.org/integrations/mqtt-broker).
|
||||
|
||||
## Configuration
|
||||
|
||||
@ -43,7 +43,7 @@ servers:
|
||||
type: list
|
||||
keys:
|
||||
server:
|
||||
description: Address of the SUPLA-CLOUD server (either IP address or DNS name); can either be the (cloud hosted)[https://cloud.supla.org] instance, or a (self hosted)[https://github.com/SUPLA/supla-cloud] instance.
|
||||
description: Address of the SUPLA-CLOUD server (either IP address or DNS name); can either be the [cloud hosted](https://cloud.supla.org) instance, or a [self hosted](https://github.com/SUPLA/supla-cloud) instance.
|
||||
required: true
|
||||
type: string
|
||||
access_token:
|
||||
|
@ -45,6 +45,8 @@ If you have multiple devices of the same type, you need to get the BTLE MAC addr
|
||||
|
||||
Please note, device names configured in the SwitchBot app are not transferred into Home Assistant.
|
||||
|
||||
Some SwitchBot devices need to be configured within the app before being controlled by Home Assistant, such as calibrating the cover open/close limits or pairing two covers to move together.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Supported devices
|
||||
|
@ -11,13 +11,13 @@ ha_codeowners:
|
||||
ha_integration_type: entity
|
||||
---
|
||||
|
||||
The to-do list integration provides to-do list entities, allowing other integrations
|
||||
to integrate to-do lists into Home Assistant. To-do lists are shown on the to-do list
|
||||
The **To-do list** {% term integration %} provides to-do list {% term entities %}, allowing other integrations
|
||||
to integrate to-do lists into Home Assistant. To-do lists are shown on the **To-do lists**
|
||||
dashboard for tracking items and whether or not they have been completed.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
For example, [Local To-do](/integrations/local_todo/) is a fully local integration to create to-do lists and tasks within your Home Assistant instance, [Shopping list](/integrations/shopping_list) specifically for shopping that can be added to with Assist, or other integrations work with online services providing to-do list data.
|
||||
For example, [Local to-do](/integrations/local_todo/) is a fully local integration to create to-do lists and tasks within your Home Assistant instance, [Shopping list](/integrations/shopping_list) specifically for shopping that can be added to with Assist, or other integrations work with online services providing to-do list data.
|
||||
|
||||
## Viewing and managing to-do lists
|
||||
|
||||
@ -30,12 +30,18 @@ in the main sidebar of your Home Assistant instance.
|
||||
The state of a to-do list entity is a number, which represents the number of
|
||||
incomplete items in the list.
|
||||
|
||||
## Blueprint to add an item to a dedicated list
|
||||
|
||||
This blueprint allows you to create a script to add an
|
||||
item to a pre-configured to-do list.
|
||||
|
||||
{% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/add-to-do-item/699193" %}
|
||||
|
||||
## Services
|
||||
|
||||
Some to-do list integrations allow Home Assistant to manage the to-do items in the list. The
|
||||
services provided by some to-do list entities are described below or you can read more about [Service Calls](/docs/scripts/service-calls/).
|
||||
|
||||
|
||||
### Service `todo.get_items`
|
||||
|
||||
Get to-do items from a to-do list. A to-do list `target` is selected with a [target selector](/docs/blueprint/selectors/#target-selector). The `data` payload supports the following fields:
|
||||
@ -134,3 +140,8 @@ service: todo.remove_completed_items
|
||||
target:
|
||||
entity_id: todo.personal_tasks
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Local to-do integration](/integrations/local_todo/)
|
||||
- [To-do list card](/dashboards/todo-list/)
|
@ -19,7 +19,7 @@ ha_config_flow: true
|
||||
This platform allows you to connect to your [Todoist projects](https://todoist.com) as [todo](/integrations/todo/) or [calendar](/integrations/calendar/) entities. All tasks get updated roughly every 15 minutes.
|
||||
|
||||
|
||||
A calendar entity will be `on` if you have a task due in that project. It will be `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all.
|
||||
A calendar entity will be `on` if you have a task due in that project. It will be `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
@ -194,3 +194,15 @@ Here are two example JSON payloads resulting in the same task:
|
||||
Valid languages are: `en`, `da`, `pl`, `zh`, `ko`, `de`, `pt`, `ja`, `it`, `fr`, `sv`, `ru`, `es`, `nl`
|
||||
|
||||
- **reminder_date** (*Optional*): When should the user be reminded of this task, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format (in UTC timezone). Mutually exclusive with `reminder_date_string`.
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Todoist projects](https://todoist.com)
|
||||
- [Calendar](/integrations/calendar/)
|
||||
|
||||
## To-do list
|
||||
|
||||
- [To-do list integration documentation](/integrations/todo)
|
||||
- [List of to-do list integrations](/integrations/#to-do-list)
|
||||
- [To-do list card](/dashboards/todo-list/)-
|
||||
- [Dashboards](/dashboards/dashboards/)
|
@ -47,7 +47,7 @@ To set it up, go to the integrations page in the configuration screen and find T
|
||||
|
||||
You will get a URL of the following format: `https://<home-assistant-domain>/api/webhook/9940e99a26fae4dcf6fe0a478124b6b58b578ea4c55c9a584beb1c9f5057bb91`. To generate inbound events, you have to configure your [webhooks with Twilio](https://www.twilio.com/docs/glossary/what-is-a-webhook):
|
||||
- Go to your Twilio [console](https://www.twilio.com/console).
|
||||
- Under **phone numbers** > **active numbers** > (select number) > **configure**.
|
||||
- Under **phone numbers** > **manage** > **active numbers** > (select number) > **configure**.
|
||||
- Paste your URL in the webhook URL box for **A call comes in** and **A message comes in** and save.
|
||||
|
||||
Events coming in from Twilio will be available as events in Home Assistant and are fired as `twilio_data_received`. The data specified by Twilio will be available as the event data. You can use this event to trigger automations.
|
||||
|
@ -2,7 +2,9 @@
|
||||
title: Vodafone Station
|
||||
description: Instructions on how to integrate Vodafone Station routers into Home Assistant.
|
||||
ha_category:
|
||||
- Button
|
||||
- Presence detection
|
||||
- Sensor
|
||||
ha_release: 2023.9
|
||||
ha_domain: vodafone_station
|
||||
ha_config_flow: true
|
||||
|
@ -2042,7 +2042,7 @@ pip3 install pycryptodome pybase64 requests
|
||||
python3 token_extractor.py
|
||||
```
|
||||
|
||||
3. Provide e-mail address or username for Xiaomi's account, password and country of the account (most used: CN - China Mainland, DE - Germany etc.)
|
||||
3. Provide email address or username for Xiaomi's account, password and country of the account (most used: CN - China Mainland, DE - Germany etc.)
|
||||
4. Script will print out all devices connected to the account with their IP address and tokens for use in Home Assistant.
|
||||
|
||||
### Xiaomi Home app (Xiaomi Aqara Gateway, Android & iOS)
|
||||
|
@ -22,6 +22,7 @@ _**TL;DR**: It is our goal for 2023 to let users control Home Assistant in their
|
||||
- [Year of the Voice - Chapter 3](/blog/2023/07/20/year-of-the-voice-chapter-3/) (July 20, 2023)
|
||||
- [Year of the Voice - Chapter 4](/blog/2023/10/12/year-of-the-voice-chapter-4-wakewords/) (October 12, 2023)
|
||||
- [Year of the Voice - Chapter 5](/blog/2023/12/13/year-of-the-voice-chapter-5/) (December 13, 2023)
|
||||
- [Voice - Chapter 6](/blog/2024/02/21/voice-chapter-6/) (February 21, 2024)
|
||||
|
||||
<hr>
|
||||
|
||||
|
@ -141,5 +141,5 @@ Thanks to our language leaders for extending the sentence support to all the var
|
||||
[Kevin Ahrendt]: https://www.kevinahrendt.com/
|
||||
[debugging tools]: /voice_control/troubleshooting/#test-a-sentence-per-language-without-voice-without-executing-commands
|
||||
[intents]: https://developers.home-assistant.io/docs/intent_builtin
|
||||
[Chapter 4]: /blog/2023/10/20/year-of-the-voice-chapter-4/
|
||||
[Chapter 4]: /blog/2023/10/12/year-of-the-voice-chapter-4-wakewords/
|
||||
[m5-tutorial]: /voice_control/thirteen-usd-voice-remote/
|
||||
|
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