core: Cannot add Roomba Integration for J5+ Combo

The problem

I am unable to add the Roomba Integration for a brand new iRobot Roomba J5+ Combo. It is discovered automagically, but when I attempt to add the device, I receive an error: image

I was able to successfully obtain my user and password using the koalazak/dorita980 SDK but am not prompted to enter any configuration details.

I did some digging into the forums but haven’t seen any reports of issues specific to the J5+ model. I attempted several fixes, such as changing the ciphers in the usr/local/lib/python3.12/site-packages/roombapy/getpassword.py and usr/local/lib/python3.12/site-packages/roombapy/remote_client.py files, as well as attempting different lengths of pressing the top button, on and off the dock.

The relevant error in the log (see below) is related to aiohttp.server, indicating a possible issue due to the Python version upgrade in 2024.2 betas – This GH thread may be related: https://github.com/eventlet/eventlet/issues/795

`Logger: aiohttp.server Source: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421 First occurred: 17:00:34 (3 occurrences) Last logged: 17:03:46

Error handling request Traceback (most recent call last): File “/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py”, line 452, in _handle_request resp = await request_handler(request) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py”, line 543, in _handle resp = await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py”, line 114, in impl return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/security_filter.py”, line 91, in security_filter_middleware return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/forwarded.py”, line 100, in forwarded_middleware return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/request_context.py”, line 28, in request_context_middleware return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/auth.py”, line 235, in auth_middleware return await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/headers.py”, line 31, in headers_middleware response = await handler(request) ^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/view.py”, line 149, in handle result = await handler(request, **request.match_info) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/decorators.py”, line 72, in with_admin return await func(self, request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/config/config_entries.py”, line 185, in post return await super().post(request, flow_id) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/http/data_validator.py”, line 72, in wrapper result = await method(view, request, data, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py”, line 110, in post result = await self._flow_mgr.async_configure(flow_id, data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/data_entry_flow.py”, line 358, in async_configure result = await self._async_configure(flow_id, user_input) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/data_entry_flow.py”, line 404, in _async_configure result = await self._async_handle_step( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/data_entry_flow.py”, line 501, in _async_handle_step result: FlowResult = await getattr(flow, method)(user_input) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/src/homeassistant/homeassistant/components/roomba/config_flow.py”, line 230, in async_step_link roomba_pw = RoombaPassword(self.host) ^^^^^^^^^^^^^^^^^^^^^^^^^ File “/usr/local/lib/python3.12/site-packages/roombapy/getpassword.py”, line 21, in init self.server_socket = _get_socket() ^^^^^^^^^^^^^ File “/usr/local/lib/python3.12/site-packages/roombapy/getpassword.py”, line 81, in _get_socket ssl_socket = ssl.wrap_socket( ^^^^^^^^^^^^^^^ AttributeError: module ‘ssl’ has no attribute ‘wrap_socket’`

What version of Home Assistant Core has the issue?

core-2024.2.0b8

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

iRobot Roomba and Braava

Link to integration documentation on our website

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

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

Logger: aiohttp.server
Source: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421
First occurred: 17:00:34 (2 occurrences)
Last logged: 17:00:35

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 543, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 114, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 91, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 235, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 31, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 149, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 72, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 185, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
    result = await method(view, request, data, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 358, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 404, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 501, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/roomba/config_flow.py", line 230, in async_step_link
    roomba_pw = RoombaPassword(self.host)
                ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/roombapy/getpassword.py", line 21, in __init__
    self.server_socket = _get_socket()
                         ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/roombapy/getpassword.py", line 81, in _get_socket
    ssl_socket = ssl.wrap_socket(
                 ^^^^^^^^^^^^^^^
AttributeError: module 'ssl' has no attribute 'wrap_socket'

Additional information

Roomba J5+ Software: 23.37.5

About this issue

  • Original URL
  • State: closed
  • Created 5 months ago
  • Reactions: 6
  • Comments: 25 (5 by maintainers)

Most upvoted comments

OMG, I just exchanged for this model. The title of this thread has J5+ in it. Assumed it worked after reading this thread said solved. Thank you for the quick response. What model do you recommend?

thx again

Will this fix the same error on the J9’s?

Nope. It’s a different error — hopefully, known and since I’m affected too I’m working on it.

@Kagey-cmd Just wait for 2024.2.3 😃