Merge branch 'current' into new

This commit is contained in:
Franck Nijhof 2023-03-27 19:28:07 +02:00
commit c7ee2ca3a0
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
53 changed files with 650 additions and 338 deletions

View File

@ -11,7 +11,7 @@ jobs:
pull-requests: write pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/stale@v7.0.0 - uses: actions/stale@v8.0.0
if: ${{ github.repository_owner == 'home-assistant' }} if: ${{ github.repository_owner == 'home-assistant' }}
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out files from GitHub - name: Check out files from GitHub
uses: actions/checkout@v3.3.0 uses: actions/checkout@v3.5.0
- name: Setting up Node.js - name: Setting up Node.js
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.6.0
with: with:
@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out files from GitHub - name: Check out files from GitHub
uses: actions/checkout@v3.3.0 uses: actions/checkout@v3.5.0
- name: Setting up Node.js - name: Setting up Node.js
uses: actions/setup-node@v3.6.0 uses: actions/setup-node@v3.6.0
with: with:

View File

@ -15,7 +15,6 @@ GEM
ffi (1.15.5-x64-mingw32) ffi (1.15.5-x64-mingw32)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
google-protobuf (3.22.2) google-protobuf (3.22.2)
google-protobuf (3.22.2-x64-mingw32)
http_parser.rb (0.8.0) http_parser.rb (0.8.0)
i18n (1.12.0) i18n (1.12.0)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
@ -80,10 +79,10 @@ GEM
rouge (4.1.0) rouge (4.1.0)
ruby2_keywords (0.0.5) ruby2_keywords (0.0.5)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sass-embedded (1.59.3) sass-embedded (1.60.0)
google-protobuf (~> 3.21) google-protobuf (~> 3.21)
rake (>= 10.0.0) rake (>= 10.0.0)
sass-embedded (1.59.3-x64-mingw32) sass-embedded (1.60.0-x64-mingw32)
google-protobuf (~> 3.21) google-protobuf (~> 3.21)
sinatra (3.0.5) sinatra (3.0.5)
mustermann (~> 3.0) mustermann (~> 3.0)
@ -96,7 +95,7 @@ GEM
tilt (2.1.0) tilt (2.1.0)
tzinfo (2.0.6) tzinfo (2.0.6)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
tzinfo-data (1.2022.7) tzinfo-data (1.2023.2)
tzinfo (>= 1.0.0) tzinfo (>= 1.0.0)
unicode-display_width (2.4.2) unicode-display_width (2.4.2)
webrick (1.8.1) webrick (1.8.1)

View File

@ -122,8 +122,8 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 2023 current_major_version: 2023
current_minor_version: 3 current_minor_version: 3
current_patch_version: 4 current_patch_version: 6
date_released: 2023-03-13 date_released: 2023-03-22
# Either # or the anchor link to latest release notes in the blog post. # Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it. # Must be prefixed with a # and have double quotes around it.
@ -176,6 +176,19 @@ defaults:
path: "hassio/*" path: "hassio/*"
values: values:
toc: true toc: true
# Remove some resources from sitemap
- scope:
path: "google*.html"
values:
sitemap: false
- scope:
path: "static/fonts/**/*.html"
values:
sitemap: false
- scope:
path: "static/mdi-demo.html"
values:
sitemap: false
# Support for files Jekyll will normally exclude # Support for files Jekyll will normally exclude
include: include:

317
package-lock.json generated
View File

@ -21,7 +21,7 @@
"remark-lint-no-shell-dollars": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1",
"remark-stringify": "^10.0.2", "remark-stringify": "^10.0.2",
"tailwindcss": "^3.2.7", "tailwindcss": "^3.2.7",
"textlint": "^13.3.1", "textlint": "^13.3.2",
"textlint-filter-rule-comments": "^1.2.2", "textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^3.0.4" "textlint-rule-terminology": "^3.0.4"
@ -184,9 +184,9 @@
} }
}, },
"node_modules/@npmcli/config": { "node_modules/@npmcli/config": {
"version": "6.1.3", "version": "6.1.4",
"resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.1.3.tgz", "resolved": "https://registry.npmjs.org/@npmcli/config/-/config-6.1.4.tgz",
"integrity": "sha512-c8uOXPbRq1K8YeyUszj6MBWIdB6bx6x3K/UbGmc5GF7qpv1mB893Y5SuyrH/J7Kcw24Im4ASrsztk38ZBWFS2Q==", "integrity": "sha512-3bIf/86iQ9ac86hy5uzE1kQnwgd9W/kmZ+K/OmYWuBMX97PQi4yLZHqn2xtfukwF/3/6NjUPxYC1H/aP3nImCA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@npmcli/map-workspaces": "^3.0.2", "@npmcli/map-workspaces": "^3.0.2",
@ -217,14 +217,14 @@
} }
}, },
"node_modules/@npmcli/map-workspaces": { "node_modules/@npmcli/map-workspaces": {
"version": "3.0.2", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.2.tgz", "resolved": "https://registry.npmjs.org/@npmcli/map-workspaces/-/map-workspaces-3.0.3.tgz",
"integrity": "sha512-bCEC4PG7HbadtAYkW/TTUVNEOSr5Dhfmv6yGLgByJgCvdCqq7teq09cjvJ1LhzJU/euWjvYMcQxsfj7yDD2ikg==", "integrity": "sha512-HlCvFuTzw4UNoKyZdqiNrln+qMF71QJkxy2dsusV8QQdoa89e2TF4dATCzBxbl4zzRzdDoWWyP5ADVrNAH9cRQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@npmcli/name-from-folder": "^2.0.0", "@npmcli/name-from-folder": "^2.0.0",
"glob": "^8.0.1", "glob": "^9.3.1",
"minimatch": "^6.1.6", "minimatch": "^7.4.2",
"read-package-json-fast": "^3.0.0" "read-package-json-fast": "^3.0.0"
}, },
"engines": { "engines": {
@ -241,40 +241,27 @@
} }
}, },
"node_modules/@npmcli/map-workspaces/node_modules/glob": { "node_modules/@npmcli/map-workspaces/node_modules/glob": {
"version": "8.1.0", "version": "9.3.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.2.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "integrity": "sha512-BTv/JhKXFEHsErMte/AnfiSv8yYOLLiyH2lTg8vn02O21zWFgHPTfxtgn1QRe7NRgggUhC8hacR2Re94svHqeA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
"inflight": "^1.0.4", "minimatch": "^7.4.1",
"inherits": "2", "minipass": "^4.2.4",
"minimatch": "^5.0.1", "path-scurry": "^1.6.1"
"once": "^1.3.0"
}, },
"engines": { "engines": {
"node": ">=12" "node": ">=16 || 14 >=14.17"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/isaacs" "url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/@npmcli/map-workspaces/node_modules/glob/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/@npmcli/map-workspaces/node_modules/minimatch": { "node_modules/@npmcli/map-workspaces/node_modules/minimatch": {
"version": "6.2.0", "version": "7.4.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.3.tgz",
"integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", "integrity": "sha512-5UB4yYusDtkRPbRiy1cqZ1IpGNcJCGlEMG17RKzPddpyiPKoCdwohbED8g4QXT0ewCt8LTkQXuljsUfQ3FKM4A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"brace-expansion": "^2.0.1" "brace-expansion": "^2.0.1"
@ -296,59 +283,59 @@
} }
}, },
"node_modules/@textlint/ast-node-types": { "node_modules/@textlint/ast-node-types": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.2.tgz",
"integrity": "sha512-/qeEjW3hIFpGwESsCkJRroja7mBOlo9wqyx8G4fwayq4FZRvJMm/9DhIo77jd/4wm/VSJcVVr+fs+rVa4jrY5A==", "integrity": "sha512-d9WXBahsAgRDWcfUE7pQs8E9SNbF0nxrEaYE2g01tLgQ/dYdlOLngNPXi0Lk+C+yU58kvmFSdO6nicIAe3WIiw==",
"dev": true "dev": true
}, },
"node_modules/@textlint/ast-tester": { "node_modules/@textlint/ast-tester": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-13.3.2.tgz",
"integrity": "sha512-SB41tqnXTkI5qynb0J8Rq1asn8An815I2s/siTBSmuwXD4tmChl6r+mJmAgufMEWVZHfOVCj3lb4eBnFhxUzQA==", "integrity": "sha512-qbpmJS7mEZcTrcKuppPQ8o2VJFUvHJ4+/l5iNEc2JRtMqpoNP6JAIKwIuDcEsMxedClExVTPmNctUlteglpD2A==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1", "@textlint/ast-node-types": "^13.3.2",
"debug": "^4.3.4" "debug": "^4.3.4"
} }
}, },
"node_modules/@textlint/ast-traverse": { "node_modules/@textlint/ast-traverse": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-13.3.2.tgz",
"integrity": "sha512-+aAJMXn+UlpepNAwtcngCfUiBIkoPVUAub1qMM4AL1ZHVh+B5/jyH7OTBuNtTG8Dx7h/1ieUBqrLKWBYvJUwSQ==", "integrity": "sha512-c+SI7SAWH1S+q5iok0Q/jrprG1BctstTF4A8msi/1bioKtn/PrD01w/MDsPkDT+K15RrWYUSjG8FLuGPnEN78Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1" "@textlint/ast-node-types": "^13.3.2"
} }
}, },
"node_modules/@textlint/config-loader": { "node_modules/@textlint/config-loader": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-13.3.2.tgz",
"integrity": "sha512-epA6SgAmKlKZjMVFvGceDl04gsarbfQjuvjoStjPyfUL6oGHUzrSIJmyyPEd3vzLf8bPexj6d5QiyO/sRtfhAQ==", "integrity": "sha512-P8DESsBh3JBRMujbyV3WjVlhbDVaGBIRtEL0AveNSSe6+X0ef7OtesxGJhD8p/DIyA9X+69bqpg7mcV7DTuO9w==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/kernel": "^13.3.1", "@textlint/kernel": "^13.3.2",
"@textlint/module-interop": "^13.3.1", "@textlint/module-interop": "^13.3.2",
"@textlint/types": "^13.3.1", "@textlint/types": "^13.3.2",
"@textlint/utils": "^13.3.1", "@textlint/utils": "^13.3.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"rc-config-loader": "^4.1.2", "rc-config-loader": "^4.1.2",
"try-resolve": "^1.0.1" "try-resolve": "^1.0.1"
} }
}, },
"node_modules/@textlint/feature-flag": { "node_modules/@textlint/feature-flag": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-13.3.2.tgz",
"integrity": "sha512-4L4exU9z5WkKueUEOJ2bLueHgBI9LE/Y8xvEuTDrYwrnftUeqQHS9Ibg9CofJ4dGO+3/vvp0kkV+pLe3+Gn8nw==", "integrity": "sha512-ewW8dlhcFf19QuqlycQHqySQB/VhKQ7opYjvsJvUr2GP7/nY1Wq4vMWEhCtCOVg7Khumw1JtoS7+DaQGiFzuaQ==",
"dev": true "dev": true
}, },
"node_modules/@textlint/fixer-formatter": { "node_modules/@textlint/fixer-formatter": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-13.3.2.tgz",
"integrity": "sha512-7UTmmExilGjqmS3BDgmaA6bZWI2oAs8SELmEN1ykmq/AOpg/EBNaDH8JshUkGgVSfOBmZB2KdliRMaqOx3QZfQ==", "integrity": "sha512-Szvb6OGx/+PkiqDUMVyXD5WDaraoU64VNWZhUm96wEjGxt7seMecRgYiKc7LkQllcStJ2lP8Dgju1phGaD5hbQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/module-interop": "^13.3.1", "@textlint/module-interop": "^13.3.2",
"@textlint/types": "^13.3.1", "@textlint/types": "^13.3.2",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"diff": "^4.0.2", "diff": "^4.0.2",
@ -360,33 +347,33 @@
} }
}, },
"node_modules/@textlint/kernel": { "node_modules/@textlint/kernel": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-13.3.2.tgz",
"integrity": "sha512-FdLYOJUaa6AWLyj9XgDNnT9SC+W6IWGC4uGYDILumVz8roYAeb1BaA4wXc9Igv2Ja6k7uIdmRSW62jXPP42fAw==", "integrity": "sha512-KZX87i4xVqLXdb8Cl4y0Y56jIHQIwg+YPrLz/kBz2TQDl8vYeGLII4QHwT1l0BjZ2JHawm1pmyQZml3hCnieOQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1", "@textlint/ast-node-types": "^13.3.2",
"@textlint/ast-tester": "^13.3.1", "@textlint/ast-tester": "^13.3.2",
"@textlint/ast-traverse": "^13.3.1", "@textlint/ast-traverse": "^13.3.2",
"@textlint/feature-flag": "^13.3.1", "@textlint/feature-flag": "^13.3.2",
"@textlint/source-code-fixer": "^13.3.1", "@textlint/source-code-fixer": "^13.3.2",
"@textlint/types": "^13.3.1", "@textlint/types": "^13.3.2",
"@textlint/utils": "^13.3.1", "@textlint/utils": "^13.3.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"fast-equals": "^4.0.3", "fast-equals": "^4.0.3",
"structured-source": "^4.0.0" "structured-source": "^4.0.0"
} }
}, },
"node_modules/@textlint/linter-formatter": { "node_modules/@textlint/linter-formatter": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-13.3.2.tgz",
"integrity": "sha512-8FhkQlAi8BvmS2ULygYQ/vLaZb/5nM1uCrMvgIQTqXk1X03Sj1re+XTSylznC7apwQ4Nmxjc7d+28D3eO9jTHQ==", "integrity": "sha512-QpHI7bzDMaetmrnMhA2+z1ExneFCdJVZHUFyzdfSv5JC4VNXmW9UDb7F7vsP+M+1jzIvF75mwvRLvmA82MJvBA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@azu/format-text": "^1.0.2", "@azu/format-text": "^1.0.2",
"@azu/style-format": "^1.0.1", "@azu/style-format": "^1.0.1",
"@textlint/module-interop": "^13.3.1", "@textlint/module-interop": "^13.3.2",
"@textlint/types": "^13.3.1", "@textlint/types": "^13.3.2",
"chalk": "^4.1.2", "chalk": "^4.1.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"is-file": "^1.0.0", "is-file": "^1.0.0",
@ -402,12 +389,12 @@
} }
}, },
"node_modules/@textlint/markdown-to-ast": { "node_modules/@textlint/markdown-to-ast": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-13.3.2.tgz",
"integrity": "sha512-Xvhg/X1wgS9n3UHExZNgr1PY6cWtzGfObq2yc5A+P/VmagupDFaEBk8kyuARRKf9d7EPnwS6bgqNXvKMCrqYOA==", "integrity": "sha512-tnXk7YO8rIPbnd6rDi6LwhxoExdg6ge8v5ggiun76qLfX2uKR0ExhJEL2K+zziATi1AqalBva3WD3exU1sfjeg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1", "@textlint/ast-node-types": "^13.3.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"mdast-util-gfm-autolink-literal": "^0.1.3", "mdast-util-gfm-autolink-literal": "^0.1.3",
"remark-footnotes": "^3.0.0", "remark-footnotes": "^3.0.0",
@ -645,61 +632,61 @@
} }
}, },
"node_modules/@textlint/module-interop": { "node_modules/@textlint/module-interop": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-13.3.2.tgz",
"integrity": "sha512-xF6v/RPAgmeEn7JJTYZswyVLvLbB3vKWMr1zgCLjrNaLgFgui5R7bM5Nx2EonY52fkMOTLohyKexCCEX+WiDIw==", "integrity": "sha512-JPHAZlWXgedDCoaTT21dln8u+sPVJUGPw283Oxz1k24x2MWaFZO7EReu/K4QepdxNKOpdllp2DqvnWgnvZoPOg==",
"dev": true "dev": true
}, },
"node_modules/@textlint/source-code-fixer": { "node_modules/@textlint/source-code-fixer": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-13.3.2.tgz",
"integrity": "sha512-Kp33HQoPcky04GCYxwfLCRqzu4MLct/s+ar3/wX36hNNZeLoTs7Q3ry8q7ZYZID57hrzEO43/64GjhAJhOxo7Q==", "integrity": "sha512-7b+7zDUnEILcaYvJDLz+6Uu8YHn85xm6Lof/0Azn1/5zcDsz5qDjgJ21u+kuS+1kQBSpWV8dmCT3sTZoS0uExg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/types": "^13.3.1", "@textlint/types": "^13.3.2",
"debug": "^4.3.4" "debug": "^4.3.4"
} }
}, },
"node_modules/@textlint/text-to-ast": { "node_modules/@textlint/text-to-ast": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-13.3.2.tgz",
"integrity": "sha512-jh5v8q9vH37G/sr1z7e/HW6QLqsgwkcC7bCTw8hqCErdJ3SbFFWl8BbwilPN+7aaujFEAc2HbxHfbvEu4/j8Iw==", "integrity": "sha512-6E2sFTukn5XygCWE1W6jU1rlQKO268tS5Qe8oHBdxp0tohFXMRzVM5r1MKgjjmuUpHxjwIcq75x+dWAYwX5wLQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1" "@textlint/ast-node-types": "^13.3.2"
} }
}, },
"node_modules/@textlint/textlint-plugin-markdown": { "node_modules/@textlint/textlint-plugin-markdown": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-13.3.2.tgz",
"integrity": "sha512-w3Vjlc064VqKx7y1FNSyh0WeQUfXKbe5uqRQPU/+inzkNs9BWMHofDp36hDZiI4nojQLhm5juBcJbxv7F0g5eg==", "integrity": "sha512-iI/UuzUz4k5qnrPnm7U7d8oC/Hwj41MtllusBSArG3mimn5gHsS+Etzm5Zs3oxXMINdzvWNNEFJ/xbs1bZvEJg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/markdown-to-ast": "^13.3.1" "@textlint/markdown-to-ast": "^13.3.2"
} }
}, },
"node_modules/@textlint/textlint-plugin-text": { "node_modules/@textlint/textlint-plugin-text": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-13.3.2.tgz",
"integrity": "sha512-+3AyR+FiJzeZil1N+zyOKF+Tv172p3YKGIMa4QgpeZRupZWqif5/C5n6XmdTDPgrAMXR26kHxaN/S8Ai58UOWA==", "integrity": "sha512-pJrb4OYZ3TB6eKxvxPYARwoHb5vaXoKakCrmsyXtwbRjylJWCRVRh/u8UTRTyFRotASawEY/VfxKXwYepHP91Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/text-to-ast": "^13.3.1" "@textlint/text-to-ast": "^13.3.2"
} }
}, },
"node_modules/@textlint/types": { "node_modules/@textlint/types": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/types/-/types-13.3.2.tgz",
"integrity": "sha512-iz70e0adTl8ORoBXF9+nZPBdB+qEeXvbkMAoSzF7YEfjMgEbbK5+S+wr7NorS6Mxp/0Vy3VyIjBoKo/b7FPrLA==", "integrity": "sha512-N1Xb4kltBwBwAF3wAwKi3sJA0hWVjraWqIpjuHOplul/O8Qu78domGedktQJ4n2aVN1ucBuFjpZNsQfkfxJI+Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1" "@textlint/ast-node-types": "^13.3.2"
} }
}, },
"node_modules/@textlint/utils": { "node_modules/@textlint/utils": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-13.3.1.tgz", "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-13.3.2.tgz",
"integrity": "sha512-gPGSVwWlu+F1jjB5kn9SenNPXvipT/wPIqqME057T2xbYTEV2PjhhS7nD17i0PqplUV4TCu0+Mrq8nyLSO819A==", "integrity": "sha512-eEi4j5vyQ0WRkfkBS+Sa2q1YQVo0B6cFXde2+TVpoDp7f8yPAb4wMv9jgQ23N+DpiafJVOhRQLyJdrITFwnmFw==",
"dev": true "dev": true
}, },
"node_modules/@trysound/sax": { "node_modules/@trysound/sax": {
@ -760,9 +747,9 @@
"dev": true "dev": true
}, },
"node_modules/@types/mdast": { "node_modules/@types/mdast": {
"version": "3.0.10", "version": "3.0.11",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz",
"integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/unist": "*" "@types/unist": "*"
@ -775,9 +762,9 @@
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "18.15.3", "version": "18.15.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.10.tgz",
"integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==", "integrity": "sha512-9avDaQJczATcXgfmMAW3MIWArOO7A+m90vuCFLr8AotWf8igO/mRoYukrk2cqZVtv38tHs33retzHEilM7FpeQ==",
"dev": true "dev": true
}, },
"node_modules/@types/supports-color": { "node_modules/@types/supports-color": {
@ -1076,9 +1063,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001466", "version": "1.0.30001470",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001470.tgz",
"integrity": "sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==", "integrity": "sha512-065uNwY6QtHCBOExzbV6m236DDhYCCtPmQUCoQtwkVqzud8v5QPidoMr6CoMkC2nfp6nksjttqWQRRh75LqUmA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -1300,9 +1287,9 @@
} }
}, },
"node_modules/css-declaration-sorter": { "node_modules/css-declaration-sorter": {
"version": "6.3.1", "version": "6.4.0",
"resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz", "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz",
"integrity": "sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==", "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
@ -1640,9 +1627,9 @@
"dev": true "dev": true
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.330", "version": "1.4.340",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.330.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.340.tgz",
"integrity": "sha512-PqyefhybrVdjAJ45HaPLtuVaehiSw7C3ya0aad+rvmV53IVyXmYRk3pwIOb2TxTDTnmgQdn46NjMMaysx79/6Q==", "integrity": "sha512-zx8hqumOqltKsv/MF50yvdAlPF9S/4PXbyfzJS6ZGhbddGkRegdwImmfSVqCkEziYzrIGZ/TlrzBND4FysfkDg==",
"dev": true "dev": true
}, },
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
@ -1844,9 +1831,9 @@
} }
}, },
"node_modules/fs-extra": { "node_modules/fs-extra": {
"version": "11.1.0", "version": "11.1.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
"integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"graceful-fs": "^4.2.0", "graceful-fs": "^4.2.0",
@ -1968,9 +1955,9 @@
} }
}, },
"node_modules/graceful-fs": { "node_modules/graceful-fs": {
"version": "4.2.10", "version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true "dev": true
}, },
"node_modules/has": { "node_modules/has": {
@ -3639,6 +3626,15 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/minipass": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz",
"integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/misspellings": { "node_modules/misspellings": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/misspellings/-/misspellings-1.1.0.tgz", "resolved": "https://registry.npmjs.org/misspellings/-/misspellings-1.1.0.tgz",
@ -3673,10 +3669,16 @@
"dev": true "dev": true
}, },
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "3.3.4", "version": "3.3.6",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
"dev": true, "dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"bin": { "bin": {
"nanoid": "bin/nanoid.cjs" "nanoid": "bin/nanoid.cjs"
}, },
@ -3691,9 +3693,9 @@
"dev": true "dev": true
}, },
"node_modules/nopt": { "node_modules/nopt": {
"version": "7.0.0", "version": "7.1.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-7.0.0.tgz", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.1.0.tgz",
"integrity": "sha512-e6Qw1rcrGoSxEH0hQ4GBSdUjkMOtXGhGFXdNT/3ZR0S37eR9DMj5za3dEDWE6o1T3/DP8ZOsPP4MIiky0c3QeA==", "integrity": "sha512-ZFPLe9Iu0tnx7oWhFxAo4s7QTn8+NNDDxYNaKLjE7Dp0tbakQ3M1QhQzsnzXHQBTUO3K9BmwaxnyO8Ayn2I95Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"abbrev": "^2.0.0" "abbrev": "^2.0.0"
@ -3900,6 +3902,31 @@
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true "dev": true
}, },
"node_modules/path-scurry": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.3.tgz",
"integrity": "sha512-RAmB+n30SlN+HnNx6EbcpoDy9nwdpcGPnEKrJnu6GZoDWBdIjo1UQMVtW2ybtC7LC2oKLcMq8y5g8WnKLiod9g==",
"dev": true,
"dependencies": {
"lru-cache": "^7.14.1",
"minipass": "^4.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
"version": "7.18.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
"integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
"dev": true,
"engines": {
"node": ">=12"
}
},
"node_modules/path-to-glob-pattern": { "node_modules/path-to-glob-pattern": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/path-to-glob-pattern/-/path-to-glob-pattern-1.0.2.tgz", "resolved": "https://registry.npmjs.org/path-to-glob-pattern/-/path-to-glob-pattern-1.0.2.tgz",
@ -5492,23 +5519,23 @@
"dev": true "dev": true
}, },
"node_modules/textlint": { "node_modules/textlint": {
"version": "13.3.1", "version": "13.3.2",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-13.3.1.tgz", "resolved": "https://registry.npmjs.org/textlint/-/textlint-13.3.2.tgz",
"integrity": "sha512-lsLOYXPcWITUDmPimjuRqHnp9TcA3xgoaqmpI5CbA/znirDy9St/Y23Aq9wr6eHXnkH3Iw+QKEVw06E1L4oahA==", "integrity": "sha512-i14ug8jyC1iNko16dpzp/blSLbvXTONiZbvkNT30N3VzDPCtNn2yV4qSZhiRWFi1hHfgOdG3n/u0DZvllZCHXQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@textlint/ast-node-types": "^13.3.1", "@textlint/ast-node-types": "^13.3.2",
"@textlint/ast-traverse": "^13.3.1", "@textlint/ast-traverse": "^13.3.2",
"@textlint/config-loader": "^13.3.1", "@textlint/config-loader": "^13.3.2",
"@textlint/feature-flag": "^13.3.1", "@textlint/feature-flag": "^13.3.2",
"@textlint/fixer-formatter": "^13.3.1", "@textlint/fixer-formatter": "^13.3.2",
"@textlint/kernel": "^13.3.1", "@textlint/kernel": "^13.3.2",
"@textlint/linter-formatter": "^13.3.1", "@textlint/linter-formatter": "^13.3.2",
"@textlint/module-interop": "^13.3.1", "@textlint/module-interop": "^13.3.2",
"@textlint/textlint-plugin-markdown": "^13.3.1", "@textlint/textlint-plugin-markdown": "^13.3.2",
"@textlint/textlint-plugin-text": "^13.3.1", "@textlint/textlint-plugin-text": "^13.3.2",
"@textlint/types": "^13.3.1", "@textlint/types": "^13.3.2",
"@textlint/utils": "^13.3.1", "@textlint/utils": "^13.3.2",
"debug": "^4.3.4", "debug": "^4.3.4",
"file-entry-cache": "^5.0.1", "file-entry-cache": "^5.0.1",
"get-stdin": "^5.0.1", "get-stdin": "^5.0.1",

View File

@ -16,7 +16,7 @@
"remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-fenced-code-flag": "^3.1.1",
"remark-lint-no-shell-dollars": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1",
"remark-stringify": "^10.0.2", "remark-stringify": "^10.0.2",
"textlint": "^13.3.1", "textlint": "^13.3.2",
"textlint-filter-rule-comments": "^1.2.2", "textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^3.0.4" "textlint-rule-terminology": "^3.0.4"

View File

@ -9,7 +9,7 @@
# #
- term: Action - term: Action
definition: > definition: >-
An action is an command that can be fired. For example, turning on a light. An action is an command that can be fired. For example, turning on a light.
Actions used in many places, most notably in automations and scripts. Actions used in many places, most notably in automations and scripts.
aliases: aliases:
@ -17,7 +17,7 @@
link: /docs/automation/action/ link: /docs/automation/action/
- term: Add-on - term: Add-on
definition: > definition: >-
Add-ons are additional standalone third-party software packages that can be Add-ons are additional standalone third-party software packages that can be
installed on Home Assistant OS. Most of these, add-on provided, applications installed on Home Assistant OS. Most of these, add-on provided, applications
can be integrated into Home Assistant using integrations. Examples of can be integrated into Home Assistant using integrations. Examples of
@ -27,14 +27,14 @@
installed on Home Assistant OS. installed on Home Assistant OS.
- term: Automation - term: Automation
definition: > definition: >-
Automations connect one or more triggers to one or more actions in a Automations connect one or more triggers to one or more actions in a
'when trigger then do action' fashion with additional optional conditions. 'when trigger then do action' fashion with additional optional conditions.
For example, an automation might connect the trigger 'sunset' to the action For example, an automation might connect the trigger 'sunset' to the action
'turn the lights on' but only if the condition 'someone is home' is met. 'turn the lights on' but only if the condition 'someone is home' is met.
Pre-made automations for common use-cases are available via Pre-made automations for common use-cases are available via
[the blueprints feature](/docs/automation/using_blueprints/). [the blueprints feature](/docs/automation/using_blueprints/).
excerpt: > excerpt: >-
Automations in Home Assistant allow you to automatically respond to things Automations in Home Assistant allow you to automatically respond to things
that happen in and around your home. that happen in and around your home.
link: /docs/automation/ link: /docs/automation/
@ -42,45 +42,48 @@
- automations - automations
- term: Binary sensor - term: Binary sensor
definition: > definition: >-
A binary sensor returns information about things that only have two states - A binary sensor returns information about things that only have two states -
such as on or off. such as on or off.
link: /integrations/binary_sensor link: /integrations/binary_sensor
- term: Component - term: Component
definition: > definition: >-
Better known as: Integrations. Integrations used to be known as components. Better known as: Integrations. Integrations used to be known as components.
- term: Condition - term: Condition
definition: > definition: >-
Conditions are an optional part of an automation that will prevent an Conditions are an optional part of an automation that will prevent an
action from firing if they are not met. action from firing if they are not met.
link: /docs/scripts/conditions/ link: /docs/scripts/conditions/
- term: Cover - term: Cover
definition: > definition: >-
Covers are devices such as blinds, garage doors, etc that can be opened Covers are devices such as blinds, garage doors, etc that can be opened
and closed and optionally set to a specific position. and closed and optionally set to a specific position.
link: /integrations/cover link: /integrations/cover
- term: Customize - term: Customize
definition: > definition: >-
Customization allows you to overwrite the default parameters of your Customization allows you to overwrite the default parameters of your
devices in the configuration. devices in the configuration.
- term: Device - term: Device
definition: > definition: |-
A device is a named collection of entities that all represent the same A device is a model representing a physical or logical unit that contains entities.
physical/logical unit, which can do or observe something. An example,
for a device would be a smart plug named 'Coffee Machine' which provides **Example for a device as a physical unit**
a `switch` entity plus one or more `sensor` entities for power monitoring A smart plug named 'Coffee machine' which provides 2 entities: a `switch` entity to turn power on or off ('Coffee machine power switch') and a `sensor` entity for power monitoring ('Coffee machine power sensor').
or similar.
**Example for a device as a logical unit**
An ecobee thermostat with 4 room sensors. This thermostat is seen as 5 devices in Home Assistant: 1 device for the thermostat with 4 sensors, and 1 device for each room sensor. Each device can be in a different area and may have more than one input or output within that area.
Devices have properties such as ID, manufacturer, name, model, hardware version, firmware version, connections, etc.
excerpt: > excerpt: >
A device is a named collection of entities that all represent the same A device is a model representing a physical or logical unit that contains entities.
physical/logical unit, which can do or observe something.
- term: Device tracker - term: Device tracker
definition: > definition: >-
Device trackers are used to track the presence, or location, of a device. Device trackers are used to track the presence, or location, of a device.
link: /integrations/device_tracker link: /integrations/device_tracker
@ -90,7 +93,7 @@
they are discovered. they are discovered.
- term: Domain - term: Domain
definition: > definition: >-
Each integration in Home Assistant has a unique identifier: Each integration in Home Assistant has a unique identifier:
a domain. All of the entities and services available in Home Assistant a domain. All of the entities and services available in Home Assistant
are provided by integrations and thus belong to such a domain. The first are provided by integrations and thus belong to such a domain. The first
@ -104,47 +107,56 @@
It is often shown as the first part (before the dot) of entity IDs. It is often shown as the first part (before the dot) of entity IDs.
- term: Entity - term: Entity
definition: > definition: |-
An entity is the representation of a single control or data point of a An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service. Entities have states.
device or service inside Home Assistant. A single device or service can
thus provide multiple entities to be able to monitor and control all **Example for entities as part of a device**
features a device provides. For example, a combined temperature and A combined temperature and humidity sensor device provides two sensor entities. One for temperature (e.g. `sensor.temperature` with state `21.0` and unit `°C`) and one for humidity
humidity sensor, in general, provides two `sensor` entities. One for the (e.g. `sensor.humidity` with state `65.4` and unit `%`).
temperature (e.g., `sensor.temperature` with state `21.0` and unit `°C`)
and one for the humity **Example for entities as part of a service**
(e.g., `sensor.humidity` with state `65.4` and unit `%`). A weather service that provides 3 entities: wind speed, air pressure, and ozon level.
**Example of an entity used for control**
A fan that is turned on when the temperature exceeds 30 °C.
There are standardized types of entities for common integrations such as light, switch, camera, sensor, fan, or vacuum.
Some entities are not part of a device or service. Examples of standalone entities are automation, script, scene entities, and helper entities (e.g. input helpers).
Most properties of entities are related to the state. Entities have optional attributes such as friendly name, unit of measurement, and an icon or picture that can be displayed in the frontend.
link: /docs/configuration/state_object/
excerpt: > excerpt: >
An entity is the representation of a single control or data point of a An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service.
device or service inside Home Assistant.
- term: Event - term: Event
definition: > definition: >-
An event is when something happens. An event is when something happens.
link: /docs/configuration/events/ link: /docs/configuration/events/
- term: Frontend - term: Frontend
definition: > definition: >-
The frontend is a necessary component for the UI, it is also where you The frontend is a necessary component for the UI, it is also where you
can define your themes. can define your themes.
link: /integrations/frontend/ link: /integrations/frontend/
- term: Group - term: Group
definition: > definition: >-
Groups are a way to organize your entities into a single unit. Groups are a way to organize your entities into a single unit.
link: /integrations/group/ link: /integrations/group/
- term: HASS - term: HASS
definition: > definition: >-
HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for
Home Assistant. It is also the command-line tool. Home Assistant. It is also the command-line tool.
- term: HassOS - term: HassOS
definition: > definition: >-
Another name for Home Assistant Operating System Another name for Home Assistant Operating System
link: /hassio/installation/ link: /hassio/installation/
- term: Home Assistant Core - term: Home Assistant Core
definition: > definition: >-
Home Assistant Core is a Python program. It can be run on various operating Home Assistant Core is a Python program. It can be run on various operating
systems and is the basis for Home Assistant. When people are talking about systems and is the basis for Home Assistant. When people are talking about
Home Assistant Core they usually refer to a standalone installation method Home Assistant Core they usually refer to a standalone installation method
@ -155,7 +167,7 @@
program that powers every installation type, but can be installed standalone. program that powers every installation type, but can be installed standalone.
- term: Home Assistant Supervised - term: Home Assistant Supervised
definition: > definition: >-
Home Assistant Supervised is a full UI managed home automation ecosystem that Home Assistant Supervised is a full UI managed home automation ecosystem that
runs Home Assistant, the Home Assistant Supervisor and add-ons. It comes runs Home Assistant, the Home Assistant Supervisor and add-ons. It comes
pre-installed on Home Assistant OS, but can be installed on any Linux system. pre-installed on Home Assistant OS, but can be installed on any Linux system.
@ -165,13 +177,13 @@
Home Assistant Operating System. Home Assistant Operating System.
- term: Home Assistant Supervisor - term: Home Assistant Supervisor
definition: > definition: >-
The Home Assistant Supervisor is a program that manages a Home Assistant The Home Assistant Supervisor is a program that manages a Home Assistant
installation, taking care of installing and updating Home Assistant, installation, taking care of installing and updating Home Assistant,
add-ons, itself and, if used, updating the Home Assistant Operating System. add-ons, itself and, if used, updating the Home Assistant Operating System.
- term: Home Assistant Operating System - term: Home Assistant Operating System
definition: > definition: >-
Home Assistant OS, the Home Assistant Operating System, is an embedded, Home Assistant OS, the Home Assistant Operating System, is an embedded,
minimalistic, operating system designed to run the Home Assistant ecosystem minimalistic, operating system designed to run the Home Assistant ecosystem
on single board computers (like the Raspberry Pi) or Virtual Machines. on single board computers (like the Raspberry Pi) or Virtual Machines.
@ -182,7 +194,7 @@
minimalistic, operating system designed to run the Home Assistant ecosystem. minimalistic, operating system designed to run the Home Assistant ecosystem.
- term: Integration - term: Integration
definition: > definition: >-
Integrations connect and integrates Home Assistant with devices, services, Integrations connect and integrates Home Assistant with devices, services,
and more. Such an integration contains all the logic that takes care of and more. Such an integration contains all the logic that takes care of
vendor- and device-specific implementations such as authentication or vendor- and device-specific implementations such as authentication or
@ -196,18 +208,18 @@
link: /integrations/ link: /integrations/
- term: Lovelace - term: Lovelace
definition: > definition: >-
Lovelace is the original code name of the UI that is now known as Lovelace is the original code name of the UI that is now known as
[Home Assistant dashboards](/dashboards). [Home Assistant dashboards](/dashboards).
- term: Light - term: Light
definition: > definition: >-
A light has a brightness you can control, and optionally color temperature A light has a brightness you can control, and optionally color temperature
or RGB color control. or RGB color control.
link: /integrations/light link: /integrations/light
- term: Notification - term: Notification
definition: > definition: >-
You can use notifications to send messages, pictures, and more, to devices. You can use notifications to send messages, pictures, and more, to devices.
link: /integrations/#notifications link: /integrations/#notifications
@ -217,7 +229,7 @@
link: /docs/configuration/packages/ link: /docs/configuration/packages/
- term: Platform - term: Platform
definition: > definition: >-
Platforms are building blocks provided by some integrations to be used by Platforms are building blocks provided by some integrations to be used by
other integrations. For example, the [Light](/integrations/light) other integrations. For example, the [Light](/integrations/light)
integration provides the `light platform` that is utilized by all integration provides the `light platform` that is utilized by all
@ -229,7 +241,7 @@
link: /docs/configuration/platform_options/ link: /docs/configuration/platform_options/
- term: Scene - term: Scene
definition: > definition: >-
Scenes capture the states you want certain entities to be. For example, Scenes capture the states you want certain entities to be. For example,
a scene can specify that light A should be turned on and light B should a scene can specify that light A should be turned on and light B should
be bright red. be bright red.
@ -242,13 +254,13 @@
link: /docs/scripts/ link: /docs/scripts/
- term: Sensor - term: Sensor
definition: > definition: >-
Sensors return information about a thing, for instance the level of water Sensors return information about a thing, for instance the level of water
in a tank. in a tank.
link: /integrations/sensor/ link: /integrations/sensor/
- term: Selectors - term: Selectors
definition: > definition: >-
Selectors are components for the user interface. Some selectors can, Selectors are components for the user interface. Some selectors can,
for example, show a toggle button to turn something on or off, while another for example, show a toggle button to turn something on or off, while another
select can filter a list of devices to show only devices that have select can filter a list of devices to show only devices that have
@ -259,41 +271,68 @@
link: /docs/blueprint/selectors/ link: /docs/blueprint/selectors/
- term: Service - term: Service
definition: > definition: |-
Services are called to perform actions. The term service has 2 meanings in Home Assistant:
**The information service**
For example, the municipal waste management service that provides entities for organic, paper, and packaging waste. In terms of functionality, the information service is like a device. It is called *service* to avoid confusion, as it does not come with a piece of hardware.
**The software function that interacts with targets to make something happen**
A service carries out one specific task, for example: turning on the light in the living room or sending a notification to a mobile phone.
A service has targets and data. Service targets are: areas, devices, and entities. Service data carries the information required to define the desired state change in the target. For example, the target, together with brightness 150 and RGB color `[255,0,0]`, or the message “Your coffee is ready”.
Services can be used in, for example, automation, scripts, dashboards, or voice commands to control your home.
Home Assistant provides a series of predefined services, such as `homeassistant.turn_on`, `homeassistant.toggle`, or `homeassistant.reload`.
excerpt: >
A service carries out one specific task, for example: turn on the light in the
living room. A service has targets and data and can be called by actions, a
dashboard, or via voice command.
link: /docs/scripts/service-calls/ link: /docs/scripts/service-calls/
- term: State
definition: |-
The state holds the information of interest of an entity. For example, if a light is on or off, the current temperature, or the amount of energy used. The data type of state is `string` (a textual value). Entities store 2 timestamps related to the state: `last_updated` and `last_changed`. Each entity has exactly one state and the state only holds one value at a time. However, entities can store attributes related to that state. For example, the state of a light is _on_, and the related state attributes could be its current brightness and color values.
State changes can be used as the source of triggers. The current state can be used in conditions.
link: /docs/scripts/configuration/state_object/
excerpt: >
The state holds the information of interest of an entity, for example, if a light is on or off. Each entity has exactly one state and the state only holds one value at a time. However, entities can store attributes related to that state such as brightness, color, or a unit of measurement.
- term: Switch - term: Switch
definition: > definition: >-
Switches are things that have two states you can select between, such as Switches are things that have two states you can select between, such as
turning on or off a socket. turning on or off a socket.
link: /integrations/switch/ link: /integrations/switch/
- term: Template - term: Template
definition: > definition: >-
A template is an automation definition that can include variables for the A template is an automation definition that can include variables for the
service or data from the trigger values. This allows automations to generate service or data from the trigger values. This allows automations to generate
dynamic actions. dynamic actions.
link: /docs/automation/templating/ link: /docs/automation/templating/
- term: Trigger - term: Trigger
definition: > definition: >-
A trigger is a set of values or conditions of a platform that are defined A trigger is a set of values or conditions of a platform that are defined
to cause an automation to run. to cause an automation to run.
link: /docs/automation/trigger/ link: /docs/automation/trigger/
- term: TTS - term: TTS
definition: > definition: >-
TTS (text to speech) allows Home Assistant to talk to you. TTS (text to speech) allows Home Assistant to talk to you.
link: /integrations/tts/ link: /integrations/tts/
- term: Variables - term: Variables
definition: > definition: >-
Variables are used to store values in memory that can be processed Variables are used to store values in memory that can be processed
e.g. in a script. for example, in a script.
link: /docs/scripts/#variables link: /docs/scripts/#variables
- term: Zone - term: Zone
definition: > definition: >-
Zones are areas that can be used for presence detection. Zones are areas that can be used for presence detection.
link: /integrations/zone/ link: /integrations/zone/

View File

@ -3,15 +3,15 @@ title: "Automation Editor"
description: "Instructions on how to use the automation editor." description: "Instructions on how to use the automation editor."
--- ---
The automation editor is an easy way of creating and editing automations from the UI. This page uses the [Random sensor](/integrations/random#sensor) as an example, though any other sensor with a numeric value, can be used as well. The automation editor is an easy way of creating and editing automations from the UI. This page uses the [Random sensor](/integrations/random#sensor) as an example, though any other sensor with a numeric value can be used as well.
From the UI choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **Create Automation** button in the lower right corner to get started. You can create an automation based on a [blueprint](/docs/automation/using_blueprints/) or start from scratch. From the UI, choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **Create Automation** button in the lower right corner to get started. You can create an automation based on a [blueprint](/docs/automation/using_blueprints/) or start from scratch.
<p class='img'> <p class='img'>
<img src='/images/docs/automation-editor/create-automation.png' /> <img src='/images/docs/automation-editor/create-automation.png' />
</p> </p>
Select "Start with an empty automation" and choose a meaningful name for your new automation. Select **Start with an empty automation** and choose a meaningful name for your new automation.
<p class='img'> <p class='img'>
<img src='/images/docs/automation-editor/new-automation.png' /> <img src='/images/docs/automation-editor/new-automation.png' />

View File

@ -788,10 +788,10 @@ automation:
webhook_id: "some_hook_id" webhook_id: "some_hook_id"
``` ```
You can run this automation by sending an HTTP POST request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. Here is an example using the **curl** command line program, with an example data payload: You can run this automation by sending an HTTP POST request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. Here is an example using the **curl** command line program, with an example form data payload:
```shell ```shell
curl -X POST -d '{ "key": "value" }' https://your-home-assistant:8123/api/webhook/some_hook_id curl -X POST -d 'key=value&key2=value2' https://your-home-assistant:8123/api/webhook/some_hook_id
``` ```
Webhooks support HTTP POST, PUT, and HEAD requests; POST requests are recommended. HTTP GET requests are not supported. Webhooks support HTTP POST, PUT, and HEAD requests; POST requests are recommended. HTTP GET requests are not supported.
@ -802,12 +802,12 @@ Note that a given webhook can only be used in one automation at a time. That is,
### Webhook data ### Webhook data
You can send a data payload, either as encoded form data or JSON data. The payload is available in an automation template as either `trigger.json` or `trigger.data`. URL query parameters are available in the template as `trigger.query`. Payloads may either be encoded as form data or JSON. Depending on that, its data will be available in an automation template as either `trigger.data` or `trigger.json`. URL query parameters are also available in the template as `trigger.query`.
In order to reference `trigger.json`, the `Content-Type` header must be specified with a value of `application/json`, e.g.: Note that to use JSON encoded payloads, the `Content-Type` header must be set to `application/json`, e.g.:
```bash ```bash
curl -X POST -H "Content-Type: application/json" https://your-home-assistant:8123/api/webhook/some_hook_id curl -X POST -H "Content-Type: application/json" -d '{ "key": "value" }' https://your-home-assistant:8123/api/webhook/some_hook_id
``` ```
### Webhook security ### Webhook security

View File

@ -124,7 +124,7 @@ This event is fired when a state has changed. It contains the entity identifier
This event is fired after a theme has been set or reloaded. It contains no additional data. This event is fired after a theme has been set or reloaded. It contains no additional data.
## `user_added` ### `user_added`
This event is fired when a user has been added. This event is fired when a user has been added.
@ -132,7 +132,7 @@ This event is fired when a user has been added.
| --------- | ------------------------------- | | --------- | ------------------------------- |
| `user_id` | Identification of the new user. | | `user_id` | Identification of the new user. |
## `user_removed` ### `user_removed`
This event is fired when a user has been removed. This event is fired when a user has been removed.
@ -140,9 +140,9 @@ This event is fired when a user has been removed.
| --------- | ----------------------------------- | | --------- | ----------------------------------- |
| `user_id` | Identification of the removed user. | | `user_id` | Identification of the removed user. |
### Built-in events (default integrations) ## Built-in events (default integrations)
## `automation_reloaded` ### `automation_reloaded`
Integration: [`automation`](/integrations/automation/) Integration: [`automation`](/integrations/automation/)
@ -150,7 +150,7 @@ This event is fired when automations have been reloaded and thus might have chan
This event contains no additional data. This event contains no additional data.
## `automation_triggered` ### `automation_triggered`
Integration: [`automation`](/integrations/automation/) Integration: [`automation`](/integrations/automation/)
@ -161,7 +161,7 @@ This event is fired when an automation is triggered.
| `name` | The name of the automation. | | `name` | The name of the automation. |
| `entity_id` | The identifier of the automation. | | `entity_id` | The identifier of the automation. |
## `scene_reloaded` ### `scene_reloaded`
Integration: [`homeassistant`](/integrations/homeassistant/) Integration: [`homeassistant`](/integrations/homeassistant/)
@ -169,7 +169,7 @@ This event is fired when scenes have been reloaded and thus might have changed.
This event contains no additional data. This event contains no additional data.
## `script_started` ### `script_started`
Integration: [`script`](/integrations/script/) Integration: [`script`](/integrations/script/)

View File

@ -510,7 +510,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
- `as_datetime()` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object. - `as_datetime()` converts a string containing a timestamp, or valid UNIX timestamp, to a datetime object.
- `as_timestamp(value, default)` converts datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter. - `as_timestamp(value, default)` converts datetime object or string to UNIX timestamp. If that fails, returns the `default` value, or if omitted raises an error. This function can also be used as a filter.
- `as_local()` converts datetime object to local time. This function can also be used as a filter. - `as_local()` converts datetime object to local time. This function can also be used as a filter.
- `strptime(string, format)` parses a string based on a [format](https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, returns the `default` value, or if omitted raises an error. - `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
- `relative_time` converts datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g., if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_. - `relative_time` converts datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g., if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_.
- `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks. - `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks.

View File

@ -0,0 +1,31 @@
---
title: "Glossary"
description: "Home Assistant's Glossary."
---
{% assign entries = site.data.glossary | sort: 'term' %}
The glossary covers terms which are used around Home Assistant.
<div class="config-vars basic">
{% for entry in entries %}
<div class="config-vars-item">
<div class="config-vars-label">
<a name="{{ entry.term | slugify }}" class="title-link" href="#{{ entry.term | slugify }}"></a>
<span class="config-vars-label-name">{{ entry.term }}</span>
</div>
<div class="config-vars-description-and-children">
<span class="config-vars-description">
{{ entry.definition | markdownify | newline_to_br }}
{%- if entry.link -%}
<a href="{{ entry.link }}">Read more about: {{ entry.term }}</a>
{%- endif -%}
</span>
</div>
</div>
{% endfor %}
</div>

View File

@ -1,18 +0,0 @@
---
title: "Glossary"
description: "Home Assistant's Glossary."
---
{% assign entries = site.data.glossary | sort: 'term' %}
The glossary covers terms which are used around Home Assistant.
{% configuration_basic %}
{% for entry in entries %}
"{{ entry.term }}":
description: "{{ entry.definition }}
{% if entry.link %}<br />[Read more about: {{ entry.term }}]({{ entry.link }}){% endif %}"
{% endfor %}
{% endconfiguration_basic %}

View File

@ -5,7 +5,7 @@ toc: true
no_toc: true 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 component] but can also be embedded in {% term automations %} and [Alexa/Amazon Echo] configurations. 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 automation the `trigger` variable is available. See [Available-Trigger-Data](/docs/automation/templating/#available-trigger-data).
@ -210,7 +210,7 @@ These actions allow a script to wait for entities in the system to be in a certa
This action evaluates the template, and if true, the script will continue. If not, then it will wait until it is true. This 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/) component that will update minutely or daily. 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.
{% raw %} {% raw %}
```yaml ```yaml
@ -892,22 +892,22 @@ script:
# This action will not run, as it is disabled. # This action will not run, as it is disabled.
# The message will not be sent. # The message will not be sent.
- enabled: false - enabled: false
alias: "Notify that ceiling light is being turned on" alias: "Notify that the ceiling light is being turned on"
service: notify.notify service: notify.notify
data: data:
message: "Turning on the ceiling light!" message: "Turning on the ceiling light!"
# This action will run, as it is not disabled # This action will run, as it is not disabled
- alias: "Turn on ceiling light" - alias: "Turn on the ceiling light"
service: light.turn_on service: light.turn_on
target: target:
entity_id: light.ceiling entity_id: light.ceiling
``` ```
[Script component]: /integrations/script/ [Script integration]: /integrations/script/
[automations]: /getting-started/automation-action/ [automations]: /docs/automation/action/
[Alexa/Amazon Echo]: /integrations/alexa/ [Alexa/Amazon Echo]: /integrations/alexa/
[service calls page]: /getting-started/scripts-service-calls/ [service calls page]: /docs/scripts/service-calls/
[conditions page]: /getting-started/scripts-conditions/ [conditions page]: /docs/scripts/conditions/
[shorthand-template]: /docs/scripts/conditions/#template-condition-shorthand-notation [shorthand-template]: /docs/scripts/conditions/#template-condition-shorthand-notation
[script variables]: /integrations/script/#configuration-variables [script variables]: /integrations/script/#configuration-variables

View File

@ -57,7 +57,7 @@ data:
rgb_color: [255, 0, 0] rgb_color: [255, 0, 0]
``` ```
A full list of the parameters for a service can be found on the documentation page of each component, in the same way as it's done for the `light.turn_on` [service](/integrations/light/#service-lightturn_on). A full list of the parameters for a service can be found on the documentation page of each integration, in the same way as it's done for the `light.turn_on` [service](/integrations/light/#service-lightturn_on).
### Use templates to decide which service to call ### Use templates to decide which service to call

View File

@ -281,6 +281,29 @@ _All these can be extended if your usage calls for more resources._
```bash ```bash
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --graphics none --boot uefi virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --graphics none --boot uefi
``` ```
<div class="note info">
If you have a USB dongle to attach, you need to add the option `--hostdev busID.deviceId`. You can discover these IDs via the `lsusb` command.
As example, if `lsusb` output is:
```bash
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 004: ID 30c9:0052 Luxvisions Innotech Limited Integrated RGB Camera
Bus 003 Device 003: ID 1a86:55d4 QinHeng Electronics SONOFF Zigbee 3.0 USB Dongle Plus V2
Bus 003 Device 002: ID 06cb:00fc Synaptics, Inc.
Bus 003 Device 005: ID 8087:0033 Intel Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```
You can recognize the Sonoff dongle at `Bus 003 Device 003`. So the command to install the VM will become:
```bash
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --graphics none --boot uefi --hostdev 003.003
```
Note that this configuration (bus 003, device 003) is just an example, your dongle could be on another bus and/or with another device ID.
Please check the correct IDs of your USB dongle with `lsusb`.
</div>
{% if page.installation_type == 'windows' or page.installation_type == 'linux' %} {% if page.installation_type == 'windows' or page.installation_type == 'linux' %}

View File

@ -143,7 +143,7 @@ The tvOS apps themselves decide what commands they support and when they support
them. Likely, the app you are using does not support the action you are trying them. Likely, the app you are using does not support the action you are trying
to perform. Before writing an issue about this, verify if the same action is possible with the to perform. Before writing an issue about this, verify if the same action is possible with the
Remote app in iOS. If that is the case, please write a bug in Remote app in iOS. If that is the case, please write a bug in
[pyatv](https://github.com/postlund/pyatv/issues/new?assignees=&labels=bug&template=bug_report.md&title=) [pyatv](https://github.com/postlund/pyatv/issues/new?assignees=&labels=bug&template=bug_report.yml)
and include logs (see Debugging below). and include logs (see Debugging below).
### I'm trying to play a stream via AirPlay, but it doesn't work ### I'm trying to play a stream via AirPlay, but it doesn't work

View File

@ -72,6 +72,7 @@ Known supported devices:
- Marantz AV7702 - Marantz AV7702
- Marantz AV7703 - Marantz AV7703
- Marantz AV7704 - Marantz AV7704
- Marantz CINEMA 50
- Marantz M-CR510 - Marantz M-CR510
- Marantz M-CR511 - Marantz M-CR511
- Marantz M-CR603 - Marantz M-CR603
@ -80,6 +81,7 @@ Known supported devices:
- Marantz SR5006 - Marantz SR5006
- Marantz SR5008 - Marantz SR5008
- Marantz SR5011 - Marantz SR5011
- Marantz SR5015
- Marantz SR6007 - SR6012 - Marantz SR6007 - SR6012
- Marantz SR7007 - Marantz SR7007
- Marantz SR7012 - Marantz SR7012

View File

@ -20,7 +20,7 @@ To configure GPSLogger, you must set it up via the integrations panel in the con
## Setup on your smartphone ## Setup on your smartphone
Install GPSLogger for Android from [GitHub](https://github.com/mendhak/gpslogger/releases) or [F-Droid](https://f-droid.org/en/packages/com.mendhak.gpslogger/) on your device. Install GPSLogger for Android from [GitHub](https://github.com/mendhak/gpslogger/releases) or [F-Droid](https://f-droid.org/packages/com.mendhak.gpslogger/) on your device.
After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**. After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**.

View File

@ -20,14 +20,14 @@ ha_integration_type: integration
ha_quality_scale: platinum ha_quality_scale: platinum
--- ---
Integration for the [HomeWizard Energy](https://www.homewizard.nl/energy) platform. It can collect data locally from the HomeWizard Energy products and create them as sensors in Home Assistant. Integration for the [HomeWizard Energy](https://www.homewizard.com) platform. It can collect data locally from the HomeWizard Energy products and create them as sensors in Home Assistant.
**Supported devices** **Supported devices**
- [Wi-Fi P1 Meter](https://www.homewizard.nl/p1-meter): Sensors for power import/export, energy consumption (single or three phases). information about your smart meter and gas. (Model: `HWE-P1`) - [Wi-Fi P1 Meter](https://www.homewizard.com/p1-meter): Sensors for power import/export, energy consumption (single or three phases). information about your smart meter and gas. (Model: `HWE-P1`)
- [Wi-Fi Energy Socket](https://www.homewizard.nl/energy-socket): Sensors for power import/export and energy consumption and switches for controlling the outlet (model: `HWE-SKT`) - [Wi-Fi Energy Socket](https://www.homewizard.com/energy-socket): Sensors for power import/export and energy consumption and switches for controlling the outlet (model: `HWE-SKT`)
- [Wi-Fi Watermeter](https://www.homewizard.com/watermeter): Sensors for active and total water usage (model: `HWE-WTR`) - [Wi-Fi Watermeter](https://www.homewizard.com/watermeter): Sensors for active and total water usage (model: `HWE-WTR`)
- [Wi-Fi kWh Meter](https://www.homewizard.nl/kwh-meter): Sensors for power import/export and energy consumption. (Models: `SDM230-wifi`, `SDM630-wifi`) - [Wi-Fi kWh Meter](https://www.homewizard.com/kwh-meter): Sensors for power import/export and energy consumption. (Models: `SDM230-wifi`, `SDM630-wifi`)
<div class='note'> <div class='note'>

View File

@ -56,7 +56,7 @@ host:
default: localhost default: localhost
port: port:
type: integer type: integer
description: Port to use. 2.xx - No default port for 2.xx, otherwise 8086. description: Port to use. 2.xx - Must specify port for 2.xx, otherwise 8086.
required: false required: false
default: 8086 default: 8086
path: path:

View File

@ -49,7 +49,7 @@ Most lights do not support all attributes. You can check the integration documen
| `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets. | `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets.
| `rgbw_color` | yes | A list containing four integers between 0 and 255 representing the RGBW color you want the light to be. Four comma-separated integers that represent the color in RGBW (red, green, blue, white), within square brackets. This attribute will be ignored by lights which do not support RGBW colors. | `rgbw_color` | yes | A list containing four integers between 0 and 255 representing the RGBW color you want the light to be. Four comma-separated integers that represent the color in RGBW (red, green, blue, white), within square brackets. This attribute will be ignored by lights which do not support RGBW colors.
| `rgbww_color` | yes | A list containing five integers between 0 and 255 representing the RGBWW color you want the light to be. Five comma-separated integers that represent the color in RGBWW (red, green, blue, cold white, warm white), within square brackets. This attribute will be ignored by lights which do not support RGBWW colors. | `rgbww_color` | yes | A list containing five integers between 0 and 255 representing the RGBWW color you want the light to be. Five comma-separated integers that represent the color in RGBWW (red, green, blue, cold white, warm white), within square brackets. This attribute will be ignored by lights which do not support RGBWW colors.
| `color_temp_kelvin` | yes | An integer in Kelvin representing the color temperature you want the light to be. | `kelvin` | yes | An integer in Kelvin representing the color temperature you want the light to be.
| `color_temp` | yes | Alternatively, you can specify the color temperature in Mireds. | `color_temp` | yes | Alternatively, you can specify the color temperature in Mireds.
| `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported. | `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported.
| `brightness` | yes | Integer between 0 and 255 for how bright the light should be, where 0 means the light is off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. | `brightness` | yes | Integer between 0 and 255 for how bright the light should be, where 0 means the light is off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light.

View File

@ -24,10 +24,10 @@ ha_integration_type: integration
Integrates LOOKin devices into Home Assistant. Integrates LOOKin devices into Home Assistant.
[LOOKin](https://look-in.club/en/devices) focuses on providing devices that integrate with a local api and can be used internet free. [LOOKin](https://look-in.club/devices) focuses on providing devices that integrate with a local api and can be used internet free.
### Supported devices ### Supported devices
LOOKin Remote2: internet free Wi-Fi+IR Smart Home Control [LOOKin Remote2](https://look-in.club/store/remote2): internet free Wi-Fi+IR Smart Home Control
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}

View File

@ -37,7 +37,7 @@ Both the Matter standard itself and its implementation within Home Assistant are
One of the great features of Matter is the so called _Multi Fabric_ feature: you can join the same device to multiple controllers. For example: add it to Google Home, Apple Home, and Home Assistant at the same time. One of the great features of Matter is the so called _Multi Fabric_ feature: you can join the same device to multiple controllers. For example: add it to Google Home, Apple Home, and Home Assistant at the same time.
For devices where Home Assistant provides an native integration (with local API), Matter may not be the best option. Matter, being a universal standard, might not have the nitty-gritty features that come with a product specific protocol. A good example is Philips Hue: the communication over Matter only provides the basic controls over lights, the official integration brings all Hue unique features like (dynamic) scenes, entertainment mode, etc. For devices where Home Assistant provides a native integration (with local API), Matter may not be the best option. Matter, being a universal standard, might not have the nitty-gritty features that come with a product specific protocol. A good example is Philips Hue: the communication over Matter only provides the basic controls over lights, the official integration brings all Hue unique features like (dynamic) scenes, entertainment mode, etc.
<p class='note'> <p class='note'>
The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices (and any Thread Border routers) must be on the same LAN/VLAN as Home Assistant. Implementations like mDNS reflectors usually do more harm than good. The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices (and any Thread Border routers) must be on the same LAN/VLAN as Home Assistant. Implementations like mDNS reflectors usually do more harm than good.

View File

@ -65,7 +65,7 @@ If everything is working fine you can disable the pure `api` service in RouterOS
To use this device tracker you need restricted privileges only. To enhance the security of your MikroTik device create a "read only" user who is able to connect to API and perform ping test only: To use this device tracker you need restricted privileges only. To enhance the security of your MikroTik device create a "read only" user who is able to connect to API and perform ping test only:
```bash ```bash
/user group add name=homeassistant policy=read,api,!local,!telnet,!ssh,!ftp,!reboot,!write,!policy,test,!winbox,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp /user group add name=homeassistant policy=read,api,test,!local,!telnet,!ssh,!ftp,!reboot,!write,!policy,!winbox,!password,!web,!sniff,!sensitive,!romon,!dude,!tikapp
/user add group=homeassistant name=homeassistant /user add group=homeassistant name=homeassistant
/user set password="YOUR_PASSWORD" homeassistant /user set password="YOUR_PASSWORD" homeassistant
``` ```

View File

@ -261,7 +261,7 @@ scan_interval:
description: Defines the update interval of the entity in seconds, if scan_interval = 0 polling is stopped. Entities are unavailable until the first response is received, except for entities with scan_interval = 0, these entities are available from startup. description: Defines the update interval of the entity in seconds, if scan_interval = 0 polling is stopped. Entities are unavailable until the first response is received, except for entities with scan_interval = 0, these entities are available from startup.
required: false required: false
type: integer type: integer
default: 10 default: 15
slave: slave:
description: The number of the slave. description: The number of the slave.
required: false required: false

View File

@ -13,7 +13,7 @@ ha_integration_type: system
This integration handles redirects from the [My Home Assistant](https://my.home-assistant.io) service. This integration handles redirects from the [My Home Assistant](https://my.home-assistant.io) service.
My Home Assistant allows the documentation to link you to specific pages in your Home Assistant instance. See the [My Home Assistant FAQ](https://my.home-assistant.io/faq.html) for more information. My Home Assistant allows the documentation to link you to specific pages in your Home Assistant instance. See the [My Home Assistant FAQ](https://my.home-assistant.io/faq/) for more information.
## Configuration ## Configuration

View File

@ -19,7 +19,7 @@ ha_platforms:
ha_integration_type: integration ha_integration_type: integration
--- ---
The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/) Profile S conformant device in Home Assistant. This requires the [`ffmpeg` component](/integrations/ffmpeg/) to be already configured. The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/) Profile S conformant device in Home Assistant. This requires the [`ffmpeg` integration](/integrations/ffmpeg/) to be already configured.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
@ -42,14 +42,14 @@ You can configure specific FFmpeg options through the integration options flow b
| Option | Description | | Option | Description |
| -------| ----------- | | -------| ----------- |
| RTSP transport mechanism | RTSP transport protocols. The possible options are: `tcp`, `udp`, `udp_multicast`, `http`. | | RTSP transport mechanism | RTSP transport protocols. The possible options are: `tcp`, `udp`, `udp_multicast`, `http`. |
| Extra FFmpeg arguments | Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [`ffmpeg` component](/integrations/ffmpeg). | | Extra FFmpeg arguments | Extra options to pass to `ffmpeg`, e.g., image quality or video filter options. More details in [`ffmpeg` integration](/integrations/ffmpeg). |
| Use wallclock as timestamps | ([Advanced Mode](/blog/2019/07/17/release-96/#advanced-mode) only) Rewrite the camera timestamps. This may help with playback or crashing issues from Wi-Fi cameras or cameras of certain brands (e.g., EZVIZ). | | Use wallclock as timestamps | ([Advanced Mode](/blog/2019/07/17/release-96/#advanced-mode) only) Rewrite the camera timestamps. This may help with playback or crashing issues from Wi-Fi cameras or cameras of certain brands (e.g., EZVIZ). |
### Supported Sensors ### Supported Sensors
This integration uses the ONVIF pullpoint subscription API to process events into sensors that will be automatically added to Home Assistant. Below is a list of currently supported event topics along with the entities they create. This integration uses the ONVIF pullpoint subscription API to process events into sensors that will be automatically added to Home Assistant. Below is a list of currently supported event topics along with the entities they create.
To help with development of this component, enable `info` level logging for `homeassistant.components.onvif` and create an issue on GitHub for any messages that show _"No registered handler for event"_. To help with development of this integration, enable `info` level logging for `homeassistant.components.onvif` and create an issue on GitHub for any messages that show _"No registered handler for event"_.
| Topic(s) | Entity Type | Device Class | Description | | Topic(s) | Entity Type | Device Class | Description |
|----------|-------------|--------------|-------------| |----------|-------------|--------------|-------------|

View File

@ -21,7 +21,7 @@ This integration is only available on Home Assistant Core installation types. Un
This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_ This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_
The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with FFmpeg, so you should make sure you go through the backport process documented in [The FFmpeg component](/integrations/ffmpeg/) before doing this. Install the following basic dependencies: The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with FFmpeg, so you should make sure you go through the backport process documented in [The FFmpeg integration](/integrations/ffmpeg/) before doing this. Install the following basic dependencies:
```bash ```bash
sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson-c-dev make pkg-config libcurl4-openssl-dev sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson-c-dev make pkg-config libcurl4-openssl-dev

View File

@ -13,7 +13,7 @@ ha_integration_type: integration
The `proximity` integration allows you to monitor the proximity of devices or persons to a particular [zone](/integrations/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data. The `proximity` integration allows you to monitor the proximity of devices or persons to a particular [zone](/integrations/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data.
This integration is useful to reduce the number of automation rules required when wanting to perform automations based on locations outside a particular zone. The [zone](/getting-started/automation-trigger/#zone-trigger) and [state](/getting-started/automation-trigger/#state-trigger) based triggers allow similar control but the number of rules grows exponentially when factors such as direction of travel need to be taken into account. This integration is useful to reduce the number of automation rules required when wanting to perform automations based on locations outside a particular zone. The [zone](/docs/automation/trigger#zone-trigger) and [state](/docs/automation/trigger#state-trigger) based triggers allow similar control but the number of rules grows exponentially when factors such as direction of travel need to be taken into account.
Some examples of its use include: Some examples of its use include:

View File

@ -17,8 +17,10 @@ ha_platforms:
ha_dhcp: true ha_dhcp: true
--- ---
The PrusaLink integration allows you to monitor your [Prusa 3D printer](https://www.prusa3d.com) and its progress with your Home Assistant installation. The PrusaLink integration allows you to monitor your [Prusa 3D printer](https://www.prusa3d.com) and its progress with your Home Assistant installation. This integration is currently limited to the Prusa Mini.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
To obtain the API key, on your printer navigate to Settings -> Network -> PrusaLink. It will then be shown at the bottom of the screen.
This integration requires PrusaLink v2. If you have the Prusa MINI, you need to run firmware 4.4.0 or later. This integration requires PrusaLink v2. If you have the Prusa MINI, you need to run firmware 4.4.0 or later.

View File

@ -50,6 +50,7 @@ Depending on the supported features of the camera binary sensors are added for:
These sensors are polled every 60 seconds and receive ONVIF push events for immediate updates. These sensors are polled every 60 seconds and receive ONVIF push events for immediate updates.
Not all camera models generate ONVIF push events for all event types, some binary sensors might, therefore, only be polled. Not all camera models generate ONVIF push events for all event types, some binary sensors might, therefore, only be polled.
For list of Reolink products that support ONVIF see the [Reolink Support Site](https://support.reolink.com/hc/en-us/articles/900000617826).
## Number entities ## Number entities
@ -107,6 +108,7 @@ The following models are lacking the HTTP webserver API and can therfore not wor
- Older firmware versions do not expose the necessary information the integration needs to function. Ensure the camera is updated to the [latest firmware](https://reolink.com/download-center/) prior to setting up the integration. Note that Reolink auto update and check for update functions in the app/windows/web client often do not show the latest available firmware version. Therefore check the version in the [Reolink download center](https://reolink.com/download-center/) online. - Older firmware versions do not expose the necessary information the integration needs to function. Ensure the camera is updated to the [latest firmware](https://reolink.com/download-center/) prior to setting up the integration. Note that Reolink auto update and check for update functions in the app/windows/web client often do not show the latest available firmware version. Therefore check the version in the [Reolink download center](https://reolink.com/download-center/) online.
- Ensure at least one of the HTTP/HTTPS ports is enabled in the [windows](https://reolink.com/software-and-manual/)/web client under `Settings`->`Network`->`Advanced`->`Port Settings`, see [additional instructions](https://support.reolink.com/hc/en-us/articles/900004435763-How-to-Set-up-Reolink-Ports-Settings-via-Reolink-Client-New-Client-) on the Reolink site. - Ensure at least one of the HTTP/HTTPS ports is enabled in the [windows](https://reolink.com/software-and-manual/)/web client under `Settings`->`Network`->`Advanced`->`Port Settings`, see [additional instructions](https://support.reolink.com/hc/en-us/articles/900004435763-How-to-Set-up-Reolink-Ports-Settings-via-Reolink-Client-New-Client-) on the Reolink site.
- On some camera models, the RTMP port needs to be enabled in order for the HTTP(S) port to function properly. Make sure this port is also enabled if you get a `Cannot connect to host` error while one of the HTTP/HTTPS ports is already enabled.
## Reolink firmware limitations ## Reolink firmware limitations

View File

@ -11,7 +11,7 @@ ha_platforms:
ha_integration_type: integration ha_integration_type: integration
--- ---
The `seventeentrack` sensor platform allows users to get package data tied to their [17track.net](https://www.17track.net/en) account. The platform creates both summary sensors, which show the number of packages in a current state (e.g., "In Transit"), as well as individual sensors for each package within the account. The `seventeentrack` sensor platform allows users to get package data tied to their [17track.net](https://www.17track.net/) account. The platform creates both summary sensors, which show the number of packages in a current state (e.g., "In Transit"), as well as individual sensors for each package within the account.
<div class='note warning'> <div class='note warning'>

View File

@ -53,7 +53,7 @@ We recommend using `unicast` for communication. To enable this, enter the local
## Shelly device configuration (generation 2) ## Shelly device configuration (generation 2)
Generation 2 devices use the `RPC` protocol to communicate with the integration. Battery powered devices need manual outbound websocket configuration, Navigate to the local IP address of your Shelly device, **Networks** >> **Outbound websocket** and check the box **Enable**, under server enter the following address: Generation 2 devices use the `RPC` protocol to communicate with the integration. Battery powered devices need manual outbound websocket configuration, Navigate to the local IP address of your Shelly device, **Settings** >> **Connectivity** >> **Outbound websocket** and check the box **Enable Outbound Websocket**, under server enter the following address:
`ws://` + `Home_Assistant_local_ip_address:Port` + `/api/shelly/ws` (for example: `ws://192.168.1.100:8123/api/shelly/ws`), click **Apply** to save the settings. `ws://` + `Home_Assistant_local_ip_address:Port` + `/api/shelly/ws` (for example: `ws://192.168.1.100:8123/api/shelly/ws`), click **Apply** to save the settings.

View File

@ -26,19 +26,3 @@ The SolarEdge Monitoring API has a daily rate limit of 300 requests. In order to
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
## Additional template sensor
In case you would like to convert the values for example to kWh instead of the default Wh, you can use the [template platform](/integrations/template).
{% raw %}
```yaml
# Example configuration.yaml entry for template platform
template:
- sensor:
- name: solaredge_energy_this_year_template
unit_of_measurement: kWh
state: "{{ (states('sensor.solaredge_energy_this_year') | float / 1000) | round(2) }}"
```
{% endraw %}

View File

@ -63,19 +63,3 @@ sensor:
name: SolarEdge name: SolarEdge
ip_address: 192.168.1.123 ip_address: 192.168.1.123
``` ```
In case you would like to convert the values for example to kWh instead of the default Wh, you can use the [template platform](/integrations/template).
{% raw %}
```yaml
# Example configuration.yaml entry for sensor template platform
template:
- sensor:
- name: solaredge_energy_this_year_template
state: "{{ (states('sensor.solaredge_energy_this_year') | float / 1000) | round(2) }}"
unit_of_measurement: "KWh"
icon: "mdi:solar-power"
```
{% endraw %}

View File

@ -37,7 +37,7 @@ provide you with the Spotify application credentials Home Assistant needs
to allow you to log in with your Spotify account. to allow you to log in with your Spotify account.
1. If Spotify was previously integrated with your Home Assistant with _outdated_ credentials, it might be required to remove these old Spotify account credentials using the {% my application_credentials title="Home Assistant Application Credentials dashboard" %}. 1. If Spotify was previously integrated with your Home Assistant with _outdated_ credentials, it might be required to remove these old Spotify account credentials using the {% my application_credentials title="Home Assistant Application Credentials dashboard" %}.
2. Log in to the [Spotify Developer](https://developer.spotify.com) Dashboard. 2. Log in to the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard).
3. Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page. 3. Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page.
4. Click the **CREATE AN APP** button in the top right. Enter a name and 4. Click the **CREATE AN APP** button in the top right. Enter a name and
description; feel free to use any name and description you like. description; feel free to use any name and description you like.

View File

@ -15,7 +15,7 @@ Integrate your [Start.ca](https://www.start.ca/) account information into Home A
## Setup ## Setup
You can get your API key from: [Start.ca Usage API](https://www.start.ca/account/usage/api) You can get your API key from: [Start.ca Usage API](https://portal.start.ca/account/usage/api)
## Configuration ## Configuration

View File

@ -29,11 +29,11 @@ The `statistics` integration is different to [Long-term Statistics](https://deve
## Characteristics ## Characteristics
The following statistical characteristics are available. Pay close attention to the right configuration of `sampling_size` and/or `max_age`, as most characteristics are directly influenced by these settings. The following options for the configuration parameter `state_characteristic` are available as staticical characteristics. Pay close attention to the correct configuration of `sampling_size` and/or `max_age`, as most characteristics are directly influenced by these settings.
### Numeric Source Sensor ### Numeric Source Sensor
The following characteristics are supported for `sensor` source sensors: The following are supported for `sensor` source sensors `state_characteristic`:
| State Characteristic | Description | | State Characteristic | Description |
| -------------------- | ----------- | | -------------------- | ----------- |
@ -66,7 +66,7 @@ The following characteristics are supported for `sensor` source sensors:
### Binary Source Sensor ### Binary Source Sensor
The following characteristic are supported for `binary_sensor` source sensors: The following are supported for `binary_sensor` source sensors `state_characteristic`:
| State Characteristic | Description | | State Characteristic | Description |
| -------------------- | ----------- | | -------------------- | ----------- |
@ -128,7 +128,7 @@ name:
default: Stats default: Stats
type: string type: string
state_characteristic: state_characteristic:
description: The characteristic that should be used as the state of the statistics sensor (see table above). description: The characteristic that should be used as the state of the statistics sensor (see tables above).
required: true required: true
type: string type: string
sampling_size: sampling_size:

View File

@ -35,7 +35,7 @@ The SwitchBot integration allows you to control SwitchBot [devices](https://www.
## Prerequisites ## Prerequisites
In order to use this integration, it is required to have working Bluetooth set up on the device running Home Assistant. A [SwitchBot Hub](https://switch-bot.com/pages/switchbot-hub-mini) is not required for this integration. In order to use this integration, it is required to have working [Bluetooth](/integrations/bluetooth) set up on the device running Home Assistant. A [SwitchBot Hub](https://switch-bot.com/pages/switchbot-hub-mini) is not required for this integration.
If you have multiple devices of the same type, you need to get the BTLE MAC address of your device to tell your devices apart. You can find the address for your device using the following steps: If you have multiple devices of the same type, you need to get the BTLE MAC address of your device to tell your devices apart. You can find the address for your device using the following steps:
@ -50,17 +50,17 @@ Please note, device names configured in the SwitchBot app are not transferred in
## Supported Devices ## Supported Devices
- Color Bulb (WoBulb) - [Color Bulb (WoBulb)](https://switch-bot.com/pages/switchbot-color-bulb)
- Bot (WoHand) - [Bot (WoHand)](https://switch-bot.com/pages/switchbot-bot)
- Contact Sensor (WoContact) - [Contact Sensor (WoContact)](https://switch-bot.com/pages/switchbot-contact-sensor)
- Curtain (WoCurtain) - [Curtain (WoCurtain)](https://switch-bot.com/pages/switchbot-curtain)
- Humidifier (WoHumi) - [Humidifier (WoHumi)](https://eu.switch-bot.com/products/switchbot-smart-humidifier)
- Light Strip (WoStrip) - Light Strip (WoStrip)
- Meter/Meter Plus 70BB (WoSensorTH) - [Meter](https://switch-bot.com/pages/switchbot-meter)/[Meter Plus 70BB](https://switch-bot.com/pages/switchbot-meter-plus) (WoSensorTH)
- Motion Sensor (WoPresence) - [Motion Sensor (WoPresence)](https://switch-bot.com/pages/switchbot-motion-sensor)
- Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401) - Plug Mini (WoPlug), both the original (model W1901400) and HomeKit-enabled (model W1901401)
- Lock (WoLock) - [Lock (WoLock)](https://switch-bot.com/pages/switchbot-lock)
- Blind Tilt (WoBlindTilt) - [Blind Tilt (WoBlindTilt)](https://switch-bot.com/pages/switchbot-blind-tilt)
## SwitchBot Entity ## SwitchBot Entity

View File

@ -34,3 +34,45 @@ The `weather` platform only knows the below listed conditions. The reason for th
- 'windy' - 'windy'
- 'windy-variant' - 'windy-variant'
- 'exceptional' - 'exceptional'
### Forecast Information
Periodic forecast information is stored in the `forecast` attribute on the entity. To access and use the information should be reserved for advanced users using [Templates](/docs/configuration/templating/).
```yaml
temperature: 14.2
temperature_unit: °C
humidity: 76
pressure: 1019
pressure_unit: hPa
wind_bearing: 260
wind_speed: 35.17
wind_speed_unit: km/h
visibility_unit: km
precipitation_unit: mm
forecast:
- condition: cloudy
precipitation_probability: 0
datetime: '2023-02-17T14:00:00+00:00'
wind_bearing: 268
temperature: 14.2
pressure: 1019
wind_speed: 24.41
precipitation: 0
- condition: cloudy
precipitation_probability: 0
datetime: '2023-02-17T15:00:00+00:00'
wind_bearing: 268
temperature: 13.8
pressure: 1019
wind_speed: 22.61
precipitation: 0
- condition: cloudy
precipitation_probability: 0
datetime: '2023-02-17T16:00:00+00:00'
wind_bearing: 265
temperature: 13.2
pressure: 1020
wind_speed: 20.27
precipitation: 0
```

View File

@ -24,14 +24,14 @@ ha_codeowners:
ha_integration_type: integration ha_integration_type: integration
--- ---
The `wemo` integration is the main integration to integrate various [Belkin WeMo](https://www.belkin.com/us/c/wemo/) devices with Home Assistant. The `wemo` integration is the main integration to integrate various [Belkin WeMo](https://www.belkin.com/products/wemo-smart-home/) devices with Home Assistant.
There is currently support for the following device types within Home Assistant: There is currently support for the following device types within Home Assistant:
- Binary Sensor (Belkin WeMo Motion Sensor) - Binary Sensor (Belkin WeMo Motion Sensor)
- Fan (Belkin WeMo (Holmes) Smart Humidifier) - Fan (Belkin WeMo (Holmes) Smart Humidifier)
- Light (Belkin WeMo LED lights and Smart Dimmer Switch) - Light (Belkin WeMo LED lights and Smart Dimmer Switch)
- Switch ([Belkin WeMo Switches](https://www.belkin.com/us/smart-home/c/wemo/) and includes support for WeMo enabled [Mr. Coffee](https://www.mrcoffee.com/) smart coffee makers.) - Switch ([Belkin WeMo Switches](https://www.belkin.com/products/wemo-smart-home/) and includes support for WeMo enabled [Mr. Coffee](https://www.mrcoffee.com/) smart coffee makers.)
## Configuration ## Configuration

View File

@ -14,7 +14,7 @@ ha_integration_type: system
The `zeroconf` integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the configuration panel. It will also make Home Assistant discoverable for other services in the network. Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi. The `zeroconf` integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the configuration panel. It will also make Home Assistant discoverable for other services in the network. Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi.
Integrations can opt-in to be found by adding either [a Zeroconf section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#zeroconf) or [a HomeKit section](https://developers.home-assistant.io/docs/en/next/creating_integration_manifest.html#homekit) to their `manifest.json`. Integrations can opt-in to be found by adding either [a Zeroconf section](https://developers.home-assistant.io/docs/creating_integration_manifest/#zeroconf) or [a HomeKit section](https://developers.home-assistant.io/docs/creating_integration_manifest/#homekit) to their `manifest.json`.
## Configuration ## Configuration

View File

@ -442,6 +442,8 @@ To help resolve any kinks or compatibility problems, report bugs as issues with
Note that ZHA only supports connecting a single dedicated Zigbee Coordinator radio adapter or module with a single Zigbee network and that the Zigbee Coordinator cannot already be connected or used by any other application. Any devices that are or have previously been connected to another Zigbee implementation will also need to first be reset to their factory default settings before they can be paired/joined to ZHA, please see each device manufacturer's documentation. Note that ZHA only supports connecting a single dedicated Zigbee Coordinator radio adapter or module with a single Zigbee network and that the Zigbee Coordinator cannot already be connected or used by any other application. Any devices that are or have previously been connected to another Zigbee implementation will also need to first be reset to their factory default settings before they can be paired/joined to ZHA, please see each device manufacturer's documentation.
Support for commissioning Zigbee 3.0 devices via "Install Code" or "QR Code" via the 'zha.permit' service has so far only been implemented for 'ezsp' (Silicon Labs EmberZNet) or 'znp' (Texas Instruments) radio type in ZHA. Other radio types are missing support in their respective [radio libraries for zigpy](https://github.com/zigpy/) or manufacturer's firmware commands/APIs.
ZHA does currently not support devices that can only use the ZGP ("Zigbee Green Power") profile which is used in a few batteryless self-powered or energy harvesting devices, (such as for example; Philips Hue Click, Philips Hue Tap, and some "Friends of Hue" partnership switches). ZHA does currently not support devices that can only use the ZGP ("Zigbee Green Power") profile which is used in a few batteryless self-powered or energy harvesting devices, (such as for example; Philips Hue Click, Philips Hue Tap, and some "Friends of Hue" partnership switches).
ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart Energy") profile, that is however due to the "Zigbee SE" specification not being part of the standard Zigbee 3.0 specification and thus not implemented in most of the Zigbee protocol stacks that are commonly available Zigbee Coordinator radio adapters and modules. ZHA does not currently support devices that can only use the ZSE ("Zigbee Smart Energy") profile, that is however due to the "Zigbee SE" specification not being part of the standard Zigbee 3.0 specification and thus not implemented in most of the Zigbee protocol stacks that are commonly available Zigbee Coordinator radio adapters and modules.

View File

@ -52,6 +52,8 @@ Enjoy the release!
- [Release 2023.3.2 - March 8](#release-202332---march-8) - [Release 2023.3.2 - March 8](#release-202332---march-8)
- [Release 2023.3.3 - March 9](#release-202333---march-9) - [Release 2023.3.3 - March 9](#release-202333---march-9)
- [Release 2023.3.4 - March 13](#release-202334---march-13) - [Release 2023.3.4 - March 13](#release-202334---march-13)
- [Release 2023.3.5 - March 16](#release-202335---march-16)
- [Release 2023.3.6 - March 22](#release-202336---march-22)
- [Need help? Join the community!](#need-help-join-the-community) - [Need help? Join the community!](#need-help-join-the-community)
- [Breaking Changes](#breaking-changes) - [Breaking Changes](#breaking-changes)
- [All changes](#all-changes) - [All changes](#all-changes)
@ -566,6 +568,121 @@ We welcome the following new integrations in this release:
[sensor docs]: /integrations/sensor/ [sensor docs]: /integrations/sensor/
[tibber docs]: /integrations/tibber/ [tibber docs]: /integrations/tibber/
## Release 2023.3.5 - March 16
- ArestData does not have available ([@zhangsheng377] - [#88631]) ([arest docs])
- Bump aioesphomeapi to 13.5.0 ([@bdraco] - [#89262]) ([esphome docs]) (dependency)
- Handle int or mapping for off case in nibe cooling ([@elupus] - [#89680]) ([nibe_heatpump docs])
- Secure modbus hub_collect remains valid ([@janiversen] - [#89684]) ([modbus docs])
- Update to nibe 2.1.4 ([@elupus] - [#89686]) ([nibe_heatpump docs]) (dependency)
- Bump bond-async to 0.1.23 ([@marciogranzotto] - [#89697]) ([bond docs]) (dependency)
- Correct modbus serial method parameter ([@janiversen] - [#89738]) ([modbus docs])
- Fix imap server push holding HA startup ([@jbouwh] - [#89750]) ([imap docs])
- Bump aioesphomeapi to 13.5.1 ([@bdraco] - [#89777]) ([esphome docs]) (dependency)
- Update frontend to 20230309.1 ([@bramkragten] - [#89802]) ([frontend docs])
[#88631]: https://github.com/home-assistant/core/pull/88631
[#88979]: https://github.com/home-assistant/core/pull/88979
[#89059]: https://github.com/home-assistant/core/pull/89059
[#89262]: https://github.com/home-assistant/core/pull/89262
[#89381]: https://github.com/home-assistant/core/pull/89381
[#89459]: https://github.com/home-assistant/core/pull/89459
[#89647]: https://github.com/home-assistant/core/pull/89647
[#89680]: https://github.com/home-assistant/core/pull/89680
[#89684]: https://github.com/home-assistant/core/pull/89684
[#89686]: https://github.com/home-assistant/core/pull/89686
[#89697]: https://github.com/home-assistant/core/pull/89697
[#89738]: https://github.com/home-assistant/core/pull/89738
[#89750]: https://github.com/home-assistant/core/pull/89750
[#89777]: https://github.com/home-assistant/core/pull/89777
[#89802]: https://github.com/home-assistant/core/pull/89802
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@bramkragten]: https://github.com/bramkragten
[@elupus]: https://github.com/elupus
[@frenck]: https://github.com/frenck
[@janiversen]: https://github.com/janiversen
[@jbouwh]: https://github.com/jbouwh
[@marciogranzotto]: https://github.com/marciogranzotto
[@zhangsheng377]: https://github.com/zhangsheng377
[abode docs]: /integrations/abode/
[arest docs]: /integrations/arest/
[bond docs]: /integrations/bond/
[dormakaba_dkey docs]: /integrations/dormakaba_dkey/
[esphome docs]: /integrations/esphome/
[frontend docs]: /integrations/frontend/
[imap docs]: /integrations/imap/
[knx docs]: /integrations/knx/
[modbus docs]: /integrations/modbus/
[nibe_heatpump docs]: /integrations/nibe_heatpump/
[sensor docs]: /integrations/sensor/
[tibber docs]: /integrations/tibber
## Release 2023.3.6 - March 22
- Fix imap_email_content unknown status and replaying stale states ([@jbouwh] - [#89563]) ([imap_email_content docs])
- Bump aioharmony to 0.2.10 ([@bdraco] - [#89831]) ([harmony docs])
- Correct missing wordswap for S series nibe ([@elupus] - [#89866]) ([nibe_heatpump docs])
- Fix blocking MQTT entry unload ([@jbouwh] - [#89922]) ([mqtt docs])
- Remove async_block_till_done in freebox ([@bdraco] - [#89928]) ([freebox docs])
- Bump aiomusiccast to 0.14.8 ([@micha91] - [#89978]) ([yamaha_musiccast docs])
- Handle cancelation of wait_for_ble_connections_free in esphome bluetooth ([@bdraco] - [#90014]) ([esphome docs])
- Bump yalexs_ble to 2.1.0 ([@bdraco] - [#89772]) ([august docs]) ([yalexs_ble docs])
- Bump yalexs-ble to 2.1.1 ([@bdraco] - [#90015]) ([yalexs_ble docs])
- Bump easyEnergy to v0.2.1 ([@klaasnicolaas] - [#89630]) ([easyenergy docs])
- Bump easyEnergy to v0.2.2 ([@klaasnicolaas] - [#90080]) ([easyenergy docs])
- Bump to oralb-ble 0.17.6 ([@Lash-L] - [#90081]) ([oralb docs])
- Bump PySwitchbot to 0.37.4 ([@bdraco] - [#90146]) ([switchbot docs])
- Always enforce URL param ordering for signed URLs ([@balloob] - [#90148]) ([http docs])
[#88979]: https://github.com/home-assistant/core/pull/88979
[#89059]: https://github.com/home-assistant/core/pull/89059
[#89381]: https://github.com/home-assistant/core/pull/89381
[#89459]: https://github.com/home-assistant/core/pull/89459
[#89563]: https://github.com/home-assistant/core/pull/89563
[#89630]: https://github.com/home-assistant/core/pull/89630
[#89647]: https://github.com/home-assistant/core/pull/89647
[#89772]: https://github.com/home-assistant/core/pull/89772
[#89814]: https://github.com/home-assistant/core/pull/89814
[#89831]: https://github.com/home-assistant/core/pull/89831
[#89866]: https://github.com/home-assistant/core/pull/89866
[#89922]: https://github.com/home-assistant/core/pull/89922
[#89928]: https://github.com/home-assistant/core/pull/89928
[#89978]: https://github.com/home-assistant/core/pull/89978
[#90014]: https://github.com/home-assistant/core/pull/90014
[#90015]: https://github.com/home-assistant/core/pull/90015
[#90080]: https://github.com/home-assistant/core/pull/90080
[#90081]: https://github.com/home-assistant/core/pull/90081
[#90146]: https://github.com/home-assistant/core/pull/90146
[#90148]: https://github.com/home-assistant/core/pull/90148
[@Lash-L]: https://github.com/Lash-L
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@elupus]: https://github.com/elupus
[@frenck]: https://github.com/frenck
[@jbouwh]: https://github.com/jbouwh
[@klaasnicolaas]: https://github.com/klaasnicolaas
[@micha91]: https://github.com/micha91
[abode docs]: /integrations/abode/
[august docs]: /integrations/august/
[dormakaba_dkey docs]: /integrations/dormakaba_dkey/
[easyenergy docs]: /integrations/easyenergy/
[esphome docs]: /integrations/esphome/
[freebox docs]: /integrations/freebox/
[frontend docs]: /integrations/frontend/
[harmony docs]: /integrations/harmony/
[http docs]: /integrations/http/
[imap_email_content docs]: /integrations/imap_email_content/
[knx docs]: /integrations/knx/
[mqtt docs]: /integrations/mqtt/
[nibe_heatpump docs]: /integrations/nibe_heatpump/
[oralb docs]: /integrations/oralb/
[sensor docs]: /integrations/sensor/
[switchbot docs]: /integrations/switchbot/
[tibber docs]: /integrations/tibber/
[yalexs_ble docs]: /integrations/yalexs_ble/
[yamaha_musiccast docs]: /integrations/yamaha_musiccast/
## Need help? Join the community! ## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing Home Assistant has a great community of users who are all more than willing

View File

@ -3,16 +3,16 @@ title: "Automating Home Assistant"
description: "A quick intro on getting your first automation going." description: "A quick intro on getting your first automation going."
--- ---
Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. Of course, this assumes that you have set up an integration that provides a light at this point. Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to turn on the lights when the sun sets. Of course, this assumes that you have set up an integration that provides a light at this point.
In the user interface, click Settings in the sidebar, then click Automations & Scenes. You will now see the automation screen from which you can manage all the automations in Home Assistant. In the user interface, click **Settings** in the sidebar, then click **Automations & Scenes**. You will now see the automation screen from which you can manage all the automations in Home Assistant.
<p class='img'> <p class='img'>
<img src='/images/getting-started/automation-editor.png'> <img src='/images/getting-started/automation-editor.png'>
The automation editor. The automation editor.
</p> </p>
Click the blue button at the bottom right to create a new automation. A dialog will appear. Choose "Start with an empty automation". You are presented with a blank automation screen. Click the blue button at the bottom right to create a new automation. A dialog will appear. Choose **Start with an empty automation**. You are presented with a blank automation screen.
<p class='img'> <p class='img'>
<img src='/images/getting-started/new-automation.png'> <img src='/images/getting-started/new-automation.png'>
@ -23,14 +23,14 @@ The first thing we will do is set a name. Enter "Turn Lights On at Sunset".
The second step is defining what should trigger our automation to run. In this case, we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset. The second step is defining what should trigger our automation to run. In this case, we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset.
In the trigger section, click on the dropdown menu and change the trigger type to "Sun." It allows us to choose sunrise or sunset, so go ahead and pick sunset. As we discussed, we want our automation to be triggered a little before the sun actually sets, so let's add `-00:30` as the offset. This indicates that the automation will be triggered 30 minutes before the sun actually sets. Neat! In the trigger section, click on the dropdown menu and change the trigger type to **Sun**. It allows us to choose sunrise or sunset, so go ahead and pick **Sunset**. As we discussed, we want our automation to be triggered a little before the sun actually sets, so let's add `-00:30` as the offset. This indicates that the automation will be triggered 30 minutes before the sun actually sets. Neat!
<p class='img'> <p class='img'>
<img src='/images/getting-started/new-trigger.png'> <img src='/images/getting-started/new-trigger.png'>
A new automation with a sun trigger filled in. A new automation with a sun trigger filled in.
</p> </p>
Once we have defined our trigger, scroll down to the action section. Make sure the action type is set to "Call service," and change the service to `light.turn_on`. For this automation we're going to turn on all lights, so let's change the service data to: Once we have defined our trigger, scroll down to the action section. Make sure the action type is set to **Call service** and change the service to `light.turn_on`. For this automation we're going to turn on all lights, so let's change the service data to:
```yaml ```yaml
entity_id: all entity_id: all
@ -45,12 +45,12 @@ Click the orange button to save the automation. Now wait till it's 30 minutes un
{% include getting-started/next_step.html step="Presence detection" link="/getting-started/presence-detection/" %} {% include getting-started/next_step.html step="Presence detection" link="/getting-started/presence-detection/" %}
If after completing this getting started, you are interested in reading more If after completing this getting started you are interested in reading more
about automations, we recommend the following page. about automations, we recommend the following pages:
- [Triggers](/docs/automation/trigger/) - [Triggers](/docs/automation/trigger/)
- [Conditions](/docs/automation/condition/) - [Conditions](/docs/automation/condition/)
- [Actions](/docs/automation/action/) - [Actions](/docs/automation/action/)
Please note, these pages require a bit more experience with Home Assistant Please note, these pages may require a bit more experience with Home Assistant
than you probably have at this point of this tutorial. than you probably have at this point of this tutorial.

View File

@ -25,8 +25,8 @@ Devices are a logical grouping for one or more entities. A device may represent
Devices and entities are used throughout Home Assistant. To name a few examples: Devices and entities are used throughout Home Assistant. To name a few examples:
* [Dashboards](#dashboards) can show a state of an entity like if a light bulb is on or off as well as buttons that interact with devices like turning a light bulb on or off. * [Dashboards](#dashboards) can show a state of an entity like if a light bulb is on or off as well as buttons that interact with devices like turning a light bulb on or off.
* An [automation](automations) can be triggered from a state change on an entity e.g. a light turning on and control another device or entity. * An [automation](#automations) can be triggered from a state change on an entity e.g. a light turning on and control another device or entity.
* A predefined setting for light device saved as a [scene](scenes). * A predefined setting for light device saved as a [scene](#scenes).
![Home Assistant Device](/images/getting-started/home-assistant-device.png) ![Home Assistant Device](/images/getting-started/home-assistant-device.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View File

@ -37,7 +37,23 @@ toc: true
</div> </div>
<div class="installations"> <div class="installations">
<h2>Home Assistant Yellow</h2>
<a href="/installation/yellow" class="installations-card">
<div class="material-card text">
<div class="content-container">
<div>
<img src="/images/installation/yellow-logo-square.png">
</div>
<div>
<b>Home Assistant Yellow</b>
<ul>
<li>Home Assistant Operating System</li>
</ul>
</div>
</div>
{% include assets/chevron_right.html %}
</div>
</a>
<h2>Raspberry Pi</h2> <h2>Raspberry Pi</h2>
<a href="/installation/raspberrypi" class="installations-card"> <a href="/installation/raspberrypi" class="installations-card">
<div class="material-card text"> <div class="material-card text">

View File

@ -0,0 +1,47 @@
---
title: "Home Assistant Yellow"
description: "Install Home Assistant on a Yellow"
installation_type: yellow
---
{% comment %}
Included sections for this page is located under source/_includes/installation
{% endcomment %}
{% assign board = "Yellow" %}
<article class="page">
<div class="installations">
<div>
<div class="material-card text">
<div class="content-container">
<div>
<img src="/images/installation/yellow-logo.png" style="margin-bottom: 24px;">
</div>
<div>
<p>Our take on Home Automation.</p>
<p><img src="/images/installation/home-assistant-yellow-exploded-and-labeled.png"
style="margin-bottom: 16px;"> </a>
</p>
<p>Don't have the hardware yet? </br>
Visit the <a href="/yellow">Home Assistant Yellow product page</p>
</div>
</div>
</div>
</div>
<div style="margin-top: 72px;">
<div>
<h1>Installation instructions</h1>
</div>
<div class="material-card text" style="margin-bottom: 72px;">
<div class="content-container">
<div>
<p>Already have the hardware?</p>
<p>For installation instructions, check out the <a
href="https://yellow.home-assistant.io/">Home Assistant Yellow documentation</a></p>
<p><img src="/images/installation/yellow-docs.png" style="margin-bottom: 16px;"></p>
</div>
</div>
</div>
</div>
</div>
</article>
<div> </div>