From e6021f6b95cd6f0142a445dcfbafa687eb6eb801 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Sun, 14 Mar 2021 15:21:12 +0100 Subject: [PATCH 01/23] Add missing link to update (#16994) --- source/_posts/2021-03-03-release-20213.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_posts/2021-03-03-release-20213.markdown b/source/_posts/2021-03-03-release-20213.markdown index bf14a76182f6..bb459381e77d 100644 --- a/source/_posts/2021-03-03-release-20213.markdown +++ b/source/_posts/2021-03-03-release-20213.markdown @@ -42,6 +42,7 @@ My oh my, enjoy this release! - [Release 2021.3.1 - March 5](#release-202131---march-5) - [Release 2021.3.2 - March 5](#release-202132---march-5) - [Release 2021.3.3 - March 8](#release-202133---march-8) +- [Release 2021.3.4 - March 12](#release-202134---march-12) - [If you need help...](#if-you-need-help) - [Breaking Changes](#breaking-changes) - [Farewell to the following](#farewell-to-the-following) From ede860d9be8fad4a23d3b50915925f63b597629b Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Mon, 15 Mar 2021 13:05:00 +0100 Subject: [PATCH 02/23] Some fixes for service-call docu (#17006) --- source/_docs/scripts/service-calls.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index ed72800b79d7..b61170a4cfd1 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -3,7 +3,7 @@ title: "Service Calls" description: "Instructions on how to call services in Home Assistant." --- -Various integrations allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo. +Various integrations allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script, a Lovelace dashboard or via voice command devices such as Amazon Echo. The configuration options to call a configuration are the same between all integrations and are described on this page. @@ -27,10 +27,10 @@ entity_id: group.living_room Instead of targeting an entity, you can also target an area or device. Or a combination of these. This is done with the `target` key. -A `target` is a map thats contains atleast one of the following: `area_id`, `device_id`, `entity_id`. +A `target` is a map that contains at least one of the following: `area_id`, `device_id`, `entity_id`. Each of these can be a list. -When the service is called, the area's and devices will be resolved to entities. +When the service is called, the areas and devices will be resolved to entities. ```yaml service: homeassistant.turn_on @@ -46,7 +46,7 @@ target: ### Passing data to the service call -You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness. +You can also specify other parameters beside the entity to target. For example, the `light.turn_on` service allows specifying the brightness. ```yaml service: light.turn_on @@ -111,8 +111,8 @@ data: There are four `homeassistant` services that aren't tied to any single domain, these are: -- `homeassistant.turn_on` - Turns on an entity (that supports being turned on), for example an `automation`, `switch`, etc -- `homeassistant.turn_off` - Turns off an entity (that supports being turned off), for example an `automation`, `switch`, etc +- `homeassistant.turn_on` - Turns on an entity (that supports being turned on), for example an `automation`, `switch`, etc. +- `homeassistant.turn_off` - Turns off an entity (that supports being turned off), for example an `automation`, `switch`, etc. - `homeassistant.toggle` - Turns off an entity that is on, or turns on an entity that is off (that supports being turned on and off) - `homeassistant.update_entity` - Request the update of an entity, rather than waiting for the next scheduled update, for example [Google travel time] sensor, a [template sensor], or a [light] From 57acb255da6524818a9fb4a068926f99b5a450dd Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Mar 2021 13:58:40 +0100 Subject: [PATCH 03/23] Add icon reference to Lovelace documentation (#16865) --- source/lovelace/badges.markdown | 4 ++-- source/lovelace/dashboards-and-views.markdown | 4 ++-- source/lovelace/header-footer.markdown | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/lovelace/badges.markdown b/source/lovelace/badges.markdown index 3934736eee19..a5c40f10b0a8 100644 --- a/source/lovelace/badges.markdown +++ b/source/lovelace/badges.markdown @@ -30,7 +30,7 @@ name: default: Name of entity icon: required: false - description: Overwrites icon or entity picture. + description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string default: Entity domain icon image: @@ -87,7 +87,7 @@ name: type: string icon: required: false - description: Overwrites icon or entity picture. + description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string image: required: false diff --git a/source/lovelace/dashboards-and-views.markdown b/source/lovelace/dashboards-and-views.markdown index 1f0050b8d14a..569fb8dd9af7 100644 --- a/source/lovelace/dashboards-and-views.markdown +++ b/source/lovelace/dashboards-and-views.markdown @@ -110,7 +110,7 @@ dashboards: type: string icon: required: false - description: The icon to show in the sidebar. + description: The icon to show in the sidebar. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string show_in_sidebar: required: false @@ -227,7 +227,7 @@ views: default: view index icon: required: false - description: Icon-name from Material Design Icons. + description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string panel: required: false diff --git a/source/lovelace/header-footer.markdown b/source/lovelace/header-footer.markdown index e44835cab336..5839927d531f 100644 --- a/source/lovelace/header-footer.markdown +++ b/source/lovelace/header-footer.markdown @@ -69,7 +69,7 @@ entities: type: string icon: required: false - description: Override the entity icon. + description: Override the entity icon. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string image: required: false From 63d0f4a03495ade9c1f698e62756ffa9eb46ce6d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Mar 2021 13:58:57 +0100 Subject: [PATCH 04/23] Add unique ID to weather template (#16869) --- source/_integrations/weather.template.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/weather.template.markdown b/source/_integrations/weather.template.markdown index c2e857c9cae6..b3dcb5fe029f 100644 --- a/source/_integrations/weather.template.markdown +++ b/source/_integrations/weather.template.markdown @@ -40,6 +40,10 @@ name: description: Name to use in the frontend. required: true type: string +unique_id: + description: An ID that uniquely identifies this weather entity. Set this to a unique value to allow customization through the UI. + required: false + type: string condition_template: description: The current weather condition. required: true From 9cfdae1752cf33a3e0e28d66cc7ca3742d60f69d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Mar 2021 13:59:16 +0100 Subject: [PATCH 05/23] Add note about tested hardware in NAD documentation (#16870) --- source/_integrations/nad.markdown | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/source/_integrations/nad.markdown b/source/_integrations/nad.markdown index 324c3472b84d..5536edde2a06 100644 --- a/source/_integrations/nad.markdown +++ b/source/_integrations/nad.markdown @@ -10,6 +10,11 @@ ha_domain: nad The `nad` platform allows you to control a [NAD receiver](https://nadelectronics.com/) through RS232, TCP and Telnet from Home Assistant. +Please note that the RS232 interface is only tested with the NAD T748v2, but is should work with more NAD receivers. +The Telnet interface is only tested with the NAD T787. + +## Configuration + To add an NAD receiver to your installation, add the following to your `configuration.yaml` file: ```yaml @@ -18,12 +23,13 @@ media_player: - platform: nad serial_port: /dev/ttyUSB0 ``` + ```yaml # Example configuration.yaml entry for TCP configuration media_player: - platform: nad type: TCP - host: IP_ADDRESS + host: "IP_ADDRESS" ``` {% configuration %} @@ -89,7 +95,7 @@ A full configuration example could look like this: media_player: - platform: nad serial_port: /dev/ttyUSB0 - name: NAD Receiver + name: "NAD Receiver" min_volume: -60 max_volume: -20 sources: From a91074272407f3974a996d6a7b352ab4d197806d Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Mar 2021 14:19:38 +0100 Subject: [PATCH 06/23] Lowercase MDI icons URLs (#17012) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Joakim Sørensen --- source/_docs/configuration/customizing-devices.markdown | 2 +- source/lovelace/badges.markdown | 4 ++-- source/lovelace/dashboards-and-views.markdown | 4 ++-- source/lovelace/header-footer.markdown | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 6b6f5b57917c..29d66e54b920 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -39,7 +39,7 @@ entity_picture: required: false type: string icon: - description: "Any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com) ([Cheatsheet](https://cdn.materialdesignicons.com/5.3.45/)). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release. You can check when an icon was added to MaterialDesignIcons.com at [MDI History](https://materialdesignicons.com/history)." + description: "Any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix name with `mdi:`, ie `mdi:home`. Note: Newer icons may not yet be available in the current Home Assistant release. You can check when an icon was added to MaterialDesignIcons.com at [MDI History](https://materialdesignicons.com/history)." required: false type: string assumed_state: diff --git a/source/lovelace/badges.markdown b/source/lovelace/badges.markdown index a5c40f10b0a8..4f9512c2fca6 100644 --- a/source/lovelace/badges.markdown +++ b/source/lovelace/badges.markdown @@ -30,7 +30,7 @@ name: default: Name of entity icon: required: false - description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string default: Entity domain icon image: @@ -87,7 +87,7 @@ name: type: string icon: required: false - description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Overwrites icon or entity picture. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string image: required: false diff --git a/source/lovelace/dashboards-and-views.markdown b/source/lovelace/dashboards-and-views.markdown index 569fb8dd9af7..4f5ea17cdf90 100644 --- a/source/lovelace/dashboards-and-views.markdown +++ b/source/lovelace/dashboards-and-views.markdown @@ -110,7 +110,7 @@ dashboards: type: string icon: required: false - description: The icon to show in the sidebar. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: The icon to show in the sidebar. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string show_in_sidebar: required: false @@ -227,7 +227,7 @@ views: default: view index icon: required: false - description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Icon-name from Material Design Icons. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string panel: required: false diff --git a/source/lovelace/header-footer.markdown b/source/lovelace/header-footer.markdown index 5839927d531f..0284b3318208 100644 --- a/source/lovelace/header-footer.markdown +++ b/source/lovelace/header-footer.markdown @@ -69,7 +69,7 @@ entities: type: string icon: required: false - description: Override the entity icon. You can use any icon from [MaterialDesignIcons.com](http://MaterialDesignIcons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. + description: Override the entity icon. You can use any icon from [MaterialDesignIcons.com](http://materialdesignicons.com). Prefix the icon name with `mdi:`, ie `mdi:home`. type: string image: required: false From 6d01d7260fd9f33eab714f72783ed7403098634d Mon Sep 17 00:00:00 2001 From: Dima Boger Date: Mon, 15 Mar 2021 16:27:01 +0300 Subject: [PATCH 07/23] [Xiaomi Miio] Add example for vacuum segment clean with repetition (#16776) Co-authored-by: Franck Nijhof --- source/_integrations/xiaomi_miio.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 891be1a1854f..93bcf1ef1f10 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -1371,6 +1371,22 @@ automation: segments: 1 ``` +The original app for Xiaomi vacuum has a nice feature of room cleaning with repetition, you can achieve the same result with repeating segments: + +```yaml +automation: + - alias: "Vacuum kitchen" + trigger: + - event: start + platform: homeassistant + action: + - service: xiaomi_miio.vacuum_clean_segment + target: + entity_id: vacuum.xiaomi_vacuum + data: + segments: [1, 1] +``` + ### Attributes In addition to [all of the attributes provided by the `vacuum` component](/integrations/vacuum/#attributes), From 040aed613a781d930554c9d5533a40af06b11a24 Mon Sep 17 00:00:00 2001 From: cnico Date: Mon, 15 Mar 2021 14:39:13 +0100 Subject: [PATCH 08/23] generic camera : example of secured access (#16991) Co-authored-by: Franck Nijhof --- source/_integrations/generic.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_integrations/generic.markdown b/source/_integrations/generic.markdown index f545c310732d..8f1fd8957ef0 100644 --- a/source/_integrations/generic.markdown +++ b/source/_integrations/generic.markdown @@ -139,3 +139,19 @@ camera: still_image_url: http://194.218.96.92/jpg/image.jpg stream_source: rtsp://194.218.96.92:554 ``` + +### Secured access to the camera + +To access a camera that requires secured access for still image or live stream (an HIK in my case). + +```yaml +camera: + - platform: generic + still_image_url: "http://192.168.1.100/ISAPI/Streaming/Channels/101/picture" + stream_source: "rtsp://USERNAME:PASSWORD@192.168.1.100:554/Streaming/Channels/102" + name: "My Camera" + verify_ssl: false + username: "USERNAME" + password: "PASSWORD" + authentication: digest +``` From 259fb6f8959f9b9b1c52347fcb0848d61706d994 Mon Sep 17 00:00:00 2001 From: Juri Calleri Date: Mon, 15 Mar 2021 15:34:29 +0100 Subject: [PATCH 09/23] added another choose example (#16972) Co-authored-by: Franck Nijhof --- source/_docs/scripts.markdown | 58 +++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index a04eeb290dc5..7c5813f1dfb4 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -610,6 +610,64 @@ automation: {% endraw %} + +More `choose` can be used together. This is the case of an IF-IF. + +The following example shows how a single automation can control entities that aren't related to each other but have in common the same trigger. + +When the sun goes below the horizon, the `porch` and `garden` lights must turn on. If someone is watching the TV in the living room, there is a high chance that someone is in that room, therefore the living room lights have to turn on too. The same concept applies to the `studio` room. + +{% raw %} + +```yaml +# Example with "if" and "if" +automation: + - alias: "Turn lights on when the sun gets dim and if some room is occupied" + trigger: + - platform: numeric_state + entity_id: sun.sun + attribute: elevation + below: 4 + action: + # This must always apply + - service: light.turn_on + data: + brightness: 255 + color_temp: 366 + target: + entity_id: + - light.porch + - light.garden + # IF a entity is ON + - choose: + - conditions: + - condition: state + entity_id: binary_sensor.livingroom_tv + state: "on" + sequence: + - service: light.turn_on + data: + brightness: 255 + color_temp: 366 + target: + entity_id: light.livingroom + # IF another entity not related to the previous, is ON + - choose: + - conditions: + - condition: state + entity_id: binary_sensor.studio_pc + state: "on" + sequence: + - service: light.turn_on + data: + brightness: 255 + color_temp: 366 + target: + entity_id: light.studio +``` + +{% endraw %} + [Script component]: /integrations/script/ [automations]: /getting-started/automation-action/ [Alexa/Amazon Echo]: /integrations/alexa/ From fff7349f97785b981b390e9ae521c7d5024b69cd Mon Sep 17 00:00:00 2001 From: Kevin Eifinger Date: Mon, 15 Mar 2021 15:42:06 +0100 Subject: [PATCH 10/23] Remove additional ")" (#16980) --- source/_integrations/xiaomi_miio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 93bcf1ef1f10..3174c9f0ca3c 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -34,7 +34,7 @@ ha_platforms: The `xiaomi_miio` integration supports the following devices: - [Xiaomi Gateway](#xiaomi-gateway) -- [Xiaomi device tracker (Xiaomi Mi WiFi Repeater 2)](#xiaomi-device-tracker-xiaomi-mi-wifi-repeater-2)) +- [Xiaomi device tracker (Xiaomi Mi WiFi Repeater 2)](#xiaomi-device-tracker-xiaomi-mi-wifi-repeater-2) - [Xiaomi Air Purifier and Humidifier](#xiaomi-air-purifier-and-humidifier) - [Xiaomi Air Quality Index Monitor](#xiaomi-air-quality-index-monitor) - [Xiaomi Mi Air Quality Monitor](#xiaomi-mi-air-quality-monitor) From 9dad5841976ea1dbbbf58818e34f4b40c82b3c82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Mar 2021 15:47:36 +0100 Subject: [PATCH 11/23] Bump nokogiri from 1.11.1 to 1.11.2 (#16964) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.11.1 to 1.11.2. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.11.1...v1.11.2) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index ff95f49b6f22..9da9617fe7d1 100644 --- a/Gemfile +++ b/Gemfile @@ -21,7 +21,7 @@ group :jekyll_plugins do end gem 'sinatra', '2.1.0' -gem 'nokogiri', '1.11.1' +gem 'nokogiri', '1.11.2' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library diff --git a/Gemfile.lock b/Gemfile.lock index bc95e45e3d30..c98ef7a0bb27 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -74,10 +74,10 @@ GEM multi_json (1.15.0) mustermann (1.1.1) ruby2_keywords (~> 0.0.1) - nokogiri (1.11.1) + nokogiri (1.11.2) mini_portile2 (~> 2.5.0) racc (~> 1.4) - nokogiri (1.11.1-x64-mingw32) + nokogiri (1.11.2-x64-mingw32) racc (~> 1.4) pathutil (0.16.2) forwardable-extended (~> 2.6) @@ -130,7 +130,7 @@ DEPENDENCIES jekyll-sitemap (= 1.4.0) jekyll-time-to-read (= 0.1.2) jekyll-toc (= 0.17.0) - nokogiri (= 1.11.1) + nokogiri (= 1.11.2) rake (= 13.0.3) sass-globbing (= 1.1.5) sassc (= 2.1.0) From d7295df4676996f6f97700d8fafcf6223eaae353 Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Mon, 15 Mar 2021 15:48:34 +0100 Subject: [PATCH 12/23] Tweaks to the blueprint selectors (#17007) --- source/_docs/blueprint/selectors.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index 28b6fee89bf8..900abfe07de5 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -10,7 +10,7 @@ Some selectors can, for example, show a toggle button to turn something on or off, while another select can filter a list of devices to show only devices that have motion-sensing capabilities. -Having the good selectors set on your blueprint automations inputs makes a +Having good selectors set on your blueprint automation inputs makes a blueprint easier to use from the UI. The following selectors are currently available: @@ -53,7 +53,7 @@ The add-on selector allows the user to input an add-on slug. On the user interface, it will list all installed add-ons and use the slug of the selected add-on. -![Screenshot of an Add-on selector](/images/blueprints/selector-addon.png) +![Screenshot of an add-on selector](/images/blueprints/selector-addon.png) This selector does not have any other options; therefore, it only has its key. @@ -71,7 +71,7 @@ and entities that are assigned to those areas. For example, the areas list could be limited to areas with entities provided by the [ZHA](/integrations/zha) integration. -In its most basic form, it doesn't require any options, which will show +In its most basic form, this selector doesn't require any options, which will show all areas. ```yaml @@ -183,9 +183,9 @@ A device selector can filter the list of devices, based on things like the manufacturer or model of the device, the entities the device provides or based on the domain that provided the device. -![Screenshot of an device selector](/images/blueprints/selector-device.png) +![Screenshot of a device selector](/images/blueprints/selector-device.png) -In its most basic form, it doesn't require any options, which will show +In its most basic form, this selector doesn't require any options, which will show all devices. ```yaml @@ -270,7 +270,7 @@ entity. ![Screenshot of an entity selector](/images/blueprints/selector-entity.png) -In its most basic form, it doesn't require any options, which will show +In its most basic form, this selector doesn't require any options, which will show all entities. ```yaml @@ -329,7 +329,7 @@ On the user interface, the input can either be in a slider or number mode. Both modes limit the user input by a minimal and maximum value, and can have a unit of measurement to go with it. -In its most basic form, it requires a minimal and maximum value: +In its most basic form, this selector requires a minimal and maximum value: ```yaml number: @@ -425,7 +425,7 @@ options: ## Target selector -The target selector is a rather special selector, allowing the user to selector +The target selector is a rather special selector, allowing the user to select targeted entities, devices or areas for service calls. The value of the input will contain a special target format, that is accepted by service calls. @@ -436,7 +436,7 @@ those properties in those areas. ![Screenshot of a target selector](/images/blueprints/selector-target.png) -Its most basic form, doesn't require any options, which will allow the +In its most basic form, this selector does not require any options, which will allow the user to target any entity, device or area available in the system. ```yaml From 59853a98c4b47a45e8dce6d50227a9265998d73f Mon Sep 17 00:00:00 2001 From: ejars Date: Mon, 15 Mar 2021 15:52:32 +0100 Subject: [PATCH 13/23] corrected parameter in Service `opentherm_gw.set_hot_water_setpoint` (#16990) second parameter is temperature instead of dhw_override --- source/_integrations/opentherm_gw.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index e83c31cbd512..cff008c9358c 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -149,7 +149,7 @@ Set the domestic hot water setpoint on the OpenTherm Gateway. Not all boilers su | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `gateway_id` | no | The `gateway_id` as specified during configuration. -| `dhw_override` | no | The domestic hot water setpoint to set on the gateway. Values between 0 and 90 are accepted, but not all boilers support this range. Check the values of the `slave_dhw_min_setp` and `slave_dhw_max_setp` sensors to see the supported range on your boiler. +| `temperature` | no | The domestic hot water setpoint to set on the gateway. Values between 0 and 90 are accepted, but not all boilers support this range. Check the values of the `slave_dhw_min_setp` and `slave_dhw_max_setp` sensors to see the supported range on your boiler. ### Service `opentherm_gw.set_gpio_mode` From f81f8985cba68c5c85add727b1711efeb1b9b804 Mon Sep 17 00:00:00 2001 From: Matheson Steplock Date: Mon, 15 Mar 2021 10:59:39 -0400 Subject: [PATCH 14/23] added missing instructions (#16933) --- source/_includes/installation/operating_system.md | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index 1b0b235406e1..043b98471110 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -100,6 +100,7 @@ _Select and copy the URL or use the "copy" button that appear when you hover it. 1. Put the SD card in your card reader. 2. Open balenaEtcher, select the Home Assistant image and flash it to the SD card. 3. Unmount the SD card and remove it from your card reader. +4. Once completed you will be able to reach Home Assistant on homeassistant.local:8123. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at homeassistant:8123 or `http://X.X.X.X:8123` (replace X.X.X.X with your {{site.installation.types[page.installation_type].board}}’s IP address). {% else %} ### Create the Virtual Machine From db18cb2a3aeeb18f127fe084ea1c80cd77b67b3f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Mar 2021 21:46:48 +0100 Subject: [PATCH 15/23] Add report model to Yeelight documentation (#17015) --- source/_integrations/yeelight.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index a38a08f01dc1..dc8072535748 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -173,6 +173,7 @@ This integration is tested to work with the following models. If you have a diff | `color1` | YLDP03YL | LED Bulb (Color) - E26 | | `color2` | YLDP06YL | LED Bulb (Color) - 2nd generation | | `color4` | YLDP13YL | LED Bulb 1S (Color) | +| `color6` | YLDP13AYL | LED Bulb 1S (Color) | | `strip1` | YLDD01YL | Lightstrip (Color) | | `strip1` | YLDD02YL | Lightstrip (Color) | | ? | YLDD04YL | Lightstrip (Color) | From 2a84f1e1ff0e71331fc3c022e84ca2073e48f487 Mon Sep 17 00:00:00 2001 From: Marty Cochrane <56393197+martycochrane@users.noreply.github.com> Date: Tue, 16 Mar 2021 00:47:13 +0100 Subject: [PATCH 16/23] Update verisure documentation for 2fa bug (#17013) * Update verisure documentation for 2fa bug * fixed textlint suggestions * Full stops on list items * Changed title & Removed data * Changed title and location * Added details about why to create a new user * reword steps * added recommended note style * Change login to be an action * typo * changed login to log in as it's an action * Changed mypages to My Pages * Small Tweaks Co-authored-by: Franck Nijhof --- source/_integrations/verisure.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index 97a90b73d591..0d20e8bcae40 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -104,6 +104,19 @@ giid: type: string {% endconfiguration %} +## 2 Factor Authentication Prerequisite + +Verisure added 2FA rules to Verisure My Pages that aren't supported through their third-party API integration. If you have 2FA enabled, which is forced by default, you might not be able to use this integration. Here is the suggested way to deactivate 2FA (if it's allowed in your region). + +You can deactivate 2FA for your admin account and use that for Home Assistant but this isn't recommended. The steps below sets up a specific Home Assistant user and gives it restricted access. + +1. Log in to Verisure My Pages as your admin user and create a new admin user for Home Assistant. +2. Log in as your newly created Home Assistant user, you'll be prompted to set up 2FA, do that and then log out. This will make sure the options below are available. +3. Log in as the Home Assistant user, browse to Account and subscription -> Account -> Login Credentials -> Disable 2FA.
This will only be available if the user is admin and has logged in once with 2FA, logged out and in again.
+4. Log in as your administrator again and change the Home Assistant user to a restricted user. +5. Change Home Assistant Verisure config to the new user credentials in Home Assistant. +6. Restart Home Assistant. + ## Alarm Control Panel The Verisure alarm control panel platform allows you to control your [Verisure](https://www.verisure.com/) Alarms. From 540557d635717917df8c4f4dc7a5119551ac638c Mon Sep 17 00:00:00 2001 From: Ashton Lafferty Date: Tue, 16 Mar 2021 01:18:30 -0600 Subject: [PATCH 17/23] Small fix (#17021) --- source/_docs/locked_out.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/locked_out.md b/source/_docs/locked_out.md index e7be0bfe88ba..d2fba55b095f 100644 --- a/source/_docs/locked_out.md +++ b/source/_docs/locked_out.md @@ -12,7 +12,7 @@ or need to recover your data. If you are still logged in to the web interface with your user, then you are in luck. Add a new user as an administrator and give the new user a password you can remember. Then log out, and log in with this new user. You may then reset your password via this new administrator account (and then delete this new account), or you can delete your old user account. Either way, your configuration will remain, and you don't have to do a new onboarding process. -If you’ve forgotten your username, then deleting the files mentioned above will be necessary to start a new onboarding process. +If you’ve forgotten your username, then deleting the files mentioned further below will be necessary to start a new onboarding process. #### To reset a user's password, via console If you know the username, but not the password and you can access the [Home Assistant console](https://www.home-assistant.io/hassio/commandline/) and use the command below: From 52a872b5a4ad36e03f5378968e21950e0ff0e70a Mon Sep 17 00:00:00 2001 From: Ashton Lafferty Date: Tue, 16 Mar 2021 05:10:54 -0600 Subject: [PATCH 18/23] Update output of help (#17023) --- source/_includes/common-tasks/commandline.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source/_includes/common-tasks/commandline.md b/source/_includes/common-tasks/commandline.md index bb03546d2bc3..25e8a28d22e7 100644 --- a/source/_includes/common-tasks/commandline.md +++ b/source/_includes/common-tasks/commandline.md @@ -67,21 +67,30 @@ Usage: Available Commands: addons Install, update, remove and configure Home Assistant add-ons + audio Audio device handling. authentication Authentication for Home Assistant users. + banner Prints the CLI Home Assistant banner along with some useful information + cli Get information, update or configure the Home Assistant cli backend core Provides control of the Home Assistant Core dns Get information, update or configure the Home Assistant DNS server + docker Docker backend specific for info and OCI configuration hardware Provides hardware information about your system help Help about any command host Control the host/system that Home Assistant is running on info Provides a general Home Assistant information overview + jobs Get information and manage running jobs + multicast Get information, update or configure the Home Assistant Multicast + network Network specific for updating, info and configuration imports + observer Get information, update or configure the Home Assistant observer os Operating System specific for updating, info and configuration imports + resolution Resolution center of Supervisor, show issues and suggest solutions snapshots Create, restore and remove snapshot backups supervisor Monitor, control and configure the Home Assistant Supervisor Flags: --api-token string Home Assistant Supervisor API token --config string Optional config file (default is $HOME/.homeassistant.yaml) - --endpoint string Endpoint for Home Assistant Supervisor ( default is 'supervisor' ) + --endpoint string Endpoint for Home Assistant Supervisor (default is 'supervisor') -h, --help help for ha --log-level string Log level (defaults to Warn) --no-progress Disable the progress spinner From 78febbe131ef134f8823e99b013e71e3e21e46a3 Mon Sep 17 00:00:00 2001 From: David Beitey Date: Tue, 16 Mar 2021 15:48:59 +0000 Subject: [PATCH 19/23] Wrap service call docs template example value in quotes (#17025) --- source/_docs/scripts/service-calls.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index b61170a4cfd1..896126b7aa4e 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -103,7 +103,7 @@ target: thermostat.downstairs {% endif %} data: - temperature: {{ 22 - distance(states.device_tracker.paulus) }} + temperature: "{{ 22 - distance(states.device_tracker.paulus) }}" ``` {% endraw %} From f464e9f18836258fd838784e457bd5f05849f20e Mon Sep 17 00:00:00 2001 From: anugs <36812514+anugs@users.noreply.github.com> Date: Tue, 16 Mar 2021 22:30:11 +0530 Subject: [PATCH 20/23] Update automation.markdown (#17027) --- source/_docs/automation.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_docs/automation.markdown b/source/_docs/automation.markdown index 85a9b72a15ef..1d1df61bd3cb 100644 --- a/source/_docs/automation.markdown +++ b/source/_docs/automation.markdown @@ -3,14 +3,14 @@ title: "Automating Home Assistant" description: "Steps to help you get automation setup in Home Assistant." --- -Home Assistant contains information about all your devices and services. This information is not only available for the user in the dashboard, it can also be used to trigger automations. And that's fun! +Home Assistant contains information about all your devices and services. This information is available for the user in the dashboard and it can be used to trigger automations. And that's fun! Automations in Home Assistant allow you to automatically respond to things that happen. You can turn the lights on at sunset or pause the music when you receive a call. -If you are just starting out, we strongly suggest you start with blueprint automations. These are ready-made automations by the community that you only need to configure. +If you are just starting out, we recommend that you start with blueprint automations. These are ready-made automations by the community that you only need to configure. ### [Learn about automation blueprints »](/docs/automation/using_blueprints/) -If you got the hang of blueprints and need more, it's time for the next step. But before we can start creating automations, you will need to learn about the automation basics. +If you have got the hang of blueprints and would like to explore more, it's time for the next step. But before you start creating automations, you will need to learn about the automation basics. ### [Learn about automation basics »](/docs/automation/basics/) From 172011f8275c5a25afad4a87b9b9de7fa90303d8 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 16 Mar 2021 21:35:45 +0100 Subject: [PATCH 21/23] Remove confusing line from History docs (#17032) --- source/_integrations/history.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index 21e45b807c99..c792f1414f95 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -164,15 +164,15 @@ The following characters can be used in entity globs: The history is stored in a SQLite database `home-assistant_v2.db` within your configuration directory unless the `recorder` integration is set up differently. - - events table is all events except `time_changed` that happened while recorder integration was running. - - states table contains all the `new_state` values of `state_changed` events. - - Inside the states table you have: - - `entity_id`: the entity_id of the entity - - `state`: the state of the entity - - `attributes`: JSON of the state attributes - - `last_changed`: timestamp last time the state has changed. A state_changed event can happen when just attributes change. - - `last_updated`: timestamp anything has changed (state, attributes) - - `created`: timestamp this entry was inserted into the database +- events table is all events except `time_changed` that happened while recorder integration was running. +- states table contains all the `new_state` values of `state_changed` events. +- Inside the states table you have: + - `entity_id`: the entity_id of the entity + - `state`: the state of the entity + - `attributes`: JSON of the state attributes + - `last_changed`: timestamp last time the state has changed. + - `last_updated`: timestamp anything has changed (state, attributes) + - `created`: timestamp this entry was inserted into the database When the `history` integration queries the states table it only selects states where the state has changed: `WHERE last_changed=last_updated` From 5b7b98ffb8e122b53e7e86775a711837cc7808cc Mon Sep 17 00:00:00 2001 From: Gerardo Castillo <32140109+altersis@users.noreply.github.com> Date: Thu, 18 Mar 2021 13:14:50 +0000 Subject: [PATCH 22/23] initial commit --- package-lock.json | 2 +- package.json | 2 +- source/_integrations/leviosa_shades.markdown | 124 +++++++++++++++++++ 3 files changed, 126 insertions(+), 2 deletions(-) create mode 100755 source/_integrations/leviosa_shades.markdown diff --git a/package-lock.json b/package-lock.json index 631b1bc547b0..2bb3d6a96411 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3064,4 +3064,4 @@ "dev": true } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 9024bd4959af..f6e9fe9fab1e 100644 --- a/package.json +++ b/package.json @@ -22,4 +22,4 @@ "textlint:all": "textlint source", "textlint": "textlint source/_cookbook source/_docs source/_faq source/_integrations source/_lovelace source/cloud source/getting-started source/hassio source/lovelace" } -} \ No newline at end of file +} diff --git a/source/_integrations/leviosa_shades.markdown b/source/_integrations/leviosa_shades.markdown new file mode 100755 index 000000000000..dc8a73c6ead3 --- /dev/null +++ b/source/_integrations/leviosa_shades.markdown @@ -0,0 +1,124 @@ +--- +title: Leviosa Motor Blinds Zone hub +description: Instructions on how to integrate the Leviosa Zone hub into Home Assistant. +ha_category: + - Cover +ha_iot_class: Local Push +ha_release: 2021.04 +ha_domain: leviosa_shades +ha_codeowners: + - '@altersis' +ha_config_flow: true +ha_platforms: + - cover +--- + +This integration allows you to control [Leviosa Zone hub](https://leviosashades.com/products/leviosa-zone) from [Leviosa Motor Shades](https://leviosashades.com/). + +## Configuration + +Adding Leviosa Zone hubs to your Home Assistant instance is done via the user +interface, by taking the following steps: + +- Browse to your Home Assistant instance. +- In the sidebar click on _**{% my config icon %}**_. +- From the configuration menu select: _**{% my integrations icon %}**_. + +{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf %} +{{ name }} can be auto-discovered by Home Assistant. If an instance was found, +it will be shown in the top of the list of integrations as _"Discovered"_. +If that is the case click on the _**Configure**_ button to start setting up +the discovered instance. + +If there wasn't any discovered automatically, don't worry! You can set up a +manual integration entry: +{% endif %} + +- In the bottom right, click on the + _**{% my config_flow_start icon domain=page.ha_domain %}**_ button. +- From the list, search and select _**"{{ name }}"**_. +- Follow the instruction on screen to complete the set up. + +After completing, the {{ name }} integration will be immediately available for use. + +## Retrieving the API Key + + +The Motion Blinds API uses a 16 character key that can be retrieved from the official "Motion Blinds" app for [IOS](https://apps.apple.com/us/app/leviosa-motor-shades/id1396752984) or [Android](https://play.google.com/store/apps/details?id=com.atlascoder.leviosa). + +Open the app, click the 3 dots in the top right corner, go to "settings", go to "Motion APP About", Please quickly tap this "Motion APP About" page 5 times, a popup will appear that gives you the key. + +Please note that "-" characters need to be included in the key when providing it to Home Assistant. The key needs to be similar to `12ab345c-d67e-8f` + +

+ + +

+ +## Top Down Bottom Up (TDBU) blinds + +TDBU blinds consist of two bars controlled by two motors designated by Top and Bottom with fabric in between. +The Top and Bottom can move independently of each other to cover different parts of the window. +Controlling the two bars can be done through three different entities that will be created: Top, Bottom and Combined. + +### 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). +- '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. +- '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. +- 'Width' is the percentage of the window covered by fabric (the space between the Top and Bottom bars). + +### Combined entity + +- 'Up/Open' will move both the Top and Bottom bars to the top of the window, effectively covering as little as possible of the window (Width will be 0 %). +- 'Down/Close' will move the Top bar to the top of the window and the Bottom bar to the bottom of the window, effectively covering the whole window (Width will be 100 %). +- 'Position' is the relative position of the center between the Bottom and Top bars in which the center can move, so basically, such that the area covered by the Bottom and Top bar can be moved without changing its size, such that the Top bar can go to the top of the window and the Bottom bar to the bottom of the window. +- 'Absolute position' is the position of the center between the Bottom and Top bars 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 width. +- 'Width' is the percentage of the window covered by fabric (the space between the Top and Bottom bars). + +### TDBU notes + +Because the relative position is used by default in Home Assistant, scenes will not work properly with TDBU blinds (depending on the current position of the Top en Bottom, a certain position (70) will correspond to a different position with respect to the window). + +Therefore it is recommended to use scripts or automations with the TDBU Combined entity that use the `motion_blinds.set_absolute_position` with specifying both the `absolute_position` and `width`. + +That will ensure the same absolute position with respect to the window is achieved without letting the Bottom or Top bar move to an absolute_position that is not allowed. + +When the `motion_blinds.set_absolute_position` service is used with values that would move the Bottom or Top bar to positions that will make them collide, nothing will happen. An error will be logged telling that that position is not allowed and the TDBU blind will not move. + +Therefore it is always safe to use any of the services in Home Assistant with the TDBU blinds. + +## Service `motion_blinds.set_absolute_position` + +For most blinds the `motion_blinds.set_absolute_position` does the same as `cover.set_cover_position` service. +However, for TDBU blinds it will set the absolute position relative to the window itself. +The `cover.set_cover_position` will set the scaled position relative to the space in which the TDBU blind is allowed to move. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------------------------------------- | +| `entity_id` | yes | Name of the motion blind cover entity to control. For example `cover.TopDownBottomUp-Bottom-0001` | +| `absolute_position` | no | Absolute position to move to. For example 70 | +| `width` | yes | Optionally specify the width that is covered, only for TDBU Combined entities. For example 30 | + +## Troubleshooting + +Home Assistant uses the following UDP multicast addresses/ports for communication with the gateway: + +- Motion hub receive UDP multicast `238.0.0.18:32100` +- Motion hub sending UDP multicast `238.0.0.18:32101` + +This communication needs to be allowed on your local network. If the blinds are unavailable and you see error messages like: + +`Timeout of 5.0 sec occurred on 5 attempts while waiting on multicast push from update request, communication between gateway and blind might be bad.` + +Please make sure the motion gateway and the device running Home Assistant are on the same VLAN and multicasting is enabled/allowed by your router. +If using separate VLANs, make sure the 238.0.0.18:32100 and 238.0.0.18:32101 ports are open for communication between those VLANs (not tested or confirmed to work). From 3860b4b762101a3845c1bb99b127aca5e57c0ee5 Mon Sep 17 00:00:00 2001 From: Gerardo Castillo <32140109+altersis@users.noreply.github.com> Date: Fri, 19 Mar 2021 00:43:54 +0000 Subject: [PATCH 23/23] First version of the integration documentation --- source/_integrations/leviosa_shades.markdown | 119 ++++--------------- 1 file changed, 25 insertions(+), 94 deletions(-) diff --git a/source/_integrations/leviosa_shades.markdown b/source/_integrations/leviosa_shades.markdown index dc8a73c6ead3..091f956244f8 100755 --- a/source/_integrations/leviosa_shades.markdown +++ b/source/_integrations/leviosa_shades.markdown @@ -4,7 +4,7 @@ description: Instructions on how to integrate the Leviosa Zone hub into Home Ass ha_category: - Cover ha_iot_class: Local Push -ha_release: 2021.04 +ha_release: 2021.4 ha_domain: leviosa_shades ha_codeowners: - '@altersis' @@ -13,112 +13,43 @@ ha_platforms: - cover --- -This integration allows you to control [Leviosa Zone hub](https://leviosashades.com/products/leviosa-zone) from [Leviosa Motor Shades](https://leviosashades.com/). +This integration allows you to control [Leviosa Zone hubs](https://leviosashades.com/products/leviosa-zone) from [Leviosa Motor Shades](https://leviosashades.com/). ## Configuration -Adding Leviosa Zone hubs to your Home Assistant instance is done via the user -interface, by taking the following steps: +To Add Leviosa Shades to your Home Assistant instance, please configure your Leviosa Shades and Zones with the app before doing it in Home Assistant. Once done, take the following steps: - Browse to your Home Assistant instance. -- In the sidebar click on _**{% my config icon %}**_. -- From the configuration menu select: _**{% my integrations icon %}**_. +- In the sidebar click on [Configuration](https://my.home-assistant.io/redirect/config). +- From the configuration menu select [Integrations](https://my.home-assistant.io/redirect/integrations). +- In the bottom right, click on the [Add Integration](https://my.home-assistant.io/redirect/config_flow_start?domain=leviosa_shades) button. +- From the list, search and select *Leviosa Motor Shades Zone*. +- Follow the instruction on screen to complete the set up. Each Leviosa Zone manages up to 6 groups of shades. +- If you have more than one Leviosa Zone in your Network, Home Assistant will display a list, with one IP address for each Leviosa Zone discovered in your network, in the same order as they were discovered. Once a Leviosa Zone is configured in Home Assistant, it will not appear in this list. Refer to the next section to find the IP address of each zone group. +- If you have only one Leviosa Zone, then you'll be taken directly to the screen to enter the Leviosa Zone name and shade group names. +- You can name the shade groups as you wish. They do not have to match the names already in the Leviosa App. -{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf %} -{{ name }} can be auto-discovered by Home Assistant. If an instance was found, -it will be shown in the top of the list of integrations as _"Discovered"_. -If that is the case click on the _**Configure**_ button to start setting up -the discovered instance. +After completing the steps above, the {{ name }} integration will be immediately available for use. A `cover` entity for each shade group will be ready for you. An additional `cover` entity is created with the name of the zone (prefixed `all_`) to move all groups in a Leviosa Zone at the same time. -If there wasn't any discovered automatically, don't worry! You can set up a -manual integration entry: -{% endif %} +## Retrieving the IP Address of the Leviosa Zone (WiFi bridge) -- In the bottom right, click on the - _**{% my config_flow_start icon domain=page.ha_domain %}**_ button. -- From the list, search and select _**"{{ name }}"**_. -- Follow the instruction on screen to complete the set up. +This is needed when multiple Leviosa Zones are detected, to identify each Leviosa Zone: -After completing, the {{ name }} integration will be immediately available for use. +- Open the Leviosa App. +- Press/hold on any group name. After 1 second, a new screen will appear. +- Select the ‘Name’ tab at the top. +- The screen will now show the IP address of the Leviosa Zone that shade group is on. -## Retrieving the API Key +## Services that allow you to move your blinds to intermediate positions +The Home Assistant user interface is useful to completely open or close your blinds. When you want your blinds to go to well defined intermediate positions, please [set](https://cdn.shopify.com/s/files/1/1346/0347/files/Leviosa_Shades_Programming_instructions.pdf?) the Mid-point positions with the Leviosa remote controller. These positions are stored in the Leviosa shade motor. If you do not program intermediate points, the shade will travel fully to the pre-set upper or lower limit. when using the following services: -The Motion Blinds API uses a 16 character key that can be retrieved from the official "Motion Blinds" app for [IOS](https://apps.apple.com/us/app/leviosa-motor-shades/id1396752984) or [Android](https://play.google.com/store/apps/details?id=com.atlascoder.leviosa). +- Use `leviosa_shades.next_up_pos` to move Leviosa shades up to the next mid-point position. +- Use `leviosa_shades.next_down_pos` to move Leviosa shades down to the next mid-point position. -Open the app, click the 3 dots in the top right corner, go to "settings", go to "Motion APP About", Please quickly tap this "Motion APP About" page 5 times, a popup will appear that gives you the key. - -Please note that "-" characters need to be included in the key when providing it to Home Assistant. The key needs to be similar to `12ab345c-d67e-8f` - -

- - -

- -## Top Down Bottom Up (TDBU) blinds - -TDBU blinds consist of two bars controlled by two motors designated by Top and Bottom with fabric in between. -The Top and Bottom can move independently of each other to cover different parts of the window. -Controlling the two bars can be done through three different entities that will be created: Top, Bottom and Combined. - -### 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). -- '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. -- '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. -- 'Width' is the percentage of the window covered by fabric (the space between the Top and Bottom bars). - -### Combined entity - -- 'Up/Open' will move both the Top and Bottom bars to the top of the window, effectively covering as little as possible of the window (Width will be 0 %). -- 'Down/Close' will move the Top bar to the top of the window and the Bottom bar to the bottom of the window, effectively covering the whole window (Width will be 100 %). -- 'Position' is the relative position of the center between the Bottom and Top bars in which the center can move, so basically, such that the area covered by the Bottom and Top bar can be moved without changing its size, such that the Top bar can go to the top of the window and the Bottom bar to the bottom of the window. -- 'Absolute position' is the position of the center between the Bottom and Top bars 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 width. -- 'Width' is the percentage of the window covered by fabric (the space between the Top and Bottom bars). - -### TDBU notes - -Because the relative position is used by default in Home Assistant, scenes will not work properly with TDBU blinds (depending on the current position of the Top en Bottom, a certain position (70) will correspond to a different position with respect to the window). - -Therefore it is recommended to use scripts or automations with the TDBU Combined entity that use the `motion_blinds.set_absolute_position` with specifying both the `absolute_position` and `width`. - -That will ensure the same absolute position with respect to the window is achieved without letting the Bottom or Top bar move to an absolute_position that is not allowed. - -When the `motion_blinds.set_absolute_position` service is used with values that would move the Bottom or Top bar to positions that will make them collide, nothing will happen. An error will be logged telling that that position is not allowed and the TDBU blind will not move. - -Therefore it is always safe to use any of the services in Home Assistant with the TDBU blinds. - -## Service `motion_blinds.set_absolute_position` - -For most blinds the `motion_blinds.set_absolute_position` does the same as `cover.set_cover_position` service. -However, for TDBU blinds it will set the absolute position relative to the window itself. -The `cover.set_cover_position` will set the scaled position relative to the space in which the TDBU blind is allowed to move. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Name of the motion blind cover entity to control. For example `cover.TopDownBottomUp-Bottom-0001` | -| `absolute_position` | no | Absolute position to move to. For example 70 | -| `width` | yes | Optionally specify the width that is covered, only for TDBU Combined entities. For example 30 | +Both services need the `entity_id` of the shade group that you want to move ## Troubleshooting -Home Assistant uses the following UDP multicast addresses/ports for communication with the gateway: - -- Motion hub receive UDP multicast `238.0.0.18:32100` -- Motion hub sending UDP multicast `238.0.0.18:32101` - -This communication needs to be allowed on your local network. If the blinds are unavailable and you see error messages like: - -`Timeout of 5.0 sec occurred on 5 attempts while waiting on multicast push from update request, communication between gateway and blind might be bad.` - -Please make sure the motion gateway and the device running Home Assistant are on the same VLAN and multicasting is enabled/allowed by your router. -If using separate VLANs, make sure the 238.0.0.18:32100 and 238.0.0.18:32101 ports are open for communication between those VLANs (not tested or confirmed to work). +- Keep in mind that you cannot use the Home Assistant UI to move your blinds to arbitrary positions, only to completely open/close them. Use the services explained above to move to pre-set positions programmed directly into the motors using a Leviosa remote. +- If Home Assistant cannot find your Leviosa Zone hubs, double check that you can ping your Home Assistant instance as well as your Leviosa Zones from the same node in your network, on the same subnet. If you have a network switch that can filter multicast packets, check that it is not filtering SSDP traffic. Home Assistant can only discover your Leviosa Zone hubs if the SSDP advertisements can reach the Home Assistant instance.