Using the Alexa Skills Kit to control your Chamberlain MyQ garage door.
By using the Alexa Skills Kit and AWS Lambda, you can control your Chamberlain MyQ garage door through your Amazon Echo. This code adapts David Pfeffer's unofficial Chamberlain Liftmaster API to a Python-based app you can use inside of AWS Lambda.
-
Create an Alexa Skills Kit (ASK) app, using the intent schema, custom slot values, and sample utterances in this repo. Choose an invocation name like
my garage door
. -
Replace
<MYQ_LOGIN_USERNAME>
and<MYQ_LOGIN_PASSWORD>
inmain.py
with the username and password you created at Chamberlain, and substituteamzn1.echo-sdk-ams.app.<your-alexa-skills-id>
with the ID of the ASK skill you created. TheAPP_ID
should remain the same, it is Chamberlain specific and not specific to your MyQ account. -
Create a zip file for Lambda with the following command (you'll need it later in step 6):
zip -r lambda-upload.zip main.py myq.py requests requests-2.9.1.dist-info
-
Create a new AWS Lambda function in the us-east-1 (N. Virginia) region. At "Select a Blueprint," press the "Next" button to skip.
-
For the "Configure Triggers" page, click in the dotted box to show the triggers options, and select "Alexa Skills Kit." Click next to continue.
-
Configure the function by giving it a name, description, and selecting the "Python 2.7" runtime. For "Code Entry Type," specify the ZIP file "lambda-upload.zip" that you created in Step 3.
-
Change "Handler" to "main.lambda_handler", and use a "Create new role from templates" as your "Role".
-
Give your role a name, like "MyQRole", and choose "Simple Microservice Permissions." Leave "Memory" and "VPC" at their defaults, and give a timeout of "15 seconds," then click "Next". A new page will open. Verify your details, then click "Create function."
-
Modify your ASK skill with the ARN of your newly created function.
-
Test your interactions with the ASK console. When you've got it working, try it on your Echo:
Alexa, ask my garage door to open
.
IMPORTANT: Before attempting to troubleshoot your issue, first verify that AWS Lambda is fully up and running by checking its status on the AWS Service Health Dashboard.
Troubleshooting Alexa to Lambda interactions can be done via AWS Lambda. The Lambda function panel will have tabs for Code, Configuration, Triggers, and Monitoring. "Monitoring" is where you can view logs to see the requests that come in from the Alexa Skills Kit. Most of the time, you'll be able to find the error here. A lot of times, you'll see errors because you didn't change some of the default values in the main.py
code in lines 14, 15, and 24.
If you're still stuck, read the excellent step-by-step guide from @tigerbrain.
The documentation for the Alexa Skills Kit is available on the Amazon Apps and Services Developer Portal.
Here are a few direct links to Alexa and Lambda documentation:
- Using the Alexa Skills Kit Samples (Node.js)
- Getting Started
- Invocation Name Guidelines
- Developing an Alexa Skill as an AWS Lambda Function
Special thanks to the contributors who help keep this alive. Check out https://github.com/arraylabs/myq for some great work that keeps inspiring this project, and @tigerbrain's Multi Door Support work.
The code here is based off of an unsupported API from Chamberlain and is subject to change without notice. The authors claim no responsibility for damages to your garage door or property by use of the code within.