libdyson-wg / ha-dyson

Home Assistant custom integration for Wi-Fi connected Dyson devices
MIT License
252 stars 28 forks source link

Dyson Pure Cool Link incompatible with v1.41 #188

Closed aweaton123 closed 2 months ago

aweaton123 commented 2 months ago

Following upgrade to version 1.4.1, my Dyson Pure Cool Link fails to start. Rolling back to v1.4.0 works fine.

Extract of home-assistant.log below.

`2024-08-29 20:32:55.213 ERROR (ImportExecutor_0) [homeassistant.loader] Unexpected exception importing platform custom_components.dyson_local.fan Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform cache[full_name] = self._import_platform(platform_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform return importlib.import_module(f"{self.pkg_path}.{platform_name}") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func return func(*args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/importlib/init.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 995, in exec_module File "", line 488, in _call_with_frames_removed File "/config/custom_components/dyson_local/fan.py", line 59, in | FanEntityFeature.TURN_ON ^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: type object 'FanEntityFeature' has no attribute 'TURN_ON' 2024-08-29 20:32:55.288 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to import_module with args ('custom_components.dyson_local.fan',) in /usr/src/homeassistant/homeassistant/loader.py, line 1296: return importlib.import_module(f"{self.pkg_path}.{platform_name}") inside the event loop; This is causing stability issues. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#import_module Traceback (most recent call last): File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "/usr/src/homeassistant/homeassistant/main.py", line 223, in sys.exit(main()) File "/usr/src/homeassistant/homeassistant/main.py", line 209, in main exit_code = runner.run(runtime_conf) File "/usr/src/homeassistant/homeassistant/runner.py", line 190, in run return loop.run_until_complete(setup_and_run_hass(runtime_config)) File "/usr/local/lib/python3.12/asyncio/base_events.py", line 674, in run_until_complete self.run_forever() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 641, in run_forever self._run_once() File "/usr/local/lib/python3.12/asyncio/base_events.py", line 1990, in _run_once handle._run() File "/usr/local/lib/python3.12/asyncio/events.py", line 88, in _run self._context.run(self._callback, self._args) File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2046, in async_forward_entry_setups await integration.async_get_platforms(platforms) File "/usr/src/homeassistant/homeassistant/loader.py", line 1165, in async_get_platforms platforms.update(self._load_platforms(platform_names)) File "/usr/src/homeassistant/homeassistant/loader.py", line 1090, in _load_platforms platform_name: self._load_platform(platform_name) File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform cache[full_name] = self._import_platform(platform_name) File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform return importlib.import_module(f"{self.pkg_path}.{platform_name}")

2024-08-29 20:32:55.289 ERROR (MainThread) [homeassistant.loader] Unexpected exception importing platform custom_components.dyson_local.fan Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform cache[full_name] = self._import_platform(platform_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform return importlib.import_module(f"{self.pkg_path}.{platform_name}") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func return func(*args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/importlib/init.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 995, in exec_module File "", line 488, in _call_with_frames_removed File "/config/custom_components/dyson_local/fan.py", line 59, in | FanEntityFeature.TURN_ON ^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: type object 'FanEntityFeature' has no attribute 'TURN_ON' 2024-08-29 20:32:55.410 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Bedroom Purifier Fan for dyson_local Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform cache[full_name] = self._import_platform(platform_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform return importlib.import_module(f"{self.pkg_path}.{platform_name}") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func return func(args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/importlib/init.py", line 90, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "", line 1387, in _gcd_import File "", line 1360, in _find_and_load File "", line 1331, in _find_and_load_unlocked File "", line 935, in _load_unlocked File "", line 995, in exec_module File "", line 488, in _call_with_frames_removed File "/config/custom_components/dyson_local/fan.py", line 59, in | FanEntityFeature.TURN_ON ^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: type object 'FanEntityFeature' has no attribute 'TURN_ON'

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 586, in async_setup result = await component.async_setup_entry(hass, self) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/dyson_local/init.py", line 155, in async_setup_entry await hass.async_add_executor_job( File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/dyson_local/init.py", line 151, in setup_entry ).result() ^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 456, in result return self.get_result() ^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in get_result raise self._exception File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2046, in async_forward_entry_setups await integration.async_get_platforms(platforms) File "/usr/src/homeassistant/homeassistant/loader.py", line 1177, in async_get_platforms import_future.result() File "/usr/src/homeassistant/homeassistant/loader.py", line 1177, in async_get_platforms import_future.result() File "/usr/src/homeassistant/homeassistant/loader.py", line 1177, in async_get_platforms import_future.result() [Previous line repeated 2 more times] File "/usr/src/homeassistant/homeassistant/loader.py", line 1165, in async_get_platforms platforms.update(self._load_platforms(platform_names)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/loader.py", line 1090, in _load_platforms platform_name: self._load_platform(platform_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/loader.py", line 1284, in _load_platform raise ImportError( ImportError: Exception importing custom_components.dyson_local.fan`

dotvezz commented 2 months ago

@aweaton123 as the description on the v1.4.1 release says, the minimum supported version of Home Assistant is 2024.8.0.

The change in v1.4.1 only addresses a new feature flag issue that Home Assistant logs started alerting users about, as documented in https://github.com/libdyson-wg/ha-dyson/issues/183, https://github.com/libdyson-wg/ha-dyson/issues/179, and https://github.com/libdyson-wg/ha-dyson/issues/175.

Since Home Assistant was writing logs telling users to go open an issue here, and the deprecation was only 6 months away, I assumed that the required changes must be compatible with any somewhat-recent version.

This was a surprise to me as well, but I owe you an apology for not realizing this would start causing issues for users with even versions as recent as 2024.7.x.

Marking closed, but feel free to reopen if updating to 2024.8.x doesn't resolve this for you!

aweaton123 commented 2 months ago

My apologies - I missed the minimum version requirement. Thanks for the speedy response.