core: "Total Connect" Integration Cannot Be Installed

The problem

Installing the TotalConnect integration results in this error after entering the username and password: “Unknown error occurred”.

This worked a couple of weeks ago. I just had to reinstall because I noticed it wasn’t working.

What version of Home Assistant Core has the issue?

core-2021.11.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

Total Connect

Link to integration documentation on our website

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

Example YAML snippet

No response

Anything in the logs that might be useful for us?

Logger: total_connect_client.client
Source: /usr/local/lib/python3.9/site-packages/total_connect_client/client.py:103
First occurred: 7:35:22 PM (1 occurrences)
Last logged: 7:35:22 PM

exception during initial fetch of 680097

-----------------------------------------------------

Log Details (ERROR)
Logger: aiohttp.server
Source: util/async_.py:140
First occurred: 7:35:22 PM (1 occurrences)
Last logged: 7:35:22 PM

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
    resp = await self._request_handler(request)
  File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 499, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 119, in impl
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 98, in forwarded_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 24, in request_context_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 78, in ban_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 138, in auth_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 135, in handle
    result = await result
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 157, in post
    return await super().post(request, flow_id)
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 62, in wrapper
    result = await method(view, request, *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 246, in async_configure
    result = await self._async_handle_step(flow, cur_step["step_id"], user_input)
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 320, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
  File "/usr/src/homeassistant/homeassistant/components/totalconnect/config_flow.py", line 48, in async_step_user
    return await self.async_step_locations()
  File "/usr/src/homeassistant/homeassistant/components/totalconnect/config_flow.py", line 91, in async_step_locations
    for location_id in self.client.locations:
  File "/usr/local/lib/python3.9/site-packages/total_connect_client/client.py", line 97, in locations
    location.get_partition_details()
  File "/usr/local/lib/python3.9/site-packages/total_connect_client/location.py", line 202, in get_partition_details
    result = self.parent.request(
  File "/usr/local/lib/python3.9/site-packages/total_connect_client/client.py", line 190, in request
    r = eval("self.soap_client.service." + request)
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.9/site-packages/zeep/proxy.py", line 46, in __call__
    return self._proxy._binding.send(
  File "/usr/local/lib/python3.9/site-packages/zeep/wsdl/bindings/soap.py", line 127, in send
    response = client.transport.post_xml(options["address"], envelope, http_headers)
  File "/usr/local/lib/python3.9/site-packages/zeep/transports.py", line 107, in post_xml
    return self.post(address, message, headers)
  File "/usr/local/lib/python3.9/site-packages/zeep/transports.py", line 73, in post
    response = self.session.post(
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 590, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 542, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 655, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
  File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 394, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 239, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/local/lib/python3.9/http/client.py", line 1279, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/local/lib/python3.9/http/client.py", line 1290, in _send_request
    self.putrequest(method, url, **skips)
  File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 219, in putrequest
    return _HTTPConnection.putrequest(self, method, url, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 151, in protected_loop_func
    check_loop()
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 140, in check_loop
    raise RuntimeError(
RuntimeError: I/O must be done in the executor; Use `await hass.async_add_executor_job()` at homeassistant/components/totalconnect/config_flow.py, line 91: for location_id in self.client.locations:

Additional information

No response

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Comments: 26 (7 by maintainers)

Most upvoted comments

Added a bogus version # in the manifest.json and its happy now and works.

@LexusSpeed03 Thank you! I was wondering why it was still using the home assistant version even with a reboot.

@jasonhun thanks for reporting this. @6254sagebrush I think you mentioned the same thing in comments under https://github.com/home-assistant/core/issues/59023.

I plan to submit a pull request shortly to fix this.