Chamberlain MyQ Binding

I have been building against the trunk so I have a 2.3 snapshot version as well. I was assuming most people are still running 2.2 so I posted the JAR for it. Below is a link to the 2.3 snapshot if interested.

Thanks,
Scott

https://drive.google.com/file/d/1NTQnz0B0-GMVIsamm6TOBIzqLB5SlWMD/view?usp=sharing

1 Like

Thanks for that 2.3 jar. Discovery is working now. :+1:

Hello, on my side, something has stopped working. Happy openhab myq customer where 90% of the time the door opening trigger work with openhab. But for an unknown reason, the past 3 days or so, I canā€™t trigger it open. I can read all value no problem, but if I trigger a door open, nothing happen. I had to rely on the clunky myq apps. Am I the only one with the issue? I havenā€™t changed anything except added persistence to my server, but Iā€™m seeing error when trying to open the door in the log.

Thank you

I installed the 2.3 jar which didnā€™t work for me so I removed it. However, I still get the following in openhab.cfg; how do I remove these log comments?

2018-04-20 13:50:17.716 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports zwave:ge_zw1001_00_000
2018-04-20 13:50:17.726 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports zwave:ge_ge14291_00_000
2018-04-20 13:50:17.732 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports ntp:ntp
2018-04-20 13:50:17.737 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports zwave:ge_14288_00_000
2018-04-20 13:50:17.744 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports zwave:ge_ge14291_00_000
2018-04-20 13:50:17.750 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports zwave:ge_zw1001_00_000
2018-04-20 13:50:17.771 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports weatherunderground:weather

Thanks

Timeouts on calls to the MyQ server generate a lengthy exception in the logs. As timeouts seems to happen pretty often, I would argue that a single log entry at info level would seem to be sufficient.

2018-04-21 06:47:05.140 [ERROR] [handler.ChamberlainMyQGatewayHandler] - Requesting URL Failed
java.io.IOException: java.util.concurrent.TimeoutException
	at org.openhab.binding.chamberlainmyq.internal.HttpUtil.executeUrl(HttpUtil.java:157) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.request(ChamberlainMyQGatewayHandler.java:410) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.getMyqData(ChamberlainMyQGatewayHandler.java:188) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.refreshDeviceState(ChamberlainMyQGatewayHandler.java:296) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.lambda$1(ChamberlainMyQGatewayHandler.java:286) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.util.concurrent.TimeoutException
	at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:109) ~[?:?]
	at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:676) ~[?:?]
	at org.openhab.binding.chamberlainmyq.internal.HttpUtil.executeUrl(HttpUtil.java:140) ~[?:?]
	... 11 more
2018-04-21 06:47:05.146 [ERROR] [handler.ChamberlainMyQGatewayHandler] - An exception occurred while executing a request to the Gateway: 'null'

Also, I see these log entries pretty regularly. Being a fan of ā€˜less is betterā€™ in the logs, Iā€™d also argue to make these DEBUG level. :slight_smile:

2018-04-21 06:35:26.802 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports unifi:client
2018-04-21 06:35:26.803 [INFO ] [nternal.ChamberlainMyQHandlerFactory] - Checking if the factory supports unifi:client

The second exception I think the binding is trying to parse the response after the timeout. I will try to fix that.

@scooter_seh Hi there, thank you for the updated add-on. do you know when it will be merged to the repo so we can install thru paper ui?

Hi,

Can I have a copy of a working JAR file please?

I have tried a few different versions, and none of these seem to work :frowning:

I think Chamberlain changed something again. The binding doesnā€™t work but the app does.

Anyone else having the same problem?

I am running the 1.x binding and it still works for me. Are you using the 2.2 or something else?

Myself Iā€™m on the 2.2 binding and it also stopped working just recently. ā€œCould not connect to MyQ serviceā€
-edit- I am getting errors in the logs, but I can open and close the garage door as well as get status updates when it is opened and closed.

A couple hours after I posted it started to work again.
I was scared Chamberlain changed their API again

Is there documentation anywhere for the 2.2 or 2.3 binding. I generally like to create my own things and items files just to make it easier to write rules. Not to mention faster to add a large number of items and things vs PaperUI

@scooter_seh I started seeing a lot of these exceptions in my logs. It seems like once these errors start, they occur every 30 seconds and they donā€™t stop. There are so many of them that I had to uninstall the binding. Any idea what might be causing this?

I know there have been several changes to HttpUtil over the last several weeks. Iā€™m running the latest opeHAB build (1312) containing the most recent ESH stable build from July 8.

2018-07-15 20:01:08.602 [ERROR] [handler.ChamberlainMyQGatewayHandler] - Requesting URL Failed
java.io.IOException: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@153afa8b(l:/192.168.10.34:49270 <-> r:myqexternal.myqdevice.com/68.177.15.145:443,closed=false)[HttpChannelOverHTTP@1bfd165c(exchange=HttpExchange@1fc291fb req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@5ac01c67(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@186c5b16{s=START}],recv=HttpReceiverOverHTTP@6bd0e1b1(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of 0}]]]
	at org.openhab.binding.chamberlainmyq.internal.HttpUtil.executeUrl(HttpUtil.java:157) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.request(ChamberlainMyQGatewayHandler.java:410) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.getMyqData(ChamberlainMyQGatewayHandler.java:188) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler$Request.run(ChamberlainMyQGatewayHandler.java:255) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQGatewayHandler.sendRequestToServer(ChamberlainMyQGatewayHandler.java:275) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQHandler.ReadDeviceState(ChamberlainMyQHandler.java:142) ~[?:?]
	at org.openhab.binding.chamberlainmyq.handler.ChamberlainMyQDoorOpenerHandler.channelLinked(ChamberlainMyQDoorOpenerHandler.java:59) ~[?:?]
	at org.eclipse.smarthome.core.thing.link.ThingLinkManager.lambda$0(ThingLinkManager.java:300) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: java.util.concurrent.ExecutionException: java.io.EOFException: HttpConnectionOverHTTP@153afa8b(l:/192.168.10.34:49270 <-> r:myqexternal.myqdevice.com/68.177.15.145:443,closed=false)[HttpChannelOverHTTP@1bfd165c(exchange=HttpExchange@1fc291fb req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@5ac01c67(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@186c5b16{s=START}],recv=HttpReceiverOverHTTP@6bd0e1b1(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of 0}]]]
	at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118) ~[?:?]
	at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:110) ~[?:?]
	at org.eclipse.jetty.client.HttpRequest.send(HttpRequest.java:676) ~[?:?]
	at org.openhab.binding.chamberlainmyq.internal.HttpUtil.executeUrl(HttpUtil.java:140) ~[?:?]
	... 14 more
Caused by: java.io.EOFException: HttpConnectionOverHTTP@153afa8b(l:/192.168.10.34:49270 <-> r:myqexternal.myqdevice.com/68.177.15.145:443,closed=false)[HttpChannelOverHTTP@1bfd165c(exchange=HttpExchange@1fc291fb req=TERMINATED/null@null res=PENDING/null@null)[send=HttpSenderOverHTTP@5ac01c67(req=QUEUED,snd=COMPLETED,failure=null)[HttpGenerator@186c5b16{s=START}],recv=HttpReceiverOverHTTP@6bd0e1b1(rsp=IDLE,failure=null)[HttpParser{s=CLOSED,0 of 0}]]]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.earlyEOF(HttpReceiverOverHTTP.java:300) ~[?:?]
	at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:1392) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.shutdown(HttpReceiverOverHTTP.java:185) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.process(HttpReceiverOverHTTP.java:132) ~[?:?]
	at org.eclipse.jetty.client.http.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:70) ~[?:?]
	at org.eclipse.jetty.client.http.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:90) ~[?:?]
	at org.eclipse.jetty.client.http.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:115) ~[?:?]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) ~[?:?]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) ~[?:?]
	at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:251) ~[?:?]
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:283) ~[?:?]
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:108) ~[?:?]
	at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148) ~[?:?]
	at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671) ~[?:?]
	at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589) ~[?:?]
	... 1 more
2018-07-15 20:01:08.613 [ERROR] [handler.ChamberlainMyQGatewayHandler] - An exception occurred while executing a request to the Gateway: 'null'

I created a copied of the httputils class and made my own version with a different web client id to spoof the iOS app. Maybe something changed in the dependencies that broke something. My main install still uses the 1.x binding and I have notices in my logs lots of exceptions too. I thing Chamberlian may be changing stuff too. I will try to see if I can find anything out.

I noticed that in the last couple days Chamberlain has been doing something on their end to reject certain connections. I just hope they arenā€™t trying to crack down on our unauthorized used of their API. Theyā€™re charging users $1 a month in certain cases.

I had the same errors flooding my logs, then a day later it stopped, so I assumed Chamberlain started to respond again.

Maybe it has something to do with this:

Youā€™re probably right. $10 for a year is not too bad. OTOH, Iā€™ve been pretty unimpressed with the reliability of their service. I hate paying for stuff that doesnā€™t work well.

I feel the same way as well. I would give it a try and if the service continued to be unreliable, I would roll my own arduino with a magnetic switch and a relay to control the door.
Even just recently, the MyQ binding has reported the garage door as open when it is really closed. Openhab sends me a text when it has been open longer than half an hour.

My Openhab installation will not control the garage doors as of 2 days ago. I assume Chamberlain changed something (again) to prevent third party usage. The MyQ app still works. If anyone has any advise to get this to work I would appreciate it. If not, is there a garage door opener that does not rely on a cloud service? I was thinking Insteon but their binding was broke a few weeks ago when an upgrade was pushed. Granted they were very fast to fix it but Iā€™m becoming very leary of anything that is not 100% local control.

1 Like