Closed atruest closed 10 months ago
I am having the same issue as well. I recently hooked an ESP32 up to my garage door opener and added 2 reed switches to the garage door so I can control it locally. Very glad I did it.
Confirming similar behavior and the same error returned from MyQ after reloading HA when the integration is starting. Was working OK since the previous fix was merged until breaking again this morning.
Logger: pymyq.api
Source: components/myq/__init__.py:42
First occurred: 11:30:30 AM (5 occurrences)
Last logged: 11:33:24 AM
Authentication failed: Error requesting data from https://partner-identity.myq-cloud.com/connect/token: 401 - Unauthorized
Similar to @sanctas, I have a ratgdo (https://paulwieland.github.io/ratgdo/) kit on order for local control of my Security+ 2.0 opener, but it would be helpful to have this integration working again until my backordered unit ships out. Thanks all!
EDIT: Wanted to add that the MyQ app on android is working without issues from the same network/internet connection used by my HA instance.
Similar to @sanctas, I have a ratgdo (https://paulwieland.github.io/ratgdo/) kit on order for local control of my Security+ 2.0 opener, but it would be helpful to have this integration working again until my backordered unit ships out. Thanks all!
I actually used an ESP32 soldered to my wireless garage door opener. I'd use the Ratgdo but it's backordered so I went this route instead.
I lost connect in the last 30 minutes due to 429 Too Many Request but phone app still works:
Config entry 'xxx@xxx.com' for myq integration not ready yet: Got 429 error - stopping request until 2023-10-10 16:30:38.802025. there were 1 request; Retrying in background
Getting 401 starting from 8:14AM (PDT). Ordered ratgdo and waiting for it to be arrived.
Hey there @ehendrix23, @lash-l, mind taking a look at this issue as it has been labeled with an integration (myq
) you are listed as a code owner for? Thanks!
(message by CodeOwnersMention)
myq documentation myq source (message by IssueLinks)
I actually used an ESP32 soldered to my wireless garage door opener.
Do you have a link handy explaining how this gets wired up/flashed? I'd like to do the same.
Edit: Found this. It should work for me.
Just started geting this error - first it was the 429 error, deleted the integration and waited til the specified time, then tried re-adding it again and now get 401 unauthorized.
@home-assistant rename MyQ fails to setup with 401 or 429 error
As a reminder - please upvote the original post if you are having the same problem, do not add extra comments stating that you have the same problem - instead upvote the original post. I get buried in notifications and it is extremely difficult to separate helpful information and just chatter.
I don’t have a ton of time this week to try to look at it, but I will try my best. As a reminder to everyone - I don’t own one of these devices, and I am always looking for a new codeowner, I have had one user step forward and attempt to diagnose some problems, I will give them as much support as I can with my limited time this week and if they aren’t able to figure it out, I will try to solve what I can with my limited time
It doesn't seem to be specific to HomeAssistant version. I rolled back to 2023.9.3 and the issue persists.
I am on 2023.9.2 but the latest MyQ code and it is failing
Fixed by updating api.py so that the call to get the OAuth token more closely represents a valid OAuth token call. Changes highlighted in yellow:
IOS_CGI_MYQ:
)*/*
client_id
, client_secret
, and scope
form fields since they're not supposed to be sent on the get token call in the first place[0]
to the line extracting the code
form field to get the code as a string rather than as an arrayAs text:
resp, data = await self.request(
returns="json",
method="post",
url=OAUTH_TOKEN_URI,
websession=session,
headers={
"Authorization": "Basic SU9TX0NHSV9NWVE6",
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "*/*",
},
data={
# "client_id": OAUTH_CLIENT_ID,
# "client_secret": OAUTH_CLIENT_SECRET,
"code": parse_qs(urlsplit(redirect_url).query).get("code", "")[0],
"code_verifier": self._code_verifier,
"grant_type": "authorization_code",
"redirect_uri": OAUTH_REDIRECT_URI
# "scope": parse_qs(urlsplit(redirect_url).query).get(
# "code", "MyQ_Residential offline_access"
# ),
},
login_request=True,
)
And as an aside, it seems that MyQ is slowly tightening their API validations; the code needs a thorough once-over to make sure it's actually compliant with OAuth properly and it isn't doing any other extraneous/incorrect stuff; because given the history of this integration over the past month or so, any further deviations from the spec lurking in the code are likely to result in additional breakage in the future.
And also to add, if you apply this fix you may continue to receive 429 errors until your rate limiting on the MyQ API (caused by the broken code previously running and having sent too many requests to the API and getting your IP temporarily blocked for a while). Those issues should clear up within an hour or two.
Hey @drysart Thanks for your insight. That's rather interesting - it is my understanding that basically everything the maintainers before me have in this library is just a port from the homebridge myq api. They use scope, client_id, secret, etc.
I have a dummy account with no devices that I have used for testing for logging in before - I can give this a try in a bit and see if I get similar results. Where do you get your "Basic SU9TX0NHSV9NWVE6" from?
Feel free to make a PR on the python-myq repo I'd be more than happy to directly merge in your changes if it works for me as well (If you don't want to for any reason - I can make the changes later)
Where do you get your "Basic SU9TX0NHSV9NWVE6" from?
It's just base64 encoded IOS_CGI_MYQ:
so I assume it's what the IOS app uses.
I applied drysart's change and am still throttled, but maybe it just needs to clear.
Can confirm after changes and after the timeout expired I was able to authenticate correctly. The interesting thing now is to see if we get 429's since it is calling more frequently than once per minute.
Trying this now... will report back.
Edit: Still getting 429s, will wait another hour or 2.
Edit edit: Confirmed. Nice work, @drysart!
It's just base64 encoded
IOS_CGI_MYQ:
so I assume it's what the IOS app uses.
Most likely. I grabbed it from a Postman login request to MyQ.
Can confirm after changes and after the timeout expired I was able to authenticate correctly. The interesting thing now is to see if we get 429's since it is calling more frequently than once per minute.
I don't think it will. The 429s were arising in the first place because the login logic basically spams the service with retries when the login fails (it retries 5 times, then homeassistant restarts the integration which causes it to do it again right away). Without that issue, the API usage should be well below the rate limits.
Can confirm that @drysart 's fix did resolve this, once my timeout expired. Has been solid for 10 minutes. Will report back if it loses availability. Thanks!
I have tested @drysart ‘s changes and can confirm they are working for me and my HA instance is authenticating correctly. Thank you!!
I had disabled the (broken) integration probably 4-5 hours ago when I noticed it wasn’t working, and I didn’t get a 429 error when I tried the changes just now, so if you try and it doesn’t work, try again in a couple hours.
Just wanted to confirm that @drysart 's changes are working for me as well. I would suggest anyone having issues with this to disable able the integration until you get an update to avoid any 429 Rate limit errors
Also, Thank you!!
@Lash-L See https://github.com/Python-MyQ/Python-MyQ/pull/18
@drysart updated api.py working for me! Thanks!
Can confirm this resolved my issue as well.
cover.garage_door
was unavailable, logs reported 401 error). /usr/local/lib/python3.11/site-packages/pymyq/api.py
(your installation may vary)docker exec
'd into my HA container, backed up the file, opened the file in vi, found the code string referenced above within the fileYou guys are the best. Keep up the great work!
The fix worked for a few hours, but I'm getting 403's now. Is anybody else seeing this?
2023-10-10 16:32:51.696 ERROR (MainThread) [homeassistant.components.myq] Error fetching myq devices data: Error trying to re-authenticate to myQ service: Error requesting data from https://partner-identity.myq-cloud.com/connect/token: 403 - Forbidden
It feels like they're actively doing everything in their power to block third party API access, at this point.
New issue within pymyq repo is created around the 403's here: https://github.com/Python-MyQ/Python-MyQ/issues/19
The fix worked for a few hours, but I'm getting 403's now. Is anybody else seeing this?
2023-10-10 16:32:51.696 ERROR (MainThread) [homeassistant.components.myq] Error fetching myq devices data: Error trying to re-authenticate to myQ service: Error requesting data from https://partner-identity.myq-cloud.com/connect/token: 403 - Forbidden
It feels like they're actively doing everything in their power to block third party API access, at this point.
anddd it's gone again.
Same as you. Worked for awhile now getting this error again
Attempt 1 request failed with exception : 429 - Too Many Requests
Same issue started for me as well. MyQ must have updated earlier today. Please push update with fix.
Yeah the endpoint was just updated again, my previously working Postman OAuth login isn't working anymore either and failing with a 403. If you're getting 429 it's because of the previously mentioned issue that when login fails, homeassistant repeatedly hits the endpoint until it gets rate-limited.
Same issue started for me as well. MyQ must have updated earlier today. Please push update with fix.
What update? A lot of us in this thread put the aforementioned fix in place manually, and we're again getting 403s/429s.
We're basically back to square one.
Can confirm this resolved my issue as well.
- After updating to 2023.10, my MyQ issues went away, but came back today (
cover.garage_door
was unavailable, logs reported 401 error).- I found this ticket, and found that there was a code update (thanks @drysart!)
- Logs said the issue was at
/usr/local/lib/python3.11/site-packages/pymyq/api.py
(your installation may vary)- I
docker exec
'd into my HA container, backed up the file, opened the file in vi, found the code string referenced above within the file- I deleted all of the code referenced in the above snippet, then copy/pasted the plaintext version into the file, then saved it
- Restarted HA
- Once HA came back up, the MyQ integration began working instantly, both with status and commands.
You guys are the best. Keep up the great work!
I'm now getting 401s:
Authentication failed: Error requesting data from https://partner-identity.myq-cloud.com/connect/token: 401 - Unauthorized
8:58:39 PM – (ERROR) /usr/local/lib/python3.11/site-packages/pymyq/api.py - message first occurred at 8:50:29 PM and shows up 5 times
Config entry 'myq@gahs.us' for myq integration not ready yet: Error requesting data from https://partner-identity.myq-cloud.com/connect/token: 401 - Unauthorized; Retrying in background
8:50:43 PM – (WARNING) /usr/src/homeassistant/homeassistant/config_entries.py - message first occurred at 8:50:29 PM and shows up 3 times
Going to see if I can capture what the iOS app is doing on login, there must be some detail that's missing.
Going to see if I can capture what the iOS app is doing on login, there must be some detail that's missing.
Weird that the homebridge implementation seems to still be working. I don't remember seeing any major differences between the implementations.
For what it's worth, Homebridge seems to be working. I have only the MyQ plugin installed and have both my openers showing up, and working, in Home Assistant and IOS Homekit.
I'm down too..
IOS works fine.. HAAS is not getting access.
My MyQ integration just disappeared after a reboot while i was experiencing this issue. I've got the latest python-myQ in place, but I can't log in, and getting the 403. Not trying to add noise, but wondering if there's any use in nabbing the token from an auth of the iOS app's auth through an https proxy. Not sure how long the auth would last though.
Can confirm the homebridge myq-api implementation works. There's some stuff that needs to change in python-myq around authentication to mirror it -- namely:
Python-myq also does some automatic user-agent generation that the homebridge implementation doesn't do, but as far as I can tell, passing one doesn't cause a failure.
I poked a bit at my local homeassistant to see if there was a quick fix that would get things working without being too impactful on the code and couldn't get success, and I'm neither fluent enough in Python to do it well, nor set up for easy homeassistant dev/debugging work to tackle a bigger effort, so I'll leave this in the hands of someone better positioned to work on it with hopefully the info above is a good starting point.
Also note that because they seem to require weird cookie behavior and non-standard arguments to the get token endpoint, tools that do standard OAuth stuff, like Postman, no longer work to log into the API (they did earlier today before the last round of API breakage). It must be done non-standard.
(And if it's helpful, during my investigation I implemented a straightforward working login flow in C#, gist here.)
Can confirm the homebridge myq-api implementation works. There's some stuff that needs to change in python-myq around authentication to mirror it -- namely:
- The cookie handling across the process isn't standard (there used to be cookie handling in the python-myq code until earlier this month that looked like it was trying to do what myq-api does, but it wasn't doing it correctly), homebridge myq-api manually collects and uses cookies in a certain way and that seems to be important for the login process working -- only some requests get some cookies from certain previous requests, and other requests don't get cookies at all; and that matters.
- myq-api also does the final get token call differently (it's not OAuth-compliant, but it seems the willful deviation from the spec is necessary; the extra data seems to be needed now when it wasn't a few hours ago).
- And the most important difference is that myq-api will automatically retry requests on the myq API's east and west domains to try to work around failures and there's no infrastructure for that in python-myq currently. (Right now partner-identity-east.myq-cloud.com gives me tokens, but partner-identity.myq-cloud.com does not; but myq-api's documentation seems to suggest myq's API is very unreliable and it's not unusual for one region to work while the other domains don't.)
Python-myq also does some automatic user-agent generation that the homebridge implementation doesn't do, but as far as I can tell, passing one doesn't cause a failure.
I poked a bit at my local homeassistant to see if there was a quick fix that would get things working without being too impactful on the code and couldn't get success, and I'm neither fluent enough in Python to do it well, nor set up for easy homeassistant dev/debugging work to tackle a bigger effort, so I'll leave this in the hands of someone better positioned to work on it with hopefully the info above is a good starting point.
Also note that because they seem to require weird cookie behavior and non-standard arguments to the get token endpoint, tools that do standard OAuth stuff, like Postman, no longer work to log into the API (they did earlier today before the last round of API breakage). It must be done non-standard.
(And if it's helpful, during my investigation I implemented a straightforward working login flow in C#, gist here.)
Could you explain how to add this workaround login flow in HA setup ?
Reguarding your first solution I assume that the client ID (base64 encoded value for IOS_CGI_MYQ: is unique. Where Can I find it ? Thanks !
Having the issue and liked the thread here but wanted to just call out that I have the MyQ integration working in NodeRed.. that's my work around for now but it works without issue.
Having the issue and liked the thread here but wanted to just call out that I have the MyQ integration working in NodeRed.. that's my work around for now but it works without issue.
Can you describe your NodeRed workaround?
Having the issue and liked the thread here but wanted to just call out that I have the MyQ integration working in NodeRed.. that's my work around for now but it works without issue.
Can you describe your NodeRed workaround?
NodeRed is connected to HomeAssistant using node-red-contrib-home-assistant-websocket.
not reporting door status sadly. I will move back to the MyQ integration as soon as I'm able.
Below is the Json you can import right into NR
[ { "id": "a3f120964124df90", "type": "change", "z": "51c622c516c8a591", "name": "open", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "open", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 920, "wires": [ [ "016e7ba6880f23d1" ] ] }, { "id": "8e3aacf010b2ac70", "type": "change", "z": "51c622c516c8a591", "name": "close", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "close", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 980, "wires": [ [ "016e7ba6880f23d1" ] ] }, { "id": "35f465180521a23f", "type": "change", "z": "51c622c516c8a591", "name": "open", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "open", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 1040, "wires": [ [ "936359e0fcb4a45f" ] ] }, { "id": "0e13aa33e9700ddc", "type": "change", "z": "51c622c516c8a591", "name": "close", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "close", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 1080, "wires": [ [ "936359e0fcb4a45f" ] ] }, { "id": "016e7ba6880f23d1", "type": "myq-device-node", "z": "51c622c516c8a591", "user": "", "name": "Big Garage Door", "serialnumber": "", "x": 1110, "y": 940, "wires": [ [] ] }, { "id": "936359e0fcb4a45f", "type": "myq-device-node", "z": "51c622c516c8a591", "user": "", "name": "Small Garage Door", "serialnumber": "", "x": 1110, "y": 1040, "wires": [ [] ] }, { "id": "7673e7bf46bb3ea1", "type": "ha-switch", "z": "51c622c516c8a591", "name": "Big Garage Door", "version": 0, "debugenabled": false, "inputs": 0, "outputs": 2, "entityConfig": "6185f9a1625590f6", "enableInput": false, "outputOnStateChange": true, "outputProperties": [ { "property": "outputType", "propertyType": "msg", "value": "state change", "valueType": "str" }, { "property": "payload", "propertyType": "msg", "value": "", "valueType": "entityState" } ], "x": 420, "y": 940, "wires": [ [ "a3f120964124df90" ], [ "8e3aacf010b2ac70" ] ] }, { "id": "b24789226ff552c0", "type": "ha-switch", "z": "51c622c516c8a591", "name": "Small Garage Door", "version": 0, "debugenabled": false, "inputs": 0, "outputs": 2, "entityConfig": "77d344e869e4608e", "enableInput": false, "outputOnStateChange": true, "outputProperties": [ { "property": "outputType", "propertyType": "msg", "value": "state change", "valueType": "str" }, { "property": "payload", "propertyType": "msg", "value": "", "valueType": "entityState" } ], "x": 430, "y": 1060, "wires": [ [ "35f465180521a23f" ], [ "0e13aa33e9700ddc" ] ] }, { "id": "6185f9a1625590f6", "type": "ha-entity-config", "server": "5fbe2452be6e7165", "deviceConfig": "f13664967f4d97cc", "name": "Big Garage Door", "version": "6", "entityType": "switch", "haConfig": [ { "property": "name", "value": "Big Garage Door" }, { "property": "icon", "value": "" }, { "property": "entity_category", "value": "" }, { "property": "entity_picture", "value": "" }, { "property": "device_class", "value": "" } ], "resend": false, "debugEnabled": false }, { "id": "77d344e869e4608e", "type": "ha-entity-config", "server": "5fbe2452be6e7165", "deviceConfig": "d7d9b3a627f6cec9", "name": "Small Garage Door", "version": "6", "entityType": "switch", "haConfig": [ { "property": "name", "value": "Small Garage Door" }, { "property": "icon", "value": "" }, { "property": "entity_category", "value": "" }, { "property": "entity_picture", "value": "" }, { "property": "device_class", "value": "" } ], "resend": false, "debugEnabled": false }, { "id": "5fbe2452be6e7165", "type": "server", "name": "Home Assistant", "version": 5, "addon": false, "rejectUnauthorizedCerts": true, "ha_boolean": "y|yes|true|on|home|open", "connectionDelay": true, "cacheJson": true, "heartbeat": true, "heartbeatInterval": "30", "areaSelector": "friendlyName", "deviceSelector": "friendlyName", "entitySelector": "friendlyName", "statusSeparator": ": ", "statusYear": "hidden", "statusMonth": "short", "statusDay": "numeric", "statusHourCycle": "default", "statusTimeFormat": "h:m", "enableGlobalContextStore": true }, { "id": "f13664967f4d97cc", "type": "ha-device-config", "name": "Big Garage Door", "hwVersion": "", "manufacturer": "Node-RED", "model": "", "swVersion": "" }, { "id": "d7d9b3a627f6cec9", "type": "ha-device-config", "name": "Small Garage Door", "hwVersion": "", "manufacturer": "Node-RED", "model": "", "swVersion": "" } ]
[ { "id": "a3f120964124df90", "type": "change", "z": "51c622c516c8a591", "name": "open", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "open", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 920, "wires": [ [ "016e7ba6880f23d1" ] ] }, { "id": "8e3aacf010b2ac70", "type": "change", "z": "51c622c516c8a591", "name": "close", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "close", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 980, "wires": [ [ "016e7ba6880f23d1" ] ] }, { "id": "35f465180521a23f", "type": "change", "z": "51c622c516c8a591", "name": "open", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "open", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 1040, "wires": [ [ "936359e0fcb4a45f" ] ] }, { "id": "0e13aa33e9700ddc", "type": "change", "z": "51c622c516c8a591", "name": "close", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "close", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 830, "y": 1080, "wires": [ [ "936359e0fcb4a45f" ] ] }, { "id": "016e7ba6880f23d1", "type": "myq-device-node", "z": "51c622c516c8a591", "user": "", "name": "Big Garage Door", "serialnumber": "", "x": 1110, "y": 940, "wires": [ [] ] }, { "id": "936359e0fcb4a45f", "type": "myq-device-node", "z": "51c622c516c8a591", "user": "", "name": "Small Garage Door", "serialnumber": "", "x": 1110, "y": 1040, "wires": [ [] ] }, { "id": "7673e7bf46bb3ea1", "type": "ha-switch", "z": "51c622c516c8a591", "name": "Big Garage Door", "version": 0, "debugenabled": false, "inputs": 0, "outputs": 2, "entityConfig": "6185f9a1625590f6", "enableInput": false, "outputOnStateChange": true, "outputProperties": [ { "property": "outputType", "propertyType": "msg", "value": "state change", "valueType": "str" }, { "property": "payload", "propertyType": "msg", "value": "", "valueType": "entityState" } ], "x": 420, "y": 940, "wires": [ [ "a3f120964124df90" ], [ "8e3aacf010b2ac70" ] ] }, { "id": "b24789226ff552c0", "type": "ha-switch", "z": "51c622c516c8a591", "name": "Small Garage Door", "version": 0, "debugenabled": false, "inputs": 0, "outputs": 2, "entityConfig": "77d344e869e4608e", "enableInput": false, "outputOnStateChange": true, "outputProperties": [ { "property": "outputType", "propertyType": "msg", "value": "state change", "valueType": "str" }, { "property": "payload", "propertyType": "msg", "value": "", "valueType": "entityState" } ], "x": 430, "y": 1060, "wires": [ [ "35f465180521a23f" ], [ "0e13aa33e9700ddc" ] ] }, { "id": "6185f9a1625590f6", "type": "ha-entity-config", "server": "5fbe2452be6e7165", "deviceConfig": "f13664967f4d97cc", "name": "Big Garage Door", "version": "6", "entityType": "switch", "haConfig": [ { "property": "name", "value": "Big Garage Door" }, { "property": "icon", "value": "" }, { "property": "entity_category", "value": "" }, { "property": "entity_picture", "value": "" }, { "property": "device_class", "value": "" } ], "resend": false, "debugEnabled": false }, { "id": "77d344e869e4608e", "type": "ha-entity-config", "server": "5fbe2452be6e7165", "deviceConfig": "d7d9b3a627f6cec9", "name": "Small Garage Door", "version": "6", "entityType": "switch", "haConfig": [ { "property": "name", "value": "Small Garage Door" }, { "property": "icon", "value": "" }, { "property": "entity_category", "value": "" }, { "property": "entity_picture", "value": "" }, { "property": "device_class", "value": "" } ], "resend": false, "debugEnabled": false }, { "id": "5fbe2452be6e7165", "type": "server", "name": "Home Assistant", "version": 5, "addon": false, "rejectUnauthorizedCerts": true, "ha_boolean": "y|yes|true|on|home|open", "connectionDelay": true, "cacheJson": true, "heartbeat": true, "heartbeatInterval": "30", "areaSelector": "friendlyName", "deviceSelector": "friendlyName", "entitySelector": "friendlyName", "statusSeparator": ": ", "statusYear": "hidden", "statusMonth": "short", "statusDay": "numeric", "statusHourCycle": "default", "statusTimeFormat": "h:m", "enableGlobalContextStore": true }, { "id": "f13664967f4d97cc", "type": "ha-device-config", "name": "Big Garage Door", "hwVersion": "", "manufacturer": "Node-RED", "model": "", "swVersion": "" }, { "id": "d7d9b3a627f6cec9", "type": "ha-device-config", "name": "Small Garage Door", "hwVersion": "", "manufacturer": "Node-RED", "model": "", "swVersion": "" } ]
Great solution. Works like a charm!
Has anyone reached out to MyQ directly? HomeAssistant is a big enough community/product that they'd probably be willing to work with us, so that A) we are happy, and B) we don't break their API.
Has anyone reached out to MyQ directly? HomeAssistant is a big enough community/product that they'd probably be willing to work with us, so that A) we are happy, and B) we don't break their API.
They'd be happy to charge us, like they do every other integration.
i mean... i'm a paying customer. i bought their hardware, and pay a monthly fee to connect their service to my car.
(Thrusting hips violently) "Corporate Greed!!"
My problem is that I started my smart home with MyQ Garage Door Openers, wall switches, and plug sockets. I have an original MyQ Hub (before it was smart). I was under the assumption that I was operating on MY wifi using access locally to MY hub. Now I find out that access is all via the cloud? And that they have the ability to now charge me for access to MY devices?
I was able to get access on IFTT for a minute before THEY went the "Corporate Greed" route ( I think it was the month before it happened), Then I found HomeBridge, which worked great, and then I went to HA - which worked even better. Now I want to get access locally - and if that means pulling switches out of the walls, I'll be disappointed but I'll do it.
I also have used Shelly relays - and some of the things I'm seeing there are starting to concern me. It's almost as if the heads of these corporations either do not use their own products, or are so blinded by the fact that they will get their (free) access no matter what that they can't see the situation from our perspective (or are so greedy that it doesn't matter).
They would sell more of these boxes if they also opened up a local API to talk to the devices on your local network from your HA server rather than force the cloud service API dependency. I can't image it would be any more or less security. If your cloud account can be hacked your garage can be opened from anywhere in the world. If you protect your home network, someone would have to break into your home network to talk to the device locally to open your door.
They would sell more of these boxes if they also opened up a local API to talk to the devices on your local network from your HA server rather than force the cloud service API dependency. I can't image it would be any more or less security. If your cloud account can be hacked your garage can be opened from anywhere in the world. If you protect your home network, someone would have to break into your home network to talk to the device locally to open your door.
Hear Hear!!
The problem
HA 2023.10.1 worked ok for a few days but now similar failure when trying a reload. See error log below
What version of Home Assistant Core has the issue?
2023.10.1
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant OS
Integration causing the issue
MyQ
Link to integration documentation on our website
No response
Diagnostics information
Logger: homeassistant.components.myq Source: helpers/update_coordinator.py:322 Integration: MyQ (documentation, issues) First occurred: 10:19:24 AM (1 occurrences) Last logged: 10:19:24 AM
Error fetching myq devices data: Error trying to re-authenticate to myQ service: Error requesting data from https://partner-identity.myq-cloud.com/connect/token: 401 - Unauthorized
Example YAML snippet
No response
Anything in the logs that might be useful for us?
Additional information
No response