From ba1b4d38f41130112d34eccd090563f34e6c8d4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliv=C3=A9r=20Falvai?= Date: Mon, 22 Mar 2021 02:48:53 +0100 Subject: [PATCH 01/19] Fix YAML indent in example (#17088) --- source/_integrations/influxdb.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index 2101a1e531b..334dffe5d24 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -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 From c28dc362caf12141198222972bad231066b8b96c Mon Sep 17 00:00:00 2001 From: Ivan Bessarabov Date: Mon, 22 Mar 2021 13:12:25 +0300 Subject: [PATCH 02/19] Update systemmonitor.markdown (#16962) Co-authored-by: Franck Nijhof Co-authored-by: Stefan Agner --- source/_integrations/systemmonitor.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/systemmonitor.markdown b/source/_integrations/systemmonitor.markdown index 187ecc156f4..f432da2fca5 100644 --- a/source/_integrations/systemmonitor.markdown +++ b/source/_integrations/systemmonitor.markdown @@ -23,7 +23,7 @@ sensor: - platform: systemmonitor resources: - type: disk_use_percent - arg: /home + arg: /config - type: memory_free ``` From e5139c5144a444f2081a3d0d378ba4a2598e7eaf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Mar 2021 11:13:28 +0100 Subject: [PATCH 03/19] Bump textlint from 11.8.3 to 11.9.0 (#17093) Bumps [textlint](https://github.com/textlint/textlint) from 11.8.3 to 11.9.0. - [Release notes](https://github.com/textlint/textlint/releases) - [Commits](https://github.com/textlint/textlint/compare/textlint@11.8.3...textlint@11.9.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 160 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 81 insertions(+), 81 deletions(-) diff --git a/package-lock.json b/package-lock.json index 56134db43f0..04e7bfe16e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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" diff --git a/package.json b/package.json index 0e2ec72a771..c2e70cc6b4f 100644 --- a/package.json +++ b/package.json @@ -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" }, From 75d230b447857d566f1653152b2b7e1e6b58115f Mon Sep 17 00:00:00 2001 From: webeling67 <61348455+webeling67@users.noreply.github.com> Date: Mon, 22 Mar 2021 11:24:51 +0100 Subject: [PATCH 04/19] Update enable_i2c.md (#17005) Co-authored-by: Stefan Agner Co-authored-by: Franck Nijhof --- source/_includes/common-tasks/enable_i2c.md | 25 ++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/source/_includes/common-tasks/enable_i2c.md b/source/_includes/common-tasks/enable_i2c.md index 24f69bec34c..252aca836d9 100644 --- a/source/_includes/common-tasks/enable_i2c.md +++ b/source/_includes/common-tasks/enable_i2c.md @@ -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. + From 90a1530bf331c72c7e2ce3d43ed56bd353ecdd87 Mon Sep 17 00:00:00 2001 From: jonwaland <33437424+jonwaland@users.noreply.github.com> Date: Mon, 22 Mar 2021 23:54:27 +1100 Subject: [PATCH 05/19] Update editor.markdown (#16909) --- source/_docs/automation/editor.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown index a4f8cab57a0..e19c4423f09 100644 --- a/source/_docs/automation/editor.markdown +++ b/source/_docs/automation/editor.markdown @@ -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`. From 73290897832d9b3d4557f1a0cdeeaa53193d08a6 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 22 Mar 2021 06:04:36 -0700 Subject: [PATCH 06/19] Updated sensor documentation to be more approachable to new users. (#17041) Co-authored-by: Franck Nijhof --- source/_integrations/sensor.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 46cf2ec4191..9ac9af90cd3 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -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. From 42375c1a25956a6bc7bd74fb8875afc6a8e177af Mon Sep 17 00:00:00 2001 From: drahdiwaberl Date: Mon, 22 Mar 2021 14:28:15 +0100 Subject: [PATCH 07/19] Update calendar.google.markdown (#17024) Co-authored-by: Franck Nijhof --- source/_integrations/calendar.google.markdown | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown index a66e3db9ccb..5263bc9e906 100644 --- a/source/_integrations/calendar.google.markdown +++ b/source/_integrations/calendar.google.markdown @@ -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. + +
+ +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. + +
+ {% 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. - -
- -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. - -
### Sensor attributes From 67fc7301d5924eb9b5c36ac7c93271a79f5fee37 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Mon, 22 Mar 2021 14:33:55 +0100 Subject: [PATCH 08/19] Add information about CoIoT and unicast to Shelly integration docs (#17083) Co-authored-by: Franck Nijhof --- source/_integrations/shelly.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index 7165cd58739..e663251d97c 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -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. +
Integration is communicating directly with the device; cloud connection is not needed.
From 9c70505bfffd3e09ba44f87ae6987749ccc4bab1 Mon Sep 17 00:00:00 2001 From: papperone Date: Mon, 22 Mar 2021 16:23:26 +0100 Subject: [PATCH 09/19] Update zha.markdown (#16495) Co-authored-by: Stefan Agner Co-authored-by: Franck Nijhof --- source/_integrations/zha.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index be4d39b3140..55cc9ccfa8a 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -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) From 7472dad716b0d28c45892c38b4b365a4caac4726 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 22 Mar 2021 17:07:12 +0100 Subject: [PATCH 10/19] Remove unneeded consideration section from weather template (#17018) --- source/_integrations/weather.template.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/_integrations/weather.template.markdown b/source/_integrations/weather.template.markdown index b3dcb5fe029..c148a45226c 100644 --- a/source/_integrations/weather.template.markdown +++ b/source/_integrations/weather.template.markdown @@ -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. From 84b23a324180dee26cc6426d3a37232be12f290a Mon Sep 17 00:00:00 2001 From: Hedda Date: Tue, 23 Mar 2021 11:52:51 +0100 Subject: [PATCH 11/19] Add section to warning about WiFi-based Zigbee-to-Serial bridges so it has a direct URL link (#17100) * Add section to warning about WiFi-based Zigbee-to-Serial bridges so it has a direct URL link Add a section in the ZHA documentation to the warning about WiFi-based Zigbee-to-Serial bridges so it getss a direct URL link that can be linked-to in the community forum, similar to https://github.com/zigpy/bellows#warning-about-zigbee-to-wifi-bridges * Update source/_integrations/zha.markdown Co-authored-by: Franck Nijhof --- source/_integrations/zha.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 55cc9ccfa8a..512ce695566 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -88,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 +
The **EZSP** protocol requires a stable connection to the serial port. With _ITEAD Sonoff ZBBridge_ connecting over the WiFi network From 5ddb6529c13dd4ba8f5aa364b2560740a77bf178 Mon Sep 17 00:00:00 2001 From: elyobelyob Date: Tue, 23 Mar 2021 11:11:16 +0000 Subject: [PATCH 12/19] I found that a 4pm or other non midnight required buffering. (#16182) * Update history_stats.markdown --- title: History Stats description: Instructions about how to integrate historical statistics into Home Assistant. ha_category: - Utility - Sensor ha_iot_class: Local Polling ha_release: 0.39 ha_quality_scale: internal ha_domain: history_stats --- The `history_stats` sensor platform provides quick statistics about another integration or platforms, using data from the [`history`](/integrations/history/) integration. It can track how long the integration has been in a specific state, in a custom time period. Examples of what you can track: - How long you were at home this week - How long the lights were ON yesterday - How long you watched TV today ## Configuration To enable the history statistics sensor, add the following lines to your `configuration.yaml`: {% raw %} ```yaml # Example configuration.yaml entry sensor: - platform: history_stats name: Lamp ON today entity_id: light.my_lamp state: 'on' type: time start: '{{ now().replace(hour=0, minute=0, second=0) }}' end: '{{ now() }}' ``` {% endraw %} {% configuration %} entity_id: description: The entity you want to track. required: true type: string state: description: The states you want to track. required: true type: [list, string] name: description: Name displayed on the frontend. Note that it is used by Home Assistant to generate sensor's `object_id` so it is advisable to choose a unique one and change name for frontend using [customization](/docs/configuration/customizing-devices/#friendly_name) or via [Lovelace](/lovelace/entities/#name). required: false default: unnamed statistics type: string type: description: "The type of sensor: `time`, `ratio`, or `count`." required: false default: time type: string start: description: When to start the measure (timestamp or datetime). required: false type: template end: description: When to stop the measure (timestamp or datetime). required: false type: template duration: description: Duration of the measure. required: false type: time {% endconfiguration %}
You have to provide **exactly 2** of `start`, `end` and `duration`.
You can use [template extensions](/topics/templating/#home-assistant-template-extensions) such as `now()` or `as_timestamp()` to handle dynamic dates, as shown in the examples below.
## Sensor type Depending on the sensor type you choose, the `history_stats` integration can show different values: - **time**: The default value, which is the tracked time, in hours - **ratio**: The tracked time divided by the length of your period, as a percentage - **count**: How many times the integration you track was changed to the state you track ## Time periods The `history_stats` integration will execute a measure within a precise time period. You should always provide 2 of the following : - When the period starts (`start` variable) - When the period ends (`end` variable) - How long is the period (`duration` variable) As `start` and `end` variables can be either datetimes or timestamps, you can configure almost any period you want. ### Duration The duration variable is used when the time period is fixed. Different syntaxes for the duration are supported, as shown below. ```yaml # 6 hours duration: 06:00 ``` ```yaml # 1 minute, 30 seconds duration: 00:01:30 ``` ```yaml # 2 hours and 30 minutes duration: # supports seconds, minutes, hours, days hours: 2 minutes: 30 ```
If the duration exceeds the number of days of history stored by the `recorder` component (`purge_keep_days`), the history statistics sensor will not have all the information it needs to look at the entire duration. For example, if `purge_keep_days` is set to 7, a history statistics sensor with a duration of 30 days will only report a value based on the last 7 days of history.
### Examples Here are some examples of periods you could work with, and what to write in your `configuration.yaml`: **Today**: starts at 00:00 of the current day and ends right now. {% raw %} ```yaml start: '{{ now().replace(hour=0, minute=0, second=0) }}' end: '{{ now() }}' ``` {% endraw %} **Yesterday**: ends today at 00:00, lasts 24 hours. {% raw %} ```yaml end: '{{ now().replace(hour=0, minute=0, second=0) }}' duration: hours: 24 ``` {% endraw %} **This morning (6AM - 11AM)**: starts today at 6, lasts 5 hours. {% raw %} ```yaml start: '{{ now().replace(hour=6, minute=0, second=0) }}' duration: hours: 5 ``` {% endraw %} **Current week**: starts last Monday at 00:00, ends right now. Here, last Monday is _today_ as a timestamp, minus 86400 times the current weekday (86400 is the number of seconds in one day, the weekday is 0 on Monday, 6 on Sunday). {% raw %} ```yaml start: '{{ as_timestamp( now().replace(hour=0, minute=0, second=0) ) - now().weekday() * 86400 }}' end: '{{ now() }}' ``` {% endraw %} **Next 4pm **: ends today at 00:00, lasts 30 days. Easy one. {% raw %} ```yaml end: '{{ now().replace(hour=0, minute=0, second=0) }}' duration: days: 30 ``` {% endraw %} **Last 30 days**: ends today at 00:00, lasts 30 days. Easy one. {% raw %} ```yaml end: '{{ now().replace(hour=0, minute=0, second=0) }}' duration: days: 30 ``` {% endraw %} ** 4PM always in the future**: ends in the future at 16:00, starts 24 hours before. {% raw %} ```yaml end: '{{ (now().replace(minute=0,second=0) + timedelta(hours=8)).replace(hour=16) }}' duration: hours: 24 ``` {% endraw %} **All your history** starts at timestamp = 0, and ends right now. {% raw %} ```yaml start: '{{ 0 }}' end: '{{ now() }}' ``` {% endraw %}
The `/developer-tools/template` page of your Home Assistant UI can help you check if the values for `start`, `end` or `duration` are correct. If you want to check if your period is right, just click on your component, the `from` and `to` attributes will show the start and end of the period, nicely formatted.
* $pm - 4pm example implemented * Tweak * Update source/_integrations/history_stats.markdown Very happy with this change ... Co-authored-by: Franck Nijhof * Update source/_integrations/history_stats.markdown Co-authored-by: Franck Nijhof --- source/_integrations/history_stats.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index e9afb5276e7..d75bae58ecd 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -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 %} From 51e0f5374de2c6f34f8b2dcc87f040b60b5d1ea3 Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Tue, 23 Mar 2021 15:05:47 +0100 Subject: [PATCH 13/19] KNX yaml style and sensor value types (#17075) Co-authored-by: Franck Nijhof --- source/_integrations/knx.markdown | 120 ++++++++++++++++-------------- 1 file changed, 66 insertions(+), 54 deletions(-) diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 8b0a700733a..68cea77559d 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -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. @@ -154,6 +153,7 @@ Explicit connection via KNX/IP routing. This requires multicast communication to ```yaml knx: + routing: ``` {% configuration %} @@ -295,27 +295,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" ``` @@ -355,7 +355,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" ``` @@ -409,7 +409,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 @@ -422,7 +422,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 @@ -468,7 +468,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" @@ -483,7 +483,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" @@ -501,7 +501,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" @@ -525,7 +525,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" @@ -700,7 +700,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" @@ -783,7 +783,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" ``` @@ -830,7 +830,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" ``` @@ -948,14 +948,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" @@ -964,7 +964,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" @@ -976,7 +976,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" ``` @@ -988,7 +988,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" ``` @@ -1011,7 +1011,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 ``` @@ -1041,9 +1041,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`: @@ -1052,9 +1052,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 ``` @@ -1087,14 +1087,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 | @@ -1105,14 +1109,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 | @@ -1124,6 +1131,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 | @@ -1131,8 +1139,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 | @@ -1141,8 +1153,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⁻¹ | @@ -1231,14 +1243,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 @@ -1248,7 +1260,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" ``` @@ -1286,7 +1298,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" From 3a4d3bb2792c275edf1d5ef23ff20c79b19b6b51 Mon Sep 17 00:00:00 2001 From: Michael Senn Date: Wed, 24 Mar 2021 15:40:07 +0100 Subject: [PATCH 14/19] Fix error in mystrom documentation (#17108) The `host` attribute must be the *IP*, not the URL of the switch. --- source/_integrations/mystrom.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index 23a50dcee61..133c80e60c2 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -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: From 81beb308c354b2543d572061e2fdf0f2a78e4bed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Mar 2021 16:17:10 +0100 Subject: [PATCH 15/19] Bump listen from 3.4.1 to 3.5.0 (#17114) Bumps [listen](https://github.com/guard/listen) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/guard/listen/releases) - [Commits](https://github.com/guard/listen/compare/v3.4.1...v3.5.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index c77920e59cc..e7015419b2d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) From a438d968c7b4eeec5456ea560a531010fdd182e0 Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Wed, 24 Mar 2021 19:51:04 +0000 Subject: [PATCH 16/19] Clarify details of sensor created by websocket_api (#17118) Co-authored-by: Franck Nijhof --- .../sensor.websocket_api.markdown | 29 ------------------- source/_integrations/websocket_api.markdown | 6 ++-- source/_redirects | 5 ++-- 3 files changed, 7 insertions(+), 33 deletions(-) delete mode 100644 source/_integrations/sensor.websocket_api.markdown diff --git a/source/_integrations/sensor.websocket_api.markdown b/source/_integrations/sensor.websocket_api.markdown deleted file mode 100644 index 770f64c1eae..00000000000 --- a/source/_integrations/sensor.websocket_api.markdown +++ /dev/null @@ -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`. diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown index ea32434e30a..605a743f49f 100644 --- a/source/_integrations/websocket_api.markdown +++ b/source/_integrations/websocket_api.markdown @@ -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. diff --git a/source/_redirects b/source/_redirects index f4bc0b59b4a..f34de767f90 100644 --- a/source/_redirects +++ b/source/_redirects @@ -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 From 2b2f19a8f19e9fc2df148192f46d4f33c16470a9 Mon Sep 17 00:00:00 2001 From: Gerard Date: Wed, 24 Mar 2021 22:58:17 +0100 Subject: [PATCH 17/19] Add multiple actions example to switch template (#17122) Add multiple actions example to switch template --- source/_integrations/switch.template.markdown | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/source/_integrations/switch.template.markdown b/source/_integrations/switch.template.markdown index a1925e89a0a..c4e7c6e9841 100644 --- a/source/_integrations/switch.template.markdown +++ b/source/_integrations/switch.template.markdown @@ -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 From d1630dd1c554aa6fe6ef177d691fa4ad1030310f Mon Sep 17 00:00:00 2001 From: scyto Date: Thu, 25 Mar 2021 01:03:40 -0700 Subject: [PATCH 18/19] Clarify how to reboot Roomba to generate auto-discovery (#17111) Co-authored-by: Franck Nijhof --- source/_integrations/roomba.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown index d68a01fe1e6..f8824ba09de 100644 --- a/source/_integrations/roomba.markdown +++ b/source/_integrations/roomba.markdown @@ -26,7 +26,9 @@ The `roomba` integration allows you to control your [iRobot Roomba](https://www.

-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). +
{% include integrations/config_flow.md %} From c1bae9664bfd5586011e8b7647a5eeb4aa2a7d1c Mon Sep 17 00:00:00 2001 From: Peronia <25049991+Peronia@users.noreply.github.com> Date: Thu, 25 Mar 2021 09:43:47 +0100 Subject: [PATCH 19/19] Update python_script.markdown, help new users find "services" (#17115) Co-authored-by: Franck Nijhof --- source/_integrations/python_script.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index c4e86f22362..da46b52ff62 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -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