* Bump library
* Update code to the new library version
* Improve diagnostics
* Fix tests
---------
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
* aemet: disable legacy options
This enables proper timezone handling:
- Atlantic/Canary for the Canary Islands.
- Europe/Madrid for the Iberian Peninsula.
Also provides daily data for the current day after AEMET stops providing the
full day interval, which is normally after midday (12:00).
This is a breaking change because with the previous behaviour the daily data
for the current day wasn't available after midday and now it will be.
What the integration library does to workaround this is to fallback to the
12-24 interval data if the the 00-24 is no longer provided by the API.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Fix AEMET tests with v0.4.8
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
---------
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* Add switch platform for husqvarna_automower
* Use RestrictedReasons const
* Typing
* Add snapshot testing
* Invert switch
* Test sucessfull servie calls
* Assert client mock calls
* Use getattr
* Update snapshot
* Add available property
* Add a new base class for control entities
* Make switch unavailabe if mower in error state
* Sort platforms
---------
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Add switch platform
* Add mypulink switch platform
* Update tests according to review
* Address more review comments
* Adjust types
* More typing
* Fix typo
* Use constants in tests
* Revert constants
* Catch aiohttp.ClientError when API call fails
* Add test case for failed async_set_device_points call
* Test api failures for both toggle directions
* Use parametrize for testing switching
* Move backup/* WS commands to the backup integration
* Call correct command
* Use debug for logging
* Remove assertion of hass.data for setup test
* parametrize token fixture
* Add sensor platform for husqvarna_automower
* Adress review comments
* Try to fix test
* Improve sensors
* Address review
* Adapt some values
* Add test
* Add test for cutting blade usage time
* Import TEST_MOWER_ID
* Use a parenthesis around the lambda and indent it so it's easier to distinguish the entity description parameters from the lambda
* Add OpenID authentication to wolflink integration
* Update wolf-comm to 0.0.2
* Upgrade wolf_comm to 0.0.3 + fix tests
* Version 0.0.4 of wolf_comm including LICENSE.txt
* Update requirements to wolf_comm 0.0.4
---------
Co-authored-by: Jan Rothkegel <jan.rothkegel@web.de>
* add calendar
* rename function
* remove device from test
* requested changes
* extend range
* fix async_get_events
* catch and test edge cases
* remove commented code
* rebase snapshot
* Add presets
* Make hvac_modes dynamic
* Add supported features
* Fix set preset mode
* Add coverage
* Remove unused constants
* Remove the extra newline
* Add snapshot assertion to new test
* Add comments
* Use ServiceValidationError
* Test for ServiceValidationError
* Fix typo
* Refactor to use _handle_coordinator_update
* Remove preset_mode prop
* Apply suggestions from code review
Co-authored-by: J. Nick Koston <nick@koston.org>
---------
Co-authored-by: J. Nick Koston <nick@koston.org>
fixes
```
2024-02-19 13:51:58.128 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved: File "/Users/bdraco/home-assistant/venv/bin/hass", line 8, in <module>
sys.exit(main())
File "/Users/bdraco/home-assistant/homeassistant/__main__.py", line 209, in main
exit_code = runner.run(runtime_conf)
File "/Users/bdraco/home-assistant/homeassistant/runner.py", line 188, in run
return loop.run_until_complete(setup_and_run_hass(runtime_config))
File "/opt/homebrew/Cellar/python@3.12/3.12.1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/asyncio/base_events.py", line 673, in run_until_complete
self.run_forever()
File "/opt/homebrew/Cellar/python@3.12/3.12.1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/asyncio/base_events.py", line 640, in run_forever
self._run_once()
File "/opt/homebrew/Cellar/python@3.12/3.12.1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/asyncio/base_events.py", line 1965, in _run_once
handle._run()
File "/opt/homebrew/Cellar/python@3.12/3.12.1/Frameworks/Python.framework/Versions/3.12/lib/python3.12/asyncio/events.py", line 84, in _run
self._context.run(self._callback, *self._args)
File "/Users/bdraco/home-assistant/homeassistant/helpers/entity_platform.py", line 610, in async_add_entities
await add_func(coros, entities, timeout)
File "/Users/bdraco/home-assistant/homeassistant/helpers/entity_platform.py", line 561, in _async_add_entities
await coro
File "/Users/bdraco/home-assistant/homeassistant/helpers/entity_platform.py", line 652, in _async_add_entity
entity.add_to_platform_start(
File "/Users/bdraco/home-assistant/homeassistant/components/device_tracker/config_entry.py", line 356, in add_to_platform_start
_async_connected_device_registered(
File "/Users/bdraco/home-assistant/homeassistant/components/device_tracker/config_entry.py", line 94, in _async_connected_device_registered
async_dispatcher_send(
File "/Users/bdraco/home-assistant/homeassistant/helpers/dispatcher.py", line 227, in async_dispatcher_send
hass.async_run_hass_job(job, *args)
File "/Users/bdraco/home-assistant/homeassistant/core.py", line 701, in async_run_hass_job
hassjob.target(*args)
File "/Users/bdraco/home-assistant/homeassistant/util/logging.py", line 133, in _callback_wrapper
func(*args)
File "/Users/bdraco/home-assistant/homeassistant/components/dhcp/__init__.py", line 392, in _async_process_device_data
self.async_process_client(ip_address, hostname, mac_address)
File "/Users/bdraco/home-assistant/homeassistant/components/dhcp/__init__.py", line 268, in async_process_client
discovery_flow.async_create_flow(
File "/Users/bdraco/home-assistant/homeassistant/helpers/discovery_flow.py", line 32, in async_create_flow
hass.async_create_task(init_coro, f"discovery flow {domain} {context}")
File "/Users/bdraco/home-assistant/homeassistant/core.py", line 634, in async_create_task
task = self.loop.create_task(target, name=name)
Traceback (most recent call last):
File "/Users/bdraco/home-assistant/homeassistant/config_entries.py", line 1017, in async_init
flow, result = await self._async_init(flow_id, handler, context, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bdraco/home-assistant/homeassistant/config_entries.py", line 1047, in _async_init
result = await self._async_handle_step(flow, flow.init_step, data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bdraco/home-assistant/homeassistant/data_entry_flow.py", line 501, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bdraco/home-assistant/homeassistant/components/hunterdouglas_powerview/config_flow.py", line 127, in async_step_dhcp
return await self.async_step_discovery_confirm()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/bdraco/home-assistant/homeassistant/components/hunterdouglas_powerview/config_flow.py", line 152, in async_step_discovery_confirm
assert self.discovered_ip and self.discovered_name
AssertionError
```
* Add valve to HassTurnOn/Off
* Add set position for valves
* Add set position to covers
* Add HassTurnOn/Off for vacuums
* Add media player intents
* Split out vacuum intents
* Address comments
* Extra test
This test currently relies on event loop overhead and since #110899
will remove another task in the config entry init flow, it needs
another async_block_till_done. In the future it should be refactored
to have better synchronization without having to rely on iterations
of the event loop.