diff --git a/Gemfile b/Gemfile index ff95f49b6f22..9da9617fe7d1 100644 --- a/Gemfile +++ b/Gemfile @@ -21,7 +21,7 @@ group :jekyll_plugins do end gem 'sinatra', '2.1.0' -gem 'nokogiri', '1.11.1' +gem 'nokogiri', '1.11.2' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library diff --git a/Gemfile.lock b/Gemfile.lock index bc95e45e3d30..c77920e59cc0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -61,7 +61,7 @@ GEM nokogiri (~> 1.10) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.3.0) + kramdown (2.3.1) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) @@ -74,10 +74,10 @@ GEM multi_json (1.15.0) mustermann (1.1.1) ruby2_keywords (~> 0.0.1) - nokogiri (1.11.1) + nokogiri (1.11.2) mini_portile2 (~> 2.5.0) racc (~> 1.4) - nokogiri (1.11.1-x64-mingw32) + nokogiri (1.11.2-x64-mingw32) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) @@ -130,7 +130,7 @@ DEPENDENCIES jekyll-sitemap (= 1.4.0) jekyll-time-to-read (= 0.1.2) jekyll-toc (= 0.17.0) - nokogiri (= 1.11.1) + nokogiri (= 1.11.2) rake (= 13.0.3) sass-globbing (= 1.1.5) sassc (= 2.1.0) diff --git a/package-lock.json b/package-lock.json index 631b1bc547b0..56134db43f02 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,56 +104,56 @@ "dev": true }, "@textlint/ast-tester": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-2.3.2.tgz", - "integrity": "sha512-4e1kyqsHks5POcQmuh7ITVrU/dbYyRUfQarQbeVRPP271n2HnlgnoYyZ10yV2Sb/Ksw+lQf7DPSnwNewXdCWww==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-2.3.3.tgz", + "integrity": "sha512-FNV4B0+kbvVuxvKEEf3NdPtArile940wtJeQx6flw6SLabEYDP+ZVwg7FVO17zopyIsOPmT4yPOJbt93BnDHng==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true } } }, "@textlint/ast-traverse": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-2.3.2.tgz", - "integrity": "sha512-Dt1s/6x0XWhUNFH2rAa9gL6ODtq232BZuBHuHiOg+SrVwzl+VjOfa3fMQ0LoYixGSyDtwqAlksWcC0KyLz0eSw==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-2.3.3.tgz", + "integrity": "sha512-L+iVejKaethlUKvFyQtBs373GAA5LJCkraAdbL6F6cOiCviKqpFf9HQmdCQAyYOGrjs30LgpsOLsZACgBJ7uOg==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true } } }, "@textlint/feature-flag": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-3.3.2.tgz", - "integrity": "sha512-7ErQ/UF0IBAd+PkQNBD7yYCDqL2o6leErMDENSWAgUHWLy5TcHr3Orn7qswtBMW5gIyXW9lh+EpllwLJ5qv35w==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-3.3.3.tgz", + "integrity": "sha512-YLbKeckvIu4a+IZv/nHW+BGyYZBdCSJxtKyEp8HTfKam8AC26bdU0ryzO7xmmHN0FdPNwAn67AfZTWssKcWUVg==", "dev": true, "requires": { "map-like": "^2.0.0" } }, "@textlint/fixer-formatter": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-3.3.2.tgz", - "integrity": "sha512-aTEyH/rHSzxRLrluSjNhDnMSgIYK60J5AAgprKJCkb9h3dDRuNoiJ+BXh5FXVSSm1tGF0d8pu+Ph8OFBgQOchQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-3.3.3.tgz", + "integrity": "sha512-4UF1mNFQHB5iDFNFBSK3ss8c5NiAgGxLXijATXJ3SSjhiTb3sQSX3RcB1wMwI0/gcizRm3r5j16Kelv8IOrbzA==", "dev": true, "requires": { - "@textlint/module-interop": "^1.2.2", - "@textlint/types": "^1.5.2", + "@textlint/module-interop": "^1.2.3", + "@textlint/types": "^1.5.3", "chalk": "^1.1.3", "debug": "^4.3.1", "diff": "^4.0.2", @@ -165,18 +165,18 @@ }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true }, "@textlint/types": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.2.tgz", - "integrity": "sha512-IdS0h2MCzdY+wjM0+qvl8IW/IxhmVFAVrGu5TmIBpJkihIV7WMa3ITFXIVb0oqwnePUmyLBRIVsCtC66E3QbfQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz", + "integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" } }, "ansi-regex": { @@ -264,18 +264,18 @@ } }, "@textlint/kernel": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-3.4.2.tgz", - "integrity": "sha512-PpxAtvLGI9ewn+Dbt4j0KMfmMM39/AY3cikmZffu59nyTdIymXMeVMEVkpVZTEUk5OlL27RAON9FF+2u+0fshg==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^4.4.1", - "@textlint/ast-tester": "^2.3.2", - "@textlint/ast-traverse": "^2.3.2", - "@textlint/feature-flag": "^3.3.2", - "@textlint/source-code-fixer": "^3.4.2", - "@textlint/types": "^1.5.2", - "@textlint/utils": "^1.2.2", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-3.4.3.tgz", + "integrity": "sha512-kQUjkVC6kXVuTxVqhPuxgjEaONDH1hliRgi5tMyxGDD3c3IOJVeatutL9vqpbAMgJL7blyTaWSdOJdsqZfCW3g==", + "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", "debug": "^4.3.1", "deep-equal": "^1.1.1", "map-like": "^2.0.0", @@ -283,18 +283,18 @@ }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true }, "@textlint/types": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.2.tgz", - "integrity": "sha512-IdS0h2MCzdY+wjM0+qvl8IW/IxhmVFAVrGu5TmIBpJkihIV7WMa3ITFXIVb0oqwnePUmyLBRIVsCtC66E3QbfQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz", + "integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" } }, "debug": { @@ -309,15 +309,15 @@ } }, "@textlint/linter-formatter": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-3.3.2.tgz", - "integrity": "sha512-MRa8D1/x6pWycKTwb1QLjtY7GyjgcsYRfV0Gu0Aze5szCa3UDwZSewHycpcAGlIqr8AkqPRfyXi653M47eJ0rA==", + "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==", "dev": true, "requires": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^1.2.2", - "@textlint/types": "^1.5.2", + "@textlint/module-interop": "^1.2.3", + "@textlint/types": "^1.5.3", "chalk": "^1.1.3", "concat-stream": "^1.6.2", "debug": "^4.3.1", @@ -334,18 +334,18 @@ }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true }, "@textlint/types": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.2.tgz", - "integrity": "sha512-IdS0h2MCzdY+wjM0+qvl8IW/IxhmVFAVrGu5TmIBpJkihIV7WMa3ITFXIVb0oqwnePUmyLBRIVsCtC66E3QbfQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz", + "integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" } }, "ansi-regex": { @@ -479,12 +479,12 @@ } }, "@textlint/markdown-to-ast": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.3.2.tgz", - "integrity": "sha512-uwndF3PRJ48wTVAEDSy0IAEVJg/scxpdZ1r+QKeGuFfdtaGSrtcgROI6qiVU1g/WNyNfQw+DAA7F8HfM+pmleg==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.3.3.tgz", + "integrity": "sha512-CG8igvwlmcHb/d2zXDXchXgqofnDsxQDYOMpsk4zv1EN8PL5ycijQgmKJ0yB0ZxFduv0AR22rnJvPtB4ymzCyQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1", + "@textlint/ast-node-types": "^4.4.2", "debug": "^4.3.1", "remark-frontmatter": "^1.3.3", "remark-parse": "^5.0.0", @@ -494,9 +494,9 @@ }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true }, "debug": { @@ -597,34 +597,34 @@ } }, "@textlint/module-interop": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-1.2.2.tgz", - "integrity": "sha512-B8HPS129lOqzEpRcafYl/OJ2TDxfBw1jGfEhebzwt3kGoMd5pQVih+hUIOl+SfAmLWqCDEniaKn0gw1s+hjSXA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-1.2.3.tgz", + "integrity": "sha512-BHpF/NSOWZIBJVvwe1Aww9k7lh04lr8xrFpoDfmdp3QolrAakdd5xTso2U1kJpWeZatQgh4naSI2X7IUEM2b2Q==", "dev": true }, "@textlint/source-code-fixer": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-3.4.2.tgz", - "integrity": "sha512-mSGQNO8is21KcHgDh4S8Cx88r7uU+7xpzHLuEuzhgEZfgwz3+tnpk22TrEjNYe1V1+aseU9iCQegVQQr1wroKQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-3.4.3.tgz", + "integrity": "sha512-jXuVMICfnTkg8GKPpuL2gLgUt2IicgKIOAQHw8BN9vGRstdPDth37Qc9iIjM6b68TPbRnDLb7GCENdXYEQKpcg==", "dev": true, "requires": { - "@textlint/types": "^1.5.2", + "@textlint/types": "^1.5.3", "debug": "^4.3.1" }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true }, "@textlint/types": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.2.tgz", - "integrity": "sha512-IdS0h2MCzdY+wjM0+qvl8IW/IxhmVFAVrGu5TmIBpJkihIV7WMa3ITFXIVb0oqwnePUmyLBRIVsCtC66E3QbfQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz", + "integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" } }, "debug": { @@ -639,38 +639,38 @@ } }, "@textlint/text-to-ast": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-3.3.2.tgz", - "integrity": "sha512-+DKAP62ho21KID8IcKy1kP6K+kUZk+Z0MwvS9u2l39J0cK+vX523KI+sA6AXxEhOMDA8zhdIsBf3onGvrAtyhA==", + "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==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true } } }, "@textlint/textlint-plugin-markdown": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-5.3.2.tgz", - "integrity": "sha512-6Ph7ESKR48tEz5Pnog3PpvF84LU3jkADvr4iBkkVz9vLQt3KbqGnmk8EV94Y0hLEX+UrZKWmH3cJfh6O1Zy/eA==", + "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==", "dev": true, "requires": { - "@textlint/markdown-to-ast": "^6.3.2" + "@textlint/markdown-to-ast": "^6.3.3" } }, "@textlint/textlint-plugin-text": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-4.3.2.tgz", - "integrity": "sha512-xnjad0bXaM6ZtgffuFKogHYkzXymUK3VTLP5MGA00kLitADlNUtwXQk82TebkXFcSPRhePU9+2XFipXNQDsg7g==", + "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==", "dev": true, "requires": { - "@textlint/text-to-ast": "^3.3.2" + "@textlint/text-to-ast": "^3.3.3" } }, "@textlint/types": { @@ -683,9 +683,9 @@ } }, "@textlint/utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-1.2.2.tgz", - "integrity": "sha512-7Mqcl9G9YYrPBv5d/tZ2NlWC66hTUpQEQxZEHDMTdF3gPmQUSNRNGjqUR9mhw00Wy8Wo6i3LUWuxwMT6heHNBQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-1.2.3.tgz", + "integrity": "sha512-jN0pbdOJkIAuqyBqsDvk3FYP6BF+YLMlVzE8xbjDhpw7dpr36iEGKGIuRQJZ0+8nq3CPY7W0EcK6o63QoPuPvQ==", "dev": true }, "@types/mdast": { @@ -1156,9 +1156,9 @@ } }, "graceful-fs": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.5.tgz", - "integrity": "sha512-kBBSQbz2K0Nyn+31j/w36fUfxkBW9/gfwRWdUY1ULReH3iokVJgddZAFcD1D0xlgTmFxJCbUkUclAlc6/IDJkw==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, "has": { @@ -1194,9 +1194,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, "hosted-git-info": { @@ -1823,12 +1823,12 @@ "dev": true }, "object-is": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", - "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3" } }, @@ -2276,12 +2276,12 @@ "dev": true }, "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "requires": { - "is-core-module": "^2.1.0", + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -2534,22 +2534,22 @@ "dev": true }, "textlint": { - "version": "11.8.2", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-11.8.2.tgz", - "integrity": "sha512-YrTGagGzWKXYw6VjW4uhJ1y7LoW8zqWZIr8sWgeQVIFE84+G/cHPoZ8RhFlia+RZ4YryZPNOqevuF4vG+dbKNQ==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^4.4.1", - "@textlint/ast-traverse": "^2.3.2", - "@textlint/feature-flag": "^3.3.2", - "@textlint/fixer-formatter": "^3.3.2", - "@textlint/kernel": "^3.4.2", - "@textlint/linter-formatter": "^3.3.2", - "@textlint/module-interop": "^1.2.2", - "@textlint/textlint-plugin-markdown": "^5.3.2", - "@textlint/textlint-plugin-text": "^4.3.2", - "@textlint/types": "^1.5.2", - "@textlint/utils": "^1.2.2", + "version": "11.8.3", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-11.8.3.tgz", + "integrity": "sha512-UrknrF3Sgkksq9aI3Y0gs4FBRgAy2oaonAhLOufWs7kA0ulmj3FVYGPA5UPVEKQHUWbnuOaqDteLDs+/9hRc9g==", + "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", "debug": "^4.3.1", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", @@ -2571,18 +2571,18 @@ }, "dependencies": { "@textlint/ast-node-types": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.1.tgz", - "integrity": "sha512-2QBwlqi2SU83vTHibfdTxGiLdIqR0btNyMGfVl0bwA6FI85HnSYoGFLrdCnq2V0nxpbhuvwzcm2Ja81w0VkMGA==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.4.2.tgz", + "integrity": "sha512-m5brKbI7UY/Q8sbIZ7z1KB8ls04nRILshz5fPQ4EZ04jL19qrrUHJR8A6nK3vJ/GelkDWl4I0VDYSAjLEFQV8g==", "dev": true }, "@textlint/types": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.2.tgz", - "integrity": "sha512-IdS0h2MCzdY+wjM0+qvl8IW/IxhmVFAVrGu5TmIBpJkihIV7WMa3ITFXIVb0oqwnePUmyLBRIVsCtC66E3QbfQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.5.3.tgz", + "integrity": "sha512-xWyqdZrBUs66f8hKm3QZO2NEa6mqZAL0nTSBKu2U2Ob9R5r81N/WPvvz5mEqPVPRZrf0hi/lNerFzEIZH4YgnQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^4.4.1" + "@textlint/ast-node-types": "^4.4.2" } }, "debug": { @@ -3064,4 +3064,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 9024bd4959af..0e2ec72a7711 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.2", + "textlint": "^11.8.3", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^2.1.5" }, diff --git a/source/_docs/automation.markdown b/source/_docs/automation.markdown index 85a9b72a15ef..1d1df61bd3cb 100644 --- a/source/_docs/automation.markdown +++ b/source/_docs/automation.markdown @@ -3,14 +3,14 @@ title: "Automating Home Assistant" description: "Steps to help you get automation setup in Home Assistant." --- -Home Assistant contains information about all your devices and services. This information is not only available for the user in the dashboard, it can also be used to trigger automations. And that's fun! +Home Assistant contains information about all your devices and services. This information is available for the user in the dashboard and it can be used to trigger automations. And that's fun! Automations in Home Assistant allow you to automatically respond to things that happen. You can turn the lights on at sunset or pause the music when you receive a call. -If you are just starting out, we strongly suggest you start with blueprint automations. These are ready-made automations by the community that you only need to configure. +If you are just starting out, we recommend that you start with blueprint automations. These are ready-made automations by the community that you only need to configure. ### [Learn about automation blueprints »](/docs/automation/using_blueprints/) -If you got the hang of blueprints and need more, it's time for the next step. But before we can start creating automations, you will need to learn about the automation basics. +If you have got the hang of blueprints and would like to explore more, it's time for the next step. But before you start creating automations, you will need to learn about the automation basics. ### [Learn about automation basics »](/docs/automation/basics/) diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown index a17617bacd12..61db6a92a1b3 100644 --- a/source/_docs/automation/using_blueprints.markdown +++ b/source/_docs/automation/using_blueprints.markdown @@ -44,3 +44,7 @@ The Home Assistant Community forums have a specific tag for blueprints. This tag [Visit the Home Assistant forums][blueprint-forums] [blueprint-forums]: /get-blueprints + +## Troubleshooting missing automations + +When you're creating automations using blueprints 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`. diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index 28b6fee89bf8..900abfe07de5 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -10,7 +10,7 @@ Some selectors can, for example, show a toggle button to turn something on or off, while another select can filter a list of devices to show only devices that have motion-sensing capabilities. -Having the good selectors set on your blueprint automations inputs makes a +Having good selectors set on your blueprint automation inputs makes a blueprint easier to use from the UI. The following selectors are currently available: @@ -53,7 +53,7 @@ The add-on selector allows the user to input an add-on slug. On the user interface, it will list all installed add-ons and use the slug of the selected add-on. - + This selector does not have any other options; therefore, it only has its key. @@ -71,7 +71,7 @@ and entities that are assigned to those areas. For example, the areas list could be limited to areas with entities provided by the [ZHA](/integrations/zha) integration. -In its most basic form, it doesn't require any options, which will show +In its most basic form, this selector doesn't require any options, which will show all areas. ```yaml @@ -183,9 +183,9 @@ A device selector can filter the list of devices, based on things like the manufacturer or model of the device, the entities the device provides or based on the domain that provided the device. - + -In its most basic form, it doesn't require any options, which will show +In its most basic form, this selector doesn't require any options, which will show all devices. ```yaml @@ -270,7 +270,7 @@ entity.  -In its most basic form, it doesn't require any options, which will show +In its most basic form, this selector doesn't require any options, which will show all entities. ```yaml @@ -329,7 +329,7 @@ On the user interface, the input can either be in a slider or number mode. Both modes limit the user input by a minimal and maximum value, and can have a unit of measurement to go with it. -In its most basic form, it requires a minimal and maximum value: +In its most basic form, this selector requires a minimal and maximum value: ```yaml number: @@ -425,7 +425,7 @@ options: ## Target selector -The target selector is a rather special selector, allowing the user to selector +The target selector is a rather special selector, allowing the user to select targeted entities, devices or areas for service calls. The value of the input will contain a special target format, that is accepted by service calls. @@ -436,7 +436,7 @@ those properties in those areas.  -Its most basic form, doesn't require any options, which will allow the +In its most basic form, this selector does not require any options, which will allow the user to target any entity, device or area available in the system. ```yaml diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 6b6f5b57917c..29d66e54b920 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -39,7 +39,7 @@ entity_picture: required: false type: string icon: - description: "Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com) ([Cheatsheet](https://cdn.materialdesignicons.com/5.3.45/)). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release. You can check when an icon was added to MaterialDesignIcons.com at [MDI History](https://materialdesignicons.com/history)." + description: "Any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release. You can check when an icon was added to MaterialDesignIcons.com at [MDI History](https://materialdesignicons.com/history)." required: false type: string assumed_state: diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 73b694f2075f..40fa62422654 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -63,7 +63,7 @@ Extensions allow templates to access all of the Home Assistant specific states a ### Limited Templates -Templates for some triggers [triggers](/docs/automation/trigger/) as well as `trigger_variables` only support a subset of the Home Assistant template extensions. This subset is referred to as "Limited Templates". +Templates for some [triggers](/docs/automation/trigger/) as well as `trigger_variables` only support a subset of the Home Assistant template extensions. This subset is referred to as "Limited Templates". ### States diff --git a/source/_docs/locked_out.md b/source/_docs/locked_out.md index e7be0bfe88ba..d2fba55b095f 100644 --- a/source/_docs/locked_out.md +++ b/source/_docs/locked_out.md @@ -12,7 +12,7 @@ or need to recover your data. If you are still logged in to the web interface with your user, then you are in luck. Add a new user as an administrator and give the new user a password you can remember. Then log out, and log in with this new user. You may then reset your password via this new administrator account (and then delete this new account), or you can delete your old user account. Either way, your configuration will remain, and you don't have to do a new onboarding process. -If you’ve forgotten your username, then deleting the files mentioned above will be necessary to start a new onboarding process. +If you’ve forgotten your username, then deleting the files mentioned further below will be necessary to start a new onboarding process. #### To reset a user's password, via console If you know the username, but not the password and you can access the [Home Assistant console](https://www.home-assistant.io/hassio/commandline/) and use the command below: diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index a04eeb290dc5..7c5813f1dfb4 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -610,6 +610,64 @@ automation: {% endraw %} + +More `choose` can be used together. This is the case of an IF-IF. + +The following example shows how a single automation can control entities that aren't related to each other but have in common the same trigger. + +When the sun goes below the horizon, the `porch` and `garden` lights must turn on. If someone is watching the TV in the living room, there is a high chance that someone is in that room, therefore the living room lights have to turn on too. The same concept applies to the `studio` room. + +{% raw %} + +```yaml +# Example with "if" and "if" +automation: + - alias: "Turn lights on when the sun gets dim and if some room is occupied" + trigger: + - platform: numeric_state + entity_id: sun.sun + attribute: elevation + below: 4 + action: + # This must always apply + - service: light.turn_on + data: + brightness: 255 + color_temp: 366 + target: + entity_id: + - light.porch + - light.garden + # IF a entity is ON + - choose: + - conditions: + - condition: state + entity_id: binary_sensor.livingroom_tv + state: "on" + sequence: + - service: light.turn_on + data: + brightness: 255 + color_temp: 366 + target: + entity_id: light.livingroom + # IF another entity not related to the previous, is ON + - choose: + - conditions: + - condition: state + entity_id: binary_sensor.studio_pc + state: "on" + sequence: + - service: light.turn_on + data: + brightness: 255 + color_temp: 366 + target: + entity_id: light.studio +``` + +{% endraw %} + [Script component]: /integrations/script/ [automations]: /getting-started/automation-action/ [Alexa/Amazon Echo]: /integrations/alexa/ diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index ed72800b79d7..896126b7aa4e 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -3,7 +3,7 @@ title: "Service Calls" description: "Instructions on how to call services in Home Assistant." --- -Various integrations allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo. +Various integrations allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script, a Lovelace dashboard or via voice command devices such as Amazon Echo. The configuration options to call a configuration are the same between all integrations and are described on this page. @@ -27,10 +27,10 @@ entity_id: group.living_room Instead of targeting an entity, you can also target an area or device. Or a combination of these. This is done with the `target` key. -A `target` is a map thats contains atleast one of the following: `area_id`, `device_id`, `entity_id`. +A `target` is a map that contains at least one of the following: `area_id`, `device_id`, `entity_id`. Each of these can be a list. -When the service is called, the area's and devices will be resolved to entities. +When the service is called, the areas and devices will be resolved to entities. ```yaml service: homeassistant.turn_on @@ -46,7 +46,7 @@ target: ### Passing data to the service call -You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness. +You can also specify other parameters beside the entity to target. For example, the `light.turn_on` service allows specifying the brightness. ```yaml service: light.turn_on @@ -103,7 +103,7 @@ target: thermostat.downstairs {% endif %} data: - temperature: {{ 22 - distance(states.device_tracker.paulus) }} + temperature: "{{ 22 - distance(states.device_tracker.paulus) }}" ``` {% endraw %} @@ -111,8 +111,8 @@ data: There are four `homeassistant` services that aren't tied to any single domain, these are: -- `homeassistant.turn_on` - Turns on an entity (that supports being turned on), for example an `automation`, `switch`, etc -- `homeassistant.turn_off` - Turns off an entity (that supports being turned off), for example an `automation`, `switch`, etc +- `homeassistant.turn_on` - Turns on an entity (that supports being turned on), for example an `automation`, `switch`, etc. +- `homeassistant.turn_off` - Turns off an entity (that supports being turned off), for example an `automation`, `switch`, etc. - `homeassistant.toggle` - Turns off an entity that is on, or turns on an entity that is off (that supports being turned on and off) - `homeassistant.update_entity` - Request the update of an entity, rather than waiting for the next scheduled update, for example [Google travel time] sensor, a [template sensor], or a [light] diff --git a/source/_includes/common-tasks/commandline.md b/source/_includes/common-tasks/commandline.md index bb03546d2bc3..25e8a28d22e7 100644 --- a/source/_includes/common-tasks/commandline.md +++ b/source/_includes/common-tasks/commandline.md @@ -67,21 +67,30 @@ Usage: Available Commands: addons Install, update, remove and configure Home Assistant add-ons + audio Audio device handling. authentication Authentication for Home Assistant users. + banner Prints the CLI Home Assistant banner along with some useful information + cli Get information, update or configure the Home Assistant cli backend core Provides control of the Home Assistant Core dns Get information, update or configure the Home Assistant DNS server + docker Docker backend specific for info and OCI configuration hardware Provides hardware information about your system help Help about any command host Control the host/system that Home Assistant is running on info Provides a general Home Assistant information overview + jobs Get information and manage running jobs + multicast Get information, update or configure the Home Assistant Multicast + network Network specific for updating, info and configuration imports + observer Get information, update or configure the Home Assistant observer os Operating System specific for updating, info and configuration imports + resolution Resolution center of Supervisor, show issues and suggest solutions snapshots Create, restore and remove snapshot backups supervisor Monitor, control and configure the Home Assistant Supervisor Flags: --api-token string Home Assistant Supervisor API token --config string Optional config file (default is $HOME/.homeassistant.yaml) - --endpoint string Endpoint for Home Assistant Supervisor ( default is 'supervisor' ) + --endpoint string Endpoint for Home Assistant Supervisor (default is 'supervisor') -h, --help help for ha --log-level string Log level (defaults to Warn) --no-progress Disable the progress spinner diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 1b0b235406e1..043b98471110 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -100,6 +100,7 @@ _Select and copy the URL or use the "copy" button that appear when you hover it. 1. Put the SD card in your card reader. 2. Open balenaEtcher, select the Home Assistant image and flash it to the SD card. 3. Unmount the SD card and remove it from your card reader. +4. Once completed you will be able to reach Home Assistant on homeassistant.local:8123. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or `http://X.X.X.X:8123` (replace X.X.X.X with your {{site.installation.types[page.installation_type].board}}’s IP address). {% else %} ### Create the Virtual Machine diff --git a/source/_integrations/generic.markdown b/source/_integrations/generic.markdown index f545c310732d..8f1fd8957ef0 100644 --- a/source/_integrations/generic.markdown +++ b/source/_integrations/generic.markdown @@ -139,3 +139,19 @@ camera: still_image_url: http://194.218.96.92/jpg/image.jpg stream_source: rtsp://194.218.96.92:554 ``` + +### Secured access to the camera + +To access a camera that requires secured access for still image or live stream (an HIK in my case). + +```yaml +camera: + - platform: generic + still_image_url: "http://192.168.1.100/ISAPI/Streaming/Channels/101/picture" + stream_source: "rtsp://USERNAME:PASSWORD@192.168.1.100:554/Streaming/Channels/102" + name: "My Camera" + verify_ssl: false + username: "USERNAME" + password: "PASSWORD" + authentication: digest +``` diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index 21e45b807c99..c792f1414f95 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -164,15 +164,15 @@ The following characters can be used in entity globs: The history is stored in a SQLite database `home-assistant_v2.db` within your configuration directory unless the `recorder` integration is set up differently. - - events table is all events except `time_changed` that happened while recorder integration was running. - - states table contains all the `new_state` values of `state_changed` events. - - Inside the states table you have: - - `entity_id`: the entity_id of the entity - - `state`: the state of the entity - - `attributes`: JSON of the state attributes - - `last_changed`: timestamp last time the state has changed. A state_changed event can happen when just attributes change. - - `last_updated`: timestamp anything has changed (state, attributes) - - `created`: timestamp this entry was inserted into the database +- events table is all events except `time_changed` that happened while recorder integration was running. +- states table contains all the `new_state` values of `state_changed` events. +- Inside the states table you have: + - `entity_id`: the entity_id of the entity + - `state`: the state of the entity + - `attributes`: JSON of the state attributes + - `last_changed`: timestamp last time the state has changed. + - `last_updated`: timestamp anything has changed (state, attributes) + - `created`: timestamp this entry was inserted into the database When the `history` integration queries the states table it only selects states where the state has changed: `WHERE last_changed=last_updated` diff --git a/source/_integrations/leviosa_shades.markdown b/source/_integrations/leviosa_shades.markdown new file mode 100644 index 000000000000..091f956244f8 --- /dev/null +++ b/source/_integrations/leviosa_shades.markdown @@ -0,0 +1,55 @@ +--- +title: Leviosa Motor Blinds Zone hub +description: Instructions on how to integrate the Leviosa Zone hub into Home Assistant. +ha_category: + - Cover +ha_iot_class: Local Push +ha_release: 2021.4 +ha_domain: leviosa_shades +ha_codeowners: + - '@altersis' +ha_config_flow: true +ha_platforms: + - cover +--- + +This integration allows you to control [Leviosa Zone hubs](https://leviosashades.com/products/leviosa-zone) from [Leviosa Motor Shades](https://leviosashades.com/). + +## Configuration + +To Add Leviosa Shades to your Home Assistant instance, please configure your Leviosa Shades and Zones with the app before doing it in Home Assistant. Once done, take the following steps: + +- Browse to your Home Assistant instance. +- In the sidebar click on [Configuration](https://my.home-assistant.io/redirect/config). +- From the configuration menu select [Integrations](https://my.home-assistant.io/redirect/integrations). +- In the bottom right, click on the [Add Integration](https://my.home-assistant.io/redirect/config_flow_start?domain=leviosa_shades) button. +- From the list, search and select *Leviosa Motor Shades Zone*. +- Follow the instruction on screen to complete the set up. Each Leviosa Zone manages up to 6 groups of shades. +- If you have more than one Leviosa Zone in your Network, Home Assistant will display a list, with one IP address for each Leviosa Zone discovered in your network, in the same order as they were discovered. Once a Leviosa Zone is configured in Home Assistant, it will not appear in this list. Refer to the next section to find the IP address of each zone group. +- If you have only one Leviosa Zone, then you'll be taken directly to the screen to enter the Leviosa Zone name and shade group names. +- You can name the shade groups as you wish. They do not have to match the names already in the Leviosa App. + +After completing the steps above, the {{ name }} integration will be immediately available for use. A `cover` entity for each shade group will be ready for you. An additional `cover` entity is created with the name of the zone (prefixed `all_`) to move all groups in a Leviosa Zone at the same time. + +## Retrieving the IP Address of the Leviosa Zone (WiFi bridge) + +This is needed when multiple Leviosa Zones are detected, to identify each Leviosa Zone: + +- Open the Leviosa App. +- Press/hold on any group name. After 1 second, a new screen will appear. +- Select the ‘Name’ tab at the top. +- The screen will now show the IP address of the Leviosa Zone that shade group is on. + +## Services that allow you to move your blinds to intermediate positions + +The Home Assistant user interface is useful to completely open or close your blinds. When you want your blinds to go to well defined intermediate positions, please [set](https://cdn.shopify.com/s/files/1/1346/0347/files/Leviosa_Shades_Programming_instructions.pdf?) the Mid-point positions with the Leviosa remote controller. These positions are stored in the Leviosa shade motor. If you do not program intermediate points, the shade will travel fully to the pre-set upper or lower limit. when using the following services: + +- Use `leviosa_shades.next_up_pos` to move Leviosa shades up to the next mid-point position. +- Use `leviosa_shades.next_down_pos` to move Leviosa shades down to the next mid-point position. + +Both services need the `entity_id` of the shade group that you want to move + +## Troubleshooting + +- Keep in mind that you cannot use the Home Assistant UI to move your blinds to arbitrary positions, only to completely open/close them. Use the services explained above to move to pre-set positions programmed directly into the motors using a Leviosa remote. +- If Home Assistant cannot find your Leviosa Zone hubs, double check that you can ping your Home Assistant instance as well as your Leviosa Zones from the same node in your network, on the same subnet. If you have a network switch that can filter multicast packets, check that it is not filtering SSDP traffic. Home Assistant can only discover your Leviosa Zone hubs if the SSDP advertisements can reach the Home Assistant instance. diff --git a/source/_integrations/nad.markdown b/source/_integrations/nad.markdown index 324c3472b84d..5536edde2a06 100644 --- a/source/_integrations/nad.markdown +++ b/source/_integrations/nad.markdown @@ -10,6 +10,11 @@ ha_domain: nad The `nad` platform allows you to control a [NAD receiver](https://nadelectronics.com/) through RS232, TCP and Telnet from Home Assistant. +Please note that the RS232 interface is only tested with the NAD T748v2, but is should work with more NAD receivers. +The Telnet interface is only tested with the NAD T787. + +## Configuration + To add an NAD receiver to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -18,12 +23,13 @@ media_player: - platform: nad serial_port: /dev/ttyUSB0 ``` + ```yaml # Example configuration.yaml entry for TCP configuration media_player: - platform: nad type: TCP - host: IP_ADDRESS + host: "IP_ADDRESS" ``` {% configuration %} @@ -89,7 +95,7 @@ A full configuration example could look like this: media_player: - platform: nad serial_port: /dev/ttyUSB0 - name: NAD Receiver + name: "NAD Receiver" min_volume: -60 max_volume: -20 sources: diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index e83c31cbd512..cff008c9358c 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -149,7 +149,7 @@ Set the domestic hot water setpoint on the OpenTherm Gateway. Not all boilers su | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `gateway_id` | no | The `gateway_id` as specified during configuration. -| `dhw_override` | no | The domestic hot water setpoint to set on the gateway. Values between 0 and 90 are accepted, but not all boilers support this range. Check the values of the `slave_dhw_min_setp` and `slave_dhw_max_setp` sensors to see the supported range on your boiler. +| `temperature` | no | The domestic hot water setpoint to set on the gateway. Values between 0 and 90 are accepted, but not all boilers support this range. Check the values of the `slave_dhw_min_setp` and `slave_dhw_max_setp` sensors to see the supported range on your boiler. ### Service `opentherm_gw.set_gpio_mode` diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index 97a90b73d591..0d20e8bcae40 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -104,6 +104,19 @@ giid: type: string {% endconfiguration %} +## 2 Factor Authentication Prerequisite + +Verisure added 2FA rules to Verisure My Pages that aren't supported through their third-party API integration. If you have 2FA enabled, which is forced by default, you might not be able to use this integration. Here is the suggested way to deactivate 2FA (if it's allowed in your region). + +You can deactivate 2FA for your admin account and use that for Home Assistant but this isn't recommended. The steps below sets up a specific Home Assistant user and gives it restricted access. + +1. Log in to Verisure My Pages as your admin user and create a new admin user for Home Assistant. +2. Log in as your newly created Home Assistant user, you'll be prompted to set up 2FA, do that and then log out. This will make sure the options below are available. +3. Log in as the Home Assistant user, browse to Account and subscription -> Account -> Login Credentials -> Disable 2FA.