Would definitely be interested in a direct integration to HA.
Purchased one for our movie room and having to integrate via SmartThings.
This is kludgy at best to be honest. The unfortunate part is these blinds have no idea where they’re ‘at’ - there’s no % open involved, it’s all about setting top & bottoms stops and then (personally) I set a middle ‘waypoint’.
The problem then is if you hit ‘open’ and it’s at the bottom, it only opens to the ‘waypoint’, not all the way open, and doesn’t display anywhere in HA natively (via SmartThings at least) where it’s at currently.
My solution to this is quite convoluted - it works, but it’s pretty kludgy.
- Create variables to hold each the current and prior (before) position (open/middle/closed). Personally I use https://github.com/rogro82/hass-variables
movie_room_blinds:
value: 'open'
restore: true
movie_room_blinds_before:
value: ''
restore: true
- Create 4 scripts to set the variable as position changes and actually open / close the blinds.
## 4 Stages to Move Blinds / Set Variables
movie_room_blinds_open_to_middle:
sequence:
- service: variable.set_variable
data:
variable: movie_room_blinds
value: 'middle'
- service: cover.close_cover
entity_id: cover.movie_room_blinds
movie_room_blinds_middle_to_closed:
sequence:
- service: variable.set_variable
data:
variable: movie_room_blinds
value: 'closed'
- service: cover.close_cover
entity_id: cover.movie_room_blinds
movie_room_blinds_middle_to_open:
sequence:
- service: variable.set_variable
data:
variable: movie_room_blinds
value: 'open'
- service: cover.open_cover
entity_id: cover.movie_room_blinds
movie_room_blinds_closed_to_middle:
sequence:
- service: variable.set_variable
data:
variable: movie_room_blinds
value: 'middle'
- service: cover.open_cover
entity_id: cover.movie_room_blinds
- Create scripts to be called from ui-lovelace to open / close blinds based on what level is required and what position they are currently
# Scripts to Move ALL THE WAY
# It takes ~15 seconds to move 1/2 way, so wait 17 just in case
movie_room_blinds_closed_to_open:
sequence:
- service: script.movie_room_blinds_closed_to_middle
- delay: 00:00:17
- service: script.movie_room_blinds_middle_to_open
movie_room_blinds_open_to_closed:
sequence:
- service: script.movie_room_blinds_open_to_middle
- delay: 00:00:17
- service: script.movie_room_blinds_middle_to_closed
# Scripts to Dynamically Open / Middle / Close Blinds
movie_room_blinds_open:
sequence:
- service: script.turn_on
data_template:
entity_id: >-
{% if is_state('variable.movie_room_blinds', 'open') %}
script.do_nothing
{% elif is_state('variable.movie_room_blinds', 'middle') %}
script.movie_room_blinds_middle_to_open
{% elif is_state('variable.movie_room_blinds', 'closed') %}
script.movie_room_blinds_closed_to_open
{% else %}
script.do_nothing
{% endif %}
movie_room_blinds_middle:
sequence:
- service: script.turn_on
data_template:
entity_id: >-
{% if is_state('variable.movie_room_blinds', 'open') %}
script.movie_room_blinds_open_to_middle
{% elif is_state('variable.movie_room_blinds', 'middle') %}
script.do_nothing
{% elif is_state('variable.movie_room_blinds', 'closed') %}
script.movie_room_blinds_closed_to_middle
{% else %}
script.do_nothing
{% endif %}
movie_room_blinds_close:
sequence:
- service: script.turn_on
data_template:
entity_id: >-
{% if is_state('variable.movie_room_blinds', 'open') %}
script.movie_room_blinds_open_to_closed
{% elif is_state('variable.movie_room_blinds', 'middle') %}
script.movie_room_blinds_middle_to_closed
{% elif is_state('variable.movie_room_blinds', 'closed') %}
script.do_nothing
{% else %}
script.do_nothing
{% endif %}
do_nothing:
sequence:
delay: 00:00:00
## Script to set movie_room_blinds_before variable, records position before automation started. Can leverage to reset blinds to prior position. Called in various automations
movie_room_blinds_set_before:
sequence:
- service: variable.set_variable
data:
variable: movie_room_blinds_before
value_template: "{{ states('variable.movie_room_blinds') }}"
- Create a sensor to display position of the blinds:
movie_room_blinds:
friendly_name: Movie Room Blinds
value_template: >-
{{ states('variable.movie_room_blinds') }}
entity_picture_template: >-
{% if is_state('variable.movie_room_blinds', 'open') %}
/local/custom_icons/shades-open-yellow-FDD835.png
{% elif is_state('variable.movie_room_blinds', 'middle') %}
/local/custom_icons/shades-middle-yellow-FDD835.png
{% else %}
/local/custom_icons/shades-closed-blue-44739E.png
{% endif %}
- Lastly use a glance card to display position and buttons to set blinds to where I want them:
entities:
- entity: sensor.movie_room_blinds
name: Movie Rm Blinds
- entity: variable.movie_room_blinds
name: Open
icon: mdi:arrow-up-bold-box-outline
tap_action:
action: call-service
service: script.movie_room_blinds_open
- entity: variable.movie_room_blinds
name: Middle
icon: mdi:format-align-middle
tap_action:
action: call-service
service: script.movie_room_blinds_middle
- entity: variable.movie_room_blinds
name: Close
icon: mdi:arrow-down-bold-box-outline
tap_action:
action: call-service
service: script.movie_room_blinds_close
Result:
Like anything, the ends justify the means and I now have blinds that are actuated via Home Assistant and can automagically open / close. Ie. when the movie room receiver turns on call script.movie_room_blinds_close
Again, works well and I’m pretty happy, but wish it just had % open and I could set that vs. the tom-foolery of setting variable to remember position, etc…