diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml
index 51a06023e06..cdd13f49028 100644
--- a/.github/workflows/lock.yml
+++ b/.github/workflows/lock.yml
@@ -8,7 +8,7 @@ jobs:
lock:
runs-on: ubuntu-latest
steps:
- - uses: dessant/lock-threads@v2.1.1
+ - uses: dessant/lock-threads@v2.1.2
with:
github-token: ${{ github.token }}
issue-lock-inactive-days: "30"
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index d6864dd5139..90a1fdf002e 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -10,7 +10,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v2.3.4
- name: Setting up Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2.3.1
+ uses: actions/setup-node@v2.4.0
with:
node-version: 12.x
- name: Setup NPM cache
@@ -33,7 +33,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v2.3.4
- name: Setting up Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v2.3.1
+ uses: actions/setup-node@v2.4.0
with:
node-version: 12.x
- name: Setup NPM cache
@@ -57,7 +57,7 @@ jobs:
- name: Check out files from GitHub
uses: actions/checkout@v2.3.4
- name: Setting up Ruby 2.6
- uses: ruby/setup-ruby@v1.79.0
+ uses: ruby/setup-ruby@v1.81.0
with:
ruby-version: 2.6
- name: Setup Ruby Gems cache
diff --git a/CODEOWNERS b/CODEOWNERS
index 833629b9fc4..2d33b749660 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -11,6 +11,7 @@
source/_integrations/abode.markdown @shred86
source/_integrations/accuweather.markdown @bieniu
source/_integrations/acmeda.markdown @atmurray
+source/_integrations/adax.markdown @danielhiversen
source/_integrations/adguard.markdown @frenck
source/_integrations/advantage_air.markdown @Bre77
source/_integrations/aemet.markdown @noltari
@@ -87,7 +88,7 @@ source/_integrations/configurator.markdown @home-assistant/core
source/_integrations/control4.markdown @lawtancool
source/_integrations/conversation.markdown @home-assistant/core
source/_integrations/coolmaster.markdown @OnFreund
-source/_integrations/coronavirus.markdown @home_assistant/core
+source/_integrations/coronavirus.markdown @home-assistant/core
source/_integrations/counter.markdown @fabaff
source/_integrations/cover.markdown @home-assistant/core
source/_integrations/cpuspeed.markdown @fabaff
@@ -149,6 +150,7 @@ source/_integrations/fireservicerota.markdown @cyberjunky
source/_integrations/firmata.markdown @DaAwesomeP
source/_integrations/fixer.markdown @fabaff
source/_integrations/flick_electric.markdown @ZephireNZ
+source/_integrations/flipr.markdown @cnico
source/_integrations/flo.markdown @dmulcahey
source/_integrations/flock.markdown @fabaff
source/_integrations/flume.markdown @ChrisMandich @bdraco
@@ -165,6 +167,7 @@ source/_integrations/fronius.markdown @nielstron
source/_integrations/frontend.markdown @home-assistant/frontend
source/_integrations/garages_amsterdam.markdown @klaasnicolaas
source/_integrations/gdacs.markdown @exxamalte
+source/_integrations/generic_hygrostat.markdown @Shulyaka
source/_integrations/geniushub.markdown @zxdavb
source/_integrations/geo_json_events.markdown @exxamalte
source/_integrations/geo_rss_events.markdown @exxamalte
@@ -200,6 +203,7 @@ source/_integrations/homeassistant.markdown @home-assistant/core
source/_integrations/homekit.markdown @bdraco
source/_integrations/homekit_controller.markdown @Jc2k @bdraco
source/_integrations/homematic.markdown @pvizeli @danielperna84
+source/_integrations/honeywell.markdown @rdfurman
source/_integrations/http.markdown @home-assistant/core
source/_integrations/huawei_lte.markdown @scop @fphammerle
source/_integrations/huawei_router.markdown @abmantis
@@ -313,6 +317,7 @@ source/_integrations/netdata.markdown @fabaff
source/_integrations/nexia.markdown @bdraco
source/_integrations/nextbus.markdown @vividboarder
source/_integrations/nextcloud.markdown @meichthys
+source/_integrations/nfandroidtv.markdown @tkdrob
source/_integrations/nightscout.markdown @marciogranzotto
source/_integrations/nilu.markdown @hfurubotten
source/_integrations/nissan_leaf.markdown @filcole
@@ -368,6 +373,7 @@ source/_integrations/powerwall.markdown @bdraco @jrester
source/_integrations/profiler.markdown @bdraco
source/_integrations/progettihwsw.markdown @ardaseremet
source/_integrations/prometheus.markdown @knyar
+source/_integrations/prosegur.markdown @dgomes
source/_integrations/proxmoxve.markdown @k4ds3 @jhollowe @Corbeno
source/_integrations/ps4.markdown @ktnrg45
source/_integrations/push.markdown @dgomes
@@ -426,6 +432,7 @@ source/_integrations/sighthound.markdown @robmarkcole
source/_integrations/signal_messenger.markdown @bbernhard
source/_integrations/simplisafe.markdown @bachya
source/_integrations/sinch.markdown @bendikrb
+source/_integrations/siren.markdown @home-assistant/core @raman325
source/_integrations/sisyphus.markdown @jkeljo
source/_integrations/sky_hub.markdown @rogerselwyn
source/_integrations/slack.markdown @bachya
@@ -486,7 +493,7 @@ source/_integrations/tapsaff.markdown @bazwilliams
source/_integrations/tasmota.markdown @emontnemery
source/_integrations/tautulli.markdown @ludeeus
source/_integrations/tellduslive.markdown @fredrike
-source/_integrations/template.markdown @PhracturedBlue @tetienne
+source/_integrations/template.markdown @PhracturedBlue @tetienne @home-assistant/core
source/_integrations/tesla.markdown @zabuldon @alandtse
source/_integrations/tfiac.markdown @fredrike @mellado
source/_integrations/thethingsnetwork.markdown @fabaff
@@ -537,11 +544,12 @@ source/_integrations/wallbox.markdown @hesselonline
source/_integrations/waqi.markdown @andrey-git
source/_integrations/watson_tts.markdown @rutkai
source/_integrations/weather.markdown @fabaff
-source/_integrations/webostv.markdown @bendavid
+source/_integrations/webostv.markdown @bendavid @thecode
source/_integrations/websocket_api.markdown @home-assistant/core
source/_integrations/wemo.markdown @esev
source/_integrations/wiffi.markdown @mampfes
source/_integrations/wilight.markdown @leofig-rj
+source/_integrations/wirelesstag.markdown @sergeymaysak
source/_integrations/withings.markdown @vangorra
source/_integrations/wled.markdown @frenck
source/_integrations/wolflink.markdown @adamkrol93
@@ -559,6 +567,7 @@ source/_integrations/yandex_transport.markdown @rishatik92 @devbis
source/_integrations/yeelight.markdown @rytilahti @zewelor @shenxn
source/_integrations/yeelightsunflower.markdown @lindsaymarkward
source/_integrations/yi.markdown @bachya
+source/_integrations/youless.markdown @gjong
source/_integrations/zeroconf.markdown @bdraco
source/_integrations/zerproc.markdown @emlove
source/_integrations/zha.markdown @dmulcahey @adminiuga
diff --git a/Gemfile b/Gemfile
index d8550f568f1..ecb1af624cd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -21,7 +21,7 @@ group :jekyll_plugins do
end
gem 'sinatra', '2.1.0'
-gem 'nokogiri', '1.12.1'
+gem 'nokogiri', '1.12.3'
# 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 581564d716e..4a2f84ce853 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.6.0)
+ listen (3.7.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
@@ -74,10 +74,10 @@ GEM
multi_json (1.15.0)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
- nokogiri (1.12.1)
+ nokogiri (1.12.3)
mini_portile2 (~> 2.6.1)
racc (~> 1.4)
- nokogiri (1.12.1-x64-mingw32)
+ nokogiri (1.12.3-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.1)
- nokogiri (= 1.12.1)
+ nokogiri (= 1.12.3)
rake (= 13.0.6)
sass-globbing (= 1.1.5)
sassc (= 2.1.0)
diff --git a/_config.yml b/_config.yml
index af8df207535..2ed288f5ae7 100644
--- a/_config.yml
+++ b/_config.yml
@@ -107,9 +107,9 @@ social:
# Home Assistant release details
current_major_version: 2021
-current_minor_version: 7
-current_patch_version: 4
-date_released: 2021-07-21
+current_minor_version: 8
+current_patch_version: 8
+date_released: 2021-08-18
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
diff --git a/package-lock.json b/package-lock.json
index 1a2cef822b9..dc7e2816e76 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -478,6 +478,43 @@
"ms": "2.1.2"
}
},
+ "fault": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
+ "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
+ "dev": true,
+ "requires": {
+ "format": "^0.2.0"
+ }
+ },
+ "mdast-util-frontmatter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz",
+ "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==",
+ "dev": true,
+ "requires": {
+ "micromark-extension-frontmatter": "^0.2.0"
+ }
+ },
+ "micromark-extension-frontmatter": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz",
+ "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==",
+ "dev": true,
+ "requires": {
+ "fault": "^1.0.0"
+ }
+ },
+ "remark-frontmatter": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz",
+ "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==",
+ "dev": true,
+ "requires": {
+ "mdast-util-frontmatter": "^0.2.0",
+ "micromark-extension-frontmatter": "^0.2.0"
+ }
+ },
"unified": {
"version": "9.2.1",
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz",
@@ -604,6 +641,15 @@
"@types/ms": "*"
}
},
+ "@types/hast": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.2.tgz",
+ "integrity": "sha512-Op5W7jYgZI7AWKY5wQ0/QNMzQM7dGQPyW1rXKNiymVCy5iTfdPuGu4HhYNOM2sIv8gUfIuIdcYlXmAepwaowow==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "*"
+ }
+ },
"@types/is-empty": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@types/is-empty/-/is-empty-1.2.0.tgz",
@@ -637,6 +683,12 @@
"integrity": "sha512-TmVHsm43br64js9BqHWqiDZA+xMtbUpI1MBIA0EyiBmoV9pcEYFOSdj5fr6enZNfh4fChh+AGOLIzGwJnkshyQ==",
"dev": true
},
+ "@types/parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-ARATsLdrGPUnaBvxLhUlnltcMgn7pQG312S8ccdYlnyijabrX9RN/KN/iGj9Am96CoW8e/K9628BA7Bv4XHdrA==",
+ "dev": true
+ },
"@types/repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@types/repeat-string/-/repeat-string-1.6.1.tgz",
@@ -820,6 +872,12 @@
"integrity": "sha512-yB4oYSAa9yLcGyTbB4ItFwHw43QHdH129IJ5R+WvxOkWlyFnR5FAaBNnUq4mcxsTVZGh28bHoeTHMKXH1wZf3w==",
"dev": true
},
+ "character-entities-html4": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.0.0.tgz",
+ "integrity": "sha512-dwT2xh5ZhUAjyP96k57ilMKoTQyASaw9IAMR9U5c1lCu2RUni6O6jxfpUEdO2RcPT6TJFvr8pqsbami4Jk+2oA==",
+ "dev": true
+ },
"character-entities-legacy": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.3.tgz",
@@ -854,12 +912,6 @@
"readdirp": "~3.6.0"
}
},
- "co": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz",
- "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=",
- "dev": true
- },
"code-point-at": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
@@ -881,6 +933,12 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
+ "comma-separated-tokens": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz",
+ "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==",
+ "dev": true
+ },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -995,12 +1053,12 @@
"dev": true
},
"fault": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.3.tgz",
- "integrity": "sha512-sfFuP4X0hzrbGKjAUNXYvNqsZ5F6ohx/dZ9I0KQud/aiZNwg263r5L9yGB0clvXHCkzXh5W3t7RSHchggYIFmA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.0.tgz",
+ "integrity": "sha512-JsDj9LFcoC+4ChII1QpXPA7YIaY8zmqPYw7h9j5n7St7a0BBKfNnwEBAUQRBx70o2q4rs+BeSNHk8Exm6xE7fQ==",
"dev": true,
"requires": {
- "format": "^0.2.2"
+ "format": "^0.2.0"
}
},
"figgy-pudding": {
@@ -1162,12 +1220,137 @@
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"dev": true
},
+ "hast-util-from-parse5": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.0.tgz",
+ "integrity": "sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/parse5": "^6.0.0",
+ "@types/unist": "^2.0.0",
+ "hastscript": "^7.0.0",
+ "property-information": "^6.0.0",
+ "vfile": "^5.0.0",
+ "vfile-location": "^4.0.0",
+ "web-namespaces": "^2.0.0"
+ },
+ "dependencies": {
+ "unist-util-stringify-position": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz",
+ "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "vfile": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz",
+ "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz",
+ "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
+ }
+ }
+ },
+ "hast-util-is-element": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.1.tgz",
+ "integrity": "sha512-ag0fiZfRWsPiR1udvnSbaazJLGv8qd8E+/e3rW8rUZhbKG4HNJmFL4QkEceN+22BgE+uozXY30z/s+2dL6Z++g==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "hast-util-parse-selector": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.0.tgz",
+ "integrity": "sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0"
+ }
+ },
+ "hast-util-to-html": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.1.tgz",
+ "integrity": "sha512-S1mTqXvWVGIxrWw0xOHHvmevwCBFTRGNvXWsjE32IyEAlMhbMkK+ZuP6CAqkQ6Vb7swrehaHpfXHEI6voGDh0w==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "ccount": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-is-element": "^2.0.0",
+ "hast-util-whitespace": "^2.0.0",
+ "html-void-elements": "^2.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0",
+ "stringify-entities": "^4.0.0",
+ "unist-util-is": "^5.0.0"
+ },
+ "dependencies": {
+ "ccount": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.0.tgz",
+ "integrity": "sha512-VOR0NWFYX65n9gELQdcpqsie5L5ihBXuZGAgaPEp/U7IOSjnPMEH6geE+2f6lcekaNEfWzAHS45mPvSo5bqsUA==",
+ "dev": true
+ },
+ "unist-util-is": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
+ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
+ "dev": true
+ }
+ }
+ },
+ "hast-util-whitespace": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz",
+ "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==",
+ "dev": true
+ },
+ "hastscript": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.0.2.tgz",
+ "integrity": "sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "comma-separated-tokens": "^2.0.0",
+ "hast-util-parse-selector": "^3.0.0",
+ "property-information": "^6.0.0",
+ "space-separated-tokens": "^2.0.0"
+ }
+ },
"hosted-git-info": {
"version": "2.8.9",
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
+ "html-void-elements": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.0.tgz",
+ "integrity": "sha512-4OYzQQsBt0G9bJ/nM9/DDsjm4+fVdzAaPJJcWk5QwA3GIAPxQEeOR0rsI8HbDHQz5Gta8pVvGnnTNSbZVEVvkQ==",
+ "dev": true
+ },
"ignore": {
"version": "5.1.8",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
@@ -1600,9 +1783,9 @@
}
},
"mdast-comment-marker": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-1.1.2.tgz",
- "integrity": "sha512-vTFXtmbbF3rgnTh3Zl3irso4LtvwUq/jaDvT2D1JqTGAwaipcS7RpTxzi6KjoRqI9n2yuAhzLDAC8xVTF3XYVQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-comment-marker/-/mdast-comment-marker-2.0.0.tgz",
+ "integrity": "sha512-LQ4sf7vUzxz4mQQlzzBDgjaCJO5A0lkIAT9TyeNMfqaP31ooP1Qw9hprf7/V3NCo5FA1nvo5gbnfLVRY79QlDQ==",
"dev": true
},
"mdast-util-find-and-replace": {
@@ -1691,12 +1874,12 @@
}
},
"mdast-util-frontmatter": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz",
- "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.0.tgz",
+ "integrity": "sha512-7itKvp0arEVNpCktOET/eLFAYaZ+0cNjVtFtIPxgQ5tV+3i+D4SDDTjTzPWl44LT59PC+xdx+glNTawBdF98Mw==",
"dev": true,
"requires": {
- "micromark-extension-frontmatter": "^0.2.0"
+ "micromark-extension-frontmatter": "^1.0.0"
}
},
"mdast-util-gfm": {
@@ -1960,12 +2143,14 @@
}
},
"micromark-extension-frontmatter": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz",
- "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz",
+ "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==",
"dev": true,
"requires": {
- "fault": "^1.0.0"
+ "fault": "^2.0.0",
+ "micromark-util-character": "^1.0.0",
+ "micromark-util-symbol": "^1.0.0"
}
},
"micromark-extension-gfm": {
@@ -2399,6 +2584,12 @@
"error-ex": "^1.2.0"
}
},
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ },
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
@@ -2473,6 +2664,12 @@
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true
},
+ "property-information": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.0.1.tgz",
+ "integrity": "sha512-F4WUUAF7fMeF4/JUFHNBWDaKDXi2jbvqBW/y6o5wsf3j19wTZ7S60TmtB5HoBhtgw7NKQRMWuz5vk2PR0CygUg==",
+ "dev": true
+ },
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -2598,6 +2795,41 @@
"define-properties": "^1.1.3"
}
},
+ "rehype": {
+ "version": "12.0.0",
+ "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.0.tgz",
+ "integrity": "sha512-gZcttmf9R5IYHb8AlI1rlmWqXS1yX0rSB/S5ZGJs8atfYZy2DobvH3Ic/gSzB+HL/+oOHPtBguw1TprfhxXBgQ==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "rehype-parse": "^8.0.0",
+ "rehype-stringify": "^9.0.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "rehype-parse": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.2.tgz",
+ "integrity": "sha512-Y5AvUbTareuAcCQITTbC9SGagm1IvOOSfG5CTTaOUW0pEeoNHkOq4YmMaEywUmSwwOgel3gOF3O7Mwl1acoBzg==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "hast-util-from-parse5": "^7.0.0",
+ "parse5": "^6.0.0",
+ "unified": "^10.0.0"
+ }
+ },
+ "rehype-stringify": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-9.0.1.tgz",
+ "integrity": "sha512-xfhm8Erp7yL+RRgYmtZMJUqu6OSguwOQMfR2LkqT1dgNDQheClFMaDPVERy4/su7o0eHo0PKFGn4L68kOjVdRQ==",
+ "dev": true,
+ "requires": {
+ "@types/hast": "^2.0.0",
+ "hast-util-to-html": "^8.0.0",
+ "unified": "^10.0.0"
+ }
+ },
"remark": {
"version": "14.0.1",
"resolved": "https://registry.npmjs.org/remark/-/remark-14.0.1.tgz",
@@ -2798,13 +3030,15 @@
}
},
"remark-frontmatter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz",
- "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.0.tgz",
+ "integrity": "sha512-0J+2czWAS9sz9baJJel4tTUnNhMI7wYgih99Hxhdeq2GpdI1Ctu0iol6zAsWw5xa+jLsZXNiwEnnJAJo3XX3hw==",
"dev": true,
"requires": {
- "mdast-util-frontmatter": "^0.2.0",
- "micromark-extension-frontmatter": "^0.2.0"
+ "@types/mdast": "^3.0.0",
+ "mdast-util-frontmatter": "^1.0.0",
+ "micromark-extension-frontmatter": "^1.0.0",
+ "unified": "^10.0.0"
}
},
"remark-gfm": {
@@ -2818,103 +3052,146 @@
}
},
"remark-lint": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-8.0.0.tgz",
- "integrity": "sha512-ESI8qJQ/TIRjABDnqoFsTiZntu+FRifZ5fJ77yX63eIDijl/arvmDvT+tAf75/Nm5BFL4R2JFUtkHRGVjzYUsg==",
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint/-/remark-lint-9.0.1.tgz",
+ "integrity": "sha512-q4VFsA7LEG4REJhR2P4A6CU9b4cCQL53845CX74Z4N/W0EgB9mm/GXpYzjbEqgkMPl5ctP8yp/vBYTNmjfUCtw==",
"dev": true,
"requires": {
- "remark-message-control": "^6.0.0"
+ "@types/mdast": "^3.0.0",
+ "remark-message-control": "^7.0.0",
+ "unified": "^10.1.0"
}
},
"remark-lint-fenced-code-flag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-2.0.1.tgz",
- "integrity": "sha512-+COnWHlS/h02FMxoZWxNlZW3Y8M0cQQpmx3aNCbG7xkyMyCKsMLg9EmRvYHHIbxQCuF3JT0WWx5AySqlc7d+NA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-3.0.1.tgz",
+ "integrity": "sha512-HsEhvalGxCauZO6OAnaVzIBycfaHLuyZxy1KlniWXQJKZ6EjRAsWwkZHYx9qfPl/ZW7zDG+xAoWTqdHjZW/BTg==",
"dev": true,
"requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-position": "^3.0.0",
- "unist-util-visit": "^2.0.0"
+ "@types/mdast": "^3.0.0",
+ "unified": "^10.0.0",
+ "unified-lint-rule": "^2.0.0",
+ "unist-util-generated": "^2.0.0",
+ "unist-util-position": "^4.0.0",
+ "unist-util-visit": "^4.0.0"
},
"dependencies": {
"unist-util-is": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz",
- "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
+ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
"dev": true
},
"unist-util-visit": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz",
- "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz",
+ "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^5.0.0"
}
},
"unist-util-visit-parents": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz",
- "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz",
+ "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
+ "unist-util-is": "^5.0.0"
}
}
}
},
"remark-lint-no-shell-dollars": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-2.0.2.tgz",
- "integrity": "sha512-zhkHZOuyaD3r/TUUkkVqW0OxsR9fnSrAnHIF63nfJoAAUezPOu8D1NBsni6rX8H2DqGbPYkoeWrNsTwiKP0yow==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-3.0.1.tgz",
+ "integrity": "sha512-QvnA8Ltj3FPaAqUu0DebKYv66LFndTk0fXVZ9rQWOjTEVIKImy9Dy59kVqwYMpCwZbJkpigu2bMl/7UG/BA0XA==",
"dev": true,
"requires": {
- "unified-lint-rule": "^1.0.0",
- "unist-util-generated": "^1.1.0",
- "unist-util-visit": "^2.0.0"
+ "@types/mdast": "^3.0.0",
+ "unified": "^10.0.0",
+ "unified-lint-rule": "^2.0.0",
+ "unist-util-generated": "^2.0.0",
+ "unist-util-visit": "^4.0.0"
},
"dependencies": {
"unist-util-is": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz",
- "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
+ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
"dev": true
},
"unist-util-visit": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.2.tgz",
- "integrity": "sha512-HoHNhGnKj6y+Sq+7ASo2zpVdfdRifhTgX2KTU3B/sO/TTlZchp7E3S4vjRzDJ7L60KmrCPsQkVK3lEF3cz36XQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.0.0.tgz",
+ "integrity": "sha512-3HWTvrtU10/E7qgPznBfiOyG0TXj9W8c1GSfaI8L9GkaG1pLePiQPZ7E35a0R3ToQ/zcy4Im6aZ9WBgOTnv1MQ==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^5.0.0"
}
},
"unist-util-visit-parents": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.0.2.tgz",
- "integrity": "sha512-yJEfuZtzFpQmg1OSCyS9M5NJRrln/9FbYosH3iW0MG402QbdbaB8ZESwUv9RO6nRfLAKvWcMxCwdLWOov36x/g==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.0.0.tgz",
+ "integrity": "sha512-CVaLOYPM/EaFTYMytbaju3Tw4QI3DHnHFnL358FkEu0hZOzSm/hqBdVwOQDR60jF5ZzhB1tlZlRH0ll/yekZIQ==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
+ "unist-util-is": "^5.0.0"
}
}
}
},
"remark-message-control": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-6.0.0.tgz",
- "integrity": "sha512-k9bt7BYc3G7YBdmeAhvd3VavrPa/XlKWR3CyHjr4sLO9xJyly8WHHT3Sp+8HPR8lEUv+/sZaffL7IjMLV0f6BA==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/remark-message-control/-/remark-message-control-7.0.0.tgz",
+ "integrity": "sha512-KZySoC97TrMPYfIZ9vJ7wxvQwniy68K6WCY3vmSedDN5YuGfdVOpMj6sjaZQcqbWZV9n7BhrT70E3xaUTtk4hA==",
"dev": true,
"requires": {
- "mdast-comment-marker": "^1.0.0",
- "unified-message-control": "^3.0.0"
+ "@types/mdast": "^3.0.0",
+ "mdast-comment-marker": "^2.0.0",
+ "rehype": "^12.0.0",
+ "unified": "^10.0.0",
+ "unified-message-control": "^4.0.0",
+ "vfile": "^5.0.0"
+ },
+ "dependencies": {
+ "unist-util-stringify-position": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz",
+ "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "vfile": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz",
+ "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz",
+ "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
+ }
}
},
"remark-parse": {
@@ -3091,10 +3368,10 @@
"is-fullwidth-code-point": "^3.0.0"
}
},
- "sliced": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz",
- "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=",
+ "space-separated-tokens": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz",
+ "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==",
"dev": true
},
"spdx-correct": {
@@ -3155,6 +3432,24 @@
"safe-buffer": "~5.2.0"
}
},
+ "stringify-entities": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.1.tgz",
+ "integrity": "sha512-gmMQxKXPWIO3NXNSPyWNhlYcBNGpPA/487D+9dLPnU4xBnIrnHdr8cv5rGJOS/1BRxEXRb7uKwg7BA36IWV7xg==",
+ "dev": true,
+ "requires": {
+ "character-entities-html4": "^2.0.0",
+ "character-entities-legacy": "^2.0.0"
+ },
+ "dependencies": {
+ "character-entities-legacy": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-2.0.0.tgz",
+ "integrity": "sha512-YwaEtEvWLpFa6Wh3uVLrvirA/ahr9fki/NUd/Bd4OR6EdJ8D22hovYQEOUCBfQfcqnC4IAMGMsHXY1eXgL4ZZA==",
+ "dev": true
+ }
+ }
+ },
"strip-ansi": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
@@ -3617,56 +3912,127 @@
}
},
"unified-lint-rule": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-1.0.4.tgz",
- "integrity": "sha512-q9wY6S+d38xRAuWQVOMjBQYi7zGyKkY23ciNafB8JFVmDroyKjtytXHCg94JnhBCXrNqpfojo3+8D+gmF4zxJQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.0.1.tgz",
+ "integrity": "sha512-2RzZuuuWW+ifftM0zd/ZEng0Hb5lah+Zi+ZL/ybj8BrLO/TH2aQAMYvG+iC95aCg2FkWu/pcvVvHqsh2UMmzPg==",
"dev": true,
"requires": {
- "wrapped": "^1.0.1"
+ "@types/unist": "^2.0.0",
+ "trough": "^2.0.0",
+ "unified": "^10.0.0",
+ "vfile": "^5.0.0"
+ },
+ "dependencies": {
+ "trough": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/trough/-/trough-2.0.2.tgz",
+ "integrity": "sha512-FnHq5sTMxC0sk957wHDzRnemFnNBvt/gSY99HzK8F7UP5WAbvP70yX5bd7CjEQkN+TjdxwI7g7lJ6podqrG2/w==",
+ "dev": true
+ },
+ "unist-util-stringify-position": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz",
+ "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "vfile": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz",
+ "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz",
+ "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
+ }
}
},
"unified-message-control": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-3.0.1.tgz",
- "integrity": "sha512-K2Kvvp1DBzeuxYLLsumZh/gDWUTl4e2z/P3VReFirC78cfHKtQifbhnfRrSBtKtd1Uc6cvYTW0/SZIUaMAEcTg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/unified-message-control/-/unified-message-control-4.0.0.tgz",
+ "integrity": "sha512-1b92N+VkPHftOsvXNOtkJm4wHlr+UDmTBF2dUzepn40oy9NxanJ9xS1RwUBTjXJwqr2K0kMbEyv1Krdsho7+Iw==",
"dev": true,
"requires": {
- "unist-util-visit": "^2.0.0",
- "vfile-location": "^3.0.0"
+ "@types/unist": "^2.0.0",
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit": "^3.0.0",
+ "vfile": "^5.0.0",
+ "vfile-location": "^4.0.0",
+ "vfile-message": "^3.0.0"
},
"dependencies": {
"unist-util-is": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.0.2.tgz",
- "integrity": "sha512-Ofx8uf6haexJwI1gxWMGg6I/dLnF2yE+KibhD3/diOqY2TinLcqHXCV6OI5gFVn3xQqDH+u0M625pfKwIwgBKQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz",
+ "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==",
"dev": true
},
+ "unist-util-stringify-position": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz",
+ "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
"unist-util-visit": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz",
- "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz",
+ "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0",
- "unist-util-visit-parents": "^3.0.0"
+ "unist-util-is": "^5.0.0",
+ "unist-util-visit-parents": "^4.0.0"
}
},
"unist-util-visit-parents": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.0.tgz",
- "integrity": "sha512-0g4wbluTF93npyPrp/ymd3tCDTMnP0yo2akFD2FIBAYXq/Sga3lwaU1D8OYKbtpioaI6CkDcQ6fsMnmtzt7htw==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz",
+ "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==",
"dev": true,
"requires": {
"@types/unist": "^2.0.0",
- "unist-util-is": "^4.0.0"
+ "unist-util-is": "^5.0.0"
}
},
- "vfile-location": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.1.0.tgz",
- "integrity": "sha512-FCZ4AN9xMcjFIG1oGmZKo61PjwJHRVA+0/tPUP2ul4uIwjGGndIxavEMRpWn5p4xwm/ZsdXp9YNygf1ZyE4x8g==",
- "dev": true
+ "vfile": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz",
+ "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz",
+ "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
}
}
},
@@ -3677,9 +4043,9 @@
"dev": true
},
"unist-util-generated": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.4.tgz",
- "integrity": "sha512-SA7Sys3h3X4AlVnxHdvN/qYdr4R38HzihoEVY2Q2BZu8NHWDnw5OGcC/tXWjQfd4iG+M6qRFNIRGqJmp2ez4Ww==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz",
+ "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==",
"dev": true
},
"unist-util-inspect": {
@@ -3698,9 +4064,9 @@
"dev": true
},
"unist-util-position": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz",
- "integrity": "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz",
+ "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==",
"dev": true
},
"unist-util-stringify-position": {
@@ -3768,6 +4134,49 @@
"vfile-message": "^2.0.0"
}
},
+ "vfile-location": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.0.1.tgz",
+ "integrity": "sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "vfile": "^5.0.0"
+ },
+ "dependencies": {
+ "unist-util-stringify-position": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz",
+ "integrity": "sha512-SdfAl8fsDclywZpfMDTVDxA2V7LjtRDTOFd44wUJamgl6OlVngsqWjxvermMYf60elWHbxhuRCZml7AnuXCaSA==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0"
+ }
+ },
+ "vfile": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.0.2.tgz",
+ "integrity": "sha512-5cV+K7tX83MT3bievROc+7AvHv0GXDB0zqbrTjbOe+HRbkzvY4EP+wS3IR77kUBCoWFMdG9py18t0sesPtQ1Rw==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0",
+ "vfile-message": "^3.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.0.2.tgz",
+ "integrity": "sha512-UUjZYIOg9lDRwwiBAuezLIsu9KlXntdxwG+nXnjuQAHvBpcX3x0eN8h+I7TkY5nkCXj+cWVp4ZqebtGBvok8ww==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^3.0.0"
+ }
+ }
+ }
+ },
"vfile-message": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
@@ -3918,22 +4327,18 @@
}
}
},
+ "web-namespaces": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.0.tgz",
+ "integrity": "sha512-dE7ELZRVWh0ceQsRgkjLgsAvwTuv3kcjSY/hLjqL0llleUlQBDjE9JkB9FCBY5F2mnFEwiyJoowl8+NVGHe8dw==",
+ "dev": true
+ },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
- "wrapped": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wrapped/-/wrapped-1.0.1.tgz",
- "integrity": "sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI=",
- "dev": true,
- "requires": {
- "co": "3.1.0",
- "sliced": "^1.0.1"
- }
- },
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
diff --git a/package.json b/package.json
index a7f2c64757b..3502f7f7199 100644
--- a/package.json
+++ b/package.json
@@ -5,10 +5,10 @@
"dependencies": {},
"devDependencies": {
"remark-cli": "^10.0.0",
- "remark-frontmatter": "^3.0.0",
- "remark-lint": "^8.0.0",
- "remark-lint-fenced-code-flag": "^2.0.1",
- "remark-lint-no-shell-dollars": "^2.0.2",
+ "remark-frontmatter": "^4.0.0",
+ "remark-lint": "^9.0.1",
+ "remark-lint-fenced-code-flag": "^3.0.1",
+ "remark-lint-no-shell-dollars": "^3.0.1",
"remark-stringify": "^10.0.0",
"textlint": "^12.0.2",
"textlint-rule-common-misspellings": "^1.0.1",
diff --git a/plugins/my.rb b/plugins/my.rb
index 89941e4e762..7ec7cd19ea3 100644
--- a/plugins/my.rb
+++ b/plugins/my.rb
@@ -20,11 +20,11 @@ module Jekyll
MSG
end
end
-
+
def render(context)
# We parse on render, as we now have context
options = parse_options(@options, context)
-
+
# Base URI
uri = URI.join("https://my.home-assistant.io/redirect/", @redirect)
@@ -87,15 +87,17 @@ module Jekyll
DEFAULT_TITLES = {
"blueprint_import" => "Import Blueprint",
"cloud" => "Home Assistant Cloud",
+ "config_energy" => "Energy Configuration",
"config_flow_start" => "Add Integration",
"config_mqtt" => "MQTT Configuration",
- "config_zha" => "ZHA Configuration",
+ "config_zha" => "ZHA Configuration",
"config_zwave_js" => "Z-Wave JS Configuration",
"config" => "Configuration",
"developer_events" => "Events",
"developer_services" => "Services",
"developer_states" => "States",
"developer_template" => "Templates",
+ "energy" => "Energy",
"general" => "General Settings",
"info" => "Information",
"supervisor_info" => "Supervisor Information",
@@ -108,7 +110,7 @@ module Jekyll
# Split along 3 possible forms: key="value", key=value, or just key
input.scan(OPTIONS_REGEX) do |opt|
key, value = opt.split("=")
- if !value.nil?
+ if !value.nil?
if value&.include?('"')
value.delete!('"')
else
diff --git a/sass/custom/_landingpage.scss b/sass/custom/_landingpage.scss
index fdbb5fe644b..1a6f53f8b04 100644
--- a/sass/custom/_landingpage.scss
+++ b/sass/custom/_landingpage.scss
@@ -35,6 +35,7 @@ $ha__primary_color: #03a9f4;
line-height: 55px;
text-align: center;
color: #ffffff;
+ text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.75);
bottom: 226px;
svg {
stroke: $ha__primary_color;
@@ -865,7 +866,7 @@ $ha__primary_color: #03a9f4;
$landingpage__hero_height: 500px;
#landingpage {
.site-header {
- background-color: #ffffff66;
+ background-color: #ffffffe8;
transition: background 0.5s;
ul {
@@ -911,7 +912,7 @@ $ha__primary_color: #03a9f4;
.section-content {
width: 100%;
- padding: 32px 4px;
+ padding: 32px 8px;
.header {
width: 100%;
diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown
index 3e0397b7808..bbbad2cdce6 100644
--- a/source/_docs/automation/templating.markdown
+++ b/source/_docs/automation/templating.markdown
@@ -9,7 +9,7 @@ The template variable `this` is also available when evaluating any `trigger_vari
## Available this Data
-`this` is a state object. [State Objects](docs/configuration/state_object) provides a comprehensive description for the properties of `this` and `this.attributes`.
+`this` is a state object. [State Objects](/docs/configuration/state_object) provides a comprehensive description for the properties of `this` and `this.attributes`.
## Available Trigger Data
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index 7b33c2a734e..56d7ee98b2e 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -230,7 +230,7 @@ automation:
Listing above and below together means the numeric_state has to be between the two values.
-In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (from 17 and below or 25 and above). It will only fire again, once it has left the defined range and enters it again.
+In the example above, the trigger would fire a single time if a numeric_state goes into the 17.1-24.9 range (above 17 and below 25). It will only fire again, once it has left the defined range and enters it again.
Number helpers (`input_number` entities), `number` and `sensor` entities that
diff --git a/source/_docs/blueprint/schema.markdown b/source/_docs/blueprint/schema.markdown
index 2f88a109dc4..b47b1e125a3 100644
--- a/source/_docs/blueprint/schema.markdown
+++ b/source/_docs/blueprint/schema.markdown
@@ -121,7 +121,7 @@ A blueprint can have as many inputs as you like.
The inputs are available as custom YAML tags, but not as template variables.
To use a blueprint input in a template, it first needs to be exposed as either
-a [script level variable](/integrations/script/#-configuration-variables) or in
+a [script level variable](/integrations/script/#configuration-variables) or in
a [variable script step](/docs/scripts/#variables).
```yaml
diff --git a/source/_docs/configuration.markdown b/source/_docs/configuration.markdown
index 5b61f9289a5..9cabf86087d 100644
--- a/source/_docs/configuration.markdown
+++ b/source/_docs/configuration.markdown
@@ -5,7 +5,7 @@ description: "Configuring Home Assistant via text files."
While you can configure most of Home Assistant directly from the user interface under {% my configuration %}, some parts need you to edit `configuration.yaml`. This file contains integrations to be loaded along with their configurations. Throughout the documentation you will find snippets that you can add to your configuration file to enable specific functionality.
-If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/getting-started/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml).
+If you run into trouble while configuring Home Assistant, refer to the [configuration troubleshooting page](/docs/configuration/troubleshooting/) and the [`configuration.yaml` examples](/examples/#example-configurationyaml).
## Editing `configuration.yaml`
diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown
index 8142a9c56ee..9487c1fba62 100644
--- a/source/_docs/configuration/basic.markdown
+++ b/source/_docs/configuration/basic.markdown
@@ -14,7 +14,7 @@ homeassistant:
longitude: 117.22743
elevation: 430
unit_system: metric
- currency: "$",
+ currency: USD
time_zone: "America/Los_Angeles"
external_url: "https://www.example.com"
internal_url: "http://homeassistant.local:8123"
@@ -61,7 +61,7 @@ time_zone:
required: false
type: string
currency:
- description: The default currency symbol for your location.
+ description: "Pick your currency code from the column **Code** of [Wikipedia's list of ISO 4217 active codes](https://en.wikipedia.org/wiki/ISO_4217#Active_codes)"
required: false
type: string
external_url:
diff --git a/source/_docs/energy.markdown b/source/_docs/energy.markdown
index 4158c793b2a..c794713ea27 100644
--- a/source/_docs/energy.markdown
+++ b/source/_docs/energy.markdown
@@ -5,6 +5,8 @@ description: "How to get started using home energy management in Home Assistant.
Home Assistant allows you to get on top of your energy use with its home energy management feature. Gain new insights, optimize your solar panel production, plan energy usage and save money.
+{% my energy badge %} {% my config_energy badge %}
+
Home Assistant works with three different types of information sources. You can start using it even if you just have one source connected to Home Assistant. Every source you add will complement the other sources, giving you even more insight into energy in your home.
Home Assistant is an open platform and so home energy management is not restricted to specific hardware. Any energy monitoring hardware that integrates with Home Assistant can be used as a data source. Check out the following sections for in-depth explanations and hardware recommendations.
diff --git a/source/_docs/energy/electricity-grid.markdown b/source/_docs/energy/electricity-grid.markdown
index fc8f8fbe509..8e230c7e9d0 100644
--- a/source/_docs/energy/electricity-grid.markdown
+++ b/source/_docs/energy/electricity-grid.markdown
@@ -23,9 +23,9 @@ Home Assistant will need to know the amount of energy flowing through your meter
CT clamp sensors measure the instantaneous current passing through an electrical wire. To translate this into electrical power (W) you also need a voltage measurement, because Power = Current x Voltage.
-In Home Assistant we have support for off-the-shelf CT clamp sensors and you can build your own with ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html).
+In Home Assistant we have support for off-the-shelf CT clamp sensors and you can build your own with ESPHome's [CT Clamp Current sensor](https://esphome.io/components/sensor/ct_clamp.html). You can also use a dedicated energy meter sensor in ESPHome, which outputs more detailed data, like the [ATM90E32](https://esphome.io/components/sensor/atm90e32.html).
-The off-the-shelf solution that we advice is the [Shelly EM](https://shop.shelly.cloud/shelly-em-2-x-120a-clamp-wifi-smart-home-automation?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality integration.
+The off-the-shelf solution that we advise is the [Shelly EM](https://shop.shelly.cloud/shelly-em-2-x-120a-clamp-wifi-smart-home-automation?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq). The device has a local API, updates are pushed to Home Assistant and it has a high quality integration.
In case of three-phase electrical systems, attention should be drawn to the fact that the current measurement of a given phase is matched to the voltage of the same phase, otherwise the power measurements will be incorrect.
@@ -47,7 +47,9 @@ We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to devel
Many meters, including older ones, have an LED that will flash whenever energy passes through it. For example, each flash is a 1/1000th kWh. By monitoring the time between flashes it’s possible to determine the energy consumption.
-We have developed [Home Assistant Glow](https://github.com/klaasnicolaas/home-assistant-glow), an open source solution powered by ESPHome's [pulse meter sensor](https://esphome.io/components/sensor/pulse_meter.html).
+We have developed [Home Assistant Glow](https://github.com/klaasnicolaas/home-assistant-glow), an open source solution powered by ESPHome's [pulse meter sensor](https://esphome.io/components/sensor/pulse_meter.html). You put it on top of the activity LED of your electricity meter and it will bring your consumption into Home Assistant.
+
+

diff --git a/source/_docs/energy/individual-devices.markdown b/source/_docs/energy/individual-devices.markdown
index 99f5fcdd43d..c84939cd5e3 100644
--- a/source/_docs/energy/individual-devices.markdown
+++ b/source/_docs/energy/individual-devices.markdown
@@ -17,10 +17,12 @@ Depending on what protocols you use at home, you can use Zigbee, Z-Wave or Wi-Fi
Smart relays sit behind your "normal" switches and make them smart. It allows you to control the devices via Home Assistant and via the connected buttons/switches.
+{% comment %}
We recommend the Shelly brand because they have a local API that updates Home Assistant as soon as something happens and it has a high quality integration:
- - [Shelly 1L](https://shop.shelly.cloud/shelly-1l-wifi-smart-home-automation?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq)
+ - [Shelly 1PM](https://shop.shelly.cloud/shelly-1pm-wifi-smart-home-automation-1?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq)
- [Shelly 2.5](https://shop.shelly.cloud/shelly-2.5-ce-ul-wifi-smart-home-automation?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq)
+ {% endcomment %}
diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown
index b5f9b00c127..b0247eeaa4d 100644
--- a/source/_docs/mqtt/discovery.markdown
+++ b/source/_docs/mqtt/discovery.markdown
@@ -303,6 +303,7 @@ Supported abbreviations for device registry configuration:
The following software has built-in support for MQTT discovery:
- [Arilux AL-LC0X LED controllers](https://github.com/mertenats/Arilux_AL-LC0X)
+- [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt)
- [ESPHome](https://esphome.io)
- [ESPurna](https://github.com/xoseperez/espurna)
- [IOTLink](https://iotlink.gitlab.io) (starting with 2.0.0)
@@ -311,6 +312,8 @@ The following software has built-in support for MQTT discovery:
- [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0)
- [SmartHome](https://github.com/roncoa/SmartHome)
- [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e, development halted)
+- [Teleinfo MQTT](https://github.com/fmartinou/teleinfo-mqtt) (starting with 3.0.0)
+- [What's up Docker?](https://github.com/fmartinou/whats-up-docker) (starting with 3.5.0)
- [WyzeSense2MQTT](https://github.com/raetha/wyzesense2mqtt)
- [Xiaomi DaFang Hacks](https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks)
- [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt)
diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown
index 98dd5df48ee..f76598b68eb 100644
--- a/source/_docs/scripts.markdown
+++ b/source/_docs/scripts.markdown
@@ -674,4 +674,4 @@ automation:
[service calls page]: /getting-started/scripts-service-calls/
[conditions page]: /getting-started/scripts-conditions/
[shorthand-template]: /docs/scripts/conditions/#template-condition-shorthand-notation
-[script variables]: /integrations/script/#-configuration-variables
+[script variables]: /integrations/script/#configuration-variables
diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown
index e806ede7010..55aaaa829cb 100644
--- a/source/_docs/z-wave/controllers.markdown
+++ b/source/_docs/z-wave/controllers.markdown
@@ -13,13 +13,12 @@ This Z-Wave integration is deprecated and replaced with a [new implementation ba
You need to have a compatible Z-Wave stick or module installed. This needs to be a *static controller*, which most Z-Wave sticks and modules will be. If yours is a *bridge* device then it won't work with [OpenZWave](http://openzwave.com/), which is what provides Home Assistant's Z-Wave capabilities. The following devices have been confirmed to work:
-- Aeotec Z-Stick Series 5 (see note below)
+- Aeotec Z-Stick Gen5 (see note below)
- Everspring USB stick - Gen 5
- GoControl HUSBZB-1 stick
- Sigma Designs UZB stick
- Silicon Labs SLUSB7000A
- Vision USB stick - Gen5
-- Zooz Z-Wave Plus S2 stick ZST10
- ZWave.me Razberry Board
- ZWave.me UZB1 stick
@@ -34,7 +33,6 @@ We recommend that you purchase a [Z-Wave Plus](https://z-wavealliance.org/z-wave
The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support:
- [Vera](/integrations/vera/)
-- [Wink](/integrations/wink/)
- [Fibaro](/integrations/fibaro/)
- [SmartThings](/integrations/smartthings/)
diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md
index 73d00f256ee..36829242140 100644
--- a/source/_includes/installation/operating_system.md
+++ b/source/_includes/installation/operating_system.md
@@ -54,6 +54,10 @@ We will need a few things to get started with installing Home Assistant. Links b
Prerequisites
This guide assumes that you have a dedicated generic x86 PC (typically an Intel or AMD-based system) available to exclusively run Home Assistant Operating System. The system must be 64-bit capable and able to boot using UEFI. Pretty much all systems produced in the last 10 years support the UEFI boot mode.
+
+Summary
+
+You will need to write the HAOS (Home Assistant OS) disk image directly to your boot media, and then configure your x86 to boot from this media, using UEFI boot mode.
### Configure the BIOS
@@ -69,15 +73,15 @@ To boot Home Assistant OS the BIOS needs to have UEFI boot mode enabled and Secu
1. Disable Secure Boot

-As a next step, we need to write the Operating System image to the installation media. Depending on your system this can be a S-ATA hard disk, S-ATA SSD, a M.2 SSD or even a eMMC. Home Assistant Operating System has no integrated installer. You need to use your Desktop computer (e.g. by using a USB to S-ATA adapter) or boot a live operating system on your target system to install Home Assistant Operating System.
+As a next step, we need to write the Operating System image to the target boot media (Your "boot media" is the disk, SSD, or eMMC that your x86-64 hardware will boot from when it is running Home Assistant). Depending on your system this can be a S-ATA hard disk, S-ATA SSD, a M.2 SSD or even a eMMC. Home Assistant Operating System has no integrated installer. You need to use your Desktop computer (e.g. by using a USB to S-ATA adapter) or boot a live operating system on your target system to install Home Assistant Operating System, by writing the disk image directly onto the boot media for your x86 system.
-If you prefer to use a live operating system, follow the instructions of your Live distribution (e.g., [this Ubuntu guide](https://ubuntu.com/tutorials/try-ubuntu-before-you-install)). Once you booted the live operating system, the following steps on how-to write the image to your installation media can be followed.
+If you prefer to use a live operating system, follow the instructions of your Live distribution (e.g., [this Ubuntu guide](https://ubuntu.com/tutorials/try-ubuntu-before-you-install)). Once you booted the live operating system, the following steps on how to write the image to your boot media can be followed.
{% endif %}
-### Write the image to your installation media
+### Write the image to your boot media
-1. Attach the installation media ({{site.installation.types[page.installation_type].installation_media}}) to your computer
+1. Attach the Home Assistant boot media ({{site.installation.types[page.installation_type].installation_media}}) to your computer
2. Download and start Balena Etcher
3. Select "Flash from URL"

@@ -127,11 +131,11 @@ _Select and copy the URL or use the "copy" button that appear when you hover it.
### Start up your {{site.installation.types[page.installation_type].board}}
{% if page.installation_type == 'generic-x86-64' %}
-1. If you used your Desktop system to write to your installation media, install the installation media ({{site.installation.types[page.installation_type].installation_media}}) to the target system. Otherwise, shutdown the live operating system and make sure to remove the USB flash drive you have been using for the live system.
+1. If you used your Desktop system to write to your boot media, install the boot media ({{site.installation.types[page.installation_type].installation_media}}) into the target system. Otherwise, shutdown the live operating system and make sure to remove the USB flash drive you have been using for the live system.
2. Make sure an ethernet cable for network is plugged in
3. Power the system on.
{% else %}
-1. Insert the installation media ({{site.installation.types[page.installation_type].installation_media}}) you just created
+1. Insert the boot media ({{site.installation.types[page.installation_type].installation_media}}) you just created
2. Attach a ethernet cable for network.
3. Attach a cable for power
{% endif %}
diff --git a/source/_integrations/august.markdown b/source/_integrations/august.markdown
index 2d82264b568..3d06a581a74 100644
--- a/source/_integrations/august.markdown
+++ b/source/_integrations/august.markdown
@@ -21,7 +21,18 @@ ha_platforms:
- sensor
---
-The `august` integration allows you to integrate your [August](https://august.com/) devices in Home Assistant.
+The `august` integration allows you to integrate your [August](https://august.com/) and some Yale Access devices in Home Assistant.
+
+{% include integrations/config_flow.md %}
+
+### Known Working Devices
+
+- August Wi-Fi Smart Lock (Gen 4)
+- August Smart Lock Pro (Gen 3)
+- August Smart Lock (Gen 2)
+- August Doorbell Cam (Gen 1, Gen2)
+- August View
+- Yale Assure Locks with August/Yale Connect Module
There is currently support for the following device types within Home Assistant:
@@ -35,7 +46,10 @@ There is currently support for the following device types within Home Assistant:
August Lock 2nd Gen will need either August Connect or Doorbell to connect to Home Assistant.
-{% include integrations/config_flow.md %}
+### Known Unsupported Devices
+- The Yale Doorman L3
+
+Other devices not listed above have not been tested and may not function as expected.
### Binary Sensor
diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown
index 5c9200a4fce..98abca786f1 100644
--- a/source/_integrations/caldav.markdown
+++ b/source/_integrations/caldav.markdown
@@ -44,6 +44,15 @@ calendar:
url: https://nextcloud.example.com/remote.php/dav
```
+```yaml
+# Example configuration.yaml entry for iCloud, calendars will be found automatically
+calendar:
+ - platform: caldav
+ username: !secret userIcloud
+ password: !secret passIcloud
+ url: https://caldav.icloud.com
+```
+
This example will generate default binary sensors for each calendar you have in your account. Those calendars will be `on` when there is an ongoing event and `off` if not. Events that last a whole day are ignored in those calendars. You have to setup custom calendars in order to take them into account or for advanced event filtering.
## Custom calendars
diff --git a/source/_integrations/coronavirus.markdown b/source/_integrations/coronavirus.markdown
index 34b4a87273e..c0b18691ee1 100644
--- a/source/_integrations/coronavirus.markdown
+++ b/source/_integrations/coronavirus.markdown
@@ -7,7 +7,7 @@ ha_release: 0.106
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - '@home_assistant/core'
+ - '@home-assistant/core'
ha_domain: coronavirus
ha_platforms:
- sensor
diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown
index fe0f13a492c..8b6c946491e 100644
--- a/source/_integrations/default_config.markdown
+++ b/source/_integrations/default_config.markdown
@@ -15,6 +15,7 @@ This integration is a meta-component and configures a default set of integration
- [Configuration](/integrations/config/) (`config`)
- [Counter](/integrations/counter/) (`counter`)
- [DHCP Discovery](/integrations/dhcp/) (`dhcp`)
+- [Energy](/integrations/energy/) (`energy`)
- [Frontend](/integrations/frontend/) (`frontend`)
- [History](/integrations/history/) (`history`)
- [Image](/integrations/image/) (`image`)
diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown
index 658cc652644..dbad6e5433f 100644
--- a/source/_integrations/demo.markdown
+++ b/source/_integrations/demo.markdown
@@ -27,6 +27,8 @@ ha_platforms:
- number
- remote
- sensor
+ - select
+ - siren
- stt
- switch
- tts
diff --git a/source/_integrations/dexcom.markdown b/source/_integrations/dexcom.markdown
index e167038a8d9..00e8a3e4500 100644
--- a/source/_integrations/dexcom.markdown
+++ b/source/_integrations/dexcom.markdown
@@ -17,7 +17,7 @@ The Dexcom integration allows you to view your CGM data from [Dexcom](https://ww
## Prerequisites
-You will need to set up the [Dexcom Share](https://provider.dexcom.com/education-research/cgm-education-use/videos/setting-dexcom-share-and-follow) feature in your Dexcom G6 App to use this integration.
+You will need to set up the [Dexcom Share](https://provider.dexcom.com/education-research/cgm-education-use/videos/setting-dexcom-share-and-follow) feature in your Dexcom G6 App to use this integration. Enabling the Dexcom Share service requires setup of at least one follower. The integration will use the Dexcom user's credentials, not the follower's credentials.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown
index a286047c2ef..d2bfb0e359e 100644
--- a/source/_integrations/dsmr.markdown
+++ b/source/_integrations/dsmr.markdown
@@ -35,6 +35,7 @@ This integration is known to work for:
- Kaifa E0026
- Kamstrup 382JxC (DSMR 2.2)
- Sagemcom XS210 ESMR5
+- Ziv E0058 ESMR5
USB serial converters:
@@ -49,7 +50,7 @@ Serial to network proxies:
DIY solutions (ESP8266 based):
-- [esp8266_p1meter (fliphess)](https://github.com/fliphess/esp8266_p1meter)
+- [esp8266_p1meter (daniel-jong)](https://github.com/daniel-jong/esp8266_p1meter)
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown
index aeef0935d96..fd42361fc94 100644
--- a/source/_integrations/esphome.markdown
+++ b/source/_integrations/esphome.markdown
@@ -21,6 +21,7 @@ ha_platforms:
- light
- number
- sensor
+ - select
- switch
---
diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown
index ff98f2ab15e..68153e17621 100644
--- a/source/_integrations/fixer.markdown
+++ b/source/_integrations/fixer.markdown
@@ -18,7 +18,7 @@ To get an overview about the available [currencies](https://fixer.io/symbols).
## Setup
-You need to create an [API key](https://fixer.io/product). There is a rate limit of 1000 calls per month.
+You need to create an [API key](https://fixer.io/product). The free account is limited to only EUR as a base currency, allows 250 requests per month, and updates every hour.
## Configuration
diff --git a/source/_integrations/flipr.markdown b/source/_integrations/flipr.markdown
index 173d9acd013..04147886bfa 100644
--- a/source/_integrations/flipr.markdown
+++ b/source/_integrations/flipr.markdown
@@ -9,6 +9,8 @@ ha_config_flow: true
ha_codeowners:
- '@cnico'
ha_domain: flipr
+ha_platforms:
+ - sensor
---
[Flipr](https://www.goflipr.com) is a smart pool monitor that publishes data to the cloud via SigFox.
@@ -42,6 +44,6 @@ It is recommended that you create your own card with the following sensors where
- `sensor.flipr_[fliprid]_ph`
- `sensor.flipr_[fliprid]_red_ox`
- `sensor.flipr_[fliprid]_water_temp`
-- `sensor.flipr_[fliprid]_date_measure`
+- `sensor.flipr_[fliprid]_last_measured`
Leave `binary_sensor.flipr_[fliprid]_ph_status` and `binary_sensor.flipr_[fliprid]_chlorine_status` as badges.
diff --git a/source/_integrations/forecast_solar.markdown b/source/_integrations/forecast_solar.markdown
index c627f7ca986..b27284d804e 100644
--- a/source/_integrations/forecast_solar.markdown
+++ b/source/_integrations/forecast_solar.markdown
@@ -33,6 +33,8 @@ As an example automation idea, you could determine if:
## Prerequisites
+Forecast.Solar relies on data provided by the [EU Photovoltaic geographical information system](https://re.jrc.ec.europa.eu/pvg_tools/en/tools.html) and your solar panels must be in a location that is covered by this tool. Data is currently not available for most of the Asia Pacific region.
+
To use the Forecast.Solar integration, it will need some information about your
solar panel system: **latitude**, **longitude**, **declination**, **azimuth**
and **total modules power**.
diff --git a/source/_integrations/freedompro.markdown b/source/_integrations/freedompro.markdown
index 98d038d3042..3d45f6bffc6 100644
--- a/source/_integrations/freedompro.markdown
+++ b/source/_integrations/freedompro.markdown
@@ -17,7 +17,7 @@ ha_codeowners:
- '@stefano055415'
ha_domain: freedompro
ha_platforms:
- - binary sensor
+ - binary_sensor
- climate
- cover
- fan
diff --git a/source/_integrations/generic.markdown b/source/_integrations/generic.markdown
index 9aed29877e3..1fe49cdbd89 100644
--- a/source/_integrations/generic.markdown
+++ b/source/_integrations/generic.markdown
@@ -1,5 +1,5 @@
---
-title: Generic
+title: Generic Camera
description: Instructions on how to integrate IP cameras within Home Assistant.
ha_category:
- Camera
diff --git a/source/_integrations/generic_hygrostat.markdown b/source/_integrations/generic_hygrostat.markdown
index f2f68afc6bc..d1392d97717 100644
--- a/source/_integrations/generic_hygrostat.markdown
+++ b/source/_integrations/generic_hygrostat.markdown
@@ -1,11 +1,16 @@
---
-title: Generic Hygrostat
+title: Generic hygrostat
description: Virtual hygrostat device
ha_category:
- Humidifier
ha_release: 2021.8
ha_domain: generic_hygrostat
ha_quality_scale: internal
+ha_codeowners:
+ - '@Shulyaka'
+ha_iot_class: Local Polling
+ha_platforms:
+ - humidifier
---
The `generic_hygrostat` humidifier integration is a virtual hygrostat implemented in Home Assistant. It uses a sensor and a switch connected to a humidifier or dehumidifier under the hood. When in humidifier mode, if the measured humidity is less than the target humidity, the humidifier will be turned on and turned off when the required humidity is reached. When in dehumidifier mode, if the measured humidity is greater than the target humidity, the dehumidifier will be turned on and turned off when required humidity is reached. One Generic Hygrostat entity can only control one switch. If you need to activate two switches, one for a humidifier and one for a dehumidifier, you will need two Generic Hygrostat entities.
@@ -43,7 +48,7 @@ max_humidity:
default: 100
type: integer
target_humidity:
- description: Set initial target temperature. This value will be used as a fallback when the previous setpoint is not available.
+ description: Set initial target humidity. This value will be used as a fallback when the previous setpoint is not available.
required: false
type: integer
device_class:
diff --git a/source/_integrations/greeneye_monitor.markdown b/source/_integrations/greeneye_monitor.markdown
index cd79ffc1398..2bed14f8f1d 100644
--- a/source/_integrations/greeneye_monitor.markdown
+++ b/source/_integrations/greeneye_monitor.markdown
@@ -5,6 +5,7 @@ logo: brultech.png
ha_category:
- Hub
- Sensor
+ - Energy
ha_release: 0.82
ha_iot_class: Local Push
ha_codeowners:
diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown
index a34be7397e4..377079d4080 100644
--- a/source/_integrations/homekit_controller.markdown
+++ b/source/_integrations/homekit_controller.markdown
@@ -34,6 +34,7 @@ ha_platforms:
- light
- lock
- media_player
+ - number
- sensor
- switch
---
diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown
index 393b08dd9ca..c15ae822535 100644
--- a/source/_integrations/honeywell.markdown
+++ b/source/_integrations/honeywell.markdown
@@ -19,4 +19,4 @@ It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library.
If your system is compatible with this integration, then you will be able access it via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`).
-{% include integrations/config_flow.md %}
\ No newline at end of file
+{% include integrations/config_flow.md %}
diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown
index 5b946ca5e59..3092bdc58b6 100644
--- a/source/_integrations/humidifier.mqtt.markdown
+++ b/source/_integrations/humidifier.mqtt.markdown
@@ -191,7 +191,7 @@ target_humidity_state_topic:
description: The MQTT topic subscribed to receive humidifier target humidity.
required: false
type: string
-target_humidity_value_template:
+target_humidity_state_template:
description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value for the humidifier `target_humidity` state.
required: false
type: string
@@ -207,7 +207,7 @@ mode_state_topic:
description: The MQTT topic subscribed to receive the humidifier `mode`.
required: false
type: string
-mode_value_template:
+mode_state_template:
description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value for the humidifier `mode` state.
required: false
type: string
diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown
index f45780e295b..a49ea9cc2d1 100644
--- a/source/_integrations/integration.markdown
+++ b/source/_integrations/integration.markdown
@@ -83,4 +83,4 @@ sensor:
round: 2
```
-This configuration will provide you with `sensor.energy_spent` who will have your energy in kWh.
+This configuration will provide you with `sensor.energy_spent` which will have your energy in kWh.
diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown
index ddb8ce1adc5..fe0cc1a3323 100644
--- a/source/_integrations/intesishome.markdown
+++ b/source/_integrations/intesishome.markdown
@@ -1,7 +1,6 @@
---
title: IntesisHome
description: Instructions how to integrate IntesisHome AC devices with Home Assistant
-logo: intesishome.png
ha_category: Climate
ha_release: 0.104
ha_iot_class: Cloud Push
diff --git a/source/_integrations/iss.markdown b/source/_integrations/iss.markdown
index 91c6ff0f0da..e99d852b44f 100644
--- a/source/_integrations/iss.markdown
+++ b/source/_integrations/iss.markdown
@@ -48,24 +48,3 @@ If you set `show_on_map: true` then the location attributes are named `latitude`
The default name of the location attributes is `lat` and `long` to avoid showing them on the map.
-
-### Show position on map with camera platform
-
-The [generic camera platform](/integrations/mjpeg) offers
-the possibility to show the location of the ISS on OpenStreetMap.
-
-{% raw %}
-
-```yaml
-# Example configuration.yaml entry
- - platform: iss
- show_on_map: true
-
-camera:
- - platform: generic
- name: ISS
- still_image_url: http://staticmap.openstreetmap.de/staticmap.php?center={{ state_attr('binary_sensor.iss', 'lat') }},{{ state_attr('binary_sensor.iss', 'long') }}&zoom=4&size=865x512&maptype=mapnik&markers={{ state_attr('binary_sensor.iss', 'lat') }},{{ state_attr('binary_sensor.iss', 'long') }},lightblue
- limit_refetch_to_url_change: true
-```
-
-{% endraw %}
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index 7a173a0f19f..f7cc2d9b543 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -33,6 +33,7 @@ ha_platforms:
- number
- scene
- sensor
+ - select
- switch
- weather
---
diff --git a/source/_integrations/local_file.markdown b/source/_integrations/local_file.markdown
index d7178497ddd..a8877b707e1 100644
--- a/source/_integrations/local_file.markdown
+++ b/source/_integrations/local_file.markdown
@@ -10,7 +10,7 @@ ha_platforms:
- camera
---
-The `local_file` camera platform allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated. The service `local_file_update_file_path` can be used to update the image using an automation.
+The `local_file` camera platform allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated. The service `local_file.update_file_path` can be used to update the image using an automation.
The `local_file` camera can for example be used with various camera platforms that save a temporary images locally. It can also be used to display a graph that you render periodically and will then be displayed in Home Assistant.
diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown
index bf468537416..47ab15c813e 100644
--- a/source/_integrations/media_player.markdown
+++ b/source/_integrations/media_player.markdown
@@ -176,3 +176,6 @@ The way media players are displayed in the frontend can be modified in the [cust
- `tv`: Device is a television type device.
- `speaker`: Device is speaker or stereo type device.
+- `receiver`: Device is audio video receiver type device taking audio and outputting to speakers and video to some display.
+
+
diff --git a/source/_integrations/mill.markdown b/source/_integrations/mill.markdown
index 018ffa48c48..f5dd09fdd2a 100644
--- a/source/_integrations/mill.markdown
+++ b/source/_integrations/mill.markdown
@@ -11,6 +11,7 @@ ha_domain: mill
ha_config_flow: true
ha_platforms:
- climate
+ - sensor
---
Integrates Mill heater into Home Assistant.
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 4e9f28c2eaa..5e980125ff0 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -18,6 +18,7 @@ ha_platforms:
- light
- sensor
- switch
+ha_quality_scale: silver
---
[Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable Logic Controller) and RTUs (Remote Terminal Unit). The integration adheres strictly to the [protocol specification](https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf).
@@ -302,7 +303,7 @@ modbus:
address: 100
scan_interval: 20
slave: 1
- - name: "binary_ensor2"
+ - name: "binary_sensor2"
address: 110
device_class: door
input_type: discrete_input
diff --git a/source/_integrations/motioneye.markdown b/source/_integrations/motioneye.markdown
index 067ed4b9289..c9056afdf49 100644
--- a/source/_integrations/motioneye.markdown
+++ b/source/_integrations/motioneye.markdown
@@ -11,6 +11,7 @@ ha_codeowners:
ha_config_flow: true
ha_platforms:
- camera
+ - switch
---
The motionEye integration allows you to integrate your
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index 41de0c79af2..007bccc1948 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -17,10 +17,12 @@ ha_platforms:
- climate
- cover
- fan
+ - humidifier
- lock
- number
- scene
- sensor
+ - select
- switch
---
diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown
index e70ae145fee..38179bbf10e 100644
--- a/source/_integrations/nest.markdown
+++ b/source/_integrations/nest.markdown
@@ -37,7 +37,7 @@ This integration supports two Nest APIs. The SDM API is the new primary API that
Google applies strict [Redirect URI validation
rules](https://developers.google.com/identity/protocols/oauth2/web-server#uri-validation) to keep your login
-credentials secure. In practice, this means that you must access Home Assistant *over SSL* and a *public top-level domain*. See the documentation on [Securing](/docs/configuration/securing/) or [Troubleshooting](#troubleshooting), and note that you don't need actually need to enable remote access.
+credentials secure. In practice, this means that you must access Home Assistant *over SSL* and a *public top-level domain* when setting up this integration. See the documentation on [Securing](/docs/configuration/securing/) or [Troubleshooting](#troubleshooting), and note that you don't actually need to enable remote access.
## Overview: Supported Devices
@@ -365,7 +365,7 @@ New users are not currently able to set up a Works With Nest Developer account.
-Click here for documentation for the Legacy Works with Nest API
+Click here to expand documentation for the Legacy Works with Nest API
The Nest integration is the main integration to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`.
diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown
index 90e11d9b7cc..6f5da99d714 100644
--- a/source/_integrations/netatmo.markdown
+++ b/source/_integrations/netatmo.markdown
@@ -21,6 +21,7 @@ ha_platforms:
- climate
- light
- sensor
+ - select
---
The Netatmo integration platform is the main integration to integrate all Netatmo related platforms.
diff --git a/source/_integrations/nexia.markdown b/source/_integrations/nexia.markdown
index 20f3d2ffe10..c8a035f1531 100644
--- a/source/_integrations/nexia.markdown
+++ b/source/_integrations/nexia.markdown
@@ -1,5 +1,5 @@
---
-title: Nexia/American Standard
+title: Nexia/American Standard/Trane
description: Instructions on how to integrate Trane and American Standard thermostats into Home Assistant.
ha_category:
- Binary Sensor
diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown
index 7a7d88b8f37..2b2fa2b7e17 100644
--- a/source/_integrations/pi_hole.markdown
+++ b/source/_integrations/pi_hole.markdown
@@ -40,3 +40,14 @@ Disables configured Pi-hole(s) for the specified amount of time.
| ---------------------- | -------- | -------- | ----------- |
| `entity_id` | `False` | string | Target switch entity. Use `all` to target all Pi-hole services |
| `duration` | `True` | timedelta | Time for which Pi-hole should be disabled |
+
+Example service call:
+
+```yaml
+# Example service call to disable Pi-Hole for 30 minutes
+service: pi_hole.disable
+data:
+ duration: '00:30'
+target:
+ entity_id: all
+```
diff --git a/source/_integrations/prosegur.markdown b/source/_integrations/prosegur.markdown
index 5fb60c6dc32..6def25326c8 100644
--- a/source/_integrations/prosegur.markdown
+++ b/source/_integrations/prosegur.markdown
@@ -1,5 +1,5 @@
---
-title: Prosegur
+title: Prosegur Alarm
description: Instructions on how to integrate Prosegur Smart Alarms into Home Assistant.
ha_category:
- Alarm
diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown
index adf40579ceb..9629d471fbf 100644
--- a/source/_integrations/pvoutput.markdown
+++ b/source/_integrations/pvoutput.markdown
@@ -52,7 +52,7 @@ sensor:
- platform: template
sensors:
power_consumption:
- value_template: "{% if is_state_attr('sensor.pvoutput', 'power_consumption', 'NaN') %}0{% else %}{{ state_attr('sensor.pvoutput', 'power_consumption') }}{% endif %}"
+ value_template: "{% if is_state_attr('sensor.pvoutput', 'power_consumption', 'NaN') %}0{% else %}{{ state_attr('sensor.pvoutput', 'power_consumption') }}{% endif %}"
friendly_name: "Using"
unit_of_measurement: "Watt"
energy_consumption:
diff --git a/source/_integrations/renault.markdown b/source/_integrations/renault.markdown
new file mode 100644
index 00000000000..739b7df80c9
--- /dev/null
+++ b/source/_integrations/renault.markdown
@@ -0,0 +1,27 @@
+---
+title: Renault
+description: Instructions on how to integrate Renault car into Home Assistant.
+ha_category:
+ - Car
+ - Sensor
+ha_release: 2021.8
+ha_iot_class: Cloud Polling
+ha_config_flow: true
+ha_codeowners: '@epenet'
+ha_domain: renault
+---
+
+The Renault integration offers integration with the **MyRenault** cloud service and provides sensors such as charger state and temperature.
+
+This integration provides the following platforms:
+
+- Sensors - such as battery level, outside temperature, odometer, estimated range, and charging rate.
+
+## Prerequisites
+
+You need two API keys: one for Gigya and one for Kamereon and they shouldn't be confused with your API credentials. Instructions can be found at [https://github.com/jamesremuscat/pyze#obtaining-api-keys].
+
+
+{% include integrations/config_flow.md %}
+
+All vehicles linked to the account should then get added as devices, with sensors added as linked entity.
diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown
index 694a3c786bd..ed4c7e323a1 100644
--- a/source/_integrations/rituals_perfume_genie.markdown
+++ b/source/_integrations/rituals_perfume_genie.markdown
@@ -16,8 +16,8 @@ ha_domain: rituals_perfume_genie
ha_platforms:
- binary_sensor
- number
- - select
- sensor
+ - select
- switch
ha_quality_scale: silver
---
diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown
index ef29975c235..8f7def32dca 100644
--- a/source/_integrations/serial_pm.markdown
+++ b/source/_integrations/serial_pm.markdown
@@ -10,9 +10,9 @@ ha_platforms:
- sensor
---
-Particulate matter sensors measure the amount of very small particles in the air. A short introduction how these sensors work can be found on [Open Home Automation](https://www.open-homeautomation.com/2016/07/19/measuring-air-quality/).
+Particulate matter sensors measure the amount of very small particles in the air.
-Cheap LED based sensors usually use a GPIO interface that is hard to attach to computers. However, there are a lot of laser LED based sensors on the market that use a serial interface and can be [connected to your Home Assistant system easily with a USB to serial converter](https://www.open-homeautomation.com/2016/07/20/connecting-an-particulate-matter-sensor-to-your-pc-or-mac/).
+Cheap LED based sensors usually use a GPIO interface that is hard to attach to computers. However, there are a lot of laser LED based sensors on the market that use a serial interface and can be connected to your Home Assistant system easily with a USB to serial converter.
## Supported Sensors
diff --git a/source/_integrations/siren.markdown b/source/_integrations/siren.markdown
index 2494f04ba9b..ff8619f20e7 100644
--- a/source/_integrations/siren.markdown
+++ b/source/_integrations/siren.markdown
@@ -9,7 +9,6 @@ ha_quality_scale: internal
ha_codeowners:
- '@home-assistant/core'
- '@raman325'
-ha_iot_class:
---
The Siren integration is built for the controlling and monitoring of siren/chime devices.
diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown
index f57ebda9534..2051184b10a 100644
--- a/source/_integrations/sma.markdown
+++ b/source/_integrations/sma.markdown
@@ -46,7 +46,7 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the
| power_l1 | W | Power for phase 1 |
| power_l2 | W | Power for phase 2 |
| power_l3 | W | Power for phase 3 |
-| total_yield | kWh | Total power yield from a solar installation |
+| total_yield | kWh | Total energy yield from a solar installation |
| daily_yield | Wh | The solar plant's yield for today |
| pv_gen_meter | kWh | Total kWh generated to date |
@@ -66,8 +66,8 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the
| metering_power_supplied | W | Power supplied |
| metering_power_absorbed | W | Power absorbed |
| metering_frequency | Hz | Grid frequency |
-| metering_total_yield | kWh | Total power from the grid |
-| metering_total_absorbed | kWh | Total power supplied to the grid |
+| metering_total_yield | kWh | Total energy supplied to the grid |
+| metering_total_absorbed | kWh | Total energy from the grid |
| metering_current_l1 | A | Current for phase 1 |
| metering_current_l2 | A | Current for phase 2 |
| metering_current_l3 | A | Current for phase 3 |
diff --git a/source/_integrations/smappee.markdown b/source/_integrations/smappee.markdown
index 85d44ac4a1e..a793d37650b 100644
--- a/source/_integrations/smappee.markdown
+++ b/source/_integrations/smappee.markdown
@@ -44,6 +44,8 @@ Those automatically discovered Smappee devices are listed on the integrations pa
This will provide you a limited number of entities only.
If your home network doesn't support mDNS you can still manually initiate the Smappee integration by choosing the LOCAL option and entering the IP address of the Smappee monitor through the configuration flow.
+Technical note: Auto-discovery of Smappee device requires that its mDNS name and password are set to factory default values. These values are typically accessed on the device expert web portal (locally at http://[IP-Address]/smappee.html). If you have changed the mDNS name, this typically is "Smappee[serialnumber]".
+
### Sensor
A sensor entity is being added for the current active power usage. In case of solar production, an entity for active power production is added as well.
diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown
index 0d8b0f86d0f..3eb3c3a5557 100644
--- a/source/_integrations/solarlog.markdown
+++ b/source/_integrations/solarlog.markdown
@@ -1,7 +1,9 @@
---
title: Solar-Log
description: Instructions on how to integrate Solar-Log sensors within Home Assistant.
-ha_category: Sensor
+ha_category:
+ - Sensor
+ - Energy
ha_release: 0.101
ha_iot_class: Local Polling
ha_config_flow: true
diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown
index ea66f950e4b..7e6561ebebe 100644
--- a/source/_integrations/sonos.markdown
+++ b/source/_integrations/sonos.markdown
@@ -18,6 +18,7 @@ ha_platforms:
- media_player
- sensor
- switch
+ha_zeroconf: true
---
The `sonos` integration allows you to control your [Sonos](https://www.sonos.com) wireless speakers from Home Assistant. It also works with IKEA Symfonisk speakers.
diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown
index 9506d1a5c27..d2eee712234 100644
--- a/source/_integrations/spider.markdown
+++ b/source/_integrations/spider.markdown
@@ -13,6 +13,7 @@ ha_domain: spider
ha_config_flow: true
ha_platforms:
- climate
+ - sensor
- switch
---
diff --git a/source/_integrations/stiebel_eltron.markdown b/source/_integrations/stiebel_eltron.markdown
index abc0eabc2b4..ffc2b33fabc 100644
--- a/source/_integrations/stiebel_eltron.markdown
+++ b/source/_integrations/stiebel_eltron.markdown
@@ -24,8 +24,9 @@ It requires the following components:
By now, the following units are tested:
-- LWZ504e
-- LWZ304
+- LWZ 504e
+- LWZ 304
+- LWZ 304 Trend
## HVAC modes
diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown
index 3e8c608689c..93230033fad 100644
--- a/source/_integrations/switcher_kis.markdown
+++ b/source/_integrations/switcher_kis.markdown
@@ -12,6 +12,7 @@ ha_domain: switcher_kis
ha_platforms:
- sensor
- switch
+ha_config_flow: true
---
This `Switcher` integration allows you to control your [Switcher Devices](https://www.switcher.co.il/).
@@ -24,6 +25,8 @@ Supported devices:
- Switcher V2 (Qualcomm chipset - from firmware 72.32)
- Switcher V4
+If you completed the integration setup but are still unable to control the device, please make sure your device's firmware is up-to-date.
+
{% include integrations/config_flow.md %}
## Sensors
diff --git a/source/_integrations/tag.markdown b/source/_integrations/tag.markdown
index c49d8dafbb2..2deda463d07 100644
--- a/source/_integrations/tag.markdown
+++ b/source/_integrations/tag.markdown
@@ -99,7 +99,7 @@ NFC tags come in many different shapes and formats. [NFC Stickers](https://amzn.
To get started with printing cards, you need the following hardware:
-- [Inktjet Printer](https://amzn.to/3khMrts)
+- [Inkjet Printer](https://amzn.to/3khMrts)
- [Compatible card printing tray](https://amzn.to/3hq59x2)
- [Printable NFC cards](https://amzn.to/3iqHpKx)
diff --git a/source/_integrations/tautulli.markdown b/source/_integrations/tautulli.markdown
index a3705bd3b01..495c2737f77 100644
--- a/source/_integrations/tautulli.markdown
+++ b/source/_integrations/tautulli.markdown
@@ -93,4 +93,4 @@ sensor:
```
[tautulli]: https://tautulli.com
-[tautulliapi]: https://github.com/Tautulli/Tautulli/blob/master/API.md#get_activity
+[tautulliapi]: https://github.com/Tautulli/Tautulli/wiki/Tautulli-API-Reference#get_activity
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 6904ba4337a..fec17251091 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -2,6 +2,7 @@
title: Template
description: Instructions on how to integrate Template Sensors into Home Assistant.
ha_category:
+ - Binary Sensor
- Sensor
ha_release: 0.12
ha_iot_class: Local Push
@@ -9,6 +10,7 @@ ha_quality_scale: internal
ha_codeowners:
- '@PhracturedBlue'
- '@tetienne'
+ - '@home-assistant/core'
ha_domain: template
ha_platforms:
- alarm_control_panel
diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown
index 751e3d353f4..ac494ded48c 100644
--- a/source/_integrations/tesla.markdown
+++ b/source/_integrations/tesla.markdown
@@ -40,12 +40,6 @@ This integration provides the following platforms:
{% include integrations/config_flow.md %}
-
-
- Note: MFA on your Tesla Account is not supported at this time.
-
-
-
## Options
Tesla options are set via **Configuration** -> **Integrations** -> **Tesla** -> **Options**.
diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown
index cc24ef88d1e..de606256753 100644
--- a/source/_integrations/tplink.markdown
+++ b/source/_integrations/tplink.markdown
@@ -15,6 +15,7 @@ ha_codeowners:
ha_domain: tplink
ha_platforms:
- light
+ - sensor
- switch
ha_dhcp: true
---
@@ -53,6 +54,7 @@ Plugs are type `switch` when autodiscovery has been disabled.
- KP303 (powerstrip 3-outlet)
- KP400 (outdoor 2-outlet)
- KP200 (indoor 2-outlet)
+- KP40 (outdoor 2-outlet)
### Wall Switches
diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown
index a0e896633c9..d494dba3d9b 100644
--- a/source/_integrations/velux.markdown
+++ b/source/_integrations/velux.markdown
@@ -11,6 +11,7 @@ ha_codeowners:
ha_domain: velux
ha_platforms:
- cover
+ - light
- scene
---
diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown
index 9054b9fd2a1..358aa6d26b7 100644
--- a/source/_integrations/version.markdown
+++ b/source/_integrations/version.markdown
@@ -54,50 +54,5 @@ source:
`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `generic-x86-64`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `raspberrypi4`, `raspberrypi4-64`, `tinker`, `odroid-c2`, `odroid-n2`, `odroid-xu`
-## Alternatives for showing local version
-This sensor is an alternative to the existing solutions to achieve the same
-result through various platforms.
-Remember that you can easily get the installed version on the command line.
-```bash
-hass --version
-```
-
-Or go to the
**Info** section of the **Developer Tools**.
-
-A [`command_line`](/integrations/sensor.command_line/) with
-[`hass`](/docs/tools/hass/) to display your current version.
-
-```yaml
-sensor:
- - platform: command_line
- name: Version
- command: "/home/homeassistant/bin/hass --version"
-```
-
-It's also possible to read a file called `.HA_VERSION` which is located in your
-Home Assistant [configuration](/docs/configuration/) folder.
-
-```yaml
-sensor:
- - platform: command_line
- name: Version
- command: "cat /home/homeassistant/.homeassistant/.HA_VERSION"
-```
-
-You might think that a [`rest` sensor](/integrations/rest) could work,
-too,
-but it will not as Home Assistant is not ready when the sensor gets initialized.
-
-{% raw %}
-
-```yaml
-sensor:
- - platform: rest
- resource: http://IP_ADDRESS:8123/api/config
- name: Current Version
- value_template: "{{ value_json.version }}"
-```
-
-{% endraw %}
diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown
index 5d724d535dc..5a2cee259bb 100644
--- a/source/_integrations/vesync.markdown
+++ b/source/_integrations/vesync.markdown
@@ -126,5 +126,17 @@ sensor:
value_template: '{{ states.switch.vesync_switch.attributes["voltage"] | float }}'
unit_of_measurement: "V"
```
+{% endraw %}
+
+Extracting air quality from a VeSync LV-PUR131S air purifier. Change the `vesync_air_purifier` to match your device's entity ID.
+
+{% raw %}
+
+```yaml
+template:
+ - sensor:
+ - name: "VeSync Air Quality"
+ state: "{{ state_attr('fan.vesync_air_purifier', 'air_quality') | title }}"
+```
{% endraw %}
diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown
index 9e1e1cf6484..c2bb70ce6c8 100644
--- a/source/_integrations/vicare.markdown
+++ b/source/_integrations/vicare.markdown
@@ -43,7 +43,7 @@ The above-required configuration parameters can be obtained as follows:
Google reCAPTCHA: Disabled
Redirect URIs: vicare://oauth-callback/everest
```
-4. Copy the Client ID to the configuration, e.g., `client_id="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"`.
+4. Copy the Client ID to the configuration, e.g., `client_id: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"`.
5. Set `username`and `password` to your Viessmann Developer Portal login credentials.
diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown
index 6c0b075d355..d145f6217d7 100644
--- a/source/_integrations/webostv.markdown
+++ b/source/_integrations/webostv.markdown
@@ -8,6 +8,7 @@ ha_iot_class: Local Polling
ha_release: 0.18
ha_codeowners:
- '@bendavid'
+ - '@thecode'
ha_domain: webostv
ha_platforms:
- media_player
diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown
index 78d457a1816..8fde46d4522 100644
--- a/source/_integrations/wemo.markdown
+++ b/source/_integrations/wemo.markdown
@@ -17,6 +17,7 @@ ha_platforms:
- binary_sensor
- fan
- light
+ - sensor
- switch
ha_codeowners:
- '@esev'
diff --git a/source/_integrations/wirelesstag.markdown b/source/_integrations/wirelesstag.markdown
index 7ea450c5633..ae5c89e7edd 100644
--- a/source/_integrations/wirelesstag.markdown
+++ b/source/_integrations/wirelesstag.markdown
@@ -13,6 +13,8 @@ ha_platforms:
- binary_sensor
- sensor
- switch
+ha_codeowners:
+ - '@sergeymaysak'
---
The `wirelesstag` implementation allows you to integrate your [wirelesstag.net](https://wirelesstag.net/) sensors tags in Home Assistant.
diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown
index e1b5f9d5397..108ec900173 100644
--- a/source/_integrations/wled.markdown
+++ b/source/_integrations/wled.markdown
@@ -16,6 +16,7 @@ ha_zeroconf: true
ha_platforms:
- light
- sensor
+ - select
- switch
---
diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown
index 2c2922f79f2..2e81a352bed 100644
--- a/source/_integrations/xiaomi_miio.markdown
+++ b/source/_integrations/xiaomi_miio.markdown
@@ -25,9 +25,12 @@ ha_platforms:
- binary_sensor
- device_tracker
- fan
+ - humidifier
- light
+ - number
- remote
- sensor
+ - select
- switch
- vacuum
---
@@ -429,32 +432,58 @@ Sensor | Description
### Air Humidifier (zhimi.humidifier.v1)
- On, Off
-- Operation modes (silent, medium, high, strong)
+- Operation modes (Silent, Medium, High, Strong)
- Buzzer (on, off)
- Child lock (on, off)
- LED (on, off), LED brightness (bright, dim, off)
- Target humidity (30, 40, 50, 60, 70, 80)
+- Attributes (humidifier platform)
+
+Attribute | Description
+--- | ---
+`humidity` | The current `target_humidity`
+`max_humidity` | The maximum settable `target_humidity`
+`min_humidity` | The minimum settable `target_humidity`
+`available_modes` | A list with the operation modes available
+`mode` | the current operation mode selected
+
- Sensor entities
- - `humidity`
- - `temperature`
+
+Sensor | Description
+--- | ---
+`humidity` | The current `humidity` measured
+`temperature` | The current `temperature` measured
### Air Humidifier CA (zhimi.humidifier.ca1)
- On, Off
-- Operation modes (silent, medium, high, auto)
+- Operation modes (Silent, Medium, High, Auto)
- Buzzer (on, off)
- Child lock (on, off)
- LED brightness (bright, dim, off)
- Target humidity (30, 40, 50, 60, 70, 80)
- Dry mode (on, off)
+- Attributes (humidifier platform)
+
+Attribute | Description
+--- | ---
+`humidity` | The current `target_humidity`
+`max_humidity` | The maximum settable `target_humidity`
+`min_humidity` | The minimum settable `target_humidity`
+`available_modes` | A list with the operation modes available
+`mode` | the current operation mode selected
+
- Sensor entities
- - `humidity`
- - `temperature`
+
+Sensor | Description
+--- | ---
+`humidity` | The current `humidity` measured
+`temperature` | The current `temperature` measured
### Air Humidifier CA (zhimi.humidifier.ca4)
- On, Off
-- Operation modes (auto, low, medium, high)
+- Operation modes (Auto, Low, Medium, High)
- Buzzer (on, off)
- Child lock (on, off)
- LED brightness (off, dim, bright)
@@ -462,11 +491,24 @@ Sensor | Description
- Clean mode (on, off)
- Dry mode (on, off)
- Motor speed rpm (200 - 2000)
+- Attributes (humidifier platform)
+
+Attribute | Description
+--- | ---
+`humidity` | The current `target_humidity`
+`max_humidity` | The maximum settable `target_humidity`
+`min_humidity` | The minimum settable `target_humidity`
+`available_modes` | A list with the operation modes available
+`mode` | the current operation mode selected
+
- Sensor entities
- - `actual_speed`
- - `humidity`
- - `temperature`
- - `water_level`
+
+Sensor | Description
+--- | ---
+`actual_speed` | The current `motor_speed` measured in (rpm)
+`humidity` | The current `humidity` percentage measured
+`temperature` | The current `temperature` measured in degrees Celius
+`water_level` | The current `water_level` percentage measured
Clean mode and Motor speed can only be set when the device is turned on.
@@ -475,15 +517,28 @@ Clean mode and Motor speed can only be set when the device is turned on.
### Air Humidifier CB (zhimi.humidifier.cb1)
- On, Off
-- Operation modes (silent, medium, high, auto)
+- Operation modes (Silent, Medium, High, Auto)
- Buzzer (on, off)
- Child lock (on, off)
- LED (on, off), LED brightness (bright, dim, off)
- Target humidity (30, 40, 50, 60, 70, 80)
- Dry mode (on, off)
+- Attributes (humidifier platform)
+
+Attribute | Description
+--- | ---
+`humidity` | The current `target_humidity`
+`max_humidity` | The maximum settable `target_humidity`
+`min_humidity` | The minimum settable `target_humidity`
+`available_modes` | A list with the operation modes available
+`mode` | the current operation mode selected
+
- Sensor entities
- - `humidity`
- - `temperature`
+
+Sensor | Description
+--- | ---
+`humidity` | The current `humidity` measured
+`temperature` | The current `temperature` measured
### Air Humidifier JSQ/JSQ1/MJJSQ (deerma.humidifier.jsq/deerma.humidifier.jsq1/deerma.humidifier.mjjsq)
diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown
index d8e46872f40..d0a174a0164 100644
--- a/source/_integrations/yale_smart_alarm.markdown
+++ b/source/_integrations/yale_smart_alarm.markdown
@@ -7,12 +7,10 @@ ha_release: 0.78
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- - '@gjohanssson-ST'
+ - '@gjohansson-ST'
ha_domain: yale_smart_alarm
ha_platforms:
- alarm_control_panel
-ha_codeowners:
- - '@gjohansson-ST'
---
The Yale Smart Living integration provides connectivity with the Yale Smart Alarm systems and Smart Hub through Yale's API.
diff --git a/source/_integrations/youless.markdown b/source/_integrations/youless.markdown
index 1624f242eb8..885df87f888 100644
--- a/source/_integrations/youless.markdown
+++ b/source/_integrations/youless.markdown
@@ -3,10 +3,14 @@ title: YouLess
description: Instructions on how to integrate your YouLess device into Home Assistant.
ha_category:
- Sensor
-ha_iot_class: Local Pull
+ha_iot_class: Local Polling
ha_config_flow: true
ha_release: 2021.8
ha_domain: youless
+ha_codeowners:
+ - '@gjong'
+ha_platforms:
+ - sensor
---
The YouLess integration for Home Assistant allows you to read the meter values from sensors created by [YouLess](https://www.youless.nl/home.html).
diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown
index 95298dd5230..2a9c58438ec 100644
--- a/source/_integrations/zwave_js.markdown
+++ b/source/_integrations/zwave_js.markdown
@@ -10,8 +10,10 @@ ha_category:
- Hub
- Light
- Lock
+ - Number
- Select
- Sensor
+ - Siren
- Switch
ha_release: '2021.2'
ha_iot_class: Local Push
@@ -29,6 +31,7 @@ ha_platforms:
- number
- select
- sensor
+ - siren
- switch
---
@@ -435,7 +438,7 @@ It is perfectly doable to switch over from one of the above mentioned previous i
Make a list of what node ID belongs to each device. Your network (Nodes and their config etc) is stored on the stick but the names you gave your devices and entities are not. This step is optional but will save you a lot of time later.
-2) Remove the Z-Wave integration from Home Assistant: Configuration --> Integrations --> Z-Wave (or OpenZWave) --> Press the three dots and click Remove.
+2) Remove the Z-Wave integration from Home Assistant: Configuration --> Integrations --> Z-Wave (or OpenZWave) --> Press the three dots and click Delete.
3) If you were running the OpenZWave beta, make sure to stop (or even remove) the OpenZWave add-on, also make sure it doesn't start automatically at startup.
diff --git a/source/_layouts/landingpage.html b/source/_layouts/landingpage.html
index fd9116264f9..9d3d3a576e5 100644
--- a/source/_layouts/landingpage.html
+++ b/source/_layouts/landingpage.html
@@ -36,7 +36,7 @@ layout: page
{% if page.sections %}
{% for section in page.sections %}
-
+
+
Already have Home Assistant? {% my energy title="Start here" %}
diff --git a/source/images/blog/2021-08-energy/architecture.png b/source/images/blog/2021-08-energy/architecture.png
new file mode 100644
index 00000000000..fd83504209d
Binary files /dev/null and b/source/images/blog/2021-08-energy/architecture.png differ
diff --git a/source/images/blog/2021-08-energy/config-dialogs.png b/source/images/blog/2021-08-energy/config-dialogs.png
new file mode 100644
index 00000000000..0422a3ef371
Binary files /dev/null and b/source/images/blog/2021-08-energy/config-dialogs.png differ
diff --git a/source/images/blog/2021-08-energy/energy-usage.png b/source/images/blog/2021-08-energy/energy-usage.png
new file mode 100644
index 00000000000..f4eeafaf6cd
Binary files /dev/null and b/source/images/blog/2021-08-energy/energy-usage.png differ
diff --git a/source/images/blog/2021-08-energy/klaas-prototype.png b/source/images/blog/2021-08-energy/klaas-prototype.png
new file mode 100644
index 00000000000..2d76b2feaa9
Binary files /dev/null and b/source/images/blog/2021-08-energy/klaas-prototype.png differ
diff --git a/source/images/blog/2021-08-energy/sidebar-widgets.png b/source/images/blog/2021-08-energy/sidebar-widgets.png
new file mode 100644
index 00000000000..c5470884008
Binary files /dev/null and b/source/images/blog/2021-08-energy/sidebar-widgets.png differ
diff --git a/source/images/blog/2021-08-energy/social.png b/source/images/blog/2021-08-energy/social.png
new file mode 100644
index 00000000000..be691d4a9fc
Binary files /dev/null and b/source/images/blog/2021-08-energy/social.png differ
diff --git a/source/images/blog/2021-08-energy/solar-production.png b/source/images/blog/2021-08-energy/solar-production.png
new file mode 100644
index 00000000000..f9f3d57fc16
Binary files /dev/null and b/source/images/blog/2021-08-energy/solar-production.png differ
diff --git a/source/images/blog/2021-08/gauge-needle.png b/source/images/blog/2021-08/gauge-needle.png
new file mode 100644
index 00000000000..d379f335883
Binary files /dev/null and b/source/images/blog/2021-08/gauge-needle.png differ
diff --git a/source/images/blog/2021-08/sidebar-view.png b/source/images/blog/2021-08/sidebar-view.png
new file mode 100644
index 00000000000..adf90e0925b
Binary files /dev/null and b/source/images/blog/2021-08/sidebar-view.png differ
diff --git a/source/images/blog/2021-08/social.png b/source/images/blog/2021-08/social.png
new file mode 100644
index 00000000000..02db8dd39dd
Binary files /dev/null and b/source/images/blog/2021-08/social.png differ
diff --git a/source/images/blog/2021-08/statistics-graph.png b/source/images/blog/2021-08/statistics-graph.png
new file mode 100644
index 00000000000..5065a36f3ce
Binary files /dev/null and b/source/images/blog/2021-08/statistics-graph.png differ
diff --git a/source/images/frontpage/blue-frontpage.jpg b/source/images/frontpage/blue-frontpage.jpg
new file mode 100644
index 00000000000..5851e0e7ecd
Binary files /dev/null and b/source/images/frontpage/blue-frontpage.jpg differ
diff --git a/source/images/frontpage/energy-frontpage.jpg b/source/images/frontpage/energy-frontpage.jpg
new file mode 100644
index 00000000000..e38d9b78698
Binary files /dev/null and b/source/images/frontpage/energy-frontpage.jpg differ
diff --git a/source/index.html b/source/index.html
index 2ae9aa6eb24..0a780cff660 100644
--- a/source/index.html
+++ b/source/index.html
@@ -95,7 +95,7 @@ feedback: false
class="material-card picture-promo"
href="{{page.url}}"
style="
- background-image: url({{page.hero_image | default:page.og_image}});
+ background-image: url({{page.frontpage_image | default:page.og_image}});
background-size: cover;
background-color: #41bdf5;
"
diff --git a/source/lovelace/cards.markdown b/source/lovelace/cards.markdown
index 8100698ab3d..6e3d84de7a2 100644
--- a/source/lovelace/cards.markdown
+++ b/source/lovelace/cards.markdown
@@ -3,6 +3,6 @@ title: "Cards"
description: "Lovelace cards."
---
-The cards are the what make the interface of your Lovelace dashboard.
+Cards provide a structure for interfacing with your Lovelace dashboard.
-There are a lot of card types, each with it's own configuration options, pick a card in the menu to see the options for that card.
\ No newline at end of file
+There are several built-in card types, each with their own configuration options. Select a card from the menu to view additional details and the options for that card.