Merge branch 'next' into rc

This commit is contained in:
Franck Nijhof 2022-09-26 19:41:24 +02:00
commit 270d3de261
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
59 changed files with 997 additions and 505 deletions

View File

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

View File

@ -200,7 +200,6 @@ source/_integrations/flick_electric.markdown @ZephireNZ
source/_integrations/flipr.markdown @cnico
source/_integrations/flo.markdown @dmulcahey
source/_integrations/flume.markdown @ChrisMandich @bdraco @jeeftor
source/_integrations/flunearyou.markdown @bachya
source/_integrations/flux_led.markdown @icemanch @bdraco
source/_integrations/forecast_solar.markdown @klaasnicolaas @frenck
source/_integrations/forked_daapd.markdown @uvjustin

View File

@ -19,7 +19,7 @@ group :jekyll_plugins do
gem 'jekyll-toc', '0.17.1'
end
gem 'sinatra', '2.2.2'
gem 'sinatra', '3.0.0'
gem 'nokogiri', '1.13.8'
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem

View File

@ -5,7 +5,7 @@ GEM
public_suffix (>= 2.0.2, < 6.0)
chunky_png (1.4.0)
colorator (1.1.0)
commonmarker (0.23.5)
commonmarker (0.23.6)
compass (1.0.3)
chunky_png (~> 1.2)
compass-core (~> 1.0.2)
@ -68,7 +68,7 @@ GEM
mercenary (0.4.0)
mini_portile2 (2.8.0)
multi_json (1.15.0)
mustermann (2.0.2)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
nokogiri (1.13.8)
mini_portile2 (~> 2.8.0)
@ -80,7 +80,7 @@ GEM
public_suffix (5.0.0)
racc (1.6.0)
rack (2.2.4)
rack-protection (2.2.2)
rack-protection (3.0.0)
rack
rake (13.0.6)
rb-fsevent (0.11.2)
@ -97,10 +97,10 @@ GEM
ffi (~> 1.9)
sassc (2.1.0-x64-mingw32)
ffi (~> 1.9)
sinatra (2.2.2)
mustermann (~> 2.0)
rack (~> 2.2)
rack-protection (= 2.2.2)
sinatra (3.0.0)
mustermann (~> 3.0)
rack (~> 2.2, >= 2.2.4)
rack-protection (= 3.0.0)
tilt (~> 2.0)
stringex (2.8.5)
terminal-table (2.0.0)
@ -108,7 +108,7 @@ GEM
tilt (2.0.11)
tzinfo (2.0.5)
concurrent-ruby (~> 1.0)
tzinfo-data (1.2022.3)
tzinfo-data (1.2022.4)
tzinfo (>= 1.0.0)
unicode-display_width (1.8.0)
@ -127,7 +127,7 @@ DEPENDENCIES
rake (= 13.0.6)
sass-globbing (= 1.1.5)
sassc (= 2.1.0)
sinatra (= 2.2.2)
sinatra (= 3.0.0)
stringex (= 2.8.5)
tzinfo (~> 2.0)
tzinfo-data

View File

@ -91,7 +91,7 @@ twitter_user: balloob
twitter_tweet_button: true
# Google Analytics
google_analytics_tracking_id: UA-57927901-1
# google_analytics_tracking_id: UA-57927901-1
# Facebook Like
facebook_like: true
@ -107,8 +107,8 @@ social:
# Home Assistant release details
current_major_version: 2022
current_minor_version: 9
current_patch_version: 5
date_released: 2022-09-18
current_patch_version: 7
date_released: 2022-09-26
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.

328
package-lock.json generated
View File

@ -14,7 +14,7 @@
"remark-lint-fenced-code-flag": "^3.1.1",
"remark-lint-no-shell-dollars": "^3.1.1",
"remark-stringify": "^10.0.2",
"textlint": "^12.2.1",
"textlint": "^12.2.2",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^3.0.3"
@ -228,44 +228,44 @@
"dev": true
},
"node_modules/@textlint/ast-node-types": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.1.tgz",
"integrity": "sha512-NXYza6aG1+LdZ4g83gjRhDht+gdrTjJYkdcQhpvzNCtTar/sVpaykkauRcAKLhkIWrQpfb311pfMlU6qNDW76Q==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz",
"integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==",
"dev": true
},
"node_modules/@textlint/ast-tester": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.1.tgz",
"integrity": "sha512-QGg7wxFLpsEAb7uxYPAO6F/QxDoX50wQ8aQ378RbpcQK57J9r9TQfV5Sieuta5dJORUrrMIuIrP4qU7P+1YyUw==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.2.tgz",
"integrity": "sha512-l5VP2LG+cFCjVvBR3uRrXBeoElKLic2rG+tTQUsH/rywh3TeeDKsHZBk1gGz8kAHVoeEuuH7lx0Wu8AjP4AqGw==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"debug": "^4.3.4"
}
},
"node_modules/@textlint/ast-traverse": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.1.tgz",
"integrity": "sha512-uwppnDZRmRhH8R4WrkKAvwAbKcYux2yG/XqKlADuFd2T4hSMTlZOBLxDvXohLKY617HHM32/G99HJlmFFvP4GA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.2.tgz",
"integrity": "sha512-ROd6W9P76DFA9hv7wCf1+Dc6aehLcsd0/3qKerQN/Luc3B2ek+/qJbGgWeAEsSBKl9LVLJhTBydmdgOAHrVjwA==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1"
"@textlint/ast-node-types": "^12.2.2"
}
},
"node_modules/@textlint/feature-flag": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.1.tgz",
"integrity": "sha512-Vwn1VKaqNvhMteXNdvk+5duGzlG0MwSjkufU3AVaBQsS4SH4dchSvULpKc+r4BOTSzybNappN0APEcMjOx0Lxg==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.2.tgz",
"integrity": "sha512-L0v/ZjxmdzRXygja1WiXBjA2ZczvU3cG6qkwME4JGKwUsbEa9UzpwD8i3yBoO7ISkjkMpPM5BYD3AtJgQpCuEg==",
"dev": true
},
"node_modules/@textlint/fixer-formatter": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.1.tgz",
"integrity": "sha512-Y4FT2zVyYCxZCJ19tdfhBKr/FtCDP03iW+gfF6zHAjQaNPEGUU7ZfVUBJVVYBWOuHT/Zk22kcJZVFSINacPybQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.2.tgz",
"integrity": "sha512-uKJScqlJvIP9ttVxSq4632kYUjeEhsqc1mLmbViFd+H+GGtrKMwhHYI4zs9/6PQQxE1sUy6dBVkh/LAjgqOaUA==",
"dev": true,
"dependencies": {
"@textlint/module-interop": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/module-interop": "^12.2.2",
"@textlint/types": "^12.2.2",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"diff": "^4.0.2",
@ -277,33 +277,33 @@
}
},
"node_modules/@textlint/kernel": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.1.tgz",
"integrity": "sha512-imKBeglOKVwsVmrCDzIHf8uiYXtEy0VFyPPb7GYiLhA2pImh59QOtuoPiMT0h8ctV5Aa2konOQVV6jM+JJ9xkQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.2.tgz",
"integrity": "sha512-rDa//HGBQh2BTcJvsgMDP1WRaVxwa57zeE6FPXUdaIA41GGKupQq9GXX8P0PcAVo9gxzOFnMrtbBw7mkQYu4hQ==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-tester": "^12.2.1",
"@textlint/ast-traverse": "^12.2.1",
"@textlint/feature-flag": "^12.2.1",
"@textlint/source-code-fixer": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/utils": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-tester": "^12.2.2",
"@textlint/ast-traverse": "^12.2.2",
"@textlint/feature-flag": "^12.2.2",
"@textlint/source-code-fixer": "^12.2.2",
"@textlint/types": "^12.2.2",
"@textlint/utils": "^12.2.2",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"structured-source": "^3.0.2"
}
},
"node_modules/@textlint/linter-formatter": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.1.tgz",
"integrity": "sha512-xfVRM+DRrJzBswzrYpmNDJDfapYyogOGlwOXb9Omc7/MvipVreG0WvtgSgxchJ+1nPJwsOPES8PAgQYcPR20+Q==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.2.tgz",
"integrity": "sha512-R4/n02lNPqiTT1WuxBe4Lh1vUZUME020y+cD8fDn++GR4QlEcWaWWaYNz5ZDtRJ6Li9CYnc6MC6uf2jnTcmFXw==",
"dev": true,
"dependencies": {
"@azu/format-text": "^1.0.1",
"@azu/style-format": "^1.0.0",
"@textlint/module-interop": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/module-interop": "^12.2.2",
"@textlint/types": "^12.2.2",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"is-file": "^1.0.0",
@ -319,13 +319,14 @@
}
},
"node_modules/@textlint/markdown-to-ast": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.1.tgz",
"integrity": "sha512-p+LlVcrgHnSNEWWflYU412uu+v4Cejs6hmI4SgZCheNg4u7Ik78aKgpe4jT5BhjLSBZ/KP6IrJxtCUOoJIUWmQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.2.tgz",
"integrity": "sha512-OP0cnGCzt8Bbfhn8fO/arQSHBhmuXB4maSXH8REJAtKRpTADWOrbuxAOaI9mjQ7EMTDiml02RZ9MaELQAWAsqQ==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"debug": "^4.3.4",
"mdast-util-gfm-autolink-literal": "^0.1.0",
"remark-footnotes": "^3.0.0",
"remark-frontmatter": "^3.0.0",
"remark-gfm": "^1.0.0",
@ -653,61 +654,61 @@
}
},
"node_modules/@textlint/module-interop": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.1.tgz",
"integrity": "sha512-/SixwKngWuTvVl9AArK4FEWGrNAwD7/ABvLCy/pdFprljnUa87P5JvSi7/v1PjpAXcnMQ2r04wDJjegs9oblBA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.2.tgz",
"integrity": "sha512-3OVZDJ8GCgQ3V+dm5btCwhZhJUEO5xR7jEMI6i9n1/gA6yePBM4b1qT1gwYUItthNRFqy6q5x4zTx9MKqBGVGg==",
"dev": true
},
"node_modules/@textlint/source-code-fixer": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.1.tgz",
"integrity": "sha512-yNkWcTxCcoz24b64rGUVDr2MzQdv3I1o2o7HuphCmGlAQztVzMGvY/GNzqUWW42+k8S0zRq3Saxz1XoMUvR5UA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.2.tgz",
"integrity": "sha512-wk/8MmF3m1U9IAqGrvR0yehHsRGDfXuVAkXSahyRmafSwn88p8oS/iY6qDjECADVXJEnuRuxOcQ1GPlKM/eFOg==",
"dev": true,
"dependencies": {
"@textlint/types": "^12.2.1",
"@textlint/types": "^12.2.2",
"debug": "^4.3.4"
}
},
"node_modules/@textlint/text-to-ast": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.1.tgz",
"integrity": "sha512-NcuFa8iQglIMBQ1OaR1IYAIYJfBcTACVD0YtPGrdN0gkqC8TEfP5xIldiSxhkWiLPr3TQ4Mg7d6Ev5RH67n7pA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.2.tgz",
"integrity": "sha512-LgCqy1y4oQfDws6rqYSlQaYyiIGRQHcGMT+ukbpBkwEtzzh9urbr6NIeVnHhEuZUITl+pZCHyHeKF2/RlGsn6Q==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1"
"@textlint/ast-node-types": "^12.2.2"
}
},
"node_modules/@textlint/textlint-plugin-markdown": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.1.tgz",
"integrity": "sha512-BAjkVPMO5fzf6n5M5SwgHNyTwByE86BmjaNpBDhKNcSBctUnfX7nLCvQY8mGMkvefHufyi3oWIqDcZoZQn0PYQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.2.tgz",
"integrity": "sha512-ougYCuGavxCPwsFZZ/fCGzoaMxwvy2yM1siKa7Ra9chZHjxtj3y76m0QtJkboFcz/FEZV8tqh96T9Bq/4jD+nQ==",
"dev": true,
"dependencies": {
"@textlint/markdown-to-ast": "^12.2.1"
"@textlint/markdown-to-ast": "^12.2.2"
}
},
"node_modules/@textlint/textlint-plugin-text": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.1.tgz",
"integrity": "sha512-8Dt1Sn9AdqvweVxCLvlj1IC+pDxPRpdgERY6FzD6kLNpMAyl7luVWtpql19CvTYlxhPUHRxsETDBkRCQFClXsw==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.2.tgz",
"integrity": "sha512-0HLOr9kQRXKqEcZvIaNAnOhixNfTSpveOHBuhHepByDXkXcUrb+BJdxZzhtgVu4twBAR3qJ3KYhDE8XPHc9iDg==",
"dev": true,
"dependencies": {
"@textlint/text-to-ast": "^12.2.1"
"@textlint/text-to-ast": "^12.2.2"
}
},
"node_modules/@textlint/types": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.1.tgz",
"integrity": "sha512-nOQ3udAz9ulDZgETFY3vr3R+ubL2cevPLA3GmDs29ErvIHfK3pD+PpyO/OsS7HZKXolmpuMonVA9+J9Jybf3/Q==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.2.tgz",
"integrity": "sha512-fmKH9w8O3XOvIvf3cPNI7PWdJScRIiJYJ5VsoIMp/o41Hlkt5m//MObfAPYpQ/3nuXhzlB05kfRUxyj/NvcPAQ==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1"
"@textlint/ast-node-types": "^12.2.2"
}
},
"node_modules/@textlint/utils": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.1.tgz",
"integrity": "sha512-e4jDM6bMZddFi48e5CzbvnG9ombeK2ZkjLnCaSWalJI3NTlCDm/ZDqfaqac/YPFbzoRQMqNkaoTW/9GZVjr6Hg==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.2.tgz",
"integrity": "sha512-74p3VWj5KlmXs+gFRJALEuUsyt/Sz4t91KQ//LAX1zNTY/aK0nk8LxipUcDZeBHArn3Gh5nf3SwlTgUZ7jvNrQ==",
"dev": true
},
"node_modules/@types/concat-stream": {
@ -1443,9 +1444,9 @@
}
},
"node_modules/get-intrinsic": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
"integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dev": true,
"dependencies": {
"function-bind": "^1.1.1",
@ -5291,22 +5292,22 @@
"dev": true
},
"node_modules/textlint": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.1.tgz",
"integrity": "sha512-e6xKNLbTt10KbnG0x3eVE7l8A7uOC9bj0Hc8cWk6VoLffjrdw4o8kJjWVIspNzfb0kUEs2dBKgXZo0ob4tMWAg==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.2.tgz",
"integrity": "sha512-+xORGVnAceaP3+77vGuALOtnNNtexh8VK9ssAK2r3vAr0iMApSMyvGaXousbsfLiwK5L/X0X/78yJDvXwGQPjA==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-traverse": "^12.2.1",
"@textlint/feature-flag": "^12.2.1",
"@textlint/fixer-formatter": "^12.2.1",
"@textlint/kernel": "^12.2.1",
"@textlint/linter-formatter": "^12.2.1",
"@textlint/module-interop": "^12.2.1",
"@textlint/textlint-plugin-markdown": "^12.2.1",
"@textlint/textlint-plugin-text": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/utils": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-traverse": "^12.2.2",
"@textlint/feature-flag": "^12.2.2",
"@textlint/fixer-formatter": "^12.2.2",
"@textlint/kernel": "^12.2.2",
"@textlint/linter-formatter": "^12.2.2",
"@textlint/module-interop": "^12.2.2",
"@textlint/textlint-plugin-markdown": "^12.2.2",
"@textlint/textlint-plugin-text": "^12.2.2",
"@textlint/types": "^12.2.2",
"@textlint/utils": "^12.2.2",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"file-entry-cache": "^5.0.1",
@ -6377,44 +6378,44 @@
"dev": true
},
"@textlint/ast-node-types": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.1.tgz",
"integrity": "sha512-NXYza6aG1+LdZ4g83gjRhDht+gdrTjJYkdcQhpvzNCtTar/sVpaykkauRcAKLhkIWrQpfb311pfMlU6qNDW76Q==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz",
"integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==",
"dev": true
},
"@textlint/ast-tester": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.1.tgz",
"integrity": "sha512-QGg7wxFLpsEAb7uxYPAO6F/QxDoX50wQ8aQ378RbpcQK57J9r9TQfV5Sieuta5dJORUrrMIuIrP4qU7P+1YyUw==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.2.tgz",
"integrity": "sha512-l5VP2LG+cFCjVvBR3uRrXBeoElKLic2rG+tTQUsH/rywh3TeeDKsHZBk1gGz8kAHVoeEuuH7lx0Wu8AjP4AqGw==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"debug": "^4.3.4"
}
},
"@textlint/ast-traverse": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.1.tgz",
"integrity": "sha512-uwppnDZRmRhH8R4WrkKAvwAbKcYux2yG/XqKlADuFd2T4hSMTlZOBLxDvXohLKY617HHM32/G99HJlmFFvP4GA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.2.tgz",
"integrity": "sha512-ROd6W9P76DFA9hv7wCf1+Dc6aehLcsd0/3qKerQN/Luc3B2ek+/qJbGgWeAEsSBKl9LVLJhTBydmdgOAHrVjwA==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1"
"@textlint/ast-node-types": "^12.2.2"
}
},
"@textlint/feature-flag": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.1.tgz",
"integrity": "sha512-Vwn1VKaqNvhMteXNdvk+5duGzlG0MwSjkufU3AVaBQsS4SH4dchSvULpKc+r4BOTSzybNappN0APEcMjOx0Lxg==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.2.tgz",
"integrity": "sha512-L0v/ZjxmdzRXygja1WiXBjA2ZczvU3cG6qkwME4JGKwUsbEa9UzpwD8i3yBoO7ISkjkMpPM5BYD3AtJgQpCuEg==",
"dev": true
},
"@textlint/fixer-formatter": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.1.tgz",
"integrity": "sha512-Y4FT2zVyYCxZCJ19tdfhBKr/FtCDP03iW+gfF6zHAjQaNPEGUU7ZfVUBJVVYBWOuHT/Zk22kcJZVFSINacPybQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.2.tgz",
"integrity": "sha512-uKJScqlJvIP9ttVxSq4632kYUjeEhsqc1mLmbViFd+H+GGtrKMwhHYI4zs9/6PQQxE1sUy6dBVkh/LAjgqOaUA==",
"dev": true,
"requires": {
"@textlint/module-interop": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/module-interop": "^12.2.2",
"@textlint/types": "^12.2.2",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"diff": "^4.0.2",
@ -6426,33 +6427,33 @@
}
},
"@textlint/kernel": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.1.tgz",
"integrity": "sha512-imKBeglOKVwsVmrCDzIHf8uiYXtEy0VFyPPb7GYiLhA2pImh59QOtuoPiMT0h8ctV5Aa2konOQVV6jM+JJ9xkQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.2.tgz",
"integrity": "sha512-rDa//HGBQh2BTcJvsgMDP1WRaVxwa57zeE6FPXUdaIA41GGKupQq9GXX8P0PcAVo9gxzOFnMrtbBw7mkQYu4hQ==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-tester": "^12.2.1",
"@textlint/ast-traverse": "^12.2.1",
"@textlint/feature-flag": "^12.2.1",
"@textlint/source-code-fixer": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/utils": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-tester": "^12.2.2",
"@textlint/ast-traverse": "^12.2.2",
"@textlint/feature-flag": "^12.2.2",
"@textlint/source-code-fixer": "^12.2.2",
"@textlint/types": "^12.2.2",
"@textlint/utils": "^12.2.2",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"structured-source": "^3.0.2"
}
},
"@textlint/linter-formatter": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.1.tgz",
"integrity": "sha512-xfVRM+DRrJzBswzrYpmNDJDfapYyogOGlwOXb9Omc7/MvipVreG0WvtgSgxchJ+1nPJwsOPES8PAgQYcPR20+Q==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.2.tgz",
"integrity": "sha512-R4/n02lNPqiTT1WuxBe4Lh1vUZUME020y+cD8fDn++GR4QlEcWaWWaYNz5ZDtRJ6Li9CYnc6MC6uf2jnTcmFXw==",
"dev": true,
"requires": {
"@azu/format-text": "^1.0.1",
"@azu/style-format": "^1.0.0",
"@textlint/module-interop": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/module-interop": "^12.2.2",
"@textlint/types": "^12.2.2",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"is-file": "^1.0.0",
@ -6468,13 +6469,14 @@
}
},
"@textlint/markdown-to-ast": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.1.tgz",
"integrity": "sha512-p+LlVcrgHnSNEWWflYU412uu+v4Cejs6hmI4SgZCheNg4u7Ik78aKgpe4jT5BhjLSBZ/KP6IrJxtCUOoJIUWmQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.2.tgz",
"integrity": "sha512-OP0cnGCzt8Bbfhn8fO/arQSHBhmuXB4maSXH8REJAtKRpTADWOrbuxAOaI9mjQ7EMTDiml02RZ9MaELQAWAsqQ==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"debug": "^4.3.4",
"mdast-util-gfm-autolink-literal": "^0.1.0",
"remark-footnotes": "^3.0.0",
"remark-frontmatter": "^3.0.0",
"remark-gfm": "^1.0.0",
@ -6690,61 +6692,61 @@
}
},
"@textlint/module-interop": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.1.tgz",
"integrity": "sha512-/SixwKngWuTvVl9AArK4FEWGrNAwD7/ABvLCy/pdFprljnUa87P5JvSi7/v1PjpAXcnMQ2r04wDJjegs9oblBA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.2.tgz",
"integrity": "sha512-3OVZDJ8GCgQ3V+dm5btCwhZhJUEO5xR7jEMI6i9n1/gA6yePBM4b1qT1gwYUItthNRFqy6q5x4zTx9MKqBGVGg==",
"dev": true
},
"@textlint/source-code-fixer": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.1.tgz",
"integrity": "sha512-yNkWcTxCcoz24b64rGUVDr2MzQdv3I1o2o7HuphCmGlAQztVzMGvY/GNzqUWW42+k8S0zRq3Saxz1XoMUvR5UA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.2.tgz",
"integrity": "sha512-wk/8MmF3m1U9IAqGrvR0yehHsRGDfXuVAkXSahyRmafSwn88p8oS/iY6qDjECADVXJEnuRuxOcQ1GPlKM/eFOg==",
"dev": true,
"requires": {
"@textlint/types": "^12.2.1",
"@textlint/types": "^12.2.2",
"debug": "^4.3.4"
}
},
"@textlint/text-to-ast": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.1.tgz",
"integrity": "sha512-NcuFa8iQglIMBQ1OaR1IYAIYJfBcTACVD0YtPGrdN0gkqC8TEfP5xIldiSxhkWiLPr3TQ4Mg7d6Ev5RH67n7pA==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.2.tgz",
"integrity": "sha512-LgCqy1y4oQfDws6rqYSlQaYyiIGRQHcGMT+ukbpBkwEtzzh9urbr6NIeVnHhEuZUITl+pZCHyHeKF2/RlGsn6Q==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1"
"@textlint/ast-node-types": "^12.2.2"
}
},
"@textlint/textlint-plugin-markdown": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.1.tgz",
"integrity": "sha512-BAjkVPMO5fzf6n5M5SwgHNyTwByE86BmjaNpBDhKNcSBctUnfX7nLCvQY8mGMkvefHufyi3oWIqDcZoZQn0PYQ==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.2.tgz",
"integrity": "sha512-ougYCuGavxCPwsFZZ/fCGzoaMxwvy2yM1siKa7Ra9chZHjxtj3y76m0QtJkboFcz/FEZV8tqh96T9Bq/4jD+nQ==",
"dev": true,
"requires": {
"@textlint/markdown-to-ast": "^12.2.1"
"@textlint/markdown-to-ast": "^12.2.2"
}
},
"@textlint/textlint-plugin-text": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.1.tgz",
"integrity": "sha512-8Dt1Sn9AdqvweVxCLvlj1IC+pDxPRpdgERY6FzD6kLNpMAyl7luVWtpql19CvTYlxhPUHRxsETDBkRCQFClXsw==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.2.tgz",
"integrity": "sha512-0HLOr9kQRXKqEcZvIaNAnOhixNfTSpveOHBuhHepByDXkXcUrb+BJdxZzhtgVu4twBAR3qJ3KYhDE8XPHc9iDg==",
"dev": true,
"requires": {
"@textlint/text-to-ast": "^12.2.1"
"@textlint/text-to-ast": "^12.2.2"
}
},
"@textlint/types": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.1.tgz",
"integrity": "sha512-nOQ3udAz9ulDZgETFY3vr3R+ubL2cevPLA3GmDs29ErvIHfK3pD+PpyO/OsS7HZKXolmpuMonVA9+J9Jybf3/Q==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.2.tgz",
"integrity": "sha512-fmKH9w8O3XOvIvf3cPNI7PWdJScRIiJYJ5VsoIMp/o41Hlkt5m//MObfAPYpQ/3nuXhzlB05kfRUxyj/NvcPAQ==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1"
"@textlint/ast-node-types": "^12.2.2"
}
},
"@textlint/utils": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.1.tgz",
"integrity": "sha512-e4jDM6bMZddFi48e5CzbvnG9ombeK2ZkjLnCaSWalJI3NTlCDm/ZDqfaqac/YPFbzoRQMqNkaoTW/9GZVjr6Hg==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.2.tgz",
"integrity": "sha512-74p3VWj5KlmXs+gFRJALEuUsyt/Sz4t91KQ//LAX1zNTY/aK0nk8LxipUcDZeBHArn3Gh5nf3SwlTgUZ7jvNrQ==",
"dev": true
},
"@types/concat-stream": {
@ -7320,9 +7322,9 @@
"dev": true
},
"get-intrinsic": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz",
"integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==",
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
"integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
@ -9990,22 +9992,22 @@
"dev": true
},
"textlint": {
"version": "12.2.1",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.1.tgz",
"integrity": "sha512-e6xKNLbTt10KbnG0x3eVE7l8A7uOC9bj0Hc8cWk6VoLffjrdw4o8kJjWVIspNzfb0kUEs2dBKgXZo0ob4tMWAg==",
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.2.tgz",
"integrity": "sha512-+xORGVnAceaP3+77vGuALOtnNNtexh8VK9ssAK2r3vAr0iMApSMyvGaXousbsfLiwK5L/X0X/78yJDvXwGQPjA==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.1",
"@textlint/ast-traverse": "^12.2.1",
"@textlint/feature-flag": "^12.2.1",
"@textlint/fixer-formatter": "^12.2.1",
"@textlint/kernel": "^12.2.1",
"@textlint/linter-formatter": "^12.2.1",
"@textlint/module-interop": "^12.2.1",
"@textlint/textlint-plugin-markdown": "^12.2.1",
"@textlint/textlint-plugin-text": "^12.2.1",
"@textlint/types": "^12.2.1",
"@textlint/utils": "^12.2.1",
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-traverse": "^12.2.2",
"@textlint/feature-flag": "^12.2.2",
"@textlint/fixer-formatter": "^12.2.2",
"@textlint/kernel": "^12.2.2",
"@textlint/linter-formatter": "^12.2.2",
"@textlint/module-interop": "^12.2.2",
"@textlint/textlint-plugin-markdown": "^12.2.2",
"@textlint/textlint-plugin-text": "^12.2.2",
"@textlint/types": "^12.2.2",
"@textlint/utils": "^12.2.2",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"file-entry-cache": "^5.0.1",

View File

@ -9,7 +9,7 @@
"remark-lint-fenced-code-flag": "^3.1.1",
"remark-lint-no-shell-dollars": "^3.1.1",
"remark-stringify": "^10.0.2",
"textlint": "^12.2.1",
"textlint": "^12.2.2",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^3.0.3"

View File

@ -558,7 +558,7 @@ automation:
{% endraw %}
If you want to get more precise, you can use this [solar calculator](https://www.esrl.noaa.gov/gmd/grad/solcalc/), which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers.
If you want to get more precise, you can use this [solar calculator](https://gml.noaa.gov/grad/solcalc/), which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers.
Although the actual amount of light depends on weather, topography and land cover, they are defined as:

View File

@ -42,7 +42,7 @@ Users should upgrade the firmware on all 700 series controllers to version 7.17.
- Z-Wave.Me RaZberry 7 Pro (700 series)
- Z-Wave.Me Razberry 2 (500 series)
If you are just starting out, we recommend that you purchase a 500 series controller.
If you are just starting out, we recommend that you purchase a 700 series controller.
<div class='note'>
If you're using Home Assistant OS, Supervised, or Container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through.

View File

@ -33,9 +33,11 @@ If you would like to test next release before anyone else, you can install the b
3. Update Home Assistant core to the latest beta version
```bash
ha core update
ha core update --backup
```
_The_ `--backup` _flag here ensures that you have a partial backup of your current setup incase you need to downgrade._
{% endtabbed_block %}
{% elsif page.installation == "container" %}

View File

@ -25,9 +25,11 @@ If you want to stay on the bleeding-edge Home Assistant Core development branch,
3. Update Home Assistant core to the latest dev version
```bash
ha core update
ha core update --backup
```
_The_ `--backup` _flag here ensures that you have a partial backup of your current setup incase you need to downgrade._
{% elsif page.installation == "container" %}
```bash

View File

@ -2,14 +2,22 @@
{% assign current_version = site.current_major_version | append: "." | append: site.current_minor_version | append: "." | append: site.current_patch_version %}
{% if page.installation != "os" and page.installation != "supervised" %}
In the event that a Home Assistant Core version doesn't play well with your hardware setup, you can downgrade to a previous release. In this example `{{current_version}}` is used as the target version but you can choose the version you desire to run.
{% endif %}
{% if page.installation == "os" or page.installation == "supervised" %}
You can use the CLI to upgrade to a specific version (`{{current_version}}` in this example), to downgrade your installation you should do a partial restore of a [backup](#backups) instead.
```bash
ha core update --version {{current_version}}
ha core update --version {{current_version}} --backup
```
_The_ `--backup` _flag here ensures that you have a partial backup of your current setup incase you need to downgrade._
{% elsif page.installation == "container" %}
```bash

View File

@ -29,9 +29,11 @@ To update Home Assistant Core when you run Home Assistant {{ page.installation_n
content: |
```bash
ha core update
ha core update --backup
```
_The_ `--backup` _flag here ensures that you have a partial backup of your current setup incase you need to downgrade._
{% endtabbed_block %}
{% elsif page.installation == "container" %}

View File

@ -1,13 +0,0 @@
{% if site.google_analytics_tracking_id %}
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '{{ site.google_analytics_tracking_id }}']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
{% endif %}

View File

@ -51,7 +51,7 @@ If you change the configuration you have to restart the server. To do that you h
content: |
```bash
docker-compose restart
docker compose restart
```
{% endtabbed_block %}
@ -59,19 +59,19 @@ If you change the configuration you have to restart the server. To do that you h
### Docker Compose
<div class="note tip">
In order to use `docker-compose` you first need to [install `docker-compose`](https://docs.docker.com/compose/install/) on your system.
`docker compose` should [already be installed](https://www.docker.com/blog/announcing-compose-v2-general-availability/) on your system. If not, you can [manually](https://docs.docker.com/compose/install/linux/) install it.
</div>
As the Docker command becomes more complex, switching to `docker-compose` can be preferable and support automatically restarting on failure or system restart. Create a `docker-compose.yml` file:
As the Docker command becomes more complex, switching to `docker compose` can be preferable and support automatically restarting on failure or system restart. Create a `compose.yml` file:
{% include installation/container/compose.md %}
Start it by running:
```bash
docker-compose up -d
docker compose up -d
```
Once the Home Assistant Container is running Home Assistant should be accessible using `http://<host>:8123` (replace <host> with the hostname or IP of the system). You can continue with onboarding.

View File

@ -8,14 +8,14 @@ interface, by using this My button:
{% my config_flow_start badge domain=domain %}
{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf %}
{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %}
{{ name }} can be auto-discovered by Home Assistant. If an instance was found,
it will be shown as _"Discovered"_, which you can select to set it up right
away.
{% endif %}
{% details "Manual configuration steps" %}
{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf %}
{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %}
If there wasn't any discovered automatically, don't worry! You can set up a
manual integration entry:
{% else %}

View File

@ -1,10 +1,3 @@
<script>
var _gaq=[['_setAccount','{{ site.google_analytics_tracking_id }}'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/lite-youtube@1.3.1/lite-youtube.js"></script>
<script src="{{ '/javascripts/prism.js' | cache_buster }}" type="text/javascript" defer></script>

View File

@ -17,6 +17,23 @@ The `bayesian` binary sensor platform observes the state from multiple sensors a
This allows for the detection of complex events that may not be readily observable, e.g., cooking, showering, in bed, the start of a morning routine, etc. It can also be used to gain greater confidence about events that _are_ directly observable, but for which the sensors can be unreliable, e.g., presence.
## Theory
A key concept in Bayes' Rule is the difference between the probability of the 'event given the observation' and the probability of the 'observation given the event'. In some cases these probabilities will be similar. The probability that someone is in the room given that motion is detected is similar to the probability motion is detected given that someone is in the room. In other cases, the distinction is much more important. The probability I have just arrived home (the event) each time the front door contact sensor reports `open` (the observation) (p=0.2) is not the same as the probability the front door contact sensor reports `open` (the observation) when I come home (the event) (p=0.999).
In the configuration use the probability of the observation (the sensor state in question) given the event (the assumed state of the Bayesian binary_sensor).
## Estimating probabilities
1. Avoid `0` and `1`, these will mess with the odds and are rarely true - sensors fail.
2. When using `0.99` and `0.001`. The number of `9`s and `0`s matters.
3. Most probabilities will be time-based - the fraction of time something is true is also the probability it will be true.
4. Use your Home Assistant history to help estimate the probabilities.
- `prob_given_true:` - Select the sensor in question over a time range when you think the `bayesian` sensor should have been `true`. `prob_given_true:` is the fraction of the time the sensor was in `to_state:`.
- `prob_given_false:` - Select the sensor in question over a time range when you think the `bayesian` sensor should have been `false`. `prob_given_false:` is the fraction of the time the sensor was in `to_state:`.
5. Don't work backwards by tweaking `prob_given_true:` and `prob_given_false:` to give the results and behaviors you want, use #4 to try and get probabilities as close to the 'truth' as you can, if your behavior is not as expected consider adding more sensors or see #7.
6. If your Bayesian sensor ends up triggering `on` too easily, re-check that the probabilities set and estimated make sense, then consider increasing `probability_threshold:` and vice-versa.
## Configuration
To enable the Bayesian sensor, add the following lines to your `configuration.yaml`:
@ -37,12 +54,15 @@ binary_sensor:
{% configuration %}
prior:
description: >
The prior probability of the event. At any point in time
(ignoring all external influences) how likely is this event to occur?
The prior probability of the event (0 to 1). At any point in time
(ignoring all external influences) how likely is this event to be occurring?
required: true
type: float
probability_threshold:
description: The probability at which the sensor should trigger to `on`.
description: >
The posterior probability at which the sensor should trigger to `on`.
use higher values to reduce false positives (and increase false negatives)
Note: If the threshold is higher than the prior then the default state will be `off`
required: false
type: float
default: 0.5
@ -52,7 +72,7 @@ name:
type: string
default: Bayesian Binary Sensor
observations:
description: The observations which should influence the likelihood that the given event has occurred.
description: The observations which should influence the probability that the given event is occurring.
required: true
type: list
keys:
@ -67,23 +87,23 @@ observations:
description: Name of the entity to monitor. Required for `state` and `numeric_state`.
required: false
type: string
to_state:
description: The entity state that defines the observation. Required (for `state`).
required: false
type: string
value_template:
description: Defines the template to be used. Required for `template`.
description: Defines the template to be used, should evaluate to `true` or `false`. Required for `template`.
required: false
type: template
prob_given_true:
description: The probability of the observation occurring, given the event is `true`.
description: >
Assuming the bayesian binary_sensor is `true`, the probability the entity state is occurring.
required: true
type: float
prob_given_false:
description: The probability of the observation occurring, given the event is `false` can be set as well.
required: false
description: Assuming the bayesian binary_sensor is `false` the probability of this entity state is occurring.
required: true
type: float
default: "`1 - prob_given_true` if `prob_given_false` is not set"
to_state:
description: The target state. Required (for `state`).
required: false
type: string
{% endconfiguration %}
## Full examples
@ -95,27 +115,33 @@ The following is an example for the `state` observation platform.
binary_sensor:
name: "in_bed"
platform: "bayesian"
prior: 0.25
probability_threshold: 0.95
prior: 0.25 # I spend 6 hours a day in bed 6hr/24hr is 0.25
probability_threshold: 0.8 # I am going to be using this sensor to turn out the lights so I only want to to activate when I am sure
observations:
- platform: "state"
entity_id: "sensor.living_room_motion"
prob_given_true: 0.4
prob_given_false: 0.2
prob_given_true: 0.05 # If I am in bed then I shouldn't be in the living room, very occasionally I have guests, however
prob_given_false: 0.2 # My sensor history shows If I am not in bed I spend about a fifth of my time in the living room
to_state: "off"
- platform: "state"
entity_id: "sensor.basement_motion"
prob_given_true: 0.5
prob_given_false: 0.4
prob_given_true: 0.5 # My sensor history shows, when I am in bed, my basement motion sensor is active about half the time because of my cat
prob_given_false: 0.3 # As above but my cat tends to spend more time upstairs or outside when I am awake and I rarely use the basement
to_state: "off"
- platform: "state"
entity_id: "sensor.bedroom_motion"
prob_given_true: 0.5
prob_given_true: 0.5 # My sensor history shows when I am in bed the sensor picks me up about half the time
prob_given_false: 0.1 # My sensor history shows I spend about 10% of my waking hours in my bedroom
to_state: "on"
- platform: "state"
entity_id: "sun.sun"
prob_given_true: 0.7
prob_given_true: 0.7 # If I am in bed then there is a good chance the sun will be down, but in the summer mornings I may still be in bed
to_state: "below_horizon"
- platform: "state"
entity_id: "sensor.android_charger_type"
prob_given_true: 0.95 # When I am in bed, I nearly always plug my phone in to charge
prob_given_false: 0.1 # When I am awake, I occasionally AC charge my phone
to_state: "ac"
```
Next up an example which targets the `numeric_state` observation platform,
@ -132,10 +158,11 @@ binary_sensor:
- platform: "numeric_state"
entity_id: "sensor.outside_air_temperature_fahrenheit"
prob_given_true: 0.95
prob_given_false: 0.05
below: 50
```
Finally, here's an example for `template` observation platform, as seen in the configuration it requires `value_template`.
Finally, here's an example for `template` observation platform, as seen in the configuration it requires `value_template`. This template will evaluate to true if the device tracker `device_tracker.paulus` shows `not_home` and it last changed its status more than 5 minutes ago.
{% raw %}
@ -150,7 +177,8 @@ binary_sensor:
- platform: template
value_template: >
{{is_state('device_tracker.paulus','not_home') and ((as_timestamp(now()) - as_timestamp(states.device_tracker.paulus.last_changed)) > 300)}}
prob_given_true: 0.95
prob_given_true: 0.05
prob_given_false: 0.99
```
{% endraw %}

View File

@ -151,7 +151,7 @@ entity_category:
type: string
default: None
expire_after:
description: Defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`.
description: If set, it defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`. Default the sensors state never expires.
required: false
type: integer
force_update:

View File

@ -28,16 +28,23 @@ While this integration is part of [`default_config:`](/integrations/default_conf
bluetooth:
```
## D-Bus and BlueZ are required on Linux
## Requirements for Linux systems
For Bluetooth to function on Linux systems, the [D-Bus](https://en.wikipedia.org/wiki/D-Bus) socket must be accessible to Home Assistant. The Bluetooth adapter must be accessible to D-Bus and running [BlueZ](http://www.bluez.org/) >= 5.43.
For Bluetooth to function on Linux systems:
- Home Assistant Operating System: no additional steps are required. Home Assistant OS version 8.4 or later is recommended for performance reasons.
- The [D-Bus](https://en.wikipedia.org/wiki/D-Bus) socket must be accessible to Home Assistant.
- The Bluetooth adapter must be accessible to D-Bus and running [BlueZ](http://www.bluez.org/) >= 5.43. It is highly recommended to use BlueZ >= 5.63 as older versions have been reported to be unreliable.
- The D-Bus implementation should be [dbus-broker](https://github.com/bus1/dbus-broker).
- The host system should be running Linux kernel 5.15.62 or later.
### Additional requirements by install method
- Home Assistant Operating System: Upgrade to Home Assistant OS version 9.0 or later.
- Home Assistant Container: The host system must run BlueZ, and the D-Bus socket must be accessible to Home Assistant **inside** the container.
- Home Assistant Supervised: The host system must run BlueZ, and the D-Bus socket must be accessible to Home Assistant **inside** the container.
- Home Assistant Core: The system must run BlueZ, and the D-Bus socket must be accessible to Home Assistant.
### Additional details for Container installs
### Additional details for Container, Core, and Supervised installs
{% details Making the DBus socket available in the Docker container %}
@ -45,7 +52,11 @@ For most systems, the Dbus socket is in `/run/dbus`. The socket must be availabl
{% enddetails %}
### Additional details for Container and Supervised installs
{% details Switching from dbus-daemon to dbus-broker %}
Follow [the instructions](https://github.com/bus1/dbus-broker/wiki) to switch to dbus-broker.
{% enddetails %}
{% details Installing BlueZ %}
@ -128,10 +139,42 @@ Deleting the config entry for this integration will release control of the adapt
### Bluetooth interference with other devices
Devices that are using the 2.4 GHz band, like Wi-Fi, Zigbee, and USB3 devices (and their cable connections) are known to affect Bluetooth reception. Especially external SSD drives with USB3 cables are known to block the Bluetooth signal. Also, metal casings can decrease the Bluetooth performance of internal Bluetooth Adapters.
Sources of interference for radios can lead to transmission/reception loss or connection problems and show symptoms such as errors/failures when sending and receiving Bluetooth messages that can cause significant degradation in performance. Below are some basic but essential tips for getting a good setup starting point to achieve better signal quality, coverage, and extended range.
The following tips may improve reception of the Bluetooth Adapter:
Following all these optimization tips below should significantly improve the reception of your Bluetooth radio adapter. The below insights describe working around the well-known limitations of low-power 2.4 GHz digital radio. It can resolve or avoid many known issues caused by interference or poor placement of your Bluetooth radio adapter or devices.
- Try to place USB3 devices (SSD, etc.) as far away as possible from your Bluetooth Adapter, e.g., by using an extension cable.
- Use a USB3 extension cable with proper shielding and ferrite clamps.
- Use a (good quality) external Bluetooth adapter with an antenna.
Computers, peripherals, and devices generate [electromagnetic interference (also known as EMI/EMI/RMI)](https://en.wikipedia.org/wiki/Electromagnetic_interference), which can interfere with signals transmissions on the 2.4 GHz radio band frequency, and degrade the wireless communication with your Bluetooth adapter/devices.
For example, unshielded USB 3 port and their cables are especially infamously known to affect 2.4 GHz radio reception. Place your Bluetooth adapter far away as possible from any potential sources of EMI/EMI/RMI by using a long, adequately shielded USB extension cable.
#### Simple actions that should improve most Bluetooth setups and common root causes of interference
- Bluetooth adapter hardware:
- Bad performance from old/outdated Bluetooth adapter hardware or poor Bluetooth adapter antenna:
- Buy and use a supported Bluetooth USB adapter based on newer/modern chip hardware.
- Consider a Bluetooth adapter that has an external antenna.
- While older adapters might work, they could have obsolete hardware or old firmware, which prevents reliable operation.
- Poor or outdated Bluetooth adapter firmware on the Bluetooth adapter:
- Update to the latest Bluetooth chip firmware on the Bluetooth adapter. Updating firmware is usually straightforward if the manufacturer or the chip maker provides one.
- Bluetooth adapters are RFI sensitive and can be very susceptible to all types of EMI/EMF interference:
- Poor placement of the Bluetooth adapter or wrong orientation of Bluetooth adapter antenna:
- Use a long USB extension cable to place the Bluetooth adapter away from interference and obstacles.
- Ensure the USB extension cable is adequately shielded (thick cables usually have this).
- A USB extension cable makes orienting the Bluetooth adapter/antenna easier.
- Try different physical placement and orientations of the Bluetooth adapter or its antenna:
- The optimal placement of the Bluetooth adapter is close to the middle of the house as possible.
- Try to place the Bluetooth adapter at some distance away from walls, ceilings, and floors.
- Try different orientations of the adapter's external antenna (or whole Bluetooth adapter).
- USB 3.0 ports/computers/peripherals are known culprits of RFI/EMI/EMF disruption. (See Ref. [1](https://www.usb.org/sites/default/files/327216.pdf) and [2](https://www.unit3compliance.co.uk/2-4ghz-intra-system-or-self-platform-interference-demonstration/)).
- Make sure to only connect the Bluetooth USB adapter to a USB 2.0 port (and not to a USB 3.x port).
- If your computer only has a USB 3.x port then connect the adapter via a powered USB 2.0 hub:
- A USB 2.0 hub will convert USB 3.0 to a USB 2.0 port and avoid USB 3.0 EMF.
- A USB 2.0 hub that uses an external power supply will ensure power requirements are fulfilled.
- Shield any unshielded computers/peripherals/devices by adding all-metal enclosures/chassis/casings.
- Single-board-computers and USB 3.x hard drives are especially known as source of EMF/EMI/RFI.
- Be aware metal casings can decrease the performance of internal/built-in Bluetooth adapters.
- Also, be sure to use adequately shielded USB cables for any such peripherals/devices too.
- 2.4 GHz RF Interference (RFI) from Wi-Fi Routers and Wi-Fi Access Points or other devices:
- While Bluetooth is designed to coexist with Wi-Fi, its stronger signal can interfere.
- To play it safe, try to place your Bluetooth adapter away from Wi-Fi access points.
- Place Bluetooth adapters far away from electrical/power wires/cables, power supplies, and household appliances.

View File

@ -2,6 +2,7 @@
title: Sony Bravia TV
description: Instructions on how to integrate a Sony Bravia TV into Home Assistant.
ha_category:
- Button
- Media Player
- Remote
ha_release: 0.23
@ -12,8 +13,10 @@ ha_codeowners:
ha_domain: braviatv
ha_config_flow: true
ha_platforms:
- button
- media_player
- remote
ha_ssdp: true
ha_integration_type: integration
---
@ -23,11 +26,20 @@ Almost all [Sony Bravia TV 2013 and newer](https://info.tvsideview.sony.net/en_w
{% include integrations/config_flow.md %}
## Authentication
The Bravia TV integration supports two types of authentication:
- **PSK (Pre-Shared-Key)** is a user-defined secret key used for access control. This authentication method is recommended as more reliable and stable. To set up and enable PSK on your TV, go to: **Settings -> Network -> Home Network Setup -> IP Control**.
- **PIN Code** authentication is easier and does not require additional settings.
For more information, see [IP Control Authentication](https://pro-bravia.sony.net/develop/integrate/ip-control/index.html#ip-control-authentication).
## Common Issues
### TV does not generate new pin
If you have previously set up your TV with any Home Assistant instances, you must remove Home Assistant from your TV in order for your TV to generate a new pin. To do this, you must do **one** of the following:
If you have previously set up your TV with any Home Assistant instances via PIN code, you must remove Home Assistant from your TV in order for your TV to generate a new pin. To do this, you must do **one** of the following:
- On your TV, go to: **Settings** -> **Network** -> **Remote device settings** -> **Deregister remote device**. Disable and re-enable the **Control remotely** after. Menu titles may differ slightly between models. If needed, refer to your specific model's [manual](https://www.sony.com/electronics/support/manuals) for additional guidance.
- Reset your TV to factory condition.
@ -65,6 +77,10 @@ The commands that can be sent to the TV depends on the model of your TV. To disp
{% enddetails %}
## Buttons
The integration supports `button` platform and allows you to reboot the device or terminate all running applications.
{% include integrations/option_flow.md %}
The integration allows you to customize the list of ignored sources.

View File

@ -17,12 +17,16 @@ The `caldav` platform allows you to connect to your WebDAV calendar and generate
You need to have a CalDAV server and credentials for it. This integration was tested against [Baikal](http://sabre.io/baikal/) but any integration complying with the RFC4791 should work. [Nextcloud](https://nextcloud.com/) and [Owncloud](https://owncloud.org/) work fine.
{% details "Notes for Home Assistant Core Installations" %}
You might need some additional system packages to compile the Python CalDAV library. On a Debian based system, install them by:
```bash
sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev
```
{% enddetails %}
## Basic Setup
To integrate a WebDAV calendar in Home Assistant, add the following section to your `configuration.yaml` file:

View File

@ -5,9 +5,12 @@ ha_category:
- Energy
- Sensor
ha_iot_class: Local Push
ha_config_flow: true
ha_mqtt: true
ha_release: 0.103
ha_codeowners:
- '@depl0y'
- '@glodenox'
ha_domain: dsmr_reader
ha_platforms:
- sensor
@ -18,24 +21,18 @@ The `dsmr_reader` sensor integration allows you to easily add all sensors that [
## Prerequisites
- DSMR Reader
- MQTT broker
To use this DSMR Reader sensor integration, you need to have a DSMR Reader instance running and an MQTT broker to send sensor data through.
## Setup
1. Configure the MQTT broker in DSMR Reader which Home Assistant also connects to
2. Enable the following data sources in DSMR Reader with the default mapping:
1. Add the MQTT broker integration in Home Assistant, if you haven't done so already
2. Configure the MQTT broker in the DSMR Reader application
3. Enable the following data sources in the DSMR Reader administration pages with the default mappings:
- Day consumption: Split topic
- Gas consumption: Split topic
- Meter Statistics: Split topic
- Telegram: Split topic
## Configuration
{% include integrations/config_flow.md %}
To use this integration in your installation, add the following to your `configuration.yaml` file:
## Difference with the DSMR integration
```yaml
# Example configuration.yaml entry
sensor:
- platform: dsmr_reader
```
This integration relies on the presence of an existing DSMR Reader application setup. It processes the events triggered by the MQTT publishing feature to create sensor entities within Home Assistant. This integration uses the data published on the MQTT broker, no matter how or where the application is installed. By comparison, the [DSMR](/integrations/dsmr/) integration adds a full instance of the DSMR Reader application within Home Assistant. It is possible to have both integrations installed at the same time and working together, but this is not required.

View File

@ -1,44 +0,0 @@
---
title: Flu Near You
description: Instructions on how to use Flu Near You data within Home Assistant
ha_category:
- Health
ha_release: 0.83
ha_iot_class: Cloud Polling
ha_codeowners:
- '@bachya'
ha_domain: flunearyou
ha_config_flow: true
ha_platforms:
- diagnostics
- sensor
ha_integration_type: integration
---
<div class='note warning'>
This integration is pending removal from Home Assistant and will be no longer available as of Home Assistant 2022.10.
</div>
The `flunearyou` sensor platform allows users in the United States and its
territories to get information regarding reported flu symptoms from [Flu Near
You](https://flunearyou.org/). The platform can return user-reported information as well reports from the
Center for Disease Control (CDC).
{% include integrations/config_flow.md %}
## Sensor Types
### User Report
* Number of reported cases of [Avian Flu](https://www.cdc.gov/flu/avianflu/index.htm) symptoms
* Number of reported cases of [Dengue](https://www.cdc.gov/dengue/index.html) symptoms
* Number of reported cases of [Flu](https://www.cdc.gov/flu/) symptoms
* Number of reported cases of [Flu-like](https://en.wikipedia.org/wiki/Influenza-like_illness) symptoms
* Number of reported cases of [Leptospirosis](https://www.cdc.gov/leptospirosis/index.html) symptoms
* Total number of reported cases with symptoms
* Number of reported cases with no symptoms
### CDC Report
* Current CDC level for the state
* Current CDC "Level 2" for the state

View File

@ -0,0 +1,86 @@
---
title: Google Sheets
description: Instructions on how to use Google Sheets in Home Assistant.
ha_category:
- Utility
ha_iot_class: Cloud Polling
ha_release: 2022.10
ha_config_flow: true
ha_domain: google_sheets
ha_codeowners:
- '@tkdrob'
ha_integration_type: integration
---
The Google Sheets integration allows you to connect your [Google Drive](https://drive.google.com) to Home Assistant. The integration adds a service to allow you to append rows to a Sheets document. The idea is that you can store data on there for further processing. When you set up a config entry, your drive will have a new sheet called Home Assistant. You can then rename this to whatever you like.
**Note**:
The integration currently only has access to that one document that is created during setup.
## Prerequisites
You need to configure developer credentials to allow Home Assistant to access your Google Account.
These credentials are the same as the ones for [Nest](/integrations/nest).
If you have already set up credentials, you can do step 1 and then skip to step 13 on the below instructions.
{% details "Generate Client ID and Client Secret" %}
This section explains how to generate a Client ID and Client Secret on
[Google Developers Console](https://console.developers.google.com/start/api?id=drive).
1. First go to the [Google Developers Console](https://console.developers.google.com/start/api?id=drive)
2. The wizard will ask you to choose a project to manage your application. Select a project and click continue.
3. Verify that your drive API was enabled and click 'Go to credentials'
4. Navigate to APIs & Services (left sidebar) > [Credentials](https://console.cloud.google.com/apis/credentials)
5. Click on the field on the left of the screen, **OAuth Consent Screen**.
6. Select **External** and **Create**.
7. Set the *App Name* (the name of the application asking for consent) to anything you want e.g. *Home Assistant*.
8. You then need to select a *Support email*. To do this, simply click the drop down box and select your email address.
9. You finally need to complete the section: *Developer contact information*. To do this, simply enter your email address (same as above is fine).
10. Scroll to the bottom and click **Save and Continue**. Don't have to fill out anything else or it may enable additional review.
11. You will then be automatically taken to the Scopes page. You do not need to add any scopes here so click Save and Continue to move to the Optional info page. You do not need to add anything to the Optional info page so click Save and Continue which will take you to the Summary page. Click Back to Dashboard.
12. Click **OAuth consent screen** again and set *Publish Status* to **Production** otherwise your credentials will expire every 7 days.
13. Make sure **Publishing status** is set to production.
14. Click **Credentials** in the menu on the left hand side of the screen, then click **Create credentials** (at the top of the screen), then select *OAuth client ID*.
15. Set the Application type to *Web application* and give this credential set a name (like "Home Assistant Credentials").
16. Add https://my.home-assistant.io/redirect/oauth to *Authorized redirect URIs* then click **Create**.
17. You will then be presented with a pop-up saying *OAuth client created* showing *Your Client ID* and *Your Client Secret*. Make a note of these (for example, copy and paste them into a text editor) as you will need these shortly. Once you have noted these strings, click **OK**. If you need to find these credentials again at any point then simply navigate to *APIs & Services > Credentials* and you will see *Home Assistant Credentials* (or whatever you named them in the previous step) under *OAuth 2.0 Client IDs*. To view both the *Client ID* and *Client secret*, click on the pencil icon, this will take you to the settings page for these credentials and the information will be on the right hand side of the page.
18. Double check that the *Google Drive API* has been automatically enabled. To do this, select **Library** from the menu, then search for *Google Drive API*. If it is enabled you will see *API Enabled* with a green tick next to it. If it is not enabled, then enable it.
{% enddetails %}
{% include integrations/config_flow.md %}
The integration setup will next give you instructions to enter the [Application Credentials](/integrations/application_credentials/) (OAuth Client ID and Client Secret) and authorize Home Assistant to access your Google Sheets.
{% details "OAuth and Device Authorization steps" %}
1. Continue through the steps of selecting the account you want to authorize.
2. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed.
3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**.
4. The page will now display *Link account to Home Assistant?*, note *Your instance URL*. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**.
5. You may close the window, and return back to Home Assistant where you should see a *Success!* message from Home Assistant.
{% enddetails %}
## Troubleshooting
If you have an error with your credentials you can delete them in the [Application Credentials](/integrations/application_credentials/) user interface.
### Service `google_sheets.append_sheet`
You can use the service `google_sheets.append_sheet` to add a row of data to the Sheets document created at setup.
{% details "Create Event Service details" %}
| Service data attribute | Optional | Description | Example |
| ---------------------- | -------- | ----------- | --------|
| `config_entry` | no | Config entry to use.
| `worksheet` | yes | Name of the worksheet. Defaults to the first one in the document. | Sheet1
| `data` | no | Data to be appended to the worksheet. This puts the data on a new row, one value per column. | ["foo"]
{% enddetails %}

View File

@ -83,6 +83,14 @@ HomeKit controller will poll your devices, but it will also automatically enable
HomeKit Controller will automatically discover Bluetooth devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional. Bluetooth devices may take significantly longer to pair than IP devices. Battery-powered devices may require pressing a button on the device to wake it before pairing can be successful.
## Thread device support
In order to use HomeKit over Thread you need a working border router (like a HomePod mini). Your Home Assistant instance will need to be on the same VLAN as the border router.
HomeKit Controller will automatically discover supported Thread devices using the [Zeroconf](/integrations/zeroconf) integration. Battery powered devices may go to sleep and require a button pressing to wake them up before pairing works.
In order to provision a Thread device onto a mesh network using a HomePod as a border router, first pair it with an iOS device. Then unpair it from the Home app. Don't reset it. This will leave the Thread network details on the device. Home Assistant can now pair with it over Thread.
## 'Stateless' switches and sensors
Some HomeKit devices (like buttons, remotes and doorbells) don't have sensors that can be read like a normal HomeKit device - they only inform Home Assistant when something happens. This means Home Assistant can't show an entity for them, as they have no state. But they are available for use as [device automations](/integrations/device_automation/).

View File

@ -0,0 +1,88 @@
---
title: iBeacon Tracker
description: Instructions on how to integrate iBeacon devices into Home Assistant.
ha_category:
- Presence Detection
- Device Tracker
- Sensor
ha_release: "2022.10"
ha_iot_class: Local Push
ha_domain: ibeacon
ha_platforms:
- device_tracker
- sensor
ha_bluetooth: true
ha_config_flow: true
ha_integration_type: integration
---
{% include integrations/config_flow.md %}
iBeacons are Bluetooth-enabled devices that advertise identifiers to announce their location. For example, an iBeacon attached to a trash can be used to determine if the trash can is in the garage or on the street. Home Assistant can estimate the distance of an iBeacon device in proximity to the nearest Bluetooth adapter.
iBeacon devices will be automatically detected and added as they are discovered once the integration has been added via the UI and the [Bluetooth](/integrations/bluetooth) integration is enabled and functional.
iBeacon Devices are tracked by a combination of the following data:
- UUID (universally unique identifier) is a 128-bit identifier that is generally set the same for all iBeacons at the same physical location.
- Major is an integer to differentiate between iBeacons with the same UUID.
- Minor is an integer to differentiate between iBeacons with the same UUID and Major value.
- MAC address (except for devices with a randomized MAC address)
Consider setting up your iBeacons with a schema similar to the following:
- uuid=UUID major=1000 minor=1000 Downstairs Front Room
- uuid=UUID major=1000 minor=1001 Downstairs Bathroom
- uuid=UUID major=2000 minor=1001 Upstairs Main Bedroom
- uuid=UUID major=2000 minor=1002 Upstairs Guest Bedroom
- uuid=UUID major=3000 minor=1000 Attic
iBeacon devices that do not have stable Major and Minor values are not supported. The system automatically removes iBeacon devices with unstable Major and Minor values once ten (10) or more Major and Minor values have been seen with the same UUID from an iBeacon device with a fixed MAC address.
## Fixed MAC addresses
iBeacons with a fixed MAC address will get their own set of entities for each UUID, major, minor, and MAC address combination, enabling distance and presence detection per physical device basis. In this type of setup, it is permissible to have multiple iBeacons broadcasting the same UUID, Major, and Minor combination as long as you do not exceed five devices.
## Randomized MAC addresses
iBeacons with a randomized MAC address will be combined into a single set of entities once the integration discovers the same UUID, Major, and Minor combination has been seen coming from 10 or more MAC addresses. This allows distance and presence detection based on the last reporting data. When using randomized MAC addresses, only one device must broadcast the unique UUID, Major, and Minor combination.
## Sensors
The integration will create an Estimated Distance sensor by default. This estimated distance assumes perfect RF conditions and line of sight between the iBeacon and the Bluetooth adapter. Estimated distance is generally only helpful to tell if the iBeacon is in the immediate vicinity, near, or far away from the adapter. If the system has multiple adapters, the adapter with the best RSSI value for the iBeacon will be the one reporting the distance. As this can change, checking the source attribute when considering the distance is essential.
## Known working devices
- [Blue Charm Beacons BC011-MultiBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-multi-beacon-bc011/)
- [Blue Charm Beacons BC021-MultiBeacon](https://bluecharmbeacons.com/product/bluetooth-ble-ibeacon-bc021-multibeacon-with-button-trigger-and-motion-sensor/)
- [Blue Charm Beacons BC08-MultiBeacon](https://bluecharmbeacons.com/product/blue-charm-beacons-bluetooth-ble-ibeacon-bc08-multibeacon-w-motion-sensor-and-button-trigger-ble-5-0/)
- [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531)
- [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon)
- [Feasycom FSC-BP108](https://www.feasycom.com/bluetooth-5-1-waterproof-bluetooth-beacon)
## Example automation
```yaml
alias: "The black trash can has left the building"
mode: single
trigger:
- platform: state
entity_id: sensor.black_trash_bin_estimated_distance
to: "unavailable"
for:
hours: 0
minutes: 5
seconds: 0
- platform: numeric_state
entity_id: sensor.black_trash_bin_estimated_distance
for:
hours: 0
minutes: 5
seconds: 0
above: 20
action:
- service: notify.notify
data:
message: "The black trash can has left the building"
title: "The black trash can has left the building"
```

View File

@ -4,6 +4,7 @@ description: Instructions on the IntelliFire Fireplace integration for Home Assi
ha_category:
- Binary Sensor
- Climate
- Fan
- Sensor
- Switch
ha_iot_class: Local Polling
@ -15,6 +16,7 @@ ha_config_flow: true
ha_platforms:
- binary_sensor
- climate
- fan
- sensor
- switch
ha_dhcp: true
@ -39,6 +41,10 @@ The following controllable entities are available:
- **Flame** - Turn fireplace on/off.
- **Pilot Light** - Turn pilot light on/off.
### Fan
- **Fan** - If your unit is equipped with a fan - this entry will be present. There are 4 fan speeds (1-4), with 0 being off.
### Climate
- **Thermostat** - This entity will be present if your unit has thermostatic control.

View File

@ -0,0 +1,24 @@
---
title: Kegtron
description: Instructions on how to integrate Kegtron Smart Keg Monitor (Gen 1) into Home Assistant.
ha_category:
- Sensor
ha_bluetooth: true
ha_release: 2022.10
ha_iot_class: Local Push
ha_codeowners:
- '@Ernst79'
ha_domain: kegtron
ha_config_flow: true
ha_platforms:
- sensor
ha_integration_type: integration
---
Integrates [Kegtron](https://kegtron.com/) Smart Keg Monitor (Gen 1) devices into Home Assistant.
{% include integrations/config_flow.md %}
The Kegtron integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional.
The integration only supports Smart Keg Monitor devices of the 1st generation (KT-100 and KT-200), which communicate data with Bluetooth LE.

View File

@ -0,0 +1,61 @@
---
title: Keymitt MicroBot Push
description: Instructions on how to set up the MicroBot Push.
ha_category:
- Switch
ha_release: "2022.10"
ha_iot_class: Assumed State
ha_codeowners:
- '@spycle'
ha_domain: keymitt_ble
ha_bluetooth: true
ha_platforms:
- switch
ha_config_flow: true
ha_integration_type: integration
---
This integration allows you to locally control a MicroBot Push (previously manufactured by Naran but now under the Keymitt brand).
### Prerequisites
In order to use this integration, it is required to have working [Bluetooth](/integrations/blueooth) set up on the device running Home Assistant. A Naran/Keymitt hub is not required.
The device will need to be in pairing mode before adding to Home Assistant. To reset the MicroBot Push, turn it off, then back on, and immediately hold the push button while the LED is red. After approximately 5 seconds, the LED will flash rapidly, at which point release the button. The LED will blink blue if the pairing mode has been successfully activated.
If you have multiple devices, you will need to know the BTLE MAC address of your device to tell them apart.
Please note, that devices cannot remain paired to the MicroBot app for this integration to function. They will be paired to Home Assistant exclusively.
{% include integrations/config_flow.md %}
### Supported Devices
This Integration is for the MicroBot Push only. The Keymitt lock is not supported.
### Service `keymitt_ble.calibrate`
The Calibration service will locally set the MicroBot Push depth, duration, and mode.
Please note: The push arm will extend or retract (dependent on the mode set) after the service call is invoked. The mode and depth will be demonstrated, but not the duration. The setting is, however, stored and can be confirmed by manually operating the device.
| Service Data Attribute | Required | Description |
| ---------------------- | -------- | --------------------------------------------------------------------------------------------- |
| `depth` | yes | How far (in percent) to extend the push arm. |
| `duration` | yes | Duration (in seconds) to hold the arm extended. |
| `mode` | yes |'Normal' - extend and retract the arm. |
| | |'Invert' - retract then extend the arm. |
| | |'Toggle' - toggle between extend and retract. |
### Error codes and troubleshooting
The integration will automatically discover devices once the [Bluetooth](/integrations/bluetooth) integration is enabled and functional.
Due to the device going into deep sleep after prelonged disuse, the response time can be up to a minute in extreme cases. On average it will be much quicker.
{% configuration_basic %}
"Failed to pair":
description: Make sure your devices are powered on, in range, and in pairing mode. Pressing the button on the MicroBot Push to take it out of deep sleep may also be beneficial.
"No unconfigured devices found":
description: Make sure your devices are powered on, in range, and in pairing mode. Pressing the button on the MicroBot Push to take it out of deep sleep may also be beneficial.
{% endconfiguration_basic %}

View File

@ -42,6 +42,7 @@ These devices have been sold under many brands, including:
- ILC
- LEDBlue
- LED BLE
- Magic Blue
- MCWOFI
- PHOPOLLO
- RESHAKE

View File

@ -0,0 +1,29 @@
---
title: Lidarr
description: Instructions on how to integrate Lidarr with Home Assistant
ha_category:
- Downloading
ha_release: "2022.10"
ha_iot_class: Local Polling
ha_domain: lidarr
ha_config_flow: true
ha_codeowners:
- '@tkdrob'
ha_quality_scale: silver
ha_platforms:
- sensor
---
The Lidarr integration pulls data from a given [Lidarr](https://lidarr.audio/) instance.
{% include integrations/config_flow.md %}
To retrieve your API key, open your Lidarr web interface and navigate to Settings, then General tab. Your Lidarr API Key will be listed on this page under the Security section.
## Sensors
The Lidarr integration will add the following sensors:
- Available disk space for each root folder.
- The number of episodes in the queue.
- The number of albums still wanted.

View File

@ -59,7 +59,7 @@ To determine whether or not a HEV cycle is currently running, Home Assistant exp
## Light effects
The LIFX platform supports several light effects. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`](/integrations/light/#service-lightturn_on) service, for example like this:
The LIFX platform supports several software-controlled light effects and one hardware based effect. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`](/integrations/light/#service-lightturn_on) service, for example like this:
```yaml
automation:
@ -91,7 +91,9 @@ script:
         change: 35
```
The available light effects and their options are listed below.
The `lifx.effect_move` effect is hardware effect that is only available on LIFX multizone devices like the LIFX Z, Lightstrip or Beam. Note that if all the LEDs of the multizone device are set to the same color, the effect will not be visible. The effect can be stopped and started regardless of the power state of the device, but the default is to turn the device on when starting the effect. Set the `power_on` attribute of the `lifx.effect_move` service to `false` to override the default.
All the available light effects and their options are listed below.
### Service `lifx.effect_pulse`
@ -122,9 +124,22 @@ Run an effect with colors looping around the color wheel. All participating ligh
| `spread` | Maximum color difference between participating lights, in degrees on a color wheel (ranges from 0 to 359).
| `power_on` | Set this to False to skip the effect on lights that are turned off (defaults to True).
### Service `lifx.effect_move`
A harware-based effect available on LIFX multizone devices that creates a movement animation of the colors currently set on the device. The direction and speed of the animation are controlled by the `speed` and `direction` attributes. You can change the colors of the effect while it is running using the `lifx.set_state` service.
The effect will not be visible if all LEDs on the device are set to the same color and is ignored by unsupported devices.
| Service data attribute | Description |
| ---------------------- | ----------- |
| `entity_id` | String or list of strings that point at `entity_id`s of multizone lights.
| `speed` | Duration in seconds for the effect to travel the length of the device (min: 0.1s, max: 60s)
| `direction` | The direction in which the effect will travel, either "right" or "left" (default: right)
| `power_on` | Whether to turn the light on before starting the effect (optional, default: true)
### Service `lifx.effect_stop`
Run an effect that does nothing, thereby stopping any other effect that might be running.
Run an effect that does nothing, thereby stopping any software or hardware effect that might be running.
| Service data attribute | Description |
| ---------------------- | ----------- |

View File

@ -12,6 +12,7 @@ ha_codeowners:
- '@vanstinator'
ha_domain: melnor
ha_platforms:
- number
- sensor
- switch
ha_integration_type: integration

View File

@ -17,7 +17,7 @@ ha_platforms:
ha_integration_type: helper
---
The Min/Max integration consumes the state from other sensors to determine the minimum, maximum, latest (last), mean and median of the collected states.
The Min/Max integration consumes the state from other sensors to determine the minimum, maximum, latest (last), mean, median, and range of the collected states.
The sensor provided by this integration will always show you the lowest/highest/latest value which was received from all monitored sensors. If you have spikes in your values, it's recommended to filter/equalize your values with a [statistics sensor](/integrations/statistics) first.
@ -30,7 +30,7 @@ Name:
Input entities:
description: At least two entities to monitor. All entities must use the same unit of measurement.
Type:
description: The type of the sensor, this can be either "min", "max", "last", "mean", or "median".
description: The type of the sensor, this can be either "min", "max", "last", "mean", "median", or "range".
Precision:
description: Round the calculated mean or median value to at most N decimal places.
{% endconfiguration_basic %}
@ -57,7 +57,7 @@ entity_ids:
required: true
type: [list, string]
type:
description: "The type of sensor: `min`, `max`, `last`, `mean` or `median`."
description: "The type of sensor: `min`, `max`, `last`, `mean`, `median`, or `range`."
required: false
default: max
type: string

View File

@ -4,11 +4,13 @@ description: Instructions on how to integrate Netatmo integration into Home Assi
ha_category:
- Camera
- Climate
- Cover
- Environment
- Hub
- Light
- Media Source
- Sensor
- Switch
- Weather
ha_release: '0.20'
ha_iot_class: Cloud Polling
@ -20,10 +22,12 @@ ha_homekit: true
ha_platforms:
- camera
- climate
- cover
- diagnostics
- light
- select
- sensor
- switch
ha_integration_type: integration
---
@ -33,8 +37,10 @@ There is currently support for the following device types within Home Assistant:
- [Camera](#camera)
- [Climate](#climate)
- [Cover](#cover)
- [Light](#light)
- [Sensor](#sensor)
- [Switch](#switch)
- [Webhook Events](#webhook-events)
{% include integrations/config_flow.md %}
@ -49,21 +55,30 @@ To edit an existing area, enter its name and follow the dialog.
## Camera
The `netatmo` camera platform is consuming the information provided by a [Netatmo Smart Indoor](https://www.netatmo.com/en-gb/security/cam-indoor) or [Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) camera. This integration allows you to view the current live stream created by the camera.
The `netatmo` camera platform is consuming the information provided by a [Netatmo Smart Indoor](https://www.netatmo.com/en-gb/security/cam-indoor), [Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) and [Netatmo Smart Video Doorbell](https://www.netatmo.com/en-gb/security/doorbell) camera. This integration allows you to view the current live stream created by the camera (exception: video doorbell).
## Climate
The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat) or [Netatmo Smart Radiator Valve](https://www.netatmo.com/en-gb/energy/additional-valve). This integration allows you to view the current temperature and control the setpoint.
The `netatmo` thermostat platform is consuming the information provided by a [Netatmo Smart Thermostat](https://www.netatmo.com/product/energy/thermostat), [Smart Modulating Thermostat](https://www.netatmo.com/en-gb/energy/modulating-thermostat) and [Netatmo Smart Radiator Valve](https://www.netatmo.com/en-gb/energy/additional-valve). This integration allows you to view the current temperature and control the setpoint.
## Cover
The `netatmo` cover platform provides support for Bubendorff shutters.
## Light
The `netatmo` light platform is consuming information provided by a [Netatmo Smart Outdoor](https://www.netatmo.com/en-gb/security/cam-outdoor) camera and requires an active webhook. This integration allows you to turn on/off the flood lights.
It further provides support for Legrand/BTicino dimmers.
## Sensor
The `netatmo` sensor platform is consuming the information provided by a [Netatmo Smart Home Weather Station](https://www.netatmo.com/en-us/weather/weatherstation) a
[Netatmo Smart Indoor Air Quality Monitor](https://www.netatmo.com/en-us/aircare/homecoach) device or [Netatmo Public Weather Stations](https://weathermap.netatmo.com/).
## Switch
The `netatmo` switch platform provides support for Legrand/BTicino switches and power plugs.
## Services
### Set Outdoor Camera Light Mode

View File

@ -35,7 +35,13 @@ Consider_home:
{% endconfiguration_basic %}
## Router entities
The NETGEAR router will have the following entities:
The NETGEAR router will have the following entities.
Note that not all routers support all features, if a router does not support a feature, the corresponding entity will have the unavailable status even when the entity is disabled.
You might also see the following error in the log `404 service '...', method '...' not found`, to prevent these errors, keep the unsupported entities disabled.
All possibly unsupported entities are disabled by default.
### Reboot button
@ -49,7 +55,19 @@ Update entity to view current and latest firmware version, and install the lates
The total and average amount of downloaded/uploaded data through the router can be tracked per day/week/month.
In order for these entities to display the data (instead of 0), the "Traffic Meter" should be enabled in the router settings.
Log into your router > Select **ADVANCED** > **Advanced Setup** > **Traffic Meter** > **Enable Traffic Meter** check box.
Enable the `Traffic Meter` switch entity and turn it on.
### Router feature switches
The following router features can be turned on/off, and the status can be read:
- Access Control
- Traffic Meter
- Parental Control
- Quality of Service
- 2.4G Guest Wifi
- 5G Guest Wifi
- Smart Connect
### Speed test data
@ -77,7 +95,7 @@ Displays if the device is currently connected to the router (Home) or not (Away)
Switch that lets you Allow or Block a device on the Network.
For this entity to actually Block the device, "Access Control" needs to be turned on in the Router settings.
Log into your router > Select **ADVANCED** > **Security** > **Access Control** > **Turn on Access Control** check box.
Enable the `Access Control` switch entity and turn it on.
### Signal strength

View File

@ -159,5 +159,6 @@ The list with all known valid keys can be found [here](https://github.com/floria
- TX-P42VT30E
- TX-P50GT30Y
- TX-P50GT60E
- TX-65HZ1000W
If your model is not on the list, give it a test. If everything works correctly, then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/panasonic_viera.markdown).

View File

@ -176,14 +176,14 @@ script:
The current implementation of the Python module (Plugwise-Smile) includes:
Adam (zone_control):
Adam (zone_control) with On/Off, OpenTherm, and Loria/Thermastage heating and cooling support:
- v3.x
- v2.3
- Devices supported are Anna, Lisa, Jip, Floor, Tom, Koen and Plug - note a Koen always comes with a Plug (the active part)
- Devices supported are Anna, Lisa, Jip, Floor, Tom, Plug, Aqara Smart Plug, and Koen (a Koen always comes with a Plug, the active part)
Anna (thermostat):
Anna (thermostat) with OpenTherm heating, and Elga and Loria/Thermastage with heating and cooling support:
- v4.x
- v3.x

View File

@ -4,157 +4,30 @@ description: Instructions on how to integrate Radarr sensors with Home Assistant
ha_category:
- Downloading
ha_release: 0.47
ha_config_flow: true
ha_iot_class: Local Polling
ha_domain: radarr
ha_platforms:
- binary_sensor
- sensor
ha_codeowners:
- '@tkdrob'
ha_integration_type: integration
---
This `radarr` sensor platform pulls data from a given [Radarr](https://radarr.video/) instance.
This Radarr integration pulls data from a given [Radarr](https://radarr.video/) instance.
Your API key can be found in Settings > General in the Radarr Web UI.
## Configuration
{% include integrations/config_flow.md %}
To use your Radarr sensor in your installation, add the following to your `configuration.yaml` file:
## Integration Entities
```yaml
# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
```
Each added configuration entry will create the following binary sensor:
{% configuration %}
api_key:
required: true
type: string
description: Your Radarr API key, found in Settings > General in the Radarr Web UI.
host:
required: false
type: string
description: The host Radarr is running on.
default: "`localhost`"
port:
required: false
type: integer
description: The port Radarr is running on.
default: 7878
urlbase:
required: false
type: string
description: The base URL Radarr is running under. Defaults to `/`.
monitored_conditions:
required: false
type: list
description: Conditions to display on the frontend.
default: "`movies`"
keys:
movies:
description: The number of movies in Radarr.
upcoming:
description: The number of upcoming movie releases (physical and in cinemas).
commands:
description: The number of commands being run.
diskspace:
description: The available disk space.
status:
description: The current system status information.
days:
required: false
type: integer
description: How many days to look ahead for the upcoming sensor, 1 means today only.
default: 1
include_paths:
required: false
type: list
description: Array of file paths to include when calculating diskspace. Leave blank to include all.
unit:
required: false
type: string
description: The unit to display disk space in.
default: GB
ssl:
required: false
type: boolean
description: Whether or not to use SSL for Radarr.
default: false
{% endconfiguration %}
- **Health**: Shows if the Radarr instance is healthy. This is determined to have a problem if Radarr cannot communicate with any enabled download clients or no indexers are available for RSS feeds or searches.
## Examples
Each added configuration entry will create the following sensors:
In this section you find some real-life examples of how to use this sensor.
### Show upcoming movie releases in the next 2 days
```yaml
# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
host: 192.168.1.8
monitored_conditions:
- upcoming
days: 2
```
### Enable SSL
SSL may run on a different port than the default (7878). The SSL port can be bound to any port in Radarr, so it should be set in the configuration here (unless it is changed to 7878).
```yaml
# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
host: 192.168.1.8
port: 9898
monitored_conditions:
- upcoming
days: 2
ssl: true
```
### Get disk space for all storage locations
```yaml
# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
host: 192.168.1.8
monitored_conditions:
- diskspace
```
### Get disk space for listed storage locations
The storage locations Radarr returns are in the system page and in some cases this can list duplicates if sub paths are mounted separately. By listing paths to include, you can choose what data is reported by the sensor.
```yaml
# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
host: 192.168.1.8
monitored_conditions:
- diskspace
include_paths:
- /tank/plex
```
### Get disk space in different unit
The Radarr API returns available space in bytes, but this sensor will default to reporting it in GB to make the number more manageable. This can be overridden if your storage needs require a different unit. All units from bytes (B) to yottabytes (YB) are supported.
*This calculation is done using base 2 math, and may differ from systems calculating using base 10 math.*
```yaml
# Example configuration.yaml entry
sensor:
- platform: radarr
api_key: YOUR_API_KEY
host: 192.168.1.8
monitored_conditions:
- diskspace
unit: TB
```
- **Disk Space**: Shows the disk space available to Radarr.
- **Movies**: Shows the number of movies in the Radarr database. (disabled by default)
- **Start Time**: The time when Radarr was last restarted.

View File

@ -42,7 +42,7 @@ If you have multiple sites, only the first site will be used.
The integration will connect locally to your system.
No dependency on the cloud, and instantaneous updates, but is harder to set up.
You will need the master code to your system, and with older models,
You will need the panel access code (default 5678) to your system, this access code is NOT the same as the installer/subinstaller code, and with older models,
you might need to either disconnect your system from the cloud, or set up a proxy that will allow you to connect both locally and via the cloud.
The local version of the integration does not support events, and the `arming` state.

View File

@ -143,7 +143,7 @@ entity_category:
type: string
default: None
expire_after:
description: Defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`.
description: If set, it defines the number of seconds after the sensor's state expires, if it's not updated. After expiry, the sensor's state becomes `unavailable`. Default the sensors state never expires.
required: false
type: integer
default: 0

View File

@ -59,7 +59,7 @@ Switch entities are created for each Smappee Switch and Smappee Comfort Plug.
## Cloud API configuration
To use the Smappee cloud integration you need a personal `client_id` and `client_secret` and add these to your `configuration.yaml` file. The `client_id` and `client_secret` can be obtained by contacting [info@smappee.com](mailto:info@smappee.com) and require a recurring monthly fee.
To use the Smappee cloud integration you need a personal `client_id` and `client_secret` and add these to your `configuration.yaml` file. For personal use, access to the API is free and credentials can be obtained by contacting [support@smappee.com](mailto:support@smappee.com). For commercial usage, it is based on a recurring fee and credentials can be obtained by contacting [info@smappee.com](mailto:info@smappee.com).
For any information about the use of the API please refer to the [Smappee API space](https://smappee.atlassian.net/wiki/spaces/DEVAPI/overview).
```yaml

View File

@ -117,15 +117,15 @@ You will need a USB GSM stick modem or device like SIM800L v2 connected via USB
### List of modems known to work
- [SIM800C HAT form factor](https://www.amazon.com/gp/product/B07PQLRCNR/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) Make sure to `enable_uart=1` on your `config.txt` boot file.
- [SIM800C](https://www.amazon.com/gp/product/B087Z6F953/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)
- [Huawei E3372-510](https://www.amazon.com/gp/product/B01N6P3HI2/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)(
Need to unlock it using [this guide](http://blog.asiantuntijakaveri.fi/2015/07/convert-huawei-e3372h-153-from.html))
- [Huawei E3531](https://www.amazon.com/Modem-Huawei-Unlocked-Caribbean-Desbloqueado/dp/B011YZZ6Q2/ref=sr_1_1?keywords=Huawei+E3531&qid=1581447800&sr=8-1)
- [Huawei E3372](https://www.amazon.com/gp/product/B01N6P3HI2/ref=ppx_yo_dt_b_asin_title_o00_s00?ie=UTF8&psc=1)(
Note: E3372h-153 and E3372h-510 need to be unlocked [this guide](http://blog.asiantuntijakaveri.fi/2015/07/convert-huawei-e3372h-153-from.html), The Huawei E3372h-320 won't work at all, since it is locked down too much)
- [Huawei E3531](https://www.amazon.com/Modem-Huawei-Unlocked-Caribbean-Desbloqueado/dp/B011YZZ6Q2/ref=sr_1_1?keywords=Huawei+E3531&qid=1581447800&sr=8-1) (note: Devices with firmare versions 22.XX need to be unlocked using [this guide](https://community.home-assistant.io/t/trouble-setting-up-huawei-e3531s-2-with-sms-notifications-via-gsm-modem-integration/462737/9?u=alexschmitz222))
- [Huawei E3272](https://www.amazon.com/Huawei-E3272s-506-Unlocked-Americas-Europe/dp/B00HBL51OQ)
- ZTE K3565-Z
### List of modems known to NOT work
- No known modems
- Huawei E3372h-320
### List of modems that may work

View File

@ -43,9 +43,9 @@ The following characteristics are supported for `sensor` source sensors:
| `average_linear` | The average value of stored measurements under consideration of the time distances between them. A linear interpolation is applied per measurement pair. Good suited to observe a source sensor with non-periodic sensor updates and when continuous behavior is represented by the measurements (e.g. outside temperature).
| `average_step` | The average value of stored measurements under consideration of the time distances between them. LOCF (last observation carried forward weighting) is applied, meaning, that the old value is assumed between two measurements. The resulting step function represents well the behavior of non-continuous behavior, like the set temperature of a boiler.
| `average_timeless` | The average value of stored measurements. This method assumes that all measurements are equally spaced and, therefore, time is ignored and a simple average of values is computed. Equal to `mean`.
| `change_sample` | The average change per sample. The difference between the oldest and newest measurement is divided by the number of in-between measurements (n-1).
| `change_second` | The average change per second. The difference between the oldest and newest measurement is divided by seconds between them.
| `change` | The difference between the oldest and newest measurement.
| `change_sample` | The average change per sample. The difference between the newest and the oldest measurement is divided by the number of in-between measurements (n-1).
| `change_second` | The average change per second. The difference between the newest and the oldest measurement is divided by seconds between them.
| `change` | The difference between the newest and the oldest measurement.
| `count` | The number of stored source sensor readings. This number is limited by `sampling_size` and can be low within the bounds of `max_age`.
| `datetime_newest` | The timestamp of the newest measurement.
| `datetime_oldest` | The timestamp of the oldest measurement.

View File

@ -3,6 +3,7 @@ title: SwitchBee
description: Instructions for how to integrate SwitchBee accessories within Home Assistant.
ha_category:
- Switch
- Button
ha_release: 2022.10
ha_iot_class: local Polling
ha_config_flow: true
@ -11,6 +12,8 @@ ha_codeowners:
ha_domain: switchbee
ha_platforms:
- switch
- button
ha_integration_type: integration
---
@ -22,6 +25,7 @@ There is currently support for the following device types:
- Timed Power Switch (Boiler)
- Group Switch
- Timed Switch
- Scenario
Supported devices will be discovered after the SwitchBee integration is configured.

View File

@ -25,7 +25,7 @@ ha_platforms:
ha_integration_type: integration
---
The Synology DSM sensor platform provides access to various statistics from your [Synology NAS](https://www.synology.com) as well as cameras from the [Surveillance Station](https://www.synology.com/en-us/surveillance).
The Synology DSM integration provides access to various statistics from your [Synology NAS](https://www.synology.com) (_DSM 5.x and higher_) as well as cameras from the [Surveillance Station](https://www.synology.com/en-us/surveillance).
{% include integrations/config_flow.md %}
@ -52,6 +52,8 @@ Due to the nature of the Synology DSM API, it is required to grant the user admi
When creating the user, it is possible to deny access to all locations and applications. By doing this, the user will not be able to login to the web interface or view any of the files on the Synology NAS. It is still able to read the utilization and storage information using the API.
If you want to add cameras from [Surveillance Station](https://www.synology.com/en-us/surveillance), the user needs application permission for [Surveillance Station](https://www.synology.com/en-us/surveillance).
### If you utilize 2-Step Verification or Two Factor Authentication (2FA) with your Synology NAS
If you have the "Enforce 2-step verification for the following users" option checked under **Control Panel > User > Advanced > 2-Step Verification**, you'll need to configure the 2-step verification/one-time password (OTP) for the user you just created before the credentials for this user will work with Home Assistant.

View File

@ -22,7 +22,7 @@ You can also click the following button to be redirected to the Helpers page of
{% my helpers badge %}
To be able to add Helpers via the user interface you should have default_config: in your configuration.yaml, it should already be there by default unless you removed it. If you removed default_config: from your configuration, you must add timer: to your configuration.yaml first, then you can use the UI.
To be able to add Helpers via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it. If you removed `default_config:` from your configuration, you must add `timer:` to your `configuration.yaml` first, then you can use the UI.
Timers can also be configured via configuration.yaml:
To add a timer to your installation, add the following to your `configuration.yaml` file:

View File

@ -49,6 +49,8 @@ These devices do not send updates, but can be locked and unlocked.
Some locks only send push updates when they have an active HomeKit pairing. If your lock is not sending push updates, ensure it's paired with a HomeKit using an iOS device or the HomeKit controller integration. The lock cannot be paired via HomeKit Controller and the Yale Access Bluetooth integration on the same Home Assistant instance as they will both try to access the lock simultaneously and fail.
One easy way to fix this is to create a new/second home in the Apple Home app and add the lock to that new home. Push updates should occur as intended after the lock is added.
Alternatively, call the `homeassistant.update_entity` service to force the integration to update the lock state.
## Door Sensors

View File

@ -649,23 +649,21 @@ _This option is only available for Home Assistant OS (the recommended installati
This add-on can only be configured via the built-in Z-Wave control panel in Home Assistant.
**Option 2: The Zwavejs2Mqtt (aka "Z-Wave JS to MQTT") add-on installed from the community add-on store**
**Option 2: The Z-Wave JS UI add-on installed from the community add-on store**
_This option is only available for Home Assistant OS (the recommended installation type) and Home Assistant Supervised installations._
This add-on includes the Z-Wave JS Server as part of the Zwavejs2Mqtt application. Despite the name, MQTT is not required to run this add-on and both provide the same Z-Wave JS driver.
This add-on includes the Z-Wave JS Server as part of the Z-Wave JS UI application. The Z-Wave network can be configured via the built-in Z-Wave control panel in Home Assistant and alternatively via the Z-Wave control panel built into Z-Wave JS UI. It provides you with a full-fledged, attractive, and feature-complete UI to manage your Z-Wave nodes and settings, which may support more advanced use cases as development continues on the Z-Wave control panel.
The Z-Wave network can be configured via the built-in Z-Wave control panel in Home Assistant and alternatively via the Z-Wave control panel built into Zwavejs2Mqtt. It provides you with a full-fledged, attractive, and feature-complete UI to manage your Z-Wave nodes and settings, which may support more advanced use cases as development continues on the Z-Wave control panel.
**Option 3: The Z-Wave JS UI Docker container**
**Option 3: The Zwavejs2Mqtt Docker container**
This is the recommended approach if you're running Home Assistant Container. See the [Z-Wave JS UI documentation](https://zwave-js.github.io/zwave-js-ui//#/getting-started/quick-start) for instructions.
This is the recommended approach if you're running Home Assistant Container. See the [Zwavejs2Mqtt documentation](https://zwave-js.github.io/zwavejs2mqtt/#/getting-started/quick-start) for instructions.
This method provides the same server application and UI as the Zwavejs2Mqtt add-on. After installing the Docker image, make sure you enable the WS Server in the Home Assistant section of Settings page.
This method provides the same server application and UI as the Z-Wave JS UI add-on. After installing the Docker image, make sure you enable the WS Server in the Home Assistant section of Settings page.
**Option 4: Run the Z-Wave JS server yourself**
This is considered a very advanced use case. In this case you run the Z-Wave JS Server or Zwavejs2Mqtt NodeJS application directly. Installation and maintaining this is out of scope for this document. See the [Z-Wave JS server](https://github.com/zwave-js/zwave-js-server) or [Zwavejs2Mqtt](https://github.com/zwave-js/zwavejs2mqtt) GitHub repository for information.
This is considered a very advanced use case. In this case you run the Z-Wave JS Server or Z-Wave JS UI NodeJS application directly. Installation and maintaining this is out of scope for this document. See the [Z-Wave JS server](https://github.com/zwave-js/zwave-js-server) or [Z-Wave JS UI](https://github.com/zwave-js/zwave-js-ui/) GitHub repository for information.
<div class='note info'>
@ -677,7 +675,7 @@ This is considered a very advanced use case. In this case you run the Z-Wave JS
**Network keys** are used to connect securely to compatible devices. The network keys consist of 32 hexadecimal characters, for example, `2232666D100F795E5BB17F0A1BB7A146` (do not use this one, pick a random one). Without network keys security enabled devices cannot be added securely and will not function correctly. You must provide these network keys in the configuration part of the Z-Wave JS Server.
For new installations, unique default keys will be auto-generated for you by the Z-Wave JS add-on. You can also generate those network keys in the Settings section of Zwavejs2Mqtt.
For new installations, unique default keys will be auto-generated for you by the Z-Wave JS add-on. You can also generate those network keys in the Settings section of Z-Wave JS UI.
If migrating from the legacy `zwave` integration, your network key from those integration should be entered as the S0 network key. Those integrations did not support S2 security, so you will not yet have S2 network keys to configure.
@ -689,9 +687,9 @@ Make sure that you keep a backup of these keys in a safe place. You will need to
Once you have the Z-Wave JS server up and running, you need to install and configure the integration in Home Assistant (as described above).
If you're running full Home Assistant with supervisor, you will be presented with a dialog that asks if you want to use the Z-Wave JS Supervisor add-on. You **must** uncheck this box if you are running the Z-Wave JS server in any manner other than the official Z-Wave JS add-on, including using Z-Wave JS to MQTT add-on.
If you're running full Home Assistant with supervisor, you will be presented with a dialog that asks if you want to use the Z-Wave JS Supervisor add-on. You **must** uncheck this box if you are running the Z-Wave JS server in any manner other than the official Z-Wave JS add-on, including using Z-Wave JS UI add-on.
If you're not running the supervisor or you've unchecked the above mentioned box, you will be asked to enter a websocket URL (defaults to ws://localhost:3000). It is very important that you fill in the correct (Docker) IP/hostname here. For example for the Z-Wave JS to MQTT add-on this is `ws://a0d7b954-zwavejs2mqtt:3000`.
If you're not running the supervisor or you've unchecked the above-mentioned box, you will be asked to enter a websocket URL (defaults to ws://localhost:3000). It is very important that you fill in the correct (Docker) IP/hostname here. For example for the Z-Wave JS UI add-on this is `ws://a0d7b954-zwavejs2mqtt:3000`.
## Frequently Asked Questions
@ -707,7 +705,7 @@ You can also keep track of the roadmap for the Z-Wave integration [here](https:/
#### Which Z-Wave controller should I buy?
Z-Wave supports all known 500 and 700 series Z-Wave controllers. If you are just starting out, we recommend that you purchase a 500 series controller.
Z-Wave supports all known 500 and 700 series Z-Wave controllers. If you are just starting out, we recommend that you purchase a 700 series controller (with firmware updated to >=7.17.2).
For more information, see [Supported Z-Wave dongles](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules)
@ -741,11 +739,15 @@ Node {{ node }};{{ s.name }};{{ s.entity_id }}{% endfor %}
{% endraw %}
#### Can I switch between the Official Z-Wave JS add-on and Zwavejs2Mqtt?
#### What happened to Zwavejs2Mqtt or the Z-Wave JS to MQTT add-on?
Zwavejs2Mqtt was renamed Z-Wave JS UI in September 2022. They are synonymous with no difference between their capabilities.
#### Can I switch between the Official Z-Wave JS add-on and the Z-Wave JS UI add-on?
You can, but you cannot run them both at the same time. Only one of them can be active at the same time.
#### How do I switch between the Official Z-Wave JS add-on and Zwavejs2Mqtt?
#### How do I switch between the Official Z-Wave JS add-on and the Z-Wave JS UI add-on?
Switching does not require renaming your devices.
@ -753,7 +755,7 @@ Switching does not require renaming your devices.
2. Note your network security keys from the official add-on.
3. Install and configure the Z-Wave JS to MQTT add-on, including setting the location of your Z-Wave device and the network security keys.
3. Install and configure the Z-Wave JS UI add-on, including setting the location of your Z-Wave device and the network security keys.
4. Add the Z-Wave integration again (even though it is still installed), and uncheck the "Use the Z-Wave JS Supervisor add-on". Enter the correct address for the community add-on in the URL field in the next step.
@ -761,30 +763,30 @@ Switching does not require renaming your devices.
6. Enable the Z-Wave integration.
#### What's the benefit of using Zwavejs2Mqtt over the official Add-On?
#### What's the benefit of using Z-Wave JS UI add-on over the official Add-On?
The official add-on provides the Z-Wave Server in its bare minimum variant, just enough to serve the Home Assistant integration.
The Zwavejs2Mqtt project includes the Z-Wave JS Server for convenience but also provides a Z-Wave Control panel and the ability (hence its name) to serve your Z-Wave network to MQTT. You can leave the MQTT Gateway disabled and only use the Control panel but you can even have the MQTT features enabled at the same time. For example to interact with Z-Wave from other devices, while the Home Assistant integration still works (as long as you keep the WS Server enabled in Zwavejs2Mqtt).
The Z-Wave JS UI project includes the Z-Wave JS Server for convenience but also provides a Z-Wave Control panel and the ability to serve your Z-Wave network to MQTT. This allows you to use the control panel, and if you so choose, to also use MQTT at the same time. For example, some users may use MQTT to interact with Z-Wave from other devices, while the Home Assistant integration still works (as long as you keep the WS Server enabled in Z-Wave JS UI).
#### Zwavejs2Mqtt seems to provide discovery of Home Assistant devices on its own too, now I'm confused
#### Z-Wave JS UI seems to provide discovery of Home Assistant devices on its own too, now I'm confused
Correct, the Zwavejs2Mqtt project existed before Home Assistant had plans to move to the Z-Wave JS Driver. You should use the integration for device discovery and _not_ the MQTT discovery provided by Zwavejs2Mqtt.
Correct, the Z-Wave JS UI project existed before Home Assistant had plans to move to the Z-Wave JS Driver. You should use the integration for device discovery and _not_ the MQTT discovery provided by Z-Wave JS UI.
#### Can I run Zwavejs2Mqtt only for the control panel and nothing else?
#### Can I run Z-Wave JS UI only for the control panel and nothing else?
Sure, in the settings of Zwavejs2Mqtt, make sure to enable "WS Server" and disable "Gateway".
Sure, in the settings of Z-Wave JS UI, make sure to enable "WS Server" and disable "Gateway".
#### How do I use my OZW network key in Zwavejs2Mqtt?
#### How do I use my OZW network key in Z-Wave JS UI?
You can use your existing network key in Zwavejs2Mqtt but you need to slightly adjust it.
The OZW looks like this: `0x01, 0x02, 0x03 etc.` while the network key format accepted in Zwavejs2Mqtt looks like this `0102030405 etc.`. You can simply edit your existing key and remove the `"0x"` part and the `", "` part so it becomes one large string of numbers.
You can use your existing network key in Z-Wave JS UI but you need to slightly adjust it.
The OZW looks like this: `0x01, 0x02, 0x03 etc.` while the network key format accepted in Z-Wave JS UI looks like this `0102030405 etc.`. You can simply edit your existing key and remove the `"0x"` part and the `", "` part so it becomes one large string of numbers.
#### Should I name my devices in Home Assistant, or in Zwavejs2Mqtt?
#### Should I name my devices in Home Assistant, or in Z-Wave JS UI?
Ultimately, this is a personal decision. If you provide a name or location for a device in the Zwavejs2Mqtt UI, that name will be imported into Home Assistant when the integration is reloaded or Home Assistant is restarted. Any entity names, however, will not change if the device has already been set up by Home Assistant. Names set in Zwavejs2Mqtt _will not_ overwrite changes that have already been made in Home Assistant.
Ultimately, this is a personal decision. If you provide a name or location for a device in the Z-Wave JS UI, that name will be imported into Home Assistant when the integration is reloaded or Home Assistant is restarted. Any entity names, however, will not change if the device has already been set up by Home Assistant. Names set in Z-Wave JS UI _will not_ overwrite changes that have already been made in Home Assistant.
Names set in Home Assistant will not import into Zwavejs2Mqtt.
Names set in Home Assistant will not import into Z-Wave JS UI.
### Using Z-Wave
@ -848,9 +850,9 @@ Your device might not send automatic status updates to the controller. While the
Z-Wave does not automatically poll devices on a regular basis. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary.
- We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Zwavejs2Mqtt but not in the official add-on.
- We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on.
- Zwavejs2Mqtt allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible.
- Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible.
<div class='note warning'>
Polling should only be used as a last resort. You must use it with care and accept the negative impact on your network. Z-Wave is a very low speed network and poll requests can easily flood your network and slow down your commands.

View File

@ -12,7 +12,9 @@ categories:
og_image: /images/blog/2022-05-matter-in-home-assistant-workshop-announcement/social.png
---
<img src='/images/blog/2022-05-matter-in-home-assistant-workshop-announcement/header.png' alt="Decorative header." class='no-shadow'>
<!--<img src='/images/blog/2022-05-matter-in-home-assistant-workshop-announcement/header.png' alt="Decorative header." class='no-shadow'>-->
<lite-youtube videoid="9fOHBl5w0_k" videotitle="Matter in Home Assistant workshop"></lite-youtube>
## [The workshop instructions can be found here.](/matter-june-22)

View File

@ -42,6 +42,8 @@ Now I know that everyone usually expects [@frenck] to be writing these release n
- [Release 2022.9.3 - September 13](#release-202293---september-13)
- [Release 2022.9.4 - September 14](#release-202294---september-14)
- [Release 2022.9.5 - September 18](#release-202295---september-18)
- [Release 2022.9.6 - September 22](#release-202296---september-22)
- [Release 2022.9.7 - September 26](#release-202297---september-26)
- [Need help? Join the community](#need-help-join-the-community)
- [Breaking Changes](#breaking-changes)
- [All changes](#all-changes)
@ -602,6 +604,150 @@ The following integrations are now available via the Home Assistant UI:
[yalexs_ble docs]: /integrations/yalexs_ble/
[zwave_js docs]: /integrations/zwave_js/
## Release 2022.9.6 - September 22
- Handle Modalias missing from the bluetooth adapter details on older BlueZ ([@bdraco] - [#78716]) ([bluetooth docs])
- Refactor MQTT tests to use modern platform schema part 1 ([@jbouwh] - [#77387]) ([mqtt docs])
- Refactor MQTT tests to use modern platform schema part 2 ([@jbouwh] - [#77525]) ([mqtt docs])
- Refactor common MQTT tests to use modern schema ([@jbouwh] - [#77583]) ([mqtt docs])
- Make hass.data["mqtt"] an instance of a DataClass ([@jbouwh] - [#77972]) ([mqtt docs])
- Add status codes 23 and 26 to Xiaomi Miio vacuum ([@starkillerOG] - [#78289]) ([xiaomi_miio docs])
- Link manually added MQTT entities the the MQTT config entry ([@jbouwh] - [#78547]) ([mqtt docs])
- Drop PARALLEL_UPDATES from switchbot ([@bdraco] - [#78713]) ([switchbot docs])
- Bump aioimaplib to 1.0.1 ([@N1c093] - [#78738]) ([imap docs]) (dependency)
- Fix bug wherein RainMachine services use the wrong controller ([@bachya] - [#78780]) ([rainmachine docs])
- Guard Guardian switches from redundant on/off calls ([@bachya] - [#78791]) ([guardian docs])
- Bump dbus-fast to 1.5.1 ([@bdraco] - [#78802]) ([bluetooth docs]) (dependency)
- If brightness is not available, don't set a value ([@elupus] - [#78827]) ([google_assistant docs])
- Pin Python patch versions [ci] ([@cdce8p] - [#78830])
- Fix parsing Eve Energy characteristic data ([@Jc2k] - [#78880]) ([homekit_controller docs])
- Check Surveillance Station permissions during setup of Synology DSM integration ([@mib1185] - [#78884]) ([synology_dsm docs])
- Handle default RSSI values from bleak in bluetooth ([@bdraco] - [#78908]) ([bluetooth docs])
- Disable force update Netatmo ([@balloob] - [#78913]) ([netatmo docs])
- Correct return typing for `catch_log_exception` ([@jbouwh] - [#78399])
- Fix samsungtv to abort when ATTR_UPNP_MANUFACTURER is missing ([@bdraco] - [#78895]) ([samsungtv docs])
- Handle timeout fetching bond token in config flow ([@bdraco] - [#78896]) ([bond docs])
- Bump bimmer_connected to 0.10.4 ([@rikroe] - [#78910]) ([bmw_connected_drive docs]) (dependency)
[#77387]: https://github.com/home-assistant/core/pull/77387
[#77525]: https://github.com/home-assistant/core/pull/77525
[#77583]: https://github.com/home-assistant/core/pull/77583
[#77968]: https://github.com/home-assistant/core/pull/77968
[#77972]: https://github.com/home-assistant/core/pull/77972
[#78081]: https://github.com/home-assistant/core/pull/78081
[#78169]: https://github.com/home-assistant/core/pull/78169
[#78289]: https://github.com/home-assistant/core/pull/78289
[#78399]: https://github.com/home-assistant/core/pull/78399
[#78410]: https://github.com/home-assistant/core/pull/78410
[#78438]: https://github.com/home-assistant/core/pull/78438
[#78547]: https://github.com/home-assistant/core/pull/78547
[#78703]: https://github.com/home-assistant/core/pull/78703
[#78713]: https://github.com/home-assistant/core/pull/78713
[#78716]: https://github.com/home-assistant/core/pull/78716
[#78738]: https://github.com/home-assistant/core/pull/78738
[#78780]: https://github.com/home-assistant/core/pull/78780
[#78791]: https://github.com/home-assistant/core/pull/78791
[#78802]: https://github.com/home-assistant/core/pull/78802
[#78827]: https://github.com/home-assistant/core/pull/78827
[#78830]: https://github.com/home-assistant/core/pull/78830
[#78880]: https://github.com/home-assistant/core/pull/78880
[#78884]: https://github.com/home-assistant/core/pull/78884
[#78895]: https://github.com/home-assistant/core/pull/78895
[#78896]: https://github.com/home-assistant/core/pull/78896
[#78908]: https://github.com/home-assistant/core/pull/78908
[#78910]: https://github.com/home-assistant/core/pull/78910
[#78913]: https://github.com/home-assistant/core/pull/78913
[@Jc2k]: https://github.com/Jc2k
[@N1c093]: https://github.com/N1c093
[@bachya]: https://github.com/bachya
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@cdce8p]: https://github.com/cdce8p
[@elupus]: https://github.com/elupus
[@frenck]: https://github.com/frenck
[@jbouwh]: https://github.com/jbouwh
[@mib1185]: https://github.com/mib1185
[@rikroe]: https://github.com/rikroe
[@starkillerOG]: https://github.com/starkillerOG
[abode docs]: /integrations/abode/
[accuweather docs]: /integrations/accuweather/
[acmeda docs]: /integrations/acmeda/
[bluetooth docs]: /integrations/bluetooth/
[bmw_connected_drive docs]: /integrations/bmw_connected_drive/
[bond docs]: /integrations/bond/
[frontend docs]: /integrations/frontend/
[google_assistant docs]: /integrations/google_assistant/
[guardian docs]: /integrations/guardian/
[homekit_controller docs]: /integrations/homekit_controller/
[imap docs]: /integrations/imap/
[mqtt docs]: /integrations/mqtt/
[netatmo docs]: /integrations/netatmo/
[rainmachine docs]: /integrations/rainmachine/
[samsungtv docs]: /integrations/samsungtv/
[switchbot docs]: /integrations/switchbot/
[synology_dsm docs]: /integrations/synology_dsm/
[xiaomi_miio docs]: /integrations/xiaomi_miio/
## Release 2022.9.7 - September 26
- Bump pyipma to 3.0.5 ([@dgomes] - [#78936]) ([ipma docs])
- Bump motionblinds to 0.6.13 ([@starkillerOG] - [#78946]) ([motion_blinds docs])
- Set OWM default mode to hourly legacy API ([@jbouwh] - [#78951]) ([openweathermap docs])
- Bump yalexs to 1.2.2 ([@bdraco] - [#78978]) ([august docs])
- Fix velbus matching ignored entries in config flow ([@Cereal2nd] - [#78999]) ([velbus docs])
- Bumped boschshcpy 0.2.30 to 0.2.35 ([@tschamm] - [#79017]) ([bosch_shc docs])
- Fix failing LaMetric pairing message during config flow ([@frenck] - [#79031]) ([lametric docs])
- Fix MQTT device_tracker generating unique id-s - regression on #78547 ([@jbouwh] - [#79033]) ([mqtt docs])
- Bump govee-ble to 0.19.0 ([@bdraco] - [#79038]) ([govee_ble docs])
- Always install requirements of after_dependencies ([@emontnemery] - [#79094])
- Pin pyOpenSSL to 22.0.0 ([@balloob] - [#79066])
[#77968]: https://github.com/home-assistant/core/pull/77968
[#78081]: https://github.com/home-assistant/core/pull/78081
[#78169]: https://github.com/home-assistant/core/pull/78169
[#78410]: https://github.com/home-assistant/core/pull/78410
[#78438]: https://github.com/home-assistant/core/pull/78438
[#78703]: https://github.com/home-assistant/core/pull/78703
[#78916]: https://github.com/home-assistant/core/pull/78916
[#78936]: https://github.com/home-assistant/core/pull/78936
[#78946]: https://github.com/home-assistant/core/pull/78946
[#78951]: https://github.com/home-assistant/core/pull/78951
[#78978]: https://github.com/home-assistant/core/pull/78978
[#78999]: https://github.com/home-assistant/core/pull/78999
[#79017]: https://github.com/home-assistant/core/pull/79017
[#79031]: https://github.com/home-assistant/core/pull/79031
[#79033]: https://github.com/home-assistant/core/pull/79033
[#79038]: https://github.com/home-assistant/core/pull/79038
[#79066]: https://github.com/home-assistant/core/pull/79066
[#79094]: https://github.com/home-assistant/core/pull/79094
[@Cereal2nd]: https://github.com/Cereal2nd
[@balloob]: https://github.com/balloob
[@bdraco]: https://github.com/bdraco
[@dgomes]: https://github.com/dgomes
[@emontnemery]: https://github.com/emontnemery
[@frenck]: https://github.com/frenck
[@jbouwh]: https://github.com/jbouwh
[@starkillerOG]: https://github.com/starkillerOG
[@tschamm]: https://github.com/tschamm
[abode docs]: /integrations/abode/
[accuweather docs]: /integrations/accuweather/
[acmeda docs]: /integrations/acmeda/
[august docs]: /integrations/august/
[bluetooth docs]: /integrations/bluetooth/
[bosch_shc docs]: /integrations/bosch_shc/
[frontend docs]: /integrations/frontend/
[google_assistant docs]: /integrations/google_assistant/
[govee_ble docs]: /integrations/govee_ble/
[guardian docs]: /integrations/guardian/
[homekit_controller docs]: /integrations/homekit_controller/
[imap docs]: /integrations/imap/
[ipma docs]: /integrations/ipma/
[lametric docs]: /integrations/lametric/
[motion_blinds docs]: /integrations/motion_blinds/
[mqtt docs]: /integrations/mqtt/
[openweathermap docs]: /integrations/openweathermap/
[velbus docs]: /integrations/velbus/
## Need help? Join the community
Home Assistant has a great community of users who are all more than willing

View File

@ -435,6 +435,7 @@
/integrations/envirophat /more-info/removed-integration 301
/integrations/essent /more-info/removed-integration 301
/integrations/fedex /more-info/removed-integration 301
/integrations/flunearyou /more-info/removed-integration 301
/integrations/fortigate /more-info/removed-integration 301
/integrations/fritzbox_netmonitor /more-info/removed-integration 301
/integrations/garmin_connect /more-info/removed-integration 301

View File

@ -464,14 +464,15 @@ description: "The Home Assistant contributor license agreement (CLA) signature p
"region": $("#region").val(),
"signing_for": $('input[name="signing_for"]:checked').val(),
"i_agree": $("#i_agree").val(),
"github_user_id": $("#github_user_id").val()
"github_user_id": $("#github_user_id").val(),
"pull_request": localStorage.getItem("pr"),
};
if ($("#company_name").val() != "") {
payload.company_name = $("#company_name").val();
}
$.ajax({
type: "POST",
url: "https://cla.home-assistant.io/sign",
url: "https://service-hub-bots.home-assistant.io/cla-sign",
data: JSON.stringify(payload),
contentType: "application/json",
}).done(function(data){

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -89,7 +89,15 @@ feedback: false
</a>
</div>
<div class="grid__item two-thirds lap-two-thirds palm-one-whole">
<!-- State of the Open Home 2022 -->
<div
class="material-card picture-promo"
style="
background-image: url(/images/frontpage/state-of-the-open-home-2022.png);
background-size: cover;
padding-top: 45%;
"
></div>
<!-- Home Assistant Yellow -->
<a

View File

@ -10,8 +10,41 @@ Without this check you will face an increased number of errors and performance i
## The solution
From the host shell execute the following command to re-enable Network Manager's connectivity check:
From the host shell, first execute the following:
```sh
busctl get-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager ConnectivityCheckAvailable
```
### Output is `b true`
You just need to re-enable connectivity checks by executing this command:
```sh
busctl set-property org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.NetworkManager ConnectivityCheckEnabled b true
```
It may take a bit for the message to go away as all checks are scheduled on timers. You can force it to recheck immediately by executing the following commands:
```sh
ha host reload
ha resolution healthcheck
```
### Output is `b false`
You need to set the connectivity uri in Network Manager's config. You can do this by adding the following to `/etc/NetworkManager/NetworkManager.conf`:
```txt
[connectivity]
uri=http://checkonline.home-assistant.io/online.txt
interval=600
```
Afterwards you will need to restart NetworkManager by either rebooting the host or executing this command:
```sh
systemctl restart NetworkManager
```
As mentioned above, the checks are on timers so the message may not go away immediately unless you force an immediate re-check. If you continue to see the message after a while or after forcing a re-check then start over at the top of this solution. You may need to separately enable the check now that it is available.

View File

@ -0,0 +1,26 @@
---
title: "Restart policy"
description: "More information on why changing the docker restart policy for containers marks the system as unsupported."
---
## The issue
Supervisor needs to start the containers it manages for addons, plugins and Home Assistant in the
correct order after a system reboot. Changing the restart policy it sets on those containers may
cause them to start in the wrong order and create errors.
## The solution
If the restart policy of observer was changed, fix it from the host shell with this:
```sh
docker update hassio_observer --restart always
```
For everything else, the restart policy can be fixed with the following command:
```sh
docker update <container_name> --restart no
```
The supervisor log should contain a list of container names with incorrect restart policies.