mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-23 09:17:06 +00:00
Merge branch 'current' into rc
This commit is contained in:
commit
2953605039
213
package-lock.json
generated
213
package-lock.json
generated
@ -14,12 +14,21 @@
|
||||
"remark-lint-fenced-code-flag": "^3.1.2",
|
||||
"remark-lint-no-shell-dollars": "^3.1.2",
|
||||
"remark-stringify": "^10.0.3",
|
||||
"textlint": "^13.3.2",
|
||||
"textlint": "^13.3.3",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^3.0.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@aashutoshrathi/word-wrap": {
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
|
||||
"integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@azu/format-text": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz",
|
||||
@ -241,59 +250,59 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-node-types": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.2.tgz",
|
||||
"integrity": "sha512-d9WXBahsAgRDWcfUE7pQs8E9SNbF0nxrEaYE2g01tLgQ/dYdlOLngNPXi0Lk+C+yU58kvmFSdO6nicIAe3WIiw==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-13.3.3.tgz",
|
||||
"integrity": "sha512-KCpJppfX3Km69twa6SmVEJ8mkyAZSrxw3XaaLQSlpc7PWnLUJSCHGPVECI1nSUDhiTd1r6zlRvWuyIAZJiov+A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/ast-tester": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-13.3.2.tgz",
|
||||
"integrity": "sha512-qbpmJS7mEZcTrcKuppPQ8o2VJFUvHJ4+/l5iNEc2JRtMqpoNP6JAIKwIuDcEsMxedClExVTPmNctUlteglpD2A==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-13.3.3.tgz",
|
||||
"integrity": "sha512-vIIEJ0vDJb3Pr4kseOH9yzUCxx1EbX6PQDg/DgQj9sMAnwVG2sZvy2Uiga4+hj8SphdzaKia9Z+156UZzs+mzA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2",
|
||||
"@textlint/ast-node-types": "^13.3.3",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/ast-traverse": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-13.3.2.tgz",
|
||||
"integrity": "sha512-c+SI7SAWH1S+q5iok0Q/jrprG1BctstTF4A8msi/1bioKtn/PrD01w/MDsPkDT+K15RrWYUSjG8FLuGPnEN78Q==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-13.3.3.tgz",
|
||||
"integrity": "sha512-tZ25emmWf3mJ4+vM8CO6D7F8l00WXD6MJgnnlY9BHI/HbOlngBfmKhTVizQEwrWfYF80sQO5R9a+N4UEk67Wcg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2"
|
||||
"@textlint/ast-node-types": "^13.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/config-loader": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-13.3.2.tgz",
|
||||
"integrity": "sha512-P8DESsBh3JBRMujbyV3WjVlhbDVaGBIRtEL0AveNSSe6+X0ef7OtesxGJhD8p/DIyA9X+69bqpg7mcV7DTuO9w==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-13.3.3.tgz",
|
||||
"integrity": "sha512-DQA/7dYu3VDHP9Idd0Sn7HzwiFuNdKUXfA79pUGmJzNQUYaW0qADzyQCwfh7LlvhCcBmnLgX+8wb13o6OaHX5g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/kernel": "^13.3.2",
|
||||
"@textlint/module-interop": "^13.3.2",
|
||||
"@textlint/types": "^13.3.2",
|
||||
"@textlint/utils": "^13.3.2",
|
||||
"@textlint/kernel": "^13.3.3",
|
||||
"@textlint/module-interop": "^13.3.3",
|
||||
"@textlint/types": "^13.3.3",
|
||||
"@textlint/utils": "^13.3.3",
|
||||
"debug": "^4.3.4",
|
||||
"rc-config-loader": "^4.1.2",
|
||||
"rc-config-loader": "^4.1.3",
|
||||
"try-resolve": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/feature-flag": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-13.3.2.tgz",
|
||||
"integrity": "sha512-ewW8dlhcFf19QuqlycQHqySQB/VhKQ7opYjvsJvUr2GP7/nY1Wq4vMWEhCtCOVg7Khumw1JtoS7+DaQGiFzuaQ==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-13.3.3.tgz",
|
||||
"integrity": "sha512-ltdwKQTvs9f/TgQ3asBx2EXmsSSsvxa7ySnTXSTZBkbVxqmrGY4zehDRiDCmuFZGVGCvCddY1QzCXy16ybk9Fg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/fixer-formatter": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-13.3.2.tgz",
|
||||
"integrity": "sha512-Szvb6OGx/+PkiqDUMVyXD5WDaraoU64VNWZhUm96wEjGxt7seMecRgYiKc7LkQllcStJ2lP8Dgju1phGaD5hbQ==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-13.3.3.tgz",
|
||||
"integrity": "sha512-iCMFS8GrmUetXMIT4/jFxoL5v1QN5ODj1190Lb6D+EdTxsrAWssHOb6m7MOEhfOGYEArAkb3PjSxu7DPLrb50g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/module-interop": "^13.3.2",
|
||||
"@textlint/types": "^13.3.2",
|
||||
"@textlint/module-interop": "^13.3.3",
|
||||
"@textlint/types": "^13.3.3",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"diff": "^4.0.2",
|
||||
@ -305,39 +314,38 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/kernel": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-13.3.2.tgz",
|
||||
"integrity": "sha512-KZX87i4xVqLXdb8Cl4y0Y56jIHQIwg+YPrLz/kBz2TQDl8vYeGLII4QHwT1l0BjZ2JHawm1pmyQZml3hCnieOQ==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-13.3.3.tgz",
|
||||
"integrity": "sha512-HewzuuX2c2nlR+e8dREWrAYrOiyWb78eeObuW95miMjX/F6TjWmha4qrnrMCWbYbKDwC4en8dNGS4mm0vSdi4A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2",
|
||||
"@textlint/ast-tester": "^13.3.2",
|
||||
"@textlint/ast-traverse": "^13.3.2",
|
||||
"@textlint/feature-flag": "^13.3.2",
|
||||
"@textlint/source-code-fixer": "^13.3.2",
|
||||
"@textlint/types": "^13.3.2",
|
||||
"@textlint/utils": "^13.3.2",
|
||||
"@textlint/ast-node-types": "^13.3.3",
|
||||
"@textlint/ast-tester": "^13.3.3",
|
||||
"@textlint/ast-traverse": "^13.3.3",
|
||||
"@textlint/feature-flag": "^13.3.3",
|
||||
"@textlint/source-code-fixer": "^13.3.3",
|
||||
"@textlint/types": "^13.3.3",
|
||||
"@textlint/utils": "^13.3.3",
|
||||
"debug": "^4.3.4",
|
||||
"fast-equals": "^4.0.3",
|
||||
"structured-source": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/linter-formatter": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-13.3.2.tgz",
|
||||
"integrity": "sha512-QpHI7bzDMaetmrnMhA2+z1ExneFCdJVZHUFyzdfSv5JC4VNXmW9UDb7F7vsP+M+1jzIvF75mwvRLvmA82MJvBA==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-13.3.3.tgz",
|
||||
"integrity": "sha512-z8xsk1bo9r8v6Ph76WLTBrfj+0+eyEfRlbTGBs+ie6YAGItBqkLYmDrD26DDfVjIZcXWdCXVX1Et6MOWomb//g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@azu/format-text": "^1.0.2",
|
||||
"@azu/style-format": "^1.0.1",
|
||||
"@textlint/module-interop": "^13.3.2",
|
||||
"@textlint/types": "^13.3.2",
|
||||
"@textlint/module-interop": "^13.3.3",
|
||||
"@textlint/types": "^13.3.3",
|
||||
"chalk": "^4.1.2",
|
||||
"debug": "^4.3.4",
|
||||
"is-file": "^1.0.0",
|
||||
"js-yaml": "^3.14.1",
|
||||
"lodash": "^4.17.21",
|
||||
"optionator": "^0.9.1",
|
||||
"pluralize": "^2.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^6.0.1",
|
||||
@ -347,12 +355,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/markdown-to-ast": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-13.3.2.tgz",
|
||||
"integrity": "sha512-tnXk7YO8rIPbnd6rDi6LwhxoExdg6ge8v5ggiun76qLfX2uKR0ExhJEL2K+zziATi1AqalBva3WD3exU1sfjeg==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-13.3.3.tgz",
|
||||
"integrity": "sha512-jeqWyChTtJHWxEnH46V6qjr+OCTh6evm45aDqMzdg+b8ocXY+NhudiCMeHcVGoz042UEwc6w4reLn8+Is+SZ+A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2",
|
||||
"@textlint/ast-node-types": "^13.3.3",
|
||||
"debug": "^4.3.4",
|
||||
"mdast-util-gfm-autolink-literal": "^0.1.3",
|
||||
"remark-footnotes": "^3.0.0",
|
||||
@ -590,61 +598,61 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/module-interop": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-13.3.2.tgz",
|
||||
"integrity": "sha512-JPHAZlWXgedDCoaTT21dln8u+sPVJUGPw283Oxz1k24x2MWaFZO7EReu/K4QepdxNKOpdllp2DqvnWgnvZoPOg==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-13.3.3.tgz",
|
||||
"integrity": "sha512-CwfVpRGAxbkhGY9vLLU06Q/dy/RMNnyzbmt6IS2WIyxqxvGaF7QZtFYpKEEm63aemVyUvzQ7WM3yVOoUg6P92w==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@textlint/source-code-fixer": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-13.3.2.tgz",
|
||||
"integrity": "sha512-7b+7zDUnEILcaYvJDLz+6Uu8YHn85xm6Lof/0Azn1/5zcDsz5qDjgJ21u+kuS+1kQBSpWV8dmCT3sTZoS0uExg==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-13.3.3.tgz",
|
||||
"integrity": "sha512-h4jxWSetmcVuGwl71ai72784aneBQ0MkE5Mc3avl8PKIOIOyz0A1D7i9VQENWWIiqU8zyzmHwKGNSGyqWaqE2Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/types": "^13.3.2",
|
||||
"@textlint/types": "^13.3.3",
|
||||
"debug": "^4.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/text-to-ast": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-13.3.2.tgz",
|
||||
"integrity": "sha512-6E2sFTukn5XygCWE1W6jU1rlQKO268tS5Qe8oHBdxp0tohFXMRzVM5r1MKgjjmuUpHxjwIcq75x+dWAYwX5wLQ==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-13.3.3.tgz",
|
||||
"integrity": "sha512-iQdiHAiUfB9XruuYWCb4fY/gD/Q5/MkH1xwUTpS8UJowNgwpTldagUJX1JbZQ2UHux+yRe9JFA+JKm3rrxgQFw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2"
|
||||
"@textlint/ast-node-types": "^13.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-markdown": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-13.3.2.tgz",
|
||||
"integrity": "sha512-iI/UuzUz4k5qnrPnm7U7d8oC/Hwj41MtllusBSArG3mimn5gHsS+Etzm5Zs3oxXMINdzvWNNEFJ/xbs1bZvEJg==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-13.3.3.tgz",
|
||||
"integrity": "sha512-EhBZ/Q6ZXMVRPDeQbFdFbtc0wE7SC0DWy9lkjKXfcbLKW0ZPTvtjH3JqJtCPBZAYcexB8wKOiHImfwVfQJhJhg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/markdown-to-ast": "^13.3.2"
|
||||
"@textlint/markdown-to-ast": "^13.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/textlint-plugin-text": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-13.3.2.tgz",
|
||||
"integrity": "sha512-pJrb4OYZ3TB6eKxvxPYARwoHb5vaXoKakCrmsyXtwbRjylJWCRVRh/u8UTRTyFRotASawEY/VfxKXwYepHP91Q==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-13.3.3.tgz",
|
||||
"integrity": "sha512-MN/JMGLanqj8CJGuit8DDiyrO0yf1vxFMLWTDeMIXwSoe8VToHCt2j20zg8XNHGNrUbKj+wuhzhrkrKEI7uWxg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/text-to-ast": "^13.3.2"
|
||||
"@textlint/text-to-ast": "^13.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/types": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-13.3.2.tgz",
|
||||
"integrity": "sha512-N1Xb4kltBwBwAF3wAwKi3sJA0hWVjraWqIpjuHOplul/O8Qu78domGedktQJ4n2aVN1ucBuFjpZNsQfkfxJI+Q==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-13.3.3.tgz",
|
||||
"integrity": "sha512-i2B7uRh+Iv8ZBKPJ3n4I6uSrTUQq5LdEkhFYNUwnDYxmhudz1o79xm906kri2eM8lxThX/UYYgVuJWpEwS0b+g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2"
|
||||
"@textlint/ast-node-types": "^13.3.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@textlint/utils": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-13.3.2.tgz",
|
||||
"integrity": "sha512-eEi4j5vyQ0WRkfkBS+Sa2q1YQVo0B6cFXde2+TVpoDp7f8yPAb4wMv9jgQ23N+DpiafJVOhRQLyJdrITFwnmFw==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-13.3.3.tgz",
|
||||
"integrity": "sha512-roN+K3a36RxGc0tV+8HXVXpoPomEr3LCjNI8+hFmVjOu3RsUdLTyraNBqqaghaE0KgwCPODF0seuG1hteNI8LQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/concat-stream": {
|
||||
@ -3002,17 +3010,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/optionator": {
|
||||
"version": "0.9.1",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
|
||||
"integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
|
||||
"version": "0.9.3",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
|
||||
"integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@aashutoshrathi/word-wrap": "^1.2.3",
|
||||
"deep-is": "^0.1.3",
|
||||
"fast-levenshtein": "^2.0.6",
|
||||
"levn": "^0.4.1",
|
||||
"prelude-ls": "^1.2.1",
|
||||
"type-check": "^0.4.0",
|
||||
"word-wrap": "^1.2.3"
|
||||
"type-check": "^0.4.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
@ -3236,9 +3244,9 @@
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"version": "4.1.3",
|
||||
"resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz",
|
||||
"integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"debug": "^4.3.4",
|
||||
@ -3835,23 +3843,23 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/textlint": {
|
||||
"version": "13.3.2",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-13.3.2.tgz",
|
||||
"integrity": "sha512-i14ug8jyC1iNko16dpzp/blSLbvXTONiZbvkNT30N3VzDPCtNn2yV4qSZhiRWFi1hHfgOdG3n/u0DZvllZCHXQ==",
|
||||
"version": "13.3.3",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-13.3.3.tgz",
|
||||
"integrity": "sha512-1LhJTNBFVNYtl4C6IJXt1XwAJANvquyDuP4NrhcG+1DwT3S7kiUR9vLo5yo046X83VT7ownzS97Q/yC6A7bZXg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@textlint/ast-node-types": "^13.3.2",
|
||||
"@textlint/ast-traverse": "^13.3.2",
|
||||
"@textlint/config-loader": "^13.3.2",
|
||||
"@textlint/feature-flag": "^13.3.2",
|
||||
"@textlint/fixer-formatter": "^13.3.2",
|
||||
"@textlint/kernel": "^13.3.2",
|
||||
"@textlint/linter-formatter": "^13.3.2",
|
||||
"@textlint/module-interop": "^13.3.2",
|
||||
"@textlint/textlint-plugin-markdown": "^13.3.2",
|
||||
"@textlint/textlint-plugin-text": "^13.3.2",
|
||||
"@textlint/types": "^13.3.2",
|
||||
"@textlint/utils": "^13.3.2",
|
||||
"@textlint/ast-node-types": "^13.3.3",
|
||||
"@textlint/ast-traverse": "^13.3.3",
|
||||
"@textlint/config-loader": "^13.3.3",
|
||||
"@textlint/feature-flag": "^13.3.3",
|
||||
"@textlint/fixer-formatter": "^13.3.3",
|
||||
"@textlint/kernel": "^13.3.3",
|
||||
"@textlint/linter-formatter": "^13.3.3",
|
||||
"@textlint/module-interop": "^13.3.3",
|
||||
"@textlint/textlint-plugin-markdown": "^13.3.3",
|
||||
"@textlint/textlint-plugin-text": "^13.3.3",
|
||||
"@textlint/types": "^13.3.3",
|
||||
"@textlint/utils": "^13.3.3",
|
||||
"debug": "^4.3.4",
|
||||
"file-entry-cache": "^5.0.1",
|
||||
"get-stdin": "^5.0.1",
|
||||
@ -3861,7 +3869,7 @@
|
||||
"mkdirp": "^0.5.6",
|
||||
"optionator": "^0.9.1",
|
||||
"path-to-glob-pattern": "^1.0.2",
|
||||
"rc-config-loader": "^4.1.2",
|
||||
"rc-config-loader": "^4.1.3",
|
||||
"read-pkg": "^1.1.0",
|
||||
"read-pkg-up": "^3.0.0",
|
||||
"structured-source": "^4.0.0",
|
||||
@ -4684,15 +4692,6 @@
|
||||
"integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/word-wrap": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
|
||||
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/wrappy": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
|
||||
|
@ -9,7 +9,7 @@
|
||||
"remark-lint-fenced-code-flag": "^3.1.2",
|
||||
"remark-lint-no-shell-dollars": "^3.1.2",
|
||||
"remark-stringify": "^10.0.3",
|
||||
"textlint": "^13.3.2",
|
||||
"textlint": "^13.3.3",
|
||||
"textlint-filter-rule-comments": "^1.2.2",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^3.0.5"
|
||||
|
@ -3,7 +3,7 @@ title: "Automation Conditions"
|
||||
description: "Automations can test conditions when invoked."
|
||||
---
|
||||
|
||||
Conditions are an optional part of an automation rule and can be used to prevent an action from happening when triggered. When a condition does not return true, the automation will stop executing. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off.
|
||||
Conditions are an optional part of an automation rule. They can be used to prevent the automation's actions from being run. After a trigger occurred, all conditions will be checked. If any of them do not return true, the automation will stop executing. Conditions look very similar to triggers, but they are very different — a trigger will look at events happening in the system, while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off.
|
||||
|
||||
The available conditions for an automation are the same as for the script syntax so see that page for a [full list of available conditions](/docs/scripts/conditions/).
|
||||
|
||||
|
@ -5,7 +5,8 @@
|
||||
<li>{% active_link /common-tasks/os/ Home Assistant Operating System %}</li>
|
||||
<li>{% active_link /common-tasks/container/ Home Assistant Container %}</li>
|
||||
<li>{% active_link /common-tasks/core/ Home Assistant Core %}</li>
|
||||
<li>{% active_link /common-tasks/supervised/ Home Assistant Supervised %}</li>
|
||||
<li>{% active_link /common-tasks/supervised/ Home Assistant Supervised %}
|
||||
<li>{% active_link /common-tasks/general/ Installation independent %}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
|
12
source/_includes/common-tasks/enable_entities.md
Normal file
12
source/_includes/common-tasks/enable_entities.md
Normal file
@ -0,0 +1,12 @@
|
||||
## Enabling entities
|
||||
|
||||
Some entities are disabled by default. To enable them, follow these steps:
|
||||
|
||||
1. Go to **{% my integrations title="Settings > Devices & Services" %}** and select the integration of interest.
|
||||
1. Select **entities**.
|
||||
1. From the list of entities, select the entity you want to enable.
|
||||

|
||||
1. In the pop-up, select the cogwheel.
|
||||
1. Toggle the **Enabled** button.
|
||||

|
||||
1. To save the changes, select **Update**.
|
@ -217,9 +217,6 @@ If you are running an older Windows version or have a stricter network configura
|
||||
### Download the appropriate image
|
||||
|
||||
- [VirtualBox][vdi] (.vdi)
|
||||
{% if page.installation_type == 'macos' %}
|
||||
- [KVM][qcow2] (.qcow2)
|
||||
{% endif %}
|
||||
{% if page.installation_type == 'windows' or page.installation_type == 'linux' %}
|
||||
- [KVM][qcow2] (.qcow2)
|
||||
- [Vmware Workstation][vmdk] (.vmdk)
|
||||
@ -239,7 +236,6 @@ Follow this guide if you already are running a supported virtual machine hypervi
|
||||
- If VirtualBox is not supported on your Mac, and you have experience using virtual machines, you can try running the Home Assistant Operating system on [UTM](https://mac.getutm.app/).
|
||||
{% endif %}
|
||||
|
||||
|
||||
### Create the virtual machine
|
||||
|
||||
Load the appliance image into your virtual machine hypervisor. (Note: You are free to assign as much resources as you wish to the VM, please assign enough based on your add-on needs).
|
||||
@ -277,7 +273,7 @@ _All these can be extended if your usage calls for more resources._
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
{% unless page.installation_type == 'macos' %}
|
||||
- title: KVM (virt-manager)
|
||||
content: |
|
||||
1. Create a new virtual machine in `virt-manager`.
|
||||
@ -294,7 +290,7 @@ _All these can be extended if your usage calls for more resources._
|
||||
- title: KVM (virt-install)
|
||||
content: |
|
||||
```bash
|
||||
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --graphics none --boot uefi
|
||||
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --import --graphics none --boot uefi
|
||||
```
|
||||
<div class="note info">
|
||||
If you have a USB dongle to attach, you need to add the option `--hostdev busID.deviceId`. You can discover these IDs via the `lsusb` command.
|
||||
@ -314,11 +310,12 @@ _All these can be extended if your usage calls for more resources._
|
||||
You can recognize the Sonoff dongle at `Bus 003 Device 003`. So the command to install the VM will become:
|
||||
|
||||
```bash
|
||||
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --graphics none --boot uefi --hostdev 003.003
|
||||
virt-install --name hass --description "Home Assistant OS" --os-variant=generic --ram=2048 --vcpus=2 --disk <PATH TO QCOW2 FILE>,bus=sata --import --graphics none --boot uefi --hostdev 003.003
|
||||
```
|
||||
Note that this configuration (bus 003, device 003) is just an example, your dongle could be on another bus and/or with another device ID.
|
||||
Please check the correct IDs of your USB dongle with `lsusb`.
|
||||
</div>
|
||||
{% endunless %}
|
||||
|
||||
{% if page.installation_type == 'windows' or page.installation_type == 'linux' %}
|
||||
|
||||
|
@ -52,6 +52,7 @@ Known supported devices:
|
||||
- Denon AVR-X6700H
|
||||
- Denon AVR-X7200W
|
||||
- Denon AVR-X8500H
|
||||
- Denon AVR-1713
|
||||
- Denon AVR-1912
|
||||
- Denon AVR-2112CI
|
||||
- Denon AVR-2312CI
|
||||
|
@ -79,6 +79,34 @@ logger:
|
||||
|
||||
The `ecovacs` vacuum platform allows you to monitor and control your Ecovacs Deebot vacuums.
|
||||
|
||||
### Vacuum services
|
||||
|
||||
The `ecovacs` vacuum platform does not support eithor of the services `vacuum.pause` or `vacuum.start`, it supports the following services instead.
|
||||
|
||||
#### Service `vacuum.turn_on`
|
||||
|
||||
Start a new cleaning task.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|-------------------------------------------------------|
|
||||
| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. |
|
||||
|
||||
#### Service `vacuum.turn_off`
|
||||
|
||||
Stop the current cleaning task and return to the dock.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|-------------------------------------------------------|
|
||||
| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. |
|
||||
|
||||
#### Service `vacuum.start_pause`
|
||||
|
||||
Start, pause or resume a cleaning task.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|-------------------------------------------------------|
|
||||
| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. |
|
||||
|
||||
### Integration lifespan
|
||||
|
||||
The remaining lifespan of components on your Deebot vacuum will be reported as attributes on the vacuum entity. The value will be a whole number representing the percentage of life remaining.
|
||||
|
@ -57,7 +57,7 @@ iBeacons with a randomized MAC address will be combined into a single set of ent
|
||||
|
||||
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.
|
||||
|
||||
To get the Estimated distance sensor to work, in most cases, it has to be calibrated in the supplier's app. Place the device at 1m in light of sight of the Bluetooth adapter, read the signal strength in dBm, and set it in the corresponding field of the device app.
|
||||
To get the Estimated distance sensor to work, in most cases, it has to be calibrated in the supplier's app. Place the device at 1m in line of sight of the Bluetooth adapter, read the signal strength in dBm, and set it in the corresponding field of the device app.
|
||||
|
||||
## Known working devices
|
||||
|
||||
|
@ -41,15 +41,22 @@ By default, this integration will count unread emails. By configuring the search
|
||||
* `FROM`, `TO`, `SUBJECT` to find emails in a folder (see [IMAP RFC for all standard options](https://tools.ietf.org/html/rfc3501#section-6.4.4))
|
||||
* [Gmail's IMAP extensions](https://developers.google.com/gmail/imap/imap-extensions) allow raw Gmail searches, like `X-GM-RAW "in: inbox older_than:7d"` to show emails older than one week in your inbox. Note that raw Gmail searches will ignore your folder configuration and search all emails in your account!
|
||||
|
||||
|
||||
### Selecting a charset supported by the imap server
|
||||
|
||||
Below is an example for setting up the integration to connect to your Microsoft 365 account that requires `US_ASCII` as charset:
|
||||
Below is an example for setting up the integration to connect to your Microsoft 365 account that requires `US-ASCII` as charset:
|
||||
- Server: `outlook.office365.com`
|
||||
- Port: `993`
|
||||
- Username: Your full email address
|
||||
- Password: Your password
|
||||
- Charset: `US-ASCII`
|
||||
|
||||
<div class="note">
|
||||
|
||||
Yahoo also requires the character set `US-ASCII`.
|
||||
|
||||
</div>
|
||||
|
||||
### Selecting an alternate SSL cipher list or disable SSL verification (advanced mode)
|
||||
|
||||
If the default IMAP server settings do not work, you might try to set an alternate SLL cipher list.
|
||||
@ -67,6 +74,7 @@ The SSL cipher list and verify SSL are advanced settings. The options are availa
|
||||
|
||||
Email providers may limit the number of reported emails. The number may be less than the limit (10,000 at least for Yahoo) even if you set the `IMAP search` to reduce the number of results. If you are not getting expected events and cleaning your Inbox or the configured folder is not desired, set up an email filter for the specific sender to go into a new folder. Then create a new config entry or modify the existing one with the desired folder.
|
||||
|
||||
|
||||
### Using events
|
||||
|
||||
When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation.
|
||||
|
@ -83,25 +83,14 @@ Image taken from [this excellent article by The Verge](https://www.theverge.com/
|
||||
|
||||
For communicating with Matter devices, the Home Assistant integration runs its own "Matter controller" in a separate process which will be launched as an add-on. This add-on runs the controller software and connects your Matter network (called Fabric in technical terms) and Home Assistant. The Home Assistant Matter integration connects to this server via a WebSocket connection.
|
||||
|
||||
The only supported configuration (for now) for the Matter integration is by running the officially provided Home Assistant Matter add-on. Running the [Matter server](https://github.com/home-assistant-libs/python-matter-server) by any other means is at your own risk and is currently not officially supported.
|
||||
### Supported installation types
|
||||
|
||||
## Current state of the integration
|
||||
It is recommended to run the Matter add-on on Home Assistant OS. This is currently the best-supported option.
|
||||
|
||||
While the support for Matter is evolving, we will regularly update the Matter integration with new features or device support. Because it might be hard to track what's supported and what's not, we list the current state here and try to update this information regularly.
|
||||
If you run Home Assistant in a container, you can run a Docker image of the [Matter server](https://github.com/home-assistant-libs/python-matter-server). The requirements and instructions for your host setup are described on that GitHub page.
|
||||
|
||||
Supported platforms (device types):
|
||||
Running Matter on a Home Assistant Core installation is not supported.
|
||||
|
||||
- Binary sensor: We have so far tested door/window sensors and motion sensors, but others will probably work too.
|
||||
- Climate: Support for thermostat devices is in development now.
|
||||
- Cover: Has been implemented, but support for a tilt feature is still missing.
|
||||
- Lights: All features (in the Matter specification) should be supported, including color control, etc.
|
||||
- Locks: Basic lock control has been implemented, but not all devices and features are supported yet.
|
||||
- Sensor: We have tested Illuminance and temperature sensors, but others will probably work too.
|
||||
- Switch: Powerplugs should work (note: no support for energy metering yet in Matter).
|
||||
|
||||
Note that a single Matter device can exist on multiple platforms. For example, a Motion sensor also has a temperature sensor and an illuminance sensor on board.
|
||||
|
||||
If you own a (bridged) Matter device and you are missing controls for this device, create an issue on [GitHub](https://github.com/home-assistant/home-assistant.io) and make sure to post your Integration diagnostics there. In some cases, we can easily extend the existing platform support based on your diagnostics dump.
|
||||
|
||||
## Adding Matter devices to Home Assistant
|
||||
|
||||
@ -160,9 +149,6 @@ This method will allow you to share a device that was added to Google Home to Ho
|
||||
|
||||
<lite-youtube videoid="-B4WWevd2JI" videotitle="Share Matter device from Google Home to Home Assistant"></lite-youtube>
|
||||
|
||||
<p class='note'>
|
||||
At this time it is not yet possible to share a device from Home Assistant to another platform. This feature should be added after the Matter SDK 1.1 is released.
|
||||
</p>
|
||||
|
||||
## Experiment with Matter using a ESP32 dev board
|
||||
|
||||
@ -209,27 +195,37 @@ Did you test a device that is not listed below? It would be greatly appreciated
|
||||
[Eve Door & Window on Amazon](https://amzn.to/3RIU6ml)
|
||||
[Eve Motion on Amazon](https://amzn.to/3jDujiP)
|
||||
|
||||
### Nanoleaf Matter bulbs and Lightstrips
|
||||
### Nanoleaf (Essentials) Matter bulbs and Lightstrips
|
||||
|
||||
- Although the products work great once commissioned, multiple users have reported that commissioning them can be a bit difficult and requires some patience and multiple resets or optimizations to your home network.
|
||||
- Check the [Nanoleaf Matter infopage](https://nanoleaf.me/en-EU/integration/matter/) for all supported products and instructions.
|
||||
|
||||
### Philips Hue (V2) Bridge
|
||||
|
||||
The Philips Hue V2 bridge supports Matter since a recent update (the beta program closed, it is now officially available). You can enable Matter support from the Hue app after which you can commission it to Home Assistant and other fabrics.
|
||||
The Philips Hue V2 bridge supports Matter. You can enable Matter support in the Hue app. You can then commission it to Home Assistant and other fabrics.
|
||||
|
||||
- Binding the Hue bridge to Home Assistant does not make sense because you will lose functionality over the default Hue integration in Home Assistant, such as button press events and (dynamic) scenes.
|
||||
- You will need a Hue/Signify (cloud) account and the app before you can use Matter.
|
||||
- Device events for example for dimmer remotes are not supported.
|
||||
- Only basic control of lights is supported, no scenes, events, effects etc.
|
||||
|
||||
### SwitchBot Hub 2
|
||||
|
||||
SwitchBot has released a (beta) firmware update to enable Matter support on their Hub 2. The SwitchBot Hub 2 is a Matter bridge device. It is bridging some of the devices, such as curtain motors, into Matter.
|
||||
|
||||
- To use Matter, in the SwitchBot app, enable Matter bridge support. Then, copy the code and use that to commission the Hub to Home Assistant. Another option is to use a second device to scan the QR code.
|
||||
- Device support is limited. You bridge specific devices to Matter by adding them as **Secondary device** in the app. Note that not all SwitchBot devices can be bridged.
|
||||
- Enabling Matter support does not convert the actual SwitchBot devices into matter devices. Those still need to be within the Bluetooth range of the hub.
|
||||
- Bridged SwitchBot devices appear with a rather technical name in Home Assistant. This is a known issue.
|
||||
|
||||
|
||||
### Tasmota
|
||||
|
||||
Tasmota supports Matter over IP on all ESP32 based devices (in experimental phase). Follow the [instructions](https://tasmota.github.io/docs/Matter/).
|
||||
|
||||
### TP-Link Tapo P125M (power plug)
|
||||
|
||||
- Look for the M addition in the model name, a device without the M (regular P125) is not Matter compliant.
|
||||
- Look for the _M_ addition in the model name. A device without the M (regular P125) is not Matter compliant.
|
||||
- This device is available in the US only.
|
||||
|
||||
[TP-Link Tapo P125M on Amazon](https://amzn.to/3RILJah)
|
||||
@ -238,15 +234,18 @@ Tasmota supports Matter over IP on all ESP32 based devices (in experimental phas
|
||||
|
||||
### General recommendations
|
||||
|
||||
- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS (version 10 and above) because of kernel patches to solve routing issues. Not using HAOS (and thus the official Matter add-on) is at your own risk.
|
||||
- Using Thread-based Matter devices in Home Assistant requires Home Assistant OS version 10 and above. Not using Home Assistant OS is at your own risk. We do provide some [documentation](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md) on how to run the Matter Server as a Docker container. The documentation includes a description of the host and networking requirements.
|
||||
|
||||
- To use Thread devices you will need a Thread Network with at least one Thread Border Router in your network nearby the Thread device(s). Apple users need for example the Apple TV 4K or the HomePod Mini, while Google users need a Nest Hub V2. Use the Thread integration in Home Assistant to diagnose your Thread network(s).
|
||||
|
||||
- Start simple and work from there, keep your network easy and add for example an ESP32 test device. Once that works, move on to the next step or more devices.
|
||||
- Start simple and work from there, keep your network simple and add for example an ESP32 test device. Once that works, move on to the next step or more devices.
|
||||
|
||||
- Realize that you are an early adopter, both on the hardware side and on the software (controller) side so you may run into compatibility issues or features that are still missing. Report any issues you may find and help out others if you find a workaround or tested a device.
|
||||
|
||||
- Make sure IPv6 (multicast) traffic travels freely from your network to the Home Assistant host. There is no requirement to have an IPv6-enabled internet connection or DHCPv6 server. However, IPv6 support has to be enabled (it's enabled by default on Home Assistant OS).
|
||||
- Make sure IPv6 (multicast) traffic travels freely from your network to the Home Assistant host. There is no requirement to have an IPv6-enabled internet connection or DHCPv6 server. However, IPv6 support has to be enabled on Home Assistant. Go to **{% my network title="Settings > System > Network" %}**, and make sure **IPv6** is set to **Automatic** or **static**, depending on your network setup. If you're unsure, use **Automatic**.
|
||||
|
||||
- For more detailed information on network configuration, refer to the [README of the Matter server repository](https://github.com/home-assistant-libs/python-matter-server/blob/main/README.md).
|
||||
|
||||
|
||||
### I do not see the button "Commission using the Companion app"
|
||||
|
||||
@ -266,4 +265,4 @@ Also see this [extended troubleshooting guide](https://developers.home.google.co
|
||||
|
||||
The Matter protocol relies on (local) IPv6 and mDNS (multicast traffic) which should be able to travel freely in your network. Matter devices that use Wi-Fi (including Thread Border routers) must be on the same LAN/VLAN as Home Assistant. Matter devices that only use Thread must be joined to Thread networks for which there is at least one border router connected to the Home Assistant LAN.
|
||||
|
||||
Investigate your network topology if you experience any issues with discovering devices (like the initial commission keeps failing) or if devices become unavailable randomly. For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and do not play nicely with enterprise networking solutions like VLANs, Multicast filtering, and IGMP snooping. Try to keep your network as simple and flat as possible to avoid issues.
|
||||
If you experience any issues with discovering devices (for example, if the initial commission keeps failing or if devices become unavailable randomly), investigate your network topology. For instance, a setting on your router or Wi-Fi access point to "optimize" multicast traffic can harm the (discovery) traffic from Matter devices. Keep this in mind when you experience issues trying to add or control Matter devices. Protocols like Matter are designed for regular residential network setups and may not integrate well with enterprise networking solutions like VLANs, Multicast filtering, and (malfunctioning) IGMP snooping. To avoid issues, try to keep your network topology as simple and flat as possible.
|
||||
|
@ -1180,5 +1180,6 @@ and restart Home Assistant, reproduce the problem, and include the log in the is
|
||||
- [Modbus Climate](#configuring-platform-climate)
|
||||
- [Modbus Cover](#configuring-platform-cover)
|
||||
- [Modbus Fan](#configuring-platform-fan)
|
||||
- [Modbus Light](#configuring-platform-light)
|
||||
- [Modbus Sensor](#configuring-platform-sensor)
|
||||
- [Modbus Switch](#configuring-platform-switch)
|
||||
|
@ -48,11 +48,15 @@ The following bridges are reported to work with this integration:
|
||||
- D1554 Connector mini-bridge
|
||||
- DD7002B Brel-Home box
|
||||
- D1554 Brel Home USB plug
|
||||
- Brel HUB-03
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Retrieving the API Key
|
||||
|
||||
The 16 character API key needed to setup the Home Assistant integration needs to be retrieved by first connecting the blind/bridge to the official app of its respective brand.
|
||||
In that app the key can often be found by clicking multiple times on specific places on the "About" page.
|
||||
|
||||
### Motion Blinds app
|
||||
|
||||
The Motion Blinds API uses a 16 character key that can be retrieved from the official "Motion Blinds" app for [IOS](https://apps.apple.com/us/app/motion-blinds/id1437234324) or [Android](https://play.google.com/store/apps/details?id=com.coulisse.motion).
|
||||
|
@ -572,16 +572,18 @@ A motion detection device which can be represented by a [binary sensor](/integra
|
||||
|
||||
- Configuration topic: `homeassistant/binary_sensor/garden/config`
|
||||
- State topic: `homeassistant/binary_sensor/garden/state`
|
||||
- Payload: `{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}`
|
||||
- Configuration payload: `{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state", "unique_id": "motion01ad", "device": {"identifiers": ["01ad"], "name": "Garden" }}`
|
||||
- Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts.
|
||||
|
||||
To create a new sensor manually.
|
||||
It is also a good idea to add a `unique_id` to allow changes to the entity and a `device` mapping so we can group all sensors of a device together.
|
||||
|
||||
To create a new sensor manually:
|
||||
|
||||
```bash
|
||||
mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state"}'
|
||||
mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '{"name": "garden", "device_class": "motion", "state_topic": "homeassistant/binary_sensor/garden/state", "unique_id": "motion01ad", "device": {"identifiers": ["01ad"], "name": "Garden" }}'
|
||||
```
|
||||
|
||||
Update the state.
|
||||
Update the state:
|
||||
|
||||
```bash
|
||||
mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/state" -m ON
|
||||
@ -600,9 +602,9 @@ For more details please refer to the [MQTT testing section](/integrations/mqtt/#
|
||||
Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions.
|
||||
|
||||
- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config`
|
||||
- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }`
|
||||
- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}","unique_id": "temp01ae", "device": {"identifiers": ["bedroom01ae"], "name": "Bedroom" }}`
|
||||
- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config`
|
||||
- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }`
|
||||
- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}","unique_id": "hum01ae", "device": {"identifiers": ["bedroom01ae"], "name": "Bedroom" } }`
|
||||
- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }`
|
||||
|
||||
#### Entities with command topics
|
||||
@ -612,15 +614,15 @@ Setting up a light, switch etc. is similar but requires a `command_topic` as men
|
||||
- Configuration topic: `homeassistant/switch/irrigation/config`
|
||||
- State topic: `homeassistant/switch/irrigation/state`
|
||||
- Command topic: `homeassistant/switch/irrigation/set`
|
||||
- Payload: `{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}`
|
||||
- Payload: `{"name": "Irrigation", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}`
|
||||
- Retain: The -r switch is added to retain the configuration topic in the broker. Without this, the sensor will not be available after Home Assistant restarts.
|
||||
|
||||
```bash
|
||||
mosquitto_pub -r -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/config" \
|
||||
-m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state"}'
|
||||
-m '{"name": "garden", "command_topic": "homeassistant/switch/irrigation/set", "state_topic": "homeassistant/switch/irrigation/state", "unique_id": "irr01ad", "device": {"identifiers": ["garden01ad"], "name": "Garden" }}}'
|
||||
```
|
||||
|
||||
Set the state.
|
||||
Set the state:
|
||||
|
||||
```bash
|
||||
mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON
|
||||
@ -659,7 +661,6 @@ Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-sch
|
||||
|
||||
#### Use object_id to influence the entity id
|
||||
|
||||
|
||||
The entity id is automatically generated from the entity's name. All MQTT integrations optionally support providing an `object_id` which will be used instead if provided.
|
||||
|
||||
- Configuration topic: `homeassistant/sensor/device1/config`
|
||||
|
@ -29,6 +29,21 @@ Remove Sensor:
|
||||
description: Untrack a sensor.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Creating an API key
|
||||
|
||||
To add this integration, you need a (free) Purple Air API Key. A new account currently comes with 1 million free points. After that, you need to buy additional points to continue to use the API. The current plugin uses ~30K points/day. The 1 million points last about a month. A lack of points will trigger API errors until you buy more points.
|
||||
|
||||
Detailed instructions are at [https://community.purpleair.com/t/creating-api-keys/3951]([https://community.purpleair.com/t/creating-api-keys/3951]) but in summary you:
|
||||
|
||||
* Create an account at https://develop.purpleair.com/ (which uses Single Sign-On through a Google account).
|
||||
* On the ['keys'](https://develop.purpleair.com/keys) page press the "plus" button to create an API key. Leave the defaults of **Read** and **Enabled**.
|
||||
* Go to the ['projects'](https://develop.purpleair.com/projects) page and select the edit (pencil) button on the listed Project. Add points (for example 1,000,000), then select **Update**.
|
||||
* Go back to the ['keys'](https://develop.purpleair.com/keys) page and copy the API key. It will be a value like XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX.
|
||||
* Paste that API key into the **API Key** field when creating the integration in Home Assistant.
|
||||
|
||||
Note that if you are using your own sensor, it will need to be set to **Public** to be visible.
|
||||
|
||||
|
||||
## Creating an AQI Rating from Raw Particulate Data
|
||||
|
||||
The PurpleAir API does not provide AQI data; therefore, the integration does not create
|
||||
|
@ -51,13 +51,14 @@ We are working on adding a lot of features to the core integration. We have reve
|
||||
|
||||
### How can I clean a specific room?
|
||||
We plan to make the process simpler in the future, but for now, it is a multi-step process.
|
||||
1) Enable debug logging for this integration and reload it.
|
||||
2) Search your logs for 'Got home data' and then find the attribute rooms.
|
||||
3) Write the rooms down; they have a name and 6 digit ID.
|
||||
4) Go to **Developer Tools** > **Services** > **Vacuum: Send Command**. Select your vacuum as the entity and 'get_room_mapping' as the command.
|
||||
5) Go back to your logs and look at the response to `get_room_mapping`. This is a list of the 6-digit IDs you saw earlier to 2-digit IDs. In your original list of room names and 6-digit IDs, replace the 6-digit ID with its pairing 2-digit ID.
|
||||
6) Now, you have the 2-digit ID that your vacuum uses to describe a room.
|
||||
7) Go back to **Developer Tools** > **Services** > **Vacuum: Send Command** then type `app_segment_clean` as your command and 'segments' with a list of the 2-digit IDs you want to clean. Then, add `repeat` with a number (ranging from 1 to 3) to determine how many times you want to clean these areas.
|
||||
1) Make sure to first name the rooms in the Roborock app; otherwise, they won't appear in the debug log.
|
||||
2) [Enable debug logging](/docs/configuration/troubleshooting/#enabling-debug-logging) for this integration and reload it.
|
||||
3) Search your logs for 'Got home data' and find the attribute rooms.
|
||||
4) Write the rooms down; they have a name and 6 digit ID.
|
||||
5) Go to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Vacuum: Send Command**" %}. Select your vacuum as the entity and `get_room_mapping` as the command.
|
||||
6) Go back to your logs and look at the response to `get_room_mapping`. This is a list of the 6-digit IDs you saw earlier to 2-digit IDs. In your original list of room names and 6-digit IDs, replace the 6-digit ID with its pairing 2-digit ID.
|
||||
7) Now, you have the 2-digit ID that your vacuum uses to describe a room.
|
||||
8) Go back to {% my developer_call_service service="vacuum.send_command" title="**Developer Tools** > **Services** > **Vacuum: Send Command**" %} then type `app_segment_clean` as your command and `segments` with a list of the 2-digit IDs you want to clean. Then, add `repeat` with a number (ranging from 1 to 3) to determine how many times you want to clean these areas.
|
||||
|
||||
Example:
|
||||
```yaml
|
||||
|
@ -28,11 +28,6 @@ Currently supported services are:
|
||||
- `stop`
|
||||
- `return_to_base`
|
||||
- `locate`
|
||||
- `set_fan_speed`
|
||||
|
||||
If `pause` does not work for you, then it is not supported by your vacuum. The `stop` service will provide similar functionality.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Integration Disconnecting
|
||||
|
||||
If the integration frequently disconnects and you have an ad blocker runner like [Pi-hole](https://pi-hole.net/) or [AdGuard](https://adguard.com) add `ads-field.aylanetworks.com` to the Allow list . This domain is needed for the connection and can be part of the automatic blocking because of `ads` being part of the subdomain.
|
||||
|
@ -96,6 +96,12 @@ See [Supported Devices in python-kasa](https://github.com/python-kasa/python-kas
|
||||
|
||||
Other bulbs may also work, but with limited color temperature range (2700-5000). If you find a bulb isn't reaching the full-color temperature boundaries, submit a bug report to [python-kasa](https://github.com/python-kasa/python-kasa).
|
||||
|
||||
## Unsupported devices
|
||||
|
||||
### Plugs
|
||||
|
||||
- KP125M (supported via [Matter](/integrations/matter/#tp-link-tapo-p125m-power-plug), but without energy monitoring features)
|
||||
|
||||
### Random Effect - Service `tplink.random_effect`
|
||||
|
||||
The light strips allow setting a random effect.
|
||||
|
@ -104,10 +104,10 @@ use has.
|
||||
1. Login to your _Local Portal_ on your UniFi OS device, and click on _Users_. **Note**: This **must** be done from
|
||||
the UniFi OS by accessing it directly by IP address (i.e. _Local Portal_), not via `unifi.ui.com` or within the
|
||||
UniFi Protect app.
|
||||
2. In the upper right corner, click on _Add User_.
|
||||
3. Fill out the fields for your user. Be sure the role you assign to the user grants them access to at least one or
|
||||
more UniFi Protect devices.
|
||||
4. Click _Add_ in the bottom right.
|
||||
2. Go to **Admins** from the left hand side menu or [IP address]/admins/users e.g. 192.168.1.1/admins/users.
|
||||
3. Click on **Add New Admin**.
|
||||
4. Select **Full Management** for the role. Uncheck **Allow Remote Access** and fill out the fields for your user.
|
||||
5. Click **Add** in the bottom right.
|
||||
|
||||

|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Vacuum
|
||||
description: Instructions on how to setup and use vacuum's in Home Assistant.
|
||||
description: Instructions on how to setup and use vacuums in Home Assistant.
|
||||
ha_release: 0.51
|
||||
ha_domain: vacuum
|
||||
ha_quality_scale: internal
|
||||
@ -12,48 +12,12 @@ ha_integration_type: entity
|
||||
|
||||
The `vacuum` integration enables the ability to control home cleaning robots within Home Assistant.
|
||||
|
||||
## Configuration
|
||||
## Services
|
||||
|
||||
To use this integration in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/integrations/xiaomi_miio#xiaomi-mi-robot-vacuum).
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
vacuum:
|
||||
- platform: xiaomi_miio
|
||||
name: Living room
|
||||
host: 192.168.1.2
|
||||
```
|
||||
|
||||
### Integration services
|
||||
|
||||
Available services: `turn_on`, `turn_off`, `start_pause`, `start`, `pause`, `stop`, `return_to_base`, `locate`, `clean_spot`, `set_fan_speed` and `send_command`.
|
||||
Available services: `start`, `pause`, `stop`, `return_to_base`, `locate`, `clean_spot`, `set_fan_speed` and `send_command`.
|
||||
|
||||
Before calling one of these services, make sure your vacuum platform supports it.
|
||||
|
||||
#### Service `vacuum.turn_on`
|
||||
|
||||
Start a new cleaning task. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.start` instead.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|-------------------------------------------------------|
|
||||
| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. |
|
||||
|
||||
#### Service `vacuum.turn_off`
|
||||
|
||||
Stop the current cleaning task and return to the dock. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.stop` instead.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|-------------------------------------------------------|
|
||||
| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. |
|
||||
|
||||
#### Service `vacuum.start_pause`
|
||||
|
||||
Start, pause or resume a cleaning task. For the Xiaomi Vacuum, Roomba, and Neato use `vacuum.start` and `vacuum.pause` instead.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
|---------------------------|----------|-------------------------------------------------------|
|
||||
| `entity_id` | yes | Only act on specific vacuum. Use `entity_id: all` to target all. |
|
||||
|
||||
#### Service `vacuum.start`
|
||||
|
||||
Start or resume a cleaning task.
|
||||
|
@ -8,322 +8,11 @@ ha_domain: mqtt
|
||||
---
|
||||
|
||||
The `mqtt` vacuum integration allows you to control your MQTT-enabled vacuum.
|
||||
There are two possible message schemas - `legacy` and `state`, chosen by setting the `schema` configuration parameter.
|
||||
New installations should use the `state` schema as `legacy` is deprecated and might be removed someday in the future.
|
||||
The `state` schema is preferred because the vacuum will then be represented as a `StateVacuumDevice` which is the preferred parent vacuum entity.
|
||||
The initial state of the state vacuum entity will set to `unknown` and can be reset by a device by sending a `null` payload as state. The legacy `mqtt` vacuum does not support handling an `unknown` state.
|
||||
|
||||
This documentation has 3 sections. Configuration for `legacy` vacuum with examples, configuration for `state` vacuum with examples and shared section with examples which are the same for both schemas.
|
||||
The initial state of the MQTT vacuum entity will set to `unknown` and can be reset by a device by sending a `null` payload as state.
|
||||
|
||||
## Configuration
|
||||
|
||||
<a id='new_format'></a>
|
||||
|
||||
To add your MQTT vacuum to your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
mqtt:
|
||||
vacuum:
|
||||
- command_topic: "vacuum/command"
|
||||
```
|
||||
|
||||
## Legacy Configuration
|
||||
|
||||
Legacy MQTT vacuum configuration section.
|
||||
|
||||
{% configuration %}
|
||||
availability:
|
||||
description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
|
||||
required: false
|
||||
type: list
|
||||
keys:
|
||||
payload_available:
|
||||
description: The payload that represents the available state.
|
||||
required: false
|
||||
type: string
|
||||
default: online
|
||||
payload_not_available:
|
||||
description: The payload that represents the unavailable state.
|
||||
required: false
|
||||
type: string
|
||||
default: offline
|
||||
topic:
|
||||
description: An MQTT topic subscribed to receive availability (online/offline) updates.
|
||||
required: true
|
||||
type: string
|
||||
value_template:
|
||||
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
|
||||
required: false
|
||||
type: template
|
||||
availability_mode:
|
||||
description: When `availability` is configured, this controls the conditions needed to set the entity to `available`. Valid entries are `all`, `any`, and `latest`. If set to `all`, `payload_available` must be received on all configured availability topics before the entity is marked as online. If set to `any`, `payload_available` must be received on at least one configured availability topic before the entity is marked as online. If set to `latest`, the last `payload_available` or `payload_not_available` received on any configured availability topic controls the availability.
|
||||
required: false
|
||||
type: string
|
||||
default: latest
|
||||
availability_template:
|
||||
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
|
||||
required: false
|
||||
type: template
|
||||
availability_topic:
|
||||
description: The MQTT topic subscribed to receive availability (online/offline) updates. Must not be used together with `availability`.
|
||||
required: false
|
||||
type: string
|
||||
battery_level_template:
|
||||
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the battery level of the vacuum. This is required if `battery_level_topic` is set.
|
||||
required: false
|
||||
type: template
|
||||
battery_level_topic:
|
||||
description: The MQTT topic subscribed to receive battery level values from the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
charging_template:
|
||||
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the charging state of the vacuum. This is required if `charging_topic` is set.
|
||||
required: false
|
||||
type: template
|
||||
charging_topic:
|
||||
description: The MQTT topic subscribed to receive charging state values from the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
cleaning_template:
|
||||
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the cleaning state of the vacuum. This is required if `cleaning_topic` is set.
|
||||
required: false
|
||||
type: template
|
||||
cleaning_topic:
|
||||
description: The MQTT topic subscribed to receive cleaning state values from the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
command_topic:
|
||||
description: The MQTT topic to publish commands to control the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
docked_template:
|
||||
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the docked state of the vacuum. This is required if `docked_topic` is set.
|
||||
required: false
|
||||
type: template
|
||||
docked_topic:
|
||||
description: The MQTT topic subscribed to receive docked state values from the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
enabled_by_default:
|
||||
description: Flag which defines if the entity should be enabled when first added.
|
||||
required: false
|
||||
type: boolean
|
||||
default: true
|
||||
encoding:
|
||||
description: The encoding of the payloads received and published messages. Set to `""` to disable decoding of incoming payload.
|
||||
required: false
|
||||
type: string
|
||||
default: "utf-8"
|
||||
entity_category:
|
||||
description: The [category](https://developers.home-assistant.io/docs/core/entity#generic-properties) of the entity.
|
||||
required: false
|
||||
type: string
|
||||
default: None
|
||||
error_template:
|
||||
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define potential error messages emitted by the vacuum. This is required if `error_topic` is set.
|
||||
required: false
|
||||
type: template
|
||||
error_topic:
|
||||
description: The MQTT topic subscribed to receive error messages from the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
fan_speed_list:
|
||||
description: List of possible fan speeds for the vacuum.
|
||||
required: false
|
||||
type: [string, list]
|
||||
fan_speed_template:
|
||||
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the fan speed of the vacuum. This is required if `fan_speed_topic` is set.
|
||||
required: false
|
||||
type: template
|
||||
fan_speed_topic:
|
||||
description: The MQTT topic subscribed to receive fan speed values from the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
icon:
|
||||
description: "[Icon](/docs/configuration/customizing-devices/#icon) for the entity."
|
||||
required: false
|
||||
type: icon
|
||||
json_attributes_template:
|
||||
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
|
||||
required: false
|
||||
type: template
|
||||
json_attributes_topic:
|
||||
description: The MQTT topic subscribed to receive a JSON dictionary payload and then set as sensor attributes. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-topic-configuration) documentation.
|
||||
required: false
|
||||
type: string
|
||||
name:
|
||||
description: The name of the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
default: MQTT Vacuum
|
||||
object_id:
|
||||
description: Used instead of `name` for automatic generation of `entity_id`
|
||||
required: false
|
||||
type: string
|
||||
payload_available:
|
||||
description: The payload that represents the available state.
|
||||
required: false
|
||||
type: string
|
||||
default: online
|
||||
payload_clean_spot:
|
||||
description: The payload to send to the `command_topic` to begin a spot cleaning cycle.
|
||||
required: false
|
||||
type: string
|
||||
default: clean_spot
|
||||
payload_locate:
|
||||
description: The payload to send to the `command_topic` to locate the vacuum (typically plays a song).
|
||||
required: false
|
||||
type: string
|
||||
default: locate
|
||||
payload_not_available:
|
||||
description: The payload that represents the unavailable state.
|
||||
required: false
|
||||
type: string
|
||||
default: offline
|
||||
payload_return_to_base:
|
||||
description: The payload to send to the `command_topic` to tell the vacuum to return to base.
|
||||
required: false
|
||||
type: string
|
||||
default: return_to_base
|
||||
payload_start_pause:
|
||||
description: The payload to send to the `command_topic` to start or pause the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
default: start_pause
|
||||
payload_stop:
|
||||
description: The payload to send to the `command_topic` to stop the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
default: stop
|
||||
payload_turn_off:
|
||||
description: The payload to send to the `command_topic` to turn the vacuum off.
|
||||
required: false
|
||||
type: string
|
||||
default: turn_off
|
||||
payload_turn_on:
|
||||
description: The payload to send to the `command_topic` to begin the cleaning cycle.
|
||||
required: false
|
||||
type: string
|
||||
default: turn_on
|
||||
qos:
|
||||
description: The maximum QoS level of the state topic.
|
||||
required: false
|
||||
type: integer
|
||||
default: 0
|
||||
retain:
|
||||
description: If the published message should have the retain flag on or not.
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
schema:
|
||||
description: The schema to use. Must be `legacy` or omitted to select the legacy schema.
|
||||
required: false
|
||||
type: string
|
||||
default: legacy
|
||||
send_command_topic:
|
||||
description: The MQTT topic to publish custom commands to the vacuum.
|
||||
required: false
|
||||
type: string
|
||||
set_fan_speed_topic:
|
||||
description: The MQTT topic to publish commands to control the vacuum's fan speed.
|
||||
required: false
|
||||
type: string
|
||||
supported_features:
|
||||
description: List of features that the vacuum supports (possible values are `turn_on`, `turn_off`, `pause`, `stop`, `return_home`, `battery`, `status`, `locate`, `clean_spot`, `fan_speed`, `send_command`).
|
||||
required: false
|
||||
type: [string, list]
|
||||
default: "`turn_on`, `turn_off`, `stop`, `return_home`, `status`, `battery`, `clean_spot`"
|
||||
unique_id:
|
||||
description: An ID that uniquely identifies this vacuum. If two vacuums have the same unique ID, Home Assistant will raise an exception.
|
||||
required: false
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
### Legacy configuration example
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
mqtt:
|
||||
vacuum:
|
||||
- name: "MQTT Vacuum"
|
||||
supported_features:
|
||||
- turn_on
|
||||
- turn_off
|
||||
- pause
|
||||
- stop
|
||||
- return_home
|
||||
- battery
|
||||
- status
|
||||
- locate
|
||||
- clean_spot
|
||||
- fan_speed
|
||||
- send_command
|
||||
command_topic: "vacuum/command"
|
||||
battery_level_topic: "vacuum/state"
|
||||
battery_level_template: "{{ value_json.battery_level }}"
|
||||
charging_topic: "vacuum/state"
|
||||
charging_template: "{{ value_json.charging }}"
|
||||
cleaning_topic: "vacuum/state"
|
||||
cleaning_template: "{{ value_json.cleaning }}"
|
||||
docked_topic: "vacuum/state"
|
||||
docked_template: "{{ value_json.docked }}"
|
||||
error_topic: "vacuum/state"
|
||||
error_template: "{{ value_json.error }}"
|
||||
fan_speed_topic: "vacuum/state"
|
||||
fan_speed_template: "{{ value_json.fan_speed }}"
|
||||
set_fan_speed_topic: "vacuum/set_fan_speed"
|
||||
fan_speed_list:
|
||||
- min
|
||||
- medium
|
||||
- high
|
||||
- max
|
||||
send_command_topic: "vacuum/send_command"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Legacy MQTT Protocol
|
||||
|
||||
The above configuration for this integration expects an MQTT protocol like the following.
|
||||
See also [Shared MQTT Protocol](#shared-mqtt-protocol).
|
||||
|
||||
#### Legacy Basic Commands
|
||||
|
||||
MQTT topic: `vacuum/command`
|
||||
|
||||
Possible MQTT payloads:
|
||||
|
||||
- `turn_on` - Begin cleaning
|
||||
- `turn_off` - Turn the Vacuum off
|
||||
- `return_to_base` - Return to base/dock
|
||||
- `stop` - Stop the Vacuum
|
||||
- `clean_spot` - Initialize a spot cleaning cycle
|
||||
- `locate` - Locate the vacuum (typically by playing a song)
|
||||
- `start_pause` - Toggle the vacuum between cleaning and stopping
|
||||
|
||||
#### Status/Sensor Updates
|
||||
|
||||
MQTT topic: `vacuum/state`
|
||||
|
||||
MQTT payload:
|
||||
|
||||
```json
|
||||
{
|
||||
"battery_level": 61,
|
||||
"docked": true,
|
||||
"cleaning": false,
|
||||
"charging": true,
|
||||
"fan_speed": "off",
|
||||
"error": "Error message"
|
||||
}
|
||||
```
|
||||
|
||||
## State Configuration
|
||||
|
||||
State MQTT vacuum configuration section.
|
||||
MQTT vacuum configuration section.
|
||||
|
||||
{% configuration %}
|
||||
availability:
|
||||
@ -488,7 +177,7 @@ retain:
|
||||
type: boolean
|
||||
default: false
|
||||
schema:
|
||||
description: The schema to use. Must be `state` to select the state schema.
|
||||
description: The schema to use. Must be `state`.
|
||||
required: false
|
||||
type: string
|
||||
default: legacy
|
||||
@ -515,7 +204,7 @@ unique_id:
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
### State configuration example
|
||||
## Configuration example
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
@ -545,12 +234,11 @@ mqtt:
|
||||
send_command_topic: "vacuum/send_command"
|
||||
```
|
||||
|
||||
### State MQTT Protocol
|
||||
## MQTT Protocol
|
||||
|
||||
The above configuration for this integration expects an MQTT protocol like the following.
|
||||
See also [Shared MQTT Protocol](#shared-mqtt-protocol).
|
||||
The configuration for this integration expects an MQTT protocol like the following.
|
||||
|
||||
#### State Basic Commands
|
||||
### Basic Commands
|
||||
|
||||
MQTT topic: `vacuum/command`
|
||||
|
||||
@ -563,82 +251,6 @@ Possible MQTT payloads:
|
||||
- `clean_spot` - Initialize a spot cleaning cycle
|
||||
- `locate` - Locate the vacuum (typically by playing a song)
|
||||
|
||||
#### Send Custom Command
|
||||
|
||||
Vacuum send_command allows three parameters:
|
||||
|
||||
- entity_id
|
||||
- command
|
||||
- params - optional
|
||||
|
||||
If params are not provided it sends command as payload to MQTT send_command topic.
|
||||
If params are provided service sends JSON as payload with such structure:
|
||||
|
||||
```json
|
||||
{
|
||||
'command': 'command',
|
||||
'param1-key': 'param1-value'
|
||||
}
|
||||
```
|
||||
|
||||
Service trigger example:
|
||||
|
||||
```yaml
|
||||
- alias: "Push command based on sensor"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.sensor
|
||||
action:
|
||||
service: vacuum.send_command
|
||||
target:
|
||||
entity_id: vacuum.vacuum_entity
|
||||
data:
|
||||
command: "custom_command"
|
||||
params:
|
||||
- key: value
|
||||
```
|
||||
|
||||
MQTT topic: `vacuum/send_command`
|
||||
|
||||
#### Status/Sensor Updates
|
||||
|
||||
MQTT topic: `vacuum/state`
|
||||
|
||||
MQTT payload:
|
||||
|
||||
```json
|
||||
{
|
||||
"battery_level": 61,
|
||||
"state": "docked",
|
||||
"fan_speed": "off"
|
||||
}
|
||||
```
|
||||
|
||||
State has to be one of vacuum states supported by Home Assistant:
|
||||
|
||||
- cleaning,
|
||||
- docked,
|
||||
- paused,
|
||||
- idle,
|
||||
- returning,
|
||||
- error.
|
||||
|
||||
## Shared MQTT Protocol
|
||||
|
||||
The configuration for this integration expects an MQTT protocol like the following.
|
||||
These services are identical for both - legacy and state vacuum.
|
||||
|
||||
### Set Fan Speed
|
||||
|
||||
MQTT topic: `vacuum/set_fan_speed`
|
||||
|
||||
Possible MQTT payloads:
|
||||
|
||||
- `min` - Minimum fan speed
|
||||
- `medium` - Medium fan speed
|
||||
- `high` - High fan speed
|
||||
- `max` - Max fan speed
|
||||
|
||||
### Send Custom Command
|
||||
|
||||
Vacuum send_command allows three parameters:
|
||||
@ -676,6 +288,40 @@ Service trigger example:
|
||||
|
||||
MQTT topic: `vacuum/send_command`
|
||||
|
||||
### Status/Sensor Updates
|
||||
|
||||
MQTT topic: `vacuum/state`
|
||||
|
||||
MQTT payload:
|
||||
|
||||
```json
|
||||
{
|
||||
"battery_level": 61,
|
||||
"state": "docked",
|
||||
"fan_speed": "off"
|
||||
}
|
||||
```
|
||||
|
||||
State has to be one of vacuum states supported by Home Assistant:
|
||||
|
||||
- cleaning,
|
||||
- docked,
|
||||
- paused,
|
||||
- idle,
|
||||
- returning,
|
||||
- error.
|
||||
|
||||
### Set Fan Speed
|
||||
|
||||
MQTT topic: `vacuum/set_fan_speed`
|
||||
|
||||
Possible MQTT payloads:
|
||||
|
||||
- `min` - Minimum fan speed
|
||||
- `medium` - Medium fan speed
|
||||
- `high` - High fan speed
|
||||
- `max` - Max fan speed
|
||||
|
||||
## Usage examples
|
||||
|
||||
### Usage with cloudless Xiaomi vacuums
|
||||
|
@ -57,7 +57,7 @@ To run a Z-Wave network, you need the following elements:
|
||||
|
||||
### Setting up a Z-Wave JS server
|
||||
|
||||
The easiest way to get started is by using the built-in Z-Wave JS add-on in Home Assistant.
|
||||
If you are running Home Assistant Operating System or Home Assistant Supervised, the easiest way to get started is by using the built-in Z-Wave JS add-on in Home Assistant.
|
||||
|
||||
For other ways to setup a Z-Wave server, refer to the [advanced installation instructions](#advanced-installation-instructions).
|
||||
|
||||
|
8
source/common-tasks/general.markdown
Normal file
8
source/common-tasks/general.markdown
Normal file
@ -0,0 +1,8 @@
|
||||
---
|
||||
title: "Common tasks - installation independent"
|
||||
description: "Common tasks"
|
||||
installation_name: "Installation independent"
|
||||
---
|
||||
This section provides tasks that do not depend on a specific Home Assistant installation type or a specific integration. They may be referenced in other procedures.
|
||||
|
||||
{% include common-tasks/enable_entities.md %}
|
Binary file not shown.
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 12 KiB |
BIN
source/images/screenshots/enable_entities_01.png
Normal file
BIN
source/images/screenshots/enable_entities_01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
BIN
source/images/screenshots/enable_entities_03.png
Normal file
BIN
source/images/screenshots/enable_entities_03.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 67 KiB |
Loading…
x
Reference in New Issue
Block a user