From 738b7314e6675a6c3df2dd29ad060838688ee5ca Mon Sep 17 00:00:00 2001 From: bcutter Date: Wed, 28 Dec 2022 23:36:45 +0100 Subject: [PATCH 01/36] Reference full service call example (#25418) fixes https://github.com/home-assistant/core/issues/84645 --- source/_integrations/nfandroidtv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/nfandroidtv.markdown b/source/_integrations/nfandroidtv.markdown index 0953e00d693..77aeb16eafe 100644 --- a/source/_integrations/nfandroidtv.markdown +++ b/source/_integrations/nfandroidtv.markdown @@ -59,7 +59,7 @@ interrupt: type: boolean {% endconfiguration %} -This is a fully customized YAML you can use inside `data` to test how the final notification will look like: +This is a fully customized YAML you can use inside `data` to test how the final notification will look like (for using this inside a service call look at the service example at the end of this page): ```yaml fontsize: "large" From 515aa02477bceb8c4c1d655b6f7b1b8d07561999 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 28 Dec 2022 21:04:46 -0500 Subject: [PATCH 02/36] Update 2022-12-07-release-202212.markdown --- source/_posts/2022-12-07-release-202212.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_posts/2022-12-07-release-202212.markdown b/source/_posts/2022-12-07-release-202212.markdown index dd1daee8f57..56993520254 100644 --- a/source/_posts/2022-12-07-release-202212.markdown +++ b/source/_posts/2022-12-07-release-202212.markdown @@ -176,8 +176,10 @@ This release adds support for using Shelly devices as a remote Bluetooth adapter as well! It works with all second-generation Shelly devices that use firmware 12.0 or -later. Those are able to provide Bluetooth advertisements to Home Assistant's -[Bluetooth integration](/integrations/bluetooth). +later. Those are able to forward Bluetooth advertisements to Home Assistant's +[Bluetooth integration](/integrations/bluetooth). Home Assistant is not able +to use Shelly devices to connect to devices, something that is necessry to +control devices via Bluetooth. For that, use our [Bluetooth Proxies](https://esphome.github.io/bluetooth-proxies/). This can greatly help with extending the range of your Bluetooth network to help with things like Bluetooth temperature or plant sensors in your home. From 0b251ed3a0fb7dc91a77291d3b0e39240f7daade Mon Sep 17 00:00:00 2001 From: Marius <33354141+Mariusthvdb@users.noreply.github.com> Date: Thu, 29 Dec 2022 09:03:11 +0100 Subject: [PATCH 03/36] replace 'valid' with 'true' (#25377) Co-authored-by: Franck Nijhof --- source/_docs/scripts/conditions.markdown | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index c23eb0eec8d..28dd62756f1 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -5,7 +5,7 @@ toc: true no_toc: true --- -Conditions can be used within a script or automation to prevent further execution. When a condition evaluates to true, the script or automation will be executed. If any other value is returned the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off. +Conditions can be used within a script or automation to prevent further execution. When a condition evaluates true, the script or automation will be executed. If any other value is returned, the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off. Unlike a trigger, which is always `or`, conditions are `and` by default - all conditions have to be true. @@ -17,7 +17,7 @@ All conditions support an optional `alias`. ### AND condition -Test multiple conditions in one condition statement. Passes if all embedded conditions are valid. +Test multiple conditions in one condition statement. Passes if all embedded conditions are true. ```yaml condition: @@ -64,7 +64,7 @@ condition: ### OR condition -Test multiple conditions in one condition statement. Passes if any embedded condition is valid. +Test multiple conditions in one condition statement. Passes if any embedded condition is true. ```yaml condition: @@ -95,7 +95,7 @@ condition: ### Mixed AND and OR conditions -Test multiple AND and OR conditions in one condition statement. Passes if any embedded condition is valid. +Test multiple AND and OR conditions in one condition statement. Passes if any embedded condition is true. This allows you to mix several AND and OR conditions together. ```yaml @@ -134,7 +134,7 @@ condition: ### NOT condition -Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** valid. +Test multiple conditions in one condition statement. Passes if all embedded conditions are **not** true. ```yaml condition: @@ -233,7 +233,7 @@ condition: ## State condition -Tests if an entity is a specified state. +Tests if an entity has a specified state. ```yaml condition: @@ -261,7 +261,7 @@ condition: ``` Instead of matching all, it is also possible if one of the entities matches. -In the following example the condition will pass if **any** entities match the state. +In the following example the condition will pass if **any** entity matches the state. ```yaml condition: @@ -378,7 +378,7 @@ condition: The sun condition can also test if the sun has already set or risen when a trigger occurs. The `before` and `after` keys can only be set to `sunset` or `sunrise`. They have a corresponding optional offset value (`before_offset`, `after_offset`) that can be added, similar to the [sun trigger][sun_trigger]. -Note that if only `before` key is used, the condition will be `true` _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be `true` from sunset/sunrise _until midnight_. If both `before: sunrise` and `after: sunset` keys are used, the condition will be `true` _from midnight_ until sunrise **and** from sunset _until midnight_. If both `after: sunrise` and `before: sunset` keys are used, the condition will be `true` from sunrise until sunset. +Note that if only `before` key is used, the condition will be true _from midnight_ until sunrise/sunset. If only `after` key is used, the condition will be true from sunset/sunrise _until midnight_. If both `before: sunrise` and `after: sunset` keys are used, the condition will be true _from midnight_ until sunrise **and** from sunset _until midnight_. If both `after: sunrise` and `before: sunset` keys are used, the condition will be true from sunrise until sunset. [sun_trigger]: /docs/automation/trigger/#sun-trigger @@ -412,13 +412,13 @@ condition: before: sunset ``` -A visual timeline is provided below showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true. +A visual timeline is provided below, showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true. ![Graphic showing an example of sun conditions](/images/docs/scripts/sun-conditions.svg) ## Template condition -The template condition tests if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. +The template condition tests if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render `True`. {% raw %} @@ -563,7 +563,7 @@ condition:
Please note that the time condition only takes the time into account. If -an referenced sensor or helper entity contains a timestamp with a date, the +a referenced sensor or helper entity contains a timestamp with a date, the date part is fully ignored.
From fd60a9fd194ac437f801d81e0bd97889797e7f74 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 29 Dec 2022 09:24:10 +0100 Subject: [PATCH 04/36] Add Home Assistant package version to Python install command (#25441) --- source/_faq/pip3.markdown | 2 +- source/_includes/installation/core.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_faq/pip3.markdown b/source/_faq/pip3.markdown index e59c22c9a4b..457e8ef7c1c 100644 --- a/source/_faq/pip3.markdown +++ b/source/_faq/pip3.markdown @@ -10,7 +10,7 @@ This utility should have been installed as part of the Python 3 installation. Ch If you are able to successfully run `python3 --version` but not `pip3`, install Home Assistant by running the following command instead: ```bash -python3 -m pip install homeassistant +python3 -m pip install homeassistant=={{ site.current_major_version }}.{{ site.current_minor_version }}.{{ site.current_patch_version }} ``` On a Debian system, you can also install python3 by `sudo apt-get install python3` and pip3 by `sudo apt-get install python3-pip`. diff --git a/source/_includes/installation/core.md b/source/_includes/installation/core.md index b476c506e8c..01628f40f47 100644 --- a/source/_includes/installation/core.md +++ b/source/_includes/installation/core.md @@ -84,7 +84,7 @@ python3 -m pip install wheel Once you have installed the required Python package, it is now time to install Home Assistant Core! ```bash -pip3 install homeassistant +pip3 install homeassistant=={{ site.current_major_version }}.{{ site.current_minor_version }}.{{ site.current_patch_version }} ``` Start Home Assistant Core for the first time. This will complete the installation for you, automatically creating the `.homeassistant` configuration directory in the `/home/homeassistant` directory, and installing any basic dependencies. From 4d5678fcbc28d81f8d7b7b14d0d037953e2aea12 Mon Sep 17 00:00:00 2001 From: AddMoreLimes <43373573+AddMoreLimes@users.noreply.github.com> Date: Thu, 29 Dec 2022 03:25:26 -0500 Subject: [PATCH 05/36] Update nextbus.markdown to clarify used tags (#25438) --- source/_integrations/nextbus.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index f6e63842270..876397ce691 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -24,8 +24,7 @@ It is possible to get the tag information from the NextBus website. https://www.nextbus.com/#!//// -If tags are incorrect, valid ones will be displayed in the logs as a -convenience. +If tags are incorrect, valid ones will be displayed in the logs as a convenience. Note that the `` tag is not used in this integration. ```yaml # Example configuration.yaml entry From 992278ea4c40d036e4605ecc1ab3f1c66f45f648 Mon Sep 17 00:00:00 2001 From: Mikael Falkvidd Date: Thu, 29 Dec 2022 12:41:45 +0100 Subject: [PATCH 06/36] Clarify home_connect prerequisites (#25389) fixes https://github.com/home-assistant/home-assistant.io/issues/24017 --- source/_integrations/home_connect.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown index 7409602f79f..75b2eabe4fa 100644 --- a/source/_integrations/home_connect.markdown +++ b/source/_integrations/home_connect.markdown @@ -43,6 +43,8 @@ Note that it depends on the appliance and on API permissions which of the featur - OAuth Flow: Authorization Code Grant Flow - Redirect URI: `https://my.home-assistant.io/redirect/oauth` +*Important*: after performing the steps above **log out** of your Home Connect Developer account. If you don't so this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`. + {% details "I have manually disabled My Home Assistant" %} If you don't have [My Home Assistant](/integrations/my) on your installation, From bb91e10a9e38888a338d4e569d31a426094db9e5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 29 Dec 2022 15:27:55 +0100 Subject: [PATCH 07/36] Fix shell command in Tank Utility documentation (#25444) --- source/_integrations/tank_utility.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index 406e8bd990c..f3e79d2cd68 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -31,7 +31,7 @@ The device item value is the last segment of the URL path, e.g., the URL 1. Obtain your personal token: ```bash - curl --user : https://data.tankutility.com/api/getToken` + curl --user : https://data.tankutility.com/api/getToken ``` The JSON response structure should resemble: From 3954ed3f304bc9d21bb9b2e224140f28ba7d9fc6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 29 Dec 2022 15:28:25 +0100 Subject: [PATCH 08/36] Do not show analytics on integrations using an IoT standard (#25347) --- .../_includes/asides/component_navigation.html | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index 2bd4e9ff98c..8994813de03 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -34,13 +34,17 @@ {%- if page.ha_brand -%} The {{ page.title | default: page.name }} brand was introduced in Home Assistant {{ page.ha_release | default: "unknown" }}. {%- else -%} - The {{ page.title | default: page.name }} {{ page.ha_integration_type | default: "integration" }} was introduced in Home Assistant {{ page.ha_release | default: "unknown" }}, - and it's used by + The {{ page.title | default: page.name }} {{ page.ha_integration_type | default: "integration" }} was introduced in Home Assistant {{ page.ha_release | default: "unknown" }} - {% if percentage < 1 %} - {{ active_installations }} active installations. - {% else %} - {{ percentage | remove: ".0" }}% of the active installations. + {%- if page.ha_iot_standard -%} + . + {%- else -%} + , and it's used by + {% if percentage < 1 %} + {{ active_installations }} active installations. + {% else %} + {{ percentage | remove: ".0" }}% of the active installations. + {% endif %} {% endif %} {%- if page.ha_iot_class %} From 18c9c9d18edeb296da415289321ccf104204d5b2 Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Thu, 29 Dec 2022 22:37:55 +0100 Subject: [PATCH 09/36] Update Raspberry Pi URL (#25450) --- source/_integrations/hdmi_cec.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index f7978b02482..615c8d30837 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -40,7 +40,7 @@ ln -s /path/to/your/installation/of/_cec.so /path/to/your/venv/lib/python*/site- ##### Symlinking examples -For the default virtual environment of a [Manual install for Raspberry Pi](/docs/installation/raspberry-pi/) the command would be as follows. +For the default virtual environment of a [Manual install for Raspberry Pi](/installation/raspberrypi) the command would be as follows. ```bash ln -s /usr/local/lib/python*/dist-packages/cec.py /srv/homeassistant/lib/python*/site-packages From add06c8109a6d956b8e57d5a01a3aca5aabca548 Mon Sep 17 00:00:00 2001 From: Tom Schneider Date: Thu, 29 Dec 2022 23:27:04 +0100 Subject: [PATCH 10/36] Add description to hvv departures sensor (#24735) Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof fixes undefined --- source/_integrations/hvv_departures.markdown | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/_integrations/hvv_departures.markdown b/source/_integrations/hvv_departures.markdown index f164d7f25b8..a1d77aca6c3 100644 --- a/source/_integrations/hvv_departures.markdown +++ b/source/_integrations/hvv_departures.markdown @@ -30,6 +30,26 @@ Menu: *Configuration* > *Integrations* > *Select your new integration* > *Press - **offset**: set this if you want to list the departures some minutes in the future, for example, if you live ten minutes away from the station. - **use realtime data**: enable this to include delay and cancellation information. +## Departure sensors + +The integration creates one sensor for the departures at the selected station. + +### States + +The state is a timestamp representing the time for the next departure, not including delays. + +### Attributes + +| Attribute | Description | +| ----------- | ------------------------------------------------------------------------------------------------------------------------ | +| `line` | Line number of the next departure | +| `origin` | The station where the transport started from | +| `direction` | The station where the transport ends | +| `type` | Type of the transportation, for example, `Bus` or `S` | +| `id` | A unique identifier for the line. In most cases, `line` is sufficient to identify the line | +| `delay` | Real-time data about the delay of the transport in seconds. Add this to the departure time to get the real departure time | +| `next` | A list of the upcoming departures. Each element has the above attributes and `departure` containing the timestamp | + ## Elevator sensors If the selected station has elevators, binary sensors will be available. From 8dda874fc7c060db9c48e476f968d599b921bfd3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 30 Dec 2022 13:25:00 +0100 Subject: [PATCH 11/36] Bump textlint from 12.2.4 to 12.3.0 (#25461) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 428 ++++++++++++++++++++++++++++------------------ package.json | 2 +- 2 files changed, 258 insertions(+), 172 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3b97670f895..3fdefce65b9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.2.4", + "textlint": "^12.3.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" @@ -228,44 +228,89 @@ "dev": true }, "node_modules/@textlint/ast-node-types": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", - "integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.3.0.tgz", + "integrity": "sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ==", "dev": true }, "node_modules/@textlint/ast-tester": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.3.tgz", - "integrity": "sha512-+yLj38mgrluEFXD8rmwmMo+2lQbrx3v5aQBkHUZdddAq/1LJu4qqctikUzAeVRJZPWKsdLrN3vaLT2rp4h8KYg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.3.0.tgz", + "integrity": "sha512-f135pLEv/6epjRNlSTpxHX/3lutzB+l1GCHjVlm+PRCWEunKBvcZxyBCf1mp00vKNQdOpLnSPFDHIa/KgsZ/nQ==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2", + "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4" } }, "node_modules/@textlint/ast-traverse": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.3.tgz", - "integrity": "sha512-sv06SITci07P1LQQxH1hSv04xoHz2OC+WlppTuMoOFR20kRBMyOs7Ssvor0NdNmspDXG8qvdCBxh9rFmdNSJyQ==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.3.0.tgz", + "integrity": "sha512-WkDOgs7LJNf9kq7yGIi10FuBkW0wpbgMR6unLegRBwT+xN7JxynFnlLVHUfyJs3S0VPYFHX6Dvybg4As7iM4Tw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2" + "@textlint/ast-node-types": "^12.3.0" + } + }, + "node_modules/@textlint/config-loader": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.0.tgz", + "integrity": "sha512-b4793A9JBSaFcm36a9/ZdwAbKVPBdzZJsZo/sXCfVKJIuKisFnAzlYfhbmCBCmMmFH/s4t8V3zgY3mf6EQXX+Q==", + "dev": true, + "dependencies": { + "@textlint/kernel": "^12.3.0", + "@textlint/module-interop": "^12.3.0", + "@textlint/types": "^12.3.0", + "@textlint/utils": "^12.3.0", + "debug": "^4.3.1", + "rc-config-loader": "^4.0.0", + "try-resolve": "^1.0.1" + } + }, + "node_modules/@textlint/config-loader/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@textlint/config-loader/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@textlint/config-loader/node_modules/rc-config-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", + "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" } }, "node_modules/@textlint/feature-flag": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.3.tgz", - "integrity": "sha512-KrKc8dY3iept6Hv/dSKwaYAkjFdYbaithXAnRpp0O4fkXPdv6HYu7iGtM2kA4nkVLdjrzAnPNKA9tmP3EE0qNg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.3.0.tgz", + "integrity": "sha512-7WgC2d6gk+aeQLPz6M24Ngt4hsZkUL701CjP9R9P2RnLFMVOxwJ7YzpxcGTrlK5pmMNZ06xfbHpBd4rE0d567Q==", "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.3.tgz", - "integrity": "sha512-O3O1B1Xihlk5bXnMqjTgwMegnDTzE3rAQRvcJ2zTZQNhjSLpUDsRRcZW4FteGsQkWT9rOFrFQbHNbJdkiyu4cA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.0.tgz", + "integrity": "sha512-fjCK6EnwagijtzWE0CObXx8pPN2MxwQRvOynSX1A1LWp03tD88LiOwrgbLSR/6By2fs3W/UewXXLkN3X+KcJQQ==", "dev": true, "dependencies": { - "@textlint/module-interop": "^12.2.3", - "@textlint/types": "^12.2.3", + "@textlint/module-interop": "^12.3.0", + "@textlint/types": "^12.3.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -277,33 +322,33 @@ } }, "node_modules/@textlint/kernel": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.3.tgz", - "integrity": "sha512-O0oifeiotA7ZEpWGssGPHCpIDUcsUfkmNTypk6j0l5m+VL+X3Zz0z/F+i02O9eMcizzLFcnC8oMoLxeYNhJCKg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.3.0.tgz", + "integrity": "sha512-ENNaAeIc3DkuIIA/igkEwu9QIUv6YiLpsZu0lh1+11gdIPbyqwZoF+OO35VColZNFpcIYjeODjZukXAUtKZNCA==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2", - "@textlint/ast-tester": "^12.2.3", - "@textlint/ast-traverse": "^12.2.3", - "@textlint/feature-flag": "^12.2.3", - "@textlint/source-code-fixer": "^12.2.3", - "@textlint/types": "^12.2.3", - "@textlint/utils": "^12.2.3", + "@textlint/ast-node-types": "^12.3.0", + "@textlint/ast-tester": "^12.3.0", + "@textlint/ast-traverse": "^12.3.0", + "@textlint/feature-flag": "^12.3.0", + "@textlint/source-code-fixer": "^12.3.0", + "@textlint/types": "^12.3.0", + "@textlint/utils": "^12.3.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" } }, "node_modules/@textlint/linter-formatter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.4.tgz", - "integrity": "sha512-vF/qPrDYLH9jGB/HU8euVLv7BBATYmviBl9fGcx5vO8Lq/D2vHS9MUdk1JddgW/cDqnrI0nNVlLFUphJsXtp6w==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.0.tgz", + "integrity": "sha512-XELEIsZm7d8mIRYF8MA7IqvOy79apWBauj7kxFVSM3zIbnkQURdOV+RI4iN/fW7EbV39DwCNPgzGTTh1BcEvaA==", "dev": true, "dependencies": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.2.3", - "@textlint/types": "^12.2.3", + "@textlint/module-interop": "^12.3.0", + "@textlint/types": "^12.3.0", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", @@ -319,12 +364,12 @@ } }, "node_modules/@textlint/markdown-to-ast": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz", - "integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.3.0.tgz", + "integrity": "sha512-gyLVU5WTJOIYJlGOPixENCzoj8SC4mpDkB+ADVFoqWCK4AOiZOHxDCH69g2AQQWKJYNmw7is4ZnyKA6q+OCPAw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2", + "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4", "mdast-util-gfm-autolink-literal": "^0.1.3", "remark-footnotes": "^3.0.0", @@ -654,61 +699,61 @@ } }, "node_modules/@textlint/module-interop": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.3.tgz", - "integrity": "sha512-tBtjf+hcOV8bTGae48bBj05Z8PmC6AQ+wCLl4PWE1zqUZIo9hxJL5nRpBn8l6HT6HCdtACE0UU85op9QmjmPXw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.3.0.tgz", + "integrity": "sha512-Qc7yamUIagaN8XW9cToIrtxOD2dqZeJBCf/Y/P+16aPYU+z186EQ4JNNWPXGss5XNtHNFA5Ztjh17NXpmowk2w==", "dev": true }, "node_modules/@textlint/source-code-fixer": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.3.tgz", - "integrity": "sha512-uXGpD3hcqGNVL8yUpZci0+DDXUi81/MlMOzK6OWLDYBXdIZvJ0ADXQ/oUkljWIdmzMcME1AXkHvC5EGL0td2Sg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.3.0.tgz", + "integrity": "sha512-ma5HN8BbmeE6UnIiVWRdMigwqGHGG9R+kTBJBro5tsCyaktGPArnbg1EynJeBVz/C7vMll4RXcuOFyvEtaMsOw==", "dev": true, "dependencies": { - "@textlint/types": "^12.2.3", + "@textlint/types": "^12.3.0", "debug": "^4.3.4" } }, "node_modules/@textlint/text-to-ast": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.3.tgz", - "integrity": "sha512-nsBI5TFe38ZzzbCyshZqLkG2DD4G8fJ0mC3imiTAGamGnUV8mDANmdvE7nmUtZTLlU319s/U0oXC0E7btgN+cQ==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.3.0.tgz", + "integrity": "sha512-eRNy+yUvh5ZkgB+2WrHYVu6HwBopLJwn0cw6bEcgYbUyxYNu7gjwaBp6vyg0qjzLQ3ujA4pkW17v6Q+shm6Oqw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2" + "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.3.tgz", - "integrity": "sha512-phmA5e1JQaJt0IFHm0WkNpX66ieYXShoIzg6J3wcrAHS12kQcL0HxBgjdUjOeulOemKst2JqFNqsvhGXdTAUFw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.3.0.tgz", + "integrity": "sha512-luLU4a3n96jcBjOkybcaRmxQWJX1gMlM48B5HWj0cfgtxCAUmeCFI+fHbWcp6THJR6nPNqWnvzyEuMwYAI9LYQ==", "dev": true, "dependencies": { - "@textlint/markdown-to-ast": "^12.2.3" + "@textlint/markdown-to-ast": "^12.3.0" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.3.tgz", - "integrity": "sha512-CMK9h3EwyQFayYBGafQairg2MbVtGkw1roazOjXLSTicYr7xT/rqhN26Ix6C7OvBbugyRO+DhqJjPY8Xyv0BQA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.3.0.tgz", + "integrity": "sha512-Z2ZYsKMIma6hOa0wjCUhl7UNFLb2DJFhNYSJkoaiW+TO55WMz0hzBvwXss4fvc8dKit2afMwmGlLKYcie000BA==", "dev": true, "dependencies": { - "@textlint/text-to-ast": "^12.2.3" + "@textlint/text-to-ast": "^12.3.0" } }, "node_modules/@textlint/types": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.3.tgz", - "integrity": "sha512-7948CPxVsZu99zlIWDyxwT6MI33WpwKwVSD9jk0e5M8VcdxMUnecVq6D40h8LAtfsT5V8NTJqFxKFT6+LpiBvg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.3.0.tgz", + "integrity": "sha512-6IcKqGJyIISaH4JqkUEsG+3FIg0CVSz1iHFfwMA16YgRuKtSDuySPyo3LfpcQ3dqUeonr29yWgfi2f1QM8SCDw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2" + "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/utils": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.3.tgz", - "integrity": "sha512-1dEihBt9A+DcQ/4IZC3c3TFktb/6p61m6WItyqEYU4h9UjUOH4l1sEKqorEOkJ/DIlA9VQcJT/LF5CCFYOKkcw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.3.0.tgz", + "integrity": "sha512-O9WuQqN+hEs1tVWSd3HQYCPQZyKTW/JjKoaMxYsKtvHwu592094iONppyBFwKpmlQCU/woelvbIRQruDRggVVQ==", "dev": true }, "node_modules/@types/concat-stream": { @@ -1851,13 +1896,10 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", + "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -5292,22 +5334,23 @@ "dev": true }, "node_modules/textlint": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.4.tgz", - "integrity": "sha512-IlBJL4bR9RuqYV+YkQQvOznhmfClGGkuOyxiUaQ4qUj2IaJu2/rXei71x3JAIJF4SLEK7SbMoLVqXIerqIbhGA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.0.tgz", + "integrity": "sha512-LWBGbtZtERRcyvYFIxe7r+3wD/OaBlxcr3Nwh7WxS55HE1fIraU9UG68fFj7VZdUg3CrU1KS9kDhSmMCNFVMGw==", "dev": true, "dependencies": { - "@textlint/ast-node-types": "^12.2.2", - "@textlint/ast-traverse": "^12.2.3", - "@textlint/feature-flag": "^12.2.3", - "@textlint/fixer-formatter": "^12.2.3", - "@textlint/kernel": "^12.2.3", - "@textlint/linter-formatter": "^12.2.4", - "@textlint/module-interop": "^12.2.3", - "@textlint/textlint-plugin-markdown": "^12.2.3", - "@textlint/textlint-plugin-text": "^12.2.3", - "@textlint/types": "^12.2.3", - "@textlint/utils": "^12.2.3", + "@textlint/ast-node-types": "^12.3.0", + "@textlint/ast-traverse": "^12.3.0", + "@textlint/config-loader": "^12.3.0", + "@textlint/feature-flag": "^12.3.0", + "@textlint/fixer-formatter": "^12.3.0", + "@textlint/kernel": "^12.3.0", + "@textlint/linter-formatter": "^12.3.0", + "@textlint/module-interop": "^12.3.0", + "@textlint/textlint-plugin-markdown": "^12.3.0", + "@textlint/textlint-plugin-text": "^12.3.0", + "@textlint/types": "^12.3.0", + "@textlint/utils": "^12.3.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", @@ -5326,7 +5369,8 @@ "unique-concat": "^0.2.2" }, "bin": { - "textlint": "bin/textlint.js" + "textlint": "bin/textlint.js", + "textlint-esm": "bin/textlint-esm.js" }, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -6375,44 +6419,88 @@ "dev": true }, "@textlint/ast-node-types": { - "version": "12.2.2", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.2.2.tgz", - "integrity": "sha512-VQAXUSGdmEajHXrMxeM9ZTS8UBJSVB0ghJFHpFfqYKlcDsjIqClSmTprY6521HoCoSLoUIGBxTC3jQyUMJFIWw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-12.3.0.tgz", + "integrity": "sha512-ke5hlKy/xZ/vQt6j+h4k9GradJPDsV3FKsUqWpCpF/X8qWCU2zM4e1SMUAFjoUcLuF9in+eXIQ71Qm/AdjjkZQ==", "dev": true }, "@textlint/ast-tester": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.2.3.tgz", - "integrity": "sha512-+yLj38mgrluEFXD8rmwmMo+2lQbrx3v5aQBkHUZdddAq/1LJu4qqctikUzAeVRJZPWKsdLrN3vaLT2rp4h8KYg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.3.0.tgz", + "integrity": "sha512-f135pLEv/6epjRNlSTpxHX/3lutzB+l1GCHjVlm+PRCWEunKBvcZxyBCf1mp00vKNQdOpLnSPFDHIa/KgsZ/nQ==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2", + "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4" } }, "@textlint/ast-traverse": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.2.3.tgz", - "integrity": "sha512-sv06SITci07P1LQQxH1hSv04xoHz2OC+WlppTuMoOFR20kRBMyOs7Ssvor0NdNmspDXG8qvdCBxh9rFmdNSJyQ==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.3.0.tgz", + "integrity": "sha512-WkDOgs7LJNf9kq7yGIi10FuBkW0wpbgMR6unLegRBwT+xN7JxynFnlLVHUfyJs3S0VPYFHX6Dvybg4As7iM4Tw==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2" + "@textlint/ast-node-types": "^12.3.0" + } + }, + "@textlint/config-loader": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.0.tgz", + "integrity": "sha512-b4793A9JBSaFcm36a9/ZdwAbKVPBdzZJsZo/sXCfVKJIuKisFnAzlYfhbmCBCmMmFH/s4t8V3zgY3mf6EQXX+Q==", + "dev": true, + "requires": { + "@textlint/kernel": "^12.3.0", + "@textlint/module-interop": "^12.3.0", + "@textlint/types": "^12.3.0", + "@textlint/utils": "^12.3.0", + "debug": "^4.3.1", + "rc-config-loader": "^4.0.0", + "try-resolve": "^1.0.1" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "rc-config-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.2.tgz", + "integrity": "sha512-qKTnVWFl9OQYKATPzdfaZIbTxcHziQl92zYSxYC6umhOqyAsoj8H8Gq/+aFjAso68sBdjTz3A7omqeAkkF1MWg==", + "dev": true, + "requires": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + } } }, "@textlint/feature-flag": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.2.3.tgz", - "integrity": "sha512-KrKc8dY3iept6Hv/dSKwaYAkjFdYbaithXAnRpp0O4fkXPdv6HYu7iGtM2kA4nkVLdjrzAnPNKA9tmP3EE0qNg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.3.0.tgz", + "integrity": "sha512-7WgC2d6gk+aeQLPz6M24Ngt4hsZkUL701CjP9R9P2RnLFMVOxwJ7YzpxcGTrlK5pmMNZ06xfbHpBd4rE0d567Q==", "dev": true }, "@textlint/fixer-formatter": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.2.3.tgz", - "integrity": "sha512-O3O1B1Xihlk5bXnMqjTgwMegnDTzE3rAQRvcJ2zTZQNhjSLpUDsRRcZW4FteGsQkWT9rOFrFQbHNbJdkiyu4cA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.0.tgz", + "integrity": "sha512-fjCK6EnwagijtzWE0CObXx8pPN2MxwQRvOynSX1A1LWp03tD88LiOwrgbLSR/6By2fs3W/UewXXLkN3X+KcJQQ==", "dev": true, "requires": { - "@textlint/module-interop": "^12.2.3", - "@textlint/types": "^12.2.3", + "@textlint/module-interop": "^12.3.0", + "@textlint/types": "^12.3.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -6424,33 +6512,33 @@ } }, "@textlint/kernel": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.2.3.tgz", - "integrity": "sha512-O0oifeiotA7ZEpWGssGPHCpIDUcsUfkmNTypk6j0l5m+VL+X3Zz0z/F+i02O9eMcizzLFcnC8oMoLxeYNhJCKg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.3.0.tgz", + "integrity": "sha512-ENNaAeIc3DkuIIA/igkEwu9QIUv6YiLpsZu0lh1+11gdIPbyqwZoF+OO35VColZNFpcIYjeODjZukXAUtKZNCA==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2", - "@textlint/ast-tester": "^12.2.3", - "@textlint/ast-traverse": "^12.2.3", - "@textlint/feature-flag": "^12.2.3", - "@textlint/source-code-fixer": "^12.2.3", - "@textlint/types": "^12.2.3", - "@textlint/utils": "^12.2.3", + "@textlint/ast-node-types": "^12.3.0", + "@textlint/ast-tester": "^12.3.0", + "@textlint/ast-traverse": "^12.3.0", + "@textlint/feature-flag": "^12.3.0", + "@textlint/source-code-fixer": "^12.3.0", + "@textlint/types": "^12.3.0", + "@textlint/utils": "^12.3.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" } }, "@textlint/linter-formatter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.2.4.tgz", - "integrity": "sha512-vF/qPrDYLH9jGB/HU8euVLv7BBATYmviBl9fGcx5vO8Lq/D2vHS9MUdk1JddgW/cDqnrI0nNVlLFUphJsXtp6w==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.0.tgz", + "integrity": "sha512-XELEIsZm7d8mIRYF8MA7IqvOy79apWBauj7kxFVSM3zIbnkQURdOV+RI4iN/fW7EbV39DwCNPgzGTTh1BcEvaA==", "dev": true, "requires": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.2.3", - "@textlint/types": "^12.2.3", + "@textlint/module-interop": "^12.3.0", + "@textlint/types": "^12.3.0", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", @@ -6466,12 +6554,12 @@ } }, "@textlint/markdown-to-ast": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.2.3.tgz", - "integrity": "sha512-omZqcZV1Q8t9K0IKvlHNIdTV3SKNaS2P5qkbTjzDj7PuTuvG20JFqL9Naiwwi9ty3NzTzq+W8lLG3H2HgX0WvA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.3.0.tgz", + "integrity": "sha512-gyLVU5WTJOIYJlGOPixENCzoj8SC4mpDkB+ADVFoqWCK4AOiZOHxDCH69g2AQQWKJYNmw7is4ZnyKA6q+OCPAw==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2", + "@textlint/ast-node-types": "^12.3.0", "debug": "^4.3.4", "mdast-util-gfm-autolink-literal": "^0.1.3", "remark-footnotes": "^3.0.0", @@ -6689,61 +6777,61 @@ } }, "@textlint/module-interop": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.2.3.tgz", - "integrity": "sha512-tBtjf+hcOV8bTGae48bBj05Z8PmC6AQ+wCLl4PWE1zqUZIo9hxJL5nRpBn8l6HT6HCdtACE0UU85op9QmjmPXw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.3.0.tgz", + "integrity": "sha512-Qc7yamUIagaN8XW9cToIrtxOD2dqZeJBCf/Y/P+16aPYU+z186EQ4JNNWPXGss5XNtHNFA5Ztjh17NXpmowk2w==", "dev": true }, "@textlint/source-code-fixer": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.2.3.tgz", - "integrity": "sha512-uXGpD3hcqGNVL8yUpZci0+DDXUi81/MlMOzK6OWLDYBXdIZvJ0ADXQ/oUkljWIdmzMcME1AXkHvC5EGL0td2Sg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.3.0.tgz", + "integrity": "sha512-ma5HN8BbmeE6UnIiVWRdMigwqGHGG9R+kTBJBro5tsCyaktGPArnbg1EynJeBVz/C7vMll4RXcuOFyvEtaMsOw==", "dev": true, "requires": { - "@textlint/types": "^12.2.3", + "@textlint/types": "^12.3.0", "debug": "^4.3.4" } }, "@textlint/text-to-ast": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.2.3.tgz", - "integrity": "sha512-nsBI5TFe38ZzzbCyshZqLkG2DD4G8fJ0mC3imiTAGamGnUV8mDANmdvE7nmUtZTLlU319s/U0oXC0E7btgN+cQ==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.3.0.tgz", + "integrity": "sha512-eRNy+yUvh5ZkgB+2WrHYVu6HwBopLJwn0cw6bEcgYbUyxYNu7gjwaBp6vyg0qjzLQ3ujA4pkW17v6Q+shm6Oqw==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2" + "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/textlint-plugin-markdown": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.2.3.tgz", - "integrity": "sha512-phmA5e1JQaJt0IFHm0WkNpX66ieYXShoIzg6J3wcrAHS12kQcL0HxBgjdUjOeulOemKst2JqFNqsvhGXdTAUFw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.3.0.tgz", + "integrity": "sha512-luLU4a3n96jcBjOkybcaRmxQWJX1gMlM48B5HWj0cfgtxCAUmeCFI+fHbWcp6THJR6nPNqWnvzyEuMwYAI9LYQ==", "dev": true, "requires": { - "@textlint/markdown-to-ast": "^12.2.3" + "@textlint/markdown-to-ast": "^12.3.0" } }, "@textlint/textlint-plugin-text": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.2.3.tgz", - "integrity": "sha512-CMK9h3EwyQFayYBGafQairg2MbVtGkw1roazOjXLSTicYr7xT/rqhN26Ix6C7OvBbugyRO+DhqJjPY8Xyv0BQA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.3.0.tgz", + "integrity": "sha512-Z2ZYsKMIma6hOa0wjCUhl7UNFLb2DJFhNYSJkoaiW+TO55WMz0hzBvwXss4fvc8dKit2afMwmGlLKYcie000BA==", "dev": true, "requires": { - "@textlint/text-to-ast": "^12.2.3" + "@textlint/text-to-ast": "^12.3.0" } }, "@textlint/types": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.2.3.tgz", - "integrity": "sha512-7948CPxVsZu99zlIWDyxwT6MI33WpwKwVSD9jk0e5M8VcdxMUnecVq6D40h8LAtfsT5V8NTJqFxKFT6+LpiBvg==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.3.0.tgz", + "integrity": "sha512-6IcKqGJyIISaH4JqkUEsG+3FIg0CVSz1iHFfwMA16YgRuKtSDuySPyo3LfpcQ3dqUeonr29yWgfi2f1QM8SCDw==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2" + "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/utils": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.2.3.tgz", - "integrity": "sha512-1dEihBt9A+DcQ/4IZC3c3TFktb/6p61m6WItyqEYU4h9UjUOH4l1sEKqorEOkJ/DIlA9VQcJT/LF5CCFYOKkcw==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.3.0.tgz", + "integrity": "sha512-O9WuQqN+hEs1tVWSd3HQYCPQZyKTW/JjKoaMxYsKtvHwu592094iONppyBFwKpmlQCU/woelvbIRQruDRggVVQ==", "dev": true }, "@types/concat-stream": { @@ -7622,13 +7710,10 @@ "dev": true }, "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", + "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", + "dev": true }, "levn": { "version": "0.4.1", @@ -9989,22 +10074,23 @@ "dev": true }, "textlint": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.2.4.tgz", - "integrity": "sha512-IlBJL4bR9RuqYV+YkQQvOznhmfClGGkuOyxiUaQ4qUj2IaJu2/rXei71x3JAIJF4SLEK7SbMoLVqXIerqIbhGA==", + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.0.tgz", + "integrity": "sha512-LWBGbtZtERRcyvYFIxe7r+3wD/OaBlxcr3Nwh7WxS55HE1fIraU9UG68fFj7VZdUg3CrU1KS9kDhSmMCNFVMGw==", "dev": true, "requires": { - "@textlint/ast-node-types": "^12.2.2", - "@textlint/ast-traverse": "^12.2.3", - "@textlint/feature-flag": "^12.2.3", - "@textlint/fixer-formatter": "^12.2.3", - "@textlint/kernel": "^12.2.3", - "@textlint/linter-formatter": "^12.2.4", - "@textlint/module-interop": "^12.2.3", - "@textlint/textlint-plugin-markdown": "^12.2.3", - "@textlint/textlint-plugin-text": "^12.2.3", - "@textlint/types": "^12.2.3", - "@textlint/utils": "^12.2.3", + "@textlint/ast-node-types": "^12.3.0", + "@textlint/ast-traverse": "^12.3.0", + "@textlint/config-loader": "^12.3.0", + "@textlint/feature-flag": "^12.3.0", + "@textlint/fixer-formatter": "^12.3.0", + "@textlint/kernel": "^12.3.0", + "@textlint/linter-formatter": "^12.3.0", + "@textlint/module-interop": "^12.3.0", + "@textlint/textlint-plugin-markdown": "^12.3.0", + "@textlint/textlint-plugin-text": "^12.3.0", + "@textlint/types": "^12.3.0", + "@textlint/utils": "^12.3.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", diff --git a/package.json b/package.json index 59f8552a581..dae69f0ac57 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.2.4", + "textlint": "^12.3.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" From d6cf82182a5664439c195649ed87387f9d9b2824 Mon Sep 17 00:00:00 2001 From: Caspar <36932852+Caspar78@users.noreply.github.com> Date: Fri, 30 Dec 2022 13:25:48 +0100 Subject: [PATCH 12/36] Correct working devices (#25462) --- source/_integrations/ibeacon.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/ibeacon.markdown b/source/_integrations/ibeacon.markdown index 2a6c0f0f196..adf0c5d0196 100644 --- a/source/_integrations/ibeacon.markdown +++ b/source/_integrations/ibeacon.markdown @@ -69,7 +69,7 @@ To get the Estimated distance sensor to work, in most cases, it has to be calibr - [Blue Charm Beacons BC08-MultiBeacon](https://bluecharmbeacons.com/product/blue-charm-beacons-bluetooth-ble-ibeacon-bc08-multibeacon-w-motion-sensor-and-button-trigger-ble-5-0/) - Blue Charm Beacons BC037G-GeoPattern-iBeacon (discontinued) - Blue Charm Beacons BC037S-SmoothPattern-iBeacon (discontinued) -- [Chipolo ONE](https://chipolo.net/products/chipolo-one) +- [Chipolo ONE Spot](https://chipolo.net/de/products/chipolo-one-spot) - [Blue SLIM ID](https://elainnovation.com/en/product/blue-slim-id-en/) - [Feasycom FSC-BP103B](https://www.feasycom.com/bluetooth-ibeacon-da14531) - [Feasycom FSC-BP104D](https://www.feasycom.com/dialog-da14531-bluetooth-low-energy-beacon) From 43e75c1d970e883cd413c7e8256ab0fa8d38dfaa Mon Sep 17 00:00:00 2001 From: Aalian Khan <39784853+AalianKhan@users.noreply.github.com> Date: Fri, 30 Dec 2022 14:36:53 -0500 Subject: [PATCH 13/36] Added documentation to add media via dashboard (#25459) Co-authored-by: Franck Nijhof --- source/more-info/local-media/add-media.markdown | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/source/more-info/local-media/add-media.markdown b/source/more-info/local-media/add-media.markdown index 85e5d793777..239e2d7902c 100644 --- a/source/more-info/local-media/add-media.markdown +++ b/source/more-info/local-media/add-media.markdown @@ -9,14 +9,17 @@ need to add media to your media folder. If you haven't set up a local media folder yet, check out this page on [setting up the local media source][setup-media] + +You can access your (automatically) created media folder using the dashboard. +Navigate to the {% my media_browser title="Media > Local Media" %}, and in the +top right corner, click manage. Here you can add and delete your media. + ## Home Assistant OS & Supervised -If you are running Home Assistant OS or Supervised, you can access your -(automatically) created media folder using the Samba add-on. - -If you haven't installed the Samba add-on yet, you can do so by browsing to -the {% my supervisor title="Settings > Add-ons" %} panel. Next, click on -the "Add-on store" tab and search for "Samba" and click on it. +If you are running Home Assistant OS or Supervised, you can also use the +Samba add-on. If you haven't installed the Samba add-on yet, you can do +so by browsing to the {% my supervisor title="Settings > Add-ons" %} panel. +Next, click on the "Add-on store" tab and search for "Samba" and click on it. On the Samba add-on page, you can find a tab called "Documentation" with the add-on installation and usage instructions. After that, you can copy/move @@ -39,4 +42,4 @@ media to that folder you have set up. Your media will show up in the Home Assistant frontend automatically. -[setup-media]: /more-info/local-media/setup-media \ No newline at end of file +[setup-media]: /more-info/local-media/setup-media From d90e394a67ac1de50ed11eff2a3aedd5c0004bbf Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 30 Dec 2022 22:51:38 +0100 Subject: [PATCH 14/36] Remove untrue warning from CPU Speed (#25471) --- source/_integrations/cpuspeed.markdown | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index d36e52f0e37..d0afb00ffa3 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -18,10 +18,9 @@ ha_integration_type: device The CPU Speed integration allows you to monitor the current CPU speed. -
- - You can't use this sensor in a container (only Home Assistant Core is supported) as it requires access to the physical CPU. Also, not all [ARM CPUs](https://github.com/workhorsy/py-cpuinfo/#cpu-support) are supported. - -
- {% include integrations/config_flow.md %} + +## Known issues and limitations + +Not all CPUs are supported. For example, some [ARM CPUs](https://github.com/workhorsy/py-cpuinfo/#cpu-support) +are known not to work with this integration. \ No newline at end of file From aee819b682a5b9e0ecd264fc0b13adcbedd1b924 Mon Sep 17 00:00:00 2001 From: MrHappy-Pants <67714448+MrHappy-Pants@users.noreply.github.com> Date: Sat, 31 Dec 2022 04:58:03 -0800 Subject: [PATCH 15/36] Added the word 'account' for clarity (#25477) --- source/_integrations/spotify.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index 3266a0a58f0..621be060e8c 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -22,7 +22,7 @@ library from Home Assistant. ## Prerequisites -- An active Spotify account. A premium is not required, but recommended. +- An active Spotify account. A premium account is not required, but recommended. Premium accounts can be controlled (pause, play, next, etc.), while free accounts can only be used for browsing and current playback status. - Spotify compatible playback [source](#selecting-output-source) device From d4e43a995de4eb7b85fe8215b6f41c3587bdaeea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Mon, 2 Jan 2023 10:40:18 +0100 Subject: [PATCH 16/36] Show CLA error (#25496) --- source/developers/cla_sign.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/developers/cla_sign.html b/source/developers/cla_sign.html index 6c7571430b9..4a43f097155 100644 --- a/source/developers/cla_sign.html +++ b/source/developers/cla_sign.html @@ -29,12 +29,20 @@ description: "The Home Assistant contributor license agreement (CLA) signature p #complete { display: none; } + + #error { + background: red; + color: white; + padding: 4px; + display: none; + }

Please wait while we complete authentication and load data from GitHub...

+
@@ -454,6 +462,7 @@ description: "The Home Assistant contributor license agreement (CLA) signature p } }); $('#submit').click(function(e){ + const errorEl = document.querySelector("#error") if ($('form')[0].checkValidity()) { e.preventDefault(); var payload = { @@ -489,6 +498,10 @@ description: "The Home Assistant contributor license agreement (CLA) signature p } localStorage.removeItem("pr"); localStorage.removeItem("gh_token"); + errorEl.style.display = "none" + }).fail(function(data){ + errorEl.textContent = data.responseJSON.message; + errorEl.style.display = "block" }); } }); From 1e794c521b048bc43041e0600432e9d5432f58d9 Mon Sep 17 00:00:00 2001 From: Eleengineer <61326147+Eleengineer@users.noreply.github.com> Date: Mon, 2 Jan 2023 03:59:34 -0600 Subject: [PATCH 17/36] Update denonavr.markdown (#25486) --- source/_integrations/denonavr.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index fc51848e1ee..8f794e6e4e1 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -83,6 +83,7 @@ Known supported devices: - Marantz SR8015 - Marantz NR1504 - Marantz NR1506 +- Marantz NR1510 - Marantz NR1602 - Marantz NR1604 - Marantz NR1606 From fee79d6e1a8759c3fe8e82752abf9b3585563af4 Mon Sep 17 00:00:00 2001 From: Samuel Le Berrigaud Date: Mon, 2 Jan 2023 11:32:06 +0100 Subject: [PATCH 18/36] Add links to the support documentation. (#25483) --- source/_integrations/google_domains.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/google_domains.markdown b/source/_integrations/google_domains.markdown index 54e75d2b347..8225ca63c47 100644 --- a/source/_integrations/google_domains.markdown +++ b/source/_integrations/google_domains.markdown @@ -9,7 +9,7 @@ ha_iot_class: Cloud Polling ha_integration_type: integration --- -With the Google Domains integration you can keep your Google Domains record up to date. +With the Google Domains integration you can keep your Google Domains **dynamic** DNS record up to date. To setup a dynamic domain name using Goole Domains, refer to the [_Use Dynamic DNS_ section in the Google support documentation](https://support.google.com/domains/answer/6147083). ## Configuration @@ -25,15 +25,15 @@ google_domains: {% configuration %} domain: - description: Your FQDN. + description: Your fully qualified domain name (FQDN) that you have chosen for your Home Assistant server. required: true type: string username: - description: The generated username for this DDNS record. + description: The generated username for this Dynamic DNS record. See your [Google Domains record](https://support.google.com/domains/answer/6147083) for details. required: true type: string password: - description: The generated password for this DDNS record. + description: The generated password for this Dynamic DNS record. See your [Google Domains record](https://support.google.com/domains/answer/6147083) for details. required: true type: string timeout: From 91d86fe5272239ac2643070671309e8210c9024e Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Mon, 2 Jan 2023 11:32:47 +0100 Subject: [PATCH 19/36] Update freebox url (#25482) --- source/_integrations/freebox.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index 726b948f89e..f7c6530cba1 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -22,7 +22,7 @@ ha_zeroconf: true ha_integration_type: integration --- -The `freebox` integration allows you to observe and control [Freebox router](https://www.free.fr/). +The `freebox` integration allows you to observe and control [Freebox router](https://www.free.fr/freebox/). There is currently support for the following device types within Home Assistant: @@ -90,7 +90,7 @@ Only the routers with Freebox OS are supported: ## Presence Detection -This platform offers presence detection by keeping track of the devices connected to a [Freebox](https://www.free.fr/) router. +This platform offers presence detection by keeping track of the devices connected to a [Freebox](https://www.free.fr/freebox/) router. ### Notes From c2727983ad5a1d1c59c16e4566efa7b696c33124 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jan 2023 11:36:40 +0100 Subject: [PATCH 20/36] Bump textlint from 12.3.0 to 12.3.1 (#25495) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 70 +++++++++++++++++++++++------------------------ package.json | 2 +- 2 files changed, 36 insertions(+), 36 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3fdefce65b9..77e3017b8ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.3.0", + "textlint": "^12.3.1", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" @@ -253,17 +253,17 @@ } }, "node_modules/@textlint/config-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.0.tgz", - "integrity": "sha512-b4793A9JBSaFcm36a9/ZdwAbKVPBdzZJsZo/sXCfVKJIuKisFnAzlYfhbmCBCmMmFH/s4t8V3zgY3mf6EQXX+Q==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.1.tgz", + "integrity": "sha512-iKCrif/McG0dCokvyoxvXcH6G9FaiSDF3DtNYo4GlxavqVtKxKxuFvkeQahWL0QWM9Z+yXlGUcBJdYj6Zxevkw==", "dev": true, "dependencies": { "@textlint/kernel": "^12.3.0", "@textlint/module-interop": "^12.3.0", "@textlint/types": "^12.3.0", "@textlint/utils": "^12.3.0", - "debug": "^4.3.1", - "rc-config-loader": "^4.0.0", + "debug": "^4.3.4", + "rc-config-loader": "^4.1.1", "try-resolve": "^1.0.1" } }, @@ -304,9 +304,9 @@ "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.0.tgz", - "integrity": "sha512-fjCK6EnwagijtzWE0CObXx8pPN2MxwQRvOynSX1A1LWp03tD88LiOwrgbLSR/6By2fs3W/UewXXLkN3X+KcJQQ==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.1.tgz", + "integrity": "sha512-+xYI5oOlSoKXGpV7AGuWOleUfgzLNGaCN7PuTujxdZ5czAm2LxYplJ58+0oAOYE/N3QfLN2dO+itAsEZho6vhQ==", "dev": true, "dependencies": { "@textlint/module-interop": "^12.3.0", @@ -340,9 +340,9 @@ } }, "node_modules/@textlint/linter-formatter": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.0.tgz", - "integrity": "sha512-XELEIsZm7d8mIRYF8MA7IqvOy79apWBauj7kxFVSM3zIbnkQURdOV+RI4iN/fW7EbV39DwCNPgzGTTh1BcEvaA==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.1.tgz", + "integrity": "sha512-n6elvyIBux/lefhmQBZUjgN2EZQ347b6v1waUPAGKmljsndoVCyY+m6RbNhAQtVsNTA1sdO7cJDIxvnX4g1kaA==", "dev": true, "dependencies": { "@azu/format-text": "^1.0.1", @@ -5334,18 +5334,18 @@ "dev": true }, "node_modules/textlint": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.0.tgz", - "integrity": "sha512-LWBGbtZtERRcyvYFIxe7r+3wD/OaBlxcr3Nwh7WxS55HE1fIraU9UG68fFj7VZdUg3CrU1KS9kDhSmMCNFVMGw==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.1.tgz", + "integrity": "sha512-YrQmJBLhThUimP4eVWQAZfJBBXMdYvuuvNa4q0qmB7ibcYtTnwbysRAEI1FYx8qG/AoLtjqBcF6WO8oSGEnODg==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", "@textlint/ast-traverse": "^12.3.0", - "@textlint/config-loader": "^12.3.0", + "@textlint/config-loader": "^12.3.1", "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.3.0", + "@textlint/fixer-formatter": "^12.3.1", "@textlint/kernel": "^12.3.0", - "@textlint/linter-formatter": "^12.3.0", + "@textlint/linter-formatter": "^12.3.1", "@textlint/module-interop": "^12.3.0", "@textlint/textlint-plugin-markdown": "^12.3.0", "@textlint/textlint-plugin-text": "^12.3.0", @@ -6444,17 +6444,17 @@ } }, "@textlint/config-loader": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.0.tgz", - "integrity": "sha512-b4793A9JBSaFcm36a9/ZdwAbKVPBdzZJsZo/sXCfVKJIuKisFnAzlYfhbmCBCmMmFH/s4t8V3zgY3mf6EQXX+Q==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.1.tgz", + "integrity": "sha512-iKCrif/McG0dCokvyoxvXcH6G9FaiSDF3DtNYo4GlxavqVtKxKxuFvkeQahWL0QWM9Z+yXlGUcBJdYj6Zxevkw==", "dev": true, "requires": { "@textlint/kernel": "^12.3.0", "@textlint/module-interop": "^12.3.0", "@textlint/types": "^12.3.0", "@textlint/utils": "^12.3.0", - "debug": "^4.3.1", - "rc-config-loader": "^4.0.0", + "debug": "^4.3.4", + "rc-config-loader": "^4.1.1", "try-resolve": "^1.0.1" }, "dependencies": { @@ -6494,9 +6494,9 @@ "dev": true }, "@textlint/fixer-formatter": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.0.tgz", - "integrity": "sha512-fjCK6EnwagijtzWE0CObXx8pPN2MxwQRvOynSX1A1LWp03tD88LiOwrgbLSR/6By2fs3W/UewXXLkN3X+KcJQQ==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.1.tgz", + "integrity": "sha512-+xYI5oOlSoKXGpV7AGuWOleUfgzLNGaCN7PuTujxdZ5czAm2LxYplJ58+0oAOYE/N3QfLN2dO+itAsEZho6vhQ==", "dev": true, "requires": { "@textlint/module-interop": "^12.3.0", @@ -6530,9 +6530,9 @@ } }, "@textlint/linter-formatter": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.0.tgz", - "integrity": "sha512-XELEIsZm7d8mIRYF8MA7IqvOy79apWBauj7kxFVSM3zIbnkQURdOV+RI4iN/fW7EbV39DwCNPgzGTTh1BcEvaA==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.1.tgz", + "integrity": "sha512-n6elvyIBux/lefhmQBZUjgN2EZQ347b6v1waUPAGKmljsndoVCyY+m6RbNhAQtVsNTA1sdO7cJDIxvnX4g1kaA==", "dev": true, "requires": { "@azu/format-text": "^1.0.1", @@ -10074,18 +10074,18 @@ "dev": true }, "textlint": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.0.tgz", - "integrity": "sha512-LWBGbtZtERRcyvYFIxe7r+3wD/OaBlxcr3Nwh7WxS55HE1fIraU9UG68fFj7VZdUg3CrU1KS9kDhSmMCNFVMGw==", + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.1.tgz", + "integrity": "sha512-YrQmJBLhThUimP4eVWQAZfJBBXMdYvuuvNa4q0qmB7ibcYtTnwbysRAEI1FYx8qG/AoLtjqBcF6WO8oSGEnODg==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", "@textlint/ast-traverse": "^12.3.0", - "@textlint/config-loader": "^12.3.0", + "@textlint/config-loader": "^12.3.1", "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.3.0", + "@textlint/fixer-formatter": "^12.3.1", "@textlint/kernel": "^12.3.0", - "@textlint/linter-formatter": "^12.3.0", + "@textlint/linter-formatter": "^12.3.1", "@textlint/module-interop": "^12.3.0", "@textlint/textlint-plugin-markdown": "^12.3.0", "@textlint/textlint-plugin-text": "^12.3.0", diff --git a/package.json b/package.json index dae69f0ac57..0cacaaf797f 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.3.0", + "textlint": "^12.3.1", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" From d21acb44ea530cade7d9fb1ec59b8e8790d8d2e8 Mon Sep 17 00:00:00 2001 From: nhendin Date: Mon, 2 Jan 2023 05:24:29 -0800 Subject: [PATCH 21/36] Update ambient_station.markdown to include notes about built in Ecowitt integration. (#25476) Co-authored-by: Franck Nijhof --- source/_integrations/ambient_station.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index 3bb52f055e2..70428198971 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -55,4 +55,4 @@ Cloud. Users desiring a local option are encouraged to explore the [Ecowitt](https://www.ecowitt.com) family of devices, which are able to read RF signals directly from the PWS and transmit them to a variety of other applications, including [`ecowitt2mqtt`](https://github.com/bachya/ecowitt2mqtt) (which supports -[MQTT Discovery](/docs/mqtt/discovery)). +[MQTT Discovery](/docs/mqtt/discovery)), or the built-in [Ecowitt](/integrations/ecowitt/) integration. From f83bf34253285fa0a028b3ae11666d8f0dc1dc65 Mon Sep 17 00:00:00 2001 From: starkillerOG Date: Mon, 2 Jan 2023 18:11:38 +0100 Subject: [PATCH 22/36] Add TDBU information (#25508) --- source/_integrations/motion_blinds.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index bb52c8c9b06..63b430d236f 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -87,14 +87,14 @@ Controlling the two bars can be done through three different entities that will ### Top entity - 'Up/Open' will move the Top bar to the top of the window (absolute position 100). -- 'Down/Close' will move the Top bar to the position of the Bottom bar, therefore, making the part of the window that is covered as small as possible, but the two bars will be at the position of the Bottom bar (not at the top of the window). +- 'Down/Close' will move the Top bar to the position of the Bottom bar, therefore, making the part of the window that is covered as small as possible, but the two bars will be at the position of the Bottom bar (not at the top of the window). When the bars are moved completly together, the Top bar will not accept another "Down" command. First the Top bar needs to be moved up, even if the Bottom bar already moved further down. - 'Position' is the relative position in which the Top bar can move, so from the top of the window (100) to the position of the Bottom bar (0), note that the position will therefore change if the Bottom bar is moved, since the space in which the Top bar is allowed to move changes. - 'Absolute position' is the position of the Top bar with respect to the window, so 0 = bottom of the window and 100 = top of the window. Note that not all absolute positions are reachable at all moments due to the Bottom bar. - 'Width' is the percentage of the window covered by fabric (the space between the Top and Bottom bars). ### Bottom entity -- 'Up/Open' will move the Bottom bar to the position of the Top bar. +- 'Up/Open' will move the Bottom bar to the position of the Top bar. When the bars are moved completly together, the Bottom bar will not accept another "Up" command. First the Bottom bar needs to be moved down, even if the Top bar already moved further up. - 'Down/Close' will move the Top bar to the bottom of the window (absolute position 0). - 'Position' is the relative position in which the Bottom bar can move, so from the position of the Top bar (100) to the bottom of the window (0), note that the position will therefore change if the Top bar is moved, since the space in which the Bottom bar is allowed to move changes. - 'Absolute position' is the position of the Bottom bar with respect to the window, so 0 = bottom of the window and 100 = top of the window. Note that not all absolute positions are reachable at all moments due to the Top bar. From 244c67f6c81cdcb5e3b5368ed885c80078bd8065 Mon Sep 17 00:00:00 2001 From: Nathan Bijnens Date: Mon, 2 Jan 2023 18:15:18 +0100 Subject: [PATCH 23/36] Statistics: add notice on max_age - closes #25506 (#25507) Co-authored-by: Franck Nijhof fixes undefined --- source/_integrations/statistics.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index 89cba600eff..346b8b1c314 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -155,3 +155,7 @@ unique_id: required: false type: string {% endconfiguration %} + +### An important note on `max_age` and `sampling_size` + +The `max_age` option is only valid within the measured samples specified by `sampling_size` (default 20). Specify a wide-enough `sampling_size` if using an extended max-age (e.g., when looking for `max_age` 1 hour, a sensor that produces one measurement a minute should have at least a `sampling_size` of 60. From 85026878c104a34a491cabb5f1ba003e5075f0d2 Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:17:17 +0100 Subject: [PATCH 24/36] Update Leviton Decora URLs (#25511) --- source/_integrations/decora_wifi.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/decora_wifi.markdown b/source/_integrations/decora_wifi.markdown index 97715050fc8..1b1fd29a021 100644 --- a/source/_integrations/decora_wifi.markdown +++ b/source/_integrations/decora_wifi.markdown @@ -11,13 +11,13 @@ ha_platforms: ha_integration_type: integration --- -Support for [Leviton Decora Wi-Fi](https://www.leviton.com/en/products/lighting-controls/decora-smart-with-wifi) dimmers/switches via the MyLeviton API. +Support for [Leviton Decora Wi-Fi](https://www.leviton.com/products/residential/automation-smart-home/decora-smart-all/decora-smart-with-wifi-technology) dimmers/switches via the MyLeviton API. Supported devices (tested): -- [DW6HD1-BZ](https://www.leviton.com/en/products/dw6hd-1bz) (Decora Smart Wi-Fi 600W Dimmer) -- [DW15S-1BZ](https://www.leviton.com/en/products/dw15s-1bz) (Decora Smart Wi-Fi 15A Switch) -- [DW15P-1BW](https://www.leviton.com/en/products/dw15p-1bw) (Decora Smart Wi-Fi Plug-in Outlet) +- [DW6HD1-BZ](https://www.leviton.com/products/dw6hd-1bz) (Decora Smart Wi-Fi 600W Dimmer) +- [DW15S-1BZ](https://www.leviton.com/products/dw15s-1bz) (Decora Smart Wi-Fi 15A Switch) +- [DW15P-1BW](https://www.leviton.com/products/dw15p-1bw) (Decora Smart Wi-Fi Plug-in Outlet) To enable these lights, add the following lines to your `configuration.yaml` file: From ceaffc5fd129193d383c609259f6d9dd4a6fabbb Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 3 Jan 2023 03:12:29 +0000 Subject: [PATCH 25/36] 2022.12.9 --- _config.yml | 4 ++-- source/_posts/2022-12-07-release-202212.markdown | 12 ++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 375278bdccb..82918455d92 100644 --- a/_config.yml +++ b/_config.yml @@ -110,8 +110,8 @@ social: # Home Assistant release details current_major_version: 2022 current_minor_version: 12 -current_patch_version: 8 -date_released: 2022-12-21 +current_patch_version: 9 +date_released: 2023-01-02 # 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/2022-12-07-release-202212.markdown b/source/_posts/2022-12-07-release-202212.markdown index 56993520254..e0811c200ff 100644 --- a/source/_posts/2022-12-07-release-202212.markdown +++ b/source/_posts/2022-12-07-release-202212.markdown @@ -68,6 +68,7 @@ Happy holidays and for the last time in 2022: Enjoy the release! - [Release 2022.12.6 - December 14](#release-2022126---december-14) - [Release 2022.12.7 - December 17](#release-2022127---december-17) - [Release 2022.12.8 - December 21](#release-2022128---december-21) +- [Release 2022.12.9 - January, 2](#release-2022129---january-2) - [Need help? Join the community!](#need-help-join-the-community) - [Breaking Changes](#breaking-changes) - [Farewell to the following](#farewell-to-the-following) @@ -680,6 +681,17 @@ The following integrations are now available via the Home Assistant UI: [tibber docs]: /integrations/tibber/ [zha docs]: /integrations/zha/ +## Release 2022.12.9 - January, 2 + +- Handle not available add-on in hassio add-on manager ([#84943] - [@MartinHjelmare]) +- Fix failing HomeKit Controller diagnostics tests ([#84936] - [@bdraco]) + +[#84936]: https://github.com/home-assistant/core/pull/84936 +[#84943]: https://github.com/home-assistant/core/pull/84943 +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@bdraco]: https://github.com/bdraco + + ## Need help? Join the community! Home Assistant has a great community of users who are all more than willing From e553462cc24919d4a404cddfe8b5575683c97f26 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 3 Jan 2023 11:13:58 +0100 Subject: [PATCH 26/36] Bump textlint from 12.3.1 to 12.4.0 (#25519) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 30 +++++++++++++++--------------- package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77e3017b8ba..fd670b9fdd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.3.1", + "textlint": "^12.4.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" @@ -304,9 +304,9 @@ "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.1.tgz", - "integrity": "sha512-+xYI5oOlSoKXGpV7AGuWOleUfgzLNGaCN7PuTujxdZ5czAm2LxYplJ58+0oAOYE/N3QfLN2dO+itAsEZho6vhQ==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.4.0.tgz", + "integrity": "sha512-pCo/EuW8CUdF+AMPI/AhfCuDusQ19BORlKznLfCQoPBvTweSo3M2yDTDeHhi2PLNnKy812KpcJBBpZryALe2nA==", "dev": true, "dependencies": { "@textlint/module-interop": "^12.3.0", @@ -5334,16 +5334,16 @@ "dev": true }, "node_modules/textlint": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.1.tgz", - "integrity": "sha512-YrQmJBLhThUimP4eVWQAZfJBBXMdYvuuvNa4q0qmB7ibcYtTnwbysRAEI1FYx8qG/AoLtjqBcF6WO8oSGEnODg==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.4.0.tgz", + "integrity": "sha512-n8WAsOf+JtDXTj12A8DF+kuaV+YVawaf8DUzdEc00AFK/qMUsvUZ79X60SBO1sEYwkjExErQv1JRIFHwOp/XEw==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", "@textlint/ast-traverse": "^12.3.0", "@textlint/config-loader": "^12.3.1", "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.3.1", + "@textlint/fixer-formatter": "^12.4.0", "@textlint/kernel": "^12.3.0", "@textlint/linter-formatter": "^12.3.1", "@textlint/module-interop": "^12.3.0", @@ -6494,9 +6494,9 @@ "dev": true }, "@textlint/fixer-formatter": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.3.1.tgz", - "integrity": "sha512-+xYI5oOlSoKXGpV7AGuWOleUfgzLNGaCN7PuTujxdZ5czAm2LxYplJ58+0oAOYE/N3QfLN2dO+itAsEZho6vhQ==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.4.0.tgz", + "integrity": "sha512-pCo/EuW8CUdF+AMPI/AhfCuDusQ19BORlKznLfCQoPBvTweSo3M2yDTDeHhi2PLNnKy812KpcJBBpZryALe2nA==", "dev": true, "requires": { "@textlint/module-interop": "^12.3.0", @@ -10074,16 +10074,16 @@ "dev": true }, "textlint": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.3.1.tgz", - "integrity": "sha512-YrQmJBLhThUimP4eVWQAZfJBBXMdYvuuvNa4q0qmB7ibcYtTnwbysRAEI1FYx8qG/AoLtjqBcF6WO8oSGEnODg==", + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.4.0.tgz", + "integrity": "sha512-n8WAsOf+JtDXTj12A8DF+kuaV+YVawaf8DUzdEc00AFK/qMUsvUZ79X60SBO1sEYwkjExErQv1JRIFHwOp/XEw==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", "@textlint/ast-traverse": "^12.3.0", "@textlint/config-loader": "^12.3.1", "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.3.1", + "@textlint/fixer-formatter": "^12.4.0", "@textlint/kernel": "^12.3.0", "@textlint/linter-formatter": "^12.3.1", "@textlint/module-interop": "^12.3.0", diff --git a/package.json b/package.json index 0cacaaf797f..28ea2ed73be 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.3.1", + "textlint": "^12.4.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" From b97dde32df8b2392fb4e72668a9db724641f9305 Mon Sep 17 00:00:00 2001 From: Thanassis Adamis Date: Tue, 3 Jan 2023 16:10:03 +0200 Subject: [PATCH 27/36] improve the comment of the 'for' usage in the state conditions (#25524) --- source/_docs/scripts/conditions.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 28dd62756f1..b45a3ae4087 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -241,7 +241,7 @@ condition: condition: state entity_id: device_tracker.paulus state: "not_home" - # optional: trigger only if state was this for last X time. + # optional: Evaluates to true only if state was this for last X time. for: hours: 1 minutes: 10 From 11831492bf248b6f266b42ea55ed6ebc89397499 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 3 Jan 2023 17:18:23 +0100 Subject: [PATCH 28/36] Fix CURL command in WattTime docs (#25525) --- source/_integrations/watttime.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/watttime.markdown b/source/_integrations/watttime.markdown index 29bf03abdba..dcee4e6c2d4 100644 --- a/source/_integrations/watttime.markdown +++ b/source/_integrations/watttime.markdown @@ -15,7 +15,7 @@ ha_platforms: ha_integration_type: service --- -The `watttime` integration allows users to get real-time emissions data for a latitude/longitude from [WattTime](https://www.watttime.org). +The WattTime integration allows users to get real-time emissions data for a latitude/longitude from [WattTime](https://www.watttime.org). ## Registering an Account @@ -23,8 +23,8 @@ WattTime account registration is accomplished [via the REST API itself](https:// ```bash curl -X "POST" "https://api2.watttime.org/v2/register" \ - -H 'Content-Type: application/json; charset=utf-8' \ - -d $'{ + -H 'Content-Type: application/json' \ + -d '{ "username": "", "password": "", "email": "", From 5bfb529e22f2cf0575cafe915e6cd0228fc810a0 Mon Sep 17 00:00:00 2001 From: Keith Wansbrough Date: Tue, 3 Jan 2023 22:05:03 +0000 Subject: [PATCH 29/36] Clarify how to set up a private broker with TLS (#25530) Co-authored-by: Franck Nijhof --- source/_integrations/mqtt.markdown | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 6b1949c4c95..bc629e76957 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -50,8 +50,6 @@ The most private option is running your own MQTT broker. The recommended setup method is to use the [Mosquitto MQTT broker add-on](https://github.com/home-assistant/hassio-addons/blob/master/mosquitto/DOCS.md). -
-
Neither ActiveMQ MQTT broker nor the RabbitMQ MQTT Plugin are supported, use a known working broker like Mosquitto instead. @@ -59,19 +57,26 @@ There are [at least two](https://issues.apache.org/jira/browse/AMQ-6360) [issues
-### Connect to a public broker +### Use a public broker The Mosquitto project runs a [public broker](https://test.mosquitto.org). This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices or controlling your home. To use the public mosquitto broker, configure the MQTT integration to connect to broker `test.mosquitto.org` on port 1883 or 8883. -
- -If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add `certificate: auto` to your broker configuration and restart Home Assistant. - -
- ## Broker configuration -MQTT broker settings are configured when the MQTT integration is first setup, and can be changed if needed. To change the settings, click on "Configure" in the integration page in the UI, then "Re-configure MQTT". +MQTT broker settings are configured when the MQTT integration is first set up and can be changed later if needed. + +Add the MQTT integration, then provide your broker's hostname (or IP address) and port and (if required) the username and password that Home Assistant should use. To change the settings later, click on "Configure" on the integration page in the UI, then "Re-configure MQTT". + +
+ +If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add +```yaml +mqtt: + certificate: auto +``` +to your broker configuration and restart Home Assistant. + +
### Advanced broker configuration From e67d18ab7ced2506c06996498945b62a6c13b8ed Mon Sep 17 00:00:00 2001 From: Colin O'Dell Date: Tue, 3 Jan 2023 17:27:15 -0500 Subject: [PATCH 30/36] Update qnap.markdown (#25531) Closes https://github.com/home-assistant/core/issues/61789 --- source/_integrations/qnap.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/qnap.markdown b/source/_integrations/qnap.markdown index 16d3b0a7465..44c2267982f 100644 --- a/source/_integrations/qnap.markdown +++ b/source/_integrations/qnap.markdown @@ -58,7 +58,7 @@ timeout: default: 10 type: integer username: - description: An administration user to connect to the QNAP NAS. This user must be a member of the _administration_ group. + description: An administration user to connect to the QNAP NAS. This user must be a member of the _administration_ group and MFA must be disabled for that account. required: true type: string password: @@ -124,3 +124,5 @@ If your QNAP device uses self-signed certificates, set the `verify_ssl` option t ### QNAP device support This integration works with most (but not all) QNAP devices. A complete, up-to-date [list of compatible devices can be found here](https://github.com/colinodell/python-qnapstats#device-support). + +If your QNAP device is running QTS 5, make sure you log into the device's web interface (with the same account you've configured in Home Assistant) and complete any agreements, warnings, wizards, setup, etc. as the QNAP API may block requests until those are completed. From ff4f41ac49f14c1fb045d1319d014945624741ed Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Wed, 4 Jan 2023 09:16:57 +0100 Subject: [PATCH 31/36] Update fritzsmarthome link (#25536) --- source/_integrations/fritzbox.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 0008c078d23..035b24949de 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -28,7 +28,7 @@ ha_codeowners: ha_integration_type: hub --- -The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [FRITZ!DECT](https://en.avm.de/products/fritzdect/) devices like switches, sensors and thermostats. +The AVM FRITZ!SmartHome integration for Home Assistant allows you to integrate [FRITZ!DECT](https://en.avm.de/products/smart-home/) devices like switches, sensors and thermostats. There is currently support for the following device types within Home Assistant: From cda4c65cd6fa4dcf87f4879d50fa72468749f05f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jan 2023 10:33:48 +0100 Subject: [PATCH 32/36] Bump textlint from 12.4.0 to 12.5.0 (#25535) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 318 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 160 insertions(+), 160 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd670b9fdd5..1db41f09d7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.4.0", + "textlint": "^12.5.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" @@ -234,9 +234,9 @@ "dev": true }, "node_modules/@textlint/ast-tester": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.3.0.tgz", - "integrity": "sha512-f135pLEv/6epjRNlSTpxHX/3lutzB+l1GCHjVlm+PRCWEunKBvcZxyBCf1mp00vKNQdOpLnSPFDHIa/KgsZ/nQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.5.0.tgz", + "integrity": "sha512-osHf1OFLC3RnjGyoSBynn2u5pgj7qkik8TNaxgPekVwlLWtJTcyh22PHo+mXPF47XWM5gJQmy/72nUrqtbDMPg==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", @@ -244,24 +244,24 @@ } }, "node_modules/@textlint/ast-traverse": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.3.0.tgz", - "integrity": "sha512-WkDOgs7LJNf9kq7yGIi10FuBkW0wpbgMR6unLegRBwT+xN7JxynFnlLVHUfyJs3S0VPYFHX6Dvybg4As7iM4Tw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.5.0.tgz", + "integrity": "sha512-TAbfxz8x8Q/sn7D/h7OikzYp5NqPDrRExm3N+3v9yj+gq++fxHtskas48tm1TYcChTMq6BbPU+EGbdlMo3rWWA==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/config-loader": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.1.tgz", - "integrity": "sha512-iKCrif/McG0dCokvyoxvXcH6G9FaiSDF3DtNYo4GlxavqVtKxKxuFvkeQahWL0QWM9Z+yXlGUcBJdYj6Zxevkw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.5.0.tgz", + "integrity": "sha512-g706+XwdsUGpVXzqW7OFcBO8XdxH1AqbD0D3UYEjlfUONXD0c4Bymctdjk49hzOwTVDGqj+CCyvL+cB/X2bG+Q==", "dev": true, "dependencies": { - "@textlint/kernel": "^12.3.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/kernel": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "rc-config-loader": "^4.1.1", "try-resolve": "^1.0.1" @@ -298,19 +298,19 @@ } }, "node_modules/@textlint/feature-flag": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.3.0.tgz", - "integrity": "sha512-7WgC2d6gk+aeQLPz6M24Ngt4hsZkUL701CjP9R9P2RnLFMVOxwJ7YzpxcGTrlK5pmMNZ06xfbHpBd4rE0d567Q==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.5.0.tgz", + "integrity": "sha512-GdyRbbIsWRuZieWKvRxQA8j5wX5hzq+QqEmuputBrU/KKapNfkg6uNY2GOY6SWvC8QcwD0dYh3Dy1x2txT8p8Q==", "dev": true }, "node_modules/@textlint/fixer-formatter": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.4.0.tgz", - "integrity": "sha512-pCo/EuW8CUdF+AMPI/AhfCuDusQ19BORlKznLfCQoPBvTweSo3M2yDTDeHhi2PLNnKy812KpcJBBpZryALe2nA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.0.tgz", + "integrity": "sha512-iq+fdacaVcI1W3izo2V6JJOcnlUdDL9mX2Q1Ok3b+xwEzG5ZFo3G8iPpdQZXVZDE2jehRSvom8gsOds+n5ZffQ==", "dev": true, "dependencies": { - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -322,33 +322,33 @@ } }, "node_modules/@textlint/kernel": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.3.0.tgz", - "integrity": "sha512-ENNaAeIc3DkuIIA/igkEwu9QIUv6YiLpsZu0lh1+11gdIPbyqwZoF+OO35VColZNFpcIYjeODjZukXAUtKZNCA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.5.0.tgz", + "integrity": "sha512-9UspUHtS2FShTO9pWnrZjadjIvJzFIdIZDKIYCdZuUdU8dEhJqwOdYosqM4N5Wy40aMKnv4Voxp80Ssaq7zZaA==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-tester": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/feature-flag": "^12.3.0", - "@textlint/source-code-fixer": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-tester": "^12.5.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/source-code-fixer": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" } }, "node_modules/@textlint/linter-formatter": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.1.tgz", - "integrity": "sha512-n6elvyIBux/lefhmQBZUjgN2EZQ347b6v1waUPAGKmljsndoVCyY+m6RbNhAQtVsNTA1sdO7cJDIxvnX4g1kaA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.5.0.tgz", + "integrity": "sha512-cJ87VGmyqDyjxT2aL3492g/YyGh6AU7/3QqxKN9q8rxJtzaY2e1uJrUKdpj0oOj1xZzYYv8zPeIpFaiFtNW02Q==", "dev": true, "dependencies": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", @@ -364,9 +364,9 @@ } }, "node_modules/@textlint/markdown-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.3.0.tgz", - "integrity": "sha512-gyLVU5WTJOIYJlGOPixENCzoj8SC4mpDkB+ADVFoqWCK4AOiZOHxDCH69g2AQQWKJYNmw7is4ZnyKA6q+OCPAw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz", + "integrity": "sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", @@ -699,61 +699,61 @@ } }, "node_modules/@textlint/module-interop": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.3.0.tgz", - "integrity": "sha512-Qc7yamUIagaN8XW9cToIrtxOD2dqZeJBCf/Y/P+16aPYU+z186EQ4JNNWPXGss5XNtHNFA5Ztjh17NXpmowk2w==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.5.0.tgz", + "integrity": "sha512-NmkHL5tt+HEqLm00JSW1f03KTbEqOzupliboSZ2HeNhOqZxSX4wR3lBlGqVeVi5dImMWrt40oa+AbkqkD78b9Q==", "dev": true }, "node_modules/@textlint/source-code-fixer": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.3.0.tgz", - "integrity": "sha512-ma5HN8BbmeE6UnIiVWRdMigwqGHGG9R+kTBJBro5tsCyaktGPArnbg1EynJeBVz/C7vMll4RXcuOFyvEtaMsOw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.5.0.tgz", + "integrity": "sha512-7LebJ6Y64Rb4fVYyokpU8FnjNLdx+TehcHQJ9L/fi8PYVjpS/08klYtYfRtKWmi/vrWED7U0aGhb8Xr26NuWFw==", "dev": true, "dependencies": { - "@textlint/types": "^12.3.0", + "@textlint/types": "^12.5.0", "debug": "^4.3.4" } }, "node_modules/@textlint/text-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.3.0.tgz", - "integrity": "sha512-eRNy+yUvh5ZkgB+2WrHYVu6HwBopLJwn0cw6bEcgYbUyxYNu7gjwaBp6vyg0qjzLQ3ujA4pkW17v6Q+shm6Oqw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.5.0.tgz", + "integrity": "sha512-wOWYX+d821ThwNYNk5hfxOBxvkqKUpNOBKkDaic4V+dkuBoAS0D9lE9fA9Ps62kL/I1uQwhU5d4qsAHWnFmQkw==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/textlint-plugin-markdown": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.3.0.tgz", - "integrity": "sha512-luLU4a3n96jcBjOkybcaRmxQWJX1gMlM48B5HWj0cfgtxCAUmeCFI+fHbWcp6THJR6nPNqWnvzyEuMwYAI9LYQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.5.0.tgz", + "integrity": "sha512-1B4mTmA1NOvK2kAk4Rl/TW3QFB80iwhsOKSJ16nCH/yvF82xgH+Gu4gQB/prNpACb4TivmzwvBRYp7rzhOTTyA==", "dev": true, "dependencies": { - "@textlint/markdown-to-ast": "^12.3.0" + "@textlint/markdown-to-ast": "^12.5.0" } }, "node_modules/@textlint/textlint-plugin-text": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.3.0.tgz", - "integrity": "sha512-Z2ZYsKMIma6hOa0wjCUhl7UNFLb2DJFhNYSJkoaiW+TO55WMz0hzBvwXss4fvc8dKit2afMwmGlLKYcie000BA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.5.0.tgz", + "integrity": "sha512-ec3rZaJYytoscwpAtuxD4UM3bUPqNAeWKia+LMaVMWREULwKfntlSAqSNmudujEkxdsKr028CkzYuP78q8Xmuw==", "dev": true, "dependencies": { - "@textlint/text-to-ast": "^12.3.0" + "@textlint/text-to-ast": "^12.5.0" } }, "node_modules/@textlint/types": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.3.0.tgz", - "integrity": "sha512-6IcKqGJyIISaH4JqkUEsG+3FIg0CVSz1iHFfwMA16YgRuKtSDuySPyo3LfpcQ3dqUeonr29yWgfi2f1QM8SCDw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.5.0.tgz", + "integrity": "sha512-Po5qOubilL/g3dx+ZUgaQzNXbROADBF4Z5xy7qqgV6pBQIEE/06INZDmmLE1Eesm2zoDpygoG/1f/0/Cy5Yupw==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0" } }, "node_modules/@textlint/utils": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.3.0.tgz", - "integrity": "sha512-O9WuQqN+hEs1tVWSd3HQYCPQZyKTW/JjKoaMxYsKtvHwu592094iONppyBFwKpmlQCU/woelvbIRQruDRggVVQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.5.0.tgz", + "integrity": "sha512-bQWrQ7Xaru1DRLQhAQQJgNnfGQIwgTgWUigdS5wSwpbmfLDnaMzHu3AG0lk5hEnELMKTCIej5uCR0+YscyUckg==", "dev": true }, "node_modules/@types/concat-stream": { @@ -859,9 +859,9 @@ "dev": true }, "node_modules/ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -5334,23 +5334,23 @@ "dev": true }, "node_modules/textlint": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.4.0.tgz", - "integrity": "sha512-n8WAsOf+JtDXTj12A8DF+kuaV+YVawaf8DUzdEc00AFK/qMUsvUZ79X60SBO1sEYwkjExErQv1JRIFHwOp/XEw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.0.tgz", + "integrity": "sha512-81pwYha45aXCN6oVu2qjQ6nWaXT/U0nabl+S1F8HiY6pQMYwaX1D0on/rLWDO+K7BDQFPdrnO/7/PMw5LEU2Cg==", "dev": true, "dependencies": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/config-loader": "^12.3.1", - "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.4.0", - "@textlint/kernel": "^12.3.0", - "@textlint/linter-formatter": "^12.3.1", - "@textlint/module-interop": "^12.3.0", - "@textlint/textlint-plugin-markdown": "^12.3.0", - "@textlint/textlint-plugin-text": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/config-loader": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/fixer-formatter": "^12.5.0", + "@textlint/kernel": "^12.5.0", + "@textlint/linter-formatter": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/textlint-plugin-markdown": "^12.5.0", + "@textlint/textlint-plugin-text": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", @@ -6425,9 +6425,9 @@ "dev": true }, "@textlint/ast-tester": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.3.0.tgz", - "integrity": "sha512-f135pLEv/6epjRNlSTpxHX/3lutzB+l1GCHjVlm+PRCWEunKBvcZxyBCf1mp00vKNQdOpLnSPFDHIa/KgsZ/nQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-tester/-/ast-tester-12.5.0.tgz", + "integrity": "sha512-osHf1OFLC3RnjGyoSBynn2u5pgj7qkik8TNaxgPekVwlLWtJTcyh22PHo+mXPF47XWM5gJQmy/72nUrqtbDMPg==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", @@ -6435,24 +6435,24 @@ } }, "@textlint/ast-traverse": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.3.0.tgz", - "integrity": "sha512-WkDOgs7LJNf9kq7yGIi10FuBkW0wpbgMR6unLegRBwT+xN7JxynFnlLVHUfyJs3S0VPYFHX6Dvybg4As7iM4Tw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/ast-traverse/-/ast-traverse-12.5.0.tgz", + "integrity": "sha512-TAbfxz8x8Q/sn7D/h7OikzYp5NqPDrRExm3N+3v9yj+gq++fxHtskas48tm1TYcChTMq6BbPU+EGbdlMo3rWWA==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/config-loader": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.3.1.tgz", - "integrity": "sha512-iKCrif/McG0dCokvyoxvXcH6G9FaiSDF3DtNYo4GlxavqVtKxKxuFvkeQahWL0QWM9Z+yXlGUcBJdYj6Zxevkw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/config-loader/-/config-loader-12.5.0.tgz", + "integrity": "sha512-g706+XwdsUGpVXzqW7OFcBO8XdxH1AqbD0D3UYEjlfUONXD0c4Bymctdjk49hzOwTVDGqj+CCyvL+cB/X2bG+Q==", "dev": true, "requires": { - "@textlint/kernel": "^12.3.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/kernel": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "rc-config-loader": "^4.1.1", "try-resolve": "^1.0.1" @@ -6488,19 +6488,19 @@ } }, "@textlint/feature-flag": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.3.0.tgz", - "integrity": "sha512-7WgC2d6gk+aeQLPz6M24Ngt4hsZkUL701CjP9R9P2RnLFMVOxwJ7YzpxcGTrlK5pmMNZ06xfbHpBd4rE0d567Q==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/feature-flag/-/feature-flag-12.5.0.tgz", + "integrity": "sha512-GdyRbbIsWRuZieWKvRxQA8j5wX5hzq+QqEmuputBrU/KKapNfkg6uNY2GOY6SWvC8QcwD0dYh3Dy1x2txT8p8Q==", "dev": true }, "@textlint/fixer-formatter": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.4.0.tgz", - "integrity": "sha512-pCo/EuW8CUdF+AMPI/AhfCuDusQ19BORlKznLfCQoPBvTweSo3M2yDTDeHhi2PLNnKy812KpcJBBpZryALe2nA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/fixer-formatter/-/fixer-formatter-12.5.0.tgz", + "integrity": "sha512-iq+fdacaVcI1W3izo2V6JJOcnlUdDL9mX2Q1Ok3b+xwEzG5ZFo3G8iPpdQZXVZDE2jehRSvom8gsOds+n5ZffQ==", "dev": true, "requires": { - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "diff": "^4.0.2", @@ -6512,33 +6512,33 @@ } }, "@textlint/kernel": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.3.0.tgz", - "integrity": "sha512-ENNaAeIc3DkuIIA/igkEwu9QIUv6YiLpsZu0lh1+11gdIPbyqwZoF+OO35VColZNFpcIYjeODjZukXAUtKZNCA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/kernel/-/kernel-12.5.0.tgz", + "integrity": "sha512-9UspUHtS2FShTO9pWnrZjadjIvJzFIdIZDKIYCdZuUdU8dEhJqwOdYosqM4N5Wy40aMKnv4Voxp80Ssaq7zZaA==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-tester": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/feature-flag": "^12.3.0", - "@textlint/source-code-fixer": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-tester": "^12.5.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/source-code-fixer": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "structured-source": "^3.0.2" } }, "@textlint/linter-formatter": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.3.1.tgz", - "integrity": "sha512-n6elvyIBux/lefhmQBZUjgN2EZQ347b6v1waUPAGKmljsndoVCyY+m6RbNhAQtVsNTA1sdO7cJDIxvnX4g1kaA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-12.5.0.tgz", + "integrity": "sha512-cJ87VGmyqDyjxT2aL3492g/YyGh6AU7/3QqxKN9q8rxJtzaY2e1uJrUKdpj0oOj1xZzYYv8zPeIpFaiFtNW02Q==", "dev": true, "requires": { "@azu/format-text": "^1.0.1", "@azu/style-format": "^1.0.0", - "@textlint/module-interop": "^12.3.0", - "@textlint/types": "^12.3.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/types": "^12.5.0", "chalk": "^4.1.2", "debug": "^4.3.4", "is-file": "^1.0.0", @@ -6554,9 +6554,9 @@ } }, "@textlint/markdown-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.3.0.tgz", - "integrity": "sha512-gyLVU5WTJOIYJlGOPixENCzoj8SC4mpDkB+ADVFoqWCK4AOiZOHxDCH69g2AQQWKJYNmw7is4ZnyKA6q+OCPAw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-12.5.0.tgz", + "integrity": "sha512-+fUslPm0+ukMnRVMPUQwKv1DEwmDP/rXFuzc5+k5tCMhighZ/Fv/e3Y9MUe7SgNDte7ilajTa3/uP0Iurr60WA==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", @@ -6777,61 +6777,61 @@ } }, "@textlint/module-interop": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.3.0.tgz", - "integrity": "sha512-Qc7yamUIagaN8XW9cToIrtxOD2dqZeJBCf/Y/P+16aPYU+z186EQ4JNNWPXGss5XNtHNFA5Ztjh17NXpmowk2w==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-12.5.0.tgz", + "integrity": "sha512-NmkHL5tt+HEqLm00JSW1f03KTbEqOzupliboSZ2HeNhOqZxSX4wR3lBlGqVeVi5dImMWrt40oa+AbkqkD78b9Q==", "dev": true }, "@textlint/source-code-fixer": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.3.0.tgz", - "integrity": "sha512-ma5HN8BbmeE6UnIiVWRdMigwqGHGG9R+kTBJBro5tsCyaktGPArnbg1EynJeBVz/C7vMll4RXcuOFyvEtaMsOw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/source-code-fixer/-/source-code-fixer-12.5.0.tgz", + "integrity": "sha512-7LebJ6Y64Rb4fVYyokpU8FnjNLdx+TehcHQJ9L/fi8PYVjpS/08klYtYfRtKWmi/vrWED7U0aGhb8Xr26NuWFw==", "dev": true, "requires": { - "@textlint/types": "^12.3.0", + "@textlint/types": "^12.5.0", "debug": "^4.3.4" } }, "@textlint/text-to-ast": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.3.0.tgz", - "integrity": "sha512-eRNy+yUvh5ZkgB+2WrHYVu6HwBopLJwn0cw6bEcgYbUyxYNu7gjwaBp6vyg0qjzLQ3ujA4pkW17v6Q+shm6Oqw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/text-to-ast/-/text-to-ast-12.5.0.tgz", + "integrity": "sha512-wOWYX+d821ThwNYNk5hfxOBxvkqKUpNOBKkDaic4V+dkuBoAS0D9lE9fA9Ps62kL/I1uQwhU5d4qsAHWnFmQkw==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/textlint-plugin-markdown": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.3.0.tgz", - "integrity": "sha512-luLU4a3n96jcBjOkybcaRmxQWJX1gMlM48B5HWj0cfgtxCAUmeCFI+fHbWcp6THJR6nPNqWnvzyEuMwYAI9LYQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-markdown/-/textlint-plugin-markdown-12.5.0.tgz", + "integrity": "sha512-1B4mTmA1NOvK2kAk4Rl/TW3QFB80iwhsOKSJ16nCH/yvF82xgH+Gu4gQB/prNpACb4TivmzwvBRYp7rzhOTTyA==", "dev": true, "requires": { - "@textlint/markdown-to-ast": "^12.3.0" + "@textlint/markdown-to-ast": "^12.5.0" } }, "@textlint/textlint-plugin-text": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.3.0.tgz", - "integrity": "sha512-Z2ZYsKMIma6hOa0wjCUhl7UNFLb2DJFhNYSJkoaiW+TO55WMz0hzBvwXss4fvc8dKit2afMwmGlLKYcie000BA==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/textlint-plugin-text/-/textlint-plugin-text-12.5.0.tgz", + "integrity": "sha512-ec3rZaJYytoscwpAtuxD4UM3bUPqNAeWKia+LMaVMWREULwKfntlSAqSNmudujEkxdsKr028CkzYuP78q8Xmuw==", "dev": true, "requires": { - "@textlint/text-to-ast": "^12.3.0" + "@textlint/text-to-ast": "^12.5.0" } }, "@textlint/types": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.3.0.tgz", - "integrity": "sha512-6IcKqGJyIISaH4JqkUEsG+3FIg0CVSz1iHFfwMA16YgRuKtSDuySPyo3LfpcQ3dqUeonr29yWgfi2f1QM8SCDw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-12.5.0.tgz", + "integrity": "sha512-Po5qOubilL/g3dx+ZUgaQzNXbROADBF4Z5xy7qqgV6pBQIEE/06INZDmmLE1Eesm2zoDpygoG/1f/0/Cy5Yupw==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0" } }, "@textlint/utils": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.3.0.tgz", - "integrity": "sha512-O9WuQqN+hEs1tVWSd3HQYCPQZyKTW/JjKoaMxYsKtvHwu592094iONppyBFwKpmlQCU/woelvbIRQruDRggVVQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@textlint/utils/-/utils-12.5.0.tgz", + "integrity": "sha512-bQWrQ7Xaru1DRLQhAQQJgNnfGQIwgTgWUigdS5wSwpbmfLDnaMzHu3AG0lk5hEnELMKTCIej5uCR0+YscyUckg==", "dev": true }, "@types/concat-stream": { @@ -6931,9 +6931,9 @@ "dev": true }, "ajv": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", - "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -10074,23 +10074,23 @@ "dev": true }, "textlint": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.4.0.tgz", - "integrity": "sha512-n8WAsOf+JtDXTj12A8DF+kuaV+YVawaf8DUzdEc00AFK/qMUsvUZ79X60SBO1sEYwkjExErQv1JRIFHwOp/XEw==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/textlint/-/textlint-12.5.0.tgz", + "integrity": "sha512-81pwYha45aXCN6oVu2qjQ6nWaXT/U0nabl+S1F8HiY6pQMYwaX1D0on/rLWDO+K7BDQFPdrnO/7/PMw5LEU2Cg==", "dev": true, "requires": { "@textlint/ast-node-types": "^12.3.0", - "@textlint/ast-traverse": "^12.3.0", - "@textlint/config-loader": "^12.3.1", - "@textlint/feature-flag": "^12.3.0", - "@textlint/fixer-formatter": "^12.4.0", - "@textlint/kernel": "^12.3.0", - "@textlint/linter-formatter": "^12.3.1", - "@textlint/module-interop": "^12.3.0", - "@textlint/textlint-plugin-markdown": "^12.3.0", - "@textlint/textlint-plugin-text": "^12.3.0", - "@textlint/types": "^12.3.0", - "@textlint/utils": "^12.3.0", + "@textlint/ast-traverse": "^12.5.0", + "@textlint/config-loader": "^12.5.0", + "@textlint/feature-flag": "^12.5.0", + "@textlint/fixer-formatter": "^12.5.0", + "@textlint/kernel": "^12.5.0", + "@textlint/linter-formatter": "^12.5.0", + "@textlint/module-interop": "^12.5.0", + "@textlint/textlint-plugin-markdown": "^12.5.0", + "@textlint/textlint-plugin-text": "^12.5.0", + "@textlint/types": "^12.5.0", + "@textlint/utils": "^12.5.0", "debug": "^4.3.4", "deep-equal": "^1.1.1", "file-entry-cache": "^5.0.1", diff --git a/package.json b/package.json index 28ea2ed73be..85030905ac2 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "remark-lint-fenced-code-flag": "^3.1.1", "remark-lint-no-shell-dollars": "^3.1.1", "remark-stringify": "^10.0.2", - "textlint": "^12.4.0", + "textlint": "^12.5.0", "textlint-filter-rule-comments": "^1.2.2", "textlint-rule-common-misspellings": "^1.0.1", "textlint-rule-terminology": "^3.0.4" From e1527f52de5196a0d87a214fa0582f79c7c77131 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Jan 2023 10:41:50 +0100 Subject: [PATCH 33/36] Bump unicode-display_width from 2.3.0 to 2.4.1 (#25534) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index fe932d6e589..40457fe756a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -118,7 +118,7 @@ GEM concurrent-ruby (~> 1.0) tzinfo-data (1.2022.7) tzinfo (>= 1.0.0) - unicode-display_width (2.3.0) + unicode-display_width (2.4.1) webrick (1.7.0) PLATFORMS From 92e53b4f1c6b2220f30a032c204aff19cde3ffc6 Mon Sep 17 00:00:00 2001 From: Jan Bouwhuis Date: Wed, 4 Jan 2023 10:43:40 +0100 Subject: [PATCH 34/36] Guide setting MQTT broker verification using UI (#25538) --- source/_integrations/mqtt.markdown | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index bc629e76957..059ceb40774 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -69,12 +69,7 @@ Add the MQTT integration, then provide your broker's hostname (or IP address) an
-If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then add -```yaml -mqtt: - certificate: auto -``` -to your broker configuration and restart Home Assistant. +If you experience an error message like `Failed to connect due to exception: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed`, then turn on `Advanced options` and set [Broker certificate validation](/integrations/mqtt/#broker-certificate-validation) to `Auto`.
@@ -92,7 +87,7 @@ The time in seconds between sending keep alive messages for this client. The def #### Broker certificate validation -To enable a secure the broker certificate should be validated. If your broker uses a trusted certificate then choose `auto`. This will allow validation against certifite CAs bundled certificates. If a self-signed certificate is used, select `Custom`. A custom PEM encoded CA-certificate can be uploaded. Click `NEXT` to show the control to upload the CA certificate. +To enable a secure the broker certificate should be validated. If your broker uses a trusted certificate then choose `Auto`. This will allow validation against certifite CAs bundled certificates. If a self-signed certificate is used, select `Custom`. A custom PEM encoded CA-certificate can be uploaded. Click `NEXT` to show the control to upload the CA certificate. If the server certificate does not match the hostname then validation will fail. To allow a connection without the verification of the hostname, turn the `Ignore broker certificate validation` switch on. #### MQTT Protocol From 733c25bef68c7e38d484f6ac57d211c20425c8f4 Mon Sep 17 00:00:00 2001 From: Sven Serlier <85389871+wrt54g@users.noreply.github.com> Date: Wed, 4 Jan 2023 10:44:16 +0100 Subject: [PATCH 35/36] Update bsblan URLs (#25537) --- source/_integrations/bsblan.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/bsblan.markdown b/source/_integrations/bsblan.markdown index e1245d2ce89..4c48d39de3d 100644 --- a/source/_integrations/bsblan.markdown +++ b/source/_integrations/bsblan.markdown @@ -16,7 +16,7 @@ ha_platforms: ha_integration_type: integration --- -This integration integrates [BSBLan](https://github.com/fredlcore/bsb_lan) device into Home Assistant. +This integration integrates [BSBLan](https://github.com/fredlcore/BSB-LAN) devices into Home Assistant. BSBLan is a device that is made by `Frederik Holst` and `Ulf Dieckmann` for documentation and with the help of many other contributors. @@ -40,4 +40,4 @@ To see a more detailed listing of the reported systems which are successfully us - [`Other Manufacturers (e.g. Fujitsu, Atlantic, Weishaupt)`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#313-other-manufacturers) The integration is tested with the stable firmware version `1.00`. A newer firmware versions will not work, because the parameters are changed of the specific info that is needed. -Please use the latest release. [release 1.0](https://github.com/fredlcore/bsb_lan/releases/tag/v1.0) +Please use the latest release. [release 1.0](https://github.com/fredlcore/BSB-LAN/releases/tag/v1.0) From 256617907729b8b83b4661c1c8c15310aefcf6a2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 4 Jan 2023 04:49:52 -0500 Subject: [PATCH 36/36] Drop eagle-200 recommendation for electricity monitoring (#25533) --- source/_docs/energy/electricity-grid.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/energy/electricity-grid.markdown b/source/_docs/energy/electricity-grid.markdown index 222a43e5dc7..c1c0415e373 100644 --- a/source/_docs/energy/electricity-grid.markdown +++ b/source/_docs/energy/electricity-grid.markdown @@ -35,7 +35,7 @@ We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to devel The Zigbee Energy Profile is a wireless energy standard to provide real-time information about electricity usage. This standard is available in some meters in the US, UK and Australia. This is not "normal" Zigbee as implemented by Home Assistant but requires special certified hardware. -One such option with a local API is the [Rainforest EAGLE-200](/integrations/rainforest_eagle/). +We are not currently aware of a device that implements this which supports a local API and is compatible with Home Assistant. #### Reading the meter via a pulse counter @@ -47,7 +47,7 @@ We have developed [Home Assistant Glow](https://github.com/klaasnicolaas/home-as #### Read the meter using an AI-on-the-edge-device -[AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant discovery functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways. +[AI-on-the-edge-device](https://github.com/jomjol/AI-on-the-edge-device) is a project running on an ESP32-CAM and can be fully integrated into Home Assistant using the Home Assistant discovery functionality of MQTT. It digitalizes your gas/water/electricity meter display and provides its data in various ways. ![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ai-on-the-edge-device.jpg)