mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-23 17:27:19 +00:00
Merge branch 'current' into next
This commit is contained in:
commit
23c87cc35e
@ -66,7 +66,7 @@ GEM
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.3)
|
||||
listen (3.4.1)
|
||||
listen (3.5.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
|
160
package-lock.json
generated
160
package-lock.json
generated
@ -104,9 +104,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/ast-tester": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-2.3.3.tgz",
|
||||
"integrity": "sha512-FNV4B0+kbvVuxvKEEf3NdPtArile940wtJeQx6flw6SLabEYDP+ZVwg7FVO17zopyIsOPmT4yPOJbt93BnDHng==",
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-2.3.4.tgz",
|
||||
"integrity": "sha512-2gIsnJ1Dmr5jjF+u/vusNRqk2bJi0WwwbjP9WV/op51DhDTi7BUNjVSiZtcP9NVxidvs51XNEg+EMTRoKP3Msg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -121,9 +121,9 @@
|
||||
}
|
||||
},
|
||||
"@textlint/ast-traverse": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-2.3.3.tgz",
|
||||
"integrity": "sha512-L+iVejKaethlUKvFyQtBs373GAA5LJCkraAdbL6F6cOiCviKqpFf9HQmdCQAyYOGrjs30LgpsOLsZACgBJ7uOg==",
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-2.3.4.tgz",
|
||||
"integrity": "sha512-NcjPXCvP8r4D2/azeQhwjPvh2+099I9RRBUrg6IpMfTW4IUUJb4BwZOPgjW+XRIVc71Dhgm82VSIagDL90FYcg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -138,22 +138,22 @@
|
||||
}
|
||||
},
|
||||
"@textlint/feature-flag": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-3.3.3.tgz",
|
||||
"integrity": "sha512-YLbKeckvIu4a+IZv/nHW+BGyYZBdCSJxtKyEp8HTfKam8AC26bdU0ryzO7xmmHN0FdPNwAn67AfZTWssKcWUVg==",
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-3.3.4.tgz",
|
||||
"integrity": "sha512-ULAqdD2y1sPAhbkaMjS2fltrZYCNQGsNDv/NQWFsCmDpQ1R8kxoUaTiXpebTM+nVuyvU5GfdkxhHyMarPIjmYw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"map-like": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"@textlint/fixer-formatter": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-3.3.3.tgz",
|
||||
"integrity": "sha512-4UF1mNFQHB5iDFNFBSK3ss8c5NiAgGxLXijATXJ3SSjhiTb3sQSX3RcB1wMwI0/gcizRm3r5j16Kelv8IOrbzA==",
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-3.3.4.tgz",
|
||||
"integrity": "sha512-H4i+N+uN7EiI5vRnfRIccFc5yekNHnO8795fiOK2TZPb6SzY3iwLOGZ2rDKvgu7ZKdyGW945w3T0elUF3Fkr5A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/module-interop": "^1.2.3",
|
||||
"@textlint/types": "^1.5.3",
|
||||
"@textlint/module-interop": "^1.2.4",
|
||||
"@textlint/types": "^1.5.4",
|
||||
"chalk": "^1.1.3",
|
||||
"debug": "^4.3.1",
|
||||
"diff": "^4.0.2",
|
||||
@ -171,9 +171,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/types": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz",
|
||||
"integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==",
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.4.tgz",
|
||||
"integrity": "sha512-bhSrOjW8AFSa/xf6lYZ2akE0j+4O/WEAA2S/R8RrjNMkA5Az2j57mxPNpqMhEeyHDkpzN/coIlqUwgYvcJHv1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -264,18 +264,18 @@
|
||||
}
|
||||
},
|
||||
"@textlint/kernel": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-3.4.3.tgz",
|
||||
"integrity": "sha512-kQUjkVC6kXVuTxVqhPuxgjEaONDH1hliRgi5tMyxGDD3c3IOJVeatutL9vqpbAMgJL7blyTaWSdOJdsqZfCW3g==",
|
||||
"version": "3.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-3.4.4.tgz",
|
||||
"integrity": "sha512-ro9TPnE16C6gtKkY3aOjTs8ZfzAxdXLCV9JD4BuV5P+xBiiu9NdiE2Hwm3LyEGQjMxaKnXjbm/DTCAxA4gz0Dg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2",
|
||||
"@textlint/ast-tester": "^2.3.3",
|
||||
"@textlint/ast-traverse": "^2.3.3",
|
||||
"@textlint/feature-flag": "^3.3.3",
|
||||
"@textlint/source-code-fixer": "^3.4.3",
|
||||
"@textlint/types": "^1.5.3",
|
||||
"@textlint/utils": "^1.2.3",
|
||||
"@textlint/ast-tester": "^2.3.4",
|
||||
"@textlint/ast-traverse": "^2.3.4",
|
||||
"@textlint/feature-flag": "^3.3.4",
|
||||
"@textlint/source-code-fixer": "^3.4.4",
|
||||
"@textlint/types": "^1.5.4",
|
||||
"@textlint/utils": "^1.2.4",
|
||||
"debug": "^4.3.1",
|
||||
"deep-equal": "^1.1.1",
|
||||
"map-like": "^2.0.0",
|
||||
@ -289,9 +289,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/types": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz",
|
||||
"integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==",
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.4.tgz",
|
||||
"integrity": "sha512-bhSrOjW8AFSa/xf6lYZ2akE0j+4O/WEAA2S/R8RrjNMkA5Az2j57mxPNpqMhEeyHDkpzN/coIlqUwgYvcJHv1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -309,15 +309,15 @@
|
||||
}
|
||||
},
|
||||
"@textlint/linter-formatter": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-3.3.3.tgz",
|
||||
"integrity": "sha512-njm1VwfG1lVuc9TnzSecNaghRtIAdQVXULc1wHlBoingT/w+bz/SgPvw3eec/rUfzde6ms3O4dFAG3zPNdRoIQ==",
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-3.3.4.tgz",
|
||||
"integrity": "sha512-k1lyvR+w7ctwr5dWhMVRTKk19GH99BAO2dLk8ZS0ZcYyKqKAKu6Iyb1cWEg/u3dT3KFbWwoegnAelfz5828SHQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@azu/format-text": "^1.0.1",
|
||||
"@azu/style-format": "^1.0.0",
|
||||
"@textlint/module-interop": "^1.2.3",
|
||||
"@textlint/types": "^1.5.3",
|
||||
"@textlint/module-interop": "^1.2.4",
|
||||
"@textlint/types": "^1.5.4",
|
||||
"chalk": "^1.1.3",
|
||||
"concat-stream": "^1.6.2",
|
||||
"debug": "^4.3.1",
|
||||
@ -340,9 +340,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/types": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz",
|
||||
"integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==",
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.4.tgz",
|
||||
"integrity": "sha512-bhSrOjW8AFSa/xf6lYZ2akE0j+4O/WEAA2S/R8RrjNMkA5Az2j57mxPNpqMhEeyHDkpzN/coIlqUwgYvcJHv1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -479,9 +479,9 @@
|
||||
}
|
||||
},
|
||||
"@textlint/markdown-to-ast": {
|
||||
"version": "6.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.3.3.tgz",
|
||||
"integrity": "sha512-CG8igvwlmcHb/d2zXDXchXgqofnDsxQDYOMpsk4zv1EN8PL5ycijQgmKJ0yB0ZxFduv0AR22rnJvPtB4ymzCyQ==",
|
||||
"version": "6.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.3.4.tgz",
|
||||
"integrity": "sha512-LLScbDRXov1l4U4OCLJ5clu9eWNonBG+rhuArwYAHpf0hwIoNoETfAQvrNtXZG/NZ96fdWv4PLtaN6dA4ldRdQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2",
|
||||
@ -597,18 +597,18 @@
|
||||
}
|
||||
},
|
||||
"@textlint/module-interop": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-1.2.3.tgz",
|
||||
"integrity": "sha512-BHpF/NSOWZIBJVvwe1Aww9k7lh04lr8xrFpoDfmdp3QolrAakdd5xTso2U1kJpWeZatQgh4naSI2X7IUEM2b2Q==",
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-1.2.4.tgz",
|
||||
"integrity": "sha512-/wUKvDbBEujrhpcuD7Et4Mcicm3SG2oAe/tyMruLxSJ86umGxd34dEcHRON8fJzou9qyt0gFoczcypd4k3hJow==",
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/source-code-fixer": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-3.4.3.tgz",
|
||||
"integrity": "sha512-jXuVMICfnTkg8GKPpuL2gLgUt2IicgKIOAQHw8BN9vGRstdPDth37Qc9iIjM6b68TPbRnDLb7GCENdXYEQKpcg==",
|
||||
"version": "3.4.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-3.4.4.tgz",
|
||||
"integrity": "sha512-GDHVin2EJ9PGJ33VMGlqtPcvUlY+pkTbaWs4jWv8oBaEK8UUBzS5ZpEc4xi7Xp5vIXnVsCSLKNC6bgvR9X/AoQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/types": "^1.5.3",
|
||||
"@textlint/types": "^1.5.4",
|
||||
"debug": "^4.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
@ -619,9 +619,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/types": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz",
|
||||
"integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==",
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.4.tgz",
|
||||
"integrity": "sha512-bhSrOjW8AFSa/xf6lYZ2akE0j+4O/WEAA2S/R8RrjNMkA5Az2j57mxPNpqMhEeyHDkpzN/coIlqUwgYvcJHv1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -639,9 +639,9 @@
|
||||
}
|
||||
},
|
||||
"@textlint/text-to-ast": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-3.3.3.tgz",
|
||||
"integrity": "sha512-Y1hRnI+PoCbomQZtnog31DCUgz/diW4X72F7x/bn/VkUg6xq55GAsn2OB4qWvduQMrA+71lOfBMK3tcGJ8Q4Mg==",
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-3.3.4.tgz",
|
||||
"integrity": "sha512-oDwGNQCAo7ROnHqaksPEogf8fxXGU3Z61C6NEv0n9vEWEkUX9oUVX4c9kh5UieZL5nN/xIdzVc3TrXywkkOK3g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
@ -656,21 +656,21 @@
|
||||
}
|
||||
},
|
||||
"@textlint/textlint-plugin-markdown": {
|
||||
"version": "5.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-5.3.3.tgz",
|
||||
"integrity": "sha512-AnScn1Qt7NMw3K0wNUtJYyGYr6DLe/wsnQbtLd3xjS+6Ky8C+6Ohd+ms1DKH0vRztc8huM/wmV7n5Bx+1qBevA==",
|
||||
"version": "5.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-5.3.4.tgz",
|
||||
"integrity": "sha512-g8KKuwhzzlRjvKrpq3SbGc+JJMAJoy5Xp0Ibvq7QKgNVxwN/f5WtmrJc8CdgFG7++jgtkDPlofz0c9xG63xKwQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/markdown-to-ast": "^6.3.3"
|
||||
"@textlint/markdown-to-ast": "^6.3.4"
|
||||
}
|
||||
},
|
||||
"@textlint/textlint-plugin-text": {
|
||||
"version": "4.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-4.3.3.tgz",
|
||||
"integrity": "sha512-NKbCbiSYA8mdg74HR+GQDO9q7RRHimnQ88YL0vBtP2oq2x1HZccq0mHlw6dlL775YardBAoHu/qxyJbkxSXBgw==",
|
||||
"version": "4.3.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-4.3.4.tgz",
|
||||
"integrity": "sha512-ZtctKFR8V9mIZAMibS97xPWlt2lViizIRAy4oDaKCnxAwJ0uAjxm/OlHHdaFwNydGaEDtN60mcmarDqOOAZIiA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/text-to-ast": "^3.3.3"
|
||||
"@textlint/text-to-ast": "^3.3.4"
|
||||
}
|
||||
},
|
||||
"@textlint/types": {
|
||||
@ -683,9 +683,9 @@
|
||||
}
|
||||
},
|
||||
"@textlint/utils": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-1.2.3.tgz",
|
||||
"integrity": "sha512-jN0pbdOJkIAuqyBqsDvk3FYP6BF+YLMlVzE8xbjDhpw7dpr36iEGKGIuRQJZ0+8nq3CPY7W0EcK6o63QoPuPvQ==",
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-1.2.4.tgz",
|
||||
"integrity": "sha512-FREWc8n6bJFsKehtUlHPtbqnXULWhdnlazqWiHMjiBtcxUfD+1kY3P7PNGbChdzeZGmwBkgFQyGkok8bAGnZOw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/mdast": {
|
||||
@ -2534,22 +2534,22 @@
|
||||
"dev": true
|
||||
},
|
||||
"textlint": {
|
||||
"version": "11.8.3",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-11.8.3.tgz",
|
||||
"integrity": "sha512-UrknrF3Sgkksq9aI3Y0gs4FBRgAy2oaonAhLOufWs7kA0ulmj3FVYGPA5UPVEKQHUWbnuOaqDteLDs+/9hRc9g==",
|
||||
"version": "11.9.0",
|
||||
"resolved": "https://registry.npmjs.org/textlint/-/textlint-11.9.0.tgz",
|
||||
"integrity": "sha512-a9ZCfCOcOTNxEQsRbYBDFNu8m5cjJC+znnXCBommGSdP0W+9QmwZnkralwpxrVhRgWvLz+QyuDXtLBZcqfDmHg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2",
|
||||
"@textlint/ast-traverse": "^2.3.3",
|
||||
"@textlint/feature-flag": "^3.3.3",
|
||||
"@textlint/fixer-formatter": "^3.3.3",
|
||||
"@textlint/kernel": "^3.4.3",
|
||||
"@textlint/linter-formatter": "^3.3.3",
|
||||
"@textlint/module-interop": "^1.2.3",
|
||||
"@textlint/textlint-plugin-markdown": "^5.3.3",
|
||||
"@textlint/textlint-plugin-text": "^4.3.3",
|
||||
"@textlint/types": "^1.5.3",
|
||||
"@textlint/utils": "^1.2.3",
|
||||
"@textlint/ast-traverse": "^2.3.4",
|
||||
"@textlint/feature-flag": "^3.3.4",
|
||||
"@textlint/fixer-formatter": "^3.3.4",
|
||||
"@textlint/kernel": "^3.4.4",
|
||||
"@textlint/linter-formatter": "^3.3.4",
|
||||
"@textlint/module-interop": "^1.2.4",
|
||||
"@textlint/textlint-plugin-markdown": "^5.3.4",
|
||||
"@textlint/textlint-plugin-text": "^4.3.4",
|
||||
"@textlint/types": "^1.5.4",
|
||||
"@textlint/utils": "^1.2.4",
|
||||
"debug": "^4.3.1",
|
||||
"deep-equal": "^1.1.1",
|
||||
"file-entry-cache": "^5.0.1",
|
||||
@ -2577,9 +2577,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@textlint/types": {
|
||||
"version": "1.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz",
|
||||
"integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==",
|
||||
"version": "1.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.4.tgz",
|
||||
"integrity": "sha512-bhSrOjW8AFSa/xf6lYZ2akE0j+4O/WEAA2S/R8RrjNMkA5Az2j57mxPNpqMhEeyHDkpzN/coIlqUwgYvcJHv1A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@textlint/ast-node-types": "^4.4.2"
|
||||
|
@ -10,7 +10,7 @@
|
||||
"remark-lint-fenced-code-flag": "^2.0.1",
|
||||
"remark-lint-no-shell-dollars": "^2.0.2",
|
||||
"remark-stringify": "^9.0.1",
|
||||
"textlint": "^11.8.3",
|
||||
"textlint": "^11.9.0",
|
||||
"textlint-rule-common-misspellings": "^1.0.1",
|
||||
"textlint-rule-terminology": "^2.1.5"
|
||||
},
|
||||
|
@ -31,3 +31,7 @@ message: Sensor value greater than 10
|
||||
|
||||
Automation created or edited via the user interface, are activated immediately
|
||||
after save the automation.
|
||||
|
||||
## Troubleshooting missing automations
|
||||
|
||||
When you're creating automations using the GUI and they don't appear in the UI, make sure that you add back `automation: !include automations.yaml` from the default configuration to your `configuration.yaml`.
|
||||
|
@ -1,23 +1,24 @@
|
||||
## Enable I2C
|
||||
|
||||
Home Assistant using the Home Assistant Operating System is a managed environment, which means you can't use existing methods to enable the I2C bus on a Raspberry Pi.
|
||||
Home Assistant using the Home Assistant Operating System which is a managed environment, which means you can't use existing methods to enable the I2C bus on a Raspberry Pi. In order to use I2C devices you will have to
|
||||
- Enable I2C for the Home Assistant Operating System
|
||||
- Setup I2C devices e.g. sensors
|
||||
|
||||
### Step by step instructions
|
||||
### Enable I2C with an SD card reader
|
||||
|
||||
#### Access the boot partition
|
||||
|
||||
You will need:
|
||||
|
||||
- SD card reader
|
||||
- SD card with Home Assistant Operating System flashed on it
|
||||
|
||||
#### Step 1 - Access the Home Assistant Operating System boot partition
|
||||
|
||||
Shutdown/turn-off your Home Assistant installation and unplug the SD card.
|
||||
Plug the SD card into an SD card reader and find a drive/file system named
|
||||
`hassos-boot`. The file system might be shown/mounted automatically. If not,
|
||||
use your operating systems disk management utility to find the SD card reader
|
||||
and make sure the first partition is available.
|
||||
|
||||
#### Step 2 - Add files to enable I2C
|
||||
#### Add files to enable I2C
|
||||
|
||||
- In the root of the `hassos-boot` partition, add a new folder called `CONFIG`.
|
||||
- In the `CONFIG` folder, add another new folder called `modules`.
|
||||
@ -32,7 +33,7 @@ and make sure the first partition is available.
|
||||
dtparam=i2c_arm=on
|
||||
```
|
||||
|
||||
#### Step 3 - Start with the new configuration
|
||||
#### Start with the new OS configuration
|
||||
|
||||
- Insert the SD card back into your Raspberry Pi.
|
||||
- On startup, the `hassos-config.service` will automatically pickup the new
|
||||
@ -40,9 +41,7 @@ and make sure the first partition is available.
|
||||
- Another reboot might be necessary to make sure the just imported `rpi-i2c.conf` is
|
||||
present at boot time.
|
||||
|
||||
The I2C devices should now be present under /dev.
|
||||
|
||||
### From Home Assistant Operating System Terminal
|
||||
### Enable I2C via Home Assistant Operating System Terminal
|
||||
|
||||
Alternatively, by attaching a keyboard and screen to your device, you can access the physical terminal to the Home Assistant Operating System.
|
||||
|
||||
@ -62,3 +61,9 @@ You can enable i2c via this terminal:
|
||||
sync
|
||||
reboot
|
||||
```
|
||||
### Troubleshooting
|
||||
|
||||
After rebooting the host there should be `i2c-0` and similar device files in `/dev`. If such device files are missing, enabling I2C failed for some reason. You can check the status of I2C kernel modules by using `lsmod | grep i2c` in the terminal. If they are loaded, you should find at least the entry `i2c_dev`. Active usage of the modules is indicated by a number, e.g. `i2c_dev 20480 2` would indicate two active I2C device files.
|
||||
|
||||
An active I2C can also be check with a multi meter showing 3.3 V on the I2C pins GPIO2 and GPIO3.
|
||||
|
||||
|
@ -80,7 +80,7 @@ The next time you run or restart Home Assistant, you should find a new notificat
|
||||
|
||||
## Calendar Configuration
|
||||
|
||||
Editing the `google_calendars.yaml` file.
|
||||
With every restart all calendars of the configured Google account will get pulled and added to the `google_calendars.yaml` and preconfigured as a single entity. By setting the 'track' variable to `true` the calendar will get monitored for new events which can be used for automations and its content is shown on the 'Calendar' dashboard (mind 'max_results' is set to 5 by default).
|
||||
|
||||
A basic entry for a single calendar looks like:
|
||||
|
||||
@ -90,19 +90,38 @@ A basic entry for a single calendar looks like:
|
||||
- device_id: test_everything
|
||||
name: Give me everything
|
||||
track: true
|
||||
max_results: 10
|
||||
```
|
||||
|
||||
From this, we will get a binary sensor `calendar.test_everything` triggered by any event on the calendar and will show the next 10 events on the 'Calendar' dashboard.
|
||||
|
||||
A bit more elaborate configuration:
|
||||
|
||||
```yaml
|
||||
- cal_id: "*****@group.calendar.google.com"
|
||||
entities:
|
||||
- device_id: test_unimportant
|
||||
name: UnImportant Stuff
|
||||
track: true
|
||||
search: "#UnImportant"
|
||||
- device_id: test_important
|
||||
name: Important Stuff
|
||||
track: true
|
||||
search: "#Important"
|
||||
offset: "!!"
|
||||
- device_id: test_unimportant
|
||||
name: UnImportant Stuff
|
||||
track: true
|
||||
search: "#UnImportant"
|
||||
```
|
||||
|
||||
From this we will end up with the binary sensors `calendar.test_unimportant` and `calendar.test_important` which will toggle themselves on/off based on events on the same calendar that match the search value set for each.
|
||||
`calendar.test_unimportant` will toggle for events whose title contain '#UnImportant'
|
||||
`calendar.test_important` will toggle for events whose title contain '#Important'. By using the offset variable an event title containing "#Important !!-10" will toggle the sensor 10 minutes before the event starts.
|
||||
|
||||
<div class='note warning'>
|
||||
|
||||
If you use a `#` sign for `search` then wrap the whole search term in quotes.
|
||||
Otherwise everything following the hash sign would be considered a YAML comment.
|
||||
|
||||
</div>
|
||||
|
||||
{% configuration %}
|
||||
cal_id:
|
||||
description: The Google *generated* unique id for this calendar.
|
||||
@ -153,21 +172,7 @@ entities:
|
||||
default: 5
|
||||
{% endconfiguration %}
|
||||
|
||||
From this we will end up with the binary sensors `calendar.test_unimportant` and
|
||||
`calendar.test_important` which will toggle themselves on/off based on events on
|
||||
the same calendar that match the search value set for each.
|
||||
You'll also have a sensor `calendar.test_everything` that will
|
||||
not filter events out and always show the next event available.
|
||||
|
||||
But what if you only wanted it to toggle based on all events?
|
||||
Just leave out the *search* parameter.
|
||||
|
||||
<div class='note warning'>
|
||||
|
||||
If you use a `#` sign for `search` then wrap the whole search term in quotes.
|
||||
Otherwise everything following the hash sign would be considered a YAML comment.
|
||||
|
||||
</div>
|
||||
|
||||
### Sensor attributes
|
||||
|
||||
|
@ -180,6 +180,18 @@ Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekd
|
||||
|
||||
{% endraw %}
|
||||
|
||||
**Next 4 pm**: 24 hours, from the last 4 pm till the next 4 pm. If it hasn't been 4 pm today, that would be 4 pm yesterday until 4 pm today. If it is already past 4 pm today, it will be 4 pm today until 4 pm tomorrow. When changing the start time, then add or subtract to the 8-hour buffer to match the next midnight.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
end: "{{ (now().replace(minute=0,second=0) + timedelta(hours=8)).replace(hour=16) }}"
|
||||
duration:
|
||||
hours: 24
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
**Last 30 days**: ends today at 00:00, lasts 30 days. Easy one.
|
||||
|
||||
{% raw %}
|
||||
|
@ -516,8 +516,7 @@ The example configuration entry below create two request to your local InfluxDB
|
||||
sensor:
|
||||
platform: influxdb
|
||||
host: localhost
|
||||
|
||||
username: home-assistant
|
||||
username: home-assistant
|
||||
password: password
|
||||
queries:
|
||||
- name: last value of foo
|
||||
|
@ -68,14 +68,13 @@ In order to make use of the various platforms that KNX offers you will need to a
|
||||
|
||||
```yaml
|
||||
knx:
|
||||
binary_sensor: !include knx_binary_sensor.yaml
|
||||
switch: !include knx_switch.yaml
|
||||
# configure platforms directly in configuration.yaml
|
||||
binary_sensor:
|
||||
- name: "My first binary sensor"
|
||||
state_address: "1/2/3"
|
||||
# etc...
|
||||
# or outsource platform configuration to separate files
|
||||
sensor: !include knx_sensor.yaml
|
||||
cover: !include knx_cover.yaml
|
||||
light: !include knx_light.yaml
|
||||
climate: !include knx_climate.yaml
|
||||
notify: !include knx_notify.yaml
|
||||
scene: !include knx_scene.yaml
|
||||
```
|
||||
|
||||
Please see the dedicated platform sections below about how to configure them correctly.
|
||||
@ -143,6 +142,7 @@ Explicit connection via KNX/IP routing. This requires multicast communication to
|
||||
|
||||
```yaml
|
||||
knx:
|
||||
routing:
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -284,27 +284,27 @@ KNX integration is able to expose entity states or attributes to KNX bus. The in
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
expose:
|
||||
- type: "temperature"
|
||||
entity_id: "sensor.owm_temperature"
|
||||
- type: temperature
|
||||
entity_id: sensor.owm_temperature
|
||||
address: "0/0/2"
|
||||
- type: "string"
|
||||
- type: string
|
||||
address: "0/6/4"
|
||||
entity_id: "sensor.owm_weather"
|
||||
- type: "binary"
|
||||
entity_id: "binary_sensor.kitchen_window"
|
||||
entity_id: sensor.owm_weather
|
||||
- type: binary
|
||||
entity_id: binary_sensor.kitchen_window
|
||||
address: "0/6/5"
|
||||
- type: "binary"
|
||||
entity_id: "light.office"
|
||||
- type: binary
|
||||
entity_id: light.office
|
||||
address: "0/3/0"
|
||||
default: false
|
||||
- type: "percentU8"
|
||||
entity_id: "light.office"
|
||||
attribute: "brightness"
|
||||
- type: percentU8
|
||||
entity_id: light.office
|
||||
attribute: brightness
|
||||
default: 0
|
||||
address: "0/3/1"
|
||||
- type: "time"
|
||||
- type: time
|
||||
address: "0/0/1"
|
||||
- type: "datetime"
|
||||
- type: datetime
|
||||
address: "0/0/23"
|
||||
```
|
||||
|
||||
@ -344,7 +344,7 @@ Binary sensors are read-only. To write to the KNX bus configure an exposure [KNX
|
||||
```yaml
|
||||
knx:
|
||||
binary_sensor:
|
||||
- name: sensor1
|
||||
- name: "Sensor 1"
|
||||
state_address: "6/0/2"
|
||||
```
|
||||
|
||||
@ -398,7 +398,7 @@ Let's pretend you have a binary sensor with the name `Livingroom.Switch` and you
|
||||
automation:
|
||||
- trigger:
|
||||
platform: numeric_state
|
||||
entity_id: binary_sensor.Livingroom_Switch
|
||||
entity_id: binary_sensor.livingroom_switch
|
||||
attribute: counter
|
||||
above: 0
|
||||
below: 2
|
||||
@ -411,7 +411,7 @@ automation:
|
||||
service: light.turn_on
|
||||
- trigger:
|
||||
platform: numeric_state
|
||||
entity_id: binary_sensor.Livingroom_Switch
|
||||
entity_id: binary_sensor.livingroom_switch
|
||||
attribute: counter
|
||||
above: 1
|
||||
below: 3
|
||||
@ -457,7 +457,7 @@ To use your KNX thermostats in your installation, add the following lines to you
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
- name: "Kitchen"
|
||||
temperature_address: "5/1/1"
|
||||
setpoint_shift_address: "5/1/2"
|
||||
setpoint_shift_state_address: "5/1/3"
|
||||
@ -472,7 +472,7 @@ Alternatively, if your device has dedicated binary group addresses for frost/nig
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
- name: "Kitchen"
|
||||
temperature_address: "5/1/1"
|
||||
setpoint_shift_address: "5/1/2"
|
||||
setpoint_shift_state_address: "5/1/3"
|
||||
@ -490,7 +490,7 @@ attributes of the climate device to avoid issues with exceeding valid temperatur
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
- name: "Kitchen"
|
||||
temperature_address: "5/1/2"
|
||||
target_temperature_address: "5/1/4"
|
||||
target_temperature_state_address: "5/1/1"
|
||||
@ -514,7 +514,7 @@ Example:
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
- name: "Kitchen"
|
||||
temperature_address: "5/1/1"
|
||||
setpoint_shift_address: "5/1/2"
|
||||
setpoint_shift_state_address: "5/1/3"
|
||||
@ -689,7 +689,7 @@ To use your KNX covers in your installation, add the following lines to your top
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
cover:
|
||||
- name: "Kitchen.Shutter"
|
||||
- name: "Kitchen shutter"
|
||||
move_long_address: "3/0/0"
|
||||
move_short_address: "3/0/1"
|
||||
stop_address: "3/0/4"
|
||||
@ -772,7 +772,7 @@ To use your KNX fan in your installation, add the following lines to your top le
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
fan:
|
||||
- name: "ceiling fan"
|
||||
- name: "Ceiling fan"
|
||||
address: "9/0/1"
|
||||
state_address: "9/0/2"
|
||||
```
|
||||
@ -819,7 +819,7 @@ To use your KNX light in your installation, add the following lines to your top
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
light:
|
||||
- name: "kitchen"
|
||||
- name: "Kitchen"
|
||||
address: "1/0/9"
|
||||
```
|
||||
|
||||
@ -937,14 +937,14 @@ For switching/light actuators that are only controlled by a single group address
|
||||
knx:
|
||||
light:
|
||||
# dimmable light
|
||||
- name: Bedroom-Light-1
|
||||
- name: "Bedroom Light 1"
|
||||
address: "1/0/9"
|
||||
state_address: "1/1/9"
|
||||
brightness_address: "1/2/9"
|
||||
brightness_state_address: "1/3/9"
|
||||
#
|
||||
# RGB light
|
||||
- name: Bathroom-Light-1
|
||||
- name: "Bathroom Light 1"
|
||||
address: "1/0/9"
|
||||
state_address: "1/1/9"
|
||||
brightness_address: "1/2/9"
|
||||
@ -953,7 +953,7 @@ knx:
|
||||
color_state_address: "1/5/9"
|
||||
#
|
||||
# tunable white light
|
||||
- name: Office-Light-1
|
||||
- name: "Office Light 1"
|
||||
address: "1/0/21"
|
||||
state_address: "1/1/21"
|
||||
brightness_address: "1/2/21"
|
||||
@ -965,7 +965,7 @@ knx:
|
||||
max_kelvin: 6200
|
||||
#
|
||||
# actuator without dedicated state communication object
|
||||
- name: Cellar-Light-1
|
||||
- name: "Cellar Light 1"
|
||||
address: "1/0/5"
|
||||
state_address: "1/0/5"
|
||||
```
|
||||
@ -977,7 +977,7 @@ The KNX notify platform allows you to send notifications to [KNX](https://www.kn
|
||||
```yaml
|
||||
knx:
|
||||
notify:
|
||||
- name: Alarm
|
||||
- name: "Alarm"
|
||||
address: "5/1/10"
|
||||
```
|
||||
|
||||
@ -1000,7 +1000,7 @@ The KNX scenes platform allows you to trigger [KNX](https://www.knx.org/) scenes
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
scene:
|
||||
- name: Romantic
|
||||
- name: "Romantic"
|
||||
address: 8/8/8
|
||||
scene_number: 23
|
||||
```
|
||||
@ -1030,9 +1030,9 @@ Sensors are read-only. To write to the KNX bus configure an exposure [KNX Integr
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
sensor:
|
||||
- name: Heating.Valve1
|
||||
- name: "Heating Valve 1"
|
||||
state_address: "2/0/0"
|
||||
type: "percent"
|
||||
type: percent
|
||||
```
|
||||
|
||||
In order to actively read the sensor data from the bus every 30 minutes you can add the following lines to your `configuration.yaml`:
|
||||
@ -1041,9 +1041,9 @@ In order to actively read the sensor data from the bus every 30 minutes you can
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
sensor:
|
||||
- name: Heating.Valve1
|
||||
- name: "Heating Valve 1"
|
||||
state_address: "2/0/0"
|
||||
type: "percent"
|
||||
type: percent
|
||||
sync_state: every 30
|
||||
```
|
||||
|
||||
@ -1076,14 +1076,18 @@ always_callback:
|
||||
|
||||
| KNX DPT | type | size in byte | range | unit |
|
||||
|--------:|-------------------------------|-------------:|:--------------------------:|----------------|
|
||||
| 5 | 1byte_unsigned | 1 | 0 ... 255 | |
|
||||
| 5.001 | percent | 1 | 0 ... 100 | % |
|
||||
| 5.003 | angle | 1 | 0 ... 360 | ° |
|
||||
| 5.004 | percentU8 | 1 | 0 ... 255 | % |
|
||||
| 5.010 | pulse | 1 | 0 ... 255 | |
|
||||
| 5.010 | 1byte_unsigned | 1 | 0 ... 255 | |
|
||||
| 5.005 | decimal_factor | 1 | 0 ... 255 | |
|
||||
| 5.006 | tariff | 1 | 0 ... 254 | |
|
||||
| 5.010 | pulse | 1 | 0 ... 255 | counter pulses |
|
||||
| 6 | 1byte_signed | 1 | -128 ... 127 | |
|
||||
| 6.001 | percentV8 | 1 | -128 ... 127 | % |
|
||||
| 6.010 | counter_pulses | 1 | -128 ... 127 | counter pulses |
|
||||
| 7.001 | 2byte_unsigned | 2 | 0 ... 65535 | pulses |
|
||||
| 7 | 2byte_unsigned | 2 | 0 ... 65535 | |
|
||||
| 7.001 | pulse_2byte | 2 | 0 ... 65535 | pulses |
|
||||
| 7.002 | time_period_msec | 2 | 0 ... 65535 | ms |
|
||||
| 7.003 | time_period_10msec | 2 | 0 ... 65535 | ms |
|
||||
| 7.004 | time_period_100msec | 2 | 0 ... 65535 | ms |
|
||||
@ -1094,14 +1098,17 @@ always_callback:
|
||||
| 7.012 | current | 2 | 0 ... 65535 | mA |
|
||||
| 7.013 | brightness | 2 | 0 ... 65535 | lx |
|
||||
| 7.600 | color_temperature | 2 | 0 ... 65535 | K |
|
||||
| 8.001 | 2byte_signed | 2 | -32768 ... 32767 | pulses |
|
||||
| 8 | 2byte_signed | 2 | -32768 ... 32767 | |
|
||||
| 8.001 | pulse_2byte_signed | 2 | -32768 ... 32767 | pulses |
|
||||
| 8.002 | delta_time_ms | 2 | -32768 ... 32767 | ms |
|
||||
| 8.003 | delta_time_10ms | 2 | -32768 ... 32767 | ms |
|
||||
| 8.004 | delta_time_100ms | 2 | -32768 ... 32767 | ms |
|
||||
| 8.005 | delta_time_sec | 2 | -32768 ... 32767 | s |
|
||||
| 8.006 | delta_time_min | 2 | -32768 ... 32767 | min |
|
||||
| 8.007 | delta_time_hrs | 2 | -32768 ... 32767 | h |
|
||||
| 8.010 | percentV16 | 2 | -32768 ... 32767 | % |
|
||||
| 8.011 | rotation_angle | 2 | -32768 ... 32767 | ° |
|
||||
| 9.* | enthalpy | 2 | -671088.64 ... 670760.96 | H |
|
||||
| 9 | 2byte_float | 2 | -671088.64 ... 670760.96 | |
|
||||
| 9.001 | temperature | 2 | -273 ... 670760 | °C |
|
||||
| 9.002 | temperature_difference_2byte | 2 | -670760 ... 670760 | K |
|
||||
| 9.003 | temperature_a | 2 | -670760 ... 670760 | K/h |
|
||||
@ -1113,6 +1120,7 @@ always_callback:
|
||||
| 9.010 | time_1 | 2 | -670760 ... 670760 | s |
|
||||
| 9.011 | time_2 | 2 | -670760 ... 670760 | ms |
|
||||
| 9.020 | voltage | 2 | -671088.64 ... 670760.96 | mV |
|
||||
| 9.021 | curr | 2 | -671088.64 ... 670760.96 | mA |
|
||||
| 9.022 | power_density | 2 | -671088.64 ... 670760.96 | W/m² |
|
||||
| 9.023 | kelvin_per_percent | 2 | -671088.64 ... 670760.96 | K/% |
|
||||
| 9.024 | power_2byte | 2 | -671088.64 ... 670760.96 | kW |
|
||||
@ -1120,8 +1128,12 @@ always_callback:
|
||||
| 9.026 | rain_amount | 2 | -671088.64 ... 670760.96 | l/m² |
|
||||
| 9.027 | temperature_f | 2 | -459.6 ... 670760 | °F |
|
||||
| 9.028 | wind_speed_kmh | 2 | 0 ... 670760 | km/h |
|
||||
| 12.*** | 4byte_unsigned | 4 | 0 ... 4294967295 | |
|
||||
| 13.*** | 4byte_signed | 4 | -2147483648 ... 2147483647 | |
|
||||
| 9.? | enthalpy | 2 | -671088.64 ... 670760.96 | H |
|
||||
| 12 | 4byte_unsigned | 4 | 0 ... 4294967295 | |
|
||||
| 12.1200 | volume_liquid_litre | 4 | 0 ... 4294967295 | l |
|
||||
| 12.1201 | volume_m3 | 4 | 0 ... 4294967295 | m³ |
|
||||
| 13 | 4byte_signed | 4 | -2147483648 ... 2147483647 | |
|
||||
| 13.001 | pulse_4byte | 4 | -2147483648 ... 2147483647 | pulses |
|
||||
| 13.002 | flow_rate_m3h | 4 | -2147483648 ... 2147483647 | m³/h |
|
||||
| 13.010 | active_energy | 4 | -2147483648 ... 2147483647 | Wh |
|
||||
| 13.011 | apparant_energy | 4 | -2147483648 ... 2147483647 | VAh |
|
||||
@ -1130,8 +1142,8 @@ always_callback:
|
||||
| 13.014 | apparant_energy_kvah | 4 | -2147483648 ... 2147483647 | kVAh |
|
||||
| 13.015 | reactive_energy_kvarh | 4 | -2147483648 ... 2147483647 | kVARh |
|
||||
| 13.100 | long_delta_timesec | 4 | -2147483648 ... 2147483647 | s |
|
||||
| 14 | 4byte_float | 4 | | |
|
||||
| 14.000 | acceleration | 4 | | m/s² |
|
||||
| 14.*** | 4byte_float | 4 | | |
|
||||
| 14.001 | acceleration_angular | 4 | | rad/s² |
|
||||
| 14.002 | activation_energy | 4 | | J/mol |
|
||||
| 14.003 | activity | 4 | | s⁻¹ |
|
||||
@ -1220,14 +1232,14 @@ always_callback:
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
sensor:
|
||||
- name: Heating.Valve1
|
||||
- name: "Heating Valve 1"
|
||||
state_address: "2/0/0"
|
||||
sync_state: init
|
||||
type: "percent"
|
||||
- name: Kitchen.Temperature
|
||||
type: percent
|
||||
- name: "Kitchen Temperature"
|
||||
state_address: "6/2/1"
|
||||
sync_state: every 60
|
||||
type: "temperature"
|
||||
type: temperature
|
||||
```
|
||||
|
||||
## Switch
|
||||
@ -1237,7 +1249,7 @@ The KNX switch platform is used as an interface to switching actuators.
|
||||
```yaml
|
||||
knx:
|
||||
switch:
|
||||
- name: Kitchen.Coffee
|
||||
- name: "Kitchen coffee maker"
|
||||
address: "1/1/6"
|
||||
```
|
||||
|
||||
@ -1275,7 +1287,7 @@ To use your KNX weather station in your installation, add the following lines to
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
weather:
|
||||
- name: "home"
|
||||
- name: "Home"
|
||||
address_temperature: "7/0/0"
|
||||
address_brightness_south: "7/0/1"
|
||||
address_brightness_west: "7/0/2"
|
||||
|
@ -178,7 +178,7 @@ switch:
|
||||
|
||||
{% configuration %}
|
||||
host:
|
||||
description: "The IP address of your myStrom switch, e.g., `http://192.168.1.32`."
|
||||
description: "The IP address of your myStrom switch, e.g., `192.168.1.32`."
|
||||
required: true
|
||||
type: string
|
||||
name:
|
||||
|
@ -39,7 +39,7 @@ hass.bus.fire(name, {"wow": "from a Python script!"})
|
||||
```
|
||||
|
||||
- Start Home Assistant
|
||||
- Call service `python_script.hello_world` with parameters
|
||||
- Call your new {% my developer_call_service service="python_script.hello_world" %} service (with parameters) from the {% my developer_services %}.
|
||||
|
||||
```yaml
|
||||
name: you
|
||||
|
@ -26,7 +26,9 @@ The `roomba` integration allows you to control your [iRobot Roomba](https://www.
|
||||
</p>
|
||||
|
||||
<div class='note'>
|
||||
This platform has been tested and is confirmed to be working with the iRobot Roomba s9+, Roomba 980, Roomba 960, Roomba 890, and Braava jet m6 models, but should also work fine with any Wi-Fi enabled Roomba or Braava like the 690.
|
||||
|
||||
This integration has been tested and confirmed to be working with the iRobot Roomba s9+, Roomba 980, Roomba 960, Roomba 890, and Braava jet m6 models, but should also work fine with any Wi-Fi enabled Roomba or Braava like the 690. For auto-discovery, you will need to initiate a Roomba reboot. For example, by holding the clean button for up to 20 seconds on an i7 or 980. [More information about rebooting your robot](https://homesupport.irobot.com/app/answers/detail/a_id/9087/~/rebooting-or-resetting-your-robot).
|
||||
|
||||
</div>
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
@ -9,13 +9,13 @@ ha_domain: sensor
|
||||
ha_iot_class:
|
||||
---
|
||||
|
||||
Sensors are gathering information about states and conditions.
|
||||
Sensors are a basic platform component in Home Assistant. They monitor the states and conditions of a variety of entities. An entity can be many things. This can include a physical device like a motion sensor that reports the battery level, a web service that retrieves the weather temperature, a built-in function that calculates the sun's elevation relative to your GPS position, or even a custom sensor you may have created to report the free space on your laptop. These are all *things* reporting different types of information.
|
||||
|
||||
Home Assistant currently supports a wide range of sensors. They are able to display information which are provides by Home Assistant directly, are gathered from web services, and, of course, physical devices.
|
||||
Some of these sensors are built-in to Home Assistant, some are created automatically when you add an integration (see this [list](/integrations/#sensor)), and some can be created manually. The [Statistics](/integrations/statistics) and [Template](/integrations/template) sensors are two examples of the last case.
|
||||
|
||||
## Device Class
|
||||
|
||||
The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for sensors:
|
||||
The type of data a sensor returns impacts how it is displayed in the frontend. This is controlled by the sensor's device class designation. Built-in sensors and many created from an integration will have this designation predefined. Those can be modified in the [customize section](/docs/configuration/customizing-devices/). When manually creating a new sensor the device class may be optionally assigned. A full list of available sensor device classes is below:
|
||||
|
||||
- **None**: Generic sensor. This is the default and doesn't need to be set.
|
||||
- **battery**: Percentage of battery that is left.
|
||||
|
@ -1,29 +0,0 @@
|
||||
---
|
||||
title: "Websocket Connections Sensor"
|
||||
description: "Instructions on how to count connected clients within Home Assistant."
|
||||
logo: home-assistant.png
|
||||
ha_category:
|
||||
- Utility
|
||||
- Sensor
|
||||
ha_release: 0.33
|
||||
ha_iot_class: Local Push
|
||||
ha_quality_scale: internal
|
||||
ha_domain: websocket_api
|
||||
---
|
||||
|
||||
The `websocket_api` sensor platform shows how many clients are connected to the stream API.
|
||||
|
||||
## Configuration
|
||||
|
||||
To add the connected clients to your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: websocket_api
|
||||
```
|
||||
|
||||
### Note
|
||||
|
||||
This replaces the previous `api_streams` sensor.
|
||||
The default sensor name is `connected_clients`.
|
@ -28,6 +28,12 @@ ha_platforms:
|
||||
|
||||
Integrate [Shelly devices](https://shelly.cloud) into Home Assistant.
|
||||
|
||||
## Shelly device configuration
|
||||
|
||||
Shelly devices use the `CoIoT` protocol to communicate with integration. For Shelly firmware 1.10.0 or newer, `CoIoT` must be enabled in the device settings. Navigate to the local IP address of your Shelly device, **Internet & Security** >> **ADVANCED - DEVELOPER SETTINGS** and check the box **Enable CoIoT**.
|
||||
|
||||
We recommend using `unicast` for communication. To enable this, enter the local IP address of the Home Assistant server and port `5683` into the **CoIoT peer** field and push **SAVE** button. This is mandatory for Shelly Motion with firmware 1.1.0 or newer. After changing the **CoIoT peer**, the Shelly device needs to be manually restarted.
|
||||
|
||||
<div class="note">
|
||||
Integration is communicating directly with the device; cloud connection is not needed.
|
||||
</div>
|
||||
|
@ -139,6 +139,38 @@ switch:
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Multiple actions for turn_on or turn_off
|
||||
|
||||
This example shows multiple service calls for turn_on and turn_off.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
switch:
|
||||
- platform: template
|
||||
switches:
|
||||
copy:
|
||||
value_template: "{{ is_state('switch.source', 'on') }}"
|
||||
turn_on:
|
||||
- service: switch.turn_on
|
||||
target:
|
||||
entity_id: switch.target
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id: light.target
|
||||
data:
|
||||
brightness_pct: 40
|
||||
turn_off:
|
||||
- service: switch.turn_off
|
||||
target:
|
||||
entity_id: switch.target
|
||||
- service: light.turn_off
|
||||
target:
|
||||
entity_id: light.target
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Sensor and Two Switches
|
||||
|
||||
This example shows a switch that takes its state from a sensor, and uses two
|
||||
|
@ -23,7 +23,7 @@ sensor:
|
||||
- platform: systemmonitor
|
||||
resources:
|
||||
- type: disk_use_percent
|
||||
arg: /home
|
||||
arg: /config
|
||||
- type: memory_free
|
||||
```
|
||||
|
||||
|
@ -69,7 +69,3 @@ forecast_template:
|
||||
required: false
|
||||
type: template
|
||||
{% endconfiguration %}
|
||||
|
||||
## Considerations
|
||||
|
||||
If you are using the state of a integration that takes extra time to load, the Template Weather may get an `unknown` state during startup. This results in error messages in your log file until that integration has completed loading. If you use `is_state()` function in your template, you can avoid this situation.
|
||||
|
@ -26,10 +26,12 @@ For details to use the WebSocket API, please refer to the [WebSocket API documen
|
||||
|
||||
## Track current connections
|
||||
|
||||
The websocket API provides a sensor that will keep track of the number of current connected clients. You can add it by adding the following to your configuration:
|
||||
The WebSocket API provides a sensor that will keep track of the number of currently connected clients. You can add it by adding the following to your configuration:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
platform: websocket_api
|
||||
- platform: websocket_api
|
||||
```
|
||||
|
||||
This will create a sensor called `sensor.connected_clients` whose value is the total number of connected clients.
|
||||
|
@ -77,6 +77,7 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
|
||||
- Texas Instruments based radios with Z-Stack 3.x.x (via the [zigpy-znp](https://github.com/zha-ng/zigpy-znp) library for zigpy)
|
||||
- [CC2652P/CC2652R/CC2652RB USB stick or dev board hardware flashed with Z-Stack 3.x.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
|
||||
- [CC1352P/CC1352R USB stick or dev board hardware flashed with Z-Stack 3.x.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
|
||||
- [CC2538 USB stick or dev board hardware flashed with Z-Stack 3.x.x coordinator firmware](https://www.zigbee2mqtt.io/information/supported_adapters)
|
||||
- Digi XBee Zigbee based radios (via the [zigpy-xbee](https://github.com/zigpy/zigpy-xbee) library for zigpy)
|
||||
- [Digi XBee Series 3 (xbee3-24)](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) and [Digi XBee Series S2C](https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee-zigbee) modules
|
||||
- Note! While not a must, [it is recommend to upgrade XBee Series 3 and S2C to newest firmware firmware using XCTU](https://www.digi.com/resources/documentation/Digidocs/90002002/Default.htm#Tasks/t_load_zb_firmware.htm)
|
||||
@ -87,6 +88,8 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
|
||||
- [PiZiGate](https://zigate.fr/produit/pizigate-v1-0/)
|
||||
- [Wifi ZiGate](https://zigate.fr/produit/zigate-pack-wifi-v1-3/)
|
||||
|
||||
#### Warning about Wi-Fi-based Zigbee-to-Serial bridges/gateways
|
||||
|
||||
<div class="note warning">
|
||||
|
||||
The **EZSP** protocol requires a stable connection to the serial port. With _ITEAD Sonoff ZBBridge_ connecting over the WiFi network
|
||||
|
@ -635,8 +635,8 @@
|
||||
/components/sensor.amcrest /integrations/amcrest
|
||||
/components/sensor.android_ip_webcam /integrations/android_ip_webcam#sensor
|
||||
/components/sensor.apcupsd /integrations/apcupsd#sensor
|
||||
/components/sensor.api_stream /integrations/sensor.websocket_api
|
||||
/components/sensor.api_streams /integrations/sensor.websocket_api
|
||||
/components/sensor.api_stream /integrations/websocket_api
|
||||
/components/sensor.api_streams /integrations/websocket_api
|
||||
/components/sensor.aqualogic /integrations/aqualogic#sensor
|
||||
/components/sensor.arduino /integrations/arduino#sensor
|
||||
/components/sensor.arest /integrations/arest#sensor
|
||||
@ -1076,6 +1076,7 @@
|
||||
/integrations/fan.xiaomi_miio /integrations/xiaomi_miio
|
||||
/integrations/light.xiaomi_miio /integrations/xiaomi_miio
|
||||
/integrations/remote.xiaomi_miio /integrations/xiaomi_miio
|
||||
/integrations/sensor.websocket_api /integrations/websocket_api
|
||||
/integrations/sensor.xiaomi_miio /integrations/xiaomi_miio
|
||||
/integrations/switch.xiaomi_miio /integrations/xiaomi_miio
|
||||
/integrations/vacuum.xiaomi_miio /integrations/xiaomi_miio
|
||||
|
Loading…
x
Reference in New Issue
Block a user