From 08d03d141e818130eb445f241bd17df2738874dc Mon Sep 17 00:00:00 2001 From: Paul Dee <647633+systemcrash@users.noreply.github.com> Date: Sun, 4 Apr 2021 19:01:18 +0200 Subject: [PATCH 01/20] Quick howto to flash Hue devices via OTA folder. (#16975) --- source/_integrations/zha.markdown | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 9713868f393..1c1a9e8b1b6 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -188,7 +188,23 @@ zha: You can choose if the IKEA or LEDVANCE provider should be set to enabled (`true`) or disabled (`false`) individually. After the OTA firmware upgrades are finished, you can set these to `false` again if you do not want ZHA to automatically download and perform OTA firmware upgrades in the future. -Note that the `otau_directory` setting is optional and can be used for any firmware files you have downloaded yourself. +Note that the `otau_directory` setting is optional and can be used for any firmware files you have downloaded yourself, for any device type and manufacturer. For example, Philips Hue firmwares manually downloaded from [here](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/OTA-Image-Types---Firmware-versions) and/or [here](https://github.com/Koenkk/zigbee-OTA/blob/a02a4cb33f7c46b4d2916805bfcad582124ec975/index.json) added to the `otau_directory` can be flashed, although a manual `zha.issue_zigbee_cluster_command` command currently (as of 2021.3.3) must be issued against the IEEE of the Philips Hue device under Developer Tools->Services, e.g.: + +```yaml +service: zha.issue_zigbee_cluster_command +data: + ieee: "xx:xx:xx:xx:xx:xx:xx:xx" + endpoint_id: 11 + cluster_id: 25 + cluster_type: out + command: 0 + command_type: client + args: + - 0 + - 100 +``` + +Note: `cluster_id: 25` may also be `cluster_id: 0x0019`. The two are synonymous. ### Defining Zigbee channel to use From b2da15d1007c6cde5867bbd433f2b03aae4b2eb9 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:19:21 +0200 Subject: [PATCH 02/20] Adjust view feedback button wording (#17267) --- source/_includes/feedback.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_includes/feedback.html b/source/_includes/feedback.html index 0201b541641..9381cbab459 100644 --- a/source/_includes/feedback.html +++ b/source/_includes/feedback.html @@ -30,7 +30,7 @@ View pending feedback View given feedback {% endif %} From 482422f675f01a0caff47d1efe238dd97e191af6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:26:34 +0200 Subject: [PATCH 03/20] Add note about OpenWeatherMap API key activation delays (#17264) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joakim Sørensen --- source/_integrations/openweathermap.markdown | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index edd7e5aa66f..8934615d88e 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -17,7 +17,7 @@ ha_platforms: - weather --- -The `openweathermap` weather platform uses [OpenWeatherMap](https://openweathermap.org/) as a source for current meteorological data for your location. +The OpenWeatherMap weather integrations uses [OpenWeatherMap](https://openweathermap.org/) as a source for current meteorological data for your location. There is currently support for the following device types within Home Assistant: @@ -26,6 +26,12 @@ There is currently support for the following device types within Home Assistant: You need an API key, which is free, but requires a [registration](https://home.openweathermap.org/users/sign_up). +
+If you register an new API key with OpenWeatherMap, it will be activated automatically, this typically takes between 10 minutes and 2 hours +after your successful registration. Keep in mind when configuring this integration, that you new API key might +not be activated yet. +
+ {% include integrations/config_flow.md %} | Parameter | Value | From f4f408b417d94981f82b19accb9a0b0b9e83e9fb Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:27:23 +0200 Subject: [PATCH 04/20] Add clarity to apostrophes meaning in SMTP docs (#17265) --- source/_integrations/smtp.markdown | 174 ++++++++++++++--------------- 1 file changed, 86 insertions(+), 88 deletions(-) diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown index e42633e8400..e9871ade9d0 100644 --- a/source/_integrations/smtp.markdown +++ b/source/_integrations/smtp.markdown @@ -12,17 +12,17 @@ ha_platforms: - notify --- -The `smtp` platform allows you to deliver notifications from Home Assistant to an e-mail recipient. +The SMTP platform allows you to deliver notifications from Home Assistant to an e-mail recipient. To enable notification by e-mail in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry notify: - - name: NOTIFIER_NAME + - name: "NOTIFIER_NAME" platform: smtp - sender: YOUR_SENDER - recipient: YOUR_RECIPIENT + sender: "YOUR_SENDER" + recipient: "YOUR_RECIPIENT" ``` {% configuration %} @@ -59,7 +59,7 @@ username: required: false type: string password: - description: Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes. + description: Password for the SMTP server that belongs to the given username. Make sure to wrap it in double quotes; e.g., `"MY_PASSWORD"`. required: false type: string encryption: @@ -72,7 +72,7 @@ sender_name: required: false type: string debug: - description: Enables Debug, e.g., True or False. + description: Enables Debug, e.g., `true` or `false`. required: false type: boolean default: false @@ -83,19 +83,19 @@ A sample configuration entry for Google Mail. ```yaml # Example configuration.yaml entry notify: - - name: NOTIFIER_NAME + - name: "NOTIFIER_NAME" platform: smtp - server: smtp.gmail.com + server: "smtp.gmail.com" port: 587 timeout: 15 - sender: john@gmail.com + sender: "john@gmail.com" encryption: starttls - username: john@gmail.com - password: thePassword + username: "john@gmail.com" + password: "thePassword" recipient: - - james@gmail.com - - bob@gmail.com - sender_name: My Home Assistant + - "james@gmail.com" + - "bob@gmail.com" + sender_name: "My Home Assistant" ``` Keep in mind that Google has some extra layers of protection which need special attention (Hint: 'Less secure apps'). If you have 2-step verification enabled on your Google account, you'll need to use [an application-specific password](https://support.google.com/mail/answer/185833?hl=en). @@ -103,20 +103,20 @@ Keep in mind that Google has some extra layers of protection which need special To use the SMTP notification, refer to it in an automation or script like in this example: ```yaml - burglar: - alias: "Burglar Alarm" - sequence: - - service: shell_command.snapshot - - delay: - seconds: 1 - - service: notify.NOTIFIER_NAME - data: - title: "Intruder alert" - message: "Intruder alert at apartment!!" - data: - images: - - /home/pi/snapshot1.jpg - - /home/pi/snapshot2.jpg +burglar: + alias: "Burglar Alarm" + sequence: + - service: shell_command.snapshot + - delay: + seconds: 1 + - service: notify.NOTIFIER_NAME + data: + title: "Intruder alert" + message: "Intruder alert at apartment!!" + data: + images: + - /home/pi/snapshot1.jpg + - /home/pi/snapshot2.jpg ``` The optional `images` field adds in-line image attachments to the email. This sends a text/HTML multi-part message instead of the plain text default. @@ -124,74 +124,72 @@ The optional `images` field adds in-line image attachments to the email. This se The optional `html` field makes a custom text/HTML multi-part message, allowing total freedom for sending rich html emails. In them, if you need to attach images, you can pass both arguments (`html` and `images`), the attachments will be joined with the basename of the images, so they can be included in the html page with `src="cid:image_name.ext"`. ```yaml - burglar: - alias: "Burglar Alarm" - sequence: - - service: shell_command.snapshot - - delay: - seconds: 1 - - service: notify.NOTIFIER_NAME - data: - message: "Intruder alert at apartment!!" - data: - images: - - /home/pi/snapshot1.jpg - - /home/pi/snapshot2.jpg - html: > - - - - - - - Intruder alert - - - - - -
-
-

Intruder alert at apartment!!

-
-
-
-
-
- snapshot1 -
-
- snapshot2 -
+burglar: + alias: "Burglar Alarm" + sequence: + - service: shell_command.snapshot + - delay: + seconds: 1 + - service: notify.NOTIFIER_NAME + data: + message: "Intruder alert at apartment!!" + data: + images: + - /home/pi/snapshot1.jpg + - /home/pi/snapshot2.jpg + html: > + + + + + + + Intruder alert + + + + + +
+
+

Intruder alert at apartment!!

+
+
+
+
+
+ snapshot1 +
+
+ snapshot2
-
- - - - +
+
+ + + + ``` This platform is fragile and not able to catch all exceptions in a smart way because of the large number of possible configuration combinations. A combination that will work properly is port 587 and STARTTLS. It's recommended to enable STARTTLS, if possible. -Keep in mind that if the password contains a colon, it needs to be wrapped in apostrophes in the `configuration.yaml` file. - For Google Mail (smtp.gmail.com) an additional step in the setup process is needed. Google has some extra layers of protection which need special attention. By default, the usage by external applications, especially scripts, is limited. Visit the [Less secure apps](https://www.google.com/settings/security/lesssecureapps) page and enable it. From 03fc299592d56b84cba80c7b2243c8f499b73e3e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:28:10 +0200 Subject: [PATCH 05/20] Make Google maps example clear to have an email (#17269) --- source/_integrations/google_maps.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index a1515f23c37..b4a7a5f7010 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -34,7 +34,7 @@ To integrate Google Maps Location Sharing in Home Assistant, add the following s # Example configuration.yaml entry device_tracker: - platform: google_maps - username: YOUR_USERNAME + username: "YOUR_EMAIL" ``` Once enabled and you have rebooted devices discovered through this integration will be listed in the `known_devices.yaml` file within your configuration directory. From fd96ac530c479cbe6a1c429ef0509b861447374d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:31:56 +0200 Subject: [PATCH 06/20] Escape template in MQTT cover set_position_template (#17270) --- source/_integrations/cover.mqtt.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index 8bf363c6710..4f8cb32c244 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -178,7 +178,7 @@ retain: type: boolean default: false set_position_template: - description: "Defines a [template](/topics/templating/) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{{position}}`. If no template is defined, the position (0-100) will be calculated according to `position_open` and `position_closed` values." + description: "Defines a [template](/topics/templating/) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{% raw %}{{ position }}{% endraw %}`. If no template is defined, the position (0-100) will be calculated according to `position_open` and `position_closed` values." required: false type: string set_position_topic: From cc1ba5b00cc286dfedf30afebece07a6572b8fea Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:32:33 +0200 Subject: [PATCH 07/20] Add clarity to automation editor page example sensor (#17268) --- source/_docs/automation/editor.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown index e19c4423f09..35e4075cc3e 100644 --- a/source/_docs/automation/editor.markdown +++ b/source/_docs/automation/editor.markdown @@ -3,7 +3,7 @@ title: "Automation Editor" description: "Instructions on how to use the automation editor." --- -From the UI choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **+** sign in the lower right corner to get started. This example is based on the manual steps described in the [Getting started section](/getting-started/automation/) for a [`random` sensor](/integrations/random#sensor). +From the UI choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **+** sign in the lower right corner to get started. This page uses the [Random sensor](/integrations/random#sensor) as an example. Any other sensor with a numeric value, can be used as well. Choose a meaningful name for your automation rules. From 4383ca1273a9604196888e5d8b60fce7b2ea7932 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 4 Apr 2021 21:34:26 +0200 Subject: [PATCH 08/20] Add alternative, easier method to get API token for FortiOS (#17266) --- source/_integrations/fortios.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/fortios.markdown b/source/_integrations/fortios.markdown index 2482311419f..5e1ce233ce6 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -35,7 +35,7 @@ host: required: true type: string token: - description: "See [Fortinet Developer Network](https://fndn.fortinet.net) for how to create an API token. Remember this integration only needs read access to a FortiGate, so configure the API user to only to have limited and read-only access." + description: "See: [Generate an API token for FortiOS](https://registry.terraform.io/providers/fortinetdev/fortios/latest/docs/guides/fgt_token) for how to create an API token. Remember this integration only needs read access to a FortiGate, so configure the API user to only to have limited and read-only access." required: true type: string verify_ssl: From f3fccc06242c44301386f273d084f16172f13bad Mon Sep 17 00:00:00 2001 From: zraken <59450270+zraken@users.noreply.github.com> Date: Sun, 4 Apr 2021 16:15:31 -0400 Subject: [PATCH 09/20] Update mqtt.markdown (#17227) Co-authored-by: Franck Nijhof --- source/_integrations/mqtt.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 8457952586b..79fe5abd7bc 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -40,6 +40,18 @@ mqtt: broker: IP_ADDRESS_BROKER ``` +Manual configuration is required when connecting to a broker over TLS. + +```yaml +# Example configuration.yaml entry +mqtt: + certificate: "PATH_TO_CA.crt" + broker: "IP_ADDRESS_BROKER" + port: 8883 + username: "MQTT_USERNAME" + password: !secret MQTT_PASSWORD +``` + ## Additional features - [Certificate](/docs/mqtt/certificate/) From c310e2386a95fbe34a5d2e33ed581f7bcb6c398b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Apr 2021 12:10:58 +0200 Subject: [PATCH 10/20] Bump ruby/setup-ruby from v1.66.1 to v1.67.0 (#17280) Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from v1.66.1 to v1.67.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Commits](https://github.com/ruby/setup-ruby/compare/v1.66.1...ad65390c0a7505ce47023b0555e762426132496b) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c0d568b6ff2..07b1a98bbef 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,7 +57,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v2 - name: Setting up Ruby 2.6 - uses: ruby/setup-ruby@v1.66.1 + uses: ruby/setup-ruby@v1.67.0 with: ruby-version: 2.6 - name: Setup Ruby Gems cache From b946b26344bd179cec8100461474b9c249613ef9 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 5 Apr 2021 17:24:00 +0200 Subject: [PATCH 11/20] Fix broken link in Tahoma documentation (#17284) --- source/_integrations/tahoma.markdown | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/_integrations/tahoma.markdown b/source/_integrations/tahoma.markdown index 4610ae5f666..f2dc6a3a5d9 100644 --- a/source/_integrations/tahoma.markdown +++ b/source/_integrations/tahoma.markdown @@ -22,7 +22,7 @@ ha_platforms: - switch --- -The `Tahoma` integration platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds covers, scenes and a sun sensor from the Tahoma platform. +The Tahoma integration is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds covers, scenes and a sun sensor from the Tahoma platform. There is currently support for the following device types within Home Assistant: @@ -40,9 +40,12 @@ To use your Tahoma devices in your installation, add the following to your `conf ```yaml # Example configuration.yaml entry tahoma: - username: YOUR_USERNAME - password: YOUR_PASSWORD - exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent] + username: "YOUR_USERNAME" + password: "YOUR_PASSWORD" + exclude: + - "BridgeHUEComponent" + - "HueLampHUEComponent" + - "PodComponent" ``` {% configuration %} @@ -60,4 +63,4 @@ exclude: type: list {% endconfiguration %} -This also works with the Somfy Connexoon. Check [here](https://somfyhouse.freshdesk.com/nl/support/solutions/articles/14000058145-wat-is-het-verschil-tussen-de-tahoma-en-de-connexoon-) for the differences between the bridges. +This also works with the Somfy Connexoon. Check [here](https://www.somfy.nl/keuzehulp/verschillen-tahoma-en-connexoon) for the differences between the bridges. From 0470936d1903d26a3dc9d41c544a1a72364fc77d Mon Sep 17 00:00:00 2001 From: Duco Sebel <74970928+DCSBL@users.noreply.github.com> Date: Mon, 5 Apr 2021 21:06:08 +0200 Subject: [PATCH 12/20] Fixed single/double quotes errors in examples (#17285) Co-authored-by: Franck Nijhof --- source/_integrations/sensor.rest.markdown | 44 +++++++++++------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown index f9e27fc2c45..07d65865be8 100644 --- a/source/_integrations/sensor.rest.markdown +++ b/source/_integrations/sensor.rest.markdown @@ -29,7 +29,7 @@ sensor: - platform: rest resource: http://IP_ADDRESS/ENDPOINT method: POST - payload: "{ "device" : "heater" }" + payload: '{ "device" : "heater" }' ``` or a template based request: @@ -155,7 +155,7 @@ sensor: - platform: rest resource: http://ip.jsontest.com name: External IP - value_template: '{{ value_json.ip }}' + value_template: "{{ value_json.ip }}" ``` {% endraw %} @@ -171,7 +171,7 @@ sensor: - platform: rest resource: http://IP_ADRRESS:61208/api/2/mem/used name: Used mem - value_template: '{{ value_json.used| multiply(0.000000954) | round(0) }}' + value_template: "{{ value_json.used| multiply(0.000000954) | round(0) }}" unit_of_measurement: MB ``` @@ -190,7 +190,7 @@ sensor: - platform: rest resource: http://IP_ADDRESS:8123/api/states/sensor.weather_temperature name: Temperature - value_template: '{{ value_json.state }}' + value_template: "{{ value_json.state }}" unit_of_measurement: "°C" ``` @@ -252,7 +252,7 @@ sensor: username: YOUR_GITHUB_USERNAME password: YOUR_GITHUB_ACCESS_TOKEN authentication: basic - value_template: '{{ value_json.tag_name }}' + value_template: "{{ value_json.tag_name }}" headers: Accept: application/vnd.github.v3+json Content-Type: application/json @@ -275,15 +275,15 @@ sensor: - date - milliseconds_since_epoch resource: http://date.jsontest.com/ - value_template: '{{ value_json.time }}' + value_template: "{{ value_json.time }}" - platform: template sensors: date: friendly_name: "Date" - value_template: "{{ states.sensor.json_time.attributes["date"] }}" + value_template: "{{ state_attr('sensor.json_time', 'date') }}" milliseconds: friendly_name: "milliseconds" - value_template: '{{ states.sensor.json_time.attributes["milliseconds_since_epoch"] }}' + value_template: "{{ state_attr('sensor.json_time', 'milliseconds_since_epoch') }}" ``` {% endraw %} @@ -303,7 +303,7 @@ sensor: - city - zipcode resource: https://jsonplaceholder.typicode.com/users - value_template: '{{ value_json[0].name }}' + value_template: "{{ value_json[0].name }}" ``` {% endraw %} @@ -319,27 +319,27 @@ sensor: json_attributes: - main - weather - value_template: '{{ value_json["weather"][0]["description"].title() }}' + value_template: "{{ value_json['weather'][0]['description'].title() }}" resource: https://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY - platform: template sensors: owm_weather: - value_template: '{{ state_attr('sensor.owm_report', 'weather')[0]["description"].title() }}' - entity_picture_template: '{{ "https://openweathermap.org/img/w/"+state_attr('sensor.owm_report', 'weather')[0]["icon"].lower()+".png" }}' + value_template: "{{ state_attr('sensor.owm_report', 'weather')[0]['description'].title() }}" + entity_picture_template: "{{ 'https://openweathermap.org/img/w/' + state_attr('sensor.owm_report', 'weather')[0]['icon'].lower() + '.png' }}" entity_id: sensor.owm_report owm_temp: friendly_name: "Outside temp" - value_template: '{{ state_attr('sensor.owm_report', 'main')["temp"]-273.15 }}' + value_template: "{{ state_attr(['sensor.owm_report', 'main')['temp'] - 273.15 }}" unit_of_measurement: "°C" entity_id: sensor.owm_report owm_pressure: friendly_name: "Outside pressure" - value_template: '{{ state_attr('sensor.owm_report', 'main')["pressure"] }}' + value_template: "{{ state_attr('sensor.owm_report', 'main')['pressure'] }}" unit_of_measurement: "hP" entity_id: sensor.owm_report owm_humidity: friendly_name: "Outside humidity" - value_template: '{{ state_attr('sensor.owm_report', 'main')["humidity"] }}' + value_template: "{{ state_attr('sensor.owm_report', 'main')['humidity'] }}" unit_of_measurement: "%" entity_id: sensor.owm_report ``` @@ -390,19 +390,19 @@ sensor: - platform: template sensors: bedroom1_temperature: - value_template: '{{ states.sensor.room_sensors.attributes["bedroom1"]["temperature"] }}' + value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['temperature'] }}" device_class: temperature unit_of_measurement: "°C" bedroom1_humidity: - value_template: '{{ states.sensor.room_sensors.attributes["bedroom1"]["humidity"] }}' + value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['humidity'] }}" device_class: humidity unit_of_measurement: "%" bedroom1_battery: - value_template: '{{ states.sensor.room_sensors.attributes["bedroom1"]["battery"] }}' + value_template: "{{ state_attr('sensor.room_sensors', 'bedroom1')['battery'] }}" device_class: battery unit_of_measurement: "V" bedroom2_temperature: - value_template: '{{ states.sensor.room_sensors.attributes["bedroom2"]["temperature"] }}' + value_template: "{{ state_attr('sensor.room_sensors', 'bedroom2')['temperature'] }}" device_class: temperature unit_of_measurement: "°C" ``` @@ -433,18 +433,18 @@ sensor: sensors: steam_temp: friendly_name: Steam Temp - value_template: '{{ states.sensor.steam_system_data.attributes["temp0"] | regex_findall_index("([0-9]+)XF") }}' + value_template: "{{ state_attr('sensor.steam_system_data', 'temp0') | regex_findall_index('([0-9]+)XF') }}" unit_of_measurement: "°F" steam_time_remaining: friendly_name: "Steam Time Remaining" - value_template: '{{ states.sensor.steam_system_data.attributes["time0"] }}' + value_template: "{{ state_attr('sensor.steam_system_data', 'time0') }}" unit_of_measurement: "minutes" switch: - platform: template switches: steam: - value_template: '{{ states.sensor.steam_system_data.attributes["usr0"] | int >= 1 }}' + value_template: "{{ state_attr('sensor.steam_system_data', 'usr0') | int >= 1 }}" turn_on: - service: rest_command.set_steam_led data: From 2f58f9b6c32338f2e2e8633f4b6b3fe341d821ac Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 6 Apr 2021 11:19:56 +0200 Subject: [PATCH 13/20] Add phonenumber notice to Tuya integration documentation (#17272) --- source/_integrations/tuya.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 595b08fdc20..75122bbb29f 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -38,7 +38,7 @@ There is currently support for the following device types within Home Assistant: {% include integrations/config_flow.md %} -During configuration, be careful to select the [country code](https://www.countrycode.org/) and the platform corresponding to those used by you in the app. Once configuration flow is completed, the devices configured in your app will be automatically discovered. +During configuration, be careful to select the [country code](https://www.countrycode.org/) and the platform corresponding to those used by you in the app. Once configuration flow is completed, the devices configured in your app will be automatically discovered. Additionally, if your username or e-mail address isn't accepted, please try using your phone number (minus the country code) as your username. ## Integration Options From e1ae7f1d6dab3c7706dcadaf938135b906886f52 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 6 Apr 2021 11:20:29 +0200 Subject: [PATCH 14/20] Ensure Centralite can be found in search engines (#17273) --- source/_integrations/litejet.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/litejet.markdown b/source/_integrations/litejet.markdown index 440fad44003..655429a0df3 100644 --- a/source/_integrations/litejet.markdown +++ b/source/_integrations/litejet.markdown @@ -1,6 +1,6 @@ --- title: LiteJet -description: Instructions on how to setup the LiteJet hub within Home Assistant. +description: Instructions on how to setup the LiteJet hub, Centralite Elegance or Centralite Jetstream within Home Assistant. ha_category: - Light - Scene @@ -16,7 +16,7 @@ ha_codeowners: - '@joncar' --- -LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. +LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. This integration also supports the Centralite Elegance and Centralite Jetstream. ## Prerequisites From ce3629dd3b7c4bdce2d48067b703b85c5f4ed7df Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 6 Apr 2021 11:21:09 +0200 Subject: [PATCH 15/20] Remove ADB add-on from Android TV docs, as it is deprecated (#17274) --- source/_integrations/androidtv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 513eac6bef8..466e7768d46 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -185,7 +185,7 @@ Prior to Home Assistant 0.101, this approach did not work well for newer devices The second option is to use an ADB server to connect to your Android TV and Fire TV devices. -For Home Assistant users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/master/README.md) add-on. Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. +Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. ## ADB Troubleshooting From 113e3bf5deed04ae7e5a6dcb4ada22ac35efb3d3 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 6 Apr 2021 11:21:55 +0200 Subject: [PATCH 16/20] Fix direct state attribute access in HomeMatic example (#17283) --- source/_integrations/homematic.markdown | 53 +++++++++++++------------ 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index fc6f34d6762..4b484675dfc 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -55,6 +55,8 @@ If you want to see if a specific device you have is supported, head over to the We automatically detect all devices we currently support and try to generate useful names. If you enable name-resolving, we try to fetch names from Metadata (Homegear), via JSON-RPC or the XML-API you may have installed on your CCU. Since this may fail this is disabled by default. You can manually rename the created entities by using Home Assistant's [Customizing](/docs/configuration/customizing-devices/) feature. The Homematic integration is also supported by the [Entity Registry](https://developers.home-assistant.io/docs/en/entity_registry_index.html), which allows you to change the friendly name and the entity ID directly in the Home Assistant UI. +## Configuration + To set up the component, add the following information to your `configuration.yaml` file: ```yaml @@ -159,38 +161,38 @@ password: type: string {% endconfiguration %} -#### Example configuration with multiple protocols and some other options set: +### Example configuration with multiple protocols and some other options set ```yaml homematic: interfaces: rf: host: 127.0.0.1 - resolvenames: json - username: Admin - password: secret + resolvenames: "json" + username: "Admin" + password: "secret" wired: host: 127.0.0.1 port: 2000 - resolvenames: json - username: Admin - password: secret + resolvenames: "json" + username: "Admin" + password: "secret" ip: host: 127.0.0.1 port: 2010 groups: host: 127.0.0.1 port: 9292 - resolvenames: json - username: Admin - password: secret + resolvenames: "json" + username: "Admin" + password: "secret" path: /groups hosts: ccu2: host: 127.0.0.1 port: 2001 - username: Admin - password: secret + username: "Admin" + password: "secret" ``` @@ -214,7 +216,6 @@ This does *not* affect the entities in Home Assistant. They all use their own co Most devices have, besides their state, additional attributes like their battery state or valve position. These can be accessed using templates in automations, or even as their own entities using the [template sensor](/integrations/template) component. Here's an example of a template sensor that exposes the valve position of a thermostat. - {% raw %} ```yaml @@ -239,8 +240,8 @@ The values of variables are polled from the CCU/Homegear in an interval of 30 se When Homematic devices change their state or some other internal value, the CCU/Homegear sends event messages to Home Assistant. These events are automatically parsed and the entities in Home Assistant are updated. However, you can also manually use these events to trigger automations. Two event-types are available: -- **homematic.keypress**: For devices with buttons, see information below -- **homematic.impulse**: For impulse sensors +- `homematic.keypress`: For devices with buttons, see information below +- `homematic.impulse`: For impulse sensors #### Devices with buttons @@ -256,7 +257,7 @@ automation: platform: event event_type: homematic.keypress event_data: - name: Kitchen Switch + name: "Kitchen Switch" channel: 1 param: PRESS_SHORT action: @@ -309,7 +310,7 @@ Simulate a button being pressed: action: service: homematic.virtualkey data: - address: BidCoS-RF + address: "BidCoS-RF" channel: 1 param: PRESS_LONG ``` @@ -321,7 +322,7 @@ Open KeyMatic: action: service: homematic.virtualkey data: - address: LEQ1234567 + address: "LEQ1234567" channel: 1 param: OPEN ``` @@ -335,7 +336,7 @@ action: target: entity_id: homematic.ccu2 data: - name: Variablename + name: "Variablename" value: true ``` @@ -351,7 +352,7 @@ Manually turn on a switch actor: action: service: homematic.set_device_value data: - address: LEQ1234567 + address: "LEQ1234567" channel: 1 param: STATE value: true @@ -364,7 +365,7 @@ Manually set temperature on thermostat: action: service: homematic.set_device_value data: - address: LEQ1234567 + address: "LEQ1234567" channel: 4 param: SET_TEMPERATURE value: 23.0 @@ -377,7 +378,7 @@ Manually set the active profile on thermostat: action: service: homematic.set_device_value data: - address: LEQ1234567 + address: "LEQ1234567" channel: 1 param: ACTIVE_PROFILE value: 1 @@ -392,7 +393,7 @@ action: service: homematic.put_paramset data: interface: wireless - address: LEQ1234567 + address: "LEQ1234567" paramset_key: MASTER paramset: WEEK_PROGRAM_POINTER: 1 @@ -406,7 +407,7 @@ action: service: homematic.put_paramset data: interface: wireless - address: LEQ1234567 + address: "LEQ1234567" paramset_key: MASTER rx_mode: WAKEUP paramset: @@ -457,7 +458,7 @@ binary_sensor: - sensor.office_voltage - sensor.time value_template: >- - {{as_timestamp(now()) - as_timestamp(states.sensor.office_voltage.last_changed) < 600}} + {{ as_timestamp(now()) - as_timestamp(state_attr('sensor.office_voltage', 'last_changed')) < 600 }} automation: - alias: "Homematic Reconnect" @@ -528,7 +529,7 @@ To use this notification platform in your installation, add the following to you notify: - name: my_hm platform: homematic - address: NEQXXXXXXX + address: "NEQXXXXXXX" channel: 2 param: "SUBMIT" value: "1,1,108000,8" From 57cb8800cb903deacf60069bbf296cece3c8dc35 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Apr 2021 12:49:25 +0200 Subject: [PATCH 17/20] Bump rexml from 3.2.4 to 3.2.5 (#17299) Bumps [rexml](https://github.com/ruby/rexml) from 3.2.4 to 3.2.5. - [Release notes](https://github.com/ruby/rexml/releases) - [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md) - [Commits](https://github.com/ruby/rexml/compare/v3.2.4...v3.2.5) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5513812557f..0c2184f3df8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -90,7 +90,7 @@ GEM rb-fsevent (0.10.4) rb-inotify (0.10.1) ffi (~> 1.0) - rexml (3.2.4) + rexml (3.2.5) rouge (3.26.0) ruby-enum (0.9.0) i18n From 489601a6140cec6fa60087caa5aea68ffe935410 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Apr 2021 12:50:32 +0200 Subject: [PATCH 18/20] Bump ruby/setup-ruby from v1.67.0 to v1.68.0 (#17300) Bumps [ruby/setup-ruby](https://github.com/ruby/setup-ruby) from v1.67.0 to v1.68.0. - [Release notes](https://github.com/ruby/setup-ruby/releases) - [Commits](https://github.com/ruby/setup-ruby/compare/v1.67.0...d320226fe2baa504b69a131c3d1efd24c5a142fe) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 07b1a98bbef..34d7762a58f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,7 +57,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v2 - name: Setting up Ruby 2.6 - uses: ruby/setup-ruby@v1.67.0 + uses: ruby/setup-ruby@v1.68.0 with: ruby-version: 2.6 - name: Setup Ruby Gems cache From 7db7a9adcd485446e1dd689904ea3898c0d3e048 Mon Sep 17 00:00:00 2001 From: rickylee64 Date: Tue, 6 Apr 2021 21:13:37 +1000 Subject: [PATCH 19/20] Update pvoutput.markdown (#17295) Co-authored-by: Franck Nijhof --- source/_integrations/pvoutput.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index 9e0cb15748c..42c805dd358 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -60,7 +60,7 @@ sensor: - platform: template sensors: power_consumption: - value_template: "{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ state_attr("sensor.pvoutput", "power_consumption") }}{% endif %}" + value_template: "{% if is_state_attr('sensor.pvoutput', 'power_consumption', 'NaN') %}0{% else %}{{ state_attr('sensor.pvoutput', 'power_consumption') }}{% endif %}" friendly_name: "Using" unit_of_measurement: "Watt" energy_consumption: From 3dcbbc05ee021258c48feca1c8a3d217ccb09726 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 6 Apr 2021 18:35:28 +0200 Subject: [PATCH 20/20] Apparmor more-info (#17303) Co-authored-by: Franck Nijhof --- source/more-info/unsupported/apparmor.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 source/more-info/unsupported/apparmor.markdown diff --git a/source/more-info/unsupported/apparmor.markdown b/source/more-info/unsupported/apparmor.markdown new file mode 100644 index 00000000000..bc74fae2120 --- /dev/null +++ b/source/more-info/unsupported/apparmor.markdown @@ -0,0 +1,16 @@ +--- +title: "AppArmor issues" +description: "More information on why missing AppArmor marks the installation as unsupported." +--- + +## The issue + +AppArmor is how the Supervisor does handling all the security around add-ons, +without this, the Supervisor is missing important security mechanics to protect your system and data within it. + +## The solution + +If the AppArmor is not enabled on your host, set this to the Linux boot cmd: `apparmor=1 security=apparmor` and reboot your operating system. + +As a last resort, you might need to reinstall the host running the Supervisor +with one of the supported operating systems, [see instructions here](/more-info/unsupported/os).