Alexa Control of Garage Door With Smart Home Skill

Hi There,

I’ve had the Alexa Smart Home Skill hooked up to my home assistant for quite a long time and I can control essentially everything from logs, to lights to the alarm control panel with Alexa…

But I am unable to control my garage door. The garage door is on myQ. I am able to control it fine with google home.

As per the docs

Garage Doors
Covers with a device_class of garage support the Open by Voice PIN feature in the Alexa app. > Configure a 4 digit PIN code to open the garage door in the Alexa app.
I should see this screen in the alexa app allowing me to set a pin

Mine only show the following in the app

Hello,

I have the same problem.
If someone has found a solution, I’m interested.
For now, I have created a routine to open/close the garage door, but this is not the best way to do it.

Best,

1 Like

After some investiguation, I notice that Alexa cannot control garage door when the Alexa Interface is ModeController.
However, when Alexa Interface is RangeController, I can open and close my garage door.

To put it in the context, I have a ESPHome relay+contact sensor that expose a garage door cover.
I can only open, close and stop the garage door.
That is why the entity has supported_features = 11 in HA.
After a discovery for an Alexa device, I get the following line:

{'displayCategories': ['GARAGE_DOOR'], 'cookie': {}, 'endpointId': 'cover#porte_de_garage', 'friendlyName': 'Porte de Garage', 'description': 'cover.porte_de_garage via Home Assistant', 'manufacturerName': 'Home Assistant', 'additionalAttributes': {'manufacturer': 'Home Assistant', 'model': 'cover', 'softwareVersion': '2021.4.6', 'customIdentifier': '-cover.porte_de_garage'}, 'capabilities': [{'type': 'AlexaInterface', 'interface': 'Alexa.ModeController', 'version': '3', 'instance': 'cover.position', 'properties': {'supported': [{'name': 'mode'}], 'proactivelyReported': True, 'retrievable': True, 'nonControllable': False}, 'capabilityResources': {'friendlyNames': [{'@type': 'text', 'value': {'text': 'Position', 'locale': 'en-US'}}, {'@type': 'asset', 'value': {'assetId': 'Alexa.Setting.Opening'}}]}, 'configuration': {'ordered': False, 'supportedModes': [{'value': 'position.open', 'modeResources': {'friendlyNames': [{'@type': 'asset', 'value': {'assetId': 'Alexa.Value.Open'}}]}}, {'value': 'position.closed', 'modeResources': {'friendlyNames': [{'@type': 'asset', 'value': {'assetId': 'Alexa.Value.Close'}}]}}, {'value': 'position.custom', 'modeResources': {'friendlyNames': [{'@type': 'text', 'value': {'text': 'Custom', 'locale': 'en-US'}}, {'@type': 'asset', 'value': {'assetId': 'Alexa.Setting.Preset'}}]}}]}, 'semantics': {'actionMappings': [{'@type': 'ActionsToDirective', 'actions': ['Alexa.Actions.Lower', 'Alexa.Actions.Close'], 'directive': {'name': 'SetMode', 'payload': {'mode': 'position.closed'}}}, {'@type': 'ActionsToDirective', 'actions': ['Alexa.Actions.Raise', 'Alexa.Actions.Open'], 'directive': {'name': 'SetMode', 'payload': {'mode': 'position.open'}}}], 'stateMappings': [{'@type': 'StatesToValue', 'states': ['Alexa.States.Closed'], 'value': 'position.closed'}, {'@type': 'StatesToValue', 'states': ['Alexa.States.Open'], 'value': 'position.open'}]}}, {'type': 'AlexaInterface', 'interface': 'Alexa.EndpointHealth', 'version': '3', 'properties': {'supported': [{'name': 'connectivity'}], 'proactivelyReported': True, 'retrievable': True}}, {'type': 'AlexaInterface', 'interface': 'Alexa', 'version': '3'}]}

So Alexa will use ModeController. And it does not work to open or close my garage door.

When I modify this value (to supported_features = 15), the Alexa log becomes:

{'displayCategories': ['GARAGE_DOOR'], 'cookie': {}, 'endpointId': 'cover#porte_de_garage', 'friendlyName': 'Porte de Garage', 'description': 'cover.porte_de_garage via Home Assistant', 'manufacturerName': 'Home Assistant', 'additionalAttributes': {'manufacturer': 'Home Assistant', 'model': 'cover', 'softwareVersion': '2021.4.6', 'customIdentifier': '-cover.porte_de_garage'}, 'capabilities': [{'type': 'AlexaInterface', 'interface': 'Alexa.RangeController', 'version': '3', 'instance': 'cover.position', 'properties': {'supported': [{'name': 'rangeValue'}], 'proactivelyReported': True, 'retrievable': True, 'nonControllable': False}, 'capabilityResources': {'friendlyNames': [{'@type': 'text', 'value': {'text': 'Position', 'locale': 'en-US'}}, {'@type': 'asset', 'value': {'assetId': 'Alexa.Setting.Opening'}}]}, 'configuration': {'supportedRange': {'minimumValue': 0, 'maximumValue': 100, 'precision': 1}, 'unitOfMeasure': 'Alexa.Unit.Percent'}, 'semantics': {'actionMappings': [{'@type': 'ActionsToDirective', 'actions': ['Alexa.Actions.Lower', 'Alexa.Actions.Close'], 'directive': {'name': 'SetRangeValue', 'payload': {'rangeValue': 0}}}, {'@type': 'ActionsToDirective', 'actions': ['Alexa.Actions.Raise', 'Alexa.Actions.Open'], 'directive': {'name': 'SetRangeValue', 'payload': {'rangeValue': 100}}}], 'stateMappings': [{'@type': 'StatesToValue', 'states': ['Alexa.States.Closed'], 'value': 0}, {'@type': 'StatesToRange', 'states': ['Alexa.States.Open'], 'range': {'minimumValue': 1, 'maximumValue': 100}}]}}, {'type': 'AlexaInterface', 'interface': 'Alexa.EndpointHealth', 'version': '3', 'properties': {'supported': [{'name': 'connectivity'}], 'proactivelyReported': True, 'retrievable': True}}, {'type': 'AlexaInterface', 'interface': 'Alexa', 'version': '3'}]}

So it will use RangeController Interface, and it works! I can say “Open garage door” :slight_smile:

I don’t know why there is a problem with ModeController Interface, because it is supported in my language (fr-FR).

Hi TTR6214,
Can you explain more details on how you got this to work. I face the same issue but am struggling to understand how you resolved it.
I am using a shelly1 as the controller. It comes up as a Garage Door but no option to set pin or control it properly.

Actually the Garage Door in Alexa is not recognized as a garage door.
You still don’t have the option to set pin or control it directly in Alexa app.
But my trick allows you to say “Alexa, Close/Open the garage door”.

It appears that ModeController for Garage Door only works for en-US language.
So we have to wait to get these features.

Note: Skills that control a garage door are supported in en-US only. Alexa.ModeController Interface | Alexa Skills Kit

That explains a lot.
How did you modify the value to 15? Sorry but a little confused on how this is done.

Took me a minute but, I figured it out.

Changing supported features to 15 didn’t work for me. What did work was setting the device class to “Garage”

Here’s how you do it.
In the configuration.yaml add the following.

homeassistant:
customize: !include customize.yaml

Then go to the entity list and click on the garage door entity.
There’s a link that says entity_customization click it.
You can edit supported features here but, that didn’t work for me.
Instead click the “pick attribute to overide” and select device class.
Set the device class to “Garage”

Restart the server. Remove the old device from Alexa and then add it again through auto discovery. It should ask for a voice code to be created. Once you’ve done that it should work.