NickWaterton / Roomba980-Python

Python program and library to control iRobot Roomba 980 Vacuum Cleaner
MIT License
361 stars 103 forks source link

UID Missing? #127

Open h00pak opened 3 months ago

h00pak commented 3 months ago

Trying to use the cloud based command, but getting problem with a UID?

mac:roomba rby$ h00011@testemail.com Passw0rd!! 2024-03-19 20:50:15 INFO [Roomba.Password] Using Password version 2.1 2024-03-19 20:50:15 INFO [Roomba.Password] reading/writing info from config file ./config.ini 2024-03-19 20:50:15 INFO [Roomba.Password] waiting on port: 5678 for data 2024-03-19 20:50:15 INFO [Roomba.Password] Robot at IP: 192.168.1.51 Data: { "ver": "3", "hostname": "Roomba-3165050861141710", "robotname": "Roomby Foyer", "ip": "192.168.1.51", "mac": "80:C5:F2:CE:82:0C", "sw": "3.5.62", "sku": "R690020", "nc": 0, "proto": "mqtt", "cap": { "ota": 1, "eco": 1, "svcConf": 1 } } 2024-03-19 20:50:15 INFO [Roomba.Password] Robot at IP: 192.168.1.86 Data: { "ver": "3", "hostname": "Roomba-3167C91801016540", "robotname": "Roomby Gym", "ip": "192.168.1.86", "mac": "80:C5:F2:C4:8B:58", "sw": "3.5.62", "sku": "R690020", "nc": 0, "proto": "mqtt", "cap": { "ota": 1, "eco": 1, "svcConf": 1 } } 2024-03-19 20:50:15 INFO [Roomba.Password] Robot at IP: 192.168.1.89 Data: { "ver": "3", "hostname": "Roomba-3176C30460837590", "robotname": "Roomby Lounge", "ip": "192.168.1.89", "mac": "D0:C5:D3:DC:A1:9A", "sw": "3.5.62", "sku": "R690020", "nc": 0, "proto": "mqtt", "cap": { "ota": 1, "eco": 1, "svcConf": 1 } } 2024-03-19 20:50:25 INFO [Roomba.Password] Getting Roomba information from iRobot aws cloud... 2024-03-19 20:50:26 DEBUG [urllib3.connectionpool] Starting new HTTPS connection (1): disc-prod.iot.irobotapi.com:443 2024-03-19 20:50:26 DEBUG [urllib3.connectionpool] https://disc-prod.iot.irobotapi.com:443 "GET /v1/discover/endpoints?country_code=US HTTP/1.1" 200 1789 2024-03-19 20:50:26 DEBUG [urllib3.connectionpool] Starting new HTTPS connection (1): accounts.us1.gigya.com:443 2024-03-19 20:50:26 DEBUG [urllib3.connectionpool] https://accounts.us1.gigya.com:443 "POST /accounts.login HTTP/1.1" 200 211 Traceback (most recent call last): File "./password.py", line 294, in main() File "./password.py", line 291, in main get_passwd.get_password() File "./password.py", line 119, in get_password iRobot.login() File "/Users/robby/.homebridge/Roomba980-Python/roomba/getcloudpassword.py", line 107, in login uid = response['UID'] KeyError: 'UID'

NickWaterton commented 3 months ago

I guess it’s not logging in to your Roomba account.

did you enter your Roomba account login and password correctly? You may need to put “ around your password if it has special characters in it.

h00pak commented 3 months ago

Thanks for the reply. I tried adding the quotation marks (at first I thought I would just go change my irobot password but they're requiring special characters now). I got pretty much the same thing: Brian:roomba robby$ ./password.py hlogin@mtestemail.com "2345FGGG!!" 2024-03-20 20:52:27 INFO [Roomba.Password] Using Password version 2.1 2024-03-20 20:52:27 INFO [Roomba.Password] reading/writing info from config file ./config.ini 2024-03-20 20:52:27 INFO [Roomba.Password] waiting on port: 5678 for data 2024-03-20 20:52:27 INFO [Roomba.Password] Robot at IP: 192.168.1.XX Data: { "ver": "3", "hostname": "Roomba-3176C30460837590", "robotname": "Roomby Lounge", "ip": "192.168.1.XX", "mac": "D0:C5:D3:DC:A1:9A", "sw": "3.5.62", "sku": "R690020", "nc": 0, "proto": "mqtt", "cap": { "ota": 1, "eco": 1, "svcConf": 1 } } 2024-03-20 20:52:27 INFO [Roomba.Password] Robot at IP: 192.168.1.XX Data: { "ver": "3", "hostname": "Roomba-3167C91801016540", "robotname": "Roomby Gym", "ip": "192.168.1.86", "mac": "80:C5:F2:C4:8B:58", "sw": "3.5.62", "sku": "R690020", "nc": 0, "proto": "mqtt", "cap": { "ota": 1, "eco": 1, "svcConf": 1 } } 2024-03-20 20:52:27 INFO [Roomba.Password] Robot at IP: 192.168.1.XX Data: { "ver": "3", "hostname": "Roomba-3165050861141710", "robotname": "Roomby Foyer", "ip": "192.168.1.XX", "mac": "80:C5:F2:CE:82:0C", "sw": "3.5.62", "sku": "R690020", "nc": 0, "proto": "mqtt", "cap": { "ota": 1, "eco": 1, "svcConf": 1 } } 2024-03-20 20:52:37 INFO [Roomba.Password] Getting Roomba information from iRobot aws cloud... 2024-03-20 20:52:37 DEBUG [urllib3.connectionpool] Starting new HTTPS connection (1): disc-prod.iot.irobotapi.com:443 2024-03-20 20:52:38 DEBUG [urllib3.connectionpool] https://disc-prod.iot.irobotapi.com:443 "GET /v1/discover/endpoints?country_code=US HTTP/1.1" 200 1789 2024-03-20 20:52:38 DEBUG [urllib3.connectionpool] Starting new HTTPS connection (1): accounts.us1.gigya.com:443 2024-03-20 20:52:38 DEBUG [urllib3.connectionpool] https://accounts.us1.gigya.com:443 "POST /accounts.login HTTP/1.1" 200 212 Traceback (most recent call last): File "./password.py", line 294, in main() File "./password.py", line 291, in main get_passwd.get_password() File "./password.py", line 119, in get_password iRobot.login() File "/Users/robby/.homebridge/Roomba980-Python/roomba/getcloudpassword.py", line 107, in login uid = response['UID'] KeyError: 'UID'

NickWaterton commented 3 months ago

I’m not sure what to tell you. It works, because I just tried it, with no problems.

The reason you get the error is that aws is returning an error message, which does not have the ID field in it. The usual cause is incorrect login or password.

If you want to see the error message, you can edit getcloudpassword.py and add after line 106:

print(“response: {}”.format(response))

Which will print the error message you get back. Usually it says “invalid loginID or password”.

If you want to see what you are sending, add at line 97:

Print(“data: {}”.format(data))

Which should show what you are sending for login and password. Likely still something to do with the special characters in your password.

Linux does not like special characters in strings…

h00pak commented 3 months ago

Finally. It all came down to having two (2) special characters at the end of the password. Removed the last one and immediate response.

Thanks for all your help.

On Mar 21, 2024, at 4:06 PM, Nick Waterton @.***> wrote:

I’m not sure what to tell you. It works, because I just tried it, with no problems.

The reason you get the error is that aws is returning an error message, which does not have the ID field in it. The usual cause is incorrect login or password.

If you want to see the error message, you can edit getcloudpassword.py and add after line 106:

print(“response: {}”.format(response)) Which will print the error message you get back. Usually it says “invalid loginID or password”.

If you want to see what you are sending, add at line 97:

Print(“data: {}”.format(data)) Which should show what you are sending for login and password. Likely still something to do with the special characters in your password.

Linux does not like special characters in strings…

— Reply to this email directly, view it on GitHub https://github.com/NickWaterton/Roomba980-Python/issues/127#issuecomment-2013736497, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFTMFOGDVOBCJZGICHQFW7DYZNDWHAVCNFSM6AAAAABE6UMVEGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMJTG4ZTMNBZG4. You are receiving this because you authored the thread.

NickWaterton commented 3 months ago

Yes.