From 9dbd66de4f280c375a9d62528f5e758a43afe1c0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Jul 2021 08:09:11 +0200 Subject: [PATCH 01/29] Bump ruby/setup-ruby from 1.75.0 to 1.76.0 (#18424) Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from 1.75.0 to 1.76.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Commits](https://github.com/ruby/setup-ruby/compare/v1.75.0...v1.76.0) --- updated-dependencies: - dependency-name: ruby/setup-ruby dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aa99b3af0d7..e8557d0487d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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.75.0 + uses: ruby/setup-ruby@v1.76.0 with: ruby-version: 2.6 - name: Setup Ruby Gems cache From 046e54f78c13e259c28e9be140c1c6ec58be4821 Mon Sep 17 00:00:00 2001 From: TheDK Date: Thu, 8 Jul 2021 08:41:17 +0200 Subject: [PATCH 02/29] Update trigger.markdown (#18425) Fixed typo. --- source/_docs/automation/trigger.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index e1477349cbd..575940fb076 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -204,7 +204,7 @@ In the example above, the trigger would fire a single time if a numeric_state go Number helpers (`input_number` entities), `number` and `sensor` entities that -contain a numeric value, an be used in the `above` and `below` thresholds, +contain a numeric value, can be used in the `above` and `below` thresholds, making the trigger more dynamic, like: ```yaml From 0ebd9a51450e542c79bdeb55842b8f1f7acc2628 Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Thu, 8 Jul 2021 08:21:26 +0100 Subject: [PATCH 03/29] Highlighting breaking change/prerequisite (#18426) Based off the breaking change in 2021.7 (https://github.com/home-assistant/core/pull/51628), highlighting the requirements here --- source/_includes/installation/container.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_includes/installation/container.md b/source/_includes/installation/container.md index b559d09fd3d..5c05b6bb33e 100644 --- a/source/_includes/installation/container.md +++ b/source/_includes/installation/container.md @@ -7,6 +7,8 @@ These below instructions are for an installation of Home Assistant Container run Prerequisites This guide assumes that you already have an operating system setup and a container runtime installed (like Docker). + +If you are using Docker then you need to be on at least version 19.03.9, ideally an even higher version, and `libseccomp` 2.42 or newer. ### Platform Installation From 64b840c7fc5c399d9c0ba22f407bbeab94d2c558 Mon Sep 17 00:00:00 2001 From: "@RubenKelevra" Date: Thu, 8 Jul 2021 09:47:17 +0200 Subject: [PATCH 04/29] 2021-07-07-release-20217.markdown: fix typos (#18418) --- .../_posts/2021-07-07-release-20217.markdown | 70 +++++++++---------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index e2e60bcb637..1f179495e58 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -24,7 +24,7 @@ general, make me very happy. Mainly because, well, I use Home Assistant to automate 😁 Also, we are saying "hi!" 👋 to a new type of entity, which is really exciting -and I can't wait to see how that is being put the use in the future. +and I can't wait to see how that is being put to use in the future. Lastly, I want to give a shout-out to [@klaasnicolaas]! He has been an intern with Nabu Casa for the last months. Besides doing the community highlights, he @@ -56,8 +56,8 @@ Alright, that's it! Enjoy the release! ## New entity: Select -In this release we welcome the `select` entity to the Home Assistant family. The -select entity is family of the dropdown helper (also known as +In this release, we welcome the `select` entity to the Home Assistant family. The +select entity is a close relative of the dropdown helper (also known as `input_select`). The difference is that while the input select is configured and managed by you, @@ -80,7 +80,7 @@ Genie you can now change the room size for your diffuser. ## Trigger conditions and trigger IDs If you are creating some complex automations in YAML, you might be familiar with -this. Consider an big automation, with a whole bunch of triggers. But how +this. Consider a big automation, with a whole bunch of triggers. But how would you know which of those triggers actually triggered the automation? You can now assign an `id` to your triggers that is passed into automation when @@ -138,7 +138,7 @@ Screenshot of using a trigger condition in the automation editor. ## Script debugging In [Home Assistant Core 2021.4](/blog/2021/04/07/release-20214/#automation-debugging), -we added the ability to debug automations. This release, we've made these +we added the ability to debug automations. In this release, we've made these same powerful tools available for scripts! So, this helps for the next time you are wondering: Why didn't that script work? @@ -190,7 +190,7 @@ complex little beasts. However, we realized that the hardest part of using date & times with templates is converting the state of a sensor or text to a datetime. This -release we added a small template method to help with that: `as_datetime`. +release adds a small template method to help with that: `as_datetime`. It can be used as a filter or as a method. Here is an example of calculating the number of days until my drivers' license expires: @@ -328,8 +328,8 @@ configuration. For more information, see the [HTTP integration documentation](https://www.home-assistant.io/integrations/http#use_x_forwarded_for). -Additionally, access to Home Assistant from same IP as a trusted proxy will be -rejected if the request is marked as forwarded. +Additionally, access to Home Assistant from the same IP address as a trusted +proxy will be rejected if the request is marked as forwarded. ([@frenck] - [#51839]) ([http docs]) @@ -337,7 +337,7 @@ rejected if the request is marked as forwarded. {% details "Python 3.9 / Alpine 3.13" %} -Our Docker images are now based on Alpine 3.13, and run Python 3.9. +Our Docker images are now based on Alpine 3.13 and run Python 3.9. This is mainly interesting if you running custom Docker containers based on our container. @@ -346,7 +346,7 @@ If you are using Home Assistant Container, Home Assistant OS or the Home Assista Supervised installation method, you will automatically get this update on upgrade and no additional interaction is needed. -Please note, that Alpine 3.13 on an ARM devices running a 32-bits operating +Please note, that Alpine 3.13 on ARM devices running a 32-bits operating system (armhf/armv7), requires your Docker version to be at least 19.03.9 (although, we recommend updating to an even higher version). Additionally, you need to have `libseccomp` 2.42 or newer. @@ -357,7 +357,7 @@ you need to have `libseccomp` 2.42 or newer. {% details "Airly" %} -The AirQuality platform has been marked as deprecated. The `air_quality` entitiy +The AirQuality platform has been marked as deprecated. The `air_quality` entity is removed and replaced with sensor entities. You will need to update their automations and dashboards if you have been using the `air_quality` entity of Airly. @@ -368,8 +368,8 @@ of Airly. {% details "Azure Event Hub" %} -When using this integration with with IoTHub, the `event_hub_name` is now -a required field, can be filled by the DeviceID when using IoTHub. +When using this integration with IoTHub, the `event_hub_name` is now +a required field can be filled by the DeviceID when using IoTHub. ([@eavanvalkenburg] - [#52049]) ([azure_event_hub docs]) @@ -410,13 +410,13 @@ configured in your API settings on Coinbase. {% details "Database (statistics table)" %} -The statistics table is Home Assistant data table that is not exposed +The statistics table is a Home Assistant data table that is not exposed or used by Home Assistant yet and is part of an alpha / feature that is in -development. However, it does exist and it might be you found it already -interesting or found a use for it. +development. However, it does exist and you might already want to check +it out or find a use for it. -This release, the contents of this table is reset. This does not impact -any state history, and this data isn't used by Home Assistant as of yet. +In this release, the content of this table is reset. This does not impact +any state history and this data isn't used by Home Assistant as of yet. If you have no idea what this message is about, you can safely ignore it. We have merely listed this to be complete in our breaking changes report. @@ -458,8 +458,8 @@ If you are looking for a replacement, you can use the - It's not clear if this integration still works with the gpmdp app that now only supports YouTube Music. If there's someone that uses the integration successfully and wants to take on the maintenance task that is required to get - the integration in a compatible state, please create an issue to discus - the future of this integration. + the integration in a compatible state, please create an issue to discuss + the future of this integration. ([@MartinHjelmare] - [#51509]) ([gpmdp docs]) @@ -477,8 +477,8 @@ therefore the units for these values will change. {% details "Kuler Sky" %} -Kuler Sky lights no longer supports deprecated `white_value` attribute for -its lights, use the `rgbw_color` attribute instead. +Kuler Sky lights no longer supports the deprecated `white_value` attribute for +its lights. Use the `rgbw_color` attribute instead. ([@emontnemery] - [#52080]) ([kulersky docs]) @@ -486,7 +486,7 @@ its lights, use the `rgbw_color` attribute instead. {% details "MeteoAlarm" %} -You now cannot use the 2 letters of your country code, but must know use the +You can no longer use the 2 letters of your country code, but must now use the complete country name in your configuration. To find out which country names you can use, please look at meteoalarm.org. @@ -553,7 +553,7 @@ modbus: state_closed: 0 ``` -The new configuration looks like: +The new configuration looks like this: ```yaml modbus: @@ -685,12 +685,12 @@ modbus: {% details "MQTT" %} -It's no longer possible to set attributes defined in the the base component +It's no longer possible to set attributes defined in the base component via a configured `json_attributes_topic`. -For example a light no longer accepts brightness via the `json_attribute_topic`. -This was unintended and undocumented functionality that lead to unexpected -behavior. +For example, a light no longer accepts brightness via the `json_attribute_topic`. +This was unintended and an undocumented functionality that lead to +unexpected behavior. This change applies to all supported MQTT platforms. @@ -702,7 +702,7 @@ This change applies to all supported MQTT platforms. The AirQuality platform has been marked as deprecated. The `air_quality` entities will be deleted and replaced with `sensor` entities. -You need to update your automations and dashboards if you have been usin +You need to update your automations and dashboards if you have been using these `air_quality` entities in those. ([@bieniu] - [#52152]) ([nam docs]) @@ -736,7 +736,7 @@ updated. This fixes a bug, that might be a breaking change for you. If you use an `@` in your database username or password, you will have to adjust your database connection string to use `%40` instead. -Database connection strings are considered URLs, thus special charaters need +Database connection strings are considered URLs, thus special characters need to be encoded. `%40` is the URL encoded version of `@`. {% enddetails %} @@ -766,8 +766,8 @@ and can now be safely removed from your YAML configuration files. With the change to the new, and unique, electric tariff 2.0TD, if you previously had configured multiple PVPC sensors monitoring prices for more -than one of the old tariffs, only the first one will survive, so if you -have any automations or scripts that depend on these removed sensors, +than one of the old tariffs, only the first one will survive. This means +if you have any automation or script that depends on these removed sensors, you might need to adjust them. ([@azogue] - [#51789]) ([pvpc_hourly_pricing docs]) @@ -776,7 +776,7 @@ you might need to adjust them. {% details "Switcher" %} -In preparation for multi device support, configuration via the UI and support +In preparation for multi-device support, configuration via the UI and support for discovery; this integration is migrating entity attributes into sensors to be later added as device entities. The following switch entity attributes migrated to sensors: @@ -796,8 +796,8 @@ migrated to sensors: The integration has been rewritten from the ground up and is now configurable via the user interface only. Existing platform YAML config will automatically -imported into the user interface on upgrade; and can be safely removed -from the YAML configuration after upgrade has been completed. +be imported into the user interface on upgrade and can be safely removed +from the YAML configuration after the upgrade has been completed. ([@vigonotion] - [#51561]) ([yamaha_musiccast docs]) From 84ef50f3dce1db95be61321c86333df09945081f Mon Sep 17 00:00:00 2001 From: Rafael Uguina Date: Thu, 8 Jul 2021 14:45:56 +0200 Subject: [PATCH 05/29] Update foscam.markdown (#18430) --- source/_integrations/foscam.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index 2a520fa755b..e2db7f57724 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -56,7 +56,7 @@ Using the following card code you can achieve a card displaying the live video f ```yaml type: picture-elements -entity: camera.bedroom +image: camera.bedroom camera_image: camera.bedroom camera_view: live elements: From 977734f04777a21dec0ef3ac7d30241332744994 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 8 Jul 2021 16:46:15 +0200 Subject: [PATCH 06/29] 2021.7.1 --- _config.yml | 4 +- .../_posts/2021-07-07-release-20217.markdown | 63 +++++++++++++++++++ 2 files changed, 65 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 5a2f5f40720..d33221baf68 100644 --- a/_config.yml +++ b/_config.yml @@ -105,8 +105,8 @@ social: # Home Assistant release details current_major_version: 2021 current_minor_version: 7 -current_patch_version: 0 -date_released: 2021-07-07 +current_patch_version: 1 +date_released: 2021-07-08 # 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/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index 1f179495e58..e694878ac57 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -50,6 +50,7 @@ Alright, that's it! Enjoy the release! - [New Integrations](#new-integrations) - [New Platforms](#new-platforms) - [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Release 2021.7.1 - July 8](#release-202171---july-8) - [If you need help...](#if-you-need-help) - [Breaking Changes](#breaking-changes) - [All changes](#all-changes) @@ -301,6 +302,68 @@ The following integrations are now available via the Home Assistant UI: - [DSMR Slimme Meter][dsmr docs], done by [@RobBie1221] - [Yamaha MusicCast][yamaha_musiccast docs], done by [@vigonotion] +## Release 2021.7.1 - July 8 + +- Fix service registration typo in Nuki integration ([@anaisbetts] - [#52631]) ([nuki docs]) +- Fix Fritz default consider home value ([@chemelli74] - [#52648]) ([fritz docs]) +- Handle KeyError when accessing device information ([@ludeeus] - [#52650]) ([ecovacs docs]) +- Warn if `interface_addr` remains in Sonos configuration ([@jjlawren] - [#52652]) ([sonos docs]) +- Ignore unused keys from Sonos device properties callback ([@jjlawren] - [#52660]) ([sonos docs]) +- Ensure Forecast.Solar returns an iso formatted timestamp ([@frenck] - [#52669]) ([forecast_solar docs]) +- Use iso-formatted times in MetOffice weather forecast ([@avee87] - [#52672]) ([metoffice docs]) +- Fix precipitation calculation for hourly forecast ([@agners] - [#52676]) ([openweathermap docs]) +- Move recorder.py import to runtime ([@uvjustin] - [#52682]) ([stream docs]) +- Bump simplisafe-python to 11.0.1 ([@bachya] - [#52684]) ([simplisafe docs]) +- pyWeMo version bump (0.6.5) ([@esev] - [#52701]) ([wemo docs]) +- Bump pylutron to 0.2.8 fixing python 3.9 incompatibility ([@JonGilmore] - [#52702]) ([lutron docs]) +- Add check for _client existence in modbus ([@janiversen] - [#52719]) ([modbus docs]) +- Fix KNX Fan features ([@Tommatheussen] - [#52732]) ([fan docs]) +- Esphome fix camera image ([@jesserockz] - [#52738]) ([esphome docs]) + +[#52631]: https://github.com/home-assistant/core/pull/52631 +[#52648]: https://github.com/home-assistant/core/pull/52648 +[#52650]: https://github.com/home-assistant/core/pull/52650 +[#52652]: https://github.com/home-assistant/core/pull/52652 +[#52660]: https://github.com/home-assistant/core/pull/52660 +[#52669]: https://github.com/home-assistant/core/pull/52669 +[#52672]: https://github.com/home-assistant/core/pull/52672 +[#52676]: https://github.com/home-assistant/core/pull/52676 +[#52682]: https://github.com/home-assistant/core/pull/52682 +[#52684]: https://github.com/home-assistant/core/pull/52684 +[#52701]: https://github.com/home-assistant/core/pull/52701 +[#52702]: https://github.com/home-assistant/core/pull/52702 +[#52719]: https://github.com/home-assistant/core/pull/52719 +[#52732]: https://github.com/home-assistant/core/pull/52732 +[#52738]: https://github.com/home-assistant/core/pull/52738 +[@JonGilmore]: https://github.com/JonGilmore +[@Tommatheussen]: https://github.com/Tommatheussen +[@agners]: https://github.com/agners +[@anaisbetts]: https://github.com/anaisbetts +[@avee87]: https://github.com/avee87 +[@bachya]: https://github.com/bachya +[@chemelli74]: https://github.com/chemelli74 +[@esev]: https://github.com/esev +[@frenck]: https://github.com/frenck +[@janiversen]: https://github.com/janiversen +[@jesserockz]: https://github.com/jesserockz +[@jjlawren]: https://github.com/jjlawren +[@ludeeus]: https://github.com/ludeeus +[@uvjustin]: https://github.com/uvjustin +[ecovacs docs]: /integrations/ecovacs/ +[esphome docs]: /integrations/esphome/ +[fan docs]: /integrations/fan/ +[forecast_solar docs]: /integrations/forecast_solar/ +[fritz docs]: /integrations/fritz/ +[lutron docs]: /integrations/lutron/ +[metoffice docs]: /integrations/metoffice/ +[modbus docs]: /integrations/modbus/ +[nuki docs]: /integrations/nuki/ +[openweathermap docs]: /integrations/openweathermap/ +[simplisafe docs]: /integrations/simplisafe/ +[sonos docs]: /integrations/sonos/ +[stream docs]: /integrations/stream/ +[wemo docs]: /integrations/wemo/ + ## If you need help... ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). From 6d7a1ddda95dad1a762bdb18a8262ffcc78a24eb Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Thu, 8 Jul 2021 21:13:07 +0200 Subject: [PATCH 07/29] Update vendor link to the international site (#18417) --- source/_integrations/fritz.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index bbc563a1ffb..a1f3b943154 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -21,7 +21,7 @@ ha_platforms: ha_ssdp: true --- -The AVM FRITZ!Box Tools integration allows you to control your [AVM FRITZ!Box](https://avm.de/produkte/fritzbox/) based router. +The AVM FRITZ!Box Tools integration allows you to control your [AVM FRITZ!Box](https://en.avm.de/products/fritzbox/) based router. There is support for the following platform types within Home Assistant: From b0fc0dd91c1ff512ba4d698c9e96141e8d07e874 Mon Sep 17 00:00:00 2001 From: Simone Chemelli Date: Thu, 8 Jul 2021 21:14:16 +0200 Subject: [PATCH 08/29] Add Fritz missing info for device profiles and port forwards (#18431) * Add info for device profiles and port forwards * Update source/_integrations/fritz.markdown Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/fritz.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index a1f3b943154..7ddc33591cd 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -77,6 +77,17 @@ These can be changed at **AVM FRITZ!Box Tools** -> **Configure** on the Integrat ## Additional info +### Device Profile + +Device profiles are designed for advanced users, thus they are disabled by default. You need to enable the wanted entities manually. + +### Device Tracker + **Note 1**: All devices to be tracked, even the new detected, are disabled by default. You need to enable the wanted entities manually. **Note 2**: If you don't want to automatically track newly detected devices, disable the integration system option `Enable new added entities`. + +### Port Forward + +Due to security reasons, AVM implemented the ability to enable/disable a port forward rule only from the host involved in the rule. +As a result, this integration will create entities only for rules that have your Home Assistant host as a destination. From 87d7768cc22ad79d1171cfacb7781bf69d744874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 12 Jul 2021 09:24:52 +0200 Subject: [PATCH 09/29] Add missing ha_category (#18472) --- source/_integrations/remote.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/remote.markdown b/source/_integrations/remote.markdown index 792ebb3bfaa..06006dd9d18 100644 --- a/source/_integrations/remote.markdown +++ b/source/_integrations/remote.markdown @@ -3,6 +3,8 @@ title: Remote description: Instructions on how to setup your remotes with Home Assistant. ha_release: 0.34 ha_domain: remote +ha_category: + - Remote ha_quality_scale: internal --- From 5015407e17c3551921654594ac2accbfe80d7338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 12 Jul 2021 11:17:52 +0200 Subject: [PATCH 10/29] Inject post.url for anchor links (#18475) --- source/_includes/blog/post/article.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_includes/blog/post/article.html b/source/_includes/blog/post/article.html index d1f0ce2857c..1673f95218f 100644 --- a/source/_includes/blog/post/article.html +++ b/source/_includes/blog/post/article.html @@ -24,7 +24,8 @@ {% if index %}
- {{ post.excerpt }} + {% assign blog_post_link = 'href="' | append: post.url | append:"#" %} + {{ post.excerpt | replace: 'href="#', blog_post_link }} {% if post.content contains site.excerpt_separator %} {{ site.excerpt_link }} {% endif %} From 3e1485a60c101fd13ae260c78dfe04356f9456bd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 11:37:55 +0200 Subject: [PATCH 11/29] Bump textlint from 12.0.0 to 12.0.2 (#18468) Bumps [textlint](https://github.com/textlint/textlint) from 12.0.0 to 12.0.2. - [Release notes](https://github.com/textlint/textlint/releases) - [Changelog](https://github.com/textlint/textlint/blob/master/CHANGELOG.md) - [Commits](https://github.com/textlint/textlint/compare/v12.0.0...v12.0.2) --- updated-dependencies: - dependency-name: textlint dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 427 ++++++++++++++++++++-------------------------- package.json | 2 +- 2 files changed, 183 insertions(+), 246 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb23b655196..4bd8821fa71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -104,13 +104,13 @@ "dev": true }, "@textlint/ast-tester": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.0.0.tgz", - "integrity": "sha512-mcAqaOJnAhay8QtDC/na5S72XPxmqGCntOwcLwuSjEmPGAIuLC3GsumLQo4nWSQ2LGnWd6CwLDZT4eBlRWetNA==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.0.2.tgz", + "integrity": "sha512-kHta27+SJC0YxEyEdlNux6m2JepX920gc5x98lVBVYK6Wq6cAF67EEGl1o9ynqroIHEc3wTSEDOFwxXpnlfsNA==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0", - "debug": "^4.3.1" + "debug": "^4.3.2" }, "dependencies": { "@textlint/ast-node-types": { @@ -120,9 +120,9 @@ "dev": true }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -131,9 +131,9 @@ } }, "@textlint/ast-traverse": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.0.0.tgz", - "integrity": "sha512-Mu0il8qWS9YkzVAqwmrTd+ga5S0LJVWOGjE6d9yADf5xObUDFk4g8ITlfEOiicpX5bTUxT4e1bORxPveCJ8iKQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.0.2.tgz", + "integrity": "sha512-OrbGnwtqNAsX7jVSRKecc1Lp2tg54ntnTuvOHkYrZrlC72Hk7+7V/UFQBmFNQCe0cH6Tjb5FFFcgp6f8gM+ehw==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" @@ -148,24 +148,21 @@ } }, "@textlint/feature-flag": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.0.0.tgz", - "integrity": "sha512-xgK6tsf1Gg6xn8/X0HN4LXzSkJYgmByAvzItUPlI0dzvA4HhhT4gkBeshDCuXsHLc970nYgzy1TYHpyscu7PTw==", - "dev": true, - "requires": { - "map-like": "^2.0.0" - } + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.0.2.tgz", + "integrity": "sha512-yNq5uErjFrVq1gghg3A8D77+E36wLXRws5LwSsoRC4LVPIGR+LYZ9BlkoyNTas8dOzGwTs6XZIcWCIWXy77M8Q==", + "dev": true }, "@textlint/fixer-formatter": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.0.0.tgz", - "integrity": "sha512-y2PWue8PANhSF9cXwksxmjDs/n9exOq4daNMhN7VvJk9yrXL+nSuAoyDXjyp09gX4Nfwa/xsOrQRTDVRbizgcw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.0.2.tgz", + "integrity": "sha512-ii49bDLVcgnnxmnaZFX0rDFEIGH3o6DGKnr76cfqy6+DWkGQlhBPyRdbx2bIF65KT+7nAMU0JjfEK+n/WIYFTA==", "dev": true, "requires": { - "@textlint/module-interop": "^12.0.0", - "@textlint/types": "^12.0.0", + "@textlint/module-interop": "^12.0.2", + "@textlint/types": "^12.0.2", "chalk": "^1.1.3", - "debug": "^4.3.1", + "debug": "^4.3.2", "diff": "^4.0.2", "is-file": "^1.0.0", "string-width": "^1.0.2", @@ -181,9 +178,9 @@ "dev": true }, "@textlint/types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.0.tgz", - "integrity": "sha512-3sB22cGtN9nPViDrW7FJxWkDrpGtyJbvNsvZqzX83HJbAiOmzzeHDkRRLvz9tax76lcdjlNk+2rHY3iSnjhEag==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" @@ -226,9 +223,9 @@ } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -274,21 +271,20 @@ } }, "@textlint/kernel": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.0.0.tgz", - "integrity": "sha512-8UXHKhSAgn1aexPjyQE1CRVivCfSz+aFuNrktT9+JOMM3XsSd4JFcMKDhPA1utiiRR+4yDVH5be38vuuJOG9cQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.0.2.tgz", + "integrity": "sha512-IVWC5xyHj58X3/sUXAOndOPMQMkvGaXXPCtLITm8rSwKRc4D/qF2hhwAisOu8XImIwBGzvhFlq+IM7cUW1qDtA==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0", - "@textlint/ast-tester": "^12.0.0", - "@textlint/ast-traverse": "^12.0.0", - "@textlint/feature-flag": "^12.0.0", - "@textlint/source-code-fixer": "^12.0.0", - "@textlint/types": "^12.0.0", - "@textlint/utils": "^12.0.0", - "debug": "^4.3.1", + "@textlint/ast-tester": "^12.0.2", + "@textlint/ast-traverse": "^12.0.2", + "@textlint/feature-flag": "^12.0.2", + "@textlint/source-code-fixer": "^12.0.2", + "@textlint/types": "^12.0.2", + "@textlint/utils": "^12.0.2", + "debug": "^4.3.2", "deep-equal": "^1.1.1", - "map-like": "^2.0.0", "structured-source": "^3.0.2" }, "dependencies": { @@ -299,18 +295,18 @@ "dev": true }, "@textlint/types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.0.tgz", - "integrity": "sha512-3sB22cGtN9nPViDrW7FJxWkDrpGtyJbvNsvZqzX83HJbAiOmzzeHDkRRLvz9tax76lcdjlNk+2rHY3iSnjhEag==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -319,24 +315,24 @@ } }, "@textlint/linter-formatter": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.0.0.tgz", - "integrity": "sha512-jRRZluLCBXcP8VlA90N8DJOPy890j7rVOVSuyyFn0ypuUK88X2qH9XoEd9yYbo/HmH9ky2h+TeA8CJtOAIjU2g==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.0.2.tgz", + "integrity": "sha512-xRTkLmMUnxW5Y6UXsIc9iLo8hyj5toYXVA/u5ABO4t3QObgtUllWi9W2eauZeY19pLTXweBHYxqG/tl3jTCpJQ==", "dev": true, "requires": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.0.0", - "@textlint/types": "^12.0.0", + "@textlint/module-interop": "^12.0.2", + "@textlint/types": "^12.0.2", "chalk": "^1.1.3", - "debug": "^4.3.1", + "debug": "^4.3.2", "is-file": "^1.0.0", "js-yaml": "^3.14.1", "optionator": "^0.9.1", "pluralize": "^2.0.0", "string-width": "^1.0.2", "strip-ansi": "^6.0.0", - "table": "^3.8.3", + "table": "^6.7.1", "text-table": "^0.2.0", "try-resolve": "^1.0.1", "xml-escape": "^1.1.0" @@ -349,9 +345,9 @@ "dev": true }, "@textlint/types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.0.tgz", - "integrity": "sha512-3sB22cGtN9nPViDrW7FJxWkDrpGtyJbvNsvZqzX83HJbAiOmzzeHDkRRLvz9tax76lcdjlNk+2rHY3iSnjhEag==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" @@ -394,9 +390,9 @@ } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -452,13 +448,13 @@ } }, "@textlint/markdown-to-ast": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.0.0.tgz", - "integrity": "sha512-XaiuePJVDGVIwdjIiITdbdRXZDFnAFY/so3Rb8qAId/Qq9fKPUvgefMkdIG73wUC7LzhrAzH6/CuEO+f77HR5g==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.0.2.tgz", + "integrity": "sha512-xAJ4U/fOL7FoX4bYeYRCsSIeTxFqzKd944AsVxAYrz2ZfKH0TtBSNDDtN22uBEXOrSCCR12Z7QuMcp+URyYWlw==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0", - "debug": "^4.3.1", + "debug": "^4.3.2", "remark-footnotes": "^3.0.0", "remark-frontmatter": "^3.0.0", "remark-gfm": "^1.0.0", @@ -474,9 +470,9 @@ "dev": true }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -499,19 +495,19 @@ } }, "@textlint/module-interop": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.0.0.tgz", - "integrity": "sha512-WSuwd3pd2xYDCYqpA6NE8FwMZS4WJ2gZmsSCXBpOh3qJ/pHbmrfEaiwOpGQJA4RfXVp8Fy5KfaAQJIr+wox98A==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.0.2.tgz", + "integrity": "sha512-jnFx7B7Q/au49n5Kt/ttPhecvnJGj7643KzPxRNXy422nmafi1EfOZDMGkNEJhlVsQ9WzAnliTTXTFTrBhtVYA==", "dev": true }, "@textlint/source-code-fixer": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.0.0.tgz", - "integrity": "sha512-+XMJ7unzezEqKh8euWIw1QUprvv7IJzOfV0UPVbkThX2d3ZOzBmK+AzlYbqzCwZ1jkV0QYaRqaptBE+iaaQjNg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.0.2.tgz", + "integrity": "sha512-lWNndH7Z+KGo8NhM4e3I5fR0SfZeS25AW7MRQGsKbxHL8NSi6KmCXVK8unEls82+DKXW4VdjTTgVYTTOVGa3BA==", "dev": true, "requires": { - "@textlint/types": "^12.0.0", - "debug": "^4.3.1" + "@textlint/types": "^12.0.2", + "debug": "^4.3.2" }, "dependencies": { "@textlint/ast-node-types": { @@ -521,18 +517,18 @@ "dev": true }, "@textlint/types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.0.tgz", - "integrity": "sha512-3sB22cGtN9nPViDrW7FJxWkDrpGtyJbvNsvZqzX83HJbAiOmzzeHDkRRLvz9tax76lcdjlNk+2rHY3iSnjhEag==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -541,9 +537,9 @@ } }, "@textlint/text-to-ast": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.0.0.tgz", - "integrity": "sha512-j73hF6BiwdZurNdzHfOtP5j3v+nTWaTP7RtJf5wpfQBigT4RA+EqmKxUd/OpO+gt/Xy1NkpceLFNllZGRLEvkw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.0.2.tgz", + "integrity": "sha512-vgB4k4CpY59XVrcvWLyFkCoMIVpiUheuy2FC1+Qb44hmoEYT26uglX7SEkBRTQvlzsjChgryzA2PFf2c1wkL0Q==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" @@ -558,21 +554,21 @@ } }, "@textlint/textlint-plugin-markdown": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.0.0.tgz", - "integrity": "sha512-eo9deECYMkytoiJUqDxEwzugL8sLcCFUbeCpzV5IuIRwQBh85Hds3lp/mtW1B3Q/BxcSa08im2HAa9uRdcoe4Q==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.0.2.tgz", + "integrity": "sha512-3qizGxt/cz0foqmUuqpk0hnQzXdDehG0CBrzUINJVa7btpDn8bD9fRYn88OdmGLtejVJR/pUDOOZk3RYYEVmlQ==", "dev": true, "requires": { - "@textlint/markdown-to-ast": "^12.0.0" + "@textlint/markdown-to-ast": "^12.0.2" } }, "@textlint/textlint-plugin-text": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.0.0.tgz", - "integrity": "sha512-brtexdqu7yvFLstYvVlotMZz5T7SwKfnFnV9Sm+uhg/d3Ddea9exzpiWWcXfRAhfOBd12mmEGM6gwAuSwzrhqg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.0.2.tgz", + "integrity": "sha512-giCTwrioT6bYlOZ+xf/c9ML1GYitQVrtToHzWI6AAs8szg+Q5+h3KCG921sDEGgZfqnljuBaYcHJsW/iNG1+UA==", "dev": true, "requires": { - "@textlint/text-to-ast": "^12.0.0" + "@textlint/text-to-ast": "^12.0.2" } }, "@textlint/types": { @@ -585,9 +581,9 @@ } }, "@textlint/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-bnIr17iouc4MtVR+r7v8mBasNn3ZsQpfTLTi4RelrZJdICHMBUMOWRX70cVRV/xJck/nfY9igt325qI0y2ELoQ==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.0.2.tgz", + "integrity": "sha512-IYmibhDMWd8EmRvk8ii9AA/ecrZk5Wj5NNcKuB78+ae2PIVI1zWzQoieSvQyX7DLPRVH4S22RORiEpruRcDzng==", "dev": true }, "@types/mdast": { @@ -606,29 +602,17 @@ "dev": true }, "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "version": "8.6.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.1.tgz", + "integrity": "sha512-42VLtQUOLefAvKFAQIxIZDaThq6om/PrfP0CYk3/vn+y4BMNkKnbli8ON2QCiHov4KkzOSJ/xSoBJdayiiYvVQ==", "dev": true, "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - }, - "dependencies": { - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - } + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" } }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true - }, "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", @@ -663,6 +647,12 @@ "sprintf-js": "~1.0.2" } }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "bail": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.4.tgz", @@ -912,6 +902,12 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", @@ -1291,14 +1287,11 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "json5": { "version": "2.1.3", @@ -1309,12 +1302,6 @@ "minimist": "^1.2.5" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -1426,6 +1413,18 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", + "dev": true + }, "log-symbols": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", @@ -1483,12 +1482,6 @@ "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", "dev": true }, - "map-like": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-like/-/map-like-2.0.0.tgz", - "integrity": "sha1-lEltSa0zPA3DI0snrbvR6FNZU7Q=", - "dev": true - }, "markdown-extensions": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", @@ -2082,9 +2075,9 @@ "dev": true }, "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, "path-to-glob-pattern": { @@ -2143,6 +2136,12 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, "rc-config-loader": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-3.0.0.tgz", @@ -2482,10 +2481,15 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } }, "sliced": { "version": "1.0.1", @@ -2602,92 +2606,17 @@ } }, "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", + "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", "dev": true, "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } + "ajv": "^8.0.1", + "lodash.clonedeep": "^4.5.0", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0" } }, "text-table": { @@ -2697,30 +2626,29 @@ "dev": true }, "textlint": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.0.0.tgz", - "integrity": "sha512-hpXezTFR/BxNzc0iJqwspAuHYrCWF/nF7mBS9OGzgBJx5FfS1xfsAIityV65Ffcr+nxCExzTQqRHR6qSWOZmbg==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.0.2.tgz", + "integrity": "sha512-pg453CN2xtLoqss9YVSKkEFJtJ1AB/9SWTxl11fgdqFPCOK2W/320CJRqSxo5bJFpIn5+6bjqkuPHS0cZWLPvg==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0", - "@textlint/ast-traverse": "^12.0.0", - "@textlint/feature-flag": "^12.0.0", - "@textlint/fixer-formatter": "^12.0.0", - "@textlint/kernel": "^12.0.0", - "@textlint/linter-formatter": "^12.0.0", - "@textlint/module-interop": "^12.0.0", - "@textlint/textlint-plugin-markdown": "^12.0.0", - "@textlint/textlint-plugin-text": "^12.0.0", - "@textlint/types": "^12.0.0", - "@textlint/utils": "^12.0.0", - "debug": "^4.3.1", + "@textlint/ast-traverse": "^12.0.2", + "@textlint/feature-flag": "^12.0.2", + "@textlint/fixer-formatter": "^12.0.2", + "@textlint/kernel": "^12.0.2", + "@textlint/linter-formatter": "^12.0.2", + "@textlint/module-interop": "^12.0.2", + "@textlint/textlint-plugin-markdown": "^12.0.2", + "@textlint/textlint-plugin-text": "^12.0.2", + "@textlint/types": "^12.0.2", + "@textlint/utils": "^12.0.2", + "debug": "^4.3.2", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", "get-stdin": "^5.0.1", "glob": "^7.1.7", "is-file": "^1.0.0", "log-symbols": "^1.0.2", - "map-like": "^2.0.0", "md5": "^2.3.0", "mkdirp": "^0.5.0", "optionator": "^0.9.1", @@ -2740,18 +2668,18 @@ "dev": true }, "@textlint/types": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.0.tgz", - "integrity": "sha512-3sB22cGtN9nPViDrW7FJxWkDrpGtyJbvNsvZqzX83HJbAiOmzzeHDkRRLvz9tax76lcdjlNk+2rHY3iSnjhEag==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.0.2.tgz", + "integrity": "sha512-w5aWSCd1sot1waiYw8KnmJNY1q+k9LDoaA6xjGbBuVBGJl0TLXIZoOP8HYFUcKFfJRpqGGob1geTHiyFdnyS0w==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.0.0" } }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -3052,6 +2980,15 @@ "unist-util-is": "^3.0.0" } }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 6464e4b7c7b..7f2c1d96d1f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "remark-lint-fenced-code-flag": "^2.0.1", "remark-lint-no-shell-dollars": "^2.0.2", "remark-stringify": "^9.0.1", - "textlint": "^12.0.0", + "textlint": "^12.0.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^2.1.5" }, From 5f27d54825a002e90c770b0d31f45c3ed10a57fa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 11:41:23 +0200 Subject: [PATCH 12/29] Bump dessant/lock-threads from 2.0.3 to 2.1.1 (#18469) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/lock.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index 6c0a397b5ba..51a06023e06 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.0.3 + - uses: dessant/lock-threads@v2.1.1 with: github-token: ${{ github.token }} issue-lock-inactive-days: "30" From 04a5d7b480c53e2d7686eaa60124920d81a3367f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 12 Jul 2021 12:49:03 +0200 Subject: [PATCH 13/29] Fix incorrect default scan interval for Luftdaten (#18476) --- source/_integrations/luftdaten.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index efa79cb2484..9bb5bba4f01 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -47,7 +47,7 @@ scan_interval: description: the frequency (in seconds) between data updates. required: false type: integer - default: 1800 + default: 600 sensors: description: The sensor-related configuration options. required: false From 7be11f75d796857ecb716cfa433294916108bcc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 12 Jul 2021 13:03:42 +0200 Subject: [PATCH 14/29] Add missing tag (#18462) --- source/_includes/installation/container/cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_includes/installation/container/cli.md b/source/_includes/installation/container/cli.md index 4cc80faa35a..d31ca99cb17 100644 --- a/source/_includes/installation/container/cli.md +++ b/source/_includes/installation/container/cli.md @@ -19,7 +19,7 @@ ```bash # if this returns "Image is up to date" then you can stop here - docker pull {{ include.image }} + docker pull {{ include.image | default: site.installation.container.base }}:{{ include.tag | default: 'stable' }} ``` ```bash From 900af2af763751dbad6275eddb5ea95cc3f46888 Mon Sep 17 00:00:00 2001 From: HeimdallMidgard <50184150+HeimdallMidgard@users.noreply.github.com> Date: Mon, 12 Jul 2021 13:37:28 +0200 Subject: [PATCH 15/29] Update mqtt_room.markdown Added my ESP-32-BLE-Scanner for Home Assistant (#18465) * Update mqtt_room.markdown Added my ESP-32-BLE-Scanner so more ppl can find it :). If you want to make adjustments go for it. Feedback etc. is also nice. * Tweak Co-authored-by: Franck Nijhof --- source/_integrations/mqtt_room.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/mqtt_room.markdown b/source/_integrations/mqtt_room.markdown index b3b0425c3b1..5c4d4d14464 100644 --- a/source/_integrations/mqtt_room.markdown +++ b/source/_integrations/mqtt_room.markdown @@ -66,6 +66,7 @@ Example JSON that should be published to the room topics: This integration works with any software that is sending data in the given format. Each client should post the discovered devices in its own subtopic of the configured topic. Instead of developing your own application, you can also use any of these already existing clients: +- [**ESP-32-BLE-Scanner for Home Assistant**](https://github.com/HeimdallMidgard/ESP-32-BLE-Scanner): ESP32 based BLE presence detection for Home Assistant with web GUI - [**room-assistant**](https://github.com/mKeRix/room-assistant): looks for Bluetooth LE beacons, based on Node.js - [**Happy Bubbles Presence Server**](https://github.com/happy-bubbles/presence): presence detection server for Happy Bubbles BLE-scanning devices, based on Go - [**ESP32-MQTT-room**](https://jptrsn.github.io/ESP32-mqtt-room/): runs on an ESP32, and looks for Bluetooth LE devices, based on C++/Arduino From 2391cc1619322649158fb7b16fbe2283614a1263 Mon Sep 17 00:00:00 2001 From: Matthias Pfefferle Date: Mon, 12 Jul 2021 14:19:50 +0200 Subject: [PATCH 16/29] fixed typo (#18452) --- source/_integrations/ambee.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/ambee.markdown b/source/_integrations/ambee.markdown index b49a3efb67b..70dcde3e41e 100644 --- a/source/_integrations/ambee.markdown +++ b/source/_integrations/ambee.markdown @@ -15,7 +15,7 @@ ha_platforms: ha_quality_scale: platinum --- -The Ambee integration integrations the [Ambee](https://www.getambee.com/) API +The Ambee integration integrates the [Ambee](https://www.getambee.com/) API platform with Home Assistant. Ambee fuses the power of thousands of on-ground sensor data and hundreds of From a7669138f74785b3db12961506ee7cc30c55c55b Mon Sep 17 00:00:00 2001 From: Oxan van Leeuwen Date: Mon, 12 Jul 2021 16:28:17 +0200 Subject: [PATCH 17/29] Clarify and fix formatting for MQTT light JSON schema (#18458) --- source/_integrations/light.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index 1b3b00c29a6..7ea6f2b3697 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -404,7 +404,7 @@ light: The `mqtt` light platform with JSON schema lets you control a MQTT-enabled light that can receive [JSON](https://en.wikipedia.org/wiki/JSON) messages. -This schema supports on/off, brightness, RGB colors, XY colors, color temperature, transitions and short/long flashing. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed. The `color_mode` will not be present in messages sent to the light. It is optional in messages received from the light, but can be used to disambiguate the current mode in the light. In the example below, `color_mode` is set to `rgb` and `color_temp`, `color.c`, `color.w`, color.x`, `color.y`, `color.h`, `color.s` will all be ignored: +This schema supports on/off, brightness, RGB colors, XY colors, color temperature, transitions and short/long flashing. The messages sent to/from the lights look similar to this, omitting fields when they aren't needed. The `color_mode` will not be present in messages sent to the light. It is optional in messages received from the light, but can be used to disambiguate the current mode in the light. In the example below, `color_mode` is set to `rgb` and `color_temp`, `color.c`, `color.w`, `color.x`, `color.y`, `color.h`, `color.s` will all be ignored by Home Assistant: ```json { From 7fb5ff7f1a25272f515ebe1f0bade0806a2fc487 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 16:58:30 +0200 Subject: [PATCH 18/29] Bump rake from 13.0.4 to 13.0.6 (#18442) Bumps [rake](https://github.com/ruby/rake) from 13.0.4 to 13.0.6. - [Release notes](https://github.com/ruby/rake/releases) - [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc) - [Commits](https://github.com/ruby/rake/compare/v13.0.4...v13.0.6) --- updated-dependencies: - dependency-name: rake dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 3a04804fc3e..bef93375399 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ source 'https://rubygems.org' ruby '> 2.5.0' group :development do - gem 'rake', '13.0.4' + gem 'rake', '13.0.6' gem 'jekyll', '4.2.0' gem 'compass', '1.0.3' gem 'sass-globbing', '1.1.5' diff --git a/Gemfile.lock b/Gemfile.lock index ef1288421b4..0cdbfe69bf6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -86,7 +86,7 @@ GEM rack (2.2.3) rack-protection (2.1.0) rack - rake (13.0.4) + rake (13.0.6) rb-fsevent (0.11.0) rb-inotify (0.10.1) ffi (~> 1.0) @@ -131,7 +131,7 @@ DEPENDENCIES jekyll-time-to-read (= 0.1.2) jekyll-toc (= 0.17.1) nokogiri (= 1.11.7) - rake (= 13.0.4) + rake (= 13.0.6) sass-globbing (= 1.1.5) sassc (= 2.1.0) sinatra (= 2.1.0) From 8a5560ee83e93d67e10c73eacf2a852553c9bd5a Mon Sep 17 00:00:00 2001 From: Chris Browet Date: Mon, 12 Jul 2021 17:10:11 +0200 Subject: [PATCH 19/29] Clarifies usage of trusted_proxies (#18447) * Clarifies usage of trusted_proxies As discussed in https://github.com/home-assistant/core/issues/52736 * Tweak Co-authored-by: Franck Nijhof --- source/_integrations/http.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index c5b9dcfd93d..8c09417060d 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -64,7 +64,7 @@ use_x_forwarded_for: type: boolean default: false trusted_proxies: - description: "List of trusted proxies, consisting of IP addresses or networks, that are allowed to set the `X-Forwarded-For` header. This is required when using `use_x_forwarded_for` because all requests to Home Assistant, regardless of source, will arrive from the reverse proxy IP address. Therefore in a reverse proxy scenario, this option should be set with extreme care." + description: "List of trusted proxies, consisting of IP addresses or networks, that are allowed to set the `X-Forwarded-For` header. This is required when using `use_x_forwarded_for` because all requests to Home Assistant, regardless of source, will arrive from the reverse proxy IP address. Therefore in a reverse proxy scenario, this option should be set with extreme care. If the immediate upstream proxy is not in the list, the request will be rejected. If any other intermediate proxy is not in the list, the first untrusted proxy will be considered the client." required: false type: [string, list] ip_ban_enabled: From 17f9f7ca3a6e51dae0842f53143d957a0479e4da Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 12 Jul 2021 17:39:48 +0200 Subject: [PATCH 20/29] Add missing webhook to default config docs (#18479) --- source/_integrations/default_config.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index 23b7f34fb25..fe0f13a492c 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -38,6 +38,7 @@ This integration is a meta-component and configures a default set of integration - [Tag](/integrations/tag/) (`tag`) - [Timer](/integrations/timer/) (`timer`) - [Updater](/integrations/updater/) (`updater`) +- [Webhooks](/integrations/webhook) (`webhook`) - [Zero-configuration networking (zeroconf)](/integrations/zeroconf/) (`zeroconf`) - [Zone](/integrations/zone/) (`zone`) From 8a44aee384178acd238fd29328c2ed07fe3a3a27 Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Mon, 12 Jul 2021 18:26:16 +0200 Subject: [PATCH 21/29] MQTT Fan docs - sorted config and small text corrections (#18454) * sorted config and small text corrections * remove unneeded raw tags --- source/_integrations/fan.mqtt.markdown | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 7dfff3fc4ae..4de4d1ec7f6 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -197,7 +197,7 @@ percentage_state_topic: required: false type: string percentage_value_template: - description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from fan percentage speed. + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the `percentage` value from the payload received on `percentage_state_topic`. required: false type: string preset_mode_command_template: @@ -213,7 +213,7 @@ preset_mode_state_topic: required: false type: string preset_mode_value_template: - description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the preset_mode payload. + description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`. required: false type: string preset_modes: @@ -231,16 +231,16 @@ retain: required: false type: boolean default: true -speed_range_min: - description: The minimum of numeric output range (`off` not included, so `speed_range_min` - 1 represents 0%). The number of speeds within the speed_range / 100 will determine the `percentage_step`. - required: false - type: integer - default: 1 speed_range_max: - description: The maximum of numeric output range (representing 100%). The number of speeds within the speed_range / 100 will determine the `percentage_step`. + description: The maximum of numeric output range (representing 100 %). The number of speeds within the `speed_range` / `100` will determine the `percentage_step`. required: false type: integer default: 100 +speed_range_min: + description: The minimum of numeric output range (`off` not included, so `speed_range_min` - `1` represents 0 %). The number of speeds within the speed_range / 100 will determine the `percentage_step`. + required: false + type: integer + default: 1 state_topic: description: The MQTT topic subscribed to receive state updates. required: false @@ -298,13 +298,14 @@ fan: speed_range_max: 10 ``` -{% raw %} +### Configuration using command templates This example demonstrates how to use command templates with JSON output. +{% raw %} + ```yaml -# Example configuration.yaml -# Example using command templates +# Example configuration.yaml with command templates fan: - platform: mqtt name: "Bedroom Fan" From 397d1607ac229f7fba75a81f8ec14ac377def384 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jul 2021 20:25:43 +0200 Subject: [PATCH 22/29] Bump actions/setup-node from 2.1.5 to 2.2.0 (#18361) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e8557d0487d..e7ed50d82d2 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.1.5 + uses: actions/setup-node@v2.2.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.1.5 + uses: actions/setup-node@v2.2.0 with: node-version: 12.x - name: Setup NPM cache From 1a4232880815928b4470c82124793cb90097f55f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 12 Jul 2021 21:00:40 +0000 Subject: [PATCH 23/29] 2021.7.2 --- _config.yml | 4 +- .../_posts/2021-07-07-release-20217.markdown | 83 ++++++++++++++++++- 2 files changed, 84 insertions(+), 3 deletions(-) diff --git a/_config.yml b/_config.yml index d33221baf68..07f9073e8fa 100644 --- a/_config.yml +++ b/_config.yml @@ -105,8 +105,8 @@ social: # Home Assistant release details current_major_version: 2021 current_minor_version: 7 -current_patch_version: 1 -date_released: 2021-07-08 +current_patch_version: 2 +date_released: 2021-07-12 # 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/source/_posts/2021-07-07-release-20217.markdown b/source/_posts/2021-07-07-release-20217.markdown index e694878ac57..e452e967a85 100644 --- a/source/_posts/2021-07-07-release-20217.markdown +++ b/source/_posts/2021-07-07-release-20217.markdown @@ -51,6 +51,7 @@ Alright, that's it! Enjoy the release! - [New Platforms](#new-platforms) - [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) - [Release 2021.7.1 - July 8](#release-202171---july-8) +- [Release 2021.7.2 - July 12](#release-202172---july-12) - [If you need help...](#if-you-need-help) - [Breaking Changes](#breaking-changes) - [All changes](#all-changes) @@ -364,6 +365,86 @@ The following integrations are now available via the Home Assistant UI: [stream docs]: /integrations/stream/ [wemo docs]: /integrations/wemo/ +## Release 2021.7.2 - July 12 + +- Ignore Sonos Boost devices during discovery ([@jjlawren] - [#52845]) ([sonos docs]) +- Add zeroconf discovery to Sonos ([@bdraco] - [#52655]) ([sonos docs]) +- Remove scale calculation for climacell cloud cover ([@apaperclip] - [#52752]) ([climacell docs]) +- Fix homebridge devices becoming unavailable frequently ([@Jc2k] - [#52753]) ([homekit_controller docs]) +- Fix nexia thermostats humidify without dehumidify support ([@bdraco] - [#52758]) ([nexia docs]) +- Support certain homekit devices that emit invalid JSON ([@Jc2k] - [#52759]) ([homekit_controller docs]) +- Send ssdp requests to ipv4 broadcast as well ([@bdraco] - [#52760]) ([ssdp docs]) +- Bump dependency to properly handle current and voltage not being reported on some zhapower endpoints ([@Kane610] - [#52764]) ([deconz docs]) +- Upgrade pymazda to 0.2.0 ([@bdr99] - [#52775]) +- Fix ESPHome Camera not merging image packets ([@OttoWinter] - [#52783]) ([esphome docs]) +- Fix Neato parameter for token refresh ([@chemelli74] - [#52785]) ([neato docs]) +- Add the Trane brand to nexia ([@bdraco] - [#52805]) ([nexia docs]) +- Bump python-fireservicerota to 0.0.42 ([@cyberjunky] - [#52807]) ([fireservicerota docs]) +- Bump up ZHA depdencies ([@Adminiuga] - [#52818]) ([zha docs]) +- Update arcam lib to 0.7.0 ([@elupus] - [#52829]) ([arcam_fmj docs]) +- Bump aiohomekit to 0.5.1 to solve performance regression ([@bdraco] - [#52878]) ([homekit_controller docs]) +- Bump pyhaversion to 21.7.0 ([@ludeeus] - [#52880]) ([version docs]) +- Prefer using xy over hs when supported by light ([@Kane610] - [#52883]) ([deconz docs]) +- Bump zwave-js-server-python to 0.27.1 ([@raman325] - [#52885]) ([zwave_js docs]) +- Surepetcare, fix set_lock_state ([@Danielhiversen] - [#52912]) ([surepetcare docs]) +- Bump pyinsteon to 1.0.11 ([@teharris1] - [#52927]) ([insteon docs]) +- Fix recorder purge with sqlite3 < 3.32.0 ([@bdraco] - [#52929]) +- Bump pysonos to 0.0.52 ([@jjlawren] - [#52934]) ([sonos docs]) + +[#52655]: https://github.com/home-assistant/core/pull/52655 +[#52752]: https://github.com/home-assistant/core/pull/52752 +[#52753]: https://github.com/home-assistant/core/pull/52753 +[#52758]: https://github.com/home-assistant/core/pull/52758 +[#52759]: https://github.com/home-assistant/core/pull/52759 +[#52760]: https://github.com/home-assistant/core/pull/52760 +[#52764]: https://github.com/home-assistant/core/pull/52764 +[#52775]: https://github.com/home-assistant/core/pull/52775 +[#52783]: https://github.com/home-assistant/core/pull/52783 +[#52785]: https://github.com/home-assistant/core/pull/52785 +[#52805]: https://github.com/home-assistant/core/pull/52805 +[#52807]: https://github.com/home-assistant/core/pull/52807 +[#52818]: https://github.com/home-assistant/core/pull/52818 +[#52829]: https://github.com/home-assistant/core/pull/52829 +[#52845]: https://github.com/home-assistant/core/pull/52845 +[#52878]: https://github.com/home-assistant/core/pull/52878 +[#52880]: https://github.com/home-assistant/core/pull/52880 +[#52883]: https://github.com/home-assistant/core/pull/52883 +[#52885]: https://github.com/home-assistant/core/pull/52885 +[#52912]: https://github.com/home-assistant/core/pull/52912 +[#52927]: https://github.com/home-assistant/core/pull/52927 +[#52929]: https://github.com/home-assistant/core/pull/52929 +[#52934]: https://github.com/home-assistant/core/pull/52934 +[@Adminiuga]: https://github.com/Adminiuga +[@Danielhiversen]: https://github.com/Danielhiversen +[@Jc2k]: https://github.com/Jc2k +[@Kane610]: https://github.com/Kane610 +[@OttoWinter]: https://github.com/OttoWinter +[@apaperclip]: https://github.com/apaperclip +[@bdr99]: https://github.com/bdr99 +[@bdraco]: https://github.com/bdraco +[@chemelli74]: https://github.com/chemelli74 +[@cyberjunky]: https://github.com/cyberjunky +[@elupus]: https://github.com/elupus +[@jjlawren]: https://github.com/jjlawren +[@ludeeus]: https://github.com/ludeeus +[@raman325]: https://github.com/raman325 +[@teharris1]: https://github.com/teharris1 +[arcam_fmj docs]: /integrations/arcam_fmj/ +[climacell docs]: /integrations/climacell/ +[deconz docs]: /integrations/deconz/ +[esphome docs]: /integrations/esphome/ +[fireservicerota docs]: /integrations/fireservicerota/ +[homekit_controller docs]: /integrations/homekit_controller/ +[insteon docs]: /integrations/insteon/ +[neato docs]: /integrations/neato/ +[nexia docs]: /integrations/nexia/ +[sonos docs]: /integrations/sonos/ +[ssdp docs]: /integrations/ssdp/ +[surepetcare docs]: /integrations/surepetcare/ +[version docs]: /integrations/version/ +[zha docs]: /integrations/zha/ +[zwave_js docs]: /integrations/zwave_js/ + ## If you need help... ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). @@ -757,7 +838,7 @@ unexpected behavior. This change applies to all supported MQTT platforms. -([@emontnemery] - [#52242] [#52278] [#52280] [#52285] [#52286] [#52283] [#52289] [#52291] [#52290] [#52288] [#52282] [#52279]) ([mqtt docs]) +([@emontnemery] - [#52242] [#52278] [#52280] [#52285] [#52286] [#52283] [#52289] [#52291] [#52290] [#52288] [#52282] [#52279]) ([mqtt docs]) {% enddetails %} From 17b379226d17111e05f5945df40c063d6ad43708 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 13 Jul 2021 12:24:27 +0200 Subject: [PATCH 24/29] Fix broken links in dwd weather warnings (#18486) --- source/_integrations/dwd_weather_warnings.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown index abd7de9fbec..b68c4baea30 100644 --- a/source/_integrations/dwd_weather_warnings.markdown +++ b/source/_integrations/dwd_weather_warnings.markdown @@ -33,7 +33,7 @@ sensor:
- The `region_name` can either be a so called `warncell id` (integer) or a `warncell name` (string). It is heavily advised to use `warncell id` because `warncell name` is not unique in some cases. -A list of valid warncell ids and names can be found at https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.html. +A list of valid warncell ids and names can be found at [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.html). - Some of the warncells are outdated but still listed. If setup fails search the list for a similar sounding warncell. - If you selected a `warncell name` and the name is not unique `" (not unique used ID)!"` will be added to the reported `region_name`. @@ -71,14 +71,14 @@ monitored_conditions: | `warning_count` | *(int)* Number of issued warnings. There can be more than one warning issued at once. | | `warning_` | *(list)* The warning as a whole object containing the following attributes as nested attributes. | | `warning__level` | *(int)* Issued warning level (0 - 4).
0: Keine Warnungen
1: Wetterwarnungen
2: Warnungen vor markantem Wetter
3: Unwetterwarnungen
4: Warnungen vor extremem Unwetter | -| `warning__type` | *(int)* Issued warning type.
More information can be found at https://www.dwd.de/DE/leistungen/opendata/help/warnungen/neu_cap_dwd_profile_changes_de_pdf.pdf | +| `warning__type` | *(int)* Issued warning type.
More information can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/warning_codes_pdf.pdf?__blob=publicationFile&v=5). | | `warning__name` | *(str)* Warning name correlates with the warning type and represents it as a short string. | | `warning__headline` | *(str)* Official headline of the weather warning. | | `warning__start` | *(time)* Starting time and date (UTC) of the issued warning. | | `warning__end` | *(time)* Ending time and date (UTC) of the issued warning. | | `warning__description` | *(str)* Details for the issued warning. | | `warning__instruction` | *(str)* The DWD sometimes provides helpful information about precautions to take for the issued warning. | -| `warning__parameters` | *(list)* A list of additional warning parameters.
More information can be found at https://www.dwd.de/DE/leistungen/opendata/help/warnungen/neu_cap_dwd_profile_changes_de_pdf.pdf | +| `warning__parameters` | *(list)* A list of additional warning parameters.
More information can be found [here](https://www.dwd.de/DE/leistungen/opendata/help/warnungen/warning_codes_pdf.pdf?__blob=publicationFile&v=5). | | `warning__color` | *(str)* The DWD color of the warning encoded as `#rrggbb`. |
From a03f486290b077f5cf4d415e236851a2c1490bf4 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 13 Jul 2021 20:02:35 +0200 Subject: [PATCH 25/29] Fix tables on SMA integration page (#18499) --- source/_integrations/sma.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index bfb347e83d5..2d49261db2f 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -27,6 +27,7 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the ### Solar Inverter | name | Unit | Description | +| --- | --- | --- | | status | | Status of the device | | pv_power_a | W | Current power generated by the solar panels (A side) | | pv_power_b | W | Current power generated by the solar panels (B side) | @@ -52,6 +53,7 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the #### Optimizers via Inverter | name | Unit | Description | +| --- | --- | --- | | optimizer_power_x | W | Power supplied by optimizer X | | optimizer_current_x | A | Current supplied by optimizer X | | optimizer_voltage_x | V | Voltage supplied by optimizer X | @@ -60,6 +62,7 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the #### Energy Meter via Inverter | name | Unit | Description | +| --- | --- | --- | | metering_power_supplied | W | Power supplied | | metering_power_absorbed | W | Power absorbed | | metering_frequency | Hz | Grid frequency | @@ -81,6 +84,7 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the ### Energy Meter | name | Unit | Description | +| --- | --- | --- | | status | | Status of the device | | grid_power | W | Power supplied to the grid. grid_power = power_l1 + power_l2 + power_l3 | | frequency | Hz | Grid frequency. | @@ -97,6 +101,7 @@ The SMA WebConnect module supports a wide variety of sensors, but not all of the ### Batery Inverter | name | Unit | Description | +| --- | --- | --- | | operating_status_general | | General operating status | | inverter_condition | | Inverter Condition | | inverter_system_init | | Inverter System Init | From 64da9edeef7a69be94648cee0b6f6f498072c897 Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Tue, 13 Jul 2021 20:03:16 +0100 Subject: [PATCH 26/29] Add references to traces for automation debugging (#18496) Co-authored-by: Franck Nijhof --- .../_docs/automation/troubleshooting.markdown | 14 +++++++- source/_docs/automation/yaml.markdown | 33 ++++++++++++------ .../automation/automation-tracing.png | Bin 0 -> 69597 bytes 3 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 source/images/integrations/automation/automation-tracing.png diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index f63899cf928..bd6b0bd3c92 100644 --- a/source/_docs/automation/troubleshooting.markdown +++ b/source/_docs/automation/troubleshooting.markdown @@ -3,6 +3,18 @@ title: "Troubleshooting Automations" description: "Tips on how to troubleshoot your automations." --- +## Using debug traces + +Every time an automation runs, a debugging trace is generated regardless of whether the automation was completed, aborted, or suffered an error. Traces allow you to interactively inspect the state of the automation at every step and also check the values of [variables](/docs/scripts/#variables) and rendered [templates](/docs/configuration/templating/). Traces can be accessed in the {% my automations title="Automations Section" %} of {% my configuration %}. + +![Automation debug trace example](/images/integrations/automation/automation-tracing.png) + +Automations created in YAML must have an [`id`](/docs/automation/yaml/#migrating-your-yaml-automations-to-automationsyaml) assigned in order for debugging traces to be stored. + +By default the last 5 traces are stored for each automation, this can be adjusted in the [YAML configuration](/docs/automation/yaml/#number-of-debug-traces-stored) of an automation. Stored traces are reset each time Home Assistant restarts. + +## Inspecting logs and the Logbook + You can verify that your automation rules are being initialized correctly by watching both the realtime logs (`homeassistant.log` in the configuration directory) and also the [Logbook](/integrations/logbook/). The realtime logs will show the rules being initialized (once for each trigger), example: ```text @@ -18,7 +30,7 @@ The Logbook integration will show a line entry when an automation is triggered. [template]: /topics/templating/ -### Testing your automation +## Testing your automation It is generally a difficult task to test an automation, especially if it includes several triggers and some conditions. diff --git a/source/_docs/automation/yaml.markdown b/source/_docs/automation/yaml.markdown index b8bc80f455a..36c3368ebcf 100644 --- a/source/_docs/automation/yaml.markdown +++ b/source/_docs/automation/yaml.markdown @@ -16,7 +16,7 @@ automation: !include automations.yaml # Labeled automation block automation kitchen: - trigger: - - platform: ... + - platform: ... ``` You can add as many labeled `automation` blocks as you want. @@ -30,8 +30,8 @@ Example of a YAML based automation that you can add to `configuration.yaml`. ```yaml # Example of entry in configuration.yaml automation my_lights: -# Turns on lights 1 hour before sunset if people are home -# and if people get home between 16:00-23:00 + # Turns on lights 1 hour before sunset if people are home + # and if people get home between 16:00-23:00 - alias: "Rule 1 Light on in the evening" trigger: # Prefix the first line of each trigger configuration @@ -57,7 +57,7 @@ automation my_lights: target: entity_id: group.living_room -# Turn off lights when everybody leaves the house + # Turn off lights when everybody leaves the house - alias: "Rule 2 - Away Mode" trigger: - platform: state @@ -68,7 +68,7 @@ automation my_lights: target: entity_id: all -# Notify when Paulus leaves the house in the evening + # Notify when Paulus leaves the house in the evening - alias: "Leave Home notification" trigger: - platform: zone @@ -83,7 +83,7 @@ automation my_lights: data: message: "Paulus left the house" -# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component. + # Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component. - alias: "Xiaomi Cube Action" initial_state: false trigger: @@ -110,10 +110,23 @@ At startup, automations by default restore their last state of when Home Assista ```yaml automation: -- alias: "Automation Name" - initial_state: false - trigger: - - platform: ... + - alias: "Automation Name" + initial_state: false + trigger: + - platform: ... +``` + +### Number of debug traces stored + +When using YAML you can configure the number of debugging traces stored for an automation. This is controlled with the `stored_traces` option under `traces`. Set `stored_traces` to the number of traces you wish to store for the particular automation. If not specified the default value of 5 will be used. + +```yaml +automation: + - alias: "Automation Name" + traces: + stored_traces: 10 + trigger: + - platform: ... ``` ## Migrating your YAML automations to `automations.yaml` diff --git a/source/images/integrations/automation/automation-tracing.png b/source/images/integrations/automation/automation-tracing.png new file mode 100644 index 0000000000000000000000000000000000000000..4a49181d5cc26db514a3d5732d8c83f5f0e5e617 GIT binary patch literal 69597 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%0D4fVamy`k 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 literal 0 HcmV?d00001 From 4e6c9d8262eec25210badbe1f2b280adfce3dd68 Mon Sep 17 00:00:00 2001 From: Charles Garwood Date: Wed, 14 Jul 2021 03:40:09 -0400 Subject: [PATCH 27/29] Update Z-Wave JS docs (#18504) Not really early stages anymore, fix zwave_js.ping service description, and update info on polling. --- source/_integrations/zwave_js.markdown | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/source/_integrations/zwave_js.markdown b/source/_integrations/zwave_js.markdown index 7f2388dece0..3641ba228d0 100644 --- a/source/_integrations/zwave_js.markdown +++ b/source/_integrations/zwave_js.markdown @@ -241,8 +241,8 @@ Calling this service forces Z-Wave JS to try to reach a node. This can be used t | Service Data Attribute | Required | Description | |------------------------ |---------- |-------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | no | Entity (or list of entities) to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | -| `device_id` | no | ID of device to set the configuration parameter on. At least one `entity_id` or `device_id` must be provided. | +| `entity_id` | no | Entity (or list of entities) to ping. At least one `entity_id` or `device_id` must be provided. | +| `device_id` | no | ID of device to ping. At least one `entity_id` or `device_id` must be provided. | This service can be used in tandem with the node status sensor (disabled by default) to track the node's status and fire the command when needed. Here's an example automation that would ping a node when the node status sensor state has changed to dead and remained dead for 30 minutes. Note that this may be useful for some devices but will definitely not be useful for all. In cases where it is not useful, all you will be doing is generating additional traffic on your Z-Wave network which could slow down communication. @@ -398,8 +398,6 @@ action: ## Current Limitations -As this integration is still in the early stages there are some important limitations to be aware of. - - While support for the most common devices is working, some command classes are not yet (fully) implemented in Z-Wave JS. You can track the status [here](https://github.com/zwave-js/node-zwave-js/issues/6). - There currently is no migration path available from any of the other Z-Wave implementations in Home Assistant. Your Z-Wave network is however stored on your stick so migrating will only require you to redo your device and entity naming. @@ -599,7 +597,7 @@ Your device might not send automatic status updates to the controller. While the Some legacy devices don't report all their values automatically and require polling to get updated values when controlled manually. Z-Wave JS does not automatically poll devices on a regular basis without user interaction. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary. -- In an upcoming release of Home Assistant we will provide a service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in zwavejs2mqtt but not in the official add-on. +- We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in zwavejs2mqtt but not in the official add-on. - zwavejs2mqtt allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible. From e4dade1b295cbdcb9d5819e14e509405ae286460 Mon Sep 17 00:00:00 2001 From: David Beitey Date: Wed, 14 Jul 2021 18:37:19 +1000 Subject: [PATCH 28/29] Document automation trigger ID template variables (#18497) This documents the trigger IDs and index variables available in trigger_data for all trigger platforms (https://github.com/home-assistant/core/blob/master/homeassistant/helpers/trigger.py#L79) which was mentioned in the [2021.7 release notes](https://www.home-assistant.io/blog/2021/07/07/release-20217/#trigger-conditions-and-trigger-ids). --- source/_docs/automation/templating.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 937aa423b91..6f1d89e1ab6 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -9,6 +9,15 @@ Automations support [templating](/docs/configuration/templating/) in the same wa The following tables show the available trigger data per platform. +### All + +The following describes trigger data associated with all platforms. + +| Template variable | Data | +| ---- | ---- | +| `trigger.id` | Optional trigger `id`, or index of the trigger. +| `trigger.idx` | Index of the trigger. + ### Event | Template variable | Data | @@ -113,12 +122,15 @@ automation: trigger: - platform: state entity_id: device_tracker.paulus + id: paulus_device action: - service: notify.notify data: message: > Paulus just changed from {{ trigger.from_state.state }} to {{ trigger.to_state.state }} + + This was triggered by {{ trigger.id }} automation 2: trigger: From fc74e8005cbac1210a088f5a55451f079f9ee1ae Mon Sep 17 00:00:00 2001 From: Robert Fischer Date: Wed, 14 Jul 2021 02:06:11 -0700 Subject: [PATCH 29/29] Update ohmconnect.markdown (#18503) Updating documentation per https://www.gitmemory.com/issue/home-assistant/core/50503/862003345 --- source/_integrations/ohmconnect.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/ohmconnect.markdown b/source/_integrations/ohmconnect.markdown index b27f62d8202..da34d8f30e1 100644 --- a/source/_integrations/ohmconnect.markdown +++ b/source/_integrations/ohmconnect.markdown @@ -18,7 +18,7 @@ OhmConnect monitors real-time conditions on the electricity grid. When dirty and ## Configuration -You can find your OhmConnect ID under "Open Source Projects" on the [settings page](https://login.ohmconnect.com/settings). It's the string after the last `/` in the URL, e.g., for the URL `https://login.ohmconnect.com/verify-ohm-hour/AbCd1e` your ID is `AbCd1e`. +You can find your OhmConnect ID on the [OhmConnect API settings page](https://login.ohmconnect.com/api/v2/settings). It's the string after the last `/` in the URL, e.g., for the URL `https://login.ohmconnect.com/verify-ohm-hour/AbCd1e` your ID is `AbCd1e`. To enable the OhMConnect sensor, add the following lines to your `configuration.yaml` file: