core: Honeywell TCC Integration -- can't create because API Rate Limited
The problem
I have a valid, working account for managing my thermostats at Honeywell, but I cannot create the integration via the UI. Older versions of the honeywell component allowed yaml configuration, including the scan_interval parameter. The stuff is no longer possible.
The docs say to use the UI to configure this integration, but I when I try to create it, I provide my credentials and the wizard fails. The logs show an exception “API Rate Limited”:
ERROR (SyncWorker_0) [somecomfort] API Rate Limited.
I’m guessing the somecomfort package is calling the website too frequently to even get the entities created. Maybe the scan_interval parameter used to fix that?
What version of Home Assistant Core has the issue?
core-2022.2.9
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant Container
Integration causing the issue
honeywell
Link to integration documentation on our website
https://www.home-assistant.io/integrations/honeywell/
Diagnostics information
No response
Example YAML snippet
No response
Anything in the logs that might be useful for us?
2022-02-20 19:32:14 WARNING (MainThread) [homeassistant.components.http.ban] Login attempt or request with invalid authentication from lepton.dawson (192.168.1.20). (Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0)
2022-02-28 19:02:16 WARNING (MainThread) [homeassistant.components.http.ban] Login attempt or request with invalid authentication from lepton.dawson (192.168.1.20). (Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0)
2022-02-28 19:05:39 ERROR (SyncWorker_6) [somecomfort] API Rate Limited.
2022-02-28 19:05:39 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 117, 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 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 79, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 219, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 137, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 164, 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 111, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 252, 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 325, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/usr/src/homeassistant/homeassistant/components/honeywell/config_flow.py", line 21, in async_step_user
valid = await self.is_valid(**user_input)
File "/usr/src/homeassistant/homeassistant/components/honeywell/config_flow.py", line 40, in is_valid
client = await self.hass.async_add_executor_job(
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/honeywell/__init__.py", line 74, in get_somecomfort_client
return somecomfort.SomeComfort(username, password)
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 395, in __init__
self._discover()
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 51, in wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 527, in _discover
for raw_location in raw_locations:
TypeError: 'NoneType' object is not iterable
2022-02-28 19:06:00 ERROR (SyncWorker_1) [somecomfort] API Rate Limited.
2022-02-28 19:06:00 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 117, 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 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 79, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 219, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 137, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 164, 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 111, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 252, 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 325, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/usr/src/homeassistant/homeassistant/components/honeywell/config_flow.py", line 21, in async_step_user
valid = await self.is_valid(**user_input)
File "/usr/src/homeassistant/homeassistant/components/honeywell/config_flow.py", line 40, in is_valid
client = await self.hass.async_add_executor_job(
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/honeywell/__init__.py", line 74, in get_somecomfort_client
return somecomfort.SomeComfort(username, password)
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 395, in __init__
self._discover()
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 51, in wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 527, in _discover
for raw_location in raw_locations:
TypeError: 'NoneType' object is not iterable
2022-02-28 19:06:35 ERROR (SyncWorker_2) [somecomfort] API Rate Limited.
2022-02-28 19:06:35 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 117, 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 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 79, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 219, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 137, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 164, 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 111, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 252, 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 325, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/usr/src/homeassistant/homeassistant/components/honeywell/config_flow.py", line 21, in async_step_user
valid = await self.is_valid(**user_input)
File "/usr/src/homeassistant/homeassistant/components/honeywell/config_flow.py", line 40, in is_valid
client = await self.hass.async_add_executor_job(
File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
result = self.fn(*self.args, **self.kwargs)
File "/usr/src/homeassistant/homeassistant/components/honeywell/__init__.py", line 74, in get_somecomfort_client
return somecomfort.SomeComfort(username, password)
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 395, in __init__
self._discover()
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 51, in wrapper
return fn(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/somecomfort/client.py", line 527, in _discover
for raw_location in raw_locations:
TypeError: 'NoneType' object is not iterable
2022-02-28 19:07:29 ERROR (SyncWorker_4) [somecomfort] API Rate Limited.
2022-02-28 19:07:29 ERROR (MainThread) [aiohttp.server] Error handling request
Additional information
No response
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 18 (3 by maintainers)
Agreed. I will add a configuration option for users to set their own refresh interval. Should be able to get started on this in the relatively soon.
I’ve given up on Honeywell. Never again!
I replaced the thermostats with ecobee3 lites, and so far, so good.