hjdhjd/homebridge-myq

MyQ API Error

ghosilyk opened this issue · 5 comments

Describe The Problem:
Since the iOS latest update this plugin stopped working. It shows the following error:

myQ API error: Temporary myQ API server-side issues encountered: 429 - Too Many Requests. This typically indicates a myQ API lockout for a 60-90 minute period before resuming API connectivity.

To Reproduce:

Logs:

[10/19/2023, 9:15:53 PM] [MyQ] myQ API error: Temporary myQ API server-side issues encountered: 429 - Too Many Requests. This typically indicates a myQ API lockout for a 60-90 minute period before resuming API connectivity.

Homebridge Configuration:

Config is standard, only info in there is my username and password.

Screenshots:

Environment:

  • Homebridge Version: 1. 6.1
  • Node Version: 18.18.2
  • Homebridge-myQ Plugin Version: 3.4.3
  • Apple Device and iOS / macOS / iPadOS / tvOS Version: iOS 17.0.3
  • Operating System and OS Version: Raspbian GNU/Linux Bullseye (11)

I just restored back to v3.4.1 and it is doing it there also. Thanks for logging, I was about to 👍

+1 I am experiencing the same issue on homebridge-myq v3.4.3

My log shows:

[10/19/2023, 10:52:13 PM] [myQ] myQ API: Unable to access the OAuth authorization endpoint.
[10/19/2023, 10:54:14 PM] [myQ] myQ API: https://partner-identity.myq-cloud.com/connect/authorize?client_id=IOS_CGI_MYQ&code_challenge=(redacted)&code_challenge_method=S256&redirect_uri=com.myqops%3A%2F%2Fios&response_type=code&scope=MyQ_Residential+offline_access Error: 429 

I notice that when I manually curl the URL above, I get sent through a cloudflare portal. I wonder if they've (MyQ) been getting DDoS'd and have implemented some rate-limiting security on their side.

I notice retries are happening every 3 seconds on my instance.

[10/19/2023, 10:57:49 PM] [myQ] myQ API error: Temporary myQ API server-side issues encountered: 429 - Too Many Requests. This typically indicates a myQ API lockout for a 60-90 minute period before resuming API connectivity.
[10/19/2023, 10:57:50 PM] [myQ] myQ API error: Temporary myQ API server-side issues encountered: 429 - Too Many Requests. This typically indicates a myQ API lockout for a 60-90 minute period before resuming API connectivity.
[10/19/2023, 10:57:53 PM] [myQ] myQ API error: Temporary myQ API server-side issues encountered: 429 - Too Many Requests. This typically indicates a myQ API lockout for a 60-90 minute period before resuming API connectivity.

We may have a thundering herd issue wherein all the homebridge clients using MyQ are retrying and retrying without backing off, which could cause the API to rate-limit our client. Let's try implementing a random backoff timer for auth.

Edit: Actually this retry appears to be inside of the underlying library:
https://github.com/hjdhjd/myq/blob/99e39834767eff53c933bfdd19b4c31af4714de7/src/myq-api.ts#L909

This might be a little tricky because auth is implemented as a Promise and the retry can't be turned off. A change would have to be made upstream hjdhjd/myq.

To be honest, any retries wrapping a finicky API like MyQ's really should have exponential backoff.

@hjdhjd is this a feature you'd sign off on if I wrote it? I don't mind contributing.

This is a copy of issue 1128 a lot of people are having this problem (including me) but the host has stated he is not interested in a fix as stated here.

myQ pulling some shenanigans no doubt. I can't speak for the guy but this will likely be closed soon.

I believe he is actively working on a solution. This situation is constantly changing, and it's important to remember that he has a life beyond just working on the HomeKit garage door plugin. Someone mentioned that the problem might be related to Cloudflare's anti-bot measures. I genuinely empathize with him because he's receiving a lot of pressure. A few days ago, it appeared that the issue had been resolved, but unfortunately, it has resurfaced. It's worth noting that some users who haven't restarted Homebridge or needed to re-authenticate haven't experienced the issue when these reports were made and hence per his statement - at that time (3 days ago) there was nothing to fix.