Merge branch 'current' into next

This commit is contained in:
Franck Nijhof 2024-03-27 10:12:39 +01:00
commit a887764d23
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
130 changed files with 3575 additions and 1278 deletions

View File

@ -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 }}

View File

@ -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:

View File

@ -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

View File

@ -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)

View File

@ -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
View File

@ -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": {

View File

@ -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"

View File

@ -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;

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -157,3 +157,9 @@ entities:
tap_action:
action: toggle
```
## Related topics
- [Card actions](/dashboards/actions/)
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -80,3 +80,8 @@ cards:
entity: light.bed_light
image: /local/bed_2.png
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -107,3 +107,8 @@ entities:
- entity: sensor.attic_temperature
name: "Attic"
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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/)

View File

@ -56,3 +56,8 @@ type: humidifier
entity: humidifier.bedroom
name: Bedroom Humidifier
```
## Related topics
- [Card features](/dashboards/features)
- [Themes](/integrations/frontend/)

View File

@ -56,3 +56,7 @@ type: iframe
url: https://www.home-assistant.io
aspect_ratio: 75%
```
## Related topics
- [Dashboard cards](/dashboards/cards/)

View File

@ -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/)

View File

@ -65,3 +65,8 @@ entities:
- light.ceiling_lights
hours_to_show: 24
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -134,3 +134,8 @@ entities:
focus: false
hours_to_show: 48
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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/)

View File

@ -46,3 +46,8 @@ Basic example:
type: media-control
entity: media_player.lounge_room
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -48,3 +48,8 @@ Basic example:
type: plant-status
entity: plant.bonsai
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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).
![Add Section button](/images/dashboards/sections_view_add-card-or-section.png)
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)

View File

@ -83,3 +83,8 @@ type: sensor
entity: sensor.illumination
name: Illumination
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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/)

View File

@ -171,4 +171,9 @@ period:
minutes: -20
seconds: -10
stat_type: change
```
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -96,3 +96,8 @@ entities:
- entity: sensor.inside_temperature
name: Inside
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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/)

View File

@ -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/)

View 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).
![To-do card, list entities](/images/dashboards/cards-todo.png).
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/)

View File

@ -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/)

View File

@ -153,3 +153,8 @@ Example theme configuration:
```yaml
--weather-icon-sunny: url("/local/sunny.png")
```
## Related topics
- [Themes](/integrations/frontend/)
- [Dashboard cards](/dashboards/cards/)

View File

@ -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 %}

View File

@ -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.
![Automation tracing example](/images/integrations/automation/automation-tracing.png)
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.

View File

@ -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`:

View File

@ -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;'>

View File

@ -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.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/
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/) (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.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ai-on-the-edge-device.jpg)
- [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.![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ai-on-the-edge-device.jpg)
- [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.

View File

@ -9,7 +9,7 @@ or need to recover your data.
## Forgot user name
If youve 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)

View File

@ -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/

View File

@ -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:

View File

@ -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 %}

View File

@ -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.

View File

@ -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>

View File

@ -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 %}

View File

@ -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

View File

@ -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/)

View File

@ -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/)

View File

@ -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

View File

@ -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 |

View File

@ -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

View File

@ -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.

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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>

View File

@ -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/)

View File

@ -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.

View File

@ -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
```

View File

@ -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.

View File

@ -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 %}

View File

@ -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

View File

@ -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`

View File

@ -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) |

View File

@ -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_

View File

@ -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:

View File

@ -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

View File

@ -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/)

View File

@ -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.

View File

@ -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

View File

@ -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 %}

View File

@ -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.

View File

@ -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/)

View File

@ -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" %}

View File

@ -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:

View File

@ -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

View File

@ -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:

View File

@ -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'

View File

@ -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 %}

View File

@ -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).

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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/)

View File

@ -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/)

View File

@ -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.

View File

@ -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

View File

@ -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)

View File

@ -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>

View File

@ -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