"Alexa, open cover" is not supported - voice commands doesn't work

Hey,

I want to control my covers with Alexa.

This needs to be based on the room (alexa group) - like “turn on lights”.
I added the cover to the sleeping room group and when I say alexa, cover to 100% it already uses the right one - that works.
The problem is that I just want to say “cover up” or “open cover” or something like that,
but the answer is always “this command doesn’t work with the device sleeping room cover”

Works:

Alexa, Cover to 100%
Alexa, Cover to 0%

Doesn’t Work:

Alexa, close the Cover
Alexa, Cover off
Alexa, Cover on
Alexa, open Cover

The devices is exposed as Cover in the Alexa App.

Is this a limitation of Alexa or is something wrong with my config?

- platform: template
  covers:
    living_room_rollo: 
      device_class: shutter
      friendly_name: " Wohnzimmer Rollo" 
      position_template: "{{ states('sensor.living_room_rollo_position') }}"
      open_cover:
        - service: rest_command.belt_winder_up
          data:
            did: 2 # This is the Device ID also used in sensor.yaml
      close_cover:
        - service: rest_command.belt_winder_down
          data:
            did: 2 # This is the Device ID also used in sensor.yaml
      stop_cover:
        - service: rest_command.belt_winder_stop
          data:
            did: 2 # This is the Device ID also used in sensor.yaml
      set_cover_position:
        - service: rest_command.belt_winder_set_position
          data_template:
            did: 2 # This is the Device ID also used in sensor.yaml
            position: "{{position}}"
belt_winder_up:
  url: 'http://192.168.178.79/devices/{{ did }}'
  method: PUT
  payload: '{"name":"POS_UP_CMD"}'
belt_winder_down:
  url: 'http://192.168.178.79/devices/{{ did }}'
  method: PUT
  payload: '{"name":"POS_DOWN_CMD"}'
belt_winder_stop:
  url: 'http://192.168.178.79/devices/{{ did }}'
  method: PUT
  payload: '{"name":"STOP_CMD"}'
belt_winder_set_position:
  url: 'http://192.168.178.79/devices/{{ did }}'
  method: PUT
  payload: '{"name":"GOTO_POS_CMD","value":"{{ 100 - float(position)|int }}"}'

Cheers!

Try

Alexa set cover to xxx%

Alexa turn on/off cover

I remember running into that a long time ago when I first integrated my garage doors. The way I do it is that I set up scripts to open and close the doors. Then in the Alexa app I set routines to call the appropriate scripts when I say “open/close the garage door”. The scripts will be exposed to the Alexa app as scenes.

“Alexa set cover to xxx%” works
“Alexa turn on / off sleeping room cover” works

but turning off and on feels sooo wrong with covers :confused:

1 Like

I understand your Idea but you can’t assign a script to a room.

That means you always need to say “the sleeping room cover” or “the kitchen cover” but I wanted to just say “cover” and then the cover in the same room opens. I also just say “Alexa, turn on lights” and not “Alexa, turn on lights in sleeping room”.

But it really seems like there is no solution yet.

1 Like

Any news here?

There is an easy fix. By using alexa media player you can create a sensor for the last called echo.

I created a script each to open, close and stop a cover and made a routine for each with multiple commands.

You can either do the assignment in the script echo to cover manually or do it like I do: Assign all echos and covers to areas in Home Assistant and let it match the entities automatically:

sequence:
  - service: alexa_media.update_last_called
    data: {}
  - service: cover.open_cover
    data: {}
    target:
      entity_id: >-
        {{ area_entities(area_id(states('sensor.letzter_echo'))) |
        select('match', 'cover') | list  }}
1 Like