Chamberlain MyQ Garage

If you have a feature you'd like to see in Indigo, post it here. Others can refine the idea if they like. Please keep each topic to one feature or a closely related set of features and don't add other unrelated requests to an existing topic. Use the Hardware Support Requests forum below to request support for some bit of hardware - but be sure to check the 3rd Party Plugins Forum first though to make sure there isn't already a plugin for it.
pixelknave
Posts: 7
Joined: Fri Apr 18, 2014 1:57 pm

Chamberlain MyQ Garage

Post by pixelknave »

Hi folks,

I just set up a Chamberlain MyQ Garage (http://www.chamberlain.com/smartphone-c ... -myq-g0201), and would love to integrate this into my Indigo setup. As far as I know, Chamberlain hasn't made any sort of API available, but I'm wondering if anyone has sniffed around and figured out a way to have 3rd party apps communicate with the system (presumably via mychamberlain.com).

Thanks!
-Chris
rainman50
Posts: 299
Joined: Mon Feb 13, 2006 4:48 pm
Location: Michigan

Re: Chamberlain MyQ Garage

Post by rainman50 »

I would like to know as well.
Because it has to do with security it might be tough to get it going.
crofford
Posts: 34
Joined: Thu Jan 26, 2006 6:40 pm

Re: Chamberlain MyQ Garage

Post by crofford »

I'm looking to install two Liftmaster 8500's but my big concern is integration and remote operation...yet another vendor with their own proprietary automation system. I don't like the idea of having to use the intermediary mychamberlain.com and their internet gateway add-on. I currently use IOLINCs with traditional overhead openers. Are the 8500's different where the push button remote connects? Can I just add my IOLINC's to the 8500?
User avatar
jay (support)
Site Admin
Posts: 19202
Joined: Wed Mar 19, 2008 11:52 am
Location: Austin, Texas
Contact:

Re: Chamberlain MyQ Garage

Post by jay (support) »

This is a better question for INSTEON since they sell the garage door kit and probably know which brands and models work.
Jay (Indigo Support)
Twitter | Facebook | LinkedIn
brentb
Posts: 33
Joined: Mon Jan 20, 2014 6:26 pm

Re: Chamberlain MyQ Garage

Post by brentb »

crofford wrote:I'm looking to install two Liftmaster 8500's but my big concern is integration and remote operation...yet another vendor with their own proprietary automation system. I don't like the idea of having to use the intermediary mychamberlain.com and their internet gateway add-on. I currently use IOLINCs with traditional overhead openers. Are the 8500's different where the push button remote connects? Can I just add my IOLINC's to the 8500?
any luck with this? I just got a new Chamberlain garage door opener this week, and want to integrate it into indigo.
Thorvald
Posts: 4
Joined: Thu Nov 12, 2009 8:05 am

Re: Chamberlain MyQ Garage

Post by Thorvald »

Good luck with this. They are famous for closed systems.

Honestly I'd simply perform the following:

1. Pickup a Chamberlain Remote and pair to your openers.
2. Open it up and solder wires to the button contacts for how ever many doors you want to control.
3. Connect wires to any ZWave in Insteon etc Dry Contact Relay device.
4. Program those relays as "Garage Door Opener"
5. Activate relay(s) and enjoy.

You might also try adding a battery eliminator circuit to power the remote but then again, they last for years on the coin cells so might be a waste of effort.

I did something similar to this with my Motorcycle using a "double tap" device. I simply double tap my fog light switch and it activates a relay wired to a garage door opener buried inside my frame. Works brilliantly.

Then wire up a door contact of some sort so you can keep a live status of the door as well.

Cheers
Tim
sarahcat
Posts: 168
Joined: Sat Apr 16, 2011 12:27 am

Re: Chamberlain MyQ Garage

Post by sarahcat »

I just bought a Ford Escape that has a 'universal' 3 button garage door opener. I have a carport and not a garage, so I have no door and no opener. Is is possible to buy an interface that I could connect to Indigo that would allow me to use this transmitter to control Indigo devices without buying a garage door opener? I basically need some sort of transponder/protocol convertor.
acesandeights18
Posts: 12
Joined: Fri Mar 11, 2016 9:57 am

Re: Chamberlain MyQ Garage

Post by acesandeights18 »

I found unpublished APIs.
http://docs.unofficialliftmastermyq.apiary.io/#
Will this make it possible for a Indigo plugin?
:)
RichP
Posts: 7
Joined: Wed Mar 30, 2016 9:19 am

Re: Chamberlain MyQ Garage

Post by RichP »

They have it running on the ISY994 so looks like it is possible:

https://github.com/Einstein42/myq-garage
mediabox
Posts: 50
Joined: Fri Apr 15, 2016 8:55 am
Location: chicago, il

Re: Chamberlain MyQ Garage

Post by mediabox »

Keying of what Thorvald wrote I would suggest:

Instead of hacking a garage door transmitter, just take the Zwave/Indigo relay device and wire it in parallel to the garage door button. Then create a "on" trigger event with an auto off in 1 second. This would emulate someone pressing the garage door button for 1 second.

Pair it up with a siren to make some noise before the door moves (action group). Think that makes it OSHA (?) complaint.
gskarp
Posts: 156
Joined: Thu Apr 19, 2012 4:50 pm

Re: Chamberlain MyQ Garage

Post by gskarp »

I was told by my Garage door guy that it uses a circuit board so I wouldn't be able to use the insteon contact switch. I would love to figure out how to get it to work with Indigo.
Bollar
Posts: 528
Joined: Sun Aug 11, 2013 3:14 pm

Re: Chamberlain MyQ Garage

Post by Bollar »

As luck would have it, my garage door opener broke and I had to replace it yesterday. Given my requirements, I wound up getting the MyQ. Based on the comprehensive script at https://github.com/Einstein42/myq-garage here are a couple of scripts I hacked up. Note that this script requires the REQUESTS module. Documenting that is outside my scope.

Although I'm not a fan of needing internet connectivity to open a garage door, this is actually a fairly economical solution compared to the alternative. The highest-end door at Home Depot is the Chamberlain HD950WF and it was $238 yesterday http://www.homedepot.com/p/Chamberlain- ... /205880822 . The Insteon Garage Door Control & Status IO-Linc is $80 on its own http://www.smarthome.com/insteon-74551- ... s-kit.html

The security token seems to have a short expiration, so I get a new one each time my scripts run. I don't know how often it's safe to poll -- I have the status script scheduled for 1 minute.

There are ways to make the scripts cleaner and more useful, but these just pull the elements I needed and I just made them Action Groups so I could make a Virtual Device.

Getting Current System Status

Code: Select all

import requests

from requests.auth import HTTPBasicAuth
from requests.utils import quote


appid = (indigo.variables['chamberlainAppID'].value) 
key = (indigo.variables['chamberlainSecurityToken'].value) 
username = (indigo.variables['chamberlainUserID'].value)
password = (indigo.variables['chamberlainPassword'].value)

login_url = 'https://myqexternal.myqdevice.com/Membership/ValidateUserWithCulture?appid=' + appid + '&securityToken=null&username=' + username + '&password=' + password + '&culture=en'

r = requests.get(login_url)

data = r.json()

# indigo.server.log(str(data))

key = data['SecurityToken']

indigo.variable.updateValue('chamberlainSecurityToken', value=(key))

login_url = 'https://myqexternal.myqdevice.com//api/UserDeviceDetails?appId=' + appid + '&securityToken=' + key

r = requests.get(login_url)

data = r.json()

statRangeRover = data['Devices'][2]['Attributes'][3]['Value']
statRangeRoverDevice = data['Devices'][2]['DeviceId']
statTesla = data['Devices'][3]['Attributes'][3]['Value']
statTeslaDevice = data['Devices'][3]['DeviceId']

if statRangeRover == '1':
	statRangeRoverStr = 'Open'
if statRangeRover == '2':
	statRangeRoverStr = 'Closed'
if statRangeRover == '3':
	statRangeRoverStr = 'Stopped'
if statRangeRover == '4':
	statRangeRoverStr = 'Opening'
if statRangeRover == '5':
	statRangeRoverStr = 'Closing'

if statTesla == '1':
	statTeslaStr = 'Open'
if statTesla == '2':
	statTeslaStr = 'Closed'
if statTesla == '3':
	statTeslaStr = 'Stopped'
if statTesla == '4':
	statTeslaStr = 'Opening'
if statTesla == '5':
	statTeslaStr = 'Closing'


indigo.variable.updateValue('chamberlainRangeRoverStat', value=str(statRangeRoverStr))
indigo.variable.updateValue('chamberlainRangeRoverStatDeviceID', value=str(statRangeRoverDevice))
indigo.variable.updateValue('chamberlainTeslaStat', value=str(statTeslaStr))
indigo.variable.updateValue('chamberlainTeslaStatDeviceID', value=str(statTeslaDevice))
Open Garage Door
Change 'AttributeValue' to 0 to Close Garage Door

Code: Select all

import requests

from requests.auth import HTTPBasicAuth
from requests.utils import quote


appid = (indigo.variables['chamberlainAppID'].value) 
key = (indigo.variables['chamberlainSecurityToken'].value) 
username = (indigo.variables['chamberlainUserID'].value)
password = (indigo.variables['chamberlainPassword'].value)
deviceid = (indigo.variables['chamberlainTeslaStatDeviceID'].value)

login_url = 'https://myqexternal.myqdevice.com/Membership/ValidateUserWithCulture?appid=' + appid + '&securityToken=null&username=' + username + '&password=' + password + '&culture=en'

r = requests.get(login_url)

data = r.json()

indigo.server.log(str(data))

key = data['SecurityToken']

indigo.variable.updateValue('chamberlainSecurityToken', value=(key))

post_url = 'https://myqexternal.myqdevice.com/api/deviceattribute/putdeviceattribute'

# AttributeValue of 1 is Open, 0 is Closed
payload = {
	'ApplicationId': appid,
	'AttributeName': 'desireddoorstate',
	'DeviceId': deviceid, 
	'AttributeValue': 1, 
	'SecurityToken': key
	}


r = requests.put(post_url, data=payload)


indigo.server.log(str(r))

data = r.json()

indigo.server.log(str(data))
Toggle Garage Door

Code: Select all

import requests

from requests.auth import HTTPBasicAuth
from requests.utils import quote


appid = (indigo.variables['chamberlainAppID'].value) 
key = (indigo.variables['chamberlainSecurityToken'].value) 
username = (indigo.variables['chamberlainUserID'].value)
password = (indigo.variables['chamberlainPassword'].value)
deviceid = (indigo.variables['chamberlainTeslaStatDeviceID'].value)

# Get Security Token
login_url = 'https://myqexternal.myqdevice.com/Membership/ValidateUserWithCulture?appid=' + appid + '&securityToken=null&username=' + username + '&password=' + password + '&culture=en'
r = requests.get(login_url)
data = r.json()

key = data['SecurityToken']

indigo.variable.updateValue('chamberlainSecurityToken', value=(key))

# Check Door Status
indigo.variable.updateValue('chamberlainSecurityToken', value=(key))

login_url = 'https://myqexternal.myqdevice.com//api/UserDeviceDetails?appId=' + appid + '&securityToken=' + key

r = requests.get(login_url)

data = r.json()

statRangeRover = data['Devices'][2]['Attributes'][3]['Value']
statRangeRoverDevice = data['Devices'][2]['DeviceId']
statTesla = data['Devices'][3]['Attributes'][3]['Value']
statTeslaDevice = data['Devices'][3]['DeviceId']

if statRangeRover == '1':
	statRangeRoverStr = 'Open'
if statRangeRover == '2':
	statRangeRoverStr = 'Closed'
if statRangeRover == '3':
	statRangeRoverStr = 'Stopped'
if statRangeRover == '4':
	statRangeRoverStr = 'Opening'
if statRangeRover == '5':
	statRangeRoverStr = 'Closing'

if statTesla == '1':
	statTeslaStr = 'Open'
if statTesla == '2':
	statTeslaStr = 'Closed'
if statTesla == '3':
	statTeslaStr = 'Stopped'
if statTesla == '4':
	statTeslaStr = 'Opening'
if statTesla == '5':
	statTeslaStr = 'Closing'


indigo.variable.updateValue('chamberlainRangeRoverStat', value=str(statRangeRoverStr))
indigo.variable.updateValue('chamberlainRangeRoverStatDeviceID', value=str(statRangeRoverDevice))
indigo.variable.updateValue('chamberlainTeslaStat', value=str(statTeslaStr))
indigo.variable.updateValue('chamberlainTeslaStatDeviceID', value=str(statTeslaDevice))

#Toggle State If Closed, Then Open
if statTesla == '1':
	desiredState = '0'
elif statTesla == '2':
	desiredState = '1'
else:
	sys.exit()


post_url = 'https://myqexternal.myqdevice.com/api/deviceattribute/putdeviceattribute'
payload = {
	'ApplicationId': appid,
	'AttributeName': 'desireddoorstate',
	'DeviceId': deviceid, 
	'AttributeValue': desiredState, 
	'SecurityToken': key
	}
r = requests.put(post_url, data=payload)
data = r.json()
indigo.server.log(str(data))
Insteon / Z-Wave / Bryant Evolution Connex /Tesla / Roomba / Elk M1 / SiteSage / Enphase Enlighten / NOAA Alerts
gregjsmith
Posts: 946
Joined: Tue Apr 01, 2003 9:41 am
Location: Rio Rancho, NM
Contact:

Re: Chamberlain MyQ Garage

Post by gregjsmith »

What is the Requests module?
Bollar
Posts: 528
Joined: Sun Aug 11, 2013 3:14 pm

Re: Chamberlain MyQ Garage

Post by Bollar »

gregjsmith wrote:What is the Requests module?
it's a Python add-on that simplifies dealing with accessing data over the internet.

When I get home tonight, I'll find the references on how to install it on this forum.
Insteon / Z-Wave / Bryant Evolution Connex /Tesla / Roomba / Elk M1 / SiteSage / Enphase Enlighten / NOAA Alerts
gregjsmith
Posts: 946
Joined: Tue Apr 01, 2003 9:41 am
Location: Rio Rancho, NM
Contact:

Re: Chamberlain MyQ Garage

Post by gregjsmith »

Thanks. I would like to try these scripts out.
Post Reply

Return to “Feature Requests”