Merge branch 'current' into next

This commit is contained in:
Franck Nijhof 2023-01-04 11:29:33 +01:00
commit 1ba1011956
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
33 changed files with 403 additions and 256 deletions

View File

@ -118,7 +118,7 @@ GEM
concurrent-ruby (~> 1.0)
tzinfo-data (1.2022.7)
tzinfo (>= 1.0.0)
unicode-display_width (2.3.0)
unicode-display_width (2.4.1)
webrick (1.7.0)
PLATFORMS

View File

@ -110,8 +110,8 @@ social:
# Home Assistant release details
current_major_version: 2022
current_minor_version: 12
current_patch_version: 8
date_released: 2022-12-21
current_patch_version: 9
date_released: 2023-01-02
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.

440
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.4",
"textlint": "^12.5.0",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^3.0.4"
@ -228,44 +228,89 @@
"dev": true
},
"node_modules/@textlint/ast-node-types": {
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz",
"integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==",
"version": "12.3.0",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.3.0.tgz",
"integrity": "sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ==",
"dev": true
},
"node_modules/@textlint/ast-tester": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.3.tgz",
"integrity": "sha512-+yLj38mgrluEFXD8rmwmMo+2lQbrx3v5aQBkHUZdddAq/1LJu4qqctikUzAeVRJZPWKsdLrN3vaLT2rp4h8KYg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.5.0.tgz",
"integrity": "sha512-osHf1OFLC3RnjGyoSBynn2u5pgj7qkik8TNaxgPekVwlLWtJTcyh22PHo+mXPF47XWM5gJQmy/72nUrqtbDMPg==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-node-types": "^12.3.0",
"debug": "^4.3.4"
}
},
"node_modules/@textlint/ast-traverse": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.3.tgz",
"integrity": "sha512-sv06SITci07P1LQQxH1hSv04xoHz2OC+WlppTuMoOFR20kRBMyOs7Ssvor0NdNmspDXG8qvdCBxh9rFmdNSJyQ==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.5.0.tgz",
"integrity": "sha512-TAbfxz8x8Q/sn7D/h7OikzYp5NqPDrRExm3N+3v9yj+gq++fxHtskas48tm1TYcChTMq6BbPU+EGbdlMo3rWWA==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2"
"@textlint/ast-node-types": "^12.3.0"
}
},
"node_modules/@textlint/config-loader": {
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.5.0.tgz",
"integrity": "sha512-g706+XwdsUGpVXzqW7OFcBO8XdxH1AqbD0D3UYEjlfUONXD0c4Bymctdjk49hzOwTVDGqj+CCyvL+cB/X2bG+Q==",
"dev": true,
"dependencies": {
"@textlint/kernel": "^12.5.0",
"@textlint/module-interop": "^12.5.0",
"@textlint/types": "^12.5.0",
"@textlint/utils": "^12.5.0",
"debug": "^4.3.4",
"rc-config-loader": "^4.1.1",
"try-resolve": "^1.0.1"
}
},
"node_modules/@textlint/config-loader/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"node_modules/@textlint/config-loader/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/@textlint/config-loader/node_modules/rc-config-loader": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz",
"integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==",
"dev": true,
"dependencies": {
"debug": "^4.3.4",
"js-yaml": "^4.1.0",
"json5": "^2.2.2",
"require-from-string": "^2.0.2"
}
},
"node_modules/@textlint/feature-flag": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.3.tgz",
"integrity": "sha512-KrKc8dY3iept6Hv/dSKwaYAkjFdYbaithXAnRpp0O4fkXPdv6HYu7iGtM2kA4nkVLdjrzAnPNKA9tmP3EE0qNg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.5.0.tgz",
"integrity": "sha512-GdyRbbIsWRuZieWKvRxQA8j5wX5hzq+QqEmuputBrU/KKapNfkg6uNY2GOY6SWvC8QcwD0dYh3Dy1x2txT8p8Q==",
"dev": true
},
"node_modules/@textlint/fixer-formatter": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.3.tgz",
"integrity": "sha512-O3O1B1Xihlk5bXnMqjTgwMegnDTzE3rAQRvcJ2zTZQNhjSLpUDsRRcZW4FteGsQkWT9rOFrFQbHNbJdkiyu4cA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.0.tgz",
"integrity": "sha512-iq+fdacaVcI1W3izo2V6JJOcnlUdDL9mX2Q1Ok3b+xwEzG5ZFo3G8iPpdQZXVZDE2jehRSvom8gsOds+n5ZffQ==",
"dev": true,
"dependencies": {
"@textlint/module-interop": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/module-interop": "^12.5.0",
"@textlint/types": "^12.5.0",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"diff": "^4.0.2",
@ -277,33 +322,33 @@
}
},
"node_modules/@textlint/kernel": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.3.tgz",
"integrity": "sha512-O0oifeiotA7ZEpWGssGPHCpIDUcsUfkmNTypk6j0l5m+VL+X3Zz0z/F+i02O9eMcizzLFcnC8oMoLxeYNhJCKg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.5.0.tgz",
"integrity": "sha512-9UspUHtS2FShTO9pWnrZjadjIvJzFIdIZDKIYCdZuUdU8dEhJqwOdYosqM4N5Wy40aMKnv4Voxp80Ssaq7zZaA==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-tester": "^12.2.3",
"@textlint/ast-traverse": "^12.2.3",
"@textlint/feature-flag": "^12.2.3",
"@textlint/source-code-fixer": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/utils": "^12.2.3",
"@textlint/ast-node-types": "^12.3.0",
"@textlint/ast-tester": "^12.5.0",
"@textlint/ast-traverse": "^12.5.0",
"@textlint/feature-flag": "^12.5.0",
"@textlint/source-code-fixer": "^12.5.0",
"@textlint/types": "^12.5.0",
"@textlint/utils": "^12.5.0",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"structured-source": "^3.0.2"
}
},
"node_modules/@textlint/linter-formatter": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.4.tgz",
"integrity": "sha512-vF/qPrDYLH9jGB/HU8euVLv7BBATYmviBl9fGcx5vO8Lq/D2vHS9MUdk1JddgW/cDqnrI0nNVlLFUphJsXtp6w==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.5.0.tgz",
"integrity": "sha512-cJ87VGmyqDyjxT2aL3492g/YyGh6AU7/3QqxKN9q8rxJtzaY2e1uJrUKdpj0oOj1xZzYYv8zPeIpFaiFtNW02Q==",
"dev": true,
"dependencies": {
"@azu/format-text": "^1.0.1",
"@azu/style-format": "^1.0.0",
"@textlint/module-interop": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/module-interop": "^12.5.0",
"@textlint/types": "^12.5.0",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"is-file": "^1.0.0",
@ -319,12 +364,12 @@
}
},
"node_modules/@textlint/markdown-to-ast": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz",
"integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz",
"integrity": "sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-node-types": "^12.3.0",
"debug": "^4.3.4",
"mdast-util-gfm-autolink-literal": "^0.1.3",
"remark-footnotes": "^3.0.0",
@ -654,61 +699,61 @@
}
},
"node_modules/@textlint/module-interop": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.3.tgz",
"integrity": "sha512-tBtjf+hcOV8bTGae48bBj05Z8PmC6AQ+wCLl4PWE1zqUZIo9hxJL5nRpBn8l6HT6HCdtACE0UU85op9QmjmPXw==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.5.0.tgz",
"integrity": "sha512-NmkHL5tt+HEqLm00JSW1f03KTbEqOzupliboSZ2HeNhOqZxSX4wR3lBlGqVeVi5dImMWrt40oa+AbkqkD78b9Q==",
"dev": true
},
"node_modules/@textlint/source-code-fixer": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.3.tgz",
"integrity": "sha512-uXGpD3hcqGNVL8yUpZci0+DDXUi81/MlMOzK6OWLDYBXdIZvJ0ADXQ/oUkljWIdmzMcME1AXkHvC5EGL0td2Sg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.5.0.tgz",
"integrity": "sha512-7LebJ6Y64Rb4fVYyokpU8FnjNLdx+TehcHQJ9L/fi8PYVjpS/08klYtYfRtKWmi/vrWED7U0aGhb8Xr26NuWFw==",
"dev": true,
"dependencies": {
"@textlint/types": "^12.2.3",
"@textlint/types": "^12.5.0",
"debug": "^4.3.4"
}
},
"node_modules/@textlint/text-to-ast": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.3.tgz",
"integrity": "sha512-nsBI5TFe38ZzzbCyshZqLkG2DD4G8fJ0mC3imiTAGamGnUV8mDANmdvE7nmUtZTLlU319s/U0oXC0E7btgN+cQ==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.5.0.tgz",
"integrity": "sha512-wOWYX+d821ThwNYNk5hfxOBxvkqKUpNOBKkDaic4V+dkuBoAS0D9lE9fA9Ps62kL/I1uQwhU5d4qsAHWnFmQkw==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2"
"@textlint/ast-node-types": "^12.3.0"
}
},
"node_modules/@textlint/textlint-plugin-markdown": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.3.tgz",
"integrity": "sha512-phmA5e1JQaJt0IFHm0WkNpX66ieYXShoIzg6J3wcrAHS12kQcL0HxBgjdUjOeulOemKst2JqFNqsvhGXdTAUFw==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.5.0.tgz",
"integrity": "sha512-1B4mTmA1NOvK2kAk4Rl/TW3QFB80iwhsOKSJ16nCH/yvF82xgH+Gu4gQB/prNpACb4TivmzwvBRYp7rzhOTTyA==",
"dev": true,
"dependencies": {
"@textlint/markdown-to-ast": "^12.2.3"
"@textlint/markdown-to-ast": "^12.5.0"
}
},
"node_modules/@textlint/textlint-plugin-text": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.3.tgz",
"integrity": "sha512-CMK9h3EwyQFayYBGafQairg2MbVtGkw1roazOjXLSTicYr7xT/rqhN26Ix6C7OvBbugyRO+DhqJjPY8Xyv0BQA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.5.0.tgz",
"integrity": "sha512-ec3rZaJYytoscwpAtuxD4UM3bUPqNAeWKia+LMaVMWREULwKfntlSAqSNmudujEkxdsKr028CkzYuP78q8Xmuw==",
"dev": true,
"dependencies": {
"@textlint/text-to-ast": "^12.2.3"
"@textlint/text-to-ast": "^12.5.0"
}
},
"node_modules/@textlint/types": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.3.tgz",
"integrity": "sha512-7948CPxVsZu99zlIWDyxwT6MI33WpwKwVSD9jk0e5M8VcdxMUnecVq6D40h8LAtfsT5V8NTJqFxKFT6+LpiBvg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.5.0.tgz",
"integrity": "sha512-Po5qOubilL/g3dx+ZUgaQzNXbROADBF4Z5xy7qqgV6pBQIEE/06INZDmmLE1Eesm2zoDpygoG/1f/0/Cy5Yupw==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2"
"@textlint/ast-node-types": "^12.3.0"
}
},
"node_modules/@textlint/utils": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.3.tgz",
"integrity": "sha512-1dEihBt9A+DcQ/4IZC3c3TFktb/6p61m6WItyqEYU4h9UjUOH4l1sEKqorEOkJ/DIlA9VQcJT/LF5CCFYOKkcw==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.5.0.tgz",
"integrity": "sha512-bQWrQ7Xaru1DRLQhAQQJgNnfGQIwgTgWUigdS5wSwpbmfLDnaMzHu3AG0lk5hEnELMKTCIej5uCR0+YscyUckg==",
"dev": true
},
"node_modules/@types/concat-stream": {
@ -814,9 +859,9 @@
"dev": true
},
"node_modules/ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
"integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
@ -1851,13 +1896,10 @@
"dev": true
},
"node_modules/json5": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
"integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
"dev": true,
"dependencies": {
"minimist": "^1.2.5"
},
"bin": {
"json5": "lib/cli.js"
},
@ -5292,22 +5334,23 @@
"dev": true
},
"node_modules/textlint": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.4.tgz",
"integrity": "sha512-IlBJL4bR9RuqYV+YkQQvOznhmfClGGkuOyxiUaQ4qUj2IaJu2/rXei71x3JAIJF4SLEK7SbMoLVqXIerqIbhGA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.0.tgz",
"integrity": "sha512-81pwYha45aXCN6oVu2qjQ6nWaXT/U0nabl+S1F8HiY6pQMYwaX1D0on/rLWDO+K7BDQFPdrnO/7/PMw5LEU2Cg==",
"dev": true,
"dependencies": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-traverse": "^12.2.3",
"@textlint/feature-flag": "^12.2.3",
"@textlint/fixer-formatter": "^12.2.3",
"@textlint/kernel": "^12.2.3",
"@textlint/linter-formatter": "^12.2.4",
"@textlint/module-interop": "^12.2.3",
"@textlint/textlint-plugin-markdown": "^12.2.3",
"@textlint/textlint-plugin-text": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/utils": "^12.2.3",
"@textlint/ast-node-types": "^12.3.0",
"@textlint/ast-traverse": "^12.5.0",
"@textlint/config-loader": "^12.5.0",
"@textlint/feature-flag": "^12.5.0",
"@textlint/fixer-formatter": "^12.5.0",
"@textlint/kernel": "^12.5.0",
"@textlint/linter-formatter": "^12.5.0",
"@textlint/module-interop": "^12.5.0",
"@textlint/textlint-plugin-markdown": "^12.5.0",
"@textlint/textlint-plugin-text": "^12.5.0",
"@textlint/types": "^12.5.0",
"@textlint/utils": "^12.5.0",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"file-entry-cache": "^5.0.1",
@ -5326,7 +5369,8 @@
"unique-concat": "^0.2.2"
},
"bin": {
"textlint": "bin/textlint.js"
"textlint": "bin/textlint.js",
"textlint-esm": "bin/textlint-esm.js"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
@ -6375,44 +6419,88 @@
"dev": true
},
"@textlint/ast-node-types": {
"version": "12.2.2",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz",
"integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==",
"version": "12.3.0",
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.3.0.tgz",
"integrity": "sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ==",
"dev": true
},
"@textlint/ast-tester": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.3.tgz",
"integrity": "sha512-+yLj38mgrluEFXD8rmwmMo+2lQbrx3v5aQBkHUZdddAq/1LJu4qqctikUzAeVRJZPWKsdLrN3vaLT2rp4h8KYg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.5.0.tgz",
"integrity": "sha512-osHf1OFLC3RnjGyoSBynn2u5pgj7qkik8TNaxgPekVwlLWtJTcyh22PHo+mXPF47XWM5gJQmy/72nUrqtbDMPg==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-node-types": "^12.3.0",
"debug": "^4.3.4"
}
},
"@textlint/ast-traverse": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.3.tgz",
"integrity": "sha512-sv06SITci07P1LQQxH1hSv04xoHz2OC+WlppTuMoOFR20kRBMyOs7Ssvor0NdNmspDXG8qvdCBxh9rFmdNSJyQ==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.5.0.tgz",
"integrity": "sha512-TAbfxz8x8Q/sn7D/h7OikzYp5NqPDrRExm3N+3v9yj+gq++fxHtskas48tm1TYcChTMq6BbPU+EGbdlMo3rWWA==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2"
"@textlint/ast-node-types": "^12.3.0"
}
},
"@textlint/config-loader": {
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.5.0.tgz",
"integrity": "sha512-g706+XwdsUGpVXzqW7OFcBO8XdxH1AqbD0D3UYEjlfUONXD0c4Bymctdjk49hzOwTVDGqj+CCyvL+cB/X2bG+Q==",
"dev": true,
"requires": {
"@textlint/kernel": "^12.5.0",
"@textlint/module-interop": "^12.5.0",
"@textlint/types": "^12.5.0",
"@textlint/utils": "^12.5.0",
"debug": "^4.3.4",
"rc-config-loader": "^4.1.1",
"try-resolve": "^1.0.1"
},
"dependencies": {
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"requires": {
"argparse": "^2.0.1"
}
},
"rc-config-loader": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz",
"integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==",
"dev": true,
"requires": {
"debug": "^4.3.4",
"js-yaml": "^4.1.0",
"json5": "^2.2.2",
"require-from-string": "^2.0.2"
}
}
}
},
"@textlint/feature-flag": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.3.tgz",
"integrity": "sha512-KrKc8dY3iept6Hv/dSKwaYAkjFdYbaithXAnRpp0O4fkXPdv6HYu7iGtM2kA4nkVLdjrzAnPNKA9tmP3EE0qNg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.5.0.tgz",
"integrity": "sha512-GdyRbbIsWRuZieWKvRxQA8j5wX5hzq+QqEmuputBrU/KKapNfkg6uNY2GOY6SWvC8QcwD0dYh3Dy1x2txT8p8Q==",
"dev": true
},
"@textlint/fixer-formatter": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.3.tgz",
"integrity": "sha512-O3O1B1Xihlk5bXnMqjTgwMegnDTzE3rAQRvcJ2zTZQNhjSLpUDsRRcZW4FteGsQkWT9rOFrFQbHNbJdkiyu4cA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.0.tgz",
"integrity": "sha512-iq+fdacaVcI1W3izo2V6JJOcnlUdDL9mX2Q1Ok3b+xwEzG5ZFo3G8iPpdQZXVZDE2jehRSvom8gsOds+n5ZffQ==",
"dev": true,
"requires": {
"@textlint/module-interop": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/module-interop": "^12.5.0",
"@textlint/types": "^12.5.0",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"diff": "^4.0.2",
@ -6424,33 +6512,33 @@
}
},
"@textlint/kernel": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.3.tgz",
"integrity": "sha512-O0oifeiotA7ZEpWGssGPHCpIDUcsUfkmNTypk6j0l5m+VL+X3Zz0z/F+i02O9eMcizzLFcnC8oMoLxeYNhJCKg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.5.0.tgz",
"integrity": "sha512-9UspUHtS2FShTO9pWnrZjadjIvJzFIdIZDKIYCdZuUdU8dEhJqwOdYosqM4N5Wy40aMKnv4Voxp80Ssaq7zZaA==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-tester": "^12.2.3",
"@textlint/ast-traverse": "^12.2.3",
"@textlint/feature-flag": "^12.2.3",
"@textlint/source-code-fixer": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/utils": "^12.2.3",
"@textlint/ast-node-types": "^12.3.0",
"@textlint/ast-tester": "^12.5.0",
"@textlint/ast-traverse": "^12.5.0",
"@textlint/feature-flag": "^12.5.0",
"@textlint/source-code-fixer": "^12.5.0",
"@textlint/types": "^12.5.0",
"@textlint/utils": "^12.5.0",
"debug": "^4.3.4",
"deep-equal": "^1.1.1",
"structured-source": "^3.0.2"
}
},
"@textlint/linter-formatter": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.4.tgz",
"integrity": "sha512-vF/qPrDYLH9jGB/HU8euVLv7BBATYmviBl9fGcx5vO8Lq/D2vHS9MUdk1JddgW/cDqnrI0nNVlLFUphJsXtp6w==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.5.0.tgz",
"integrity": "sha512-cJ87VGmyqDyjxT2aL3492g/YyGh6AU7/3QqxKN9q8rxJtzaY2e1uJrUKdpj0oOj1xZzYYv8zPeIpFaiFtNW02Q==",
"dev": true,
"requires": {
"@azu/format-text": "^1.0.1",
"@azu/style-format": "^1.0.0",
"@textlint/module-interop": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/module-interop": "^12.5.0",
"@textlint/types": "^12.5.0",
"chalk": "^4.1.2",
"debug": "^4.3.4",
"is-file": "^1.0.0",
@ -6466,12 +6554,12 @@
}
},
"@textlint/markdown-to-ast": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz",
"integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz",
"integrity": "sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-node-types": "^12.3.0",
"debug": "^4.3.4",
"mdast-util-gfm-autolink-literal": "^0.1.3",
"remark-footnotes": "^3.0.0",
@ -6689,61 +6777,61 @@
}
},
"@textlint/module-interop": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.3.tgz",
"integrity": "sha512-tBtjf+hcOV8bTGae48bBj05Z8PmC6AQ+wCLl4PWE1zqUZIo9hxJL5nRpBn8l6HT6HCdtACE0UU85op9QmjmPXw==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.5.0.tgz",
"integrity": "sha512-NmkHL5tt+HEqLm00JSW1f03KTbEqOzupliboSZ2HeNhOqZxSX4wR3lBlGqVeVi5dImMWrt40oa+AbkqkD78b9Q==",
"dev": true
},
"@textlint/source-code-fixer": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.3.tgz",
"integrity": "sha512-uXGpD3hcqGNVL8yUpZci0+DDXUi81/MlMOzK6OWLDYBXdIZvJ0ADXQ/oUkljWIdmzMcME1AXkHvC5EGL0td2Sg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.5.0.tgz",
"integrity": "sha512-7LebJ6Y64Rb4fVYyokpU8FnjNLdx+TehcHQJ9L/fi8PYVjpS/08klYtYfRtKWmi/vrWED7U0aGhb8Xr26NuWFw==",
"dev": true,
"requires": {
"@textlint/types": "^12.2.3",
"@textlint/types": "^12.5.0",
"debug": "^4.3.4"
}
},
"@textlint/text-to-ast": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.3.tgz",
"integrity": "sha512-nsBI5TFe38ZzzbCyshZqLkG2DD4G8fJ0mC3imiTAGamGnUV8mDANmdvE7nmUtZTLlU319s/U0oXC0E7btgN+cQ==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.5.0.tgz",
"integrity": "sha512-wOWYX+d821ThwNYNk5hfxOBxvkqKUpNOBKkDaic4V+dkuBoAS0D9lE9fA9Ps62kL/I1uQwhU5d4qsAHWnFmQkw==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2"
"@textlint/ast-node-types": "^12.3.0"
}
},
"@textlint/textlint-plugin-markdown": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.3.tgz",
"integrity": "sha512-phmA5e1JQaJt0IFHm0WkNpX66ieYXShoIzg6J3wcrAHS12kQcL0HxBgjdUjOeulOemKst2JqFNqsvhGXdTAUFw==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.5.0.tgz",
"integrity": "sha512-1B4mTmA1NOvK2kAk4Rl/TW3QFB80iwhsOKSJ16nCH/yvF82xgH+Gu4gQB/prNpACb4TivmzwvBRYp7rzhOTTyA==",
"dev": true,
"requires": {
"@textlint/markdown-to-ast": "^12.2.3"
"@textlint/markdown-to-ast": "^12.5.0"
}
},
"@textlint/textlint-plugin-text": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.3.tgz",
"integrity": "sha512-CMK9h3EwyQFayYBGafQairg2MbVtGkw1roazOjXLSTicYr7xT/rqhN26Ix6C7OvBbugyRO+DhqJjPY8Xyv0BQA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.5.0.tgz",
"integrity": "sha512-ec3rZaJYytoscwpAtuxD4UM3bUPqNAeWKia+LMaVMWREULwKfntlSAqSNmudujEkxdsKr028CkzYuP78q8Xmuw==",
"dev": true,
"requires": {
"@textlint/text-to-ast": "^12.2.3"
"@textlint/text-to-ast": "^12.5.0"
}
},
"@textlint/types": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.3.tgz",
"integrity": "sha512-7948CPxVsZu99zlIWDyxwT6MI33WpwKwVSD9jk0e5M8VcdxMUnecVq6D40h8LAtfsT5V8NTJqFxKFT6+LpiBvg==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.5.0.tgz",
"integrity": "sha512-Po5qOubilL/g3dx+ZUgaQzNXbROADBF4Z5xy7qqgV6pBQIEE/06INZDmmLE1Eesm2zoDpygoG/1f/0/Cy5Yupw==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2"
"@textlint/ast-node-types": "^12.3.0"
}
},
"@textlint/utils": {
"version": "12.2.3",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.3.tgz",
"integrity": "sha512-1dEihBt9A+DcQ/4IZC3c3TFktb/6p61m6WItyqEYU4h9UjUOH4l1sEKqorEOkJ/DIlA9VQcJT/LF5CCFYOKkcw==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.5.0.tgz",
"integrity": "sha512-bQWrQ7Xaru1DRLQhAQQJgNnfGQIwgTgWUigdS5wSwpbmfLDnaMzHu3AG0lk5hEnELMKTCIej5uCR0+YscyUckg==",
"dev": true
},
"@types/concat-stream": {
@ -6843,9 +6931,9 @@
"dev": true
},
"ajv": {
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz",
"integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==",
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
@ -7622,13 +7710,10 @@
"dev": true
},
"json5": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
"integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
}
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
"integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
"dev": true
},
"levn": {
"version": "0.4.1",
@ -9989,22 +10074,23 @@
"dev": true
},
"textlint": {
"version": "12.2.4",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.4.tgz",
"integrity": "sha512-IlBJL4bR9RuqYV+YkQQvOznhmfClGGkuOyxiUaQ4qUj2IaJu2/rXei71x3JAIJF4SLEK7SbMoLVqXIerqIbhGA==",
"version": "12.5.0",
"resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.0.tgz",
"integrity": "sha512-81pwYha45aXCN6oVu2qjQ6nWaXT/U0nabl+S1F8HiY6pQMYwaX1D0on/rLWDO+K7BDQFPdrnO/7/PMw5LEU2Cg==",
"dev": true,
"requires": {
"@textlint/ast-node-types": "^12.2.2",
"@textlint/ast-traverse": "^12.2.3",
"@textlint/feature-flag": "^12.2.3",
"@textlint/fixer-formatter": "^12.2.3",
"@textlint/kernel": "^12.2.3",
"@textlint/linter-formatter": "^12.2.4",
"@textlint/module-interop": "^12.2.3",
"@textlint/textlint-plugin-markdown": "^12.2.3",
"@textlint/textlint-plugin-text": "^12.2.3",
"@textlint/types": "^12.2.3",
"@textlint/utils": "^12.2.3",
"@textlint/ast-node-types": "^12.3.0",
"@textlint/ast-traverse": "^12.5.0",
"@textlint/config-loader": "^12.5.0",
"@textlint/feature-flag": "^12.5.0",
"@textlint/fixer-formatter": "^12.5.0",
"@textlint/kernel": "^12.5.0",
"@textlint/linter-formatter": "^12.5.0",
"@textlint/module-interop": "^12.5.0",
"@textlint/textlint-plugin-markdown": "^12.5.0",
"@textlint/textlint-plugin-text": "^12.5.0",
"@textlint/types": "^12.5.0",
"@textlint/utils": "^12.5.0",
"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.4",
"textlint": "^12.5.0",
"textlint-filter-rule-comments": "^1.2.2",
"textlint-rule-common-misspellings": "^1.0.1",
"textlint-rule-terminology": "^3.0.4"

View File

@ -35,7 +35,7 @@ We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to devel
The Zigbee Energy Profile is a wireless energy standard to provide real-time information about electricity usage. This standard is available in some meters in the US, UK and Australia. This is not "normal" Zigbee as implemented by Home Assistant but requires special certified hardware.
One such option with a local API is the [Rainforest EAGLE-200](/integrations/rainforest_eagle/).
We are not currently aware of a device that implements this which supports a local API and is compatible with Home Assistant.
#### Reading the meter via a pulse counter

View File

@ -5,7 +5,7 @@ toc: true
no_toc: true
---
Conditions can be used within a script or automation to prevent further execution. When a condition evaluates to true, the script or automation will be executed. If any other value is returned the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off.
Conditions can be used within a script or automation to prevent further execution. When a condition evaluates true, the script or automation will be executed. If any other value is returned, the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off.
Unlike a trigger, which is always `or`, conditions are `and` by default - all conditions have to be true.
@ -17,7 +17,7 @@ All conditions support an optional `alias`.
### AND condition
Test multiple conditions in one condition statement. Passes if all embedded conditions are valid.
Test multiple conditions in one condition statement. Passes if all embedded conditions are true.
```yaml
condition:
@ -64,7 +64,7 @@ condition:
### OR condition
Test multiple conditions in one condition statement. Passes if any embedded condition is valid.
Test multiple conditions in one condition statement. Passes if any embedded condition is true.
```yaml
condition:
@ -95,7 +95,7 @@ condition:
### Mixed AND and OR conditions
Test multiple AND and OR conditions in one condition statement. Passes if any embedded condition is valid.
Test multiple AND and OR conditions in one condition statement. Passes if any embedded condition is true.
This allows you to mix several AND and OR conditions together.
```yaml
@ -134,7 +134,7 @@ condition:
### NOT condition
Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** valid.
Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** true.
```yaml
condition:
@ -233,7 +233,7 @@ condition:
## State condition
Tests if an entity is a specified state.
Tests if an entity has a specified state.
```yaml
condition:
@ -241,7 +241,7 @@ condition:
condition: state
entity_id: device_tracker.paulus
state: "not_home"
# optional: trigger only if state was this for last X time.
# optional: Evaluates to true only if state was this for last X time.
for:
hours: 1
minutes: 10
@ -261,7 +261,7 @@ condition:
```
Instead of matching all, it is also possible if one of the entities matches.
In the following example the condition will pass if **any** entities match the state.
In the following example the condition will pass if **any** entity matches the state.
```yaml
condition:
@ -378,7 +378,7 @@ condition:
The sun condition can also test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger].
Note that if only `before` key is used, the condition will be `true` _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be `true` from sunset/sunrise _until midnight_. If both `before: sunrise` and `after: sunset` keys are used, the condition will be `true` _from midnight_ until sunrise **and** from sunset _until midnight_. If both `after: sunrise` and `before: sunset` keys are used, the condition will be `true` from sunrise until sunset.
Note that if only `before` key is used, the condition will be true _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be true from sunset/sunrise _until midnight_. If both `before: sunrise` and `after: sunset` keys are used, the condition will be true _from midnight_ until sunrise **and** from sunset _until midnight_. If both `after: sunrise` and `before: sunset` keys are used, the condition will be true from sunrise until sunset.
[sun_trigger]: /docs/automation/trigger/#sun-trigger
@ -412,13 +412,13 @@ condition:
before: sunset
```
A visual timeline is provided below showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true.
A visual timeline is provided below, showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true.
![Graphic showing an example of sun conditions](/images/docs/scripts/sun-conditions.svg)
## Template condition
The template condition tests if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'.
The template condition tests if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render `True`.
{% raw %}
@ -563,7 +563,7 @@ condition:
<div class='note warning'>
Please note that the time condition only takes the time into account. If
an referenced sensor or helper entity contains a timestamp with a date, the
a referenced sensor or helper entity contains a timestamp with a date, the
date part is fully ignored.
</div>

View File

@ -10,7 +10,7 @@ This utility should have been installed as part of the Python 3 installation. Ch
If you are able to successfully run `python3 --version` but not `pip3`, install Home Assistant by running the following command instead:
```bash
python3 -m pip install homeassistant
python3 -m pip install homeassistant=={{ site.current_major_version }}.{{ site.current_minor_version }}.{{ site.current_patch_version }}
```
On a Debian system, you can also install python3 by `sudo apt-get install python3` and pip3 by `sudo apt-get install python3-pip`.

View File

@ -34,14 +34,18 @@
{%- if page.ha_brand -%}
The {{ page.title | default: page.name }} brand was introduced in Home Assistant {{ page.ha_release | default: "unknown" }}.
{%- else -%}
The {{ page.title | default: page.name }} {{ page.ha_integration_type | default: "integration" }} was introduced in Home Assistant {{ page.ha_release | default: "unknown" }},
and it's used by <a title="Open analytics.home-assistant.io" href="https://analytics.home-assistant.io/integrations" target="_blank" rel="noopener">
The {{ page.title | default: page.name }} {{ page.ha_integration_type | default: "integration" }} was introduced in Home Assistant {{ page.ha_release | default: "unknown" }}
{%- if page.ha_iot_standard -%}
.
{%- else -%}
, and it's used by <a title="Open analytics.home-assistant.io" href="https://analytics.home-assistant.io/integrations" target="_blank" rel="noopener">
{% if percentage < 1 %}
{{ active_installations }}</a> active installations.
{% else %}
{{ percentage | remove: ".0" }}%</a> of the active installations.
{% endif %}
{% endif %}
{%- if page.ha_iot_class %}
Its IoT class is <a href='/blog/2016/02/12/classifying-the-internet-of-things/#classifiers'>{{ page.ha_iot_class }}</a>

View File

@ -84,7 +84,7 @@ python3 -m pip install wheel
Once you have installed the required Python package, it is now time to install Home Assistant Core!
```bash
pip3 install homeassistant
pip3 install homeassistant=={{ site.current_major_version }}.{{ site.current_minor_version }}.{{ site.current_patch_version }}
```
Start Home Assistant Core for the first time. This will complete the installation for you, automatically creating the `.homeassistant` configuration directory in the `/home/homeassistant` directory, and installing any basic dependencies.

View File

@ -55,4 +55,4 @@ Cloud. Users desiring a local option are encouraged to explore the
[Ecowitt](https://www.ecowitt.com) family of devices, which are able to read RF signals
directly from the PWS and transmit them to a variety of other applications, including
[`ecowitt2mqtt`](https://github.com/bachya/ecowitt2mqtt) (which supports
[MQTT Discovery](/docs/mqtt/discovery)).
[MQTT Discovery](/docs/mqtt/discovery)), or the built-in [Ecowitt](/integrations/ecowitt/) integration.

View File

@ -16,7 +16,7 @@ ha_platforms:
ha_integration_type: integration
---
This integration integrates [BSBLan](https://github.com/fredlcore/bsb_lan) device into Home Assistant.
This integration integrates [BSBLan](https://github.com/fredlcore/BSB-LAN) devices into Home Assistant.
BSBLan is a device that is made by `Frederik Holst` and `Ulf Dieckmann` for documentation and with
the help of many other contributors.
@ -40,4 +40,4 @@ To see a more detailed listing of the reported systems which are successfully us
- [`Other Manufacturers (e.g. Fujitsu, Atlantic, Weishaupt)`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#313-other-manufacturers)
The integration is tested with the stable firmware version `1.00`. A newer firmware versions will not work, because the parameters are changed of the specific info that is needed.
Please use the latest release. [release 1.0](https://github.com/fredlcore/bsb_lan/releases/tag/v1.0)
Please use the latest release. [release 1.0](https://github.com/fredlcore/BSB-LAN/releases/tag/v1.0)

View File

@ -18,10 +18,9 @@ ha_integration_type: device
The CPU Speed integration allows you to monitor the current CPU speed.
<div class='note warning'>
You can't use this sensor in a container (only Home Assistant Core is supported) as it requires access to the physical CPU. Also, not all [ARM CPUs](https://github.com/workhorsy/py-cpuinfo/#cpu-support) are supported.
</div>
{% include integrations/config_flow.md %}
## Known issues and limitations
Not all CPUs are supported. For example, some [ARM CPUs](https://github.com/workhorsy/py-cpuinfo/#cpu-support)
are known not to work with this integration.

View File

@ -11,13 +11,13 @@ ha_platforms:
ha_integration_type: integration
---
Support for [Leviton Decora Wi-Fi](https://www.leviton.com/en/products/lighting-controls/decora-smart-with-wifi) dimmers/switches via the MyLeviton API.
Support for [Leviton Decora Wi-Fi](https://www.leviton.com/products/residential/automation-smart-home/decora-smart-all/decora-smart-with-wifi-technology) dimmers/switches via the MyLeviton API.
Supported devices (tested):
- [DW6HD1-BZ](https://www.leviton.com/en/products/dw6hd-1bz) (Decora Smart Wi-Fi 600W Dimmer)
- [DW15S-1BZ](https://www.leviton.com/en/products/dw15s-1bz) (Decora Smart Wi-Fi 15A Switch)
- [DW15P-1BW](https://www.leviton.com/en/products/dw15p-1bw) (Decora Smart Wi-Fi Plug-in Outlet)
- [DW6HD1-BZ](https://www.leviton.com/products/dw6hd-1bz) (Decora Smart Wi-Fi 600W Dimmer)
- [DW15S-1BZ](https://www.leviton.com/products/dw15s-1bz) (Decora Smart Wi-Fi 15A Switch)
- [DW15P-1BW](https://www.leviton.com/products/dw15p-1bw) (Decora Smart Wi-Fi Plug-in Outlet)
To enable these lights, add the following lines to your `configuration.yaml` file:

View File

@ -83,6 +83,7 @@ Known supported devices:
- Marantz SR8015
- Marantz NR1504
- Marantz NR1506
- Marantz NR1510
- Marantz NR1602
- Marantz NR1604
- Marantz NR1606

View File

@ -22,7 +22,7 @@ ha_zeroconf: true
ha_integration_type: integration
---
The `freebox` integration allows you to observe and control [Freebox router](https://www.free.fr/).
The `freebox` integration allows you to observe and control [Freebox router](https://www.free.fr/freebox/).
There is currently support for the following device types within Home Assistant:
@ -90,7 +90,7 @@ Only the routers with Freebox OS are supported:
## Presence Detection
This platform offers presence detection by keeping track of the devices connected to a [Freebox](https://www.free.fr/) router.
This platform offers presence detection by keeping track of the devices connected to a [Freebox](https://www.free.fr/freebox/) router.
### Notes

View File

@ -28,7 +28,7 @@ ha_codeowners:
ha_integration_type: hub
---
The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [FRITZ!DECT](https://en.avm.de/products/fritzdect/) devices like switches, sensors and thermostats.
The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [FRITZ!DECT](https://en.avm.de/products/smart-home/) devices like switches, sensors and thermostats.
There is currently support for the following device types within Home Assistant:

View File

@ -9,7 +9,7 @@ ha_iot_class: Cloud Polling
ha_integration_type: integration
---
With the Google Domains integration you can keep your Google Domains record up to date.
With the Google Domains integration you can keep your Google Domains **dynamic** DNS record up to date. To setup a dynamic domain name using Goole Domains, refer to the [_Use Dynamic DNS_ section in the Google support documentation](https://support.google.com/domains/answer/6147083).
## Configuration
@ -25,15 +25,15 @@ google_domains:
{% configuration %}
domain:
description: Your FQDN.
description: Your fully qualified domain name (FQDN) that you have chosen for your Home Assistant server.
required: true
type: string
username:
description: The generated username for this DDNS record.
description: The generated username for this Dynamic DNS record. See your [Google Domains record](https://support.google.com/domains/answer/6147083) for details.
required: true
type: string
password:
description: The generated password for this DDNS record.
description: The generated password for this Dynamic DNS record. See your [Google Domains record](https://support.google.com/domains/answer/6147083) for details.
required: true
type: string
timeout:

View File

@ -40,7 +40,7 @@ ln -s /path/to/your/installation/of/_cec.so /path/to/your/venv/lib/python*/site-
##### Symlinking examples
For the default virtual environment of a [Manual install for Raspberry Pi](/docs/installation/raspberry-pi/) the command would be as follows.
For the default virtual environment of a [Manual install for Raspberry Pi](/installation/raspberrypi) the command would be as follows.
```bash
ln -s /usr/local/lib/python*/dist-packages/cec.py /srv/homeassistant/lib/python*/site-packages

View File

@ -43,6 +43,8 @@ Note that it depends on the appliance and on API permissions which of the featur
- OAuth Flow: Authorization Code Grant Flow
- Redirect URI: `https://my.home-assistant.io/redirect/oauth`
*Important*: after performing the steps above **log out** of your Home Connect Developer account. If you don't so this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`.
{% details "I have manually disabled My Home Assistant" %}
If you don't have [My Home Assistant](/integrations/my) on your installation,

View File

@ -30,6 +30,26 @@ Menu: *Configuration* > *Integrations* > *Select your new integration* > *Press
- **offset**: set this if you want to list the departures some minutes in the future, for example, if you live ten minutes away from the station.
- **use realtime data**: enable this to include delay and cancellation information.
## Departure sensors
The integration creates one sensor for the departures at the selected station.
### States
The state is a timestamp representing the time for the next departure, not including delays.
### Attributes
| Attribute | Description |
| ----------- | ------------------------------------------------------------------------------------------------------------------------ |
| `line` | Line number of the next departure |
| `origin` | The station where the transport started from |
| `direction` | The station where the transport ends |
| `type` | Type of the transportation, for example, `Bus` or `S` |
| `id` | A unique identifier for the line. In most cases, `line` is sufficient to identify the line |
| `delay` | Real-time data about the delay of the transport in seconds. Add this to the departure time to get the real departure time |
| `next` | A list of the upcoming departures. Each element has the above attributes and `departure` containing the timestamp |
## Elevator sensors
If the selected station has elevators, binary sensors will be available.

View File

@ -69,7 +69,7 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr
- [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/)
- Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued)
- Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued)
- [Chipolo ONE](https://chipolo.net/products/chipolo-one)
- [Chipolo ONE Spot](https://chipolo.net/de/products/chipolo-one-spot)
- [Blue SLIM ID](https://elainnovation.com/en/product/blue-slim-id-en/)
- [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531)
- [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon)

View File

@ -87,14 +87,14 @@ Controlling the two bars can be done through three different entities that will
### Top entity
- 'Up/Open' will move the Top bar to the top of the window (absolute position 100).
- 'Down/Close' will move the Top bar to the position of the Bottom bar, therefore, making the part of the window that is covered as small as possible, but the two bars will be at the position of the Bottom bar (not at the top of the window).
- 'Down/Close' will move the Top bar to the position of the Bottom bar, therefore, making the part of the window that is covered as small as possible, but the two bars will be at the position of the Bottom bar (not at the top of the window). When the bars are moved completly together, the Top bar will not accept another "Down" command. First the Top bar needs to be moved up, even if the Bottom bar already moved further down.
- 'Position' is the relative position in which the Top bar can move, so from the top of the window (100) to the position of the Bottom bar (0), note that the position will therefore change if the Bottom bar is moved, since the space in which the Top bar is allowed to move changes.
- 'Absolute position' is the position of the Top bar with respect to the window, so 0 = bottom of the window and 100 = top of the window. Note that not all absolute positions are reachable at all moments due to the Bottom bar.
- 'Width' is the percentage of the window covered by fabric (the space between the Top and Bottom bars).
### Bottom entity
- 'Up/Open' will move the Bottom bar to the position of the Top bar.
- 'Up/Open' will move the Bottom bar to the position of the Top bar. When the bars are moved completly together, the Bottom bar will not accept another "Up" command. First the Bottom bar needs to be moved down, even if the Top bar already moved further up.
- 'Down/Close' will move the Top bar to the bottom of the window (absolute position 0).
- 'Position' is the relative position in which the Bottom bar can move, so from the position of the Top bar (100) to the bottom of the window (0), note that the position will therefore change if the Top bar is moved, since the space in which the Bottom bar is allowed to move changes.
- 'Absolute position' is the position of the Bottom bar with respect to the window, so 0 = bottom of the window and 100 = top of the window. Note that not all absolute positions are reachable at all moments due to the Top bar.

View File

@ -50,8 +50,6 @@ The most private option is running your own MQTT broker.
The recommended setup method is to use the [Mosquitto MQTT broker add-on](https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/DOCS.md).
</div>
<div class='note warning'>
Neither ActiveMQ MQTT broker nor the RabbitMQ MQTT Plugin are supported, use a known working broker like Mosquitto instead.
@ -59,19 +57,21 @@ There are [at least two](https://issues.apache.org/jira/browse/AMQ-6360) [issues
</div>
### Connect to a public broker
### Use a public broker
The Mosquitto project runs a [public broker](https://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. To use the public mosquitto broker, configure the MQTT integration to connect to broker `test.mosquitto.org` on port 1883 or 8883.
<div class='note'>
If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add `certificate: auto` to your broker configuration and restart Home Assistant.
</div>
## Broker configuration
MQTT broker settings are configured when the MQTT integration is first setup, and can be changed if needed. To change the settings, click on "Configure" in the integration page in the UI, then "Re-configure MQTT".
MQTT broker settings are configured when the MQTT integration is first set up and can be changed later if needed.
Add the MQTT integration, then provide your broker's hostname (or IP address) and port and (if required) the username and password that Home Assistant should use. To change the settings later, click on "Configure" on the integration page in the UI, then "Re-configure MQTT".
<div class='note'>
If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then turn on `Advanced options` and set [Broker certificate validation](/integrations/mqtt/#broker-certificate-validation) to `Auto`.
</div>
### Advanced broker configuration
@ -87,7 +87,7 @@ The time in seconds between sending keep alive messages for this client. The def
#### Broker certificate validation
To enable a secure the broker certificate should be validated. If your broker uses a trusted certificate then choose `auto`. This will allow validation against certifite CAs bundled certificates. If a self-signed certificate is used, select `Custom`. A custom PEM encoded CA-certificate can be uploaded. Click `NEXT` to show the control to upload the CA certificate.
To enable a secure the broker certificate should be validated. If your broker uses a trusted certificate then choose `Auto`. This will allow validation against certifite CAs bundled certificates. If a self-signed certificate is used, select `Custom`. A custom PEM encoded CA-certificate can be uploaded. Click `NEXT` to show the control to upload the CA certificate.
If the server certificate does not match the hostname then validation will fail. To allow a connection without the verification of the hostname, turn the `Ignore broker certificate validation` switch on.
#### MQTT Protocol

View File

@ -24,8 +24,7 @@ It is possible to get the tag information from the NextBus website.
https://www.nextbus.com/#!/<agency>/<route>/<direction>/<stop>
If tags are incorrect, valid ones will be displayed in the logs as a
convenience.
If tags are incorrect, valid ones will be displayed in the logs as a convenience. Note that the `<direction>` tag is not used in this integration.
```yaml
# Example configuration.yaml entry

View File

@ -59,7 +59,7 @@ interrupt:
type: boolean
{% endconfiguration %}
This is a fully customized YAML you can use inside `data` to test how the final notification will look like:
This is a fully customized YAML you can use inside `data` to test how the final notification will look like (for using this inside a service call look at the service example at the end of this page):
```yaml
fontsize: "large"

View File

@ -58,7 +58,7 @@ timeout:
default: 10
type: integer
username:
description: An administration user to connect to the QNAP NAS. This user must be a member of the _administration_ group.
description: An administration user to connect to the QNAP NAS. This user must be a member of the _administration_ group and MFA must be disabled for that account.
required: true
type: string
password:
@ -124,3 +124,5 @@ If your QNAP device uses self-signed certificates, set the `verify_ssl` option t
### QNAP device support
This integration works with most (but not all) QNAP devices. A complete, up-to-date [list of compatible devices can be found here](https://github.com/colinodell/python-qnapstats#device-support).
If your QNAP device is running QTS 5, make sure you log into the device's web interface (with the same account you've configured in Home Assistant) and complete any agreements, warnings, wizards, setup, etc. as the QNAP API may block requests until those are completed.

View File

@ -22,7 +22,7 @@ library from Home Assistant.
## Prerequisites
- An active Spotify account. A premium is not required, but recommended.
- An active Spotify account. A premium account is not required, but recommended.
Premium accounts can be controlled (pause, play, next, etc.), while
free accounts can only be used for browsing and current playback status.
- Spotify compatible playback [source](#selecting-output-source) device

View File

@ -155,3 +155,7 @@ unique_id:
required: false
type: string
{% endconfiguration %}
### An important note on `max_age` and `sampling_size`
The `max_age` option is only valid within the measured samples specified by `sampling_size` (default 20). Specify a wide-enough `sampling_size` if using an extended max-age (e.g., when looking for `max_age` 1 hour, a sensor that produces one measurement a minute should have at least a `sampling_size` of 60.

View File

@ -31,7 +31,7 @@ The device item value is the last segment of the URL path, e.g., the URL
1. Obtain your personal token:
```bash
curl --user <my_username>:<my_password> https://data.tankutility.com/api/getToken`
curl --user <my_username>:<my_password> https://data.tankutility.com/api/getToken
```
The JSON response structure should resemble:

View File

@ -15,7 +15,7 @@ ha_platforms:
ha_integration_type: service
---
The `watttime` integration allows users to get real-time emissions data for a latitude/longitude from [WattTime](https://www.watttime.org).
The WattTime integration allows users to get real-time emissions data for a latitude/longitude from [WattTime](https://www.watttime.org).
## Registering an Account
@ -23,8 +23,8 @@ WattTime account registration is accomplished [via the REST API itself](https://
```bash
curl -X "POST" "https://api2.watttime.org/v2/register" \
-H 'Content-Type: application/json; charset=utf-8' \
-d $'{
-H 'Content-Type: application/json' \
-d '{
"username": "<USERNAME>",
"password": "<PASSWORD>",
"email": "<EMAIL>",

View File

@ -68,6 +68,7 @@ Happy holidays and for the last time in 2022: Enjoy the release!
- [Release 2022.12.6 - December 14](#release-2022126---december-14)
- [Release 2022.12.7 - December 17](#release-2022127---december-17)
- [Release 2022.12.8 - December 21](#release-2022128---december-21)
- [Release 2022.12.9 - January, 2](#release-2022129---january-2)
- [Need help? Join the community!](#need-help-join-the-community)
- [Breaking Changes](#breaking-changes)
- [Farewell to the following](#farewell-to-the-following)
@ -176,8 +177,10 @@ This release adds support for using Shelly devices as a remote Bluetooth
adapter as well!
It works with all second-generation Shelly devices that use firmware 12.0 or
later. Those are able to provide Bluetooth advertisements to Home Assistant's
[Bluetooth integration](/integrations/bluetooth).
later. Those are able to forward Bluetooth advertisements to Home Assistant's
[Bluetooth integration](/integrations/bluetooth). Home Assistant is not able
to use Shelly devices to connect to devices, something that is necessry to
control devices via Bluetooth. For that, use our [Bluetooth Proxies](https://esphome.github.io/bluetooth-proxies/).
This can greatly help with extending the range of your Bluetooth network to
help with things like Bluetooth temperature or plant sensors in your home.
@ -678,6 +681,17 @@ The following integrations are now available via the Home Assistant UI:
[tibber docs]: /integrations/tibber/
[zha docs]: /integrations/zha/
## Release 2022.12.9 - January, 2
- Handle not available add-on in hassio add-on manager ([#84943] - [@MartinHjelmare])
- Fix failing HomeKit Controller diagnostics tests ([#84936] - [@bdraco])
[#84936]: https://github.com/home-assistant/core/pull/84936
[#84943]: https://github.com/home-assistant/core/pull/84943
[@MartinHjelmare]: https://github.com/MartinHjelmare
[@bdraco]: https://github.com/bdraco
## Need help? Join the community!
Home Assistant has a great community of users who are all more than willing

View File

@ -29,12 +29,20 @@ description: "The Home Assistant contributor license agreement (CLA) signature p
#complete {
display: none;
}
#error {
background: red;
color: white;
padding: 4px;
display: none;
}
</style>
<div id="loading">
<div id="spinner"></div>
<p>Please wait while we complete authentication and load data from GitHub...</p>
</div>
<div id="error"></div>
<form action="#" id="signature_form">
<div class="wrapper">
@ -454,6 +462,7 @@ description: "The Home Assistant contributor license agreement (CLA) signature p
}
});
$('#submit').click(function(e){
const errorEl = document.querySelector("#error")
if ($('form')[0].checkValidity()) {
e.preventDefault();
var payload = {
@ -489,6 +498,10 @@ description: "The Home Assistant contributor license agreement (CLA) signature p
}
localStorage.removeItem("pr");
localStorage.removeItem("gh_token");
errorEl.style.display = "none"
}).fail(function(data){
errorEl.textContent = data.responseJSON.message;
errorEl.style.display = "block"
});
}
});

View File

@ -9,14 +9,17 @@ need to add media to your media folder.
If you haven't set up a local media folder yet, check out this page on
[setting up the local media source][setup-media]
You can access your (automatically) created media folder using the dashboard.
Navigate to the {% my media_browser title="Media > Local Media" %}, and in the
top right corner, click manage. Here you can add and delete your media.
## Home Assistant OS & Supervised
If you are running Home Assistant OS or Supervised, you can access your
(automatically) created media folder using the Samba add-on.
If you haven't installed the Samba add-on yet, you can do so by browsing to
the {% my supervisor title="Settings > Add-ons" %} panel. Next, click on
the "Add-on store" tab and search for "Samba" and click on it.
If you are running Home Assistant OS or Supervised, you can also use the
Samba add-on. If you haven't installed the Samba add-on yet, you can do
so by browsing to the {% my supervisor title="Settings > Add-ons" %} panel.
Next, click on the "Add-on store" tab and search for "Samba" and click on it.
On the Samba add-on page, you can find a tab called "Documentation" with
the add-on installation and usage instructions. After that, you can copy/move