home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
72.15k stars 30.19k forks source link

iRobot Roomba J7+ fails to be detected or connected #111599

Open nilkemorya opened 7 months ago

nilkemorya commented 7 months ago

The problem

I have an Irobot J7+ I am trying to add onto the HA integration. My older roomba works fine, but the j7+ shows as not visible on the network, and if I provide an IP it just gives failed to connect.

What version of Home Assistant Core has the issue?

2024.2.4

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

roomba

Link to integration documentation on our website

https://www.home-assistant.io/integrations/roomba/

Diagnostics information

When I try to add this roomba it just claims it can't find it and errors out. Oddly when I check the debug logs I find that is can see it, but the wizard doesn't consider it reachable for some reason. Screenshot 2024-02-26 200455

Example YAML snippet

No response

Anything in the logs that might be useful for us?

2024-02-26 19:34:07.735 DEBUG (SyncWorker_27) [roombapy.discovery] Received response: b'{"ver":"4","hostname":"iRobot-AA5A82D4789A467AACDF52EA05CA7375","robotname":"Inquisitor","robotid":"AA5A82D4789A467AACDF52EA05CA7375","ip":"192.168.0.26","mac":"50:14:79:B9:BA:6E","sw":"sapphire+23.37.5+2023-10-17-5245d211fc3+Firmware-Production+165","sku":"j755020","nc":0,"proto":"mqtt","cap":{"binFullDetect":2,"addOnHw":1,"oMode":10,"odoa":7,"dockComm":1,"maps":3,"pmaps":10,"mc":2,"sem2umf":2,"tLine":2,"area":1,"eco":1,"multiPass":2,"pp":0,"edge":null,"team":1,"pose":2,"lang":2,"hm":0,"5ghz":1,"prov":3,"sched":2,"svcConf":1,"ota":2,"log":2,"langOta":0,"ns":1,"bleLog":1,"expectingUserConf":2,"idl":1},"freq":5220,"cloudConnState":14}', address: ('192.168.0.26', 5678)

Additional information

I have a second irobot 980 which works flawlessly, so it's probably nothing inherint in my network.

home-assistant[bot] commented 7 months ago

Hey there @pschmitt, @cyr-ius, @shenxn, @xitee1, @orhideous, mind taking a look at this issue as it has been labeled with an integration (roomba) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `roomba` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Renames the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign roomba` Removes the current integration label and assignees on the issue, add the integration domain after the command. - `@home-assistant add-label needs-more-information` Add a label (needs-more-information, problem in dependency, problem in custom component) to the issue. - `@home-assistant remove-label needs-more-information` Remove a label (needs-more-information, problem in dependency, problem in custom component) on the issue.

(message by CodeOwnersMention)


roomba documentation roomba source (message by IssueLinks)

nilkemorya commented 7 months ago

If this ends up being a duplicate at it would be more helpful for me to put logs elsewhere let me know.

terppatyyppi commented 7 months ago

I have the same problem since sometime yesterday or the day before. HA integration that has been in succesfull use for at least a year just stopped working. Device not found, IP not found. HA in Docker installation.

The device is i7 and it's working otherwise, just not with the integration anymore.

egg02 commented 7 months ago

I have the same problem with a roomba j7. The device is detected and HA gives me the opportunity to configure it.

Then, the device IP is shown and after clicking on "Send" and waiting some time, I get "connection failed."

Nothing in the logs.

HA 2024.2.4.

Petro31 commented 7 months ago

A nugget of information that OP did not provide is that he's also unable to connect to the device via roombapy to get the password. I believe this issue should be forwarded to the upstream library and corrected there. The error he recieved when attempting to get the password is:

Traceback (most recent call last):
File “”, line 1, in
File “/usr/local/lib/python3.12/site-packages/roombapy/entry_points.py”, line 34, in password
_validate_roomba_info(roomba_info)
File “/usr/local/lib/python3.12/site-packages/roombapy/entry_points.py”, line 85, in _validate_roomba_info
raise RoombaConnectionError(msg)
roombapy.roomba.RoombaConnectionError: cannot find roomba

conversation -> https://community.home-assistant.io/t/irobot-roomba-init/687957/32

egg02 commented 7 months ago

Yep, same for me. At least I get a "File" name, but that won't help:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.12/site-packages/roombapy/entry_points.py", line 34, in password
    _validate_roomba_info(roomba_info)
  File "/usr/local/lib/python3.12/site-packages/roombapy/entry_points.py", line 85, in _validate_roomba_info
    raise RoombaConnectionError(msg)
roombapy.roomba.RoombaConnectionError: cannot find roomba

I can ping to the roomba from the host and from within the container.

Orhideous commented 7 months ago

@egg02 If you have a Linux-based system nearby, you can try to probe your robot with a new CLI. It's still WIP, but nevertheless.

python -m venv test_roombapy
source ./test_roombapy/bin/activate
pip install git+https://github.com/pschmitt/roombapy@cli#egg=roombapy[cli]
roombapy discover 192.168.0.100   # replace 192.168.0.100 with Roomba address
esdcmc commented 7 months ago

I found my Roomba Combo again with 2024.2.4 BUT the state attributes seem to have been lost. What showed for example as status = 'Charging' in 2024.2.2, now shows as 'Nul'. Also the custom vacuum card in Lovelace has been completely blanked even if the vacuum is present in the Lovelace overview page (and the commands like 'clean', 'stop' and 'return to dock' work)

mancontr commented 7 months ago

I'm having the same problem, using 2024.2.4. It detects the Roomba (j7+), but I can't add it. Note that this same Roomba was working perfectly until the 2024.2.3 bug made me try to remove and re-add it. I already have the password from before, but I can't get to that step through the Home Assistant interface.

@Orhideous I tried that, and it's giving me a "No robots found".

Orhideous commented 7 months ago

@esdcmc If all attributes (shown in device dashboard) are missing, that's a different problem. Open an issue for it and attach a screenshot, please.

Orhideous commented 7 months ago

@mancontr Well, that's interesting. Looks like either the robot is ignoring broadcast packets, or something in the network is blocking them, which is why the library can't detect robots.

Actually, there is no need for UDP discovery to control a bot. If the IP address of the Roomba is known, and we are sure that it is the Roomba and not the teapot on the other end, we can try a direct MQTT connection. Ping me on HA discord, if you want to help with testing.

egg02 commented 7 months ago

That didn't work:

roombapy discover 192.168.2.37
/home/be/work/test_roombapy/lib/python3.10/site-packages/pydantic/_internal/_config.py:322: UserWarning: Valid config keys have changed in V2:
* 'keep_untouched' has been renamed to 'ignored_types'
  warnings.warn(message, UserWarning)
No robots found.
nilkemorya commented 7 months ago

One other thing I noticed, possibly related, if I try to ping the vacuum directly I get ping response times in the 50-200 ms range. Maybe it's just that round trip time killing it. That said, no clue why it's that slow, network is healthy and nothing else pings like that.

hhopke commented 7 months ago

I have the same problem with my j7+. The robot is fairly new therefore I am not so sure how it behaved in earlier versions. On 24.2.2 (& 24.2.4) it was not able to connect, so used the dorita980 library to receive the credentials. With the IP address I tried to connect but it failed (unknown error occurred).

Are you interested in any special logs? @Orhideous

I am quite new to HA, so excuse my knowledge about necessary information regarding logs and how to access them etcetera.

ffzeus22 commented 7 months ago

j7 is found but won't connect. j9 is not found. Can pull info with RoombaCloudUtility and ping both. j7 used to be found and configured until 24.2.3. Thank you for your efforts.

AlexanderTurnowsky commented 7 months ago

I have the same issue with a J7. The Roomba has the Software version 23.37.5. It will be found but when I'm trying to add it it comes with failed to connect. this are my versions: Core 2024.2.5 Supervisor 2024.02.0 Operating System 12.0 Frontend 20240207.1

tom3q commented 7 months ago

Not sure if that's related, but I also started having some connection issues on my s9+ today, but it resolved after rebooting the roomba from the iRobot app. Below is the error I was getting.

2024-03-01 16:12:54.053 ERROR (SyncWorker_15) [roombapy.remote_client] Can't connect to 10.1.10.119 Traceback (most recent call last): File "/var/lib/homeassistant/lib/python3.12/site-packages/roombapy/remote_client.py", line 80, in connect self._open_mqtt_connection() File "/var/lib/homeassistant/lib/python3.12/site-packages/roombapy/remote_client.py", line 104, in _open_mqtt_connection self.mqtt_client.connect(self.address, self.port) File "/var/lib/homeassistant/lib/python3.12/site-packages/paho/mqtt/client.py", line 914, in connect return self.reconnect() ^^^^^^^^^^^^^^^^ File "/var/lib/homeassistant/lib/python3.12/site-packages/paho/mqtt/client.py", line 1044, in reconnect sock = self._create_socket_connection() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/lib/homeassistant/lib/python3.12/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/socket.py", line 852, in create_connection raise exceptions[0] File "/usr/lib/python3.12/socket.py", line 837, in create_connection sock.connect(sa) ConnectionRefusedError: [Errno 111] Connection refused

egg02 commented 7 months ago

Thanks, after the reboot I am finally asked for the password. But I'm still unable to retrieve it (connection refused).

Might try different methods get the password, but I have no time for that right now.

egg02 commented 7 months ago

Better, but no success yet.

I was able to retrieve the apssword via dorita980, but still got "connection failed" after entering it.

egg02 commented 7 months ago

Success!

Well, at least a workaround.

What I did:

  1. Retrieve the password via dorita 980.
  2. Reboot the robot using the app.
  3. Close the app
  4. The robot was detected in HA so I could configure by simply following the instructions in HA.

Note: Normally, when I pressed the button on the robot, I immediately heard a beep. This time, I had to press is for a few seconds and then the color of the ring changed from white to blue on then off - I have the impression that the robot rebooted, but I am not sure.

Anyway, it worked! Thanks to @tom3q for the hint!

Roomba J7 HA Core 2024.2.5 (Docker)

mluckolson commented 6 months ago

Same issue with a brand new J9+ here. Had an i7 that was working flawlessly and have a Braava that continues to. I can retrieve BLID and password through the cloud without a problem. But when I try to add to HA, the integration doesn't find any new iRobot device on my network even though my Netgear Orbi HA integration "sees" the J9+ (as does my router software). It always ends with a "Failed to connect" error. I'm making sure that no other iRobot connection/app is open and that the robot has been rebooted. Nothing in the logs. Appreciate any suggestions.

TTK-199837 commented 6 months ago

Same issue with a brand new J9+ here. Had an i7 that was working flawlessly and have a Braava that continues to. I can retrieve BLID and password through the cloud without a problem. But when I try to add to HA, the integration doesn't find any new iRobot device on my network even though my Netgear Orbi HA integration "sees" the J9+ (as does my router software). It always ends with a "Failed to connect" error. I'm making sure that no other iRobot connection/app is open and that the robot has been rebooted. Nothing in the logs. Appreciate any suggestions.

Same thing here with J7+, although have only recently tried. Never got it to work. I have my creds ready to input but never get past the manual input ip part.

TTK-199837 commented 5 months ago

Same issue with a brand new J9+ here. Had an i7 that was working flawlessly and have a Braava that continues to. I can retrieve BLID and password through the cloud without a problem. But when I try to add to HA, the integration doesn't find any new iRobot device on my network even though my Netgear Orbi HA integration "sees" the J9+ (as does my router software). It always ends with a "Failed to connect" error. I'm making sure that no other iRobot connection/app is open and that the robot has been rebooted. Nothing in the logs. Appreciate any suggestions.

Same thing here with J7+, although have only recently tried. Never got it to work. I have my creds ready to input but never get past the manual input ip part.

Strange, revisited the homeassistant integration with little hope, but it found my robot after inputing the IP and the password I extracted with dorita 980 worked!

mluckolson commented 5 months ago

I still can't get my J9+ integrated. Tried again today. The integration finds the robot on my network, but then won't find the password and won't accept my manual entry of the password either.

Log shows the follow error:

Logger: roombapy.remote_client Source: /usr/local/lib/python3.12/site-packages/roombapy/remote_client.py:95 First occurred: 1:13:14 PM (33 occurrences) Last logged: 1:52:10 PM

Can't connect to 192.168.1.49 Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/roombapy/remote_client.py", line 93, in connect self._open_mqtt_connection() File "/usr/local/lib/python3.12/site-packages/roombapy/remote_client.py", line 121, in _open_mqtt_connection self.mqtt_client.reconnect() File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 1044, in reconnect sock = self._create_socket_connection() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/site-packages/paho/mqtt/client.py", line 3685, in _create_socket_connection return socket.create_connection(addr, timeout=self._connect_timeout, source_address=source) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/socket.py", line 852, in create_connection raise exceptions[0] File "/usr/local/lib/python3.12/socket.py", line 837, in create_connection sock.connect(sa) ConnectionRefusedError: [Errno 111] Connection refused

kaueraal commented 4 months ago

This might be connected to too short timeouts, I wrote a comment in the roombapy repository about it.

naamah75 commented 3 months ago

Any news? Still impossible to integrate?

tom3q commented 3 months ago

FWIW I haven't had any issue with my s9+ since last time I posted.

alws34 commented 3 months ago

J7+ still not connecting. retrieved blid and password, but getting "Failed to connect" in HA after submitting...

mluckolson commented 3 months ago

Ditto here. Worse, I’m not sure who the devs are, so I don’t know who to communicate with about the problem. No judgment here, just desperation.

Anyone know where to go?

tuupos commented 3 months ago

Solution found for J7/J9.

https://github.com/home-assistant/core/issues/112544#issuecomment-2211699957

JBake130 commented 2 months ago

J7+ getting "Failed to connect"