Compare commits

..

3080 Commits

Author SHA1 Message Date
Franck Nijhof 1aa5a07501 2024.3.0 (#112516) 2024-03-06 18:52:11 +01:00
Franck Nijhof efe9938b33 Bump version to 2024.3.0 2024-03-06 18:37:11 +01:00
Franck Nijhof 1b64989909 Bump version to 2024.3.0b8 2024-03-06 15:03:47 +01:00
Erik Montnemery b480b68e3e Allow start_time >= 1.1.7 (#112500) 2024-03-06 15:03:23 +01:00
Josef Zweck 5294b492fc Bump pytedee_async to 0.2.15 (#112495) 2024-03-06 15:03:19 +01:00
Bram Kragten 080fe4cf5f Update frontend to 20240306.0 (#112492) 2024-03-06 15:03:16 +01:00
Erik Montnemery 8b2f40390b Add custom integration block list (#112481)
* Add custom integration block list

* Fix typo

* Add version condition

* Add block reason, simplify blocked versions, add tests

* Change logic for OK versions

* Add link to custom integration's issue tracker

* Add missing file

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-06 15:01:25 +01:00
Thomas55555 3b63719fad Avoid errors when there is no internet connection in Husqvarna Automower (#111101)
* Avoid errors when no internet connection

* Add error

* Create task in HA

* change from matter to automower

* tests

* Update homeassistant/components/husqvarna_automower/coordinator.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* address review

* Make websocket optional

* fix aioautomower version

* Fix tests

* Use stored websocket

* reset reconnect time after sucessful connection

* Typo

* Remove comment

* Add test

* Address review

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-06 14:58:08 +01:00
Paulus Schoutsen 061ae756ac Bump version to 2024.3.0b7 2024-03-05 23:43:11 -05:00
Matthias Alphart 862bd8ff07 Update xknx to 2.12.2 - Fix thread leak on unsuccessful connections (#112450)
Update xknx to 2.12.2
2024-03-05 23:43:07 -05:00
G Johansson 742710443a Bump holidays to 0.44 (#112442) 2024-03-05 23:43:06 -05:00
Robert Svensson 015aeadf88 Fix handling missing parameter by bumping axis library to v50 (#112437)
Fix handling missing parameter
2024-03-05 23:43:05 -05:00
Robert Svensson b8b654a160 Do not use list comprehension in async_add_entities in Unifi (#112435)
Do not use list comprehension in async_add_entities
2024-03-05 23:43:04 -05:00
jan iversen 3c5b5ca49b Allow duplicate modbus addresses on different devices (#112434) 2024-03-05 23:43:04 -05:00
Mr. Bubbles fb789d95ed Bump bring-api to 0.5.5 (#112266)
Fix KeyError listArticleLanguage
2024-03-05 23:43:03 -05:00
Álvaro Fernández Rojas 2e6906c8d4 Update aioairzone to v0.7.6 (#112264)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-03-05 23:43:02 -05:00
Luke Lashley cc8d44bbd1 Bump python_roborock to 0.40.0 (#112238)
* bump to python_roborock 0.40.0

* manifest went away in merge?
2024-03-05 23:43:01 -05:00
Robert Svensson 0ad56de6fc Fix deCONZ light entity might not report a supported color mode (#112116)
* Handle case where deCONZ light entity might not report a supported color mode

* If in an unknown color mode set ColorMode.UNKNOWN

* Fix comment from external discussion
2024-03-05 23:43:00 -05:00
Paulus Schoutsen dedd7a5a41 Bump version to 2024.3.0b6 2024-03-04 13:04:03 -05:00
Paul Bottein 44c961720c Update frontend to 20240304.0 (#112263) 2024-03-04 13:03:50 -05:00
Allen Porter 79b1d6df1b Add rainbird request debouncer and immediately update entity switch state (#112152) 2024-03-04 13:03:49 -05:00
Allen Porter 274ab2328e Limit rainbird aiohttp client session to a single connection (#112146)
Limit rainbird to a single open http connection
2024-03-04 13:03:48 -05:00
David F. Mulcahey 93ee900cb3 Fix ZHA groups page (#112140)
* Fix ZHA groups page

* test
2024-03-04 13:02:23 -05:00
Michael 62474967c9 Ignore failing gas stations in Tankerkoening (#112125) 2024-03-04 13:02:22 -05:00
starkillerOG 2cdc8d5f69 Bump reolink-aio to 0.8.9 (#112124)
* Update strings.json

* Bump reolink-aio to 0.8.9
2024-03-04 13:02:21 -05:00
David F. Mulcahey 4863c94824 Bump Zigpy to 0.63.4 (#112117) 2024-03-04 13:02:20 -05:00
Mr. Bubbles 193332da74 Bump bring-api to 0.5.4 (#111654) 2024-03-04 13:02:20 -05:00
Christopher Fenner 9926296d35 Handle exception in ViCare integration (#111128) 2024-03-04 13:02:19 -05:00
Paulus Schoutsen bb6f8b9d57 Bump version to 2024.3.0b5 2024-03-02 22:09:17 -05:00
J. Nick Koston 780f6e8974 Avoid expensive inspect calls in config validators (#112085)
* Avoid expensive inspect calls in config validators

inspect has a performance problem https://github.com/python/cpython/issues/92041

We now avoid calling inspect unless we are going to log

* remove unused

* reduce

* get_integration_logger
2024-03-02 22:08:59 -05:00
J. Nick Koston ab30d44184 Fix executor being overloaded in caldav (#112084)
Migrate to using a single executor job instead of creating
one per calendar. If the user had a lot of calendars the
executor would get overloaded
2024-03-02 22:08:58 -05:00
J. Nick Koston e23f737fa7 Fix bootstrap being fetched three times during unifiprotect startup (#112082)
We always fetch it to check if the device is online.
Avoid fetching it again for migration by passing
it to the migrators
2024-03-02 22:08:57 -05:00
J. Nick Koston b8e3bb8eb8 Ensure all homekit_controller controllers are imported in advance (#112079)
* Ensure all homekit_controllers are imported in advance

We want to avoid importing them in the event loop later

* Ensure all homekit_controllers are imported in advance

We want to avoid importing them in the event loop later
2024-03-02 22:08:56 -05:00
elmurato 12574bca8b Fix setup failure due to temporary DNS issue in Minecraft Server (#112068)
Change ConfigEntryError to ConfigEntryNotReady on failed init
2024-03-02 22:08:55 -05:00
David Knowles f16ea54b4f Bump pydrawise to 2024.3.0 (#112066) 2024-03-02 22:08:54 -05:00
Paulus Schoutsen ad52bf608f Only load camera prefs once (#112064) 2024-03-02 22:08:53 -05:00
Isak Nyberg 46ee52f4ef Add device class for permobil record distance sensor (#112062)
fix record_distance device_class
2024-03-02 22:08:53 -05:00
Shay Levy 88fb44bbba Bump bthome-ble to 3.6.0 (#112060)
* Bump bthome-ble to 3.6.0

* Fix discovery info typing
2024-03-02 22:07:59 -05:00
J. Nick Koston de5e626430 Bump unifi-discovery to 1.1.8 (#112056) 2024-03-02 22:03:13 -05:00
J. Nick Koston 1bcdba1b4b Import anonymize_data in unifiprotect init to avoid it being imported in the event loop (#112052)
Improve anonymize_data in unifiprotect init to avoid it being imported in the event loop
2024-03-02 22:03:12 -05:00
Paulus Schoutsen a4353cf39d Bump version to 2024.3.0b4 2024-03-02 13:24:12 -05:00
Jeef 63192f2291 Bump weatherflow4py to v0.1.12 (#112040)
Backing lib bump
2024-03-02 13:24:05 -05:00
Joakim Sørensen 675b7ca7ba Fix config schema for velux (#112037) 2024-03-02 13:24:05 -05:00
Joakim Sørensen df5eb552a0 Use description key instead of name for Tibber RT unique ID (#112035)
* Use translation key instead of name for Tibber RT unique ID

* migration

* use decription.key instead
2024-03-02 13:24:04 -05:00
Álvaro Fernández Rojas 5017f4a2c7 Update aioairzone-cloud to v0.4.5 (#112034)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-03-02 13:24:03 -05:00
Chris Helming 92d3dccb94 Fix minor language issues in strings.json (#112006)
language fix: allow -> allows
2024-03-02 13:24:01 -05:00
David F. Mulcahey 2c38b5ee7b Bump Zigpy to 0.63.3 (#112002) 2024-03-02 13:24:00 -05:00
Paulus Schoutsen 435bb50d29 Update reporting for media_source.async_resolve_media (#111969)
* Update reporting for media_source.async_resolve_media

* Don't raise on core

* Fix tests
2024-03-02 13:23:59 -05:00
Paul Bottein 005493bb5a Update frontend to 20240301.0 (#111961) 2024-03-02 13:23:59 -05:00
Mick Vleeshouwer 838a4e4f7b Bump pyOverkiz to 1.13.8 (#111930)
Bump pyoverkiz to 1.13.8
2024-03-02 13:23:58 -05:00
Paulus Schoutsen 04bf68e661 Bump version to 2024.3.0b3 2024-02-29 22:00:35 -05:00
Jan-Philipp Benecke 8ddec745ed Change hass.components removal version in log to 2024.9 (#111903) 2024-02-29 22:00:18 -05:00
J. Nick Koston 3896afbb69 Limit executor imports to a single thread (#111898)
* Limit executor imports to a single thread

* test for import executor

* test for import executor

* test for import executor

* fixes

* better fix
2024-02-29 22:00:17 -05:00
Robert Svensson c9227d3c3d Fix unsupported device type in deCONZ integration (#111892) 2024-02-29 22:00:16 -05:00
Robert Svensson 88d2772fa9 Deconz fix gradient color mode (#111890)
* Fix deconz gradient colormode

* Fix gradient light not reporting color mode in deCONZ
2024-02-29 22:00:15 -05:00
J. Nick Koston f89fddb92b Bump habluetooth to 2.4.2 (#111885) 2024-02-29 22:00:14 -05:00
Álvaro Fernández Rojas c04e68b9b2 Update aioairzone to v0.7.5 (#111879)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-29 22:00:14 -05:00
Michael f711411d18 Add missing unit of measurement for tolerance option in proximity (#111876) 2024-02-29 21:59:40 -05:00
J. Nick Koston c9aea57326 Fix circular imports in core integrations (#111875)
* Fix circular imports in core integrations

* fix circular import

* fix more circular imports

* fix more circular imports

* fix more circular imports

* fix more circular imports

* fix more circular imports

* fix more circular imports

* fix more circular imports

* adjust

* fix

* increase timeout

* remove unused logger

* keep up to date

* make sure its reprod
2024-02-29 21:55:11 -05:00
Michael Hansen 63740d2a6d Use correct service name with Wyoming satellite + local wake word detection (#111870)
* Use correct service name with satellite + local wake word detection

* Don't load platforms for satellite services

* Update homeassistant/components/wyoming/data.py

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>

* Fix ruff error

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-02-29 21:55:11 -05:00
J. Nick Koston 7a9e5354ee Fallback to event loop import on deadlock (#111868) 2024-02-29 21:55:10 -05:00
Michael Hansen 4f50c7217b Move HassSetPosition to homeassistant domain (#111867)
* Move HassSetPosition to homeassistant domain

* Add test for unsupported domain with HassSetPosition

* Split service intent handler

* cleanup

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-02-29 21:55:09 -05:00
Bram Kragten a9410ded11 Update frontend to 20240228.1 (#111859) 2024-02-29 21:55:08 -05:00
dotvav b6503f53bc Support HitachiAirToAirHeatPump (ovp:HLinkMainController) in Overkiz integration (#102159)
* Support OVP devices

Support OVP devices

* Fix coding style

* Fix coding style and unnecessary constants

* Move fanmodes inside class

* Apply suggestions from code review

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Remove duplicate widget

* Update homeassistant/components/overkiz/climate_entities/hitachi_air_to_air_heat_pump_ovp.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Format ruff

* Fix mypy

---------

Co-authored-by: Mick Vleeshouwer <mick@imick.nl>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-29 21:55:07 -05:00
Paulus Schoutsen 51716290bb Bump version to 2024.3.0b2 2024-02-29 10:43:47 -05:00
Paulus Schoutsen 10cc0e6b2b Import cryptography OpenSSL backend (#111840)
* Import cryptography OpenSSL backend

* No need to impor top-level. Included.

* Update homeassistant/bootstrap.py
2024-02-29 10:42:50 -05:00
J. Nick Koston 640de7dbc9 Include filename in exception when loading a json file fails (#111802)
* Include filename in exception when loading a json file fails

* fix
2024-02-29 10:42:49 -05:00
J. Nick Koston 868f19e846 Fix race in config entry setup again (#111800)
Because the setup again was scheduled as a task, it would
not unset self._async_cancel_retry_setup in time and we would
try to unsub self._async_cancel_retry_setup after it had already
fired. Change it to call a callback that runs right away so it
unsets self._async_cancel_retry_setup as soon as its called
so there is no race

fixes #111796
2024-02-29 10:42:48 -05:00
Jan-Philipp Benecke 52ea1a9deb Deprecate hass.components and log warning if used inside custom component (#111508)
* Deprecate @bind_hass and log error if used inside custom component

* Log also when accessing `hass.components`

* Log warning only when `hass.components` is used

* Change version

* Process code review
2024-02-29 10:42:47 -05:00
David F. Mulcahey 5c2fc8d7a0 Add support for ZHA entities exposed by Zigpy quirks (#111176)
* Add counter entities to the ZHA coordinator device

* rework to prepare for non coordinator device counters

* Initial scaffolding to support quirks v2 entities

* update for zigpy changes

* add assertion error message

* clean up test

* update group entity discovery kwargs

* constants and clearer names

* apply custom device configuration

* quirks switches

* quirks select entities

* quirks sensor entities

* update discovery

* move call to super

* add complex quirks v2 discovery test

* remove duplicate replaces

* add quirks v2 button entity support

* add quirks v2 binary sensor entity support

* fix exception in counter entitiy discovery

* oops

* update formatting

* support custom on and off values

* logging

* don't filter out entities quirks says should be created

* fix type alias warnings

* sync up with zigpy changes and additions

* add a binary sensor test

* button coverage

* switch coverage

* initial select coverage

* number coverage

* sensor coverage

* update discovery after rebase

* coverage

* single line

* line lengths

* fix double underscore

* review comments

* set category from quirks in base entity

* line lengths

* move comment

* imports

* simplify

* simplify
2024-02-29 10:42:46 -05:00
Paulus Schoutsen fba331fd7e Bump version to 2024.3.0b1 2024-02-28 23:26:32 -05:00
Paulus Schoutsen dd85a97a48 get_matter_device_info: Test the Matter config entry is set up (#111792)
Ensure the Matter config entry is set up
2024-02-28 23:26:24 -05:00
Michael Hansen b19b5dc451 Bump intents and add sentence tests (#111791) 2024-02-28 23:26:22 -05:00
J. Nick Koston 3d4291fc59 Import discord in the executor to avoid blocking the event loop (#111790)
`2024-02-28 19:20:04.485 DEBUG (MainThread) [homeassistant.loader] Component discord import took 1.181 seconds (loaded_executor=False)`
2024-02-28 23:26:22 -05:00
J. Nick Koston 3cd07aacad Fix steamist blocking startup by waiting for discovery (#111789)
Fix steamist blocking statup by waiting for discovery
2024-02-28 23:26:21 -05:00
J. Nick Koston 19837055bf Fix tplink blocking startup by waiting for discovery (#111788)
* Fix tplink blocking statup by waiting for discovery

* remove started
2024-02-28 23:26:20 -05:00
J. Nick Koston 209e61f734 Fix flux_led blocking startup by waiting for discovery (#111787)
* Avoid blocking startup by waiting for discovery in flux_led

* remove started discovery
2024-02-28 23:26:19 -05:00
J. Nick Koston 39deab74b3 Import analytics_insights in the executor to avoid blocking the event loop (#111786)
fixes #111780
2024-02-28 23:26:19 -05:00
J. Nick Koston 77fd02da1d Fix time trigger tests with leap year (#111785) 2024-02-28 23:26:18 -05:00
J. Nick Koston 7e80eb551e Bump securetar to 2024.2.1 (#111782) 2024-02-28 23:26:17 -05:00
J. Nick Koston 536addc5ff Import backup in the executor to avoid blocking the event loop (#111781) 2024-02-28 23:26:16 -05:00
J. Nick Koston ff0fbcb309 Import opower in the executor to avoid blocking the event loop (#111778)
fixes #111777
2024-02-28 23:26:16 -05:00
J. Nick Koston c9ea72ba7d Import androidtv_remote in the executor to avoid blocking the event loop (#111776)
fixes #111775
2024-02-28 23:26:15 -05:00
J. Nick Koston 10a1a450a3 Import coinbase in the executor to avoid blocking the event loop (#111774)
fixes #111773
2024-02-28 23:26:14 -05:00
J. Nick Koston 7ff6627e07 Import blink in the executor to avoid blocking the event loop (#111772)
fixes #111771
2024-02-28 23:26:13 -05:00
Marcel van der Veldt 4a66727bff Bump aiohue to 4.7.1 (#111770)
bump aiohue to 4.7.1
2024-02-28 23:26:12 -05:00
J. Nick Koston db584857c8 Import cryptography early since importing openssl is not thread-safe (#111768) 2024-02-28 23:26:11 -05:00
J. Nick Koston cb7116126c Import isy994 in the executor to avoid blocking the event loop (#111766) 2024-02-28 23:26:11 -05:00
Marcel van der Veldt 99a70ba959 Bump Python Matter Server to 5.7.0 (#111765) 2024-02-28 23:26:10 -05:00
J. Nick Koston a9fd113a80 Move DATA_LOGGING constant to homeassistant.const (#111763) 2024-02-28 23:26:09 -05:00
J. Nick Koston acfd1c2755 Pre-import api, config, and lovelace in bootstrap to avoid loading them at runtime (#111752) 2024-02-28 23:26:08 -05:00
puddly feea4071d0 Improve ZHA group color modes (#111669)
* Set the color mode based on supported color modes

* Replace `zha` with `tuya` in unit test
2024-02-28 23:26:07 -05:00
yanuino e1be109947 Read min/max number of showers from state for DomesticHotWaterProduction in Overkiz integration (#111535)
* Read min/max number of showers from state

* Rewrite code for Read min/max number of showers from state

* Set _attr_ instead of inherited value
2024-02-28 23:26:06 -05:00
Allen Porter 812afc1bd0 Fix calendar trigger to survive config entry reloads (#111334)
* Fix calendar trigger to survive config entry reloads

* Apply suggestions from code review

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-28 23:26:05 -05:00
Jeremy TRUFIER 27b5a79fa5 Add overkiz support for Atlantic Shogun ZoneControl 2.0 (AtlanticPassAPCHeatingAndCoolingZone) (#110510)
* Add Overkiz support for AtlanticPassAPCHeatingAndCoolingZone widget

* Add support for AUTO HVAC mode for Atlantic Pass APC ZC devices that support it

* Add support for multiple IO controllers for same widget (mainly for Atlantic APC)

* Implement PR feedback

* Small PR fixes

* Fix constant inversion typo
2024-02-28 23:26:04 -05:00
Bram Kragten fbc456c4c7 Bump version to 2024.3.0b0 2024-02-28 20:52:40 +01:00
Bram Kragten e0566ee204 Merge dev into rc 2024-02-28 20:47:56 +01:00
Andy cd5377367a Add Ecovacs goat switch entities (#111751) 2024-02-28 20:43:53 +01:00
puddly 4ec75d6ca7 Use new zigpy OTA providers for ZHA (#111159)
* Use `None` instead of `"unknown"` when the current version is unknown

* Only use the current file version from the OTA notification

* Use `sw_version`, if available, and update `current_file_version`

* Assume the current version is the latest version

* Fix lint errors

* Use `image` instead of `firmware`

* Include a changelog if updates expose it

* Clear latest firmware only after updating the installed version

* Bump minimum zigpy version to 0.63.0

* Create a data update coordinator to consolidate updates

* Fix overridden `async_update`

* Fix most unit tests

* Simplify `test_devices` to fix current tests

* Use a dict comprehension for creating mocked entities

* Fix unit tests (thanks @dmulcahey!)

* Update the currently installed version on cluster attribute update

* Drop `PARALLEL_UPDATES` now that we use an update coordinator

* Drop `_reset_progress`, it is already handled by the update component

* Do not update the progress if we are not supposed to be updating

* Ignore latest version (e.g. if device attrs changed) if zigpy rejects it

* Clean up handling of command id in `Ota.cluster_command`

* Start progress at 1%: 0 and False are considered equal and are filtered!

Use `ceil` instead of remapping 1-100

* The installed version will be auto-updated when the upgrade succeeds

* Avoid 1 as well, it collides with `True`

* Bump zigpy to (unreleased) 0.63.2

* Fix unit tests

* Fix existing unit tests

Send both event types

Globally enable sending both event types

* Remove unnecessary branches

* Test ignoring invalid progress callbacks

* Test updating a device with a no longer compatible firmware
2024-02-28 14:38:04 -05:00
Scott K Logan 4895f92551 Bump aioraven to 0.5.1 (#111600) 2024-02-28 20:34:07 +01:00
J. Nick Koston 941df567f8 Import powerwall in the executor to avoid blocking the event loop (#111749)
`2024-02-27 22:44:17.087 DEBUG (MainThread) [homeassistant.loader] Component powerwall import took 0.459 seconds (loaded_executor=False)`
2024-02-28 14:31:23 -05:00
J. Nick Koston 327796a750 Eagerly unload config entries in tests (#111707)
This is a small latancy reduction to reduce test wall clock time
since it runs every test
2024-02-28 14:03:21 -05:00
J. Nick Koston 104884056f Import plex in the executor to avoid blocking the event loop (#111743)
`Importing platform plex.config_flow took 0.54s (loaded_executor=False)`
2024-02-28 14:02:34 -05:00
Cyrill Raccaud c0a7aacfa8 Cleanup swiss_public_transport error logging (#111741) 2024-02-28 19:42:25 +01:00
Bram Kragten 928458160e Update frontend to 20240228.0 (#111736) 2024-02-28 17:35:53 +01:00
J. Nick Koston f95e5c1196 Use eager tasks in ssdp (#111696)
There are a few places where we are likely to never suspend here
2024-02-28 10:56:07 -05:00
J. Nick Koston d164039bba Remove gather for loading generated files in zeroconf (#111699)
async_get_custom_components is the only place this can suspend
and it will always be cached by the time this is called so there
is no reason to schedule these on the event loop
2024-02-28 10:55:41 -05:00
Joost Lekkerkerker c957ff49bf Add icon translations to Huisbaasje (#111726)
* Add icon translations to Huisbaasje

* Add icon translations to Huisbaasje
2024-02-28 16:37:14 +01:00
Joost Lekkerkerker e28f551cb0 Add icon translations to Huawei LTE (#111724)
* Add icon translations to Huawei LTE

* Add icon translations to Huawei LTE
2024-02-28 16:35:47 +01:00
Andy 69bb827a20 Add ecovacs lawn mover (#111673) 2024-02-28 16:35:29 +01:00
Joost Lekkerkerker 515ca2b6f1 Add icon translations to Homekit (#111719) 2024-02-28 16:34:50 +01:00
Joost Lekkerkerker 7d1d72cc45 Add icon translations to Harmony (#111714) 2024-02-28 16:34:25 +01:00
Joost Lekkerkerker 0ff55a2d24 Add icon translations to Hassio (#111715) 2024-02-28 16:33:46 +01:00
Joost Lekkerkerker 5940dbd51d Add icon translations to Heos (#111716) 2024-02-28 16:33:12 +01:00
Joost Lekkerkerker 818022073d Add icon translations to Hive (#111717) 2024-02-28 16:32:52 +01:00
Joost Lekkerkerker afe3d7fb4f Add icon translations to Home connect (#111718) 2024-02-28 16:32:26 +01:00
Joost Lekkerkerker 15cd9c011e Add icon translations to Homekit Controller (#111720)
* Add icon translations to Homekit Controller

* Add icon translations to Homekit Controller
2024-02-28 16:31:09 +01:00
Joost Lekkerkerker b6d56d38ba Add icon translations to Homematic IP Cloud (#111723) 2024-02-28 16:30:20 +01:00
Sebastian Noack df61d0a29d Add entities for Balboa Spa lights (#111252) 2024-02-28 16:29:40 +01:00
Erik Montnemery b336095239 Allow translating device names (#110711)
* Allow translating device names

* Don't keep a reference to translations in config entry

* Update kitchen_sink tests

* Add tests
2024-02-28 15:59:59 +01:00
J. Nick Koston 9b9700c75f Import nexia in the executor to avoid blocking the event loop (#111694)
2024-02-27 22:54:18.638 DEBUG (MainThread) [homeassistant.loader] Importing platform nexia.config_flow took 1.84s (loaded_executor=False)
2024-02-28 15:37:10 +01:00
J. Nick Koston f71343a3ba Import tplink in the executor to avoid blocking the event loop (#111691)
* Import tplink in the executor to avoid blocking the event loop

2024-02-27 22:44:19.908 DEBUG (MainThread) [homeassistant.loader] Component tplink import took 1.620 seconds (loaded_executor=False)

* patch out discovery because it happens too fast now
2024-02-28 15:06:33 +01:00
dependabot[bot] ee0f177153 Bump github/codeql-action from 3.24.4 to 3.24.5 (#111448)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.4 to 3.24.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.24.4...v3.24.5)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-28 14:58:37 +01:00
Robert Svensson c478b1416c Adapt Axis integration to library refactoring (#110898)
* Adapt Axis integration to library refactoring

* Bump axis to v49
2024-02-28 14:36:32 +01:00
Joost Lekkerkerker 2b3630b054 Add icon translations to HVV departures (#111728) 2024-02-28 14:19:32 +01:00
Sebastian Noack 5a57816e50 Add entities for Balboa Spa pumps (#111245)
* Add entities for Balboa Spa pumps

* Fix fan tests and move client_update to __init__

* Ruff

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-02-28 14:19:02 +01:00
Simone Chemelli 5c124e5fd2 Add Comelit humidifier/dehumidifier (#111203)
* Add Comelit humidifier/dehumidifier

* optimize turn_on

* fix entity naming

* raise ServiceValidationError

* apply review comment

* apply review comments

* rename HumidifierComelitAction
2024-02-28 14:15:44 +01:00
Joost Lekkerkerker 4be0e86591 Add icon translations to Guardian (#111712)
Co-authored-by: Aaron Bach <bachya1208@gmail.com>
2024-02-28 13:08:40 +01:00
Joost Lekkerkerker a8887d59ed Add icon translations to BMW (#111348)
* Add icon translations to BMW

* Add icon translations to BMW
2024-02-28 13:05:27 +01:00
Joost Lekkerkerker 40431a9f7e Add icon translations to DROP connect (#111373)
* Add icon translations to DROP connect

* Add icon translations to DROP connect
2024-02-28 12:58:04 +01:00
Joost Lekkerkerker 7ad1d3e891 Add icon translations to DSMR (#111411)
* Add icon translations to DSMR

* Add icon translations to DSMR
2024-02-28 12:55:43 +01:00
J. Nick Koston 913ee90e1a Use eager tasks when updating entity state after service calls (#111702)
In a multi-entity update case the state update may not need
to suspend and can get executed without scheduling a task
on the event loop
2024-02-28 12:46:32 +01:00
J. Nick Koston 69a1da0a1a Make entity component platform setup tasks eager (#111698)
Many of these that setup from YAML will never suspend
because they do no I/O
2024-02-28 12:44:23 +01:00
J. Nick Koston 459f430575 Use eager tasks in a few more places in bootstrap (#111697)
I missed a few of the ones that run before we call
_async_set_up_integrations as I was too focused
on the timings of that function
2024-02-28 12:41:03 +01:00
J. Nick Koston f7ac1e4b8e Import mobile_app in the executor to avoid blocking the event loop (#111692)
2024-02-27 22:44:23.926 DEBUG (MainThread) [homeassistant.loader] Component mobile_app import took 0.490 seconds (loaded_executor=False)
2024-02-28 12:39:51 +01:00
Michał Jaworski 12b15a9a37 Bump blebox_uniapi to 2.2.1 (#108918)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-28 12:39:37 +01:00
Joost Lekkerkerker e8837a4026 Add icon translations to Fronius (#111608) 2024-02-28 12:04:49 +01:00
Joost Lekkerkerker b117deff58 Add icon translations to Gree (#111662)
* Add icon translations to Gree

* Add icon translations to Gree
2024-02-28 11:38:16 +01:00
Erwin Douna c52e2038be Tado code quality improvements (#107678)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-28 11:28:51 +01:00
Joost Lekkerkerker 38ba966d74 Add icon translations to Devolo home network (#111367) 2024-02-28 11:21:19 +01:00
Joost Lekkerkerker b629f5c143 Add icon translations to Denon avr (#111364)
* Add icon translations to Denon avr

* Update homeassistant/components/denonavr/icons.json
2024-02-28 11:02:37 +01:00
Jan-Philipp Benecke ebfba7258e Revert "Drop @bind_hass use from hassio component (#111522)" (#111705)
This reverts commit 4e4345f04e.
2024-02-28 10:51:37 +01:00
Jan-Philipp Benecke 3ae056b358 Revert "Remove @bind_hass from async_active_zone and make callback function" (#111704)
Revert "Remove `@bind_hass` from async_active_zone and make callback function…"

This reverts commit f85a8c5041.
2024-02-28 10:51:17 +01:00
Jan-Philipp Benecke 259171eda9 Revert "Remove @bind_hass from camera functions" (#111703)
Revert "Remove `@bind_hass` from `camera` functions (#111494)"

This reverts commit c890c1aeee.
2024-02-28 10:51:04 +01:00
Joost Lekkerkerker dbeb93b260 Add icon translations to Filesize (#111536) 2024-02-28 09:37:38 +01:00
J. Nick Koston 01a6b85a35 Avoid creating system monitor disk sensors for non-dirs (#111695)
Avoid creating system monitor sensors for non-dirs

Currently we create sensors for /etc/hosts, /etc/asound.conf, since
they are bind mounts in the container. These all have to have
their own coordinator
2024-02-28 09:31:02 +01:00
Joost Lekkerkerker f9d9ac48c7 Add icon translations to Google Assistant SDK (#111658) 2024-02-28 08:52:51 +01:00
Joost Lekkerkerker 882f28bb5f Add icon translations to FAA delays (#111533) 2024-02-28 08:52:36 +01:00
Joost Lekkerkerker 2f38ce2813 Add icon translations to Eufylife BLE (#111530) 2024-02-28 08:52:24 +01:00
Joost Lekkerkerker 2cee022bb7 Add icon translations to Fastdotcom (#111534) 2024-02-28 08:51:10 +01:00
Joost Lekkerkerker 1a61c6db1c Add icon translations to Fireservicerota (#111537) 2024-02-28 08:50:57 +01:00
Joost Lekkerkerker 24050b6e0f Add icon translations to Escea (#111529) 2024-02-28 08:50:44 +01:00
Joost Lekkerkerker e2c38c6415 Add icon translations to Environment Canada (#111527)
* Add icon translations to Environment Canada

* Add icon translations to Environment Canada
2024-02-28 08:50:31 +01:00
Joost Lekkerkerker dfd8179a2d Add icon translations to FiveM (#111539) 2024-02-28 08:50:16 +01:00
Joost Lekkerkerker cd9219d4c6 Add icon translations to GDACS (#111611)
* Add icon translations to GDACS

* Add icon translations to GDACS

* Add icon translations to GDACS
2024-02-28 08:49:58 +01:00
Joost Lekkerkerker 3077039470 Add icon translations to Glances (#111615)
* Add icon translations to Glances

* Add icon translations to Glances
2024-02-28 08:49:47 +01:00
Joost Lekkerkerker 132b597d9e Add icon translations to Epson (#111528) 2024-02-28 08:49:24 +01:00
J. Nick Koston c3412bb017 Make homekit_controller platform load tasks eagerly (#111701) 2024-02-27 21:46:42 -10:00
J. Nick Koston e0d15680a6 Import xiaomi_ble in the executor to avoid blocking the event loop (#111693) 2024-02-27 20:48:40 -10:00
J. Nick Koston b9718fe2e9 Avoid tracking tasks that finish right away (#111690) 2024-02-27 19:09:34 -10:00
Joost Lekkerkerker 470d121f5c Add icon translations to Flume (#111543) 2024-02-27 18:36:12 -10:00
J. Nick Koston 78bb6dbe75 Reduce latency in storage by making the tasks eager (#111500)
* Reduce latancy to load storage by making the task eager

This changes the semantics a bit under the hood because it
can raise sooner which means we do not store the task
as _load_task if it raises right away. That means
concurrent calls that result in failure are likely to try
again now which will be a tiny performance hit for this
case.

* fix

* will now finish in time
2024-02-27 23:27:37 -05:00
J. Nick Koston e74e1e3008 Reduce hassio setup time (#111686)
Reduce supervisor setup time

The two calls that take the most time are calling
push_config ~0.4s and updating the api ~0.35s and
can be run concurrently
2024-02-27 21:30:48 -05:00
J. Nick Koston e62b709dea Reduce task overhead in homekit_controller (#111670) 2024-02-27 14:49:29 -10:00
Joost Lekkerkerker 147c261389 Add icon translations to Generic camera (#111612)
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2024-02-27 13:42:56 -10:00
Bernhard B 1570977e9f Bump pysignalclirestapi to 0.3.23 (#111501) 2024-02-27 13:42:29 -10:00
Joost Lekkerkerker 2858d73abc Add icon translations to Foscam (#111546)
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2024-02-27 13:41:44 -10:00
Joost Lekkerkerker 74a319f907 Add icon translations to Google (#111656)
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2024-02-27 13:41:29 -10:00
Jan-Philipp Benecke 4e4345f04e Drop @bind_hass use from hassio component (#111522)
* Drop `@bind_hass` use from hassio component

* Add comment why we import locally

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-28 00:25:46 +01:00
Simone Chemelli 0e329d2572 Bump aioshelly to 8.1.1 (#111678) 2024-02-28 00:24:42 +01:00
J. Nick Koston 49eb664a05 Update httpx to 0.27.0 and httpcore to 1.0.4 (#111681) 2024-02-27 13:15:33 -10:00
J. Nick Koston 2b19783311 Await service calls in emulated_hue instead of making them blocking (#111674) 2024-02-27 12:44:27 -10:00
J. Nick Koston 105a1ca127 Use eager_start for homekit task creation (#111675) 2024-02-27 12:44:01 -10:00
J. Nick Koston 3c25e2a4bd Small speed up to Bluetooth setup (#111677) 2024-02-27 12:43:44 -10:00
J. Nick Koston 6abb8ae273 Migrate setup to use eager tasks (#111619) 2024-02-27 12:43:32 -10:00
Joost Lekkerkerker 9cf874d4a0 Add icon translations to Energyzero (#111513)
* Add icon translations to Energyzero

* Add icon translations to Energyzero
2024-02-27 23:41:07 +01:00
J. Nick Koston c4d719a7cf Use eager_start for background service call tasks (#111620) 2024-02-27 12:06:32 -10:00
Jan-Philipp Benecke c8b7f098e5 Avoid call to hass.helpers.store in FloorRegistry (#111554)
* Avoid call to `hass.helpers.store` in FloorRegistry

* Change type annotation
2024-02-27 23:03:28 +01:00
Jc2k cf849664ba Cleanup BLE-only controls when migrating HomeKit BLE device to Thread (#110334)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-27 12:02:27 -10:00
Jan-Philipp Benecke c890c1aeee Remove @bind_hass from camera functions (#111494)
* Remove `@bind_hass` from camera functions

* Pass hass to async_get_image in image_processing
2024-02-27 23:01:43 +01:00
J. Nick Koston 6c00d02d0b Use eager_start for shelly task creation (#111671) 2024-02-27 11:55:38 -10:00
Joost Lekkerkerker 99c1912ccd Add icon translations to Goalzero (#111630) 2024-02-27 22:49:59 +01:00
Arie Catsman d8d44069b5 Add Grid import export to Enphase Envoy (#110884)
* Add Grid import export to enphase Envoy

* Update snapshot for labels dict element in entity registry

* use identity check for enum

* Revert use of identity check, didn't add entities

* Implement review feedback for tests

* ct phase sensors disabled by default

* import PHASENAMES from pyenphase

* Update tests/components/enphase_envoy/test_sensor.py

* Update tests/components/enphase_envoy/test_sensor.py

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-27 16:43:43 -05:00
Joost Lekkerkerker a29d29ad85 Add icon translations to Google Assistant (#111657) 2024-02-27 22:30:27 +01:00
Joost Lekkerkerker 071835c761 Add icon translations to Google Generative AI Conversation (#111659) 2024-02-27 22:30:02 +01:00
Joost Lekkerkerker 5aa5bc406c Add icon translations to Google Mail (#111660) 2024-02-27 22:28:53 +01:00
Joost Lekkerkerker d9486c1eb5 Add icon translations to Google Sheets (#111661) 2024-02-27 22:28:10 +01:00
Joost Lekkerkerker 81590ac887 Add icon translations to Goodwe (#111655) 2024-02-27 22:22:56 +01:00
Jan Čermák d4a7e4a6ac Add ODROID-M1S as a supported OS hardware board (#111022) 2024-02-27 21:51:55 +01:00
Mike Degatano 68200de4d2 Bad Request from supervisor should be error (#111162) 2024-02-27 21:49:52 +01:00
Shay Levy 2a8e5ceea9 Fix Switcher test update CI failure (#111667) 2024-02-27 10:32:40 -10:00
J. Nick Koston 290ffd14a4 Bump aiohomekit to 3.1.5 (#111663) 2024-02-27 10:13:14 -10:00
Arie Catsman 850add120a Bump pyenphase to 1.19.1 (#111653) 2024-02-27 09:56:49 -10:00
J. Nick Koston a6f4f6eae8 Use eager task creation to add entities to entity platform (#111553) 2024-02-27 09:54:51 -10:00
Robert Svensson 8da2c53742 Bump aiounifi to v72 (#111649) 2024-02-27 20:15:33 +01:00
Federico D'Amico 1109aba211 Add button platform to microBees (#111141)
* add button platform to microBees

* use list comprehension for async_add_entities

* add a transaltion_key and fix list comprehension

* add panic button

* remove BUTTON_PRODUCT_IDS
2024-02-27 19:41:42 +01:00
Paulus Schoutsen bc47c80bbf 2024.2.5 (#111648) 2024-02-27 13:23:44 -05:00
Erik Montnemery fc4b18b907 Return FlowResultType.ABORT when violating single_config_entry (#111637)
* Return FlowResultType.ABORT when violating single_config_entry

* Fix translations

* Fix tests
2024-02-27 18:28:19 +01:00
Robert Svensson 4281f648d2 Break out UniFi get_unifi_api function (#111323)
Break out get api function
2024-02-27 18:20:06 +01:00
Erik Montnemery 6bd7a74fab Update list of integrations known to violate color mode rules (#111647) 2024-02-27 18:17:26 +01:00
J. Nick Koston e25b097376 Import bluetooth in the executor to avoid blocking the event loop (#111596) 2024-02-27 07:05:39 -10:00
Joakim Sørensen f622ddef47 Move backup/* WS commands to the backup integration (#111636)
Revert "Revert "Move backup/* WS commands to the backup integration" (#111136)"

This reverts commit 8f83426895.
2024-02-27 11:56:07 -05:00
Michael Hansen 890e651bdd Avoid race condition with UDP voice server starting in ESPHome (#111644)
* Avoid race condition with UDP server starting

* Fix test
2024-02-27 10:54:56 -06:00
Paulus Schoutsen 8b8c607b01 Bump version to 2024.2.5 2024-02-27 11:48:39 -05:00
Aidan Timson 6b5735cd08 Add title to reauthenticate integration issue (#111275)
* Add title to reauthenticate integration issue

* Fix translation placeholder in test

* Update translation placeholders in test_init.py

* Update integration reauthentication message

* Update string
2024-02-27 11:48:35 -05:00
Martin Hjelmare 00d11ff68e Fix rfxtrx flaky reconnect test (#111635) 2024-02-27 16:13:08 +01:00
Jan Rothkegel 887182c224 Wolflink connection pooling (#111483)
* Enable connection pooling

* Decrease polling frequency

* Replace client passing by instance instead of lambda
2024-02-27 15:59:52 +01:00
Erik Montnemery 6ccf7dea32 Always allow ignore and unignore flows for single config entry integrations (#111631)
* Always allow ignore and unignore flows for single config entry integrations

* Update tests/test_config_entries.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-27 15:47:56 +01:00
Jan-Philipp Benecke 070b411820 Avoid call to hass.helpers.store in LabelRegistry (#111555)
* Avoid call to `hass.helpers.store` in LabelRegistry

* Change type annotation
2024-02-27 09:37:45 -05:00
J. Nick Koston 773543b617 Ensure all data is set in seventeentrack before adding entities (#111603)
This integration would call async_add_entities before
it has set the data that the entity needed. There is
no guarantee that the entity would take long enough
to add that the data would be there
2024-02-27 08:47:31 -05:00
J. Nick Koston 08e0008d31 Use an eager task to setup entity platforms (#111574)
* Use an eager task to setup entity platforms

Ideally we would have awaited this function instead, but we want
to shield it from cancellation so we wrap it in asyncio.shield
which schedules it as a task. Since we have integrations that
never suspend in async_setup_entry, we can avoid scheduling on
the evnet loop with an eager task for this case

* its an executor future

* its an executor future

* fix

* doc string lied
2024-02-27 08:45:45 -05:00
Joost Lekkerkerker 224ca122fd Add icon translations to Fully kiosk (#111609)
* Add icon translations to Fully kiosk

* Update homeassistant/components/fully_kiosk/icons.json
2024-02-27 08:43:42 -05:00
J. Nick Koston c78cccf7d2 Import shelly in the executor to avoid blocking the event loop (#111623)
`[homeassistant.loader] Component shelly import took 0.396 seconds (loaded_executor=False)`
2024-02-27 08:35:57 -05:00
J. Nick Koston 55e3eb6160 Import airvisual in the executor to avoid blocking the event loop (#111624)
`Component airvisual import took 0.566 seconds (loaded_executor=False)`
2024-02-27 08:35:46 -05:00
J. Nick Koston 7fbd10019a Import xbox in the executor to avoid blocking the event loop (#111625)
`Component xbox import took 0.326 seconds (loaded_executor=False)
`
2024-02-27 08:35:33 -05:00
Nils Bergmann 08497db358 Extend ZHA thermostat local temperature calibration range for Sonoff TRVZB (#109691)
* Extend thermostat local temperature calibration range

* Extend thermostat local temperature calibration range only for TRVZB

* Change _attr_native_min_value and _attr_native_max_value back to -2.5 and 2.5

* Adjust _attr_native_step for TRVZB to 0.2

* Implement requested changes

* Fix platform for MULTI_MATCH

* Implement requested changes

* Implement requested changes
2024-02-27 08:32:23 -05:00
Robert Resch d7fb949994 Deprecate mailbox platform (#110930) 2024-02-27 13:50:02 +01:00
Erik Montnemery 8fb542917b Deprecate the Ambiclimate integration (#111627)
Deprecate Ambiclimate integration
2024-02-27 13:45:12 +01:00
Brenan Kelley 458c5ae657 Add statistics keep_last_sample option (#88655)
* introduce preserve last value option

* improve comments

* add unit test

* skip scheduling purge on a preserved value

* do not schedule sensor update if preserving last value

* fix unit test to use new mock time pattern

pattern introduced in https://github.com/home-assistant/core/pull/93499

* rename preserve_last_val to keep_last_sample

* add keep_last_sample config validation
2024-02-27 13:17:05 +01:00
J. Nick Koston 4414b468f3 Import zwave_js in the executor to avoid blocking the event loop (#111622)
`2024-02-27 10:55:54.872 DEBUG (MainThread) [homeassistant.loader] Component zwave_js import took 0.780 seconds (loaded_executor=False)`
2024-02-27 13:14:27 +01:00
David F. Mulcahey 5d1b78a29d Add device list to ZHA config entry diagnostics (#111549)
* Add device list to ZHA  config entry diagnostics

* add logical type
2024-02-27 06:44:26 -05:00
Marc Mueller e854ce5c21 Update typing-extensions to 4.10.0 (#111538) 2024-02-27 12:33:31 +01:00
Marc Mueller adbd9c8d40 Update python-slugify to 8.0.4 (#111284) 2024-02-27 12:29:48 +01:00
dependabot[bot] 38395c8fab Bump actions/download-artifact from 4.1.2 to 4.1.3 (#111602) 2024-02-27 12:12:23 +01:00
Erik Montnemery 413b74a2e0 Deprecate Logi Circle integration (#111491)
* Deprecate Logi Circle integration

* Update homeassistant/components/logi_circle/__init__.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-02-27 11:36:36 +01:00
Joost Lekkerkerker c09212e5aa Add icon translations to Garages Amsterdam (#111610) 2024-02-27 10:39:31 +01:00
Joost Lekkerkerker 497b63216a Add icon translations to Geocaching (#111613) 2024-02-27 10:39:10 +01:00
J. Nick Koston 044ace0a6a Make core tests that should run in the event loop coros (#111605) 2024-02-26 23:18:22 -10:00
Robert Resch 3703698f77 Bump deebot-client to 6.0.2 (#111507) 2024-02-27 09:39:49 +01:00
J. Nick Koston d812507aeb Refactor eafm to avoid creating entities in the coordinator update (#111601) 2024-02-26 21:08:28 -10:00
Chris Talkington 2618d4abe0 Update pyipp to 0.14.5 (#111590) 2024-02-26 19:30:00 -10:00
J. Nick Koston 4579de6eb5 Import ssdp in the executor to avoid blocking the event loop (#111593)
`2024-02-26 21:37:59.325 DEBUG (MainThread) [homeassistant.loader] Component ssdp import took 1.179 seconds (loaded_executor=False)`
2024-02-26 23:58:34 -05:00
J. Nick Koston f08122084b Reduce bootstrap code (#111450)
* Reduce bootstrap code

Adds a SETUP_ORDER const dict which will be used
for future refactoring

* tweak

* fix bad merge
2024-02-26 23:58:16 -05:00
J. Nick Koston 587854fd59 Remove zeroconf from ssdp after deps (#111326)
* Remove zeroconf from ssdp after deps

This was added in #36277 but is no longer needed since
we setup discovery integrations ahead of time to ensure
their deps are updated before other integrations can load
them

* adjust test
2024-02-26 23:57:41 -05:00
J. Nick Koston de48ad5931 Create bootstrap tasks eagerly (#111497)
We can avoid one event loop iteration to start the tasks here
2024-02-26 23:56:16 -05:00
J. Nick Koston 7d9fa2f407 Load config entry platforms eagerly (#111498)
We can avoid one event loop iteration to start the tasks here.
2024-02-26 23:55:41 -05:00
J. Nick Koston ce0fb1e716 Fully fix race in removing entities (#111499)
Full fix race in removing entities

Followup to #110978 now that we can start the task
eagerly it completely closes the race window
2024-02-26 23:55:15 -05:00
J. Nick Koston f984cca49b Import usb in the executor to avoid blocking the event loop (#111592)
`2024-02-26 21:38:00.091 DEBUG (MainThread) [homeassistant.loader] Component usb import took 0.753 seconds (loaded_executor=False)`
2024-02-26 18:49:29 -10:00
J. Nick Koston 145ce183d0 Create component setup tasks eagerly in bootstrap (#111511)
This saves waiting one iteration of the event loop
2024-02-26 23:45:55 -05:00
J. Nick Koston d5e1934942 Use an eager task in the update coordinator scheduled refresh (#111570)
* Use an eager task in the update coordinator scheduled refresh

We have a lot of places that will not suspend because the refresh function
decides it does not need to update. Currently these have to be scheduled
on the event loop even though they are a noop.

Since _handle_refresh_interval is subclassed in some integrations, I created
a dunder wrapper function to avoid integraions subclassing it

* fix time fires outside of patch
2024-02-26 23:31:08 -05:00
J. Nick Koston b692f30c33 Import august in the executor to avoid blocking the event loop (#111595) 2024-02-26 18:30:31 -10:00
J. Nick Koston 35a3573bd2 Import spotify in the executor to avoid blocking the event loop (#111594) 2024-02-26 18:30:21 -10:00
Jesse Hills e1dade69e1 ESPHome: Pass through wake_word_phrase from on-device microWakeWord (#111585)
* ESPHome: Pass through wake_word_phrase from on-device microWakeWord

* Bump aioesphomeapi to 23.0.0
2024-02-26 23:29:03 -05:00
J. Nick Koston 80ad4f1232 Import thread in the executor to avoid blocking the event loop (#111586)
Import thread in the executor

DEBUG (MainThread) [homeassistant.loader] Importing platform thread.config_flow took 2.92s (loaded_executor=False)
2024-02-26 23:21:10 -05:00
J. Nick Koston 7a3f829eac Import wemo in the executor to avoid blocking the event loop (#111587)
`2024-02-26 21:12:29.792 DEBUG (MainThread) [homeassistant.loader] Importing platform wemo.config_flow took 1.11s (loaded_executor=False)`
2024-02-26 23:20:55 -05:00
J. Nick Koston b1e2eafe26 Import samsungtv in the executor to avoid blocking the event loop (#111588)
`2024-02-26 21:12:28.305 DEBUG (MainThread) [homeassistant.loader] Importing platform samsungtv.config_flow took 1.10s (loaded_executor=False)`

This one has a long requirements list
2024-02-26 23:20:39 -05:00
J. Nick Koston d6d2ded546 Import dhcp in the executor to avoid blocking the event loop (#111589)
Discovery integrations load a lot earlier when many modules
are not yet loaded so they have a lot less overlapping deps

dhcp uses scapy which is large to import. I hope one
day to replace it with something more lightweight
2024-02-26 23:20:24 -05:00
J. Nick Koston 40190a2f1f Import zeroconf in the executor to avoid blocking the event loop (#111591)
This one takes ~0.45s on the green
2024-02-26 23:20:03 -05:00
J. Nick Koston f56e4d6a09 Use eager task creation for entity platform polling (#111575)
* Use eager task creation for entity platform polling

We have lots of places where `async_update` does not suspend and
is only a coro because its required to be a coro to run in the
event loop

* try again
2024-02-26 23:16:39 -05:00
J. Nick Koston 1e02260bbe Use eager start for august subscriber refreshes (#111581)
Since most of the time this call will be a noop since pubnub will be connected
we can avoid scheduling a task on the event loop every time it fires
2024-02-26 23:13:33 -05:00
J. Nick Koston cfe478245f Migrate gather_with_limited_concurrency to use create_eager_task (#111565) 2024-02-26 16:31:52 -10:00
J. Nick Koston 4bdd8dbd40 Refactor rainmachine to increase chance of reusing the connection (#111573) 2024-02-26 16:31:18 -10:00
J. Nick Koston 26079a6eaf Use eager_start for sonos ping background task (#111578) 2024-02-26 16:31:06 -10:00
J. Nick Koston bf866732c9 Make unifiprotect fallback update an eager task (#111580) 2024-02-26 16:30:53 -10:00
J. Nick Koston 86ced5a85f Bump yalexs to 1.11.4 (#111567) 2024-02-26 16:30:37 -10:00
J. Nick Koston 6a62a39456 Start automations with eager tasks (#111568) 2024-02-26 16:30:00 -10:00
J. Nick Koston fb4e8a4f3b Start the debouncer task eagerly (#111569) 2024-02-26 16:29:46 -10:00
J. Nick Koston 1e3af1b48f Convert person start to be a callback function (#111571)
Nothing was being awaited here so there was no need to create
a task per person at the start event.

The async_update_config coro remains since its required
by the collection but is now a wrapper around a callback
_async_update_config
2024-02-26 21:04:33 -05:00
J. Nick Koston ebdfff4037 Reduce latency to connect websocket writer (#111559)
Reduce latancy to connect websocket writer

Use an eager start task to start the writer
2024-02-26 20:52:53 -05:00
J. Nick Koston 321295a872 Reduce latency to set up websocket forwarding in hassio (#111558)
Reduce latancy to set up websocket forwarding in hassio

Create the tasks eagerly to avoid one iteration of the event loop
to connect the proxy
2024-02-26 20:52:37 -05:00
J. Nick Koston ae2ce99cbd Create tasks eagerly in the discovery flow helper (#111557)
The likely outcome from most discoveries is an near immediate abort
so we run them eagerly to avoid having to schedule on the event loop
for the common case
2024-02-26 20:52:04 -05:00
J. Nick Koston b75277cc24 Use an eager task to update multiple entities (#111556)
If there are multiple entities on the same platform its likely
that only one of them will suspend in the update so schedule
them eagerly
2024-02-26 20:49:09 -05:00
Michael Hansen f6622ea8e0 Add speech-to-text cooldown for local wake word (#108806)
* Deconflict based on wake word

* Undo test

* Make wake up key a string, rename error

* Update snapshot

* Change to "wake word phrase" and normalize

* Move normalization into the wake provider

* Working on describe

* Use satellite info to resolve wake word phrase

* Add test for wake word phrase

* Match phrase with model name in wake word provider

* Check model id

* Use one constant wake word cooldown

* Update homeassistant/components/assist_pipeline/error.py

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>

* Fix wake word tests

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-02-26 20:35:19 -05:00
J. Nick Koston c38e0d22b8 Fix text in docstrings and debug logging for loader (#111560) 2024-02-26 15:14:15 -10:00
Joost Lekkerkerker 9e2db708b9 Add icon translations to Fritz (#111547)
* Add icon translations to Fritz

* Add icon translations to Fritz
2024-02-27 00:17:15 +01:00
Niels Perfors 951743551a Add Tado add meter readings service (#111552) 2024-02-26 23:47:01 +01:00
Jan-Philipp Benecke 4de56c1751 Avoid call to hass.helpers in permobile (#111541) 2024-02-26 23:46:19 +01:00
Shay Levy 24dee11a4d Bump aioshelly to 8.0.2 (#111414) 2024-02-27 00:37:25 +02:00
Joost Lekkerkerker 467659cb21 Add icon translations to Flo (#111542) 2024-02-26 22:52:26 +01:00
J. Nick Koston 359bd625c8 Import mqtt in the executor to avoid blocking the event loop (#111521) 2024-02-26 11:41:07 -10:00
Jeef bc20e7900c WeatherFlow Forecast (REST API) (#106615)
* rebase off dev

* Update homeassistant/components/weatherflow_cloud/const.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Addressing 1st round of PR Comments

* Update homeassistant/components/weatherflow_cloud/config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* addressing PR Comments

* fixing last comment that i can see

* Update homeassistant/components/weatherflow_cloud/coordinator.py

OOPS

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Update homeassistant/components/weatherflow_cloud/weather.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Update homeassistant/components/weatherflow_cloud/coordinator.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* switching to station id

* Update homeassistant/components/weatherflow_cloud/strings.json

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* addressing PR

* Updated tests to be better

* Updated tests accordingly

* REAuth flow and tests added

* Update homeassistant/components/weatherflow_cloud/strings.json

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Update homeassistant/components/weatherflow_cloud/coordinator.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Addressing PR comments

* Apply suggestions from code review

* ruff fix

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-02-26 22:40:21 +01:00
J. Nick Koston b6393cc3a0 Import influxdb in the executor to avoid blocking the event loop (#111520)
was not added to the original PR to contain scope

identified at: https://github.com/home-assistant/core/pull/111336#issuecomment-1963062529
2024-02-26 16:00:16 -05:00
J. Nick Koston e742951993 Import radio_browser in the executor to avoid blocking the event loop (#111519)
was not added to the original PR to contain scope

identified at: https://github.com/home-assistant/core/pull/111336#issuecomment-1963062529
2024-02-26 15:59:51 -05:00
Tomer Shemesh 886a450cf4 Add support to Lutron lights for color and temperature control (#109019)
* Add support to lutron lights for color and temperature control

* Fix review comments for adding color and temperature to Lutron lights

* Add eclair4151 as codeowner Lutron Caseta Integration

* Fix review comments for add color support for Lutron lights

* Code cleanup suggestions from PR review for adding color support for Lutron Lights

Co-authored-by: J. Nick Koston <nick@koston.org>

* Fix minor syntax errors from review comments for lutron light color support

* Fix review comments and code cleanup for Lutron light color support

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-26 10:58:20 -10:00
J. Nick Koston 30094acec7 Fix dict changing size during iteration in deconz (#111523) 2024-02-26 10:47:08 -10:00
On Freund 32dc8d9fcb Improve code comment for Chrome frame bug in Camera (#111504) 2024-02-26 15:30:35 -05:00
J. Nick Koston 4ea1c5cc3c Add support for importing integrations in the executor (#111336)
* Add support for pre-imports at setup time

alternative solution to #111331

* refactor

* refactor

* refactor

* mark >1.0s integrations

* no point in executor if already loaded

* no point in executor if already loaded

* cleanup

* cleanup

* two more

* one more

* analytics loads a lot more integrations

* cloud

* debug

* psutil, hardwre

* try zha

* Update homeassistant/setup.py

* await

* comments

* coverage

* coverage

* coverage

* move logic to loader

* move logic to loader

* preserve comments
2024-02-26 14:49:43 -05:00
starkillerOG 75e59167de Reolink trigger ReAuth when credentials invalid during update (#111492)
Check for CredentialsInvalidError
2024-02-26 14:41:20 -05:00
spycle 53f0272357 Bump pyMicrobot to 0.0.17 (#111496)
* Update manifest.json

Up-version pyMicrobot to 0.0.17

* Update requirements_all.txt

Up-version pyMicrobot to 0.0.17

* Update requirements_test_all.txt

Up-version pyMicrobot to 0.0.17
2024-02-26 20:36:05 +01:00
Jonas Fors Lellky d44e389844 Add hvac_action to flexit_bacnet climate entity (#110498)
* Add hvac_action to flexit_bacnet climate entity

Also add extra state attributes

* Remove extra state attrs

* Change hvac action to heating
2024-02-26 20:22:25 +01:00
Erik Montnemery 730fe760cf Remove JuiceNet integration (#111477)
* Remove JuiceNet integration

* Adjust issue

* Add test

* Fix stale DOMAIN constant
2024-02-26 21:08:36 +02:00
Joakim Plate a55c56a207 Update rfxtrx library to handle connection retries (#111366)
Upgrade rfxtrx library to one that leaves reconnection to home assistant and handle loss of connection by reloading the integration.

https://github.com/Danielhiversen/pyRFXtrx/releases/tag/0.31.0
2024-02-26 19:30:22 +01:00
On Freund 979fe57f7f Image entity media source (#104743)
* Image entity media source

* MJPEG streaming

* Update on change rather than fixed interval

* Only send boundary twice

* return when image has no data

* Write each frame twice

* Use friendly name when browsing

* Fix sending of double frame

* Initial image proxy test

* Improve proxy stream test

* Refactor

* Code review fixes
2024-02-26 19:04:25 +01:00
Jan-Philipp Benecke baf84b6fba Add single_config_entry manifest option (#109505)
* Allow setting if we support multiple config entries in config flow

* Move property to config flow instead of flow handler

* Move marking an integration as single instance only to manifest

* Revert line remove

* Avoid init a config flow or adding a new entry on a single instance with an entry

* Revert changes in test

* Process code review comments

* Apply code review suggestion
2024-02-26 19:00:33 +01:00
Matthias Alphart 673a95227b Update xknx to 2.12.1 and xknxproject to 3.7.0 (#111460) 2024-02-26 18:52:51 +01:00
J. Nick Koston 4624c859e1 Use discovery flow helper for hardware integrations (#111437)
* Use discovery flow helper for hardware integrations

The discovery flow helper defers loading discovered integrations until after startup
to improve startup reliability.

* Use discovery flow helper for hardware integrations

The discovery flow helper defers loading discovered integrations until after startup
to improve startup reliability. Since hardware was not listed in as a
discovery integration, the notification for new discoveries was missing.
2024-02-26 12:04:33 -05:00
Jan-Philipp Benecke f85a8c5041 Remove @bind_hass from async_active_zone and make callback function (#111488) 2024-02-26 11:57:17 -05:00
J. Nick Koston 67e356904b Add support for eager tasks (#111425)
* Add support for eager tasks

python 3.12 supports eager tasks

reading:
https://docs.python.org/3/library/asyncio-task.html#eager-task-factory
https://github.com/python/cpython/issues/97696

There are lots of places were we are unlikely to suspend, but we might
suspend so creating a task makes sense

* reduce

* revert entity

* revert

* coverage

* coverage

* coverage

* coverage

* fix test
2024-02-26 11:36:46 -05:00
J. Nick Koston 93cc6e0f36 Switch nmap_tracker to use aiooui (#111415)
mac-vendor-lookup can take a long time to startup because
it has to fetch the oui db from the web
2024-02-26 17:32:53 +01:00
Paulus Schoutsen aabaa30fa7 2024.2.4 (#111441) 2024-02-26 11:17:13 -05:00
Abílio Costa 9420ac1cff Update idasen-ha to v2.5.1 to fix regression (#111439)
Update Idasen Desk support lib to fix regression

idasen v0.11.1 introduces some regressions, so idasen-ha v2.5.1 now
depends on v.0.11.0 instead.
2024-02-26 17:15:24 +01:00
Åke Strandberg 732491d3c9 Bump myuplink lib to 0.5.0 (#111447) 2024-02-26 17:13:21 +01:00
J. Nick Koston 1d4e82bd3d Fix race in dlna_dmr test (#111428)
The entity was removed before the entity registry could update it

```
Traceback (most recent call last):
  File "/Users/bdraco/home-assistant/homeassistant/helpers/entity.py", line 1482, in _async_process_registry_update_or_remove
    assert registry_entry is not None
AssertionError

```
2024-02-26 17:11:50 +01:00
Sid 174ebe70d7 Add webmin integration (#106976)
* add webmin integration 1

* refactor, add memory sensors

* Fix docstring

* addressed reviews

* address reviews

* address reviews

* use translation strings for sensors

* add async_abort_entries_match

* apply review comments

* address reviews

* add async_set_unique_id

* add identifiers to device_info

* disable all sensors by default

* move icons to icons.json

* show Faults when given from server in config flow

* add test for Fault

* Apply review suggestions

* Create helper functions for webmin instance and sorted mac addresses

* fix tests
2024-02-26 17:10:11 +01:00
Luke Lashley 4ad7f420e7 Bump Python-roborock to 0.39.2 (#111479)
bump to 0.39.2
2024-02-26 17:25:38 +02:00
Sid 367aaf96a7 Bump openwebifpy to 4.2.4 (#110676) 2024-02-26 08:21:12 -05:00
Aidan Timson 9f77e275e9 Add title to reauthenticate integration issue (#111275)
* Add title to reauthenticate integration issue

* Fix translation placeholder in test

* Update translation placeholders in test_init.py

* Update integration reauthentication message

* Update string
2024-02-26 08:19:37 -05:00
Jevgeni Kiski 0947bdbd20 Bump vallox-websocket-api to 5.1.0 (#111471)
Bump lib to 5.1.0
2024-02-26 15:03:18 +02:00
Jeremy TRUFIER ecc9c3b5f0 Add @tronix117 as overkiz codeowner (#111464) 2024-02-26 12:13:26 +01:00
Erik Montnemery 9b91da23c4 Improve logging of google_assistant messages (#110637)
* Improve logging of google_assistant messages

* Add tests

* Add test
2024-02-26 11:43:31 +01:00
starkillerOG 7b059b3dff Add Motionblinds virtual integration Madeco (#111455) 2024-02-26 11:06:28 +01:00
starkillerOG 3f7b2634f7 Add Motionblinds virtual integration Krispol (#111456) 2024-02-26 11:05:25 +01:00
Jan Bouwhuis 1b2e669302 Improve handling mqtt command template exceptions (#110499)
* Improve handling mqtt command template exceptions

* Fix test

* Cleanup stale exception handler

* Throw on topic template exception
2024-02-26 11:04:55 +01:00
starkillerOG 1f0697e85f Add Motionblinds virtual integration Acomax (#111458) 2024-02-26 11:03:49 +01:00
Jan Bouwhuis da09b6174d Add validation to water_heater set_operation mode at entity component (#111168)
* Add validation to water_heater set_operation mode at entity component

* Add final decorator
2024-02-26 11:02:39 +01:00
Christophe Gagnier 0d4728e1c6 Add TechnoVE auto charge switch (#109093)
* Add binary sensors to TechnoVE integration

* Add unit tests for TechnoVE binary sensors

* Implement PR feedback for TechnoVE

* Limit to appropriate sensors in TechnoVE tests

* Removed leftover code

* Implement feedback in TechnoVE PR #108938

* Add auto-charge switch to TechnoVE

* Improve TechnoVE test_switches to be consistent with other platforms

* Regenerate test_switch.ambr snapshot

* Add binary sensors to TechnoVE integration

* Add unit tests for TechnoVE binary sensors

* Implement PR feedback for TechnoVE

* Limit to appropriate sensors in TechnoVE tests

* Implement feedback in TechnoVE PR #108938

* Add auto-charge switch to TechnoVE

* Apply suggestions from code review

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Fix conflict merge issue

* Implement feedback from TechnoVE PR #109093

* Use TechnoVESwitchDescription

* Remove None from is_on in TechnoVE switches

* Update homeassistant/components/technove/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Remove unneeded code.

* Update test_switch.ambr

* Update TechnoVE switch test similar to Flexit_bacnet

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-26 10:36:40 +01:00
Åke Strandberg 999b1bb220 Add @astrandb as myuplink codeowner (#111449)
Add codeowner
2024-02-26 10:32:37 +01:00
Christopher Fenner 1e564f777e Add sensors for energy storage system to ViCare integration (#106600)
* add sensors for vitocharge

* add further sensors

* add unig getters

* remove icons

* Update strings.json

* handle percent uom

* handle unknown uom device class mapping

* add device class to sensor

* add sensor options

* Apply suggestions from code review

* fix

* align sensor naming

* add feed-in and consumption sensors for pcc

* Update strings.json

* battery symbol

* fix format

* remove obsolete device classes

* add icons

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* refactor

* modify lambda

* use helper

* Apply suggestions from code review

* Apply suggestions from code review

* Update strings.json

* Update sensor.py

* Apply suggestions from code review

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-26 09:59:58 +01:00
Paulus Schoutsen 90e1fb1227 Bump version to 2024.2.4 2024-02-25 22:50:43 -05:00
Marc Mueller 73916f5b97 Update guppy3 to 3.1.4.post1 (#111430) 2024-02-25 22:50:34 -05:00
Marc Mueller d9cd5b69b1 Update caldav to 1.3.9 (#111429) 2024-02-25 22:50:33 -05:00
Luis Andrade d1024225ab Fix another name missing in wyoming getLogger (#111390)
bugfix wyoming getLogger
2024-02-25 22:48:36 -05:00
Ben Hoff 5e792ab24e Bump opower to 0.3.1 (#111307)
bump opower instance
2024-02-25 22:48:35 -05:00
Dan ffe1b72f1c Bump opower to 0.3.0 (#109248)
Co-authored-by: Dan Swartz <3066652+swartzd@users.noreply.github.com>
2024-02-25 22:48:35 -05:00
Joost Lekkerkerker 50d868766c Set Lutron switch to device name (#111293) 2024-02-25 22:46:48 -05:00
J. Nick Koston cb72095a85 Bump orjson to 3.9.15 (#111233)
changelog: https://github.com/ijl/orjson/compare/3.9.14...3.9.15
2024-02-25 22:46:47 -05:00
Andriy Kushnir 7f23f64951 Bump roombapy to 1.6.13 (#111187) 2024-02-25 22:46:46 -05:00
Steve HOLWEG 6009c98643 Return group unit of measurement when device_class is None (#110973)
* Groups: Return units when device_class is None

* Fixes

* Mods

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-02-25 22:44:24 -05:00
Steve HOLWEG 4a128f1225 Return group unit of measurement when device_class is None (#110973)
* Groups: Return units when device_class is None

* Fixes

* Mods

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-02-25 22:44:05 -05:00
dougiteixeira 34e9c29ef2 Esphome text sensor device class (#111057) 2024-02-25 16:56:52 -10:00
Abílio Costa 5a8779551b Fix uneeded state update in Idasen Desk sensor (#111433) 2024-02-25 15:03:52 -10:00
Marc Mueller bfd82a0780 Update freezegun to 1.4.0 (#111268) 2024-02-25 15:01:31 -10:00
Marc Mueller eb370d7213 Update guppy3 to 3.1.4.post1 (#111430) 2024-02-25 15:00:51 -10:00
Marc Mueller a492ccdc15 Update caldav to 1.3.9 (#111429) 2024-02-25 15:00:37 -10:00
dougiteixeira c8ec66fcbe Bump aioesphomeapi to 22.1.0 (#111435) 2024-02-25 14:58:37 -10:00
Brett Adams d84bd14acc Bump tesla-fleet-api to 0.4.6 in Teslemetry (#111127) 2024-02-25 14:06:12 -10:00
Matthias Alphart e984bdaf98 Fix KNX cover schema for voluptuous 0.14.2 (#111427) 2024-02-26 00:26:32 +01:00
Joost Lekkerkerker c3d3fc7000 Add icon translations to Dynalite (#111412) 2024-02-25 23:01:28 +01:00
Joost Lekkerkerker a410aa4a85 Add icon translations to Ecobee (#111416) 2024-02-25 23:01:17 +01:00
Joost Lekkerkerker 8dec6336b3 Add icon translations to edl21 (#111420) 2024-02-25 23:00:52 +01:00
Joost Lekkerkerker 33cb54b888 Add icon translations to Electric Kiwi (#111422) 2024-02-25 23:00:22 +01:00
Joost Lekkerkerker e366763eb2 Add icon translations to Ecoforest (#111417) 2024-02-25 22:47:15 +01:00
Joost Lekkerkerker a2af3e5ba1 Add icon translations to EasyEnergy (#111413) 2024-02-25 22:46:33 +01:00
Álvaro Fernández Rojas b3e10198dd Enable CONF_STATION_UPDATES by default on AEMET (#111214)
* aemet: set CONF_STATION_UPDATES default to True

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* tests: aemet: check CONF_STATION_UPDATES default form value

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* Revert "tests: aemet: check CONF_STATION_UPDATES default form value"

This reverts commit f0f95da68f.

* tests: aemet: parametriz test_form_options

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-25 23:23:18 +02:00
Marc Mueller 8c50e24056 Update bcrypt to 4.1.2 (#111283) 2024-02-25 22:22:50 +01:00
J. Nick Koston 014e21ce80 Bump bluetooth-adapters to 0.18.0 (#111316)
changelog: https://github.com/Bluetooth-Devices/bluetooth-adapters/compare/v0.17.0...v0.18.0
2024-02-25 23:07:12 +02:00
hahn-th 80662cd989 Bump homematicip to 1.1.0 (#111385)
#108775 Bump homematicip upstream lib to 1.1.0
2024-02-25 23:03:14 +02:00
Marc Mueller 5206514538 Update ciso8601 to 2.3.1 (#111389) 2024-02-25 22:59:00 +02:00
Luis Andrade d3c53a1cef Fix another name missing in wyoming getLogger (#111390)
bugfix wyoming getLogger
2024-02-25 21:41:07 +01:00
wittypluck 716d8f8a00 Fix Glances translation keys on CPU load, Memory use, Swap use (#111401)
Fix translation keys on CPU load, Memory use, Swap use
2024-02-25 21:25:28 +01:00
Jan-Philipp Benecke 1c5be598f5 Run pylint sorted platform check also when platform has type annotations (#111407) 2024-02-25 21:18:07 +01:00
steffenrapp e116d2a721 Add Nuki ID as serial number (#111381)
* Nuki add Nuki ID as serial number

* add hardwareId to bridge

* __init__.py aktualisieren

Co-authored-by: Pascal Reeb <pascal@reeb.io>

* __init__.py aktualisieren

Co-authored-by: Pascal Reeb <pascal@reeb.io>

---------

Co-authored-by: Pascal Reeb <pascal@reeb.io>
2024-02-25 21:16:21 +01:00
Marc Mueller fa103ec924 Update pytest to 8.0.2 (#111399) 2024-02-25 21:15:48 +01:00
J. Nick Koston ab68a26000 Fix flakey utility meter test (#111400)
The test tooling would cancel setup at teardown because
it was still setting up

https://github.com/home-assistant/core/actions/runs/8039593463/job/21956908225?pr=111336
2024-02-25 20:21:09 +01:00
Marc Mueller 21ff8c8e03 Update pylint to 3.1.0 (#111392) 2024-02-25 08:01:20 -10:00
Marc Mueller f155f1c102 Update aionotion to 2024.02.2 (#111388) 2024-02-25 10:45:51 -07:00
Joost Lekkerkerker 953fd82d2c Add icon translations to Deconz (#111363) 2024-02-25 17:12:14 +01:00
Joakim Sørensen a6a0a0c901 Adjustment post move to WS in Traccar Server (#111337)
* Adjustment post move to WS in Traccar Server

* Use entry.async_create_background_task
2024-02-25 16:04:09 +01:00
mkmer 23cf418807 Allow EM Setpoint in Honeywell (#111332)
Add emheat setpoint
2024-02-25 14:40:08 +01:00
J. Nick Koston dad1184e18 Make hardware setup in hassio a normal function (#111328)
nothing awaited hassio
2024-02-25 14:37:09 +01:00
Joost Lekkerkerker 77284c746a Add icons translations for ambiclimate (#111322) 2024-02-25 14:31:53 +01:00
Joost Lekkerkerker 407a949b50 Add icons translations for android_ip_webcam (#111324)
* Add icons translations for android_ip_webcam

* Add icon translations to android IP webcam

* Apply suggestions from code review
2024-02-25 14:30:57 +01:00
Daniel Gangl 2adca7a057 Bump Geosphere to v0.3.6 (#111376) 2024-02-25 14:20:51 +01:00
Joost Lekkerkerker 4982e792f3 Add icon translations to Dexcom (#111368) 2024-02-25 14:17:08 +01:00
Joost Lekkerkerker 67165349c5 Add icon translations to Doorbird (#111370) 2024-02-25 14:16:42 +01:00
Joost Lekkerkerker 724b5c8892 Add icon translations to Dremel 3D printer (#111371) 2024-02-25 14:15:57 +01:00
Joost Lekkerkerker 9ada85af36 Add icon translations to Bosch SHC (#111350)
* Add icon translations to Bosch SHC

* Update homeassistant/components/bosch_shc/sensor.py

* Update homeassistant/components/bosch_shc/sensor.py
2024-02-25 14:09:44 +01:00
Joost Lekkerkerker 0009c9a1de Add icon translations to Cloudflare (#111356) 2024-02-25 14:08:49 +01:00
Joost Lekkerkerker 02907578ab Add icon translations to Color extractor (#111357) 2024-02-25 14:08:12 +01:00
Joost Lekkerkerker 9afa154271 Use device class icon in cpu-speed (#111360)
* Use device class icon in cpu-speed

* Use device class icon in cpu-speed
2024-02-25 14:06:54 +01:00
Joost Lekkerkerker ba961e12a4 Use device class icon in Crownstone (#111361) 2024-02-25 14:06:16 +01:00
Joost Lekkerkerker 5fa4be02f0 Add icon translations to Daikin (#111362) 2024-02-25 14:05:43 +01:00
Joost Lekkerkerker 18fcb14c1b Add icon translations to Cert expiry (#111354) 2024-02-25 14:04:48 +01:00
Joost Lekkerkerker 40a38d23eb Add icon translations to Coolmaster (#111359) 2024-02-25 14:03:07 +01:00
Joost Lekkerkerker 33bf5d7b8b Add icon translations to Cloud (#111355) 2024-02-25 14:01:41 +01:00
Joost Lekkerkerker 5849227033 Add icon translations to Bring (#111351) 2024-02-25 13:59:41 +01:00
Joost Lekkerkerker 33a4040f8e Add icon translations to Cast (#111352) 2024-02-25 13:58:50 +01:00
steffenrapp 13621532fd Nuki add binary sensor for battery charging (#111320)
* Nuki binary sensors

* disable by default
2024-02-25 13:37:13 +01:00
steffenrapp 7d37aeac59 Add icon translations to Nuki (#111377) 2024-02-25 13:25:12 +01:00
J. Nick Koston 8645184dbf Make matter import in google_assistant late to avoid blocking the event loop (#111335)
related issue https://github.com/home-assistant-libs/python-matter-server/issues/578
2024-02-25 07:20:01 -05:00
Marc Mueller 49ae81c5c4 Refactor deprecated workday argument (#111379) 2024-02-25 13:04:02 +01:00
Joost Lekkerkerker a94f8bd14d Add icon translations to DNS IP (#111369) 2024-02-25 13:00:45 +01:00
Joost Lekkerkerker 8d3982f3dd Add icon translations to Comelit (#111358) 2024-02-25 11:35:22 +01:00
Joost Lekkerkerker 76784cbc95 Add icon translations to Blink (#111346) 2024-02-25 10:44:49 +01:00
Joost Lekkerkerker 3e67b9828b Add icon translations to Android TV (#111338) 2024-02-25 10:43:56 +01:00
Joost Lekkerkerker a55e5130a4 Use device class icon in Anthem AV (#111339) 2024-02-25 10:43:21 +01:00
Joost Lekkerkerker 4229f988e2 Add icon translations to aosmith (#111340)
* Add icon translations to aosmith

* Add icon translations to aosmith
2024-02-25 10:42:41 +01:00
Joost Lekkerkerker 859c28fdb7 Add icon translations to apcupsd (#111342)
* Add icon translations to apcupsd

* Add icon translations to apcupsd
2024-02-25 10:42:04 +01:00
Joost Lekkerkerker cb6cf3bedc Add icon translations to Balboa (#111343) 2024-02-25 10:40:44 +01:00
Joost Lekkerkerker 496339773b Add icon translations to Blue current (#111347) 2024-02-25 10:39:15 +01:00
Joost Lekkerkerker 70af28cc26 Add icon translations to aftership (#111317) 2024-02-25 10:38:17 +01:00
Joost Lekkerkerker dbc4d90435 Add icon translations to amberelectric (#111321) 2024-02-25 10:37:29 +01:00
Joost Lekkerkerker a706d5e282 Add icon translations to alarmdecoder (#111319) 2024-02-25 10:36:18 +01:00
Marc Mueller 20f455d39f Update python-homewizard-energy to 4.3.1 (#111311) 2024-02-25 10:35:12 +01:00
J. Nick Koston d053f0b9e2 Bump ibeacon-ble to 1.2.0 (#111315)
changelog: https://github.com/Bluetooth-Devices/ibeacon-ble/compare/v1.0.1...v1.2.0
2024-02-25 10:44:23 +02:00
Joost Lekkerkerker 6e5d14737e Add icons translations for airvisual (#111318)
* Add icons translations for airvisual

* Add icon translations to airvisual
2024-02-25 08:27:29 +01:00
MarkGodwin d004011d41 Bump tplink-omada-client to 1.3.11 (#111273)
Bump TP-Link Omada API
2024-02-24 23:33:13 +01:00
G Johansson 5073842514 Fix sql integration no recorder (#111263) 2024-02-24 22:40:49 +01:00
Åke Strandberg cd46cc6e80 Add myuplink number platform (#111154)
* Add number platform

* Use constant for SERVICE_SET_VALUE
2024-02-24 22:39:14 +01:00
J. Nick Koston b9b52b5e6d Reduce Bluetooth setup time (#111304) 2024-02-24 11:31:45 -10:00
J. Nick Koston dd80157dc7 Load translations at setup time if they were not loaded at bootstrap (#110921) 2024-02-24 11:31:25 -10:00
Jan-Philipp Benecke 076ae22fdd Freeze time in aemet diagnostics test (#111308) 2024-02-24 16:26:16 -05:00
J. Nick Koston 93a76ab519 Fix profiler.lru_stats always throwing an exception (#111249)
Remove IntegrationMatcher as its now a slotted class and cannot
be examined with the current methods (we also likely do not need
to optimize it anymore)

```
  File "/usr/src/homeassistant/homeassistant/components/profiler/__init__.py", line 201, in _lru_stats
    for maybe_lru in class_with_lru_attr.__dict__.values():
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'IntegrationMatcher' object has no attribute '__dict__'. Did you mean: '__dir__'?
```
2024-02-24 16:26:01 -05:00
J. Nick Koston bccab1bad7 Fix workday blocking the event loop (#111310)
- Avoid calling list_supported_countries to setup workday
- Only call list_supported_countries in executor in the config flow
2024-02-24 22:22:07 +01:00
Robert Svensson efc89cd34f Unifi websocket manager (#111041)
* Move hub into .hub.hub

* Move websocket to own module

* Minor shuffle
2024-02-24 16:20:59 -05:00
Jan-Philipp Benecke d796085923 Bump pydiscovergy to 3.0.0 (#111305) 2024-02-24 22:07:46 +01:00
Ben Hoff adf4392c0a Bump opower to 0.3.1 (#111307)
bump opower instance
2024-02-24 21:56:20 +01:00
Rami Mosleh a65d9c17c4 Fix async_validate_location arguments order (#111277)
fix `async_validate_location` arguments order
2024-02-24 21:43:00 +01:00
G Johansson c45cae3665 Remove obsolete entities from System Monitor automatically (#111231)
* Remove obsolete entities from System Monitor automatically

* callback
2024-02-24 20:50:53 +01:00
Joost Lekkerkerker 47b7dd4a01 Set Lutron switch to device name (#111293) 2024-02-24 20:18:06 +01:00
Minims 597118d584 Add ECO temp to Generic Thermostat (#110471)
feat: add ECO temp to Generic Thermostat.
2024-02-24 20:17:22 +01:00
G Johansson 777428c36d Add diagnostics to System Monitor (#111291)
* Add diagnostics to System Monitor

* Fix
2024-02-24 20:11:11 +01:00
Álvaro Fernández Rojas 57d169582d Add diagnostics support for AEMET (#111218)
aemet: add diagnostics support

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-24 20:08:50 +01:00
Federico D'Amico bf9c4197b9 Add light platform to microBees and change docstring in sensor (#111093)
* Add light platform to microBees and change docstring in sensor

* update .coveragerc

* fixes review

* fixes review

* fixes async_add_entities
2024-02-24 20:07:04 +01:00
starkillerOG 9cebbf15f3 Bump motionblinds to 0.6.23 (#111265)
* Bump motionblinds to 0.6.22

* Bump motionblinds to 0.6.23
2024-02-24 20:05:04 +01:00
dougiteixeira 3d72f40aea Add strings to the options attribute (#111302)
Add strings to the message attribute
2024-02-24 19:23:07 +01:00
steffenrapp dbf70f9e0a Nuki add battery critical binary sensor (#111285)
* Update binary_sensor.py

* Update strings.json

* Update homeassistant/components/nuki/binary_sensor.py

Co-authored-by: Pascal Reeb <pascal@reeb.io>

* Update homeassistant/components/nuki/binary_sensor.py

Co-authored-by: Pascal Reeb <pascal@reeb.io>

* Update homeassistant/components/nuki/binary_sensor.py

Co-authored-by: Pascal Reeb <pascal@reeb.io>

---------

Co-authored-by: Pascal Reeb <pascal@reeb.io>
2024-02-24 18:17:42 +01:00
J. Nick Koston 53b12d67f7 Bump yalexs-ble to 2.4.2 (#111247)
changelog: https://github.com/bdraco/yalexs-ble/compare/v2.4.1...v2.4.2
2024-02-24 19:04:19 +02:00
Marc Mueller 70790bc614 Update pytest-timeout to 2.2.0 (#111272) 2024-02-24 19:02:15 +02:00
Klaas Schoute 04a6c0b5f2 Bump odp-amsterdam to v6.0.1 (#111296) 2024-02-24 19:00:40 +02:00
Álvaro Fernández Rojas 766596abdc Add Airzone Cloud Air Quality zone binary sensors (#106573)
* airzone_cloud: add Air Quality binary sensor

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* airzone_cloud: binary_sensor: rename Air Quality

Add "active" to indicate status.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-24 08:41:12 -05:00
Álvaro Fernández Rojas d3d6870c04 Add Airzone Cloud Air Quality zone sensors (#106571)
* airzone-cloud: add Air Quality sensors

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* tests: airzone_cloud: add missing AQI test

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-24 08:39:53 -05:00
J. Nick Koston e5ac7970ca Bump habluetooth to 2.4.1 (#111236)
changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v2.4.0...v2.4.1
2024-02-24 08:38:50 -05:00
Marc Mueller 6d10f96980 Update coverage to 7.4.3 (#111267) 2024-02-24 14:37:07 +01:00
Marc Mueller 4e9bfd1f4a Update pytest-sugar to 1.0.0 (#111271) 2024-02-24 14:35:58 +01:00
Marc Mueller e7ab416ab9 Update pytest-socket to 0.7.0 (#111270) 2024-02-24 14:35:27 +01:00
Marc Mueller d70c013ea6 Update pipdeptree to 2.15.1 (#111269) 2024-02-24 08:34:48 -05:00
Cyrill Raccaud 22480a7894 Fix bring! comment pep8 conformity (#111276)
fix bring comment pep8 conformity
2024-02-24 08:18:54 -05:00
Joakim Sørensen 79572c0a5d Subscribe to Traccar Server events (#111262)
* Subscribe to Traccar Server events

* No need to unsubscribe on error

* typo

* rename _attrs

* arg type

* reorder return type

* more spesific

* Update stale docstring
2024-02-24 12:35:32 +01:00
Maciej Bieniek ee57c924f2 Bump pysnmp-lextudio library to version 6.0.2 (#111193)
* Bump pysnmp-lextudio to version 6.0.2

* Update gen_requirements_all.py

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-24 11:30:00 +01:00
G Johansson d08fc1f342 Add debugging to coordinator output in System Monitor (#111244) 2024-02-24 09:36:22 +01:00
J. Nick Koston 883d5a0842 Bump cryptography to 42.0.5 (#111259)
changelog: https://github.com/pyca/cryptography/compare/42.0.3...42.0.5
2024-02-24 08:49:46 +01:00
J. Nick Koston 5d6687503e Bump orjson to 3.9.15 (#111233)
changelog: https://github.com/ijl/orjson/compare/3.9.14...3.9.15
2024-02-24 08:47:29 +01:00
J. Nick Koston 5b8591ec7e Avoid reschedule churn in Storage.async_delay_save (#111091)
* Avoid circular import in Storage.async_delay_save

We call Storage.async_delay_save for every entity being added or removed
from the registry. The late import took more time than everything else
in the function.

* Avoid reschedule churn in Storage.async_delay_save

When we are adding or removing entities we will call async_delay_save
quite often which has to add and remove a TimerHandle on the event loop
which can add up when there are a lot of registry items changing.

If the timer handle still has 80% of the time remaining on it
we will avoid resceduling and let it fire at the time the
original async_delay_save call was made. This ensures we
do not force the event loop to rebuild its heapq because
too many timer handlers were cancelled at once

* div0

* add coverage for 0 since we had none

* fix bad conflict

* tweaks

* tweaks

* tweaks

* tweaks

* tweaks

* tweaks

* more test fixes

* mqtt tests rely on event loop overhead
2024-02-24 08:46:00 +01:00
J. Nick Koston ff0e0b3e77 Convert debouncer async_shutdown to be a normal function (#111257)
* Convert debouncer async_shutdown to be a normal function

nothing was being awaited here and the shutdown call was only used
in integrations marked internal and other internals. Its possible
that a custom component might have been using the method but it
seemed uncommon enough that it did not warrent marking as a breaking
change. The update coordinator is no longer awaiting anything in
async_shutdown either now but it seemed likely that this use
would get subclassed.

* fix
2024-02-24 08:37:33 +01:00
Teemu R e0490a3ade Improve tplink authenticate description wording (#111250) 2024-02-23 15:19:28 -10:00
J. Nick Koston b60ca4260c Fix bluetooth manager stop missing callback decorator (#111232) 2024-02-23 12:58:55 -10:00
David F. Mulcahey 5d4dc63118 Bump ZHA dependencies (#111227) 2024-02-23 17:57:39 -05:00
J. Nick Koston 40774101d3 Avoid creating task per device when adding legacy device trackers (#111220) 2024-02-23 23:47:43 +01:00
Marc Mueller 5f8ef37f2d Update pylint to 3.0.4 (#111229)
* Update pylint to 3.0.4

* Use yield from

* Remove unnecessary pylint disable comments
2024-02-23 23:46:00 +01:00
rlippmann efd1ed86ae Code improvements for microbees component (#111208) 2024-02-23 12:35:56 -10:00
J. Nick Koston d9addc45f9 Avoid scheduling a task to add each entity when not using update_before_add (#110951)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-02-23 10:49:26 -10:00
J. Nick Koston 3aecec5082 Avoid rechecking for missing platforms in the loader (#111204) 2024-02-23 10:48:47 -10:00
G Johansson 9e46c2e2b3 Isolate systemmonitor from psutil shared state (#111110)
* Isolate systemmonitor from psutil shared state

* Mods

* typing

* Fix tests

* Fix read temp issue

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-23 20:53:48 +01:00
Niklas Roth 2ff0102bce Bump python-hpilo to 4.4.3 (#110325)
* Update hpilo version in requirements_all.txt (#109581)

The issue with the deprecated and now removed ssl.wrap_socket function was fixed years ago in the library

* Update hpilo version in manifest.json (#109581)
2024-02-23 20:51:29 +01:00
J. Nick Koston 125de17a09 Avoid linear search to remove from the entity registry index (#111138)
Avoid linear search to remove from entity registry index

Because the entity registry index needs to preserve insertion order
for backwards compat, a list was used for the index. Because some
config entries/devices/areas have a large amount of entities, removing
the entities, the O(n) time complexity of removing from a list can
slow down reloads. As python has no orderedset in stdlib, use
a dict since it preserves insertion order has O(1) add/remove
time complexity for the average case
2024-02-23 13:57:59 -05:00
J. Nick Koston b5a2df1951 Refactor keyed event trackers to reduce future refactoring risk (#111150)
* Refactor keyed event trackers to avoid refactoring risk

Follow to https://github.com/home-assistant/core/pull/110978#discussion_r1496771106

I had to do some type ignores because of the EventType vs Event
which is hopefully not going to be needed after the next mypy

* delete constants only used one in other const

* no field

* fixes

* less refactoring later

* less refactoring later

* keep const
2024-02-23 13:55:02 -05:00
J. Nick Koston 5e16602595 Refactor storage collections to reduce tasks during startup (#111182)
* Make adding entities in storage collection a normal function

Nothing is awaited when adding

* cleanup

* cleanup

* cleanup

* cleanup

* reduce

* reduce

* reduce

* reduce

* tweak
2024-02-23 13:50:25 -05:00
J. Nick Koston b3a8a75e75 Improve performance of filtering HomeKit entities (#111201)
Get the underlying filter with get_filter to avoid the wrapper
2024-02-23 13:42:01 -05:00
J. Nick Koston 3877a56d23 Avoid creating tasks for automation and script validation (#111181)
These functions created tasks to run small validators, and the cost of
creating all the tasks was more expensive than running the validators
themselves. Since the code is unlikely to suspend its more efficient to
await them in series.
2024-02-23 13:41:36 -05:00
J. Nick Koston 5d421e249f YAML loader performance improvements (#111199)
* YAML loader performance improvements

- Cache the name of the loader since we call it multiple
  times for every line

- Add a fast path for scalar tags since they are the
  most common

* Update homeassistant/util/yaml/loader.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* remove unreachable code

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-23 13:37:09 -05:00
J. Nick Koston b9ed315cf7 Avoid yalexs_ble delaying startup when the lock is not advertising (#111167) 2024-02-23 13:35:17 -05:00
J. Nick Koston b6b5b1f788 Fix race in ESPHome entity test (#111179)
This test relied on the event loop overhead. Change it
to listen for the state to change instead
2024-02-23 13:34:46 -05:00
David F. Mulcahey d485e8967b Add device counter entities to ZHA (#111175)
* Add counter entities to the ZHA coordinator device

* rework to prepare for non coordinator device counters

* counter entity test

* update log lines

* disable by default
2024-02-23 13:22:47 -05:00
J. Nick Koston 59066c1770 Migrate zha to use Debouncer.async_schedule_call (#111103) 2024-02-23 07:28:23 -10:00
J. Nick Koston 3ecbd05ac0 Avoid creating tasks to register hassio panels (#111206)
panel_custom never suspends so we can avoid the overhead of
creating and scheduling tasks
https://github.com/home-assistant/core/blob/e398accc3e2758080a39261adf07a71b9754676e/homeassistant/components/panel_custom/__init__.py#L74

panel_custom.async_register_panel could be converted to a normal function but it
would be a breaking change
2024-02-23 16:50:39 +01:00
J. Nick Koston e398accc3e Convert hassio websocket_apis that did not await to normal functions (#111173)
* Convert hassio websocket_apis that did not await to normal functions

* Convert hassio websocket_apis that did not await to normal functions
2024-02-23 15:27:17 +01:00
Marc Mueller dd51b0c6cc Update beautifulsoup4 to 4.12.3 (#111195) 2024-02-23 13:42:32 +01:00
Marc Mueller 55e39d48eb Update coverage to 7.4.2 (#111194) 2024-02-23 13:22:19 +01:00
Joost Lekkerkerker 730d805876 Enable SIM114 ruff rule (#111125) 2024-02-23 13:21:59 +01:00
dependabot[bot] 26fac184b4 Bump github/codeql-action from 3.24.3 to 3.24.4 (#111184) 2024-02-23 12:15:42 +01:00
Álvaro Fernández Rojas d12335a3aa Update AEMET-OpenData to v0.5.1 (#111191)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-23 11:59:09 +01:00
Joakim Sørensen 512bc7c699 Bump pytraccar from 2.1.0 to 2.1.1 (#111188) 2024-02-23 11:57:41 +01:00
J. Nick Koston 70d7f74f35 Convert hardware system status websocket api to a normal function (#111172)
* Convert hardware system status websocket api to a normal function

Nothing is awaited here

* tweak
2024-02-23 11:48:13 +01:00
Andriy Kushnir 87fed65fb3 Bump roombapy to 1.6.13 (#111187) 2024-02-23 10:42:13 +01:00
J. Nick Koston 68d1fbaadc Fix race in openalpr_cloud tests (#111185)
The test would end before setup was finished and the setup
would get cancelled
2024-02-23 09:28:20 +01:00
Jan Bouwhuis afa4e76248 Optimize mqtt device cleanup (#111170)
Thnx
2024-02-23 07:29:50 +01:00
jjlawren 8d4569ff55 Bump plexapi to 4.15.10 (#111180) 2024-02-23 07:03:07 +01:00
Mike O'Driscoll eb9eff404d Fix stale sensors for Recollect Waste (#111174) 2024-02-22 22:05:30 -07:00
kingy444 83859bd342 Rework how shade updates are processed in powerview (#110928)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-22 15:58:37 -10:00
J. Nick Koston 98a8714705 Improve error reporting in tplink config flow (#111166)
* Improve error reporting in tplink config flow

* coverage, fixes
2024-02-23 02:38:46 +01:00
Matthew Donoughe 6712621b95 Update pylutron-caseta to 0.20.0 (#111169) 2024-02-22 14:44:30 -10:00
Christopher Bailey ae60f59bed Add metadata for UniFi Protect Media Source (#109389) 2024-02-22 14:44:16 -10:00
ollo69 f0f3773858 Add base class AndroidTVEntity to AndroidTV (#105945) 2024-02-22 12:38:38 -10:00
J. Nick Koston 2ef71289b9 Avoid creating tasks for dependencies already being setup (#111034)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-02-22 12:34:46 -10:00
J. Nick Koston 32cd3ad862 Fix lingering timer in enphase_envoy test (#111165) 2024-02-22 12:33:44 -10:00
J. Nick Koston fb7da1ba83 Simplify ESPHome entity removal process (#111076) 2024-02-22 11:39:53 -10:00
Maciej Bieniek bccd9bd21f Bump brother library to version 4.0.0 (#111157)
* Bump library

* Update code to the new library version

* Improve diagnostics

* Fix tests

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-22 23:27:24 +02:00
Åke Strandberg 3be83bf2f5 Correct myUplink dash replacement (#111143)
* Corrected dash replacement

* Fix comment
2024-02-22 22:26:08 +01:00
J. Nick Koston 36c11119cf Refactor Debouncer usage in august (#111102) 2024-02-22 11:23:14 -10:00
Álvaro Fernández Rojas 78f3f67e3a Update AEMET-OpenData to v0.5.0 (#111155)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-22 21:47:21 +02:00
Christopher Fenner 88e9870f1c Add number entities to change heat pump program temperatures in ViCare integration (#109315)
* add HeatingProgram type

* use HeatingProgram type

* add heatpump number sensors

* use HeatingProgram type

* Update strings.json

* rename HeatingProgram to Program

* remove commented code

* rename heating program type

* simplify

* Apply suggestions from code review

* Update strings.json

* Update const.py

* fix

* add heating program type

* correct imports

* Revert "fix"

This reverts commit 857dda59da.

* Apply suggestions from code review

* Update strings.json
2024-02-22 18:58:38 +01:00
rkruisselbrink c1b4a21821 Bump rova to 0.4.0 (#111131)
* Bump rova to 0.4.0

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-22 19:55:45 +02:00
Mr. Bubbles eeeabfb440 bump bring-api to 0.4.1 (#111149) 2024-02-22 19:54:56 +02:00
J. Nick Koston 5bf8086a2b Cache formatting of mac addresses (#111140) 2024-02-22 07:09:56 -10:00
Christopher Bailey b740783f8d Bump pyunifiprotect to 4.23.3 (#111059) 2024-02-22 05:57:42 -10:00
Shay Levy 6bbd8c7f7b Remove filter of -1 in Shelly block based sensors (#111116) 2024-02-22 17:48:14 +02:00
Artem Draft a7a19786cc Handle media position in Bravia TV (#107080)
Handle media position in BraviaTV
2024-02-22 16:22:07 +01:00
Jan-Philipp Benecke ef66560744 Use async_update_reload_and_abort helper in discord (#111104) 2024-02-22 16:11:46 +01:00
Joakim Sørensen 8f83426895 Revert "Move backup/* WS commands to the backup integration" (#111136)
Revert "Move backup/* WS commands to the backup integration (#110651)"

This reverts commit ec4e6c3a74.
2024-02-22 16:08:30 +01:00
Franck Nijhof 1ee39275fc 2024.2.3 (#111133) 2024-02-22 16:08:18 +01:00
David Knowles 8bf0466151 Bump pydrawise to 2024.2.0 (#111080) 2024-02-22 13:00:25 +01:00
Malte Franken 5f9d46205c Bump georss-qld-bushfire-alert-client to 0.7 (#111075)
* bump georss-qld-bushfire-alert-client to 0.7

* fix tests
2024-02-22 12:58:54 +01:00
Åke Strandberg 58269fefea Replace dash with hard hyphen in myuplink entity names (#111074)
Replace dash with hard hyphen in entity names
2024-02-22 12:56:42 +01:00
Álvaro Fernández Rojas b72d64a3dc Disable AEMET legacy options (#107795)
* 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>
2024-02-22 12:52:57 +01:00
Thomas55555 85be94e0a9 Add switch platform for husqvarna_automower (#110139)
* 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>
2024-02-22 12:34:24 +01:00
Franck Nijhof 728399c09a Revert "Fix Shelly RPC RSSI sensor removal (#111035)"
This reverts commit 4eb1bac859.
2024-02-22 12:05:24 +01:00
dependabot[bot] 6fc4eea0e7 Bump dawidd6/action-download-artifact from 3.1.1 to 3.1.2 (#111120) 2024-02-22 11:50:45 +01:00
Franck Nijhof c76c66c466 Bump version to 2024.2.3 2024-02-22 11:48:04 +01:00
Joost Lekkerkerker 2f8d8eed84 Ignore cloudhook already removed in mobile app (#111122) 2024-02-22 11:46:29 +01:00
Robert Resch a372878aed Bump deebot-client to 5.2.2 (#111112) 2024-02-22 11:46:26 +01:00
Álvaro Fernández Rojas f5d7e6f506 Bump aioairzone to v0.7.4 (#111105)
* Update aioairzone to v0.7.3

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* Update aioairzone to v0.7.4

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-22 11:46:23 +01:00
Shay Levy 2cf87b8536 Bump pywebpush to 1.14.1 (#111082) 2024-02-22 11:46:20 +01:00
Christopher Bailey 68450bb594 Fixes UniFi Protect light state check (#111058) 2024-02-22 11:46:17 +01:00
G Johansson 4f5c808b40 Bump holidays to 0.43 (#111039) 2024-02-22 11:46:14 +01:00
Shay Levy 4eb1bac859 Fix Shelly RPC RSSI sensor removal (#111035) 2024-02-22 11:46:10 +01:00
starkillerOG f6bef0081b Bump motionblinds to 0.6.21 (#110970) 2024-02-22 11:45:18 +01:00
Michael f590f86cdd Reset error state when Ecovacs bot is operational again (#110962) 2024-02-22 11:45:15 +01:00
starkillerOG 85ad0a0e1e Bump reolink-aio to 0.8.8 (#110959) 2024-02-22 11:45:12 +01:00
Dominik Sander bd08807b53 Bump deluge-client to 1.10.2 (#110905)
This mainly addresses the client hanging and not reconnecting whenever
the deluge server is restarted. See https://github.com/JohnDoee/deluge-client/pull/42

https://github.com/JohnDoee/deluge-client/compare/1.10.0...1.10.2
2024-02-22 11:45:09 +01:00
Robert Hillis 715c6a554c Bump deluge-client to 1.10.0 (#110663) 2024-02-22 11:45:04 +01:00
starkillerOG e3074c6148 Reolink continue setup when internet blocked (#110888) 2024-02-22 11:43:20 +01:00
Chris Caron b7c97880e9 Allow loading of more then 1 defined Apprise URL (#110868) 2024-02-22 11:37:35 +01:00
Galorhallen 6745814e59 Update govee-local-api library to 1.4.4 (#110854) 2024-02-22 11:37:32 +01:00
Jan-Philipp Benecke adf24c970c Bump aiotankerkoenig to 0.4.1 (#110840) 2024-02-22 11:37:29 +01:00
Michael f13052f9aa Detect reached API rate limit in Tankerkoenig (#110432) 2024-02-22 11:37:23 +01:00
Aaron Bach 2a12369e31 Ensure Tile timestamps are reported as UTC (#110773) 2024-02-22 11:35:56 +01:00
Michael 76ec26b23d Bump roombapy to 1.6.12 (#110762)
* bump roombapy to 1.6.11

* Apply suggestions from code review

* "fix" tests (make them pydantic fiendly?)

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-22 11:35:52 +01:00
Steven Barth d85a92f5f1 Remove matplotlib pinning due to Python 3.12 incompatibility (#110706) 2024-02-22 11:35:49 +01:00
Michael ac74eb7854 Fix scene activation with climate entities with None attribute values (#110684)
don't call service with attribute None
2024-02-22 11:35:46 +01:00
Chris Talkington 8769921d70 Update rokuecp to 0.19.1 (#110670) 2024-02-22 11:35:43 +01:00
wilburCforce 54c5c94f97 Fix uuid issue in Lutron (#110524) 2024-02-22 11:35:39 +01:00
Brett Adams 9cb425ae8b Fix set_temperature in Tessie climate platform (#110445)
* HVAC_MODE support for set_temperature

* Fix import
2024-02-22 11:35:36 +01:00
Brett Adams eff82ba82c Add wake up timeout to Teslemetry (#109037) 2024-02-22 11:35:33 +01:00
Sid f21313b622 Handle deep standby and poweroffs of enigma2 devices gracefully (#107462)
* handle deep standby and poweroff of enigma2 devices gracefully

* address review comments

* remove warning on deep standby

* use contextlib.suppress
2024-02-22 11:35:29 +01:00
Mick Vleeshouwer bba7641c77 Fix reauth in Overkiz for config entries created prior to 2022.12 (#106251)
* Fix #106204

* Use api type variable
2024-02-22 11:35:23 +01:00
Federico D'Amico 6af7d7de41 Bump microBeesPy to 0.3.2 (#111067)
Bump microBeesPy 0.3.2
2024-02-22 11:34:48 +01:00
Åke Strandberg c167001861 Add myuplink switch platform (#110810)
* 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
2024-02-22 11:27:46 +01:00
Joost Lekkerkerker 92c8c4b1ae Ignore cloudhook already removed in mobile app (#111122) 2024-02-22 11:19:27 +01:00
Brett Adams 767fcd707f Add wake up timeout to Teslemetry (#109037) 2024-02-22 10:50:44 +01:00
Michael 9348f99ce8 Bump roombapy to 1.6.12 (#110762)
* bump roombapy to 1.6.11

* Apply suggestions from code review

* "fix" tests (make them pydantic fiendly?)

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-22 10:39:53 +01:00
Joakim Sørensen ec4e6c3a74 Move backup/* WS commands to the backup integration (#110651)
* 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
2024-02-22 10:25:38 +01:00
ollo69 52621f9609 Remove reserved UpdateFailed exception in AsusWRT (#110910)
* Remove reserved UpdateFailed exception in AsusWRT

* Restore UpdateFailed exception in decorator
2024-02-22 09:53:40 +01:00
Thomas55555 6e91776d65 Add sensor platform for husqvarna_automower (#110410)
* 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
2024-02-22 09:26:38 +01:00
J. Nick Koston e88dfd4f68 Migrate Bluetooth coordinators to use Debouncer async_schedule_call (#111077)
* Switch Bluetooth to use Debouncer async_schedule_call

If the debouncer does not fire the underlying call no task has to be
scheduled

* revert change in init

* revert change in init

* revert change in init
2024-02-21 22:03:22 -05:00
J. Nick Koston 5267e4f5db Fix race in otbr config flow (#111044)
* fix otbr

* Update homeassistant/components/otbr/config_flow.py

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>

* unique ids should not change

* handle missing unique id

* handle missing unique id

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-02-21 22:02:44 -05:00
Robert Resch 345228429e Bump deebot-client to 5.2.2 (#111112) 2024-02-22 01:01:32 +02:00
David Knowles 424080f79f Bump pyschlage to 2024.2.0 (#111079) 2024-02-21 22:23:06 +01:00
Matthias Alphart 3028ad8ac2 KNX: Group address validators use more detailed error messages (#110875)
* GA validators use xknx exception message

* move validation functions to own module

* use type name
2024-02-21 22:09:27 +01:00
David F. Mulcahey 6bdb3357fa Remove ZHA storage file cleanup logic (#111088) 2024-02-21 22:02:41 +01:00
Álvaro Fernández Rojas 704230e3c1 Bump aioairzone to v0.7.4 (#111105)
* Update aioairzone to v0.7.3

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* Update aioairzone to v0.7.4

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-21 22:00:09 +01:00
TimL c8bf589384 Auto detect ZHA SMLIGHT SLZB-07 dongle (#110982) 2024-02-21 21:39:16 +01:00
Brett Adams ff0ba5361f Add translation to Tessie exceptions (#106525)
* Fix HomeAssistantError

* Add error translations

* Add cable error

* remove underscore from fallback

* Add more exceptions

* Try again for name

* Improve messages

* Address review feedback
2024-02-21 20:58:38 +01:00
Jason Kossis a5ab2dfb62 Add Vital 100S & Vital 200S to VeSync sensors (#111017) 2024-02-21 20:39:06 +01:00
Paul Bottein 0eef449526 Add icon translations to Tessie (#111096) 2024-02-21 19:49:04 +01:00
starkillerOG ef02fca6ba Fix Motionblinds TDBU (#110871) 2024-02-21 19:47:02 +01:00
Shay Levy 53be4ebab5 Bump pywebpush to 1.14.1 (#111082) 2024-02-21 19:46:08 +01:00
J. Nick Koston 1de83140ab Avoid circular import in Storage.async_delay_save (#111086) 2024-02-21 12:45:59 -06:00
J. Nick Koston d6fac87876 Avoid compressing application (tarfile) downloads from supervisor (#110224) 2024-02-21 12:45:47 -06:00
Christopher Bailey a0b185d06d Fixes UniFi Protect light state check (#111058) 2024-02-21 19:45:32 +01:00
J. Nick Koston 7bf0fb9e48 Avoid late import of area registry in device registry if its not used (#111081) 2024-02-21 12:45:00 -06:00
Álvaro Fernández Rojas 395a452162 Update AEMET-OpenData to v0.4.9 (#111092)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-21 19:35:19 +01:00
Franck Nijhof a906ae3647 Merge branch 'master' into dev 2024-02-21 16:58:45 +01:00
J. Nick Koston ae7ebc25c7 Migrate shelly to use Debouncer.async_schedule_call (#111087) 2024-02-21 09:47:36 -06:00
Cyrill Raccaud 6e20cc8700 Support Bring! recently list (#109854)
* support bring recently list

* fix keyerror

---------

Co-authored-by: tr4nt0r <manni@zapto.de>
2024-02-21 07:27:59 -08:00
Andriy Kushnir 6f1cc7b3a4 Add code owner to roomba integration (#111071)
* Add Orhideous as code owner to roomba integration

* Update CODEOWNERS for roomba integration as well
2024-02-21 13:44:03 +01:00
J. Nick Koston 4bddf32cc4 Avoid the final write of every registry at the end of each test (#111053) 2024-02-21 06:01:19 -06:00
Åke Strandberg 2614d6fece Add tests to myuplink binary_sensor (#110995) 2024-02-21 12:32:25 +01:00
Jan Rothkegel 05b23c2e7b Replace Wolflink dependency with wolf_comm to support authentication via OpenID (#110249)
* 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>
2024-02-21 09:37:13 +01:00
J. Nick Koston 776a9b8691 Make device registry cleanup a callback function (#111052)
* Add async_schedule_call to the Debouncer

async_schedule_call allows the Debouncer to schedule a call
from a callback without having to create tasks to run
async_call

* Update homeassistant/helpers/debounce.py

* Make device registry cleanup all callback function

* fix typing, code supported callback functions, but typing did not

* fixes

* fixes

* fix

* we had no coverage for other job types

* we had no coverage for other job types
2024-02-21 09:34:49 +01:00
Jan Bouwhuis c048b840fc Do not directly call async_setup_entry in MQTT tests (#111010) 2024-02-21 07:47:30 +01:00
J. Nick Koston 5b73adba20 Revert "Reduce dict lookups in entity registry indices" (#111055)
Revert "Reduce dict lookups in entity registry indices (#109712)"

This reverts commit 440212ddce.
2024-02-21 07:11:58 +01:00
J. Nick Koston 490c03d248 Add async_schedule_call to the Debouncer (#111051) 2024-02-21 00:09:45 -06:00
J. Nick Koston aaa071e810 Increase unifiprotect fallback interval to 20s (#110870) 2024-02-20 23:48:41 -06:00
J. Nick Koston b1cbf9840a Make adding new device in unifiprotect callback functions (#111054) 2024-02-20 23:47:31 -06:00
Christopher Bailey 7eb6614818 Guide users to migrate from Ubiquiti Cloud Accounts to local for UniFi Protect (#111018)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-20 23:32:47 -06:00
Christopher Bailey fb04df5392 Improve UniFi Protect re-auth (#110021)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-20 23:31:42 -06:00
J. Nick Koston da9d71cb6b Fix race in automation test_extraction_functions (#111056) 2024-02-20 23:25:19 -06:00
J. Nick Koston 1a02330bd9 Avoid creating tasks to remove entities (#110967) 2024-02-20 21:32:36 -06:00
Josef Zweck db77e73a76 Add calendar platform to La Marzocco (#108237)
* 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
2024-02-20 19:15:47 -08:00
Shay Levy c690a9df83 Fix Shelly RPC RSSI sensor removal (#111035) 2024-02-20 21:05:59 -06:00
J. Nick Koston 2f2cdedddd Avoid creating multiple tasks for config entry init (#110899) 2024-02-20 21:57:36 -05:00
J. Nick Koston 9ce1ec414e Reduce overhead to load multiple languages in translations (#111028)
* Reduce overhead to load multiple languages in translations

Instead of loading in a task, we now group everything
to be loaded into a single executor job

* fixes

* fixes

* fixes

* fixes

* fixes

* update tests

* add missing coverage (was existing)
2024-02-20 21:52:28 -05:00
J. Nick Koston 9c145b5faa Fix race in removing entities from the registry (#110978) 2024-02-20 20:48:31 -06:00
J. Nick Koston 94e372a345 Make ConfigEntry.async_shutdown a callback (#111027)
Nothing needed to be awaited here and this generated a task per config
entry at shutdown
2024-02-20 21:38:24 -05:00
J. Nick Koston 17ba96ffdb Avoid creating tasks to install dependent requirements (#111048) 2024-02-20 20:30:07 -06:00
J. Nick Koston dc4008c518 Avoid creating tasks to shutdown entity platforms (#111026)
* Avoid creating tasks to shutdown entity platforms

Nothing needed to be awaited here

* fix mocking

* missed one test
2024-02-20 21:10:25 -05:00
J. Nick Koston 98d5f2fc01 Reduce registry overhead in tests (#110955)
* Avoid scheduling registry loads as tasks in tests

Since we patch out async_load in Store, these will not yield
to the event loop so it makes sense to await them instead
of creating tasks

This reduced my local test run times ~2.5% on average

* mock out save as well so we do not schedule tasks to save empty data

* tweaks

* fix lingering files

* another one

* too much for one PR, reduce

* fix targets
2024-02-20 21:01:50 -05:00
some-guy-23 a542b36997 Add state class to Motion Blinds battery sensor (#111016) 2024-02-20 23:45:37 +01:00
G Johansson 32a6662d1d Bump holidays to 0.43 (#111039) 2024-02-20 23:37:17 +01:00
J. Nick Koston 145c6163a4 Fix race in gardena_bluetooth config flow tests (#111042) 2024-02-20 16:08:06 -06:00
Brett Adams 5b00703ef7 Add presets to Advantage Air (#109485)
* 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>
2024-02-20 22:00:52 +01:00
J. Nick Koston 9f8e4cecdd Remove update_before_add from legacy ios integration (#111033) 2024-02-20 21:26:24 +01:00
J. Nick Koston 8e9946afc9 Remove update_before_add from nut sensors (#111032) 2024-02-20 21:12:06 +01:00
Michael f295382c92 Reset error state when Ecovacs bot is operational again (#110962) 2024-02-20 17:15:55 +01:00
Jeremy TRUFIER 86ea5c135f Bump pyOverkiz to 1.13.7 (#111004) 2024-02-20 15:42:29 +01:00
Marco Lettieri cd05972276 Add sensor platform to microBees (#111008)
* add microBees sensor

* add a sensor.py in .coveragerc

* fixes review

---------

Co-authored-by: FedDam <noceracity@gmail.com>
2024-02-20 15:32:19 +01:00
J. Nick Koston ad94534d37 Migrate sensibo to use async_update_reload_and_abort (#110986) 2024-02-20 14:41:14 +01:00
Mick Vleeshouwer 6471397d09 Fix reauth in Overkiz for config entries created prior to 2022.12 (#106251)
* Fix #106204

* Use api type variable
2024-02-20 14:15:16 +01:00
Federico D'Amico 93d6f0a780 Bump microBeesPy to 0.2.9 (#111006)
change library
2024-02-20 13:39:14 +01:00
Thomas55555 e6cfa7fa09 Bump aioautomower to 2024.2.7 (#110991)
bump aioautomower to 2024.2.7

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-02-20 12:04:42 +01:00
Federico D'Amico ac926f9c64 Introduce actuator base entity to microBees (#111000)
* changed library imports and added sensors to coordinator and new entity

* revert library

* revert library
2024-02-20 11:55:36 +01:00
Simon Goodall 5b470ff16f Expose Hive Motion Sensor temperature (#105985) 2024-02-20 10:57:19 +01:00
J. Nick Koston 6ed221de5d Handle empty name in powerview config flow (#110969)
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
```
2024-02-20 10:41:38 +01:00
Robert Svensson 2f026ca963 Unifi rename controller to hub (#110976)
* Rename controller.py to hub.py

* Rename UniFiController to UnifiHub

* Rename controller instances into hub

* Rename controller to hub in tests

* Rename aiounifi Controller references to api

* Update strings

* Rename test_controller test_hub

* Narrow scope of test_remove_sensors
2024-02-20 08:51:22 +01:00
Mr. Bubbles 2b3f5319d6 Bump bring-api to 0.3.1 (#110769)
* bump bring-api

* unpinned dependencies
2024-02-20 08:46:02 +01:00
J. Nick Koston 54d005a3b8 Migrate xiaomi_miio to use async_update_reload_and_abort (#110988) 2024-02-20 07:08:21 +01:00
J. Nick Koston 8927769545 Migrate unifi to use async_update_reload_and_abort (#110987) 2024-02-20 07:07:55 +01:00
J. Nick Koston 059e1fbe37 Migrate yalexs_ble to use async_update_reload_and_abort (#110985) 2024-02-20 07:07:21 +01:00
Keilin Bickar 70542efc23 Fix last_reset set for Sense percentage sensors (#110977) 2024-02-19 21:45:09 -06:00
Michael Hansen ec4bd9a421 Add new intents for cover, valve, vacuum, and media player (#110757)
* 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
2024-02-19 22:28:42 -05:00
J. Nick Koston 015f9cdb35 Fix failing tessie tests (#110980) 2024-02-19 20:45:07 -06:00
Åke Strandberg 230ac417c0 Add check for myuplink startup ClientError (#110926)
* Raise ConfigEntryNotReady if appropriate

* Catchin exceptions during startup

* Change expected_state to SETUP_ERROR
2024-02-20 02:17:35 +01:00
J. Nick Koston ae49b3a274 Add async_schedule_reload helper to the ConfigEntries manager (#110912)
* Add async_schedule_reload helper to the ConfigEntries manager

We have cases where the the setup retry kicks in right before
the reload happens causing the reload to fail with
OperationNotAllowed. The async_schedule_reload will
cancel the setup retry before the async_reload task
is created to avoid this problem.

I updated a few integrations that were most likely
to have this problem. Future PRs will do a more
extensive audit

* coverage

* revert for now since this needs more refactoring in a followup

* cover

* cleanup and fixes
2024-02-20 02:14:45 +01:00
starkillerOG 9361f3c443 Bump motionblinds to 0.6.21 (#110970) 2024-02-19 23:33:02 +01:00
Brett Adams 61766c0e59 Fix set_temperature in Tessie climate platform (#110445)
* HVAC_MODE support for set_temperature

* Fix import
2024-02-19 21:52:59 +01:00
Brett Adams 980413c57f Add new range sensors to Tessie (#110446)
* Add new sensors

* Fix tests
2024-02-19 21:50:20 +01:00
J. Nick Koston b35490404a Make EntityRegistryDisabledHandler._handle_entry_updated a callback (#110966) 2024-02-19 14:44:57 -06:00
starkillerOG e83c7c8770 Bump reolink-aio to 0.8.8 (#110959) 2024-02-19 21:35:41 +01:00
J. Nick Koston 1f1c66b3c2 Group adding unifi entities together to reduce number of tasks (#110965) 2024-02-19 13:58:44 -06:00
starkillerOG aa9f0f5734 Reolink continue setup when internet blocked (#110888) 2024-02-19 20:53:18 +01:00
Oliver 3e5329d463 Do not turn on denonavr receiver when changing the source (#110964) 2024-02-19 20:33:48 +01:00
Jan Bouwhuis f4fd3633b4 Improve timing mqtt integration discovery test (#110960)
* Improve timing mqtt integration discovery test

* Remove condition
2024-02-19 20:16:06 +01:00
J. Nick Koston 1bc0263ea4 Revert powerwall back to awaiting each api call (#110947)
We converted these to run as tasks in the hope that it would be faster,
but since the cost of establishing another connection and the task
overhead exceeded the savings, it makes sense to await them all in
series.
2024-02-19 20:13:49 +01:00
Martin Hjelmare 058eec114b Freeze light profiles for further development (#110946) 2024-02-19 16:02:27 +01:00
Marco Lettieri 3a4c6fc7f3 Add microBees integration (#99573)
* Create a new homeassistan integration for microBees

* black --fast homeassistant tests

* Switch platform

* rename folder

* rename folder

* Update owners

* aiohttp removed in favor of hass

* Update config_flow.py

* Update __init__.py

* Update const.py

* Update manifest.json

* Update string.json

* Update servicesMicrobees.py

* Update switch.py

* Update __init__.py

* Update it.json

* Create a new homeassistan integration for microBees

* black --fast homeassistant tests

* Switch platform

* rename folder

* rename folder

* Update owners

* aiohttp removed in favor of hass

* Update config_flow.py

* Update __init__.py

* Update const.py

* Update manifest.json

* Update string.json

* Update servicesMicrobees.py

* Update switch.py

* Update __init__.py

* Update it.json

* fixes review

* fixes review

* fixes review

* pyproject.toml

* Update package_constraints.txt

* fixes review

* bug fixes

* bug fixes

* delete microbees connector

* add other productID in switch

* added coordinator and enanchments

* added coordinator and enanchments

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* fixes from suggestions

* add test

* add test

* add test

* add test

* requested commit

* requested commit

* requested commit

* requested commit

* reverting .strict-typing and added microbees to .coveragerc

* remove log

* remove log

* remove log

* remove log

* add test for microbeesExeption and Exeption

* add test for microbeesExeption and Exeption

* add test for microbeesException and Exception

* add test for microbeesException and Exception

* add test for microbeesException and Exception

---------

Co-authored-by: FedDam <noceracity@gmail.com>
Co-authored-by: Federico D'Amico <48856240+FedDam@users.noreply.github.com>
2024-02-19 15:12:03 +01:00
J. Nick Koston b349a466ba Fix concurrent reloads in yeelight tests (#110911) 2024-02-19 07:37:22 -06:00
Jevgeni Kiski 2250baab21 Update vallox_websocket_api to 5.0.2 (#110752)
Co-authored-by: Sebastian Lövdahl <slovdahl@hibox.fi>
2024-02-19 14:36:51 +01:00
starkillerOG efac3b0a60 Add Motionblinds vitual integrations __init__.py (#110903) 2024-02-19 12:36:56 +01:00
dependabot[bot] 0c39b465b3 Bump dawidd6/action-download-artifact from 3.1.0 to 3.1.1 (#110925) 2024-02-19 12:29:09 +01:00
Franck Nijhof e0a9dcd996 Add label registry (#110821) 2024-02-19 11:59:08 +01:00
ruohan.chen 8201ea4b3c Bump zhong-hong-hvac to 1.0.12 (#110701)
zhong_hong_hvac requirements upgrade to 1.0.12
2024-02-19 10:58:03 +01:00
Dominik Sander 8e78710f84 Bump deluge-client to 1.10.2 (#110905)
This mainly addresses the client hanging and not reconnecting whenever
the deluge server is restarted. See https://github.com/JohnDoee/deluge-client/pull/42

https://github.com/JohnDoee/deluge-client/compare/1.10.0...1.10.2
2024-02-19 10:49:57 +01:00
Kevin Stillhammer 03e8482aa9 Fix BroadlinkThermostat inheritance order (#110927)
fix BroadlinkThermostat inheritance order
2024-02-19 10:44:45 +01:00
J. Nick Koston fd1f712d67 Bump esphome dependencies (#110892) 2024-02-19 10:38:28 +01:00
J. Nick Koston 136a31e4bc Avoid creating tasks to run homekit accessories (#110895) 2024-02-19 10:36:54 +01:00
J. Nick Koston 4bc28489c5 Improve performance of waiting for after dependencies and device config entries (#110902)
To wait for after dependencies we created a task to wait an asyncio.Event object,
instead of using an Event we can use an asyncio.Future instead and avoid the need
for a task wrapper
2024-02-19 10:28:50 +01:00
Marc Mueller a21d65d025 Fix cloud test RuntimeWarning (#110909) 2024-02-19 10:09:59 +01:00
J. Nick Koston 764e628394 Add missing async_block_till_done to github config flow tests (#110913) 2024-02-19 09:58:57 +01:00
J. Nick Koston 6fc764330f Fix steamist not setting unique id when discovered in user flow (#110915) 2024-02-19 09:58:32 +01:00
J. Nick Koston a2bd59ab3b Fix switcher_kis tests not holding patch while calling async_block_till_done (#110916) 2024-02-19 09:58:09 +01:00
J. Nick Koston c74958dd36 Reduce one iteration of pending flows in the discovery flow helper (#110918) 2024-02-19 09:57:39 +01:00
J. Nick Koston 19cf80d5c5 Fix homekit_controller test race (#110917) 2024-02-19 08:42:17 +00:00
wilburCforce 88f72009c6 Fix uuid issue in Lutron (#110524) 2024-02-19 09:30:58 +01:00
Chris Caron 31ce43212a Allow loading of more then 1 defined Apprise URL (#110868) 2024-02-19 09:29:26 +01:00
J. Nick Koston 88b92ff2a8 Narrow bosch_shc patch target in config flow tests (#110922) 2024-02-19 09:24:44 +01:00
Marc Mueller 02eca17002 Update wheels artifact actions to v4 [ci] (#110894) 2024-02-19 09:23:51 +01:00
J. Nick Koston b35d7a348b Fix mqtt discovery subscribe unsubscribe test with one less task (#110914)
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.
2024-02-19 07:36:32 +01:00
Marc Mueller 795d90eb1b Update pre-commit to 3.6.2 (#110908) 2024-02-18 19:37:05 -06:00
J. Nick Koston aab21105da Convert config entry subscriptions to callback (#110900) 2024-02-18 19:36:53 -06:00
Marc Mueller af6b24d9bd Update pytest to 8.0.1 (#110907) 2024-02-19 01:52:40 +01:00
Marc Mueller 85864e77ac Partially revert setup typing update (#110901) 2024-02-19 00:36:47 +01:00
Lenn 3275b28e2a Fix Motionblinds brand name consistency (#110222) 2024-02-19 00:04:57 +01:00
Jan-Philipp Benecke 22e62f42e6 Use entity & device registry fixtures in unifi tests (#110889) 2024-02-18 23:47:10 +01:00
Marc Mueller 72ccc40c43 Add better HassJob typing for IntegrationPlatform process_job (#110896) 2024-02-18 16:46:48 -06:00
Álvaro Fernández Rojas 49e9c9dd48 Update AEMET-OpenData to v0.4.8 (#110890)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-02-18 23:33:06 +02:00
spycle 503af70985 Bump pyMicrobot to 0.0.16 (#110876)
* Update manifest.json

Up-version pyMicrobot

* Update requirements_all.txt

Up-version pyMicrobot

* Update requirements_test_all.txt

Up-version pyMicrobot
2024-02-18 23:32:01 +02:00
J. Nick Koston 314123e0ab Avoid creating two tasks to setup components at startup (#110828) 2024-02-18 14:17:41 -06:00
Jan-Philipp Benecke 85587f995b Use entity registry fixture in octoprint tests (#110887) 2024-02-18 20:55:12 +01:00
Paul Daumlechner b358a03379 Fix Velux setup (#110886)
fix async_setup without configuration.yaml entry
2024-02-18 20:39:02 +01:00
J. Nick Koston fdd45189ca Fix trigger attachment race in conversation tests (#110869) 2024-02-18 20:13:41 +01:00
Marc Mueller f785bdf571 Update coverage artifact actions to v4 [ci] (#110344) 2024-02-18 20:13:20 +01:00
J. Nick Koston 93d56cc105 Enable compression on error log api (#110865) 2024-02-18 20:12:30 +01:00
J. Nick Koston 3633700d97 Fix sending multiple empty integration timing in bootstrap (#110872) 2024-02-18 19:53:05 +01:00
On Freund e879ab0eef Show WebRTC cameras that also support HLS in the media browser (#108796)
* Show WebRTC cameras in the media browser

* Only show webrtc cameras with source in the browser

* Address code review

* Refactor BrowseMediaSource creation

* Refactor

* Address code review
2024-02-18 10:12:08 -08:00
Jc2k 8fa347fb4c Add Identify device class to homekit_controller (#110878) 2024-02-18 12:05:19 -06:00
Galorhallen 7d3755715f Update govee-local-api library to 1.4.4 (#110854) 2024-02-18 18:04:37 +01:00
J. Nick Koston bd4f8e0cc0 Fix races in ESPHome manager tests (#110867) 2024-02-18 17:06:57 +01:00
Jan Bouwhuis addc02fa86 Revert "Set up smtp integration via the UI" (#110862)
Revert "Set up smtp integration via the UI (#110817)"

This reverts commit 66a31407f9.
2024-02-18 16:21:27 +01:00
Franck Nijhof 67ac60d042 Add hex color validator (#110846) 2024-02-18 16:03:21 +01:00
Franck Nijhof 70d1bbb20d Improve floor registry event typing (#110844) 2024-02-18 14:57:15 +01:00
Franck Nijhof 1c55ba0cb2 Use covariant for fire event data type (#110843) 2024-02-18 13:21:55 +01:00
Jan Bouwhuis 66a31407f9 Set up smtp integration via the UI (#110817)
* Set up smtp integration via the UI

* Update homeassistant/components/smtp/config_flow.py

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>

* Update homeassistant/components/smtp/notify.py

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* Update homeassistant/components/smtp/notify.py

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* Update homeassistant/components/smtp/notify.py

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* Update homeassistant/components/smtp/notify.py

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* ruff

---------

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2024-02-18 13:20:45 +01:00
Joost Lekkerkerker e2ab44903c Clean up twitch setup (#110849)
* Clean up twitch setup

* Clean up twitch setup
2024-02-18 13:16:22 +01:00
Allen Porter babb436512 Fix local todo list persistence for due dates (#110830)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-18 12:59:50 +01:00
Jan-Philipp Benecke 9ac199a8f2 Bump aiotankerkoenig to 0.4.1 (#110840) 2024-02-18 11:58:33 +01:00
J. Nick Koston 16653ff5d0 Group loading of translations for integrations to reduce executor jobs at startup (#110674) 2024-02-17 21:08:55 -06:00
J. Nick Koston def6c5c21c Refactor integration startup time tracking to reduce overhead (#110136)
* Refactor integration startup time tracking to reduce overhead

- Use monotonic time for watching integration startup time as it avoids incorrect values if time moves backwards because of ntp during startup and reduces many time conversions since we want durations in seconds and not local time

- Use loop scheduling instead of a task

- Moves all the dispatcher logic into the new _WatchPendingSetups

* websocket as well

* tweaks

* simplify logic

* preserve logic

* preserve logic

* lint

* adjust
2024-02-17 21:47:55 -05:00
J. Nick Koston 9bc130c131 Ensure translations for other integrations can be loaded if one integration fails (#110748)
* load failure

* merge
2024-02-17 21:01:36 -05:00
J. Nick Koston 0a01161cdd Cache JSON representation of ConfigEntry objects (#110823)
* Cache JSON representation of ConfigEntry objects

* fix recursive set

* tweak

* adjust

* order
2024-02-17 20:52:39 -05:00
J. Nick Koston 0d4c82b54d Convert Integration platforms processors where nothing is awaited to callbacks (#110825)
Convert Integration platforms processors where nothing is awaited callbacks
2024-02-17 20:49:47 -05:00
J. Nick Koston 165d79b553 Add typing of EVENT_COMPONENT_LOADED to integration_platform helper (#110826) 2024-02-17 20:48:46 -05:00
Aarni Koskela 5d23a1f84f Enable augmented-assignment operations in scripts (#108081) 2024-02-17 20:32:23 -05:00
J. Nick Koston 33ff6b5b6e Avoid creating tasks for checking integrations platforms (#110795)
* Avoid creating tasks for checking integrations platforms

This is a followup to #110743 to avoid creating a task to check
if the integration platform exists. We created tasks because
we needed to await async_get_integrations but since its always
called from EVENT_COMPONENT_LOADED firing, we can use the
async_get_loaded_integration version which does not need
to be awaited. This eliminates one task for every loaded
component

* there is no more race risk

* reduce

* coro or callback

* reduce

* tweak

* race safe

* fix type

* fixes

* use built-in helper to make it smaller

* use built-in helper to make it smaller

* use built-in helper to make it smaller

* add coverage to ensure exceptions are logged

* improve readability a bit

* platforms
2024-02-18 01:07:18 +01:00
Cody C a656e14b20 Fix Local Calendar changing user-specified capitalisation of calendar names (#108454)
When you create a Local Calendar, say, "Home Maintenance", the integration overrides this to instead be "Home maintenance".
2024-02-17 16:03:13 -08:00
J. Nick Koston 0d6f4058ca Add typing for EVENT_COMPONENT_LOADED (#110812) 2024-02-17 23:03:52 +01:00
Allen Porter bf1b5252c0 Bump ical to 7.0.0 (#110811) 2024-02-17 22:58:59 +01:00
Allen Porter 80abe7bfff Bump pyrainbird to 4.0.2 (#110814) 2024-02-17 22:56:09 +01:00
Joost Lekkerkerker 1417428880 Remove unneeded mock from Epion (#110815) 2024-02-17 22:53:38 +01:00
Franck Nijhof 4570eed6f6 Add floor registry (#110741)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-17 21:21:15 +01:00
Claudio Ruggeri - CR-Tech 1ded412061 Add modbus option to manage different setPoint registers (#107600)
Co-authored-by: jan iversen <jancasacondor@gmail.com>
2024-02-17 19:48:42 +01:00
J. Nick Koston 53944235d2 Improve performance of async_get_integration_with_requirements (#110770)
* Improve performance of async_get_integration_with_requirements

- Migrate to the future pattern instead of using asyncio.Event
- Use sets in a few places to avoid linear searching
- Check the cache when processing deps so we do not
  create tasks to process requirements for deps that
  have already been processed

* name

* add concurrency test

* Update homeassistant/requirements.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/requirements.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/requirements.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/requirements.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* reset_mock

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-17 19:26:41 +01:00
Franck Nijhof aa8d8402b4 Cleanups in entity registry tests (#110788)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-17 19:07:46 +01:00
Sid 926a634ebf Handle deep standby and poweroffs of enigma2 devices gracefully (#107462)
* handle deep standby and poweroff of enigma2 devices gracefully

* address review comments

* remove warning on deep standby

* use contextlib.suppress
2024-02-17 18:23:29 +01:00
J. Nick Koston 664285b9d4 Small performance improvement in tracking template results (#110622)
- Avoid inner function creation each refresh
- remove extra unneeded checks from ratelimit
2024-02-17 18:08:24 +01:00
J. Nick Koston 094fd3d918 Simplify ConfigFlow._async_current_entries (#110799)
async_entries supports the flags needed for this function so we
can now hand it off instead
2024-02-17 18:04:27 +01:00
J. Nick Koston b8143a7944 Improve performance of _async_when_setup (#110791)
* Improve performance of _async_when_setup

Use an event filter to avoid creating a task until the
filter matches

* Improve performance of _async_when_setup

Use an event filter to avoid creating a task until the
filter matches
2024-02-17 17:46:06 +01:00
J. Nick Koston c4653be2fa Make template trigger callbacks when nothing needs to be awaited (#110771)
async_initialize_triggers supports a coro or a callback, and in most
cases the user will not have configured a script so we can avoid
creating a task
2024-02-17 17:37:46 +01:00
Arie Catsman a4150fe8b2 Enable Enphase Envoy authentication credentials update (#110474) 2024-02-17 09:58:25 -06:00
kingy444 6e2f64fdc2 Add number platform to powerview to control velocity on gen 3 hubs (#110724)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-17 09:52:13 -06:00
Aidan Timson 4aafe14d4c Fix translations for binary sensors in System Bridge (#110095)
* Add translation keys for binary sensor names

* Update version_available string in system_bridge component

* Remove unused code in SystemBridgeBinarySensor class

* Restrict SystemBridgeBinarySensorEntityDescription name type to str

* Refactor binary sensor entity descriptions and remove unused translation keys
2024-02-17 16:10:29 +01:00
Aaron Bach 258f8bfed0 Ensure Tile timestamps are reported as UTC (#110773) 2024-02-17 07:43:28 -07:00
Shay Levy 833c0ee723 Cleanup Shelly async_setup_block_attribute_entities (#110792) 2024-02-17 08:29:35 -06:00
Franck Nijhof 0fbadc274a Cleanups in device registry tests (#110786) 2024-02-17 14:06:53 +01:00
J. Nick Koston 42cf081582 Avoid creating tasks to load integration platforms that do not exist (#110743) 2024-02-17 07:02:51 -06:00
Franck Nijhof df3556f0d8 Cleanups in area registry tests (#110785)
* Cleanups in area registry tests

* Adjust typing
2024-02-17 13:20:33 +01:00
Chris Talkington 3491dd68b5 Update rokuecp to 0.19.1 (#110670) 2024-02-17 13:01:47 +01:00
J. Nick Koston 9b1ba19354 Bump aioesphomeapi to 21.0.3 (#110772) 2024-02-17 11:09:10 +01:00
J. Nick Koston 0bf95df4d6 Avoid creating tasks to setup ignored and disabled config entries (#110756)
* Avoid creating tasks to setup ignored and disabled config entries

* lint
2024-02-17 10:34:03 +01:00
Åke Strandberg f5dad1d312 Add myuplink reauth flow (#110587)
* WIP test

* WIP

* WIP Reauth flow. Test fail otherways OK.

* Minor adjustments to tests

* Merge

* Merge

* Next level...

* Cleanup according to review

* It works!

* Simplify setup

* Remove default

* Remove files from PR

* Add back test_init

* Add back test_sensor

* Adjust error message

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-17 10:18:53 +01:00
J. Nick Koston d99a7e2825 Fix race in wyoming test (#110766)
reverts #110751 and replaces it with a change to wait for the
assist_pipeline.async_pipeline_from_audio_stream to be called
which will actually solve the problem and unblock #110743
2024-02-17 08:24:21 +01:00
Michael aa5695a859 Bump aiopegelonline to 0.0.9 (#110760)
bump aiopegelonline to 0.0.9
2024-02-17 01:12:53 +01:00
J. Nick Koston 50770ce436 Refactor config integration to use normal functions for setup (#110750)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-16 18:12:33 -06:00
Malte Franken d7f650ed7c Bump georss-ign-sismologia-client to 0.8 (#110501)
* bump georss-ign-sismologia-client to 0.8

* fixed tests
2024-02-17 00:52:58 +02:00
Kanchana M bc5ec4f2a3 Fix flo sensor native unit (#110745)
* use flow rate unit enums for proper unit conversions

* update typo for device class
2024-02-16 23:18:27 +01:00
J. Nick Koston 5adb9240c5 Wait for client to be created in wyoming tests (#110751)
* Add missing async_block_till_done in wyoming tests

* better fix

* better fix

* better fix

* better fix
2024-02-16 22:48:47 +01:00
Michael 58a6f26f66 Fix scene activation with climate entities with None attribute values (#110684)
don't call service with attribute None
2024-02-16 22:27:55 +01:00
J. Nick Koston 5292c3408e Bump cryptography to 42.0.3 (#110728) 2024-02-16 20:37:40 +01:00
Franck Nijhof 788b53534f Run codeql on schedule only (#110729) 2024-02-16 19:32:36 +01:00
J. Nick Koston 2cb0249f0a Add filter to translation event listeners to avoid creating tasks (#110732) 2024-02-16 12:13:23 -06:00
jimmyd-be 6f74ea9186 Add breeze switch to Renson integration (#101641)
* Add breeze switch

* Cleanup code

* Replace switch entity with new fan entity

* Revert "Replace switch entity with new fan entity"

This reverts commit 4fc1ac22e67091a7e980aefd217652f2a88bed17.
2024-02-16 17:56:09 +01:00
J. Nick Koston d449eadac3 Guard ConfigEntry from being mutated externally without using the built-in interfaces (#110023)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-16 10:15:05 -06:00
J. Nick Koston 4c11371898 Adjust ConfigEntry.async_setup comments to be more clear (#110726) 2024-02-16 10:13:35 -06:00
Franck Nijhof ef9f117baa Stop building Python 3.11 wheels (#110727) 2024-02-16 17:11:05 +01:00
J. Nick Koston 53062a81cc Simplify loading of icons (#110687) 2024-02-16 16:51:14 +01:00
Erik Montnemery a0ead2b861 Remove hourly weather entity from met.no (#97023) 2024-02-16 16:46:37 +01:00
J. Nick Koston 1260c5a909 Speed up bootstrap by preloading manifests for base platforms (#110130) 2024-02-16 09:35:46 -06:00
Jan-Philipp Benecke 80b404f351 Raise translatable exceptions in entity set methods for BSBLan (#105693)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-16 16:23:47 +01:00
Artur Pragacz 3392660537 Add toggle service to climate (#100418)
* Add toggle service to climate

* Fix mqtt test

* Add comments

* Fix rebase

* Remove not needed properties

* Fix toggle service

* Fix test

* Test

* Mod mqtt test

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-02-16 15:53:48 +01:00
G Johansson cb776593cf Make context in data entry flow possible to modify for subclasses (#110561)
* Make context in data entry flow possible to modify for subclasses

* mypy

* Make get_context

* base view

* Review comments

* Remove context from options flow
2024-02-16 15:51:51 +01:00
Joakim Sørensen 23e81a45c8 Use snapshots in analytics tests (#110704) 2024-02-16 15:47:41 +01:00
Franck Nijhof 7aa14e20d1 2024.2.2 (#110720) 2024-02-16 15:47:38 +01:00
Denis Shulyaka 2d74dafd3f Generic Hygrostat: Do not log warning if the hygrostat is already not active (#102662)
* Generic Hygrostat: Do not log warning if the hygrostat is already not active

* add test
2024-02-16 15:29:14 +01:00
Imre Liessens 085f75ef1f Add media file playback to DuneHD (#105796)
* Add media player play file option

* Add media playback from HA

* Remove volume capability

* Add missing imports

* Apply suggestions from code review

* Update homeassistant/components/dunehd/media_player.py

* Apply suggestions from code review

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-02-16 15:20:09 +01:00
J. Nick Koston f9dc92a9a0 Fix recorder ws_info blocking the event loop (#110657)
* Fix recorder ws_info blocking the event loop

Fixes
```
2024-02-15 06:37:55.423 WARNING (MainThread) [asyncio] Executing <Task pending name=websocket_api.async:ws_info coro=<_handle_async_response() running at /usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py:26> wait_for=<_GatheringFuture pending cb=[Task.task_wakeup()] created at /usr/local/lib/python3.12/asyncio/tasks.py:712> cb=[set.remove()] created at /usr/src/homeassistant/homeassistant/core.py:653> took 0.332 seconds
```

* no instance did not actually work
2024-02-16 15:11:09 +01:00
J. Nick Koston 95015fbb40 Small performance improvement to async_get_config_flows (#110666)
- Migrates to using a future instead of Event like we have done
  everywhere else
2024-02-16 14:32:26 +01:00
Franck Nijhof b55b2c8da3 Bump version to 2024.2.2 2024-02-16 14:13:26 +01:00
Robert Resch 8c05ebd031 Bump deebot-client to 5.2.1 (#110683)
* Bump deebot-client to 5.2.0

* Bumb again

* Fix tests
2024-02-16 14:13:18 +01:00
Robert Svensson 34a3e88e0d Bump aiounifi to v71 (#110658) 2024-02-16 14:13:15 +01:00
J. Nick Koston bf002ac0b0 Fix elkm1 service calls running in the executor (#110655)
fixes
```
  File "/usr/src/homeassistant/homeassistant/components/elkm1/__init__.py", line 416, in _set_time_service
    _getelk(service).panel.set_time(dt_util.now())
  File "/usr/local/lib/python3.11/site-packages/elkm1_lib/panel.py", line 55, in set_time
    self._connection.send(rw_encode(datetime))
  File "/usr/local/lib/python3.11/site-packages/elkm1_lib/connection.py", line 152, in send
    self._send(QueuedWrite(msg.message, msg.response_command), priority_send)
  File "/usr/local/lib/python3.11/site-packages/elkm1_lib/connection.py", line 148, in _send
    self._check_write_queue.set()
  File "/usr/local/lib/python3.11/asyncio/locks.py", line 192, in set
    fut.set_result(True)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 763, in call_soon
    self._check_thread()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 800, in _check_thread
    raise RuntimeError(
RuntimeError: Non-thread-safe operation invoked on an event loop other than the current one
```
2024-02-16 14:13:12 +01:00
jan iversen 6f529a2c77 Modbus, allow received int to be a float. (#110648) 2024-02-16 14:13:09 +01:00
J. Nick Koston e5db7278e1 Fix tplink not updating IP from DHCP discovery and discovering twice (#110557)
We only called format_mac on the mac address if we connected
to the device during entry creation. Since the format of the
mac address from DHCP discovery did not match the format saved
in the unique id, the IP would not get updated and a second
discovery would appear

Thankfully the creation path does format the mac so we did not
create any entries with an inconsistantly formatted unique id

fixes #110460
2024-02-16 14:13:05 +01:00
J. Nick Koston cdf67e9bb5 Bump orjson to 3.9.14 (#110552)
changelog: https://github.com/ijl/orjson/compare/3.9.13...3.9.14

fixes a crasher due to buffer overread (was only partially fixed in 3.9.13)
2024-02-16 14:13:03 +01:00
G Johansson 393359a546 Coerce to float in Sensibo climate react custom service (#110508) 2024-02-16 14:12:59 +01:00
Stefan Agner 9309e38302 Fix Raspberry Pi utilities installation on Alpine 3.19 (#110463) 2024-02-16 14:12:56 +01:00
wilburCforce 479ecc8b94 Update pylutron to 0.2.12 (#110414) 2024-02-16 14:12:53 +01:00
wilburCforce ec7950aeda Update pylutron to 0.2.11 (#109853) 2024-02-16 14:12:48 +01:00
Robert Hillis c763483049 Mitigate session closed error in Netgear LTE (#110412) 2024-02-16 14:10:34 +01:00
Steven Looman fe84e7a576 Bump async-upnp-client to 0.38.2 (#110411) 2024-02-16 14:10:31 +01:00
Michael 5ba31290b8 Bump py-sucks to 0.9.9 (#110397)
bump py-sucks to 0.9.9
2024-02-16 14:10:28 +01:00
J. Nick Koston de619e4ddc Fix zone radius calculation when radius is not 0 (#110354) 2024-02-16 14:10:25 +01:00
Nikolay Vasilchuk 56ceadaeeb Fix Starline GPS count sensor (#110348) 2024-02-16 14:10:22 +01:00
IceBotYT da61564f82 Bump linear-garage-door to 0.2.9 (#110298) 2024-02-16 14:10:19 +01:00
starkillerOG 003673cd29 Fix TDBU naming in Motionblinds (#110283)
fix TDBU naming
2024-02-16 14:10:16 +01:00
Matthias Alphart da6c571e65 Update xknxproject to 3.6.0 (#110282) 2024-02-16 14:10:13 +01:00
J. Nick Koston 159fab7025 Bump PySwitchbot to 0.45.0 (#110275) 2024-02-16 14:10:10 +01:00
Michael 96a10e76b8 Bump aiopegelonline to 0.0.8 (#110274) 2024-02-16 14:10:08 +01:00
G Johansson e7068ae134 Fix cpu percentage in System Monitor (#110268)
* Fix cpu percentage in System Monitor

* Tests
2024-02-16 14:10:05 +01:00
Jan-Philipp Benecke 6a0c3f1b4f Handle no data error in Electricity Maps config flow (#110259)
Co-authored-by: Viktor Andersson <30777521+VIKTORVAV99@users.noreply.github.com>
2024-02-16 14:10:02 +01:00
Simon Lamon a0ae18a1b6 Fix state classes issue translation in Group (#110238)
Fix state classes translation
2024-02-16 14:09:59 +01:00
David Bonnes ad761bb2de Bump evohome-async to 0.4.19 (#110225)
bump client to 0.4.19
2024-02-16 14:09:56 +01:00
DustyArmstrong edb69fb095 Bump datapoint to 0.9.9 + re-enable Met Office Integration (#110206) 2024-02-16 14:09:53 +01:00
Simon Lamon 58b28e6df1 Fix device class repairs issues placeholders in Group (#110181)
fix translation placeholders
2024-02-16 14:09:50 +01:00
Adam Goode 973a13abfa Properly report cover positions to prometheus (#110157) 2024-02-16 14:09:47 +01:00
J. Nick Koston 2a51377cef Bump yalexs to 1.11.2 (#110144)
changelog: https://github.com/bdraco/yalexs/compare/v1.11.1...v1.11.2
2024-02-16 14:09:44 +01:00
J. Nick Koston 87bd67656b Only schedule august activity update when a new activity is seen (#110141) 2024-02-16 14:09:41 +01:00
Maciej Bieniek c79bc17d17 Fix typo in sensor icons configuration (#110133)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-16 14:09:38 +01:00
A Björck 54270df217 Bump yalexs to 1.11.1, fixing camera snapshots from Yale Home (#110089) 2024-02-16 14:09:35 +01:00
Malte Franken 5a87cde71e Bump aio-geojson-usgs-earthquakes to 0.3 (#110084) 2024-02-16 14:09:32 +01:00
Christophe Gagnier e825bcc282 Update pytechnove to 1.2.2 (#110074) 2024-02-16 14:09:29 +01:00
Aurélien Grenotton b54a3170f0 Fix freebox pairing in bridge mode (#106131) 2024-02-16 14:09:25 +01:00
Luke Lashley 349d8f5c28 Better teardown and setup of Roborock connections (#106092)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-16 14:08:20 +01:00
IceBotYT 35149a46fc Bump linear-garage-door to 0.2.9 (#110298) 2024-02-16 13:56:25 +01:00
dependabot[bot] 1f1042c034 Bump dawidd6/action-download-artifact from 3.0.0 to 3.1.0 (#110699)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-16 13:40:03 +01:00
Steven Barth 5d0d3a5c2b Remove matplotlib pinning due to Python 3.12 incompatibility (#110706) 2024-02-16 12:33:57 +01:00
J. Nick Koston da55ef7901 Fix elkm1 service calls running in the executor (#110655)
fixes
```
  File "/usr/src/homeassistant/homeassistant/components/elkm1/__init__.py", line 416, in _set_time_service
    _getelk(service).panel.set_time(dt_util.now())
  File "/usr/local/lib/python3.11/site-packages/elkm1_lib/panel.py", line 55, in set_time
    self._connection.send(rw_encode(datetime))
  File "/usr/local/lib/python3.11/site-packages/elkm1_lib/connection.py", line 152, in send
    self._send(QueuedWrite(msg.message, msg.response_command), priority_send)
  File "/usr/local/lib/python3.11/site-packages/elkm1_lib/connection.py", line 148, in _send
    self._check_write_queue.set()
  File "/usr/local/lib/python3.11/asyncio/locks.py", line 192, in set
    fut.set_result(True)
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 763, in call_soon
    self._check_thread()
  File "/usr/local/lib/python3.11/asyncio/base_events.py", line 800, in _check_thread
    raise RuntimeError(
RuntimeError: Non-thread-safe operation invoked on an event loop other than the current one
```
2024-02-16 12:27:13 +01:00
J. Nick Koston 66f189ef26 Small performance improvements to collecting analytics (#110662)
- Use async_entity_ids_count instead of async_all

I also tried to make the code wrap a bit less but
I didn't want to refactor it to much in this PR

This one blocks the event loop for just a bit so there
are probably some more parts that could be optimized

`2024-02-15 07:17:30.034 WARNING (MainThread) [asyncio] Executing <Task
pending name='analytics schedule' coro=<Analytics.send_analytics()
running at
/usr/src/homeassistant/homeassistant/components/analytics/analytics.py:220>
wait_for=<Future pending cb=[_chain_future.<locals>._call_check_cancel()
at /usr/local/lib/python3.12/asyncio/futures.py:387, Task.task_wakeup()]
created at /usr/local/lib/python3.12/asyncio/base_events.py:447>
cb=[set.remove()] created at
/usr/src/homeassistant/homeassistant/core.py:598> took 0.335 seconds`
2024-02-16 12:23:11 +01:00
dupondje 0aaa517217 add missing state class to dsmr sensors (#110712)
current_average_demand and maximum_demand_current_month are missing a state class, which gives errors in the statistics tab in HA.
So adding them to the sensor.
2024-02-16 12:08:09 +01:00
dependabot[bot] 81199af488 Bump github/codeql-action from 3.24.1 to 3.24.3 (#110700)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.1 to 3.24.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.24.1...v3.24.3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-16 11:58:17 +01:00
dependabot[bot] 5618670fd1 Bump dorny/paths-filter from 3.0.0 to 3.0.1 (#110698)
Bumps [dorny/paths-filter](https://github.com/dorny/paths-filter) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/dorny/paths-filter/releases)
- [Changelog](https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md)
- [Commits](https://github.com/dorny/paths-filter/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: dorny/paths-filter
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-16 11:55:30 +01:00
Robert Resch bcce32e2de Bump deebot-client to 5.2.1 (#110683)
* Bump deebot-client to 5.2.0

* Bumb again

* Fix tests
2024-02-16 11:47:36 +01:00
Robert Hillis 2ac7d11b8d Mitigate session closed error in Netgear LTE (#110412) 2024-02-16 11:22:30 +01:00
Sid d4a2dc7116 Bump openwebifpy to 4.2.4 (#110676) 2024-02-16 10:47:19 +01:00
Jan-Philipp Benecke 613b183898 Avoid calling internals when adding mock config entry in Nightscout (#110600) 2024-02-16 10:00:52 +01:00
Jan Rieger 4ededefe24 Add translations to AVM FRITZ!Box Call Monitor state attributes (#108412) 2024-02-16 09:41:59 +01:00
Matthew FitzGerald-Chamberlain ce8cf314f9 Add Aprilaire integration (#95093)
* Add Aprilaire integration

* Fix test errors

* Update constants

* Code review cleanup

* Reuse coordinator from config flow

* Code review fixes

* Remove unneeded tests

* Improve translation

* Code review fixes

* Remove unneeded fixture

* Code review fixes

* Code review updates

* Use base data coordinator

* Deduplicate based on MAC

* Fix tests

* Check mac address on init

* Fix mypy error

* Use config entry ID for entity unique ID

* Fix tests

* Code review updates

* Fix mypy errors

* Code review updates

* Add data_description

* Update homeassistant/components/aprilaire/coordinator.py

Co-authored-by: Jon Oberheide <506986+jonoberheide@users.noreply.github.com>

* Update .coveragerc

* Update homeassistant/components/aprilaire/coordinator.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Jon Oberheide <506986+jonoberheide@users.noreply.github.com>
2024-02-16 08:30:51 +01:00
J. Nick Koston f7b9b0da0e Migrate dependencies loader to use async_get_integrations (#110690) 2024-02-16 08:07:39 +01:00
J. Nick Koston 9cf45882a7 Use bytes join fast path for large states payload (#110694)
b"".join has a fast path for when there are more than two bytes-strings
to combine

https://github.com/python/cpython/blob/f383ca1a6fa1a2a83c8c1a0e56cf997c77fa2893/Objects/stringlib/join.h#L123
2024-02-16 07:58:11 +01:00
J. Nick Koston 37897ee384 Move late import of config flows in loader to load time (#110688)
* Move late import of config flows in loader to load time

There does not seem to be any reason to import the
generated flows late. Import them at load time
with the rest of the generated files

* tests
2024-02-16 07:55:12 +01:00
J. Nick Koston 1608e05be6 Speed up registry config websocket api calls with list comps (#110693)
* Speed up registry config websocket api calls with list comps

list comps are faster than generator expressions, even more so in
python 3.12 since https://peps.python.org/pep-0709/

https://stackoverflow.com/questions/47789/generator-expressions-vs-list-comprehensions/62709748#62709748

* more readable
2024-02-16 07:41:55 +01:00
Robert Hillis 59d7bceaee Bump deluge-client to 1.10.0 (#110663) 2024-02-16 01:12:34 +01:00
J. Nick Koston dd1cf2c593 Remove unneeded list copy in icon helper (#110680) 2024-02-15 16:33:24 -06:00
Erik Montnemery 5f00e15d35 Don't add fritz entities with update_before_add (#110667)
Co-authored-by: mib1185 <mail@mib85.de>
2024-02-15 21:49:26 +01:00
Erik Montnemery ae39945a85 Correct config entry setup in fritz tests (#110669) 2024-02-15 20:52:40 +01:00
Robert Hillis dbca65dffb Bump nextcord to 2.6.0 (#110485) 2024-02-15 20:33:07 +01:00
Erik Montnemery 06a21d4ed9 Bump pychromecast to 14.0.0 (#108374)
* Pass unregister callback to cast HomeAssisstantController

* Update tests

* Bump pychromecast to 14.0.0

* Fix lint warning, adjust tests

* Improve test coverage
2024-02-15 20:14:01 +01:00
Robert Svensson dc09633cc2 Bump aiounifi to v71 (#110658) 2024-02-15 19:17:06 +01:00
jan iversen 286c98d70f Modbus, allow received int to be a float. (#110648) 2024-02-15 18:22:23 +01:00
Christopher Fenner 1372cf5a18 Categorize burner and compressor sensors as diagnostic entities in ViCare integration (#110653)
Categorize Burner and Compressor start and runtime counters as diagnostic entities in ViCare integration
2024-02-15 17:29:17 +01:00
Erik Montnemery 3526fd66df Add option to block remote enabling of HA Cloud remote (#109700)
* Allow blocking remote enabling of HA Cloud remote

* Fix test
2024-02-15 17:26:06 +01:00
G Johansson 619e7fbbce Coerce to float in Sensibo climate react custom service (#110508) 2024-02-15 11:11:16 -05:00
Livio Avalle c4247205ed Add state_class to ring battery sensor for LTS (#109872)
* Add state_class to ring battery sensor for LTS

* Add test, in test_sensor.py, for state_class for battery entity; in response to comment in PR
2024-02-15 09:52:11 -06:00
J. Nick Koston d49bccf123 Ensure lamarzocco tests add config entry before updating it (#110423) 2024-02-15 09:09:47 -06:00
kingy444 3529eb6044 Powerview Gen 3 functionality (#110158)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-15 08:27:11 -06:00
spycle d6efdc47a5 Bump pyMicrobot to 0.0.15 (#110502) 2024-02-15 15:21:36 +01:00
Stackie Jia 636c7ce350 Enable strict type checking on apple_tv integration (#101688)
* Enable strict type checking on apple_tv integration

* move some instance variables to class variables

* fix type of attr_value

* fix tests for description_placeholders assertion

* nits

* Apply suggestions from code review

* Update remote.py

* Apply suggestions from code review

* Update __init__.py

* Update __init__.py

* Update __init__.py

* Update config_flow.py

* Improve test coverage

* Update test_config_flow.py

* Update __init__.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-02-15 15:17:00 +01:00
Javier Fernández d555f91702 Update wallbox to 0.6.0 (#110636)
* Update wallbox plugin version

Closes #110566

* Fix unit tests failing

* Fix import order

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-15 15:04:32 +01:00
Christopher Fenner 47cbe8f00c Add support for multiple devices linked to a Viessmann account (#96044)
* care about all devices

* use first device for diagnostics

* update constants

* handle multiple devices

* handle multiple devices

* handle multiple devices

* handle multiple devices

* handle multiple devices

* code style

* code style

* code style

* code style

* code style

* remove unused import

* remove unused import

* use has_entity_name and add serial to device name

* use has_entity_name and add serial to device name

* use has_entity_name and add serial to device name

* use has_entity_name and add serial to device name

* use has_entity_name and add serial to device name

* remove unused constant

* Update const.py

* Update binary_sensor.py

* change format

* change format

* fix line duplication

* fix line duplication

* change format

* fix typo

* use serial in device name if multiple devices are found

* add common base class

* use base class

* Update __init__.py

* Update __init__.py

* Update __init__.py

* Update sensor.py

* Update binary_sensor.py

* correct import

* use base class

* fix cdestyle findings

* fix pylint findings

* fix mypy findings

* fix codestyle finidings

* move has_entity_name to base class

* Revert "fix mypy findings"

This reverts commit 2d78801a69.

* fix type issue

* move multiple device handling

* fix import

* remove special handling for device name

* extract api getter

* Update __init__.py

* Update __init__.py

* Update entity.py

* Update button.py

* Update binary_sensor.py

* Update climate.py

* Update sensor.py

* Update water_heater.py

* Apply suggestions from code review

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update __init__.py

* fix mypy & black

* move get_device to utils

* rename const

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* store device in config entry

* extract types

* fix diagnostics

* handle new platform

* handle api rate limit

* add types

* add types

* rename

* add types

* ignore gateways for now

* Update .coveragerc

* adjust types

* fix merge issues

* rename

* Update types.py

* fix type

* add test method

* simplify

* ignore unused devices

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* fix findings

* handle unsupported devices

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* Update types.py

* fix format

* adjust variable naming

* Update conftest.py

* Update conftest.py

* remove kw_only

* Apply suggestions from code review

* Update __init__.py

* Update binary_sensor.py

* Update button.py

* Update climate.py

* Update const.py

* Update diagnostics.py

* Update number.py

* Update sensor.py

* Update types.py

* Update water_heater.py

* fix comment

* Apply suggestions from code review

Co-authored-by: Erik Montnemery <erik@montnemery.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-02-15 13:58:00 +01:00
Åke Strandberg fd0f093299 Add some myuplink tests (#110521)
* Add some myuplink tests

* Update fixtures for api endpoints

* Adjust according to review

* Update snapshot file

* Remove unneded fixtures and improve typing

* More cleanup

* One last session scope removed

* Fix typing

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-15 13:44:45 +01:00
Joakim Sørensen 57d3f3f9f7 Split pre/post backup actions into dedicated methods (#110632)
* Split pre/post backup actions into dedicated methods

* Update homeassistant/components/backup/manager.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-15 12:38:36 +01:00
Aurélien Grenotton b9a8b992d7 Fix freebox pairing in bridge mode (#106131) 2024-02-15 12:34:29 +01:00
On Freund d4be6632cc Add monthly forecast sensor to RymPro (#101012)
* Add monthly forecast

* Apply suggestions from code review

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>

* Remove state class and add precision

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* Fix ruff and mypy

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-15 12:34:03 +01:00
Kristof Mariën d7787cdfd8 Bump libpyfoscam to 1.2.2 (#110625)
Bump foscam dependency
2024-02-15 11:52:01 +01:00
J. Nick Koston 8da07f1bf2 Fix formatting of mac addresses from dhcp discovery mocking in axis (#110560)
dhcp returns addresses in lowercase without :
2024-02-14 20:37:31 -05:00
J. Nick Koston d48a45fee7 Fix formatting of mac addresses from dhcp discovery mocking in config_entries test (#110617) 2024-02-14 16:32:02 -06:00
J. Nick Koston 499c42364e Fix formatting of mac addresses from dhcp discovery mocking in broadlink (#110558)
* Fix formatting of mac addresses from dhcp discovery mocking in broadlink

dhcp returns addresses in lowercase without :

* fix missed ones

* broadlink has same format
2024-02-14 17:26:14 -05:00
J. Nick Koston 78bc561700 Fix formatting of mac addresses from dhcp discovery mocking in nest (#110584)
dhcp returns addresses in lowercase without :
2024-02-14 17:25:52 -05:00
J. Nick Koston 7b4c5a112c Fix formatting of mac addresses from dhcp discovery mocking in radiotherm (#110593)
dhcp returns addresses in lowercase without :
2024-02-14 23:25:33 +01:00
J. Nick Koston 1f67e4fed1 Fix formatting of mac addresses from dhcp discovery mocking in ruuvi_gateway (#110597)
dhcp returns addresses in lowercase without :
2024-02-14 17:25:22 -05:00
J. Nick Koston 28afe9ff9e Correct misaligned formatting of mac addresses in samsungtv (#110599)
* Correct misaligned formatting of mac addresses in samsungtv

dhcp returns addresses in lowercase without : and there were places
were it was not passed through format_mac which resulted in the wrong
format being saved in the config entry

* safer
2024-02-14 17:25:08 -05:00
J. Nick Koston 0ea524659c Fix formatting of mac addresses from dhcp discovery mocking in roomba (#110596)
dhcp returns addresses in lowercase without :
2024-02-14 23:24:34 +01:00
J. Nick Koston 20d1cd1246 Fix formatting of mac addresses from dhcp discovery mocking in qnap_qsw (#110592)
dhcp returns addresses in lowercase without :
2024-02-14 23:23:43 +01:00
J. Nick Koston c7e2f24303 Fix formatting of mac addresses from dhcp discovery mocking in lametric (#110580) 2024-02-14 23:23:22 +01:00
J. Nick Koston b87e34ec67 Fix formatting of mac addresses from dhcp discovery mocking in screenlogic (#110602)
dhcp returns addresses in lowercase without :
2024-02-14 17:23:13 -05:00
J. Nick Koston 9105dd16e3 Fix formatting of mac addresses from dhcp discovery mocking in somfy_mylink (#110603)
dhcp returns addresses in lowercase without :
2024-02-14 17:23:02 -05:00
J. Nick Koston 35bcf2e9e4 Fix formatting of mac addresses from dhcp discovery mocking in squeezebox (#110604)
dhcp returns addresses in lowercase without :
2024-02-14 17:22:51 -05:00
J. Nick Koston d4562f4674 Fix formatting of mac addresses from dhcp discovery mocking in steamist (#110605)
dhcp returns addresses in lowercase without :
2024-02-14 17:22:38 -05:00
J. Nick Koston 48cd973c62 Fix formatting of mac addresses from dhcp discovery mocking in tailwind (#110606)
dhcp returns addresses in lowercase without :
2024-02-14 17:22:24 -05:00
J. Nick Koston 334c177e67 Fix formatting of mac addresses from dhcp discovery mocking in tesla_wall_connector (#110607)
* Fix formatting of mac addresses from dhcp discovery mocking in tesla_wall_connector

dhcp returns addresses in lowercase without :

* Fix formatting of mac addresses from dhcp discovery mocking in tesla_wall_connector

dhcp returns addresses in lowercase without :
2024-02-14 17:22:09 -05:00
J. Nick Koston cefaf0e065 Fix formatting of mac addresses from dhcp discovery mocking in tolo (#110608)
dhcp returns addresses in lowercase without :
2024-02-14 17:21:56 -05:00
J. Nick Koston 77a44c54dd Fix formatting of mac addresses from dhcp discovery mocking in twinkly (#110609)
dhcp returns addresses in lowercase without :
2024-02-14 17:21:33 -05:00
J. Nick Koston 2fe246441f Fix formatting of mac addresses from dhcp discovery mocking in unifiprotect (#110610)
dhcp returns addresses in lowercase without :
2024-02-14 17:21:19 -05:00
J. Nick Koston 2a04eabe18 Fix formatting of mac addresses from dhcp discovery mocking in verisure (#110611)
dhcp returns addresses in lowercase without :
2024-02-14 17:21:04 -05:00
J. Nick Koston e6ac4c5f1f Fix formatting of mac addresses from dhcp discovery mocking in vicare (#110613)
dhcp returns addresses in lowercase without :
2024-02-14 17:20:47 -05:00
J. Nick Koston fa026b7e12 Fix formatting of mac addresses from dhcp discovery mocking in wiz (#110615)
dhcp returns addresses in lowercase without :
wiz discovery returns addresses in lowercase without :
2024-02-14 17:20:32 -05:00
J. Nick Koston 79b2e465de Fix formatting of mac addresses from dhcp discovery mocking in yeelight (#110616)
dhcp returns addresses in lowercase without :
2024-02-14 17:20:15 -05:00
J. Nick Koston c20d2d44ed Fix formatting of mac addresses from dhcp discovery mocking in fronius (#110572)
Co-authored-by: Matthias Alphart <farmio@alphart.net>
2024-02-14 16:18:19 -06:00
Thomas55555 72297a9044 Bump aioautomower to 2024.2.6 (#110598) 2024-02-14 23:14:41 +01:00
J. Nick Koston dcfff6c138 Fix formatting of mac addresses from dhcp discovery mocking in powerwall (#110591)
dhcp returns addresses in lowercase without :
2024-02-14 23:11:25 +01:00
J. Nick Koston cc3783f999 Fix misaligned mac formatting in goalzero (#110574)
The DHCP mac address was being set as aabbcceeddff but the user step
was setting it as aa:bb:cc:dd:ee:ff
2024-02-14 23:10:07 +01:00
J. Nick Koston 5988db1670 Fix formatting of mac addresses from dhcp discovery mocking in dlink (#110562)
* Fix formatting of mac addresses from dhcp discovery mocking in dlink

dhcp returns addresses in lowercase without :

* fix tests
2024-02-14 23:07:45 +01:00
J. Nick Koston cd1c633ff9 Fix tplink not updating IP from DHCP discovery and discovering twice (#110557)
We only called format_mac on the mac address if we connected
to the device during entry creation. Since the format of the
mac address from DHCP discovery did not match the format saved
in the unique id, the IP would not get updated and a second
discovery would appear

Thankfully the creation path does format the mac so we did not
create any entries with an inconsistantly formatted unique id

fixes #110460
2024-02-14 23:03:30 +01:00
J. Nick Koston c045e23000 Fix formatting of mac addresses from dhcp discovery mocking in overkiz (#110590) 2024-02-14 16:01:15 -06:00
Jan-Philipp Benecke 5da31a3f1d Avoid calling internals when adding mock config entry in Squeezebox (#110601) 2024-02-14 22:59:49 +01:00
Charles Garwood d781dc4600 Add support for Fully Kiosk sound playing state (#105762) 2024-02-14 15:45:29 -05:00
J. Nick Koston 4627e8b1fc Fix formatting of mac addresses from dhcp discovery mocking in reolink (#110594)
dhcp returns addresses in lowercase without :
2024-02-14 21:39:30 +01:00
Marc Mueller 269f6be096 Improve hassio decorator typing (#110545)
* Improve hassio decorator typing

* Fix typing
2024-02-14 21:25:21 +01:00
J. Nick Koston 0bbe46d236 Fix formatting of mac addresses from dhcp discovery mocking in airzone (#110559)
dhcp returns addresses in lowercase without :
2024-02-14 20:59:16 +01:00
J. Nick Koston 16d2482fe6 Fix formatting of mac addresses from dhcp discovery mocking in elkm1 (#110564)
dhcp returns addresses in lowercase without :
2024-02-14 20:58:40 +01:00
J. Nick Koston 5ce39f2177 Fix formatting of mac addresses from dhcp discovery mocking in emonitor (#110565)
dhcp returns addresses in lowercase without :
2024-02-14 20:58:07 +01:00
J. Nick Koston 730e8ab5f3 Fix formatting of mac addresses from dhcp discovery mocking in esphome (#110567)
dhcp returns addresses in lowercase without :
2024-02-14 20:57:37 +01:00
J. Nick Koston 08f97d66ff Fix formatting of mac addresses from dhcp discovery mocking in flux_led (#110568)
dhcp returns addresses in lowercase without :
2024-02-14 20:56:00 +01:00
J. Nick Koston a87960a323 Fix formatting of mac addresses from dhcp discovery mocking in onvif (#110589)
dhcp returns addresses in lowercase without :
2024-02-14 20:55:14 +01:00
J. Nick Koston 52e8f7f865 Fix formatting of mac addresses from dhcp discovery mocking in fully_kiosk (#110573)
dhcp returns addresses in lowercase without :
2024-02-14 20:54:44 +01:00
J. Nick Koston efbfec0ece Fix formatting of mac addresses from dhcp discovery mocking in guardian (#110575)
dhcp returns addresses in lowercase without :
2024-02-14 20:54:16 +01:00
J. Nick Koston cd0ce7d9f6 Fix formatting of mac addresses from dhcp discovery mocking in intellifire (#110579)
dhcp returns addresses in lowercase without :
2024-02-14 20:53:50 +01:00
J. Nick Koston 98263d7d76 Fix formatting of mac addresses from dhcp discovery mocking in lifx (#110581)
dhcp returns addresses in lowercase without :
2024-02-14 20:53:26 +01:00
J. Nick Koston 815232069a Fix formatting of mac addresses from dhcp discovery mocking in motion_blinds (#110583)
dhcp returns addresses in lowercase without :
2024-02-14 20:52:32 +01:00
J. Nick Koston b0e87c0941 Fix formatting of mac addresses from dhcp discovery mocking in nuki (#110585)
dhcp returns addresses in lowercase without :
2024-02-14 20:51:44 +01:00
J. Nick Koston 4eca0371d5 Fix formatting of mac addresses from dhcp discovery mocking in obihai (#110586)
dhcp returns addresses in lowercase without :
2024-02-14 20:51:06 +01:00
J. Nick Koston 88fce6a76d Fix formatting of mac addresses from dhcp discovery mocking in insteon (#110578)
dhcp returns addresses in lowercase without :
2024-02-14 20:49:32 +01:00
J. Nick Koston bba19a5bab Fix formatting of mac addresses from dhcp discovery mocking in hunterdouglas_powerview (#110577)
dhcp returns addresses in lowercase without :
2024-02-14 20:48:53 +01:00
J. Nick Koston 25fac03705 Bump orjson to 3.9.14 (#110552)
changelog: https://github.com/ijl/orjson/compare/3.9.13...3.9.14

fixes a crasher due to buffer overread (was only partially fixed in 3.9.13)
2024-02-14 18:57:47 +01:00
Joost Lekkerkerker acca69f77a Migrate Vizio to has entity name (#96773) 2024-02-14 11:39:38 -05:00
Joost Lekkerkerker f72efa9618 Add entity translations to OralB (#97402)
* Make bluetooth use the translation from the entity description

* Add entity translations to OralB

* Remove links to other platforms

* Remove links to other platforms

* Remove links to other platforms

* Add test

* Use is

* Fix tests

* Update homeassistant/components/oralb/strings.json
2024-02-14 17:21:47 +01:00
J. Nick Koston 3a053afac6 Create backups files without having to copy inner tarballs (#110267) 2024-02-14 10:08:22 -06:00
Joost Lekkerkerker 0e833c5fe3 Migrate Twinkly to has entity naming (#97206)
* Migrate Twinkly to has entity naming

* Update the device name after sync

* Fix tests

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-02-14 16:43:29 +01:00
Simone Chemelli 538ef7764e Move Shelly thermostat check to status endpoint (#110543)
* Move Shelly thermostat check to status endpoint

* fix key path
2024-02-14 16:36:42 +01:00
J. Nick Koston eee6a119d5 Bump SQLAlchemy to 2.0.27 (#110517) 2024-02-14 10:32:05 +01:00
dependabot[bot] 29e6123220 Bump github/codeql-action from 3.24.0 to 3.24.1 (#110522)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.0 to 3.24.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.24.0...v3.24.1)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-14 09:55:04 +01:00
J. Nick Koston b3452dc3f3 Refactor dhcp to move all mac formatting into the client processor (#110509) 2024-02-13 19:12:38 -06:00
DeerMaximum 9a8c5af0a6 Add DeerMaximum to velux codeowners (#110504) 2024-02-14 00:46:51 +02:00
DeerMaximum d16d9d72c3 Add config flow to Velux (#89155)
* Add config_flow

* Add old config import

* Change from platform setup to entry setup

* Improve yaml config import

* Allow multiple hosts

* Apply recommendations

* Add DeerMaximum as codeowner

* Apply recommendations

* Fix config schema

* Fix hass data

* Remove DeerMaximum from CODEOWNERS

* Try to fix tests in ci

* Try to fix tests in ci 2

* Try to fix tests in ci 3

* Revert: Try to fix tests in ci 3

* Add end-to-end flow to connection error test

* Fix rebase

* Add required changes

* Change deprecation date

* Import only valid config entries

* Improve issue creation

* Fix error type

* Add missing test

* Optimize issue creation

* Optimize tests

* Add check for duplicate entries

* Add already_configured message

* Create issue for duplicate entries
2024-02-13 21:31:56 +01:00
J. Nick Koston 2981d7ed0e Fix logger message in samsungtv (#110484) 2024-02-13 11:12:37 -06:00
DustyArmstrong 3bf6d525fb Bump datapoint to 0.9.9 + re-enable Met Office Integration (#110206) 2024-02-13 17:24:08 +01:00
Shay Levy 43bd05ba82 Bump aiowebostv to 0.4.0 (#110477) 2024-02-13 16:15:15 +01:00
Jonas Fors Lellky f7c43710dc Refactor flexit_bacnet to use icon translations (#110479) 2024-02-13 16:09:18 +01:00
Åke Strandberg e2ff5bc248 Add myuplink binary_sensor platform (#110388)
* Add binary_sensor platform

* Address review comments

* Add one file more to .coveragerc
2024-02-13 15:59:38 +01:00
Stephen Brown II 171bb80b3f Add icon translations to Teslemetry (#109928)
* [Teslemetry] Create icons.json

Adds Icons to Teslemetry integration for climate presets.

* Update homeassistant/components/teslemetry/icons.json

Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>

* Update homeassistant/components/teslemetry/icons.json

Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>

---------

Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
2024-02-13 15:21:27 +01:00
Paul Bottein 70af81cf64 Set icons for switch without device class (#110470) 2024-02-13 15:11:09 +01:00
Stefan Agner 07e16ab073 Fix Raspberry Pi utilities installation on Alpine 3.19 (#110463) 2024-02-13 15:07:37 +01:00
Jonas Fors Lellky 6091ae55dc Add setpoints for fans to flexit_bacnet (#110262)
* Adds setpoints for fans to flexit_bacnet

* Add snapshot test for flexit_bacnet number

* Add test for flexit_bacnet number implementation

* Refactor set_native_value_fn

* Refactor names of number entities

Also refactor keys, translation keys
Order alphabetically
Update test snapshot

* Add icons to flexit_bacnet number entities

* Refactor to use icon translations, add unit of measurement

* Remove redundant assert
2024-02-13 14:55:02 +01:00
Michael 602380e111 Detect reached API rate limit in Tankerkoenig (#110432) 2024-02-13 14:34:01 +01:00
J. Nick Koston 01c3205635 Small performance improvements to config entry setup retry (#110448)
* Small performance improvements to config entry setup retry

- cache some properties that never change
- avoid loader.async_get_integration when we already have it
- avoid multiple integration.domain checks

* tweaks
2024-02-13 13:28:52 +01:00
Cyrill Raccaud 6812596cd7 Switch to new Bring! lib (#110355)
* switch to new bring lib

* rename lib again
2024-02-13 13:25:32 +01:00
J. Nick Koston 4d39a85553 Avoid creating many tasks when adding hue v2 entities (#110386)
Each entity creation would call async_add_entities which spawned a
seperate task

fixes
```
2024-02-12 18:06:09.819 WARNING (MainThread) [asyncio] Executing <Task pending name='config entry forward setup Philips Hue 2 hue fcb64edfc5ac2edbb656607d5193b583 light' coro=<ConfigEntries.async_forward_entry_setup() running at /usr/src/homeassistant/homeassistant/config_entries.py:1597> wait_for=<Future pending cb=[shield.<locals>._outer_done_callback() at /usr/local/lib/python3.12/asyncio/tasks.py:922, Task.task_wakeup()] created at /usr/local/lib/python3.12/asyncio/base_events.py:447> cb=[gather.<locals>._done_callback() at /usr/local/lib/python3.12/asyncio/tasks.py:767] created at /usr/local/lib/python3.12/asyncio/tasks.py:420> took 1.260 seconds
```
2024-02-13 13:04:29 +01:00
Martin Hjelmare f140c1a46d Deprecate cloud tts platform config (#110461)
* Deprecate cloud tts platform config

* Add test
2024-02-13 13:00:42 +01:00
Joost Lekkerkerker 8fb04d759b Change function name in tesla_wall_connector (#110467) 2024-02-13 12:02:48 +01:00
Joost Lekkerkerker 5ab0bd5bbe Change function name in flexit_bacnet (#110465) 2024-02-13 12:02:32 +01:00
Joost Lekkerkerker 103aab2218 Change function name in tfiac (#110466) 2024-02-13 12:02:09 +01:00
Jan Bouwhuis 09f1ec78a5 Handle template errors on MQTT payload handling (#110180)
* Handle template errors on MQTT payload handling (alt)

* Handle mqtt event en image template errors correctly
2024-02-13 10:59:55 +01:00
Josef Zweck ee25f6b960 Add additonal number entities to La Marzocco (#108258) 2024-02-13 09:47:39 +01:00
Jan Bouwhuis 545a34a849 Remove power_state_template from mqtt climate value template list (#110452) 2024-02-13 09:16:11 +01:00
wilburCforce a317196bda Update pylutron to 0.2.12 (#110414) 2024-02-13 08:37:58 +01:00
J. Nick Koston 77f416fa04 Ensure cast tests add config entry before updating it (#110441)
* Ensure cast tests add config entry before updating it

* time to walk away for a bit

* missed two
2024-02-13 05:01:37 +01:00
J. Nick Koston 0e1cdc1f79 Ensure github tests add config entry before updating it (#110430) 2024-02-13 05:00:44 +01:00
J. Nick Koston 704ad67917 Ensure hue tests add config entry before updating it (#110428) 2024-02-13 04:59:26 +01:00
Åke Strandberg a51ecd0614 Add myuplink unit-based sensor descriptions (#110370)
* Add more unit-based sensor descriptions

* Adjust energy sensor state class  to TOTAL_INCREASING
2024-02-13 04:41:29 +01:00
Aaron Bach e3c838d512 Update Notion auth to store refresh tokens instead of account passwords (#109670) 2024-02-12 20:35:06 -07:00
Raman Gupta 92c3c401b9 Remove unused instance variable in Z-wave (#110442)
* Remove unused variable and fix typing in zwave_js

* remove redundant type
2024-02-13 03:55:49 +01:00
Raman Gupta c1d61b9748 Improve climate turn_on/turn_off services for zwave_js (#109187)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-02-12 19:06:23 -05:00
Maciej Bieniek b60f931e6d Improve tests for Shelly WallDisplay (#110435)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-12 16:51:34 -06:00
J. Nick Koston da50e459bf Ensure knx tests add config entry before updating it (#110425) 2024-02-12 23:13:10 +01:00
J. Nick Koston 92842c28d2 Ensure cast tests add config entry before updating it (#110416) 2024-02-12 23:06:13 +01:00
J. Nick Koston 067645520a Ensure dlna_dmr tests add config entry before updating it (#110418) 2024-02-12 22:59:44 +01:00
J. Nick Koston e605b96d84 Ensure config entry oauth2 tests add config entry before updating it (#110421) 2024-02-12 22:59:17 +01:00
J. Nick Koston d9c581e2c8 Ensure homematicip_cloud tests add config entry before updating it (#110429) 2024-02-12 23:57:48 +02:00
J. Nick Koston 4e76e6b2b0 Ensure gdacs tests add config entry before updating it (#110431) 2024-02-12 23:56:48 +02:00
J. Nick Koston b3d9e15fb4 Ensure blink tests add config entry before updating it (#110415) 2024-02-12 22:56:22 +01:00
J. Nick Koston a3a1f8216c Migrate luftdaten to use async_update_entry to alter config entries (#110424) 2024-02-12 22:55:34 +01:00
J. Nick Koston ddab106391 Migrate twentemilieu to use async_update_entry to alter config entries (#110419) 2024-02-12 22:55:05 +01:00
Steven Looman 147a1f7b0b Bump async-upnp-client to 0.38.2 (#110411) 2024-02-12 15:31:09 -06:00
J. Nick Koston bb9ffa758d Ensure sonarr tests add config entry before updating it (#110422) 2024-02-12 15:30:01 -06:00
J. Nick Koston 8282018260 Migrate onewire to use async_update_entry to alter config entries (#110413) 2024-02-12 15:29:50 -06:00
J. Nick Koston 61610a5ef9 Ensure deconz tests add config entry before updating it (#110417) 2024-02-12 15:29:33 -06:00
J. Nick Koston bc0a78d069 Migrate tplink to use async_update_entry to alter config entries (#110406) 2024-02-12 21:39:37 +01:00
J. Nick Koston 45f23f4458 Migrate trend to use async_update_entry to alter config entries (#110408) 2024-02-12 14:38:56 -06:00
J. Nick Koston 5c60ff19e9 Migrate plex to use async_update_entry to alter config entries (#110405) 2024-02-12 21:38:38 +01:00
J. Nick Koston 15e8d66fea Migrate unifiprotect to use async_update_entry to alter config entries (#110409) 2024-02-12 21:38:25 +01:00
J. Nick Koston 04dccc7ec6 Migrate mqtt to use async_update_entry to alter config entries (#110407) 2024-02-12 21:38:13 +01:00
J. Nick Koston 4a98f3f223 Migrate ping to use async_update_entry to alter config entries (#110404) 2024-02-12 21:25:17 +01:00
J. Nick Koston 7dcf2e94b4 Migrate zha to use async_update_entry to alter config entries (#110402) 2024-02-12 21:24:56 +01:00
J. Nick Koston c3d9192384 Migrate smartthings to use async_update_entry to alter config entries (#110403) 2024-02-12 21:24:45 +01:00
J. Nick Koston db9c08b2e0 Migrate verisure to use async_update_entry to alter config entries (#110400) 2024-02-12 21:24:32 +01:00
J. Nick Koston 7d1b9dce9d Migrate yale_smart_alarm to use async_update_entry to alter config entries (#110401) 2024-02-12 21:23:07 +01:00
J. Nick Koston aa0e8625ad Migrate velbus to use async_update_entry to alter config entries (#110399) 2024-02-12 21:22:52 +01:00
Michael 9a672a1f31 Bump py-sucks to 0.9.9 (#110397)
bump py-sucks to 0.9.9
2024-02-12 21:13:47 +01:00
Åke Strandberg 78531ffbc6 Cleanup myuplink imports (#110374)
Cleanup imports
2024-02-12 20:21:33 +01:00
J. Nick Koston cc13d7eec7 Migrate hue to use async_update_entry to alter config entries (#110310) 2024-02-12 20:20:10 +01:00
J. Nick Koston 5c7d3035ca Migrate ipp to use async_update_entry to alter config entries (#110311) 2024-02-12 20:19:48 +01:00
Franck Nijhof 7b881e1c6a Update Home Assistant base image to 2024.02.1 (#110395) 2024-02-12 20:17:24 +01:00
J. Nick Koston a1f0e9015b Migrate openweathermap to use async_update_entry to alter config entries (#110372)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-02-12 13:15:57 -06:00
J. Nick Koston fc1c513f33 Migrate obihai to use async_update_entry to alter config entries (#110368) 2024-02-12 20:13:53 +01:00
Maciej Bieniek 2bd64dba6b Add removal_condition for Shelly analog input sensors (#110331)
* Add remove condition for analog input sensors

* xpercent key is not present in the payload if it has not been configured

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-12 20:13:11 +01:00
J. Nick Koston 32e3f6c5a7 Migrate roku to use async_update_entry to alter config entries (#110363) 2024-02-12 20:10:06 +01:00
Erik Montnemery e27e799dd5 Add power strip with 2 outlets to kitchen_sink (#110346) 2024-02-12 20:00:13 +01:00
Erik Montnemery 3086d24231 Add back supported_color_modes property to blebox light (#110350) 2024-02-12 19:59:04 +01:00
J. Nick Koston 5e5a9d9c59 Bump SQLAlchemy to 2.0.26 (#110358) 2024-02-12 19:57:53 +01:00
J. Nick Koston 96850c6524 Migrate minecraft_server to use async_update_entry to alter config entries (#110367) 2024-02-12 19:57:27 +01:00
J. Nick Koston f5497cb0be Migrate foscam to use async_update_entry to alter config entries (#110365) 2024-02-12 19:57:09 +01:00
J. Nick Koston e2ec23955e Migrate ps4 to use async_update_entry to alter config entries (#110373) 2024-02-12 19:52:04 +01:00
J. Nick Koston df8a168c97 Migrate switchbee to use async_update_entry to alter config entries (#110392) 2024-02-12 19:51:45 +01:00
J. Nick Koston 332db5093f Migrate utility_meter to use async_update_entry to alter config entries (#110394) 2024-02-12 19:51:16 +01:00
J. Nick Koston 4d1e3cdf49 Bump securetar to 2024.2.0 (#110383) 2024-02-12 19:50:59 +01:00
J. Nick Koston 29146326fa Fix zone radius calculation when radius is not 0 (#110354) 2024-02-12 19:47:34 +01:00
J. Nick Koston 4bcfa9e315 Migrate sonarr to use async_update_entry to alter config entries (#110364) 2024-02-12 19:46:48 +01:00
J. Nick Koston 300f5670e0 Migrate sensibo to use async_update_entry to alter config entries (#110390) 2024-02-12 19:46:30 +01:00
J. Nick Koston 5f03b5ad41 Migrate smhi to use async_update_entry to alter config entries (#110391) 2024-02-12 19:45:28 +01:00
J. Nick Koston 2f0d294219 Migrate trafikverket_camera to use async_update_entry to alter config entries (#110393) 2024-02-12 19:45:07 +01:00
Erik Montnemery 6e4fd69326 Fix color mode in wiz light (#110328) 2024-02-12 19:44:46 +01:00
J. Nick Koston 3b409b07e3 Migrate zwave_js to use async_update_entry to alter config entries (#110376) 2024-02-12 19:42:02 +01:00
Erik Montnemery a51d3b4286 Remove store from google_assistant AbstractConfig (#109877)
* Remove store from google_assistant AbstractConfig

* Bump minor version of google_assistant store

* Fix test

* Improve comments

* Fix typo

* Refactor

* Update homeassistant/components/google_assistant/http.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Fix bug, add tests

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-12 19:24:21 +01:00
J. Nick Koston d78bb3894c Migrate samsungtv to use async_update_entry to alter config entries (#110362) 2024-02-12 11:41:46 -06:00
J. Nick Koston 542e306b0c Migrate recollect_waste to use async_update_entry to alter config entries (#110378) 2024-02-12 11:41:06 -06:00
J. Nick Koston 925e9eecce Migrate ridwell to use async_update_entry to alter config entries (#110380) 2024-02-12 11:40:23 -06:00
J. Nick Koston fb622c6cc8 Migrate rainmachine to use async_update_entry to alter config entries (#110377) 2024-02-12 11:35:17 -06:00
J. Nick Koston 66607cd034 Migrate openuv to use async_update_entry to alter config entries (#110371) 2024-02-12 11:34:26 -06:00
Erik Montnemery 1764c031df Warn when lights violate color mode rules (#110336)
* Warn when lights violate color mode rules

* Update test

* Remove redundant warning, add tests

* Improve test coverage
2024-02-12 17:43:50 +01:00
Maciej Bieniek 8de038527f Improve type annotation in Shelly tests (#110361)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-12 10:23:55 -06:00
Nikolay Vasilchuk 1a22189262 Fix Starline GPS count sensor (#110348) 2024-02-12 17:07:22 +01:00
Åke Strandberg 29ed82332c Add myuplink specific sensor descriptions (#109867)
* Add specific sensor descriptions

* Address review suggestions

* Adress more review comments

* Change variable name according to code review

* Qualify parameter_id:s to avoid collisions

* Qualify sensor descriptions with a model group prefix

* Improve lookup of sensor descriptions

* Address review comments

* Add constant for unknown value from API

* Add raw value as attribute to enum sensors

* Create extra raw_value sensors with enum sensors

* Moved attributes to class attributes

* Move capitalize() to class setup
2024-02-12 16:37:44 +01:00
Joost Lekkerkerker 89331d0ff3 Change function name in hvv_departures (#110349) 2024-02-12 15:54:48 +01:00
Peter Winkler 0157026489 Upgrade myuplink package to 0.2.1 (#110343) 2024-02-12 15:33:58 +01:00
Adam Goode 5cdc3cec32 Properly report cover positions to prometheus (#110157) 2024-02-12 15:33:03 +01:00
Jan-Philipp Benecke fb878836a8 Handle no data error in Electricity Maps config flow (#110259)
Co-authored-by: Viktor Andersson <30777521+VIKTORVAV99@users.noreply.github.com>
2024-02-12 15:03:29 +01:00
Minims f792690e27 Update python rflink to 0.0.66 (#110060)
* Update python rflink to 0.0.66

Used to manage new data WIND from last R51 release

* Update requirements_all.txt

* Update requirements_test_all.txt
2024-02-12 13:27:01 +02:00
Marc Mueller defbe3c067 Update pytest warnings filter (#110332) 2024-02-12 11:30:41 +01:00
Joakim Sørensen 30e932f36d Bump pytraccar from 2.0.0 to 2.1.0 (#110320) 2024-02-12 11:23:16 +01:00
Kevin Worrel 121f37b6b6 Correct screenlogic test's mock adapter name (#110317)
Correct mock adapter name
2024-02-12 11:20:33 +01:00
J. Nick Koston aa67eb7f46 Migrate landisgyr_heat_meter to use async_update_entry to alter config entries (#110314) 2024-02-12 11:18:54 +01:00
J. Nick Koston b5d9f275b9 Migrate google_assistant_sdk to use async_update_entry to alter config entries (#110307) 2024-02-12 11:16:44 +01:00
Åke Strandberg 8376c07969 Add myuplink diagnostics download (#109925)
* Dump all relevant data from API

* Cleanup and adjust

* Redact serialNumber

* WIP

* Add fixtures

* WIP

* Tests for diagnostics completed

* Address review comments

* Change to fake token

* Add missed redact

* Improve mocks

* Resolve review comments
2024-02-12 10:56:06 +01:00
Richard Kroegel 1b8bda6067 Remove old BMW vehicles/devices automatically (#110255)
* Remove not assigned vehicles from DeviceRegistry on startup

* Replace async_remove_device with async_update_device

* Add test

* Use generator

---------

Co-authored-by: Richard <rikroe@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-12 10:52:08 +01:00
Erik Montnemery 12709050ea Fix color mode in comelit light (#110326) 2024-02-12 10:41:28 +01:00
Erik Montnemery 9c9fa11654 Fix color mode in hive light (#110330) 2024-02-12 10:21:43 +01:00
Maciej Bieniek 4f277b9509 Add pulse counter sensors for Shelly (#110248)
* Add pulse counter sensors to Shelly

* Add a unit for the pulse counter

* Fix removal condition

* xtotal key is not present in the payload if it has not been configured

* Update test

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-12 09:42:38 +01:00
J. Nick Koston 5528ae9707 Migrate knx to use async_update_entry to alter config entries (#110312) 2024-02-12 09:39:05 +01:00
Luke Lashley 33cdcce191 Better teardown and setup of Roborock connections (#106092)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-12 09:37:37 +01:00
J. Nick Koston 2516eafba6 Migrate axis to use async_update_entry to alter config entries (#110302) 2024-02-12 09:22:44 +01:00
J. Nick Koston e3813d4134 Migrate blink to use async_update_entry to alter config entries (#110303) 2024-02-12 08:30:38 +01:00
J. Nick Koston 55022767ac Migrate homematicip_cloud to use async_update_entry to alter config entries (#110308) 2024-02-12 08:29:37 +01:00
J. Nick Koston 303bb99da0 Migrate huawei_lte to use async_update_entry to alter config entries (#110309) 2024-02-12 08:28:54 +01:00
J. Nick Koston 73bb7d6830 Migrate forecast_solar to use async_update_entry to alter config entries (#110306) 2024-02-12 08:27:44 +01:00
J. Nick Koston 322b8b5be0 Migrate lametric to use async_update_entry to alter config entries (#110313) 2024-02-12 08:27:05 +01:00
J. Nick Koston d6ba7bf506 Migrate ambient_station to use async_update_entry to alter config entries (#110305) 2024-02-11 21:45:34 -06:00
Marc Mueller eadf2380d9 Update pytest to 8.0.0 (#109876) 2024-02-12 00:03:51 +01:00
Marc Mueller 2ef2172b01 Convert test helpers to get hass instance to contextmanagers (#109990)
* Convert get_test_home_assistant helper to contextmanager

* Convert async_test_home_assistant helper to contextmanager

* Move timezone reset to async_test_home_assistant helper
2024-02-11 21:23:51 +01:00
Jan-Philipp Benecke 3342e6ddbd Avoid calling hass internals when adding mock config entry in Fully Kiosk (#110291) 2024-02-11 21:17:54 +01:00
Jan-Philipp Benecke 932d930084 Avoid calling hass internals when adding mock config entry in Blink (#110290) 2024-02-11 21:17:22 +01:00
starkillerOG 589e3952de Fix TDBU naming in Motionblinds (#110283)
fix TDBU naming
2024-02-11 21:16:06 +01:00
G Johansson 7ce1ba9304 Fix cpu percentage in System Monitor (#110268)
* Fix cpu percentage in System Monitor

* Tests
2024-02-11 21:11:31 +01:00
Maciej Bieniek 326da81656 Add icon translations to Shelly (#110183)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-11 14:07:10 -06:00
Floris272 7dc9ad63bd Implement late feedback for Bluecurrent (#106918)
* Apply changes

* Fix MockClient

* Apply feedback

* Remove connector tests

* Change MockClient to inhert MagicMock

* Add reconnect tests and refactor mock client

* Refactor mock exception throwing

* Add future_fixture

* Move mocked client methods into create_client_mock

* Remove fixture and separate event from mock_client

* Add FutureContainer to store the loop_future
2024-02-11 20:57:38 +01:00
Marc Mueller 654ab54aa0 Update tqdm to 4.66.2 (#110277) 2024-02-11 20:11:08 +01:00
J. Nick Koston e9f8bae693 Bump PySwitchbot to 0.45.0 (#110275) 2024-02-11 13:09:11 -06:00
J. Nick Koston ab85ebb996 Bump thermopro-ble to 0.10.0 (#110279) 2024-02-11 13:08:49 -06:00
Marc Mueller ba93cf0336 Update pre-commit to 3.6.1 (#110278) 2024-02-11 20:07:14 +01:00
Michael ce37b84360 Bump aiopegelonline to 0.0.8 (#110274) 2024-02-11 20:06:47 +01:00
Matthias Alphart 8f2f869f46 Update xknxproject to 3.6.0 (#110282) 2024-02-11 20:01:16 +01:00
deosrc e38cb01d81 Add missing log message for error resolving OAuth token (#107606) 2024-02-11 13:07:54 +00:00
David Bonnes 2e0ee11de5 Bump evohome-async to 0.4.19 (#110225)
bump client to 0.4.19
2024-02-11 13:31:51 +02:00
Martin Hjelmare 6b4920ffa6 Refactor tradfri tests (#110094)
* Refactor tradfri tests

* Refactor command store

* Fix fixture type annotations

* Fix test type errors
2024-02-11 12:01:12 +01:00
Maciej Bieniek 470de0a4de Add icon translations to NextDNS (#110179)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-11 10:20:01 +01:00
Simon Lamon 6c4e372908 Fix state classes issue translation in Group (#110238)
Fix state classes translation
2024-02-11 09:54:50 +01:00
Thomas55555 816f231e27 Bump aioautomower to 2024.2.4 (#110209)
* Bump aioautomower to 2024.2.3

* Bump aioautomower to 2023.2.4
2024-02-11 10:13:52 +02:00
Oliver 0c9f9486bf Update denonavr to 0.11.6 (#110231)
* Update `denonavr` to `0.11.5`

* Handle `AvrProcessingError` exception

* Remove obsolete `_telnet_was_healthy` property from receiver

* Update `denonavr` to `0.11.6`
2024-02-11 09:29:40 +02:00
J. Nick Koston 2f7d71347e Enable compression for manifest.json (#110229)
Now that compression is ~5x faster than base zlib, it makes
sense to compress this
2024-02-10 19:45:21 -05:00
chammp a5cc0ae890 Improve package schema validation (#108125)
* Add failing tests for package config validation error wrapping

* Wrap package schema validation errors in HomeAssistantError

* Fix yamllint errors

* Rework package merge validation

Ignore invalid package definitions instead of failing startup.
Output error messages with locations if possible when a package
definition has errors.

* Ruff format

* Fix linter errors

* Move package_definition_schema to module scope

* Move inner function to module level

* Merge exception handlers

Merge exception handlers for config schema validation and package merge
to avoid untested code branches

* Fix long lines and doc strings

* More minor changes to exception handler

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-02-10 20:16:20 +01:00
Simon Lamon fa4433c569 Fix device class repairs issues placeholders in Group (#110181)
fix translation placeholders
2024-02-10 20:09:02 +01:00
J. Nick Koston 1e7cd7c0c6 Update airvisual to set ConfigEntry version with async_update_entry (#110204)
* Update airvisual to set ConfigEntry version with async_update_entry

* Update airvisual to set ConfigEntry version with async_update_entry
2024-02-10 19:57:53 +01:00
J. Nick Koston b3e46e3d64 Update airnow to set ConfigEntry version with async_update_entry (#110202) 2024-02-10 19:55:38 +01:00
J. Nick Koston 6b913546b9 Update swiss_public_transport to set ConfigEntry version with async_update_entry (#110197) 2024-02-10 19:54:35 +01:00
J. Nick Koston 991bef7ea0 Update prusalink to set ConfigEntry version with async_update_entry (#110196) 2024-02-10 19:53:35 +01:00
J. Nick Koston 118712d38d Update islamic_prayer_times to set ConfigEntry version with async_update_entry (#110194) 2024-02-10 19:52:45 +01:00
J. Nick Koston 087e52af6e Update switch_as_x to set ConfigEntry version with async_update_entry (#110193)
* Update switch_as_x to set ConfigEntry version with async_update_entry

* lint
2024-02-10 19:51:47 +01:00
J. Nick Koston a48c1ac57e Only schedule august activity update when a new activity is seen (#110141) 2024-02-10 09:29:49 -06:00
J. Nick Koston 3441b93c5c Update systemmonitor to set config entry version using async_update_entry (#110192) 2024-02-10 09:20:16 -06:00
Maciej Bieniek 845071f8f0 Add icon translations to Brother (#110128)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-10 12:17:53 +01:00
Piotr Machowski a2f4e99994 Add state_translated function to jinja templates (#96906)
* Add state_translated jinja function

* Add tests for load_state_translations_to_cache and get_cached_translations

* Cleanup state_translated template

* Add tests for state_translated jinja function

* Apply black formatting

* Improve code quality

* Apply suggestions from code review

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Apply suggestions from code review

* Prevent invalid components from loading translations

* Refactor loading translations to cache

* Adjust code issues

* Update homeassistant/helpers/translation.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Refactor listeners that trigger translation loading

* Apply suggestions from code review

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Apply suggestions from code review

* Adjust invalid function calls, fix code styling

* Adjust code quality

* Extract async_translate_state function

* Apply suggestions from code review

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Apply suggestions from code review

* Fix tests

* Fix tests

---------

Co-authored-by: Piotr Machowski <PiotrMachowski@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-02-10 10:47:56 +01:00
J. Nick Koston d1f098c11f Use async_update_entry to update dlna_dmr options in tests (#110117)
needed for #110023
2024-02-10 07:57:58 +01:00
J. Nick Koston f6d4617c7a Avoid directly changing config entry state in tests (part 2) (#110115)
followup to #110048 for more places
2024-02-10 07:20:15 +01:00
J. Nick Koston 567a179084 Simplify emulated_hue exposed entities cache (#109890)
Also avoids holding stale States in memory which can prevent
garbage collection of linked contexts
2024-02-09 21:43:46 -05:00
J. Nick Koston b0d3cc150f Use async_update_entry to update esphome options in tests (#110118) 2024-02-09 20:01:33 -06:00
J. Nick Koston 327e54cbfb Bump yalexs to 1.11.2 (#110144)
changelog: https://github.com/bdraco/yalexs/compare/v1.11.1...v1.11.2
2024-02-09 23:30:42 +01:00
Maciej Bieniek c2818dcb8e Add icon translations to Tractive (#110138)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-09 23:28:56 +01:00
Maciej Bieniek 57bec29266 Add icon translations to NAM (#110135)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-09 23:28:24 +01:00
Maciej Bieniek 0954e4cd73 Add icon translations to GIOS (#110131)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-09 23:28:11 +01:00
Maciej Bieniek e81a9947e0 Fix typo in sensor icons configuration (#110133)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-09 20:05:01 +01:00
Franck Nijhof 3ac0833f8c Update sentry-sdk to 1.40.3 (#110109) 2024-02-09 20:01:29 +01:00
Marc Mueller f793fbe492 Update pytest-asyncio to 0.23.5 (#110129) 2024-02-09 19:27:42 +01:00
J. Nick Koston facf927626 Use async_update_entry in github tests (#110119)
needed for #110023
2024-02-09 18:11:05 +01:00
A Björck 14715c150e Bump yalexs to 1.11.1, fixing camera snapshots from Yale Home (#110089) 2024-02-09 09:09:45 -06:00
J. Nick Koston 9689cb448d Avoid linear search of entity registry in async_extract_referenced_entity_ids (#109667)
* Index area_ids in the entity registry

I missed that these are used in _resolve_area in search.

Eventually we can make async_extract_referenced_entity_ids
a bit faster with this as well

* Avoid linear search of entity registry in async_extract_referenced_entity_ids

needs https://github.com/home-assistant/core/pull/109660
2024-02-09 09:42:30 -05:00
J. Nick Koston 206aaac700 Reduce complexity in the homekit config flow filters (#109850)
* Add typing to entity filters

* Add typing to entity filters

* Add typing to entity filters

* Add typing to entity filters

* tweaks

* tweaks

* tweaks

* tweaks

* tweaks
2024-02-09 09:33:21 -05:00
J. Nick Koston 8e4714c563 Avoid delaying startup in dlna_dmr (#109836)
* Avoid delaying startup in dlna_dmr

fixes #109834

* make sure device info is linked up at startup

* fixes

* update tests

* startup only

* override device info if we have it

* fixes

* make sure its set right away when adding the device

* revert test changes

* coverage

* coverage

* coverage

* coverage

* adjust

* fixes

* more fixes

* coverage

* coverage

* coverage

* tweaks

* tweaks

* Revert "revert test changes"

This reverts commit 014d29297d.

* coverage

* coverage
2024-02-09 09:05:27 -05:00
J. Nick Koston 6e134b325d Make ConfigEntryItems responsible for updating unique ids (#110018)
* Make ConfigEntryItems responsible for updating unique ids

* Make ConfigEntryItems responsible for updating unique ids

* Make ConfigEntryItems responsible for updating unique ids

* Make ConfigEntryItems responsible for updating unique ids

* Make ConfigEntryItems responsible for updating unique ids
2024-02-09 08:51:02 -05:00
J. Nick Koston ced922bb1a Improve apple_tv error reporting when setup fails (#110071)
* Improve apple_tv error reporting when setup fails

* Improve apple_tv error reporting when setup fails

* Update homeassistant/components/apple_tv/__init__.py

* ensure cleaned up
2024-02-09 08:50:30 -05:00
Erik Montnemery ae5bef6ffa Fix color mode in flux_led light (#110096) 2024-02-09 14:11:27 +01:00
Erik Montnemery 3ca202a338 Fix scene tests (#110097) 2024-02-09 14:10:59 +01:00
Malte Franken 6499be8528 Bump aio-geojson-usgs-earthquakes to 0.3 (#110084) 2024-02-09 11:31:16 +01:00
Jan Bouwhuis 8aa4157290 Add entry diagnostics to imap integration (#109460) 2024-02-09 11:30:27 +01:00
Franck Nijhof cfd1f7809f 2024.2.1 (#110078) 2024-02-09 11:04:19 +01:00
Erik Montnemery 5f9cc2fec1 Prevent network access in emulated_hue tests (#109991) 2024-02-09 10:16:49 +01:00
Erik Montnemery 793b6aa97d Allow passing version to ConfigEntry.async_update_entry (#110077)
Allow passing minor_version and version to ConfigEntry.async_update_entry
2024-02-09 10:10:25 +01:00
Franck Nijhof 7caf78a926 Update debugpy to 1.8.1 (#110076) 2024-02-09 10:08:23 +01:00
Thomas55555 ec3af2462b Address late review on husqvarna_automower (#109896)
* Address late review on husqvarna_automower

* Add missing credentials string
2024-02-09 09:53:22 +01:00
Franck Nijhof 58d46f6dec Bump version to 2024.2.1 2024-02-09 09:02:01 +01:00
Brandon Rothweiler 74ea9e24df Bump py-aosmith to 1.0.8 (#110061) 2024-02-09 09:01:49 +01:00
David Bonnes 437a2a829f Bump evohome-async to 0.4.18 (#110056) 2024-02-09 09:01:46 +01:00
Michael Hansen f5884c6279 Matching duplicate named entities is now an error in Assist (#110050)
* Matching duplicate named entities is now an error

* Update snapshot

* Only use area id
2024-02-09 09:01:43 +01:00
Michael e4382a494c Log error and continue on parsing issues of translated strings (#110046) 2024-02-09 09:00:19 +01:00
Bram Kragten 56ff767969 Update frontend to 20240207.1 (#110039) 2024-02-09 09:00:17 +01:00
jan iversen 4a18f592c6 Avoid key_error in modbus climate with non-defined fan_mode. (#110017) 2024-02-09 09:00:14 +01:00
Robert Resch 7ff2f376d4 Bump aioecowitt to 2024.2.1 (#109999) 2024-02-09 09:00:10 +01:00
jan iversen a18918bb73 Allow modbus negative min/max value. (#109995) 2024-02-09 09:00:06 +01:00
Robert Resch 49e5709826 Bump deebot-client to 5.1.1 (#109994) 2024-02-09 09:00:00 +01:00
jan iversen c665903f9d Allow modbus min/max temperature to be negative. (#109977) 2024-02-09 08:59:58 +01:00
spycle de44af2948 Bump pyMicrobot to 0.0.12 (#109970) 2024-02-09 08:59:55 +01:00
Erik Montnemery 95a800b6bc Don't blow up if config entries have unhashable unique IDs (#109966)
* Don't blow up if config entries have unhashable unique IDs

* Add test

* Add comment on when we remove the guard

* Don't stringify hashable non string unique_id
2024-02-09 08:59:52 +01:00
jan iversen a9e9ec2c3d Allow modbus "scale" to be negative. (#109965) 2024-02-09 08:59:49 +01:00
Marcel van der Veldt 7309c3c290 Handle Matter nodes that become available after startup is done (#109956) 2024-02-09 08:59:46 +01:00
Malte Franken f48d70654b Bump aio-geojson-geonetnz-volcano to 0.9 (#109940) 2024-02-09 08:59:43 +01:00
Marcel van der Veldt a9b3c2e2b5 Skip polling of unavailable Matter nodes (#109917) 2024-02-09 08:59:41 +01:00
Jan-Philipp Benecke 19349e1779 Bump aioelectricitymaps to 0.4.0 (#109895) 2024-02-09 08:59:38 +01:00
Marcel van der Veldt e320d715c7 Bump Python matter server to 5.5.0 (#109894) 2024-02-09 08:59:35 +01:00
Michael Hansen 44c9ea68eb Assist fixes (#109889)
* Don't pass entity ids in hassil slot lists

* Use first completed response

* Add more tests
2024-02-09 08:59:32 +01:00
Mike Degatano dbfee24eb7 Allow disabling home assistant watchdog (#109818) 2024-02-09 08:59:27 +01:00
mkmer 3b7271d597 Catch APIRateLimit in Honeywell (#107806) 2024-02-09 08:58:44 +01:00
David Bonnes 86e6fdb57c Bump evohome-async to 0.4.18 (#110056) 2024-02-09 08:49:09 +01:00
Malte Franken eef5b44282 Bump aio-geojson-geonetnz-volcano to 0.9 (#109940) 2024-02-09 08:45:55 +01:00
J. Nick Koston b5afdf34f4 Improve ability to debug one time listeners blocking the event loop (#110064) 2024-02-09 08:44:14 +01:00
Christophe Gagnier 720fb7da59 Update pytechnove to 1.2.2 (#110074) 2024-02-09 08:41:48 +01:00
jan iversen a0abc27612 Avoid key_error in modbus climate with non-defined fan_mode. (#110017) 2024-02-09 08:39:08 +01:00
Michael d049928be7 Log error and continue on parsing issues of translated strings (#110046) 2024-02-09 08:35:12 +01:00
spycle d3da6cbcfc Bump pyMicrobot to 0.0.12 (#109970) 2024-02-09 08:33:52 +01:00
Brandon Rothweiler a3dbe42fa1 Bump py-aosmith to 1.0.8 (#110061) 2024-02-09 08:25:32 +01:00
Franck Nijhof e7043f5dda Update sentry-sdk to 1.40.2 (#110049) 2024-02-09 08:15:21 +01:00
Jc2k 4f404881dd Remove homekit_controller entity registry entries when backing char or service is gone (#109952) 2024-02-09 07:05:08 +00:00
J. Nick Koston 122ac059bc Convert dhcp watcher to asyncio (#109938) 2024-02-08 22:23:42 -06:00
Allen Porter 261f9c5d62 Cleanup test config entry setup to use best practices (#110070)
* Cleanup test config entry setup to use best practices

* Add missed files
2024-02-08 19:52:40 -08:00
J. Nick Koston 2d8d6ce642 Bump aiodiscover 1.6.1 (#110059)
fixes decoding idna encoding hostnames

changelog: https://github.com/bdraco/aiodiscover/compare/v1.6.0...v1.6.1
2024-02-09 04:27:04 +01:00
Michael Hansen 2681dae60c Matching duplicate named entities is now an error in Assist (#110050)
* Matching duplicate named entities is now an error

* Update snapshot

* Only use area id
2024-02-08 19:38:03 -06:00
J. Nick Koston 02efe41564 Avoid directly changing config entry state in tests (#110048) 2024-02-08 16:31:17 -06:00
Michael 531f2e8443 bump wretry.action@v1.4.4 (#110053) 2024-02-08 23:15:22 +01:00
Bouwe Westerdijk 326c7c0495 Add option-icons for Plugwise Select (#109986) 2024-02-08 20:19:23 +01:00
dependabot[bot] 23fa9103d7 Bump Wandalen/wretry.action from 1.3.0 to 1.4.0 (#109950)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-08 20:14:49 +01:00
Mike Degatano a0e515df1a Allow disabling home assistant watchdog (#109818) 2024-02-08 20:09:53 +01:00
Bram Kragten 35cb37ffb0 Update frontend to 20240207.1 (#110039) 2024-02-08 20:03:41 +01:00
Marc Mueller 1adbddb754 Update pylint-per-file-ignores to 1.3.2 (#110014) 2024-02-08 17:40:30 +01:00
Robert Resch 69af00b360 Bump deebot-client to 5.1.1 (#109994) 2024-02-08 15:41:37 +01:00
Robert Resch fa0260a5d5 Bump aioecowitt to 2024.2.1 (#109999) 2024-02-08 15:41:19 +01:00
Erik Montnemery 2f15053311 Don't blow up if config entries have unhashable unique IDs (#109966)
* Don't blow up if config entries have unhashable unique IDs

* Add test

* Add comment on when we remove the guard

* Don't stringify hashable non string unique_id
2024-02-08 15:39:01 +01:00
jan iversen 97c6fd0f8d Allow modbus negative min/max value. (#109995) 2024-02-08 15:34:43 +01:00
Marc Mueller b329397288 Fix callable import (#110003) 2024-02-08 15:29:55 +01:00
jan iversen 9f50153c8b Allow modbus min/max temperature to be negative. (#109977) 2024-02-08 13:48:33 +01:00
wilburCforce 29d3e17461 Update pylutron to 0.2.11 (#109853) 2024-02-08 13:32:57 +01:00
jan iversen e968486594 Bump pymodbus to v3.6.4 (#109980) 2024-02-08 13:16:50 +01:00
Marcel van der Veldt e7213a4192 Handle Matter nodes that become available after startup is done (#109956) 2024-02-08 13:14:10 +01:00
Erik Montnemery c7957f8e94 Prevent network access in emulated_hue tests (#109991) 2024-02-08 13:00:45 +01:00
jan iversen 55f10656a7 Allow modbus "scale" to be negative. (#109965) 2024-02-08 12:40:32 +01:00
mkmer 168657b724 Catch APIRateLimit in Honeywell (#107806) 2024-02-08 10:51:20 +01:00
Marcel van der Veldt 2d88b77813 Skip polling of unavailable Matter nodes (#109917) 2024-02-08 09:01:48 +01:00
Marcel van der Veldt d6e617eff8 Bump Python matter server to 5.5.0 (#109894) 2024-02-08 08:59:57 +01:00
Jan-Philipp Benecke fc5f4bd5b8 Bump aioelectricitymaps to 0.4.0 (#109895) 2024-02-08 08:42:22 +01:00
Michael Hansen 1750f54da4 Assist fixes (#109889)
* Don't pass entity ids in hassil slot lists

* Use first completed response

* Add more tests
2024-02-07 15:13:42 -06:00
Franck Nijhof 9dbf84228e 2024.2.0 (#109883) 2024-02-07 18:31:28 +01:00
Maciej Bieniek b276a7863b Add missing unique_id check for Shelly Analog Input sensor (#109888)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-07 11:20:53 -06:00
Åke Strandberg 8fd51fcbef Bump myuplink dependency to 0.1.1 (#109878)
Bump myuplink dependeny to 0.1.1
2024-02-07 18:07:53 +01:00
Joost Lekkerkerker 9e47d03086 Fix kitchen sink tests (#109243) 2024-02-07 17:40:10 +01:00
Marc Mueller de066c7fc0 Reset log level in script tests (#109881) 2024-02-07 17:22:10 +01:00
Maciej Bieniek b5b09446a1 Add analog input value sensor for Shelly (#109312)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-07 10:22:00 -06:00
Maciej Bieniek d0384480f5 Test unique IDs for Shelly entities (#109879)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-07 10:18:00 -06:00
Franck Nijhof f63aaf8b5a Bump version to 2024.2.0 2024-02-07 16:28:11 +01:00
Malte Franken 8375fc235d Bump aio-geojson-geonetnz-quakes to 0.16 (#109873) 2024-02-07 16:27:47 +01:00
Åke Strandberg 3030870de0 Remove soft hyphens from myuplink sensor names (#109845)
Remove soft hyphens from sensor names
2024-02-07 16:27:44 +01:00
Matrix f61c70b686 Fix YoLink SpeakerHub support (#107925)
* improve

* Fix when hub offline/online message pushing

* fix as suggestion

* check config entry load state

* Add exception translation
2024-02-07 16:27:40 +01:00
Malte Franken 8dd1e741b2 Bump aio-geojson-geonetnz-quakes to 0.16 (#109873) 2024-02-07 16:24:25 +01:00
Jc2k 1ea9b1a158 Add support for air purifiers to HomeKit Device (#109880) 2024-02-07 15:19:42 +00:00
Erik Montnemery aea81a180c Fix Shelly white light test (#109855) 2024-02-07 15:39:49 +01:00
Erik Montnemery 2e194c4ec3 Fix light color mode in tplink (#109831) 2024-02-07 15:39:36 +01:00
Åke Strandberg 5d1da0b3e4 Remove soft hyphens from myuplink sensor names (#109845)
Remove soft hyphens from sensor names
2024-02-07 15:26:00 +01:00
Matrix 34220200c1 Fix YoLink SpeakerHub support (#107925)
* improve

* Fix when hub offline/online message pushing

* fix as suggestion

* check config entry load state

* Add exception translation
2024-02-07 13:42:33 +01:00
Franck Nijhof e720b398d2 Bump version to 2024.2.0b11 2024-02-07 12:44:50 +01:00
Bram Kragten bd21490a57 Update frontend to 20240207.0 (#109871) 2024-02-07 12:34:36 +01:00
Malte Franken 75b308c1aa Bump aio-georss-gdacs to 0.9 (#109859) 2024-02-07 12:34:33 +01:00
Joakim Plate 881707e1fe Update nibe to 2.8.0 with LOG.SET fixes (#109825)
Update nibe to 2.8.0
2024-02-07 12:34:30 +01:00
Jiayi Chen 2ca3bbaea5 Update Growatt server URLs (#109122) 2024-02-07 12:34:24 +01:00
Bram Kragten 521e9eb869 Update frontend to 20240207.0 (#109871) 2024-02-07 12:29:06 +01:00
dcmeglio 1a037da9f5 Add sensor for Ecowitt raw soil moisture value (#109849) 2024-02-07 10:47:40 +01:00
Malte Franken 059c251194 Bump aio-georss-gdacs to 0.9 (#109859) 2024-02-07 10:27:10 +01:00
Marc Mueller 2ae019bfc2 Update syrupy to 4.6.1 (#109860) 2024-02-07 09:56:42 +01:00
Jiayi Chen 4e2f599720 Update Growatt server URLs (#109122) 2024-02-07 09:35:50 +01:00
Thomas55555 6d4ab6c758 Add Husqvarna Automower integration (#109073)
* Add Husqvarna Automower

* Update homeassistant/components/husqvarna_automower/__init__.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/lawn_mower.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/lawn_mower.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* address review

* add test_config_non_unique_profile

* add missing const

* WIP tests

* tests

* tests

* Update homeassistant/components/husqvarna_automower/api.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/husqvarna_automower/config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/husqvarna_automower/conftest.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* .

* loop through test

* Update homeassistant/components/husqvarna_automower/entity.py

* Update homeassistant/components/husqvarna_automower/coordinator.py

* Update homeassistant/components/husqvarna_automower/coordinator.py

* Apply suggestions from code review

* ruff

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-07 09:27:04 +01:00
Luke Lashley 6f3be3e505 Move Roborock map retrieval to coordinator and made map always diagnostic (#104680)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-02-07 09:13:51 +01:00
Erik Montnemery 586b4ab93d Simplify Hue v2 color mode calculation (#109857) 2024-02-07 08:56:35 +01:00
Josef Zweck 2fc56ff4e4 Add late PR changes to tedee (#109858)
requested changes
2024-02-07 08:53:19 +01:00
Franck Nijhof ea4bdbb3a0 Bump version to 2024.2.0b10 2024-02-07 08:48:17 +01:00
puddly 40cfc31dcb Bump ZHA dependency zigpy to 0.62.3 (#109848) 2024-02-07 08:48:07 +01:00
starkillerOG 031aadff00 Bump motionblinds to 0.6.20 (#109837) 2024-02-07 08:48:04 +01:00
Vilppu Vuorinen 27691b7d48 Disable energy report based operations with API lib upgrade (#109832)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-02-07 08:48:01 +01:00
Joost Lekkerkerker fe94107af7 Make integration fields in Analytics Insights optional (#109789) 2024-02-07 08:47:58 +01:00
Teemu R d784a76d32 Add tapo virtual integration (#109765) 2024-02-07 08:47:55 +01:00
Joost Lekkerkerker ebb1912617 Show domain in oauth2 error log (#109708)
* Show token url in oauth2 error log

* Fix tests

* Use domain
2024-02-07 08:47:50 +01:00
Vilppu Vuorinen 5521a39866 Disable energy report based operations with API lib upgrade (#109832)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-02-07 08:45:27 +01:00
Erik Montnemery b420c65016 Fix hue fallback onoff colormode (#109856)
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
2024-02-07 08:14:55 +01:00
Teemu R d9f97bc7ec Add tapo virtual integration (#109765) 2024-02-07 06:29:26 +01:00
Joost Lekkerkerker 905e25b3a1 Make integration fields in Analytics Insights optional (#109789) 2024-02-07 06:26:33 +01:00
starkillerOG 8e51affe50 Bump motionblinds to 0.6.20 (#109837) 2024-02-07 06:23:57 +01:00
puddly 26e6bc8a6a Bump ZHA dependency zigpy to 0.62.3 (#109848) 2024-02-07 06:22:54 +01:00
Åke Strandberg 9250dd0355 Add update platform to myuplink (#109786)
* Add update platform to myuplink

* Address comments from review
2024-02-06 23:14:31 +01:00
Joost Lekkerkerker 59e9010b65 Show domain in oauth2 error log (#109708)
* Show token url in oauth2 error log

* Fix tests

* Use domain
2024-02-06 23:03:35 +01:00
Marcel van der Veldt fd5efd1f79 Add transition support to Matter light platform (#109803)
* Add support for transitions to Matter light platform

* fix the feature check

* add tests
2024-02-06 22:59:55 +01:00
Franck Nijhof 8c605c29c3 Bump version to 2024.2.0b9 2024-02-06 22:49:53 +01:00
Joakim Sørensen 74a75e709f Bump awesomeversion from 23.11.0 to 24.2.0 (#109830) 2024-02-06 22:49:41 +01:00
J. Nick Koston 2103875ff7 Bump aioesphomeapi to 21.0.2 (#109824) 2024-02-06 22:49:38 +01:00
Erik Montnemery 5c83b774bb Bump python-otbr-api to 2.6.0 (#109823) 2024-02-06 22:49:34 +01:00
Joost Lekkerkerker 2c870f9da9 Bump aioecowitt to 2024.2.0 (#109817) 2024-02-06 22:49:31 +01:00
Maciej Bieniek 40adb3809f Ignore trackable without details in Tractive integration (#109814)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-06 22:49:28 +01:00
wittypluck 8aa1242221 Mark Unifi bandwidth sensors as unavailable when client disconnects (#109812)
* Set sensor as unavailable instead of resetting value to 0 on disconnect

* Update unit test on unavailable bandwidth sensor
2024-02-06 22:49:25 +01:00
J. Nick Koston 8569ddc5f9 Fix entity services targeting entities outside the platform when using areas/devices (#109810) 2024-02-06 22:49:22 +01:00
Franck Nijhof 7032415528 Don't block Supervisor entry setup with refreshing updates (#109809) 2024-02-06 22:49:19 +01:00
puddly d099fb2a26 Pin chacha20poly1305-reuseable>=0.12.1 (#109807)
* Pin `chacha20poly1305-reuseable`
Prevents a runtime `assert isinstance(cipher, AESGCM)` error

* Update `gen_requirements_all.py` as well
2024-02-06 22:49:16 +01:00
Jan-Philipp Benecke 35fad52913 Bump aioelectricitymaps to 0.3.1 (#109797) 2024-02-06 22:49:13 +01:00
Vilppu Vuorinen c170132827 Update MELCloud codeowners (#109793)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-02-06 22:49:10 +01:00
Matthias Alphart 439f82a4ec Update xknx to 2.12.0 and xknxproject to 3.5.0 (#109787) 2024-02-06 22:49:07 +01:00
Steven B 2481d14632 Bump ring_doorbell to 0.8.7 (#109783) 2024-02-06 22:49:04 +01:00
Steven B 3cf826dc93 Bump ring_doorbell to 0.8.6 (#109199) 2024-02-06 22:48:59 +01:00
Jan-Philipp Benecke e25ddf9650 Change state class of Tesla wall connector session energy entity (#109778) 2024-02-06 22:46:34 +01:00
puddly 8d79ac67f5 Bump ZHA dependencies (#109770)
* Bump ZHA dependencies

* Bump universal-silabs-flasher to 0.0.18

* Flip `Server_to_Client` enum in ZHA unit test

* Bump zigpy to 0.62.2
2024-02-06 22:46:31 +01:00
David F. Mulcahey 5025c15165 Buffer JsonDecodeError in Flo (#109767) 2024-02-06 22:46:28 +01:00
Joost Lekkerkerker ffd5e04a29 Fix Radarr health check singularity (#109762)
* Fix Radarr health check singularity

* Fix comment
2024-02-06 22:46:25 +01:00
G Johansson 9fcdfd1b16 Bump holidays to 0.42 (#109760) 2024-02-06 22:46:21 +01:00
Vilppu Vuorinen c1e5b2e6cc Fix compatibility issues with older pymelcloud version (#109757) 2024-02-06 22:42:58 +01:00
suaveolent 31c0d21204 Improve lupusec code quality (#109727)
* renamed async_add_devices

* fixed typo

* patch class instead of __init__

* ensure non blocking get_alarm

* exception handling

* added test case for json decode error

* avoid blockign calls

---------

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2024-02-06 22:42:54 +01:00
spycle 3ba63fc78f Fix keymitt_ble config-flow (#109644)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-06 22:42:51 +01:00
spycle 0395315267 Bump pyMicrobot to 0.0.10 (#109628) 2024-02-06 22:42:48 +01:00
TheJulianJES 6b354457c2 Fix ZHA creating unnecessary "summ received" entity after upgrade (#109268)
* Do not create `current_summ_received` entity until initialized once

* Update zha_devices_list.py to not expect summation received entities

The attribute isn't initialized for these devices in the test (which our check now expects it to be), hence we need to remove them from this list.

* Update sensor tests to have initial state for current_summ_received entity

The attribute needs to be initialized for it to be created which we do by plugging the attribute read.
The test expects the initial state to be "unknown", but hence we plugged the attribute (to create the entity), the state is whatever we plug the attribute read as.

* Update sensor tests to expect not updating current_summ_received entity if it doesn't exist
2024-02-06 22:42:43 +01:00
Joost Lekkerkerker 252baa93aa Bump aioecowitt to 2024.2.0 (#109817) 2024-02-06 22:37:20 +01:00
Maciej Bieniek a6f0b6a005 Ignore trackable without details in Tractive integration (#109814)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-06 22:36:12 +01:00
Franck Nijhof db16b739a6 Don't block Supervisor entry setup with refreshing updates (#109809) 2024-02-06 22:34:53 +01:00
Joakim Plate 3ec0ea3ef9 Update nibe to 2.8.0 with LOG.SET fixes (#109825)
Update nibe to 2.8.0
2024-02-06 22:06:59 +01:00
Joakim Sørensen 7c233c2bd0 Bump awesomeversion from 23.11.0 to 24.2.0 (#109830) 2024-02-06 21:57:00 +01:00
J. Nick Koston 88086dfa0c Bump aioesphomeapi to 21.0.2 (#109824) 2024-02-06 21:01:10 +01:00
Erik Montnemery b5f049b84c Bump python-otbr-api to 2.6.0 (#109823) 2024-02-06 21:14:45 +02:00
J. Nick Koston 09c609459d Fix entity services targeting entities outside the platform when using areas/devices (#109810) 2024-02-06 12:41:57 -06:00
Erik Montnemery 674e4ceb2c Make additional methods of google_assistant.AbstractConfig abstract (#109811) 2024-02-06 19:14:12 +01:00
Erik Montnemery fabcf2948e Bump hass-nabucasa from 0.77.0 to 0.78.0 (#109813) 2024-02-06 19:02:32 +01:00
wittypluck 7d24ae88e6 Mark Unifi bandwidth sensors as unavailable when client disconnects (#109812)
* Set sensor as unavailable instead of resetting value to 0 on disconnect

* Update unit test on unavailable bandwidth sensor
2024-02-06 18:33:10 +01:00
Joost Lekkerkerker 6519b24319 Make bluetooth use naming from the entity description (#97401)
* Make bluetooth use the translation from the entity description

* Remove links to other platforms

* Remove links to other platforms

* Remove links to other platforms

* Add test

* Use is

* Fix test

* Update homeassistant/components/bluetooth/passive_update_processor.py

Co-authored-by: J. Nick Koston <nick@koston.org>

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-06 17:12:15 +01:00
puddly 6295f91a1f Pin chacha20poly1305-reuseable>=0.12.1 (#109807)
* Pin `chacha20poly1305-reuseable`
Prevents a runtime `assert isinstance(cipher, AESGCM)` error

* Update `gen_requirements_all.py` as well
2024-02-06 16:55:51 +01:00
Marc Mueller 545b888034 Update ruff to 0.2.1 (#109796)
* Update ruff to 0.2.1

* Rename config sections

* Update remapped error codes

* Add ignores
2024-02-06 15:41:34 +01:00
puddly a533fa222e Bump ZHA dependencies (#109770)
* Bump ZHA dependencies

* Bump universal-silabs-flasher to 0.0.18

* Flip `Server_to_Client` enum in ZHA unit test

* Bump zigpy to 0.62.2
2024-02-06 09:40:29 -05:00
Erik Montnemery 0cb913370f Rename google_assistant.AbstractConfig.get_local_agent_user_id (#109798)
* Rename google_assistant.AbstractConfig get_local_agent_user_id to get_local_user_id

* Fix
2024-02-06 15:40:12 +01:00
J. Nick Koston cf188eabdf Add slots to bluetooth matcher objects (#109768) 2024-02-06 09:40:03 -05:00
Jan-Philipp Benecke 1e5ab3ad47 Bump aioelectricitymaps to 0.3.1 (#109797) 2024-02-06 15:16:15 +01:00
Matthias Alphart 78f21ecc58 Update xknx to 2.12.0 and xknxproject to 3.5.0 (#109787) 2024-02-06 14:30:53 +01:00
Vilppu Vuorinen 198cf28a2a Update MELCloud codeowners (#109793)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-02-06 13:27:50 +01:00
Erik Montnemery 1519df6e55 Improve typing of cloud HTTP API (#109780) 2024-02-06 13:09:14 +01:00
Åke Strandberg 25f065a980 Add myuplink sensor descriptions for current and frequency sensors (#109784)
Add device_descriptions for current and frequency sensors
2024-02-06 12:40:03 +01:00
Marc Mueller 5de76c0be0 Include exception when reraising inside except (#109706) 2024-02-06 12:17:39 +01:00
Steven B 6701806ed2 Use has_capability instead of hasattr for ring history (#109791) 2024-02-06 10:55:03 +01:00
Matrix b8c4821e48 Bump yolink-api to 0.3.7 (#109776) 2024-02-06 10:52:41 +01:00
tronikos d4c235622f Break long strings in Google generative ai conversation (#109771)
* Update test_init.py

* Update __init__.py
2024-02-06 10:50:58 +01:00
Steven B f8862f64a1 Bump ring_doorbell to 0.8.7 (#109783) 2024-02-06 10:10:43 +01:00
Jan Bouwhuis 6ca002a6f4 Improve tests of mqtt device triggers (#108318)
Improve tests on mqtt device triggers
2024-02-06 09:38:15 +01:00
Jan Bouwhuis 00947b708f Remove aux heat support from mqtt climate (#109513) 2024-02-06 09:37:39 +01:00
Jan-Philipp Benecke 29462fc991 Change state class of Tesla wall connector session energy entity (#109778) 2024-02-06 09:34:02 +01:00
Joost Lekkerkerker cc4274bcc0 Fix Radarr health check singularity (#109762)
* Fix Radarr health check singularity

* Fix comment
2024-02-06 07:18:33 +01:00
TheJulianJES 61ce328ce1 Fix docstring length in ZHA sensor class (#109774)
Fix ZHA sensor docstring length
2024-02-06 03:00:45 +01:00
G Johansson 1706156faf Add Process binary sensor in System Monitor (#108585)
* Process binary sensor in System Monitor

* Add repair flow

* add issue

* add platform

* fix repair

* Tests

* Fix tests

* add minor version

* migrate

* Mod repairs

* Fix tests

* config flow test

* Last fixes

* Review comments

* Remove entities during repair

* Remove snapshot
2024-02-06 02:09:05 +01:00
suaveolent 668d036f71 Improve lupusec code quality (#109727)
* renamed async_add_devices

* fixed typo

* patch class instead of __init__

* ensure non blocking get_alarm

* exception handling

* added test case for json decode error

* avoid blockign calls

---------

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2024-02-06 01:20:14 +01:00
TheJulianJES 965f31a9e0 Fix ZHA creating unnecessary "summ received" entity after upgrade (#109268)
* Do not create `current_summ_received` entity until initialized once

* Update zha_devices_list.py to not expect summation received entities

The attribute isn't initialized for these devices in the test (which our check now expects it to be), hence we need to remove them from this list.

* Update sensor tests to have initial state for current_summ_received entity

The attribute needs to be initialized for it to be created which we do by plugging the attribute read.
The test expects the initial state to be "unknown", but hence we plugged the attribute (to create the entity), the state is whatever we plug the attribute read as.

* Update sensor tests to expect not updating current_summ_received entity if it doesn't exist
2024-02-05 19:12:56 -05:00
David F. Mulcahey 13bc018e23 Buffer JsonDecodeError in Flo (#109767) 2024-02-05 18:39:56 -05:00
Erik Montnemery b7284b92ac Clean up Alexa when logging out from cloud (#109738)
* Clean up Alexa when logging out from cloud

* Add test
2024-02-05 23:58:34 +01:00
J. Nick Koston 6fce8a5403 Avoid linear search of the entity registry in ps4 (#109723) 2024-02-05 17:25:12 -05:00
J. Nick Koston 440212ddce Reduce dict lookups in entity registry indices (#109712) 2024-02-05 17:23:53 -05:00
J. Nick Koston f73431ac06 Switch utc_to_timestamp to .timestamp() where possible (#109729)
* Switch utc_to_timestamp to .timestamp()

.timestamp() is faster now in newer cpython

```
from homeassistant.util.dt import utc_to_timestamp, utcnow
import timeit
now = utcnow()
print(timeit.timeit('utc_to_timestamp(now)',globals={"now":now,"utc_to_timestamp":utc_to_timestamp}))
print(timeit.timeit('now.timestamp()',globals={"now":now}))
```

utc_to_timestamp = 0.18721245788037777
timestamp = 0.11421508435159922

* compat

* revert

* revert

* revert

* revert

* revert
2024-02-05 23:04:52 +01:00
Vilppu Vuorinen e399bebbcd Fix compatibility issues with older pymelcloud version (#109757) 2024-02-05 22:30:20 +01:00
G Johansson 4119d20f87 Bump holidays to 0.42 (#109760) 2024-02-05 15:59:02 -05:00
J. Nick Koston 908cedf981 Avoid linear search of entity registry in async_clear_config_entry (#109724) 2024-02-05 14:12:16 -06:00
J. Nick Koston e9a41e5023 Avoid linear search in entity registry to clear an area (#109735) 2024-02-05 13:53:33 -06:00
Jirka d27ca83694 Fix string in xiaomi_ble (#109758)
Update strings.json

Fixed typo:
From
"rotate_right_pressed": "Rotate left (pressed)"
to
"rotate_right_pressed": "Rotate right (pressed)"
2024-02-05 21:50:37 +02:00
Franck Nijhof df88335370 Bump version to 2024.2.0b8 2024-02-05 20:27:40 +01:00
Joost Lekkerkerker 4c6c5ee63d Handle startup error in Analytics insights (#109755) 2024-02-05 20:27:29 +01:00
Vilppu Vuorinen 65476914ed Reduce MELCloud poll frequency to avoid throttling (#109750) 2024-02-05 20:27:26 +01:00
Bouwe Westerdijk d30a2e3611 Fix incorrectly assigning supported features for plugwise climates (#109749) 2024-02-05 20:27:23 +01:00
G Johansson eb510e3630 Add missing new climate feature flags to Mill (#109748) 2024-02-05 20:27:20 +01:00
Michael 532df5b5f1 Use tracked entity friendly name for proximity sensors (#109744)
user tracked entity friendly name
2024-02-05 20:27:17 +01:00
Jan Bouwhuis 1534f99c80 Fix generic camera error when template renders to an invalid URL (#109737) 2024-02-05 20:27:14 +01:00
Cyrill Raccaud a19aa9595a Bump python-bring-api to 3.0.0 (#109720) 2024-02-05 20:27:11 +01:00
Joost Lekkerkerker e3191d098f Add strings to Ruuvitag BLE (#109717) 2024-02-05 20:27:08 +01:00
Bram Kragten cc36071612 Update frontend to 20240205.0 (#109716) 2024-02-05 20:27:04 +01:00
Joakim Sørensen 2d90ee8237 Fix log string in Traccar Server Coordinator (#109709) 2024-02-05 20:27:01 +01:00
Simone Chemelli 16266703df Queue climate calls for Comelit SimpleHome (#109707) 2024-02-05 20:26:58 +01:00
Joost Lekkerkerker dd2cc52119 Set Analytics Insights as diagnostic (#109702)
* Set Analytics Insights as diagnostic

* Set Analytics Insights as diagnostic
2024-02-05 20:26:54 +01:00
Joost Lekkerkerker c48c8c25fa Remove obsolete check from Proximity (#109701) 2024-02-05 20:26:51 +01:00
Joost Lekkerkerker 83a5659d57 Set shorthand attribute in Epion (#109695) 2024-02-05 20:26:48 +01:00
Joost Lekkerkerker 3183cd346d Add data descriptions to analytics insights (#109694) 2024-02-05 20:26:45 +01:00
Marcel van der Veldt 5930c841d7 Bump python matter server to 5.4.1 (#109692) 2024-02-05 20:26:42 +01:00
Myles Eftos f05ba22b5c Show site state in Amberelectric config flow (#104702) 2024-02-05 20:26:38 +01:00
Michael Hansen 5b1e0b2602 Set default for OSTYPE in run-in-env script (#109731) 2024-02-05 20:23:52 +01:00
Erik Montnemery 49a99559c7 Remove lru cache size limit of TemperatureConverter (#109726) 2024-02-05 20:21:04 +01:00
Jan Bouwhuis 94ccd59123 Fix generic camera error when template renders to an invalid URL (#109737) 2024-02-05 20:19:38 +01:00
Michael 45f44e9216 Use tracked entity friendly name for proximity sensors (#109744)
user tracked entity friendly name
2024-02-05 20:18:59 +01:00
Vilppu Vuorinen 189f3dacfb Reduce MELCloud poll frequency to avoid throttling (#109750) 2024-02-05 20:18:01 +01:00
G Johansson 3752e14362 Add missing new climate feature flags to Mill (#109748) 2024-02-05 20:17:13 +01:00
Bouwe Westerdijk 2899c296a8 Fix incorrectly assigning supported features for plugwise climates (#109749) 2024-02-05 20:15:51 +01:00
Joost Lekkerkerker 2318d28127 Handle startup error in Analytics insights (#109755) 2024-02-05 20:14:34 +01:00
Erik Montnemery 9d42455955 Move async_deinitialize to google_assistant AbstractConfig (#109736) 2024-02-05 19:53:22 +01:00
Simone Chemelli 3294506190 Queue climate calls for Comelit SimpleHome (#109707) 2024-02-05 18:52:58 +01:00
Cyrill Raccaud 53d46acc50 Bump python-bring-api to 3.0.0 (#109720) 2024-02-05 18:51:01 +01:00
Marc Mueller ed7307cdaf Use builtin TimeoutError [socket.timeout] (#109704) 2024-02-05 18:46:11 +01:00
Marc Mueller 46f8fb3ac1 Use builtin TimeoutError [misc] (#109703) 2024-02-05 18:45:16 +01:00
Jan Bouwhuis 5dfffb0818 Allow weight to be used as total_increasing state_class for sensors (#108505)
* Allow weight to be used as total_increasing state_class for sensors

* Add SensorStateClass.TOTAL
2024-02-05 18:01:06 +01:00
Pascal Reeb be6399410e Use a single call to add entities in Nuki (#109696)
* Nuki: use a single call to add entities

* Clean up list addition

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-02-05 17:09:18 +01:00
J. Nick Koston 6f28d79651 Copy callbacks instead of slice for event dispatch (#109711)
We established copy is faster in
https://github.com/home-assistant/core/pull/108428#discussion_r1466932262
2024-02-05 17:07:21 +01:00
Joost Lekkerkerker 8df305c881 Remove obsolete check from Proximity (#109701) 2024-02-05 16:32:39 +01:00
Joost Lekkerkerker aaff8a8c62 Add strings to Ruuvitag BLE (#109717) 2024-02-05 16:26:25 +01:00
Bram Kragten 0e9628bba0 Update frontend to 20240205.0 (#109716) 2024-02-05 16:09:33 +01:00
Joost Lekkerkerker 3bcd367b65 Set Analytics Insights as diagnostic (#109702)
* Set Analytics Insights as diagnostic

* Set Analytics Insights as diagnostic
2024-02-05 16:03:14 +01:00
Erik Montnemery ebda0472e9 Bump hass-nabucasa from 0.76.0 to 0.77.0 (#109699) 2024-02-05 15:11:39 +01:00
Joakim Sørensen d49eff651b Fix log string in Traccar Server Coordinator (#109709) 2024-02-05 15:10:32 +01:00
Marc Mueller bf8bd5ff21 Use dict.get instead of inline if (#109693) 2024-02-05 13:56:10 +01:00
Erik Montnemery 30710815f0 Add test of remote enabling of remote UI (#109698) 2024-02-05 13:07:57 +01:00
Joost Lekkerkerker 70ceddf165 Set shorthand attribute in Epion (#109695) 2024-02-05 12:41:25 +01:00
Marcel van der Veldt 682fff73f5 Bump python matter server to 5.4.1 (#109692) 2024-02-05 12:40:40 +01:00
Joost Lekkerkerker 8022d758ea Add data descriptions to analytics insights (#109694) 2024-02-05 12:30:09 +01:00
Erik Montnemery f1d3c417f9 Remove homeassistant_yellow config entry if hassio is not present (#109686) 2024-02-05 12:29:25 +01:00
Erik Montnemery 048d9e75e6 Remove homeassistant_green config entry if hassio is not present (#109685) 2024-02-05 12:26:58 +01:00
J. Nick Koston 40166ed51e Avoid linear search of device registry when no areas are referenced in service calls (#109669) 2024-02-05 12:26:08 +01:00
Erik Montnemery 93e0810938 Remove hardkernel config entry if hassio is not present (#109680) 2024-02-05 12:25:26 +01:00
Erik Montnemery c096ac56db Remove raspberry_pi config entry if hassio is not present (#109687) 2024-02-05 12:23:30 +01:00
Marc Mueller 8b0c9d3d18 Use builtin TimeoutError [t-z] (#109683) 2024-02-05 12:20:36 +01:00
Marc Mueller 438d3b01b9 Use builtin TimeoutError [o-s] (#109682) 2024-02-05 12:14:37 +01:00
Marc Mueller cd0ee98dba Use builtin TimeoutError [core + helpers] (#109684) 2024-02-05 12:09:54 +01:00
Marc Mueller a9147cf3dd Use builtin TimeoutError [k-n] (#109681) 2024-02-05 12:08:18 +01:00
Marc Mueller 7a89e58873 Use builtin TimeoutError [e-i] (#109679) 2024-02-05 12:00:37 +01:00
Marc Mueller c82933175d Use builtin TimeoutError [a-d] (#109678) 2024-02-05 11:31:33 +01:00
Myles Eftos 41a256a3ff Show site state in Amberelectric config flow (#104702) 2024-02-05 10:53:42 +01:00
spycle bfebde0f79 Bump pyMicrobot to 0.0.10 (#109628) 2024-02-05 10:34:14 +01:00
Franck Nijhof ecc6cc280a Bump version to 2024.2.0b7 2024-02-05 09:41:55 +01:00
David F. Mulcahey f50afd6004 Buffer TImeoutError in Flo (#109675) 2024-02-05 09:41:45 +01:00
Michael 44ecaa740b Add missing translation string to Home Assistant Analytics Insights (#109666)
add missing string
2024-02-05 09:41:42 +01:00
Michael 91b1a8e962 Add icon translation to proximity (#109664)
add icon translations
2024-02-05 09:41:39 +01:00
Malte Franken 74f1b18b73 Bump georss-generic-client to 0.8 (#109658) 2024-02-05 09:41:36 +01:00
Michael 8ab1c044bd Add zone related sensors in proximity (#109630)
* move legacy needed convertions into legacy entity

* add zone related sensors

* fix test coverage

* fix typing

* fix entity name translations

* rename placeholder to tracked_entity
2024-02-05 09:41:33 +01:00
Leah Oswald 66d8856033 Fix home connect remaining progress time (#109525)
* fix remaining progress time for home connect component

The home connect API is sending some default values (on dishwashers) for
the remaining progress time after the program finished. This is a problem
because this value is stored and on every API event, for example opening
the door of a dishwasher, the value for remaining progress time is
updated with this wrong value. So I see a wrong value the whole time the
dishwasher is not running and therefore has no remaining progress time.
This coming fixes this problem and adds a check if the appliance is in
running, pause or finished state, because there we have valid data. In
the other states the new code just returns none like on other edge
cases. Now there is no value if there is no program running.

* fix some formating according to the ruff rules

* fix some formating according to the ruff rules again

* fix alphabetic order of imports

* add check if keys exist in dict before accessing them

check if BSH_OPERATION_STATE and ATTR_VALUE key values exist before
accessing them later in the elif statement

* fix formating because forgotten local ruff run
2024-02-05 09:41:30 +01:00
Kevin Worrel 5c1e4379a9 Screenlogic service refactor (#109041) 2024-02-05 09:41:27 +01:00
ollo69 bca9826e18 Don't create AsusWRT loadavg sensors when unavailable (#106790) 2024-02-05 09:41:23 +01:00
Kevin Worrel 0bfef71f1b Screenlogic service refactor (#109041) 2024-02-05 09:05:28 +01:00
ollo69 b56dd3f808 Don't create AsusWRT loadavg sensors when unavailable (#106790) 2024-02-05 09:03:43 +01:00
J. Nick Koston 458e1f3a5e Index area_ids in the entity registry (#109660) 2024-02-05 09:01:43 +01:00
Jan Bouwhuis 7ab1cdc2b3 Move nested code to class level as static method in imap coordinator (#109665)
* Move _decode_payload to module level in imap coordinator

* Make static method
2024-02-05 08:59:03 +01:00
David F. Mulcahey c9fd97c6a3 Buffer TImeoutError in Flo (#109675) 2024-02-05 08:58:08 +01:00
dependabot[bot] 0a8e4b5958 Bump github/codeql-action from 3.23.2 to 3.24.0 (#109677)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-05 08:55:39 +01:00
J. Nick Koston 57f4f061a6 Use identity check in hassio websocket ingress (#109672) 2024-02-05 08:55:19 +01:00
jjlawren a5bd0292da Bump plexapi to 4.15.9 (#109676) 2024-02-05 08:52:37 +01:00
Michael c34f5dd0b9 Add icon translation to proximity (#109664)
add icon translations
2024-02-05 01:36:11 +01:00
Michael 31ad48b2b7 Add missing translation string to Home Assistant Analytics Insights (#109666)
add missing string
2024-02-05 01:27:42 +01:00
Michael ffe9f0825a Add zone related sensors in proximity (#109630)
* move legacy needed convertions into legacy entity

* add zone related sensors

* fix test coverage

* fix typing

* fix entity name translations

* rename placeholder to tracked_entity
2024-02-05 00:42:07 +01:00
Ernst Klamer a95a51da05 Add Xiaomi-ble remotes and dimmers (#109327) 2024-02-05 00:30:47 +01:00
Malte Franken 3def42726a Bump georss-generic-client to 0.8 (#109658) 2024-02-05 00:27:49 +01:00
Tucker Kern 3abc48b7c1 Add icons for fan preset modes (#109334)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-02-04 23:58:44 +01:00
Leah Oswald 02fb60b33e Fix home connect remaining progress time (#109525)
* fix remaining progress time for home connect component

The home connect API is sending some default values (on dishwashers) for
the remaining progress time after the program finished. This is a problem
because this value is stored and on every API event, for example opening
the door of a dishwasher, the value for remaining progress time is
updated with this wrong value. So I see a wrong value the whole time the
dishwasher is not running and therefore has no remaining progress time.
This coming fixes this problem and adds a check if the appliance is in
running, pause or finished state, because there we have valid data. In
the other states the new code just returns none like on other edge
cases. Now there is no value if there is no program running.

* fix some formating according to the ruff rules

* fix some formating according to the ruff rules again

* fix alphabetic order of imports

* add check if keys exist in dict before accessing them

check if BSH_OPERATION_STATE and ATTR_VALUE key values exist before
accessing them later in the elif statement

* fix formating because forgotten local ruff run
2024-02-04 23:56:12 +01:00
J. Nick Koston 73589015c3 Improve scalability of DHCP matchers (#109406) 2024-02-04 16:50:08 -06:00
Franck Nijhof 3a067d445d Bump version to 2024.2.0b6 2024-02-04 23:25:49 +01:00
Franck Nijhof 4d7c96205d Fix Tuya reauth_successful translation string (#109659) 2024-02-04 23:25:41 +01:00
Jan-Philipp Benecke 3934524d4a Add icon translations to Utility meter helper (#109656) 2024-02-04 23:25:37 +01:00
Franck Nijhof 5747f8ce9d Improve Tuya token/reauth handling (#109653) 2024-02-04 23:25:34 +01:00
Joost Lekkerkerker 02ebf1d7f8 Add icon translations to Random (#109652) 2024-02-04 23:25:31 +01:00
Joost Lekkerkerker d789e83879 Add icon translations to Counter (#109651) 2024-02-04 23:25:28 +01:00
Joost Lekkerkerker ce29b4a7e3 Add icon translations to derivative (#109650) 2024-02-04 23:25:25 +01:00
Joost Lekkerkerker e2695ba88f Allow the helper integrations to omit icon translation field (#109648) 2024-02-04 23:25:22 +01:00
G Johansson 7ca83a7648 Add debug logger for cpu temp in System Monitor (#109627) 2024-02-04 23:25:19 +01:00
G Johansson c0efec4a84 Fix repairs for remove dates in Workday (#109626) 2024-02-04 23:25:16 +01:00
Franck Nijhof f766fbfb98 Fix Tuya QR code expiry, use native QR selector (#109615)
* Fix Tuya QR code expiry, use native QR selector

* Adjust tests
2024-02-04 23:25:14 +01:00
Franck Nijhof bd78c44ac5 Update orjson to 3.9.13 (#109614) 2024-02-04 23:25:11 +01:00
Jan Bouwhuis fd2469e2a7 Fix imap message part decoding (#109523) 2024-02-04 23:25:08 +01:00
Cody C a7010e3e80 Handle GeoJSON int to str conversion when the name is an int (#108937)
Co-authored-by: Chris Roberts <NasaGeek@users.noreply.github.com>
2024-02-04 23:25:04 +01:00
Joost Lekkerkerker 52d27230bc Add icon translations to Random (#109652) 2024-02-04 23:23:10 +01:00
Jan-Philipp Benecke f18448950c Add icon translations to Utility meter helper (#109656) 2024-02-04 23:21:57 +01:00
Franck Nijhof 945aff6050 Fix Tuya reauth_successful translation string (#109659) 2024-02-04 23:21:18 +01:00
Joost Lekkerkerker 0b3ed92a6e Add icon translations to derivative (#109650) 2024-02-04 23:20:46 +01:00
Joost Lekkerkerker c3690e74c5 Add icon translations to Counter (#109651) 2024-02-04 23:20:14 +01:00
J. Nick Koston 9fef1938b4 Make get_entries_for_device_id skip disabled devices by default (#109645) 2024-02-04 23:11:56 +01:00
Joost Lekkerkerker 2c0b897658 Allow the helper integrations to omit icon translation field (#109648) 2024-02-04 22:57:11 +01:00
Franck Nijhof 10d3b10da4 Improve Tuya token/reauth handling (#109653) 2024-02-04 22:56:22 +01:00
spycle 63ec20ab5d Fix keymitt_ble config-flow (#109644)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-04 22:50:28 +01:00
Aaron Bach edc6e3e2f9 Bump aionotion to 2024.02.0 (#109577) 2024-02-04 14:35:08 -07:00
Cody C 770119c8ad Handle GeoJSON int to str conversion when the name is an int (#108937)
Co-authored-by: Chris Roberts <NasaGeek@users.noreply.github.com>
2024-02-04 21:26:05 +01:00
Jan Bouwhuis 7cc0b8a2fe Fix imap message part decoding (#109523) 2024-02-04 21:25:14 +01:00
J. Nick Koston f37db94f23 Avoid linear search of entity registry in async_get_device_automations (#109633) 2024-02-04 14:22:12 -06:00
J. Nick Koston 6003ae149a Avoid linear search of entity registry in ruckus_unleashed (#109643) 2024-02-04 15:20:55 -05:00
J. Nick Koston 74812261d4 Avoid linear search of entity registry in rainmachine (#109642) 2024-02-04 21:17:40 +01:00
J. Nick Koston 113d38361d Avoid linear search of entity registry in nmap_tracker (#109640) 2024-02-04 15:16:31 -05:00
G Johansson bc45b31335 Fix repairs for remove dates in Workday (#109626) 2024-02-04 21:15:17 +01:00
J. Nick Koston babfdaac54 Avoid linear search of entity registry in mikrotik (#109639) 2024-02-04 21:13:23 +01:00
J. Nick Koston 3531444e2e Avoid linear search of entity registry in huawei_lte (#109637) 2024-02-04 21:13:06 +01:00
J. Nick Koston 13a5038c17 Avoid linear search of entity registry in lcn (#109638) 2024-02-04 21:12:43 +01:00
J. Nick Koston 6ccf82d7b1 Avoid linear search of entity registry in keenetic_ndms2 (#109635) 2024-02-04 21:12:24 +01:00
J. Nick Koston c988d3d427 Avoid linear search of entity registry in guardian (#109634) 2024-02-04 21:11:56 +01:00
J. Nick Koston b24b4fc237 Use get_entries_for_config_entry_id helper in async_migrate_entries (#109629) 2024-02-04 21:05:48 +01:00
J. Nick Koston 7e3001f843 Remove default values from calls to async_fire (#109613)
There were a few places were we passing unnecessary default values. Since
this code tends to get copied, remove them
2024-02-04 14:49:42 -05:00
J. Nick Koston a7c074e388 Reduce complexity of shelly button setup (#109625) 2024-02-04 13:38:36 -06:00
G Johansson 7572a73c16 Add debug logger for cpu temp in System Monitor (#109627) 2024-02-04 20:11:28 +01:00
Franck Nijhof b553bb71e6 Fix Tuya QR code expiry, use native QR selector (#109615)
* Fix Tuya QR code expiry, use native QR selector

* Adjust tests
2024-02-04 18:58:09 +01:00
Joakim Sørensen e96f574a79 Add diagnostics platform to Traccar Server (#109521) 2024-02-04 18:40:44 +01:00
Franck Nijhof c14ad6455f Update orjson to 3.9.13 (#109614) 2024-02-04 11:37:16 -06:00
J. Nick Koston 8d4f32645d Add tests for shelly switch unique ids (#109617) 2024-02-04 11:23:33 -06:00
J. Nick Koston e35c7fde89 Avoid many string lowers in the state machine (#109607) 2024-02-04 17:35:35 +01:00
Cody C 2c91b31233 Remove default name prefix of HomePods from Suggested Area in Apple TV integration (#109489) 2024-02-04 17:22:22 +01:00
David F. Mulcahey 8a9478b714 Update Flo test to address review comment (#109604)
* Update Flo test to address review comment

* update comment

* clean up

* cleanup

* change mock

* remove unnecessary assert

* review comment
2024-02-04 17:05:51 +01:00
Franck Nijhof d379a9aaae Bump version to 2024.2.0b5 2024-02-04 15:59:46 +01:00
Michael 2dc630a4af Redact location names in proximity diagnostics (#109600) 2024-02-04 15:59:34 +01:00
Josef Zweck ba0c065750 Bugfix lamarzocco issue (#109596) 2024-02-04 15:59:31 +01:00
tronikos 4fca06256b Fix Google generative AI service example (#109594)
Update strings.json
2024-02-04 15:59:28 +01:00
J. Nick Koston 0a25788822 Bump yalexs-ble to 2.4.1 (#109585)
changelog: https://github.com/bdraco/yalexs-ble/compare/v2.4.0...v2.4.1
2024-02-04 15:59:25 +01:00
G Johansson 94e1eaa15d Fix overkiz climate feature flags for valve heating (#109582)
* Fix overkiz climate feature flags for valve heating

* Update homeassistant/components/overkiz/climate_entities/valve_heating_temperature_interface.py
2024-02-04 15:59:22 +01:00
G Johansson dfc26e4509 Fix group sensor uom's in not convertable device classes (#109580) 2024-02-04 15:59:20 +01:00
Matrix b14add5914 Fix yolink abnormal status when LeakSensor detection mode changes to "no water detect" (#109575)
Add no water detect support
2024-02-04 15:59:17 +01:00
G Johansson 7be6aa455e Add back logging for core for feature flags in climate (#109572) 2024-02-04 15:59:14 +01:00
G Johansson 40636f2273 Add new climate feature flags to lyric (#109571) 2024-02-04 15:59:11 +01:00
G Johansson f91f98e309 Add new climate feature flags to lookin (#109570) 2024-02-04 15:59:08 +01:00
G Johansson 838b1338b8 Add migrated climate feature flags to livisi (#109569) 2024-02-04 15:59:05 +01:00
G Johansson d3aa7375f0 Add new climate feature flags to lightwave (#109568) 2024-02-04 15:59:02 +01:00
G Johansson 514ce59a8f Add new climate feature flags to lcn (#109566) 2024-02-04 15:58:59 +01:00
G Johansson 25063821e1 Add new climate feature flags to izone (#109565) 2024-02-04 15:58:56 +01:00
G Johansson b3c257fb79 Add new climate feature flags to isy994 (#109564) 2024-02-04 15:58:53 +01:00
G Johansson cb02c2e6d0 Fix new climate feature flags in intesishome (#109563) 2024-02-04 15:58:50 +01:00
G Johansson 1000fae905 Add new climate feature flags to intellifire (#109562) 2024-02-04 15:58:47 +01:00
G Johansson 30b9a28502 Add new climate feature flags to insteon (#109560) 2024-02-04 15:58:44 +01:00
G Johansson 42bf086c97 Add migrated climate feature flags to incomfort (#109559) 2024-02-04 15:58:41 +01:00
G Johansson 064f412da4 Add new climate feature flags to iaqualink (#109558) 2024-02-04 15:58:38 +01:00
G Johansson 122652b396 Add new climate feature flags to huum (#109557)
Adds new climate feature flags to huum
2024-02-04 15:58:36 +01:00
G Johansson 32b25c7e53 Add new climate feature flags to honeywell (#109556)
Adds new climate feature flags to honeywell
2024-02-04 15:58:33 +01:00
G Johansson 83c487a319 Add migrated climate feature flags to homematicip_cloud (#109555)
Adds migrated climate feature flags to homematicip_cloud
2024-02-04 15:58:30 +01:00
G Johansson 75c0c7bda0 Add new climate feature flags to homematic (#109554)
Adds new climate feature flags to homematic
2024-02-04 15:58:27 +01:00
G Johansson 4d7abbf8c5 Add new climate feature flags to hive (#109553)
Adds new climate feature flags to hive
2024-02-04 15:58:24 +01:00
G Johansson bf4bc9d935 Add new climate feature flags to hisense (#109552)
Adds new climate feature flags to hisense
2024-02-04 15:58:21 +01:00
G Johansson e1699b4d65 Add new climate feature flags to heatmiser (#109551)
Adds new climate feature flags to heatmiser
2024-02-04 15:58:18 +01:00
G Johansson 67362db547 Add new climate feature flags to gree (#109550)
Adds new climate feature flags to gree
2024-02-04 15:58:15 +01:00
G Johansson dafdcd369c Add new climate feature flags to geniushub (#109549)
Adds new climate feature flags to geniushub
2024-02-04 15:58:12 +01:00
G Johansson 384070c158 Add new climate feature flags to generic_thermostat (#109548)
Adds new climate feature flags to generic_thermostat
2024-02-04 15:58:09 +01:00
G Johansson 46016004fa Add migrated climate feature flags to fritzbox (#109547)
Adds migrated climate feature flags to fritzbox
2024-02-04 15:58:07 +01:00
G Johansson 38fcc88c57 Add new climate feature flags to freedompro (#109546)
Adds new climate feature flags to freedompro
2024-02-04 15:58:04 +01:00
G Johansson 9cde864224 Add new climate feature flags to escea (#109545)
Adds new climate feature flags to escea
2024-02-04 15:58:01 +01:00
G Johansson 439f1766a0 Add new climate feature flags to ephember (#109544)
Adds new climate feature flags to ephember
2024-02-04 15:57:58 +01:00
G Johansson 12e32fb799 Adds new climate feature flags to elkm1 (#109543) 2024-02-04 15:57:55 +01:00
G Johansson 14ad2e91f3 Add new climate feature flags to electrasmart (#109542)
Adds new climate feature flags to electrasmart
2024-02-04 15:57:52 +01:00
G Johansson 8c0cd6bbab Add new climate feature flags to econet (#109541)
Adds new climate feature flags to econet
2024-02-04 15:57:49 +01:00
G Johansson c02e96c5c0 Add new climate feature flags to ecobee (#109540)
Adds new climate feature flags to ecobee
2024-02-04 15:57:46 +01:00
G Johansson 3a08e3bec6 Add new climate feature flags to duotecno (#109539)
Adds new climate feature flags to duotecno
2024-02-04 15:57:43 +01:00
G Johansson a62c05b983 Add migrated climate feature flags to devolo home control (#109538)
Adds migrated climate feature flags to devolo home control
2024-02-04 15:57:40 +01:00
G Johansson 79846d5668 Add migrated climate feature flags to daikin (#109537)
Adds migrated climate feature flags to daikin
2024-02-04 15:57:38 +01:00
G Johansson 482032cb87 Add migrated climate feature flags to coolmaster (#109536)
Adds migrated climate feature flags to coolmaster
2024-02-04 15:57:35 +01:00
G Johansson 9ebf985010 Add new climate feature flags to comelit (#109535)
Adds new climate feature flags to comelit
2024-02-04 15:57:32 +01:00
G Johansson f16c0bd559 Add new climate feature flags to ccm15 (#109534)
Adds new climate feature flags to ccm15
2024-02-04 15:57:29 +01:00
Cody C 1df5ad23ef Fix empty error modal when adding duplicate Thread integration (#109530) 2024-02-04 15:57:26 +01:00
David F. Mulcahey d99ba75ed8 Prevent Flo devices and entities from going unavailable when a single refresh fails (#109522)
* Prevent Flo devices and entities from going unavailable when a single refresh fails

* review comment
2024-02-04 15:57:23 +01:00
TheJulianJES ceeef1eacc Move climate feature flags to child classes for airzone_cloud (#109515) 2024-02-04 15:57:20 +01:00
Klaas Schoute 856780ed30 Bump easyenergy lib to v2.1.1 (#109510) 2024-02-04 15:57:17 +01:00
Joakim Plate 500b0a9b52 Correct flow rate conversion review after merge (#109501) 2024-02-04 15:57:14 +01:00
G Johansson 855edba3a2 Add new climate feature flags for plugwise (#109464) 2024-02-04 15:57:11 +01:00
G Johansson e7203d6015 Add new climate feature flags to switcher_kis (#109459) 2024-02-04 15:57:08 +01:00
G Johansson 97446a5af3 Add migrated climate feature flag to switchbee (#109458) 2024-02-04 15:57:05 +01:00
G Johansson ac2e05b5c0 Add climate feature flags to spider (#109456) 2024-02-04 15:57:02 +01:00
G Johansson af07ac120e Add new climate feature flags to tuya (#109434) 2024-02-04 15:57:00 +01:00
G Johansson f2de666c54 Add new climate feature flags to esphome (#109428) 2024-02-04 15:56:57 +01:00
G Johansson 38288dd68e Add new climate feature flags for airtouch5 (#109422)
* Add new climate feature flags for airtouch5

* adapt
2024-02-04 15:56:54 +01:00
G Johansson 3e2f97d105 Add ClimateEntityFeatures to airtouch4 (#109421)
* Add ClimateEntityFeatures to airtouch4

* adapt
2024-02-04 15:56:51 +01:00
Michael 5f014f42ac Avoid duplicate entity names in proximity (#109413)
* avoid duplicate config entry title

* consecutive range 2..10

* use existing logic
2024-02-04 15:56:48 +01:00
Josef Zweck 4b2adab24d Revert "Add webhook support to tedee integration (#106846)" (#109408) 2024-02-04 15:56:45 +01:00
J. Nick Koston 3db0331378 Avoid converting to same units when compiling stats (#109531) 2024-02-04 15:21:05 +01:00
Klaas Schoute 9de9852c94 Add SamSam virtual integration (#109602) 2024-02-04 15:18:24 +01:00
Klaas Schoute 7042ae0596 Add ZonderGas virtual integration (#109601) 2024-02-04 15:16:25 +01:00
J. Nick Koston 2f724b042b Avoid looking up services to check if they support responses (#109588)
We already have the Service object as its the value in the
services_map so there is not need to look it up again
2024-02-04 15:15:51 +01:00
G Johansson e877113b21 Add back logging for core for feature flags in climate (#109572) 2024-02-04 15:15:00 +01:00
J. Nick Koston a74516a80d Cache path for Store helper (#109587) 2024-02-04 15:13:58 +01:00
Michael ac8a4f4b05 Redact location names in proximity diagnostics (#109600) 2024-02-04 15:12:08 +01:00
G Johansson 8ef2bece59 Add new climate feature flags to lyric (#109571) 2024-02-04 15:03:48 +01:00
G Johansson 846dae675c Add new climate feature flags to lcn (#109566) 2024-02-04 15:03:14 +01:00
G Johansson 2950c402d7 Fix new climate feature flags in intesishome (#109563) 2024-02-04 15:02:52 +01:00
Josef Zweck ae70729932 Revert "Add webhook support to tedee integration (#106846)" (#109408) 2024-02-04 15:02:21 +01:00
Joakim Plate eefc6cd50a Correct flow rate conversion review after merge (#109501) 2024-02-04 15:01:06 +01:00
G Johansson e109ed53eb Add new climate feature flags to switcher_kis (#109459) 2024-02-04 15:00:31 +01:00
G Johansson c732668d6e Add migrated climate feature flag to switchbee (#109458) 2024-02-04 14:59:34 +01:00
G Johansson 9831da34ce Add new climate feature flags to esphome (#109428) 2024-02-04 14:57:26 +01:00
G Johansson baa511b808 Fix group sensor uom's in not convertable device classes (#109580) 2024-02-04 14:56:23 +01:00
Michael 17f1aa644b Avoid duplicate entity names in proximity (#109413)
* avoid duplicate config entry title

* consecutive range 2..10

* use existing logic
2024-02-04 13:26:51 +01:00
G Johansson 6e5a085413 Add new climate feature flags to tuya (#109434) 2024-02-04 11:40:37 +01:00
G Johansson 37f3fcbdaf Add climate feature flags to spider (#109456) 2024-02-04 11:39:04 +01:00
G Johansson 89d77ee8ab Add new climate feature flags for plugwise (#109464) 2024-02-04 11:37:52 +01:00
J. Nick Koston 7d9935d24b Reduce overhead to convert history to float states (#109526) 2024-02-04 11:37:14 +01:00
TheJulianJES 9fbf00bdd3 Move climate feature flags to child classes for airzone_cloud (#109515) 2024-02-04 11:30:30 +01:00
Josef Zweck 6c41540ad8 Bugfix lamarzocco issue (#109596) 2024-02-04 11:29:32 +01:00
G Johansson 83380c0f7d Add new climate feature flags to insteon (#109560) 2024-02-04 10:42:32 +01:00
G Johansson 6e38da15f0 Add migrated climate feature flags to incomfort (#109559) 2024-02-04 10:41:53 +01:00
G Johansson 0b3f4f1720 Add new climate feature flags to honeywell (#109556)
Adds new climate feature flags to honeywell
2024-02-04 10:41:07 +01:00
G Johansson 552b14c5e8 Add new climate feature flags to homematic (#109554)
Adds new climate feature flags to homematic
2024-02-04 10:40:02 +01:00
G Johansson b655507738 Add new climate feature flags to generic_thermostat (#109548)
Adds new climate feature flags to generic_thermostat
2024-02-04 10:38:09 +01:00
G Johansson 6b6d0606ac Add new climate feature flags to electrasmart (#109542)
Adds new climate feature flags to electrasmart
2024-02-04 10:31:23 +01:00
G Johansson f154b7f2d9 Add new climate feature flags to econet (#109541)
Adds new climate feature flags to econet
2024-02-04 10:30:09 +01:00
G Johansson 7730efdaa2 Add new climate feature flags to ecobee (#109540)
Adds new climate feature flags to ecobee
2024-02-04 10:28:49 +01:00
G Johansson d7c6e85cc4 Add new climate feature flags to comelit (#109535)
Adds new climate feature flags to comelit
2024-02-04 10:28:10 +01:00
Cody C 153c82c2d2 Fix empty error modal when adding duplicate Thread integration (#109530) 2024-02-04 10:25:31 +01:00
J. Nick Koston 0a248d0f87 Bump yalexs-ble to 2.4.1 (#109585)
changelog: https://github.com/bdraco/yalexs-ble/compare/v2.4.0...v2.4.1
2024-02-04 10:17:13 +01:00
tronikos ac20d49c8f Fix Google generative AI service example (#109594)
Update strings.json
2024-02-04 10:13:35 +01:00
Matrix 630c8b28ca Fix yolink abnormal status when LeakSensor detection mode changes to "no water detect" (#109575)
Add no water detect support
2024-02-04 08:27:57 +01:00
G Johansson f6d2f6117a Fix overkiz climate feature flags for valve heating (#109582)
* Fix overkiz climate feature flags for valve heating

* Update homeassistant/components/overkiz/climate_entities/valve_heating_temperature_interface.py
2024-02-04 03:52:33 +01:00
G Johansson 5041ee3c28 Add new climate feature flags to ephember (#109544)
Adds new climate feature flags to ephember
2024-02-04 03:29:29 +01:00
G Johansson 5f8248dc77 Add migrated climate feature flags to fritzbox (#109547)
Adds migrated climate feature flags to fritzbox
2024-02-04 02:32:35 +01:00
G Johansson 810e5f9f67 Add migrated climate feature flags to livisi (#109569) 2024-02-04 02:31:05 +01:00
G Johansson a2d574355b Add new climate feature flags to izone (#109565) 2024-02-04 02:30:55 +01:00
G Johansson 470aef7483 Add new climate feature flags to lightwave (#109568) 2024-02-04 02:30:08 +01:00
G Johansson c94eb436fb Add new climate feature flags to heatmiser (#109551)
Adds new climate feature flags to heatmiser
2024-02-04 02:29:56 +01:00
G Johansson 24be51b223 Add new climate feature flags to iaqualink (#109558) 2024-02-04 02:29:40 +01:00
G Johansson b376f93fe6 Add migrated climate feature flags to homematicip_cloud (#109555)
Adds migrated climate feature flags to homematicip_cloud
2024-02-04 02:28:45 +01:00
G Johansson cfeafb410c Add new climate feature flags to huum (#109557)
Adds new climate feature flags to huum
2024-02-04 02:28:33 +01:00
G Johansson 97db23fe82 Add new climate feature flags to intellifire (#109562) 2024-02-04 02:28:15 +01:00
G Johansson a173655050 Add new climate feature flags to hive (#109553)
Adds new climate feature flags to hive
2024-02-04 02:27:42 +01:00
G Johansson b5055df374 Add new climate feature flags to hisense (#109552)
Adds new climate feature flags to hisense
2024-02-04 02:27:30 +01:00
G Johansson 5f02d17873 Add new climate feature flags to duotecno (#109539)
Adds new climate feature flags to duotecno
2024-02-04 02:27:04 +01:00
G Johansson f5ca82923d Add migrated climate feature flags to devolo home control (#109538)
Adds migrated climate feature flags to devolo home control
2024-02-04 02:26:53 +01:00
G Johansson 45d8581bf1 Add new climate feature flags to gree (#109550)
Adds new climate feature flags to gree
2024-02-04 02:26:44 +01:00
G Johansson 3429a4733d Add new climate feature flags to escea (#109545)
Adds new climate feature flags to escea
2024-02-04 02:24:28 +01:00
G Johansson 39bd9cf6a2 Add new climate feature flags to freedompro (#109546)
Adds new climate feature flags to freedompro
2024-02-04 02:24:18 +01:00
G Johansson 760cbaa939 Add new climate feature flags to geniushub (#109549)
Adds new climate feature flags to geniushub
2024-02-04 02:23:59 +01:00
G Johansson ec6122abd5 Add migrated climate feature flags to daikin (#109537)
Adds migrated climate feature flags to daikin
2024-02-04 02:23:23 +01:00
G Johansson 6661b53530 Add new climate feature flags for airtouch5 (#109422)
* Add new climate feature flags for airtouch5

* adapt
2024-02-04 02:23:06 +01:00
G Johansson e649fe9380 Add migrated climate feature flags to coolmaster (#109536)
Adds migrated climate feature flags to coolmaster
2024-02-04 02:22:43 +01:00
G Johansson b49193caf7 Add new climate feature flags to lookin (#109570) 2024-02-03 19:11:02 -06:00
G Johansson dd587d6fe5 Add new climate feature flags to isy994 (#109564) 2024-02-03 19:10:34 -06:00
G Johansson ebf533f0ff Add new climate feature flags to ccm15 (#109534)
Adds new climate feature flags to ccm15
2024-02-04 01:18:25 +01:00
G Johansson 96f0fc9ae5 Add ClimateEntityFeatures to airtouch4 (#109421)
* Add ClimateEntityFeatures to airtouch4

* adapt
2024-02-04 00:47:05 +01:00
G Johansson a7b52c8dd7 Adds new climate feature flags to elkm1 (#109543) 2024-02-04 00:46:47 +01:00
David F. Mulcahey 63da42f394 Prevent Flo devices and entities from going unavailable when a single refresh fails (#109522)
* Prevent Flo devices and entities from going unavailable when a single refresh fails

* review comment
2024-02-03 18:30:00 -05:00
Brett Adams da29b4ef16 Add Speed Limit to Tessie lock platform (#106527)
* Add speed limit

* Make regex more readable

* Add tests

* Add test

* Ruff

* Remove extra line

* Update snapshot

* Remove bad snapshot
2024-02-03 22:21:19 +01:00
Klaas Schoute 7e299c2142 Bump easyenergy lib to v2.1.1 (#109510) 2024-02-03 20:20:17 +01:00
J. Nick Koston 1c268b1724 Bump mopeka-iot-ble to 0.7.0 (#109516) 2024-02-03 12:11:40 -06:00
Aidas Klimas 978d2a79f6 Bump qingping_ble to 0.10.0 - Add support for GCP22C (Qingping CO2 Temp RH) (#108567)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-02-03 11:23:19 -06:00
Matthias Alphart ad0ee7d781 Update pyfronius to 0.7.3 (#109507) 2024-02-03 17:34:50 +02:00
Franck Nijhof ef6fed5067 Bump version to 2024.2.0b4 2024-02-03 14:42:00 +01:00
Jan-Philipp Benecke 0a627aed6d Fix Tankerkoenig diagnostics file to use right format (#109494)
Fix tankerkoenig diagnostics file
2024-02-03 14:40:26 +01:00
Joakim Sørensen cb03a6e29b Change IoT class for Traccar Client (#109493) 2024-02-03 14:40:23 +01:00
Joakim Sørensen e630027455 Extend the history of Elvia history to 3 years (#109490)
Extend the history of Elvia data to 3 years
2024-02-03 14:40:21 +01:00
G Johansson 280d7ef4ec Add new climate feature flags to deconz (#109482) 2024-02-03 14:40:18 +01:00
G Johansson 93b7ffa807 Add new climate feature flags to demo (#109481) 2024-02-03 14:40:15 +01:00
G Johansson cc8e9ac141 Adds new climate feature flags to bsblan (#109480) 2024-02-03 14:40:12 +01:00
G Johansson 2724b115da Adds new climate feature flags to broadlink (#109479) 2024-02-03 14:40:09 +01:00
G Johansson 150fb151fa Add new climate feature flags to blebox (#109478) 2024-02-03 14:40:06 +01:00
G Johansson 4b8cb35ba0 Adds migrated climate feature flags in balboa (#109477) 2024-02-03 14:40:03 +01:00
G Johansson 5cce878b85 Adds new climate feature flags in baf (#109476) 2024-02-03 14:40:00 +01:00
G Johansson 92ebc5b436 Adds new climate feature flags to ambiclimate (#109475) 2024-02-03 14:39:57 +01:00
G Johansson 463320c8ee Adds migrated climate feature flags in nuheat (#109474) 2024-02-03 14:39:54 +01:00
G Johansson 3bf5fa9302 Adds migrated climate feature flags to nobo_hub (#109473) 2024-02-03 14:39:51 +01:00
G Johansson 650ab70444 Add migrated climate feature flags to nexia (#109472) 2024-02-03 14:39:48 +01:00
G Johansson bb8a74a3f4 Add new climate feature flags to mysensors (#109471)
Adds new climate feature flags to mysensors
2024-02-03 14:39:45 +01:00
G Johansson 49445c46a0 Add migrated climate feature flags to moehlenhoff (#109470) 2024-02-03 14:39:42 +01:00
G Johansson 490101fa92 Adds new climate feature flags to melissa (#109469) 2024-02-03 14:39:39 +01:00
G Johansson 2ac4bb8e9f Add new feature flags to melcloud (#109468) 2024-02-03 14:39:36 +01:00
G Johansson 1c0a6970e2 Adds new climate feature flags to maxcube (#109467) 2024-02-03 14:39:33 +01:00
G Johansson f3f69a8107 Add new climate feature flags to radiotherm (#109466) 2024-02-03 14:39:30 +01:00
G Johansson a77bcccbbb Adds migrated climate feature flags for proliphix (#109465) 2024-02-03 14:39:28 +01:00
G Johansson e98da8596a Add migrated climate feature flags to overkiz (#109463) 2024-02-03 14:39:25 +01:00
G Johansson 5843c93371 Add migrated climate feature flags to opentherm_gw (#109462) 2024-02-03 14:39:22 +01:00
G Johansson 5991b06574 Add new climate feature flags to oem (#109461) 2024-02-03 14:39:19 +01:00
G Johansson fecdfbfb9f Add new climate feature flags to stiebel_eltron (#109457) 2024-02-03 14:39:16 +01:00
G Johansson 8cfe3821da Add migrated climate feature flags to senz (#109455) 2024-02-03 14:39:13 +01:00
G Johansson cba67d1525 Add new climate feature flags to screenlogic (#109454) 2024-02-03 14:39:10 +01:00
G Johansson 39df394414 Add migrated climate feature flags to schluter (#109452) 2024-02-03 14:39:07 +01:00
G Johansson db91a40b55 Add migrated climate feature flags to touchline (#109451) 2024-02-03 14:39:04 +01:00
G Johansson 3181358484 Add migrated climate feature flags to toon (#109450) 2024-02-03 14:39:01 +01:00
G Johansson 776e2da4e6 Add migrated climate feature flags to tolo (#109449) 2024-02-03 14:38:58 +01:00
G Johansson 72ffdf4f4b Add new climate feature flags to tfiac (#109448) 2024-02-03 14:38:55 +01:00
G Johansson 36bba95fd0 Add migrated climate feature flags for tessie (#109447) 2024-02-03 14:38:52 +01:00
G Johansson 13fc69d8a8 Add migrated climate feature flags to teslemetry (#109446) 2024-02-03 14:38:49 +01:00
G Johansson 94464f220c Add migrated climate feature flags to zwave_me (#109445) 2024-02-03 14:38:46 +01:00
G Johansson 13decb9b10 Add new climate feature flags to zhong_hong (#109444) 2024-02-03 14:38:44 +01:00
G Johansson b6226acd2b Add migrated climate feature flags to zha (#109443) 2024-02-03 14:38:41 +01:00
G Johansson d04282a41c Add new climate feature flags to yolink (#109442) 2024-02-03 14:38:38 +01:00
G Johansson a671d0bc6c Add migrated climate feature flags to xs1 (#109441) 2024-02-03 14:38:35 +01:00
G Johansson 6c84e8dff0 Add new climate feature flags to whirlpool (#109440) 2024-02-03 14:38:32 +01:00
G Johansson 57279b1c7b Add migrated climate feature flags to vicare (#109439) 2024-02-03 14:38:29 +01:00
G Johansson a5646e0df2 Add migrated feature flags to vera (#109438) 2024-02-03 14:38:26 +01:00
Teemu R 63ad3ebdf4 Add new OUIs for tplink (#109437) 2024-02-03 14:38:23 +01:00
G Johansson f2a9ef6591 Add new climate feature flags to venstar (#109436) 2024-02-03 14:38:21 +01:00
G Johansson 2a5bb66c06 Adds migrated climate entity feature for velbus (#109435) 2024-02-03 14:38:18 +01:00
G Johansson 0c0be6d6a1 Add migrated climate feature flags to homekit_controller (#109433) 2024-02-03 14:38:15 +01:00
G Johansson e99a58ad53 Add new climate feature flags to flexit_bacnet (#109431) 2024-02-03 14:38:12 +01:00
G Johansson 6c4b773bc1 Add migrated climate entity features to flexit (#109430) 2024-02-03 14:38:09 +01:00
G Johansson c571f36c6c Add new climate feature flags to evohome (#109429) 2024-02-03 14:38:06 +01:00
G Johansson f1b041afbe Add migrated climate feature flags to smarttub (#109427) 2024-02-03 14:38:03 +01:00
G Johansson 183af92658 Add migrated climate feature flags to smartthings (#109426) 2024-02-03 14:38:00 +01:00
G Johansson d71dd12263 Add migrated climate feature flags to shelly (#109425) 2024-02-03 14:37:57 +01:00
G Johansson 18a7aa20b4 Adds new climate feature flags for airzone_cloud (#109424) 2024-02-03 14:37:54 +01:00
G Johansson f8fde71ef3 Add new climate feature flags to airzone (#109423) 2024-02-03 14:37:51 +01:00
G Johansson 966798b588 Add migrated ClimateEntityFeatures to advantage_air (#109420)
* Add migrated ClimateEntityFeatures to advantage_air

* AdvantageAirZone
2024-02-03 14:37:48 +01:00
G Johansson 66b6f81996 Add migrated ClimateEntityFeature to MQTT (#109419) 2024-02-03 14:37:45 +01:00
G Johansson 4a1a5b9e87 Adds migrated ClimateEntityFeature to Netatmo (#109418) 2024-02-03 14:37:42 +01:00
G Johansson f01f033b3f Add ClimateEntityFeatures to Nest (#109417) 2024-02-03 14:37:39 +01:00
G Johansson cd884de79e Add new ClimateEntityFeature for Tado (#109416) 2024-02-03 14:37:36 +01:00
G Johansson 14be7e4a72 Add Mill migrated ClimateEntityFeatures (#109415) 2024-02-03 14:37:32 +01:00
Jc2k 2be71d53c5 Bump aiohomekit to 3.1.4 (#109414) 2024-02-03 14:37:25 +01:00
Michael Hansen 1c960d300d Bump intents to 2024.2.2 (#109412)
Bump intents to 2024.2.2
2024-02-03 14:35:31 +01:00
Michael Hansen 87a1482e4d Pass slots to error messages instead of IDs [rework] (#109410)
Co-authored-by: tetele <tm.sandu@gmail.com>
2024-02-03 14:33:14 +01:00
Jan-Philipp Benecke 24b8e60978 Bump aiotankerkoenig to 0.3.0 (#109404) 2024-02-03 14:23:42 +01:00
Jurriaan Pruis 404e30911b Bump matrix-nio to 0.24.0 (#109403)
Update matrix-nio to 0.24.0
2024-02-03 14:23:38 +01:00
wilburCforce 9c599f7513 Fix device type in Lutron (#109401)
remove testing code
2024-02-03 14:23:35 +01:00
Jan-Philipp Benecke f3e8360949 Bump aioelectricitymaps to 0.3.0 (#109399)
* Bump aioelectricitymaps to 0.3.0

* Fix tests
2024-02-03 14:23:32 +01:00
Teemu R 43f8731f8a Bump python-kasa to 0.6.2.1 (#109397) 2024-02-03 14:23:29 +01:00
Michael Hansen 4a60d36216 More thorough checks in ESPHome voice assistant UDP server (#109394)
* More thorough checks in UDP server

* Simplify and change to stop_requested

* Check transport
2024-02-03 14:23:26 +01:00
Michael 07a1ee0baa Add diagnostics to proximity (#109393) 2024-02-03 14:23:23 +01:00
Franck Nijhof a57c30be88 Update elgato to 5.1.2 (#109391) 2024-02-03 14:23:20 +01:00
jjlawren b1bf69689e Do not suggest area for portable Sonos speakers (#109350)
* Do not suggest area for portable speakers

* Update tests

* Improve readability, update tests
2024-02-03 14:23:17 +01:00
Christopher Fenner 4735aadaa8 Ignore gateway devices in ViCare integration (#106477)
* filter unsupported devices

* Update __init__.py

* use debug

* remove dead code
2024-02-03 14:23:13 +01:00
J. Nick Koston 5bda4be88f Remove useless _handle_pipeline_event function in ESPHome (#109484) 2024-02-03 14:15:56 +01:00
Cody C 897ea272d6 Update Twinkly DHCP discovery addresses (#109495) 2024-02-03 14:12:55 +01:00
Christopher Fenner bb8d742423 Ignore gateway devices in ViCare integration (#106477)
* filter unsupported devices

* Update __init__.py

* use debug

* remove dead code
2024-02-03 12:53:22 +01:00
Jurriaan Pruis 3f7d2da35c Bump matrix-nio to 0.24.0 (#109403)
Update matrix-nio to 0.24.0
2024-02-03 12:31:48 +01:00
G Johansson 33f3fb32d8 Add migrated climate feature flags to overkiz (#109463) 2024-02-03 12:25:52 +01:00
Michael Hansen c6ea57458c Pass slots to error messages instead of IDs [rework] (#109410)
Co-authored-by: tetele <tm.sandu@gmail.com>
2024-02-03 12:14:33 +01:00
G Johansson 29556465de Add migrated climate feature flags to vicare (#109439) 2024-02-03 12:13:52 +01:00
G Johansson 6c8636ae7b Add new climate feature flags to evohome (#109429) 2024-02-03 12:13:20 +01:00
G Johansson 96feec9cbf Add migrated climate feature flags to smartthings (#109426) 2024-02-03 12:11:39 +01:00
G Johansson 8bec20ffa7 Add ClimateEntityFeatures to Nest (#109417) 2024-02-03 12:11:19 +01:00
G Johansson 5b9a3d5bd5 Add migrated ClimateEntityFeature to MQTT (#109419) 2024-02-03 12:08:58 +01:00
Jan-Philipp Benecke c233a12946 Fix Tankerkoenig diagnostics file to use right format (#109494)
Fix tankerkoenig diagnostics file
2024-02-03 11:51:23 +01:00
G Johansson 98892f5b41 Add new feature flags to melcloud (#109468) 2024-02-03 11:18:40 +01:00
G Johansson e0f0159304 Add new climate feature flags to blebox (#109478) 2024-02-03 11:18:00 +01:00
G Johansson f15aa037ef Add new climate feature flags to deconz (#109482) 2024-02-03 11:17:20 +01:00
G Johansson 28337fb941 Add new climate feature flags to demo (#109481) 2024-02-03 11:07:56 +01:00
jjlawren 68797feac5 Do not suggest area for portable Sonos speakers (#109350)
* Do not suggest area for portable speakers

* Update tests

* Improve readability, update tests
2024-02-03 09:20:10 +01:00
Joakim Sørensen d44b00f851 Change IoT class for Traccar Client (#109493) 2024-02-03 09:14:52 +01:00
Erik Montnemery fe4dd2cb93 Improve color mode handling in light groups (#109390)
* Improve color mode handling in light groups

* Update config flow test
2024-02-03 09:00:00 +01:00
Joakim Sørensen 6f9876d5e0 Extend the history of Elvia history to 3 years (#109490)
Extend the history of Elvia data to 3 years
2024-02-03 08:16:28 +01:00
G Johansson a1cbc62ddc Add new climate feature flags to mysensors (#109471)
Adds new climate feature flags to mysensors
2024-02-03 08:03:38 +01:00
Teemu R 5f1d20c5e2 Add new OUIs for tplink (#109437) 2024-02-03 07:50:33 +01:00
J. Nick Koston 53db392150 Convert auth token removal websocket api to normal functions (#109432)
There was nothing being awaited here anymore
2024-02-03 07:47:07 +01:00
Jc2k 0884215130 Bump aiohomekit to 3.1.4 (#109414) 2024-02-03 07:39:35 +01:00
G Johansson 0d881dfc12 Adds new climate feature flags for airzone_cloud (#109424) 2024-02-03 07:06:53 +01:00
G Johansson 8f637d3ca7 Adds migrated climate feature flags for proliphix (#109465) 2024-02-03 07:06:21 +01:00
G Johansson 7666c432e4 Adds new climate feature flags to maxcube (#109467) 2024-02-03 07:05:46 +01:00
G Johansson 82a2980cbd Adds new climate feature flags to melissa (#109469) 2024-02-03 07:05:33 +01:00
G Johansson eb7d125976 Add migrated climate feature flags to moehlenhoff (#109470) 2024-02-03 07:05:16 +01:00
G Johansson 366da3e01f Adds new climate feature flags to bsblan (#109480) 2024-02-03 07:04:26 +01:00
G Johansson d4c0a9a847 Adds new climate feature flags to broadlink (#109479) 2024-02-03 07:04:11 +01:00
G Johansson 3e903495fa Adds migrated climate feature flags in balboa (#109477) 2024-02-03 07:03:59 +01:00
G Johansson b990e96636 Adds new climate feature flags to ambiclimate (#109475) 2024-02-03 07:03:44 +01:00
G Johansson 69f5b5e78e Adds migrated climate feature flags in nuheat (#109474) 2024-02-03 07:03:34 +01:00
G Johansson 3039616133 Adds migrated climate feature flags to nobo_hub (#109473) 2024-02-03 07:03:14 +01:00
G Johansson c0fd709b3e Add migrated climate feature flags to smarttub (#109427) 2024-02-03 06:42:10 +01:00
G Johansson 9360165ba7 Add migrated climate feature flags to opentherm_gw (#109462) 2024-02-02 22:54:01 -05:00
G Johansson 7b132dc189 Add new climate feature flags to oem (#109461) 2024-02-02 22:51:38 -05:00
G Johansson 9325243ef2 Add new climate feature flags to stiebel_eltron (#109457) 2024-02-02 22:45:06 -05:00
G Johansson de308fbd55 Add migrated climate feature flags to senz (#109455) 2024-02-02 22:44:04 -05:00
G Johansson 88aec4af72 Add new climate feature flags to screenlogic (#109454) 2024-02-02 22:42:37 -05:00
G Johansson b7f2ae4e3a Add migrated climate feature flags to schluter (#109452) 2024-02-02 22:41:28 -05:00
G Johansson a69fe882ff Add migrated climate feature flags to touchline (#109451) 2024-02-02 22:41:08 -05:00
G Johansson a6b912b282 Add migrated climate feature flags to xs1 (#109441) 2024-02-02 22:40:50 -05:00
G Johansson 3c8bfce3a4 Add migrated climate feature flags to toon (#109450) 2024-02-02 22:40:17 -05:00
G Johansson 26caa85179 Add migrated climate feature flags to tolo (#109449) 2024-02-02 22:39:37 -05:00
G Johansson e308dcf398 Add new climate feature flags to tfiac (#109448) 2024-02-02 22:39:18 -05:00
G Johansson f40e2ecb95 Add migrated climate feature flags for tessie (#109447) 2024-02-02 22:38:40 -05:00
G Johansson 04ce480d65 Add migrated climate feature flags to teslemetry (#109446) 2024-02-02 22:37:49 -05:00
G Johansson 96a3aac78e Add new climate feature flags to yolink (#109442) 2024-02-02 22:37:14 -05:00
G Johansson 5462badebf Add migrated climate feature flags to zwave_me (#109445) 2024-02-02 22:36:43 -05:00
G Johansson 1d3c5d92ea Add new climate feature flags to whirlpool (#109440) 2024-02-02 22:36:19 -05:00
G Johansson bb6051f9c4 Add new climate feature flags to zhong_hong (#109444) 2024-02-02 22:35:16 -05:00
G Johansson 63f78dece0 Add new climate feature flags to venstar (#109436) 2024-02-02 22:33:55 -05:00
G Johansson fe25975cab Adds migrated climate entity feature for velbus (#109435) 2024-02-02 22:33:42 -05:00
G Johansson 974cee2349 Add migrated feature flags to vera (#109438) 2024-02-02 22:33:03 -05:00
G Johansson ab5163fb5e Add migrated climate entity features to flexit (#109430) 2024-02-02 22:32:47 -05:00
G Johansson 5c3707ec9c Add new climate feature flags to airzone (#109423) 2024-02-03 04:02:19 +01:00
G Johansson 79bcf60c73 Adds migrated ClimateEntityFeature to Netatmo (#109418) 2024-02-03 03:56:57 +01:00
G Johansson 1fba47fc8e Add new climate feature flags to radiotherm (#109466) 2024-02-03 03:50:24 +01:00
G Johansson fbb7c9003f Add new ClimateEntityFeature for Tado (#109416) 2024-02-03 03:47:09 +01:00
G Johansson 268c84a379 Add Mill migrated ClimateEntityFeatures (#109415) 2024-02-03 03:41:25 +01:00
G Johansson 0ef95c2d4b Add migrated ClimateEntityFeatures to advantage_air (#109420)
* Add migrated ClimateEntityFeatures to advantage_air

* AdvantageAirZone
2024-02-03 03:30:53 +01:00
Michael Hansen 3347a3f8a6 More thorough checks in ESPHome voice assistant UDP server (#109394)
* More thorough checks in UDP server

* Simplify and change to stop_requested

* Check transport
2024-02-02 21:26:44 -05:00
G Johansson ae210886c1 Add migrated climate feature flags to nexia (#109472) 2024-02-03 03:26:17 +01:00
G Johansson 61cf7862a0 Adds new climate feature flags in baf (#109476) 2024-02-03 03:26:04 +01:00
G Johansson 16b20403e6 Add migrated climate feature flags to zha (#109443) 2024-02-03 03:06:55 +01:00
Michael Hansen 595dd651bb Bump intents to 2024.2.2 (#109412)
Bump intents to 2024.2.2
2024-02-02 20:13:17 -05:00
G Johansson 3c15a2216d Add migrated climate feature flags to homekit_controller (#109433) 2024-02-03 01:46:27 +01:00
G Johansson 97e6391b9a Add migrated climate feature flags to shelly (#109425) 2024-02-03 01:46:14 +01:00
G Johansson e0fc328e27 Add new climate feature flags to flexit_bacnet (#109431) 2024-02-03 01:43:32 +01:00
Jan-Philipp Benecke 99fcff47f9 Bump aioelectricitymaps to 0.3.0 (#109399)
* Bump aioelectricitymaps to 0.3.0

* Fix tests
2024-02-03 00:04:41 +02:00
Michael e567236cac Add diagnostics to proximity (#109393) 2024-02-02 23:03:55 +01:00
Jan-Philipp Benecke 4809327124 Bump aiotankerkoenig to 0.3.0 (#109404) 2024-02-02 23:42:10 +02:00
Erik Montnemery 09ba46ddb9 Mask sensitive data in google_assistant logs (#109366)
* Mask sensitive data in google_assistant logs

* Move common code to homeassistant/util/redact.py

* Move to helpers

* Add tests

* Tweak

* Redact additional logs

* Fix stale docstring

* Don't reveal the length of masked data

* Update test
2024-02-02 22:10:30 +01:00
J. Nick Koston ae5d4e183a Remove remaning ESPHome files from coveragerc (#109400) 2024-02-02 14:52:09 -06:00
wilburCforce 430b9cef43 Fix device type in Lutron (#109401)
remove testing code
2024-02-02 22:42:53 +02:00
Teemu R e61864c0b5 Bump python-kasa to 0.6.2.1 (#109397) 2024-02-02 21:24:24 +01:00
Franck Nijhof 2c3a952ef8 Update elgato to 5.1.2 (#109391) 2024-02-02 14:34:00 -05:00
Franck Nijhof f18f161efa Bump version to 2024.2.0b3 2024-02-02 17:36:51 +01:00
Bram Kragten 3c90e3d83f Update frontend to 20240202.0 (#109388) 2024-02-02 17:36:43 +01:00
Robert Resch 57a43ef151 Improve Ecovacs naming (#109372) 2024-02-02 17:36:40 +01:00
Franck Nijhof 6afc6ca126 Remove suggested area from Verisure (#109364) 2024-02-02 17:36:37 +01:00
Joakim Sørensen 92a3edc536 Specify end_time when importing Elvia data to deal with drift (#109361) 2024-02-02 17:36:34 +01:00
Robert Resch e91e67b400 Bump deebot_client to 5.1.0 (#109360) 2024-02-02 17:36:31 +01:00
Franck Nijhof 7a7bcf1a92 Update cryptography to 42.0.2 (#109359) 2024-02-02 17:36:28 +01:00
karwosts 1383a0c13a Missing template helper translation keys (#109347) 2024-02-02 17:36:24 +01:00
J. Nick Koston 12e3077895 Ensure the purge entities service cleans up the states_meta table (#109344) 2024-02-02 17:36:21 +01:00
G Johansson 05c0973937 Add Adax migrated ClimateEntityFeatures (#109341) 2024-02-02 17:36:18 +01:00
G Johansson 7467d588c8 Add sensibo migrated ClimateEntityFeatures (#109340)
Adds sensibo migrated ClimateEntityFeatures
2024-02-02 17:36:15 +01:00
jan iversen 0c82e0a618 Correct modbus commit validation, too strict on integers (#109338) 2024-02-02 17:36:12 +01:00
J. Nick Koston 5a4f88349a Fix stale camera error message in img_util (#109325) 2024-02-02 17:36:09 +01:00
G Johansson e720e82fd6 Add migrated ClimateEntityFeature for Nibe Heat Pump (#109140) 2024-02-02 17:36:05 +01:00
G Johansson 8ed0af2fb7 Add TURN_ON/OFF ClimateEntityFeature for KNX (#109138) 2024-02-02 17:36:02 +01:00
G Johansson 550c0bf3c3 Add migrated ClimateEntityFeature for SwitchBot Cloud (#109136) 2024-02-02 17:35:59 +01:00
G Johansson 8bb98b4146 Add TURN_ON/OFF ClimateEntityFeature for Modbus (#109133) 2024-02-02 17:35:56 +01:00
G Johansson bd5bc6b83d Add TURN_ON/OFF ClimateEntityFeature for Matter (#108974)
* Add TURN_ON/OFF ClimateEntityFeature for Matter

* Adjust matter
2024-02-02 17:35:53 +01:00
G Johansson a2b6b0a0bc Add TURN_ON/OFF ClimateEntityFeature for Fibaro (#108963) 2024-02-02 17:35:50 +01:00
G Johansson 41ad3d8987 Add migrated ClimateEntityFeature for Atag (#108961) 2024-02-02 17:35:45 +01:00
mkmer 3e7dc3588d Add independent session in honeywell (#108435) 2024-02-02 17:35:42 +01:00
Cyrill Raccaud 66d802b5e5 Follow up swiss_public_transport migration fix of unique ids (#107873)
improve migration fix of unique ids
- follow up to #107087
2024-02-02 17:35:38 +01:00
mkmer 7608f0c9ee Add independent session in honeywell (#108435) 2024-02-02 17:31:16 +01:00
Bram Kragten 6b7a984314 Update frontend to 20240202.0 (#109388) 2024-02-02 17:30:07 +01:00
Erik Montnemery 9d22f07fc6 Use send_json_auto_id in conversation tests (#109354) 2024-02-02 15:46:59 +01:00
Jan Rieger 0c3541c194 Add entity description to GPSD (#109320) 2024-02-02 14:44:50 +01:00
Robert Resch 343086a6c8 Improve Ecovacs naming (#109372) 2024-02-02 14:12:26 +01:00
Jan-Philipp Benecke a6c697c80f Add entity name translations to Tibber (#108797) 2024-02-02 14:03:21 +01:00
Joakim Sørensen 3bab1d7cd5 Specify end_time when importing Elvia data to deal with drift (#109361) 2024-02-02 13:42:07 +01:00
Brett Adams e328d3ec5e Add Charging sensor to Tessie (#108205) 2024-02-02 13:21:13 +01:00
jan iversen 90ec361fc9 Centralize validation for modbus config (#108906)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-02-02 12:42:12 +01:00
Brett Adams d3dbd6fa70 Change device class of Auto Seat Heater sensors in Tessie (#109240) 2024-02-02 12:38:57 +01:00
Jan Rieger a584429ce0 Use translation placeholders in 1-Wire (#109120) 2024-02-02 12:37:23 +01:00
Franck Nijhof cd1ef93123 Remove suggested area from Verisure (#109364) 2024-02-02 11:43:05 +01:00
Franck Nijhof a452ad6454 Update sentry-sdk to 1.40.0 (#109363) 2024-02-02 11:33:03 +01:00
Christopher Fenner 03daeda9db Disable less interesting sensors by default in ViCare integration (#109014) 2024-02-02 11:28:51 +01:00
Robert Resch 61e6882b91 Bump deebot_client to 5.1.0 (#109360) 2024-02-02 11:02:00 +01:00
Cyrill Raccaud f22b71d803 Follow up swiss_public_transport migration fix of unique ids (#107873)
improve migration fix of unique ids
- follow up to #107087
2024-02-02 10:37:49 +01:00
Franck Nijhof c868b79b5a Update cryptography to 42.0.2 (#109359) 2024-02-02 10:37:04 +01:00
Ståle Storø Hauknes effd5b8ddd Hide unsupported devices in Airthings BLE config flow (#107648) 2024-02-02 10:24:53 +01:00
Erik Montnemery 4229c35fcd Improve color mode handling in MockLight (#109298) 2024-02-02 09:49:32 +01:00
G Johansson e3f1997b6f Add TURN_ON/OFF ClimateEntityFeature for KNX (#109138) 2024-02-02 09:48:01 +01:00
jan iversen 543870d5f1 Correct modbus commit validation, too strict on integers (#109338) 2024-02-02 09:46:53 +01:00
Joakim Sørensen 025fe51322 Use a mocked API client in Traccar Server tests (#109358) 2024-02-02 09:36:26 +01:00
Erik Montnemery 1f466e737e Use send_json_auto_id in recorder tests (#109355) 2024-02-02 09:34:43 +01:00
G Johansson 596f61ff07 Add TURN_ON/OFF ClimateEntityFeature for Fibaro (#108963) 2024-02-02 09:33:54 +01:00
G Johansson b379e9db60 Add migrated ClimateEntityFeature for SwitchBot Cloud (#109136) 2024-02-02 09:33:13 +01:00
G Johansson 8a22a8d4ba Add migrated ClimateEntityFeature for Atag (#108961) 2024-02-02 09:32:50 +01:00
J. Nick Koston 67e6febde4 Ensure the purge entities service cleans up the states_meta table (#109344) 2024-02-02 09:32:17 +01:00
G Johansson 2788576dc9 Add TURN_ON/OFF ClimateEntityFeature for Modbus (#109133) 2024-02-02 09:31:35 +01:00
G Johansson d5d74005f4 Add migrated ClimateEntityFeature for Nibe Heat Pump (#109140) 2024-02-02 09:31:09 +01:00
Dan 72f1d8ec15 Add Duquesne Light virtual integration supported by opower (#109272)
Co-authored-by: Dan Swartz <3066652+swartzd@users.noreply.github.com>
2024-02-02 09:10:51 +01:00
G Johansson 449790c178 Add Adax migrated ClimateEntityFeatures (#109341) 2024-02-02 09:02:41 +01:00
J. Nick Koston 582d6968b2 Avoid de/recode of bytes to string to bytes when writing json files (#109348) 2024-02-02 09:02:26 +01:00
G Johansson 9204e85b61 Add sensibo migrated ClimateEntityFeatures (#109340)
Adds sensibo migrated ClimateEntityFeatures
2024-02-02 09:01:38 +01:00
J. Nick Koston 155499fafe Load json file as binary instead of decoding to string (#109351) 2024-02-02 09:00:46 +01:00
J. Nick Koston 1c84997c5c Reduce lock contention when all icons are already cached (#109352) 2024-02-02 08:58:55 +01:00
karwosts b471b9926d Missing template helper translation keys (#109347) 2024-02-02 08:58:03 +01:00
G Johansson b32371b5c9 Add TURN_ON/OFF ClimateEntityFeature for Matter (#108974)
* Add TURN_ON/OFF ClimateEntityFeature for Matter

* Adjust matter
2024-02-02 07:39:54 +01:00
J. Nick Koston 5a35c2e1e9 Fix stale camera error message in img_util (#109325) 2024-02-01 22:39:44 +01:00
Franck Nijhof f77bd13cc0 Bump version to 2024.2.0b2 2024-02-01 22:29:58 +01:00
Paul Bottein fe4ad30ade Add device class to tesla wall connector session energy (#109333) 2024-02-01 22:29:49 +01:00
Joakim Sørensen 15a1a4bfdf Fix custom attribute lookup in Traccar Server (#109331) 2024-02-01 22:29:46 +01:00
Franck Nijhof 3d80c4f7f6 Update Home Assistant base image to 2024.02.0 (#109329) 2024-02-01 22:29:42 +01:00
Michael Hansen 0015af0b3c Move default response out of sentence trigger registration and into agent (#109317)
* Move default response out of trigger and into agent

* Add test
2024-02-01 22:29:39 +01:00
J. Nick Koston a535bda821 Fix race in loading service descriptions (#109316) 2024-02-01 22:29:36 +01:00
Maciej Bieniek ca539630a6 Do not use a battery device class for Shelly analog input sensor (#109311)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-01 22:29:32 +01:00
Josef Zweck faf2a90cd1 Bump pytedee_async to 0.2.13 (#109307)
bump
2024-02-01 22:29:30 +01:00
Robert Resch 6aba79d7b9 Verify Ecovacs mqtt config (#109306) 2024-02-01 22:29:26 +01:00
Ståle Storø Hauknes b464e77112 Bump airthings-ble to 0.6.1 (#109302)
Bump airthings-ble
2024-02-01 22:29:23 +01:00
Josh Pettersen a8b39ce332 Remove battery charge sensor from powerwall (#109271) 2024-02-01 22:29:19 +01:00
Michael Hansen 77b25553e3 Migrate to new intent error response keys (#109269) 2024-02-01 22:29:16 +01:00
G Johansson c31dfd6d00 Don't log warning for core integrations on new feature flags in Climate (#109250)
* Don't log for core integration on Climate new feature flags

* Add test

* Fix test
2024-02-01 22:29:12 +01:00
Brett Adams 647ac10dd9 Add climate turn on/off feature to Teslemetry (#109241) 2024-02-01 22:29:06 +01:00
Brett Adams 50dfe4dec0 Add climate on/off feature to Tessie (#109239) 2024-02-01 22:29:03 +01:00
Raman Gupta 52a8216150 Add translations for zwave_js entities and services (#109188) 2024-02-01 22:28:59 +01:00
Paul Bottein 8038d833e8 Add device class to tesla wall connector session energy (#109333) 2024-02-01 22:28:02 +01:00
Franck Nijhof 26be6a677c Update Home Assistant base image to 2024.02.0 (#109329) 2024-02-01 22:13:41 +01:00
Joakim Sørensen 3511f35418 Fix custom attribute lookup in Traccar Server (#109331) 2024-02-01 22:06:34 +01:00
Ryan Fleming c1f883519d Add connect octoprint printer service (#99899)
* Add connect octoprint printer service

* Review changes

* String updates

* Swap exception type
2024-02-01 21:15:41 +01:00
Michael Hansen a1eaa5cbf2 Migrate to new intent error response keys (#109269) 2024-02-01 21:10:24 +01:00
Raman Gupta c2525d53dd Add translations for zwave_js entities and services (#109188) 2024-02-01 21:07:47 +01:00
Josh Pettersen 0cc8b2edf9 Remove battery charge sensor from powerwall (#109271) 2024-02-01 14:01:05 -06:00
Michael Hansen c2c98bd04c Move default response out of sentence trigger registration and into agent (#109317)
* Move default response out of trigger and into agent

* Add test
2024-02-01 20:40:29 +01:00
J. Nick Koston ed726db974 Fix race in loading service descriptions (#109316) 2024-02-01 12:34:23 -06:00
Brett Adams c61a2b46d4 Add climate turn on/off feature to Teslemetry (#109241) 2024-02-01 17:09:24 +01:00
Brett Adams c41f33da71 Add climate on/off feature to Tessie (#109239) 2024-02-01 17:08:41 +01:00
Robert Resch cb5be4901b Verify Ecovacs mqtt config (#109306) 2024-02-01 17:07:55 +01:00
Maciej Bieniek fe0228139e Do not use a battery device class for Shelly analog input sensor (#109311)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-02-01 17:07:08 +01:00
Josef Zweck fa17693e3c Bump pytedee_async to 0.2.13 (#109307)
bump
2024-02-01 17:05:02 +01:00
G Johansson 61c82718f2 Don't log warning for core integrations on new feature flags in Climate (#109250)
* Don't log for core integration on Climate new feature flags

* Add test

* Fix test
2024-02-01 16:53:53 +01:00
Marc Mueller d2dee9e327 Update ruff to 0.1.15 (#109303) 2024-02-01 13:29:01 +01:00
Ståle Storø Hauknes 9bb6d756f1 Bump airthings-ble to 0.6.1 (#109302)
Bump airthings-ble
2024-02-01 12:59:41 +01:00
Franck Nijhof c98228110a Bump version to 2024.2.0b1 2024-02-01 12:19:53 +01:00
Joakim Sørensen 403c2d8440 Bump hass-nabucasa from 0.75.1 to 0.76.0 (#109296) 2024-02-01 12:19:43 +01:00
Franck Nijhof e4fc35c563 Fix device class repairs issues UOM placeholders in Group (#109294) 2024-02-01 12:19:41 +01:00
Jan Bouwhuis e2bbdda016 Remove quality scale platinum from daikin integration (#109292) 2024-02-01 12:19:37 +01:00
Josef Zweck 0070d2171f Fix two icon translations for La Marzocco (#109284) 2024-02-01 12:19:34 +01:00
Luis Andrade 74ce778691 bugfix: name missing in getLogger (#109282) 2024-02-01 12:19:31 +01:00
Jan Bouwhuis fc6cc45ee2 Fix dalkin climate warnings (#109279) 2024-02-01 12:19:28 +01:00
Jan-Philipp Benecke 1353c1d24c Address late review of Tankerkoenig package move (#109277) 2024-02-01 12:19:25 +01:00
J. Nick Koston 0b6df23ee5 Fix app name sorting in apple_tv (#109274) 2024-02-01 12:19:22 +01:00
J. Nick Koston e34ebcb195 Restore support for packages being installed from urls with fragments (#109267) 2024-02-01 12:19:19 +01:00
TheJulianJES 29f4c2d513 Fix ZHA update entity not updating installed version (#109260) 2024-02-01 12:19:16 +01:00
Ernst Klamer 70f0d77ba5 Fix Xiaomi-ble automations for multiple button devices (#109251) 2024-02-01 12:19:13 +01:00
Michael 133b68a68d Apply review comments on proximity (#109249)
use a named tuple as TrackedEntityDescriptor
2024-02-01 12:19:10 +01:00
Raman Gupta 3f619a8022 Remove deprecation warnings for zwave_js climate TURN_ON/TURN_OFF features (#109242) 2024-02-01 12:19:07 +01:00
J. Nick Koston ada37f558c Bump govee-ble to 0.31.0 (#109235) 2024-02-01 12:19:02 +01:00
Joost Lekkerkerker f76689fb75 Pass verify_ssl to created session in Omada (#109212)
* Pass verify_ssl to created session in Omada

* Fix tests

* Fix tests
2024-02-01 12:18:59 +01:00
Raman Gupta 16ad2728a6 Make zwave_js last seen sensor enabled by default (#109191)
* Make zwave_js last seen sensor enabled by default

* Add test

* Fix test

* improve tests
2024-02-01 12:18:56 +01:00
Brett Adams ddc1c4bb27 Fix time to arrival to timestamp in Tessie (#109172)
* Fix time to arrival

* Update snapshot

* Freeze time for snapshot

* Fix docstring

* Add available_fn

* Update snapshot

* Dont use variance for full charge

* Remove unrelated changes

* Revert snapshot

* Rename hours_to_datetime
2024-02-01 12:18:53 +01:00
Chris Talkington bbe4483b4a Update rokuecp to 0.19 (#109100) 2024-02-01 12:18:49 +01:00
Raman Gupta 1af25bc010 Remove deprecation warnings for zwave_js climate TURN_ON/TURN_OFF features (#109242) 2024-02-01 11:21:40 +01:00
Jan-Philipp Benecke 286c5faa79 Address late review of Tankerkoenig package move (#109277) 2024-02-01 11:14:33 +01:00
Joakim Sørensen f791c77f3b Bump hass-nabucasa from 0.75.1 to 0.76.0 (#109296) 2024-02-01 11:11:28 +01:00
Franck Nijhof 6869723003 Fix device class repairs issues UOM placeholders in Group (#109294) 2024-02-01 10:20:52 +01:00
Jan Bouwhuis 459022d030 Remove quality scale platinum from daikin integration (#109292) 2024-02-01 09:30:29 +01:00
Chris Talkington f87550c909 Update rokuecp to 0.19 (#109100) 2024-02-01 09:08:32 +01:00
Ernst Klamer 697d4987c1 Fix Xiaomi-ble automations for multiple button devices (#109251) 2024-02-01 09:04:02 +01:00
Michael e11e54fd50 Apply review comments on proximity (#109249)
use a named tuple as TrackedEntityDescriptor
2024-02-01 09:02:38 +01:00
Luis Andrade 175ec81269 bugfix: name missing in getLogger (#109282) 2024-02-01 09:00:22 +01:00
Jan Rieger 421e276185 Add icon translations to GPSd (#108602) 2024-02-01 08:58:32 +01:00
Josef Zweck a075accbe3 Fix two icon translations for La Marzocco (#109284) 2024-02-01 08:57:12 +01:00
J. Nick Koston 8afcd53af6 Restore support for packages being installed from urls with fragments (#109267) 2024-02-01 08:56:57 +01:00
J. Nick Koston 5d3364521f Fix app name sorting in apple_tv (#109274) 2024-02-01 08:53:18 +01:00
Jan Bouwhuis 723d9c4c8a Fix dalkin climate warnings (#109279) 2024-02-01 08:52:07 +01:00
dependabot[bot] 0caed80320 Bump sigstore/cosign-installer from 3.3.0 to 3.4.0 (#109278)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 08:28:23 +01:00
TheJulianJES c355dd77a4 Fix ZHA update entity not updating installed version (#109260) 2024-02-01 08:26:39 +01:00
J. Nick Koston 5c3bf13ca4 Only decode msg topic once when handling mqtt payloads (#109258) 2024-02-01 03:42:58 +01:00
Joost Lekkerkerker 31094e72a0 Pass verify_ssl to created session in Omada (#109212)
* Pass verify_ssl to created session in Omada

* Fix tests

* Fix tests
2024-02-01 03:38:16 +01:00
Raman Gupta 2b525ed2e9 Make zwave_js last seen sensor enabled by default (#109191)
* Make zwave_js last seen sensor enabled by default

* Add test

* Fix test

* improve tests
2024-02-01 02:55:48 +01:00
Dan 08f8f84f61 Bump opower to 0.3.0 (#109248)
Co-authored-by: Dan Swartz <3066652+swartzd@users.noreply.github.com>
2024-02-01 01:34:33 +01:00
Joost Lekkerkerker 2aead3eefc Fix kitchen sink tests (#109243) 2024-01-31 22:10:32 +01:00
Franck Nijhof d1c61c911d Bump version to 2024.3.0dev0 (#109238) 2024-01-31 22:05:13 +01:00
Brett Adams 1584f02e71 Fix time to arrival to timestamp in Tessie (#109172)
* Fix time to arrival

* Update snapshot

* Freeze time for snapshot

* Fix docstring

* Add available_fn

* Update snapshot

* Dont use variance for full charge

* Remove unrelated changes

* Revert snapshot

* Rename hours_to_datetime
2024-01-31 15:52:58 -05:00
Steven B 552d14204d Bump ring_doorbell to 0.8.6 (#109199) 2024-01-31 10:32:27 -10:00
J. Nick Koston 729c6db082 Bump govee-ble to 0.31.0 (#109235) 2024-01-31 09:47:31 -10:00
Franck Nijhof 69416e7b76 Bump version to 2024.2.0b0 2024-01-31 20:45:31 +01:00
Jan Rieger 45f0e08395 Add translations to GPSd (#108600)
* Add config flow to GPSD

* Add translations to GPSd

* Add device class

* Apply feedback for unique_id and translation_key
2024-01-31 20:42:14 +01:00
Erik Montnemery 3ce4e53b32 Sort script actions (#108247) 2024-01-31 20:41:53 +01:00
Erik Montnemery cf6bcd63dd Add reauth flow to kitchen sink (#109202) 2024-01-31 20:40:26 +01:00
Tucker Kern 340df38bd0 Suppress log warnings when a sensor group has non numeric members (#102828) 2024-01-31 20:02:21 +01:00
G Johansson c59345338e Add test for integration migrated in climate (#109224) 2024-01-31 19:57:59 +01:00
Bram Kragten 3cbfae5cc7 Update frontend to 20240131.0 (#109231) 2024-01-31 19:49:50 +01:00
Steven B 605b7312a4 Fix ring chimes data update (#109220)
* Fix bug with chimes data update

* Trigger update in test with time change

* Fix test to use freezer

* Make test less fragile
2024-01-31 19:39:18 +01:00
Bram Kragten d361d47516 Add qr code selector (#109214) 2024-01-31 19:27:03 +01:00
Jan Rieger bbdb9b61c4 Add config flow to GPSD (#106196) 2024-01-31 18:38:14 +01:00
Joakim Sørensen cd96fb381f Import Traccar YAML configuration to Traccar Server (#109226)
* Import Traccar YAML configuration to Traccar Server

* Remove import
2024-01-31 18:16:23 +01:00
Joakim Sørensen 0b0bf73780 Add brands definition for Traccar (#109219) 2024-01-31 18:15:40 +01:00
Paul Strawder f4a2d7c612 Add ZHA support for Bosch Twinguard and siren install QR codes (#107460)
* Enable Bosch Outdoor Siren and Bosch Twinguard QR Codes

These devices contain inside their QR code device specific link keys instead of installation codes. Normally, the link key is generated from the installation code, but in this case we can directly pass the provided link key from QR code to zigpy application controller.

* Replace ZHA deprecated permit_with_key by permit_with_link_key

Convert installation code directly to link key

* Update tests

* formatting
2024-01-31 12:02:34 -05:00
Caius-Bonus 3b7ec8ed2c Use EnumSensor instead of custom formatter() in ZHA Sensor entities (#109218)
use EnumSensor for SonofPresenceSensorIlluminationStatus and AqaraPetFeederLastFeedingSource
2024-01-31 11:53:10 -05:00
Joakim Sørensen a45d26c2bd Rename Traccar to Traccar Client (#109217) 2024-01-31 17:23:03 +01:00
Paul Bottein c8bfb288a3 Add readable state for tesla wall connector (#107909)
* Add readable state for tesla wall connector

* Add test

* Display raw sensor by default

* Use none instead of unknown

* Remove old state from tests

* Rename raw state to status code

* Test unknown

* Update homeassistant/components/tesla_wall_connector/strings.json

Co-authored-by: Franck Nijhof <git@frenck.dev>

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-31 17:22:45 +01:00
G Johansson ddb56fe20d Modify climate turn_on/off backwards compatibility check (#109195)
* Modify climate turn_on/off backwards compatibility check

* Fix logger message

* Comments

* Fix demo

* devolo

* ecobee

* Some more

* Fix missing feature flag

* some more

* and some more

* Remove demo change

* Add back demo change

* Fix demo

* Update comments
2024-01-31 16:29:36 +01:00
Erik Montnemery 816c2e9500 Improve enabling of Google local fulfillment (#109192)
* Improve enabling of Google local fulfillment

* Add test

* Improve test coverage
2024-01-31 16:28:27 +01:00
Robert Resch 6fc5804818 Add Ecovacs switch entities (#109216) 2024-01-31 16:05:41 +01:00
Robert Svensson 7b9dbc2187 Support alternative modelid for LIDL doorbell in deCONZ device triggers (#107937)
Add support alternative modelid for LIDL doorbell
2024-01-31 16:03:12 +01:00
Jeroen van Ingen Schenau 3bd1162650 Fix Huisbaasje negative periodic gas readings (#103457) (#108090) 2024-01-31 15:13:48 +01:00
Erik Montnemery ffdcdaf43b Create issues for reauth flows (#109105) 2024-01-31 15:05:52 +01:00
Jan-Philipp Benecke 71c2460161 Move tankerkoenig to new aiotankerkoenig package (#108913)
* Move tankerkoenig to new aiotankerkoenig package

* Fix config flow coverage

* Process code review suggestions

* Process code review suggestions
2024-01-31 14:57:08 +01:00
Joakim Sørensen 640463c559 Add Traccar server integration (#109002)
* Add Traccar server integration

* Add explination

* Update homeassistant/components/traccar_server/coordinator.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Add data_description

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-31 14:50:18 +01:00
Joakim Sørensen 52a692df3e Add Elvia integration (#107405) 2024-01-31 14:47:37 +01:00
Robert Resch 4f4d79137e Add Ecovacs number entities (#109209) 2024-01-31 14:43:35 +01:00
Marcel van der Veldt 68c633c317 Add Matter Websocket commands for node actions and diagnostics (#109127)
* bump python-matter-server to version 5.3.0

* Add all node related websocket services

* remove open_commissioning_window service

as it wasnt working anyways

* use device id instead of node id

* tests

* add decorator to get node

* add some tests for invalid device id

* add test for unknown node

* add explicit exception

* adjust test

* move exceptions

* remove the additional config entry check for now

to be picked up in follow up pR
2024-01-31 14:15:56 +01:00
Jan Rieger fb04451c08 Set entity category for QNAP sensors (#109207) 2024-01-31 13:34:52 +01:00
Christopher Fenner 2f312f56f6 Add fuelcell gas consumption sensors to ViCare integration (#105461)
* add fuel cell gas consumption sensors

* add total gas consumption sensors

* add uom

* Update strings.json

* reorder

* Revert "reorder"

This reverts commit 0bcaa3b4e6.

* Revert "add uom"

This reverts commit b3c0dc4756.

* Update sensor.py
2024-01-31 13:23:51 +01:00
Jonas Fors Lellky a61b18155b Make flexit bacnet switch more generic and prepare for more switches (#109154)
Make switch more generic and prepare for more switches
2024-01-31 13:19:23 +01:00
Robert Resch 4bad88b42c Update Ecovacs config_flow to support self-hosted instances (#108944)
* Update Ecovacs config_flow to support  self-hosted instances

* Selfhosted should add their instance urls

* Improve config flow

* Improve and adapt to version bump

* Add test for self-hosted

* Make ruff happy

* Update homeassistant/components/ecovacs/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Implement suggestions

* Apply suggestions from code review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Implement suggestions

* Remove ,

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-31 13:17:00 +01:00
Simone Chemelli f77e4b24e6 Code quality for Vodafone tests (#109078)
vodafone pylance fixes
2024-01-31 13:15:26 +01:00
Jan Rieger 0bca728395 Add Qnap icon translations (#108484)
* Add Qnap icon translations

* Update homeassistant/components/qnap/icons.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-31 13:14:26 +01:00
Simone Chemelli 18a6ae081a Apply late review comments for Comelit climate (#109114)
* Apply late review comments for Comelit climate

* remove logging
2024-01-31 13:13:25 +01:00
Jan Bouwhuis dcd677fea8 Make google_assistant report_state test timezone aware (#109200) 2024-01-31 13:12:26 +01:00
Christopher Fenner 2dbc59fbea Use home/sleep preset in ViCare climate entity (#105636)
* use home/sleep preset

* avoid setting reduced
2024-01-31 13:01:28 +01:00
Michael 30c5baf522 Add configflow to Proximity integration (#103894)
* add config flow

* fix tests

* adjust and fix tests

* fix tests

* config_zones as fixture

* add config flow tests

* use coordinator.async_config_entry_first_refresh

* use entry.entry_id for hass.data

* fix doc string

* remove unused unit_of_measurement string key

* don't store friendly_name, just use self.name

* abort on matching entiry

* break out legacy setup into seperate function

* make tracked entites required

* move _asnyc_setup_legacy to module level

* use zone name as config entry title

* add entity_used_in helper

* check entry source if imported

* create repair issue for removed tracked entities

* separate state change from registry change event handling

* migrate unique ids after tracked entity renamed

* use full words for the variable names

* use defaultdict

* add test

* remove unnecessary if not in check

* use unique_id of tracked entity

* use the entity registry entry id

* Apply suggestions from code review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-31 12:47:23 +01:00
Jan Rieger c587c69915 Migrate QNAP to has entity name (#107232)
* Migrate QNAP to has entity name

* Update homeassistant/components/qnap/strings.json

Co-authored-by: disforw <github@benzona.net>

* Apply suggestions from code review

Co-authored-by: disforw <github@benzona.net>

---------

Co-authored-by: disforw <github@benzona.net>
2024-01-31 11:40:23 +01:00
Brandon Rothweiler a3352ce457 Minor fixes to A. O. Smith integration (#107421) 2024-01-31 11:22:25 +01:00
Mandar Patil 60fbb8b698 Add session energy sensor for Tesla Wall Connector (#102635)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-31 11:00:04 +01:00
Manuel Dipolt 0c83fd0897 Add romy vacuum integration (#93750)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
2024-01-31 10:48:44 +01:00
Steven B f725258ea9 Add coordinator to ring integration (#107088) 2024-01-31 10:37:55 +01:00
stegm 7fe4a343f9 Add state_class to Kostal plenticore sensors (#108096) 2024-01-31 10:37:23 +01:00
Franck Nijhof 559f1d77f7 Merge branch 'master' into dev 2024-01-31 09:40:09 +01:00
Christopher Fenner 7e3a459c2f Add test case for binary sensors in ViCare (#108769)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-31 09:30:51 +01:00
Noah Groß db0486c5e1 Use constants in Picnic service functions (#109170)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-31 09:01:17 +01:00
Robert Resch 01df5f9cab Add Ecovacs button entities (#109189) 2024-01-31 09:00:43 +01:00
Robert Svensson 30fdb2a8b3 Add log to show last received UniFi websocket message (#109167) 2024-01-31 08:46:47 +01:00
Raman Gupta 9ed50d8b0c Add last seen sensor for zwave_js devices (#107345) 2024-01-31 01:17:43 -05:00
Josh Pettersen b629ad9c3d Add individual battery banks as devices (#108339) 2024-01-30 19:03:01 -10:00
julienfreche 5fd6028d97 Intellifire: fix incorrect name attribute in debug log when setting flame height (#109168) 2024-01-30 23:52:02 -05:00
Jan-Philipp Benecke 7e99ddcac9 Bump aioelectricitymaps to 0.2.0 (#109150) 2024-01-30 23:48:56 -05:00
Jan Rieger 54b08ea675 Remove unused constants from QNAP (#109152) 2024-01-30 23:48:22 -05:00
J. Nick Koston 9c22226fed Ensure bluetooth auto recovery does not run in tests (#109163)
If time was moved forward too much the scanner would try to auto recover
2024-01-30 23:48:05 -05:00
Barry Williams 4c6ac74313 allow songcast source to be stopped and played (#109180) 2024-01-30 23:41:20 -05:00
Josh Pettersen 961a1c4d00 Change the suggested energy units to kWh (#109184)
* Change the suggested energy units to kWh since the practical value is pretty large.

* Fix unit tests
2024-01-30 23:40:05 -05:00
Raman Gupta b8c9da4705 Add icon and state translations for zwave_js sensors (#109186) 2024-01-30 23:38:27 -05:00
David F. Mulcahey ac8f555a70 Add additional entities for the Aqara E1 curtain motor to ZHA (#108243)
* aqara curtain motor opened by hand binary sensor

add icon and translation key for identify button

remove previous inversion entity

add window covering type sensor and aqara curtain motor sensors

add aqara curtain motor hook lock switch

add aqara curtain motor attributes zcl_init_attrs

add aqara curtain motor zcl_init_attrs

translations

* update translation string

* review comments

* use enum sensor after rebase

* remove button change
2024-01-30 22:40:33 -05:00
David F. Mulcahey 3115af1041 Add update platform to ZHA (bumps zigpy to 0.61.0) (#107612)
* stub out zha update entity

* update matcher

* updates based on assumptions / conversation

* hook into current installed version

* post rebase cleanup

* incorporate zigpy changes

* fix async_setup_entry

* fix sw_version

* make ota work with config diagnostic match

* fix version format

* sync up with latest Zigpy changes

* fix name attribute

* disable ota providers for tests

* update device list

* review comment

* add current_file_version to Ota ZCL_INIT_ATTRS

* updates to update and start tests

* get installed version from restore data

* better version handling

* remove done todo notes

* reorganize test

* move image notify to cluster handler

* add test for manual update check

* firmware update success test

* coverage

* use zigpy defs

* clean up after rebase

* bump Zigpy

* cleanup from review comments

* fix busted F string

* fix empty error

* move inside check

* guard zigbee network from bulk check for updates
2024-01-30 22:34:48 -05:00
Josh Pettersen 2f9f0bae46 Add generic typing for powerwall sensors (#109008) 2024-01-30 16:28:27 -10:00
Jan Bouwhuis 320bf53f75 Add OnOff trait for climate entities in google_assistant (#109160) 2024-01-30 21:27:36 -05:00
Caius-Bonus a7a41e54f6 Add ZHA ZCL thermostat entities (#106563) 2024-01-31 03:26:19 +01:00
Franck Nijhof 82e1ed43f8 Migrate Tuya integration to new sharing SDK (#109155)
* Scan QR code to log in And Migrate Tuya integration to new sharing SDK (#104767)

* Remove non-opt-in/out reporting

* Improve setup, fix unload

* Cleanup token listner, remove logging of sensitive data

* Collection of fixes after extensive testing

* Tests happy user config flow path

* Test unhappy paths

* Add reauth

* Fix translation key

* Prettier manifest

* Ruff format

* Cleanup of const

* Process review comments

* Adjust update token handling

---------

Co-authored-by: melo <411787243@qq.com>
2024-01-30 21:22:22 -05:00
Jan Bouwhuis 712ba2fdca Add alexa PowerController on enabled features for climate entities (#109174)
Depend alexa PowerController on enabled features for climate entities
2024-01-30 20:38:32 -05:00
Duco Sebel 41fdcce226 Bumb python-homewizard-energy to 4.3.0 (#109131) 2024-01-31 01:50:00 +01:00
Noah Groß 95fca44e6d Fix schema validation for product_id in picnic integration (#109083) 2024-01-31 01:44:31 +01:00
Marcel van der Veldt 182d00be66 Bump python-matter-server to 5.4.0 (#109178) 2024-01-31 01:39:00 +01:00
Erik Montnemery fcfacaaabd Store preferred border agent extended address for each thread dataset (#109065) 2024-01-31 00:57:46 +01:00
Robert Resch 09a89cd3e9 Fix Ecovacs duration sensors (#108868) 2024-01-31 00:43:39 +01:00
TheJulianJES 1aa9807e26 Fix "deprecated" typo in ZHA smartenergy comment (#109173)
* Fix "deprecated" typo in ZHA smartenergy comment

* Fix in both places
2024-01-31 00:07:59 +01:00
Josh Pettersen b6126e7821 Convert gather calls into TaskGroups (#109010) 2024-01-30 12:38:45 -10:00
J. Nick Koston bea7dd756a Bump regenmaschine to 2024.01.0 (#109157) 2024-01-30 12:34:48 -10:00
Jack 2909e1c4fe Fix ZHA handling of power factor ElectricalMeasurement attribute sensor (#107641)
* Correct handling of power_factor ElectricalMeasurement attribute

The Zigbee Cluster Library defines PowerFactor as an int8 with value supported from -100 to 100.

Currently the zha sensor handler attempts to apply the ac_power_divisor and ac_power_multiplier formatters against the attribute value, the spec outlines that this should not be the case.

The impact of the current code is that quirks not using the default values of 1 are multiplying/dividing
power and power factor values prior to updating the cluster attribute.

This results in either a non-conformant power_factor e.g. the value was multiplied by 10 so that an ac_power_divider of 10 could be used, or the power readings sacrificing a point of measurement for lower readings.

Two quirks currently use this workaround:
 * ts0601_din_power.py
 * ts0601_rcbo.py

* Update ZHA Metering formatter to perform None check on _div_mul_prefix

To address feedback:
https://github.com/home-assistant/core/pull/107641#discussion_r1447547054

* _div_mul_prefix needs self reference

* Simplify None check for _div_mul_prefix

Co-authored-by: Joakim Plate <elupus@ecce.se>

* Updates to formatting and CI test typing fix

* Use ' | ' in place of Union

* Add tests for power_factor sensor

---------

Co-authored-by: Joakim Plate <elupus@ecce.se>
2024-01-30 23:11:18 +01:00
Robert Resch b409933d19 Add DurationConverter (#108865)
* Add DurationConverter

* Update withings snapshots

* Add sensor test

* Fix tests

* Update snapshots after #108902 was merged
2024-01-30 23:08:12 +01:00
escoand e7d5ae7ef6 Add Nextcloud update entity (#106690)
* add nextcloud update entity

* don't init update entity on older nextcloud versions

* ruff

* pass skipUpdate to module

* bump deps

* bump requirements

* Update homeassistant/components/nextcloud/update.py

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>

* Update homeassistant/components/nextcloud/update.py

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>

* bump requirements

* Update homeassistant/components/nextcloud/update.py

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>

* Update homeassistant/components/nextcloud/update.py

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2024-01-30 23:01:26 +01:00
TheJulianJES 0b09ffbcde Bump zha-quirks to 0.0.110 (#109161)
* Bump zha-quirks to 0.0.110

* Reflect removal of `IasWd` cluster for Heiman sensor in tests
2024-01-30 16:39:59 -05:00
Simone Chemelli d4c91bd0b7 Add a repair issue for Shelly devices with unsupported firmware (#109076)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-30 10:59:33 -10:00
Martin Hjelmare e1576d5998 Handle deprecated cloud tts voice (#109124)
* Handle deprecated cloud tts voice

* Add test

* Fix test logic

* Add breaks in ha version

* Adjust translation string
2024-01-30 21:58:16 +01:00
puddly 758e7489f1 Fix ZHA cover inversion handling missing attributes (#109151)
* Allow `window_covering_type` to be `None`

* Create a `window_covering_mode` attribute and simplify inversion switch

* Revert "Create a `window_covering_mode` attribute and simplify inversion switch"

This reverts commit 048d649b4d.

* check both config status and mode

* coverage

---------

Co-authored-by: David Mulcahey <david.mulcahey@icloud.com>
2024-01-30 15:51:38 -05:00
karwosts ef4e72f218 Fix precipitation typo in icons (#109156) 2024-01-30 10:32:53 -10:00
J. Nick Koston a22244707b Create an issue when database backups fail because the system runs out of resources (#109020) 2024-01-30 10:23:58 -10:00
Simone Chemelli 6174aa4e59 Remove Shelly RSSI sensor if Wi-FI is not configured (#108390)
* Remove Shelly RSSI sensor if Wi-FI is not configured

* fix tests
2024-01-30 21:18:54 +01:00
puddly 7fbfd44636 Filter ZHA light group color modes (#108861)
Ensure ZHA light color modes have proper defaults and are filtered
2024-01-30 15:14:03 -05:00
Jack 4ec3a17ed0 Add missing ZHA metering device types (#109126)
* Update smartenergy.py metering_device_type enums

* Added missing enum 127

* Enum 127 is also electric metering type

* Meter type constants and status enums in smartenergy cluster handler

Addresses 
https://github.com/home-assistant/core/pull/109126#discussion_r1471383887

Whilst I have the code open I've also added status handlers for the non-electrical meter types.

* New tests for different metering device type statuses
2024-01-30 15:09:15 -05:00
J. Nick Koston bcb9a10d5a Speed up listing issues via the repairs websocket api (#109149) 2024-01-30 09:57:08 -10:00
Jan Bouwhuis 04f0128a1c Simplify MQTT device triggers in automations (#108309)
* Simplify MQTT device trigger

* Add test non unique trigger_id

* Adjust deprecation warning

* Make discovery_id optional

* refactor double if

* Improve validation, add tests and deprecation comments

* Avoid breaking change

* Inmprove error message

* Match on discovery_id instead of discovery_info

* Revert an unrelated change

* follow up comments

* Add comment and test on device update with non unique trigger

* Update homeassistant/components/mqtt/device_trigger.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Update homeassistant/components/mqtt/device_trigger.py

Co-authored-by: Erik Montnemery <erik@montnemery.com>

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-30 20:50:39 +01:00
G Johansson 066a0ccc6d Add TURN_ON/OFF ClimateEntityFeature for HomeKit Device (#109137) 2024-01-30 08:57:41 -10:00
Ernst Klamer 70ee6a16ee Add event entity to Xiaomi-BLE integration (#108811) 2024-01-30 08:42:56 -10:00
Franck Nijhof 1f7bf7c2a9 2024.1.6 (#109129) 2024-01-30 19:38:38 +01:00
Paul Bottein 2b534af960 Update reload icons for automation and person service (#109147) 2024-01-30 19:36:57 +01:00
Jan Bouwhuis 6023980c2e Set TURN_ON and TURN_OFF feature on MQTT climate entities (#109146) 2024-01-30 19:35:46 +01:00
Robert Resch 7d2c6a1bb6 Add check for valid initial_suggested_unit (#108902)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-30 18:55:59 +01:00
Robert Resch c363edad4a Update Ecovacs binary sensor keys (#109145) 2024-01-30 18:55:37 +01:00
G Johansson 2b1d1340b7 Add TURN_ON/OFF ClimateEntityFeature for Mill (#108977) 2024-01-30 18:16:51 +01:00
G Johansson 36e3ba4834 Add TURN_ON/OFF ClimateEntityFeature for Netatmo (#108973) 2024-01-30 18:15:11 +01:00
G Johansson 6d43a5627a Add TURN_ON/OFF ClimateEntityFeature for CoolMasterNet (#108972) 2024-01-30 18:14:16 +01:00
G Johansson 8395992dbe Add TURN_ON/OFF ClimateEntityFeature for Advantage Air (#108971) 2024-01-30 18:13:30 +01:00
G Johansson 8f9969131b Add TURN_ON/OFF ClimateEntityFeature for Nexia (#108970)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-30 18:13:08 +01:00
G Johansson 822d5b3ce8 Add TURN_ON/OFF ClimateEntityFeature for Vera (#108969) 2024-01-30 18:12:15 +01:00
G Johansson 1acc9007d4 Add TURN_ON/OFF ClimateEntityFeature for Adax (#108966) 2024-01-30 18:11:42 +01:00
G Johansson 96ee8ba9a8 Add TURN_ON/OFF ClimateEntityFeature for Fritzbox (#108964) 2024-01-30 18:11:08 +01:00
G Johansson 63594bac89 Add TURN_ON/OFF ClimateEntityFeature for IntesisHome (#109134) 2024-01-30 18:05:03 +01:00
G Johansson 9d664c0fdd Add TURN_ON/OFF ClimateEntityFeature for Sensibo (#108962) 2024-01-30 18:03:46 +01:00
G Johansson c51a675893 Add TURN_ON/OFF ClimateEntityFeature for Overkiz (#109132) 2024-01-30 18:01:53 +01:00
G Johansson cf1adfbf24 Add TURN_ON/OFF ClimateEntityFeature for TOLO Sauna (#108965) 2024-01-30 18:01:06 +01:00
G Johansson 73f670e793 Add TURN_ON/OFF ClimateEntityFeature for Vicare (#109135) 2024-01-30 17:59:58 +01:00
G Johansson 7827f7bbaa Add TURN_ON/OFF ClimateEntityFeature for Balboa (#109139) 2024-01-30 17:58:46 +01:00
G Johansson b4c0e52ebd Add TURN_ON/OFF ClimateEntityFeature for ZHA (#108978) 2024-01-30 17:57:11 +01:00
G Johansson cac0d07549 Add TURN_ON/OFF ClimateEntityFeature for smartthings (#108979) 2024-01-30 17:56:52 +01:00
Joost Lekkerkerker 360697836f Add support for custom integrations in Analytics Insights (#109110) 2024-01-30 17:52:28 +01:00
Robert Resch d752ab3aa4 Update climate snapshots to fix CI (#109141) 2024-01-30 16:54:41 +01:00
G Johansson f768dd8761 Add TURN_ON/OFF ClimateEntityFeature for Shelly (#108967) 2024-01-30 15:44:31 +01:00
Franck Nijhof 1dff998a25 Bump version to 2024.1.6 2024-01-30 15:22:32 +01:00
Joost Lekkerkerker 1c6c925a2b Add missing abort message for Spotify (#109102)
* Shield for unregistered Spotify users

* Shield for unregistered Spotify users
2024-01-30 15:21:47 +01:00
puddly b7410fecb8 Bump ZHA dependency zigpy to 0.60.7 (#109082) 2024-01-30 15:21:43 +01:00
J. Nick Koston 8429a79796 Bump aiohttp to 3.9.3 (#109025)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-30 15:21:07 +01:00
Christopher Fenner 923259a8c6 Fix entity naming for heatpump heatings in ViCare (#109013)
Update strings.json
2024-01-30 15:19:55 +01:00
Joost Lekkerkerker 5903ec084b Add strings to Sensirion BLE (#109001) 2024-01-30 15:19:52 +01:00
Yuxin Wang 0532c4343a Fix stalls in config flow of APCUPSD (#108931)
Fix deadlock in config flow of APCUPSD
2024-01-30 15:19:49 +01:00
TheJulianJES b66339dbfe Reduce log level for creating ZHA cluster handler (#108809) 2024-01-30 15:19:45 +01:00
Jan Bouwhuis d697fd23b7 Fix processing supported color modes for emulated_hue (#108803) 2024-01-30 15:19:43 +01:00
Jan Bouwhuis d220cb5102 Fix unhandled exception on humidifier intent when available_modes is None (#108802) 2024-01-30 15:19:39 +01:00
Jan Bouwhuis 12126ebfda Fix google_assistant climate modes might be None (#108793) 2024-01-30 15:19:35 +01:00
puddly eeafb61b8f Reduce log level of ZHA endpoint handler init (#108749)
* Reduce the log level of endpoint handler init failure to debug

* Reduce log level in unit test
2024-01-30 15:19:32 +01:00
Jan Bouwhuis 58c96ff796 Fix alexa fails reporting the state in specific cases (#108743)
* Fix alexa fails reporting the state in specific cases

* More cases
2024-01-30 15:19:28 +01:00
Ståle Storø Hauknes 1b8c91dcb7 Bump airthings-ble to 0.6.0 (#108612) 2024-01-30 15:19:25 +01:00
Simone Chemelli b17b4c3350 Bump aiovodafone to 0.5.4 (#108592) 2024-01-30 15:19:22 +01:00
Michal Ziemski bbe80c6049 Update openerz-api to 0.3.0 (#108575) 2024-01-30 15:19:19 +01:00
Matrix 4db6f7ce59 Bump yolink-api to 0.3.6 fix aiomqtt breaking changes (#108555)
* bump yolink-api to 0.3.5

* bump yolink-api to 0.3.6
2024-01-30 15:19:16 +01:00
Florian Kisser 279f7264e7 Fix zha illuminance measured value mapping (#108547) 2024-01-30 15:19:12 +01:00
jmwaldrip 3a510f84a7 Fix SleepIQ setting FootWarmer timer (#108433)
* Fixing foot warmer timer bug

* Fixing bug where temperature wasnt assigned to number entity causing tests to fail
2024-01-30 15:19:05 +01:00
Allen Porter 18f663d498 Reduce overhead for google calendar state updates (#108133) 2024-01-30 15:16:35 +01:00
vexofp 8c6547f1b6 Pass default SSLContext instances to Octoprint custom HTTP sessions (#105351) 2024-01-30 15:16:30 +01:00
G Johansson bc720b48b4 Add TURN_OFF and TURN_ON to ClimateEntityFeature (#101673)
* Add ClimateEntityFeature.TURN_OFF

* Fixes

* Fixes

* wording

* Change to services

* Fixing

* Fixing

* Last bits

* Review comments

* Add hvac_modes checks

* Fixes

* Add tests

* Review comments

* Update snapshots

* balboa

* coolmaster

* ecobee

* mqtt

* nest

* plugwise

* smarttub

* whirlpool

* zwave_js

* fix test climate

* test climate

* zwave

* nexia

* nuheat

* venstar

* tado

* smartthings

* self.hvac_modes not None

* more tests

* homekit_controller

* homekit controller snapshot
2024-01-30 15:07:47 +01:00
Joakim Plate cece117c93 Flow rate unit conversions and device class (#106077)
* Add volume flow rate conversions

* Add missing translations

* Adjust liter unit and add gallons per minute

* Adjust to min instead of m for minutes

* Add matching class for number

* Add some tests for number and sensor platform

* Add deprecated constants

* Add explicit list of flow rate for check

This reverts commit 105171af31.
2024-01-30 15:01:08 +01:00
Mohamed a8e3df7e50 Fix readme images (#108767) 2024-01-30 15:00:57 +01:00
David F. Mulcahey 92795fecf5 Clean up ZHA cover entity and add support for inverting cover entities derived from the window covering cluster (#108238) 2024-01-30 13:59:00 +01:00
Marc Mueller 14766b6992 Update coverage to 7.4.1 (#109116) 2024-01-30 13:30:22 +01:00
cbrherms 6d09788673 Add missing status's to Nut (#109085) 2024-01-30 13:23:33 +01:00
Paul Bottein 694059837d Add input boolean icon translations (#109108)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-30 13:22:55 +01:00
Paul Bottein 72a28d68d3 Add script icon translations (#109107)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-01-30 13:22:27 +01:00
Marcel van der Veldt 4576fea511 Bump python-matter-server to 5.3.1 (#109118) 2024-01-30 13:19:51 +01:00
Simone Chemelli f7909ee34a Clean up Fritz options flow (#109111)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-01-30 13:19:40 +01:00
Christophe Gagnier a8915b85a4 Bump pytechnove to 1.2.1 (#109098)
* Bump TechnoVE library to 1.2.0

* Bump TechnoVE library to 1.2.1

* Exclude unknown status from the options

* Regenerate test_sensor.ambr for TechnoVE snapshot test

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-30 12:40:35 +01:00
Michael Hansen 9752e70675 Intents package combines sentences/responses per language (#109079) 2024-01-30 12:38:29 +01:00
Cody C a1f36c25d4 Remove erroneous reference to Google from Calendar integration (#109089) 2024-01-30 12:34:01 +01:00
Paul Bottein 30dec53b07 Add device tracker icon translations (#109109) 2024-01-30 12:32:02 +01:00
Robert Resch 6fdad44941 Improve invalid error messages in the config flows (#108075) 2024-01-30 12:24:19 +01:00
Marc Mueller 8ad0226241 Update attrs to 23.2.0 (#109115) 2024-01-30 12:22:41 +01:00
Paul Bottein bea3e63871 Add person icon translations (#109106) 2024-01-30 11:49:23 +01:00
Brett Adams 128700d41b Fix tessie tests (#109113)
* Fix device tracker test

* Snapshot cleanup
2024-01-30 11:34:30 +01:00
Simone Chemelli 09fb043f65 Add configure option to Vodafone Station for consider home (#108594)
* Add configure option to Vodafone Station for consider home

* add test

* improve tests

* reload on option change
2024-01-30 10:28:01 +01:00
Raman Gupta 821d273e4d Add support for ignoring zwave_js device config file changes (#108990)
* Add support for ignoring zwave_js device config file changes

* mistake

* fixes

* Small tweaks and add/update tests
2024-01-30 10:16:08 +01:00
Joost Lekkerkerker dcb5c0d439 Add missing abort message for Spotify (#109102)
* Shield for unregistered Spotify users

* Shield for unregistered Spotify users
2024-01-30 10:07:23 +01:00
Simone Chemelli 7359449636 Code quality for Shelly integration (#109061) 2024-01-30 09:47:52 +01:00
peebles b3c1e165db Bump simplisafe-python to 2024.01.0 (#109091) 2024-01-30 08:58:02 +01:00
Franck Nijhof 7268e9aa56 Bump/flush mypy cache (#109101) 2024-01-30 08:57:24 +01:00
Allen Porter 1069693292 Update calendar tests to use mock entities instead of demo platform (#105317)
* Update calendar tests to use mock entities instead of demo platform

* Add Generator type to fixture

* Fix generator syntax

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-30 06:36:14 +01:00
Raman Gupta 18d395821d Don't remove zwave_js devices automatically (#98145) 2024-01-29 21:36:41 -05:00
Simone Chemelli 03df4fde97 Code quality for Comelit tests (#109077) 2024-01-30 00:17:55 +01:00
puddly b9f48f62de Bump ZHA dependency zigpy to 0.60.7 (#109082) 2024-01-29 23:59:56 +01:00
Cody C c4fbf59e16 Fix duplicate Windy values showing in automations state selector (#108062) 2024-01-29 23:34:06 +01:00
Marcel van der Veldt 769da1ee23 Bump python-matter-server to version 5.3.0 (#109068) 2024-01-29 23:26:37 +01:00
Franck Nijhof 6ce16286d5 Update colorlog to 6.8.2 (#109072) 2024-01-29 23:24:17 +01:00
Franck Nijhof 3dec206421 Update apprise to 1.7.2 (#109071) 2024-01-29 23:17:44 +01:00
J. Nick Koston 825fed8319 Bump aiohttp to 3.9.3 (#109025)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-29 23:15:18 +01:00
Kristof Mariën 0013f184b3 Extract foscam base entity for reuse (#108893)
* Extract foscam base entity for reuse

* Cleanup

* More cleanup

* Cleanup constructor

* Use more constants
2024-01-29 23:02:19 +01:00
J. Nick Koston b5c1d3feeb Bump tesla-powerwall to 0.5.1 (#109069) 2024-01-29 22:50:06 +01:00
Brett Adams b711c491d5 Add doors and charge cable binary sensors to Tessie (#107172)
* Add doors

* Update homeassistant/components/tessie/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Add charge cable

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-29 22:00:26 +01:00
Paul Bottein 02ac985120 Use right initial attribute value for demo climate (#108719) 2024-01-29 21:46:04 +01:00
Robert Resch 872a59f405 Bump deebot-client to 5.0.0 (#109066) 2024-01-29 21:45:10 +01:00
Erik Montnemery 7ef3ed6107 Fix light color mode in govee_light_local (#108762) 2024-01-29 21:40:21 +01:00
Robert Svensson f1392f8519 Try to reconnect to UniFi on 403 (#109067) 2024-01-29 21:39:15 +01:00
Teemu R 6f88cd3273 Bump python-kasa to 0.6.2 (#109064) 2024-01-29 10:19:44 -10:00
wilburCforce 39d263599e Add lutron fan entity (#107402)
* add support for fan entity

* removed unused variables

* removed preset leftovers - not needed

* added deprecation for fans

* Update __init__.py

* fix typing

* initial updates based on review

* updated to search on unique ID instead of entity ID.

* updates for nits

* nits updates

* updates for new callback

* removed async per nits

* wrapped comments into shorter lines

* Add comment comma

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-29 20:58:12 +01:00
Ellis Michael a289ab9044 Don't check SSL certificate retrieving webos image (#104014)
I didn't test this in HA, but I did test this in a Python REPL, manually
querying my TV. The old method for ignoring SSL certificate validation
doesn't work at all. This method does and is supported by the aiohttp
documentation.

https://docs.aiohttp.org/en/stable/client_reference.html

Fixes #102109
2024-01-29 21:41:53 +02:00
Stephen Eisenhauer a9fe63ed90 Reject unifi uptime sensor updates if time delta is small (#108464)
* Reject unifi uptime sensor updates if time delta is small

* Revise uptime change threshold tuning

* Use StateType helper

* Treat missing or zero uptime as None (unknown)
2024-01-29 20:30:07 +01:00
Jan-Philipp Benecke 80bfd4cef7 Raise ValueError when last_reset set and not total state class (#108391)
* Raise ValueError when last_reset set and not total state class

* Fix test

* Break long string into smaller ones
2024-01-29 20:21:35 +01:00
Joost Lekkerkerker aefae5bdae Prepare Analytics insights for more sensors (#108976) 2024-01-29 19:34:53 +01:00
J. Nick Koston a6b426ca3e Add discovery support for the 2023 pro check model to mopkea (#109033) 2024-01-29 19:33:10 +01:00
Paul Bottein 4170a447fc Allow system and helper integrations to provide entity_component icons (#109045) 2024-01-29 19:26:55 +01:00
Marc Mueller be4631cbf8 Use unique artifact names for db jobs [ci] (#108653) 2024-01-29 19:15:36 +01:00
Jan-Philipp Benecke 0a0d4c37a9 Use constants instead of literals for api (#105955) 2024-01-29 18:09:00 +01:00
Martijn van der Pol b386960661 Add default parameter to as_datetime template function/filter (#107229)
* improve as_datetime

* Improve `as_datetime` Jinja filter/function

* review

* resolve more review items

* change test for datetime input

* Update docstring

* update docstrings for tests

* remove whitespace

* only_default

* Update do string and comment

* improve comment

* Adjust comment

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-29 18:05:44 +01:00
kpine be8af7bea3 Fix zwave_js set_config_parameter WS api regression (#109042) 2024-01-29 18:04:05 +01:00
karwosts f456e3a071 Allow delete_all_refresh_tokens to delete a specific token_type (#106119)
* Allow delete_all_refresh_tokens to delete a specific token_type

* add a test

* minor string change

* test updates

* more test updates

* more test updates

* fix tests

* do not delete current token

* Update tests/components/auth/test_init.py

* Update tests/components/auth/test_init.py

* Option to not delete the current token

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-29 17:09:23 +01:00
Simone Chemelli 075dab250e Code quality for Shelly tests (#109054)
* Code quality for Shelly tests

* clean-up
2024-01-29 16:02:51 +01:00
Malte Franken 6cf48068b5 Bump aio-geojson-nsw-rfs-incidents to 0.7 (#108885) 2024-01-29 15:52:20 +01:00
Cyrill Raccaud f82fb63dce Add bring integration (#108027)
* add bring integration

* fix typings and remove from strictly typed
- wait for python-bring-api to be ready for strictly typed

* make entity unique to user and list
- before it was only list, therefore the same list imported by two users would have failed

* simplify bring attribute

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* cleanup and code simplification

* remove empty fields in manifest

* __init__.py aktualisieren

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* __init__.py aktualisieren

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* strings.json aktualisieren

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* streamline async calls

* use coordinator refresh

* fix order in update call and simplify bring list

* simplify the config_flow

* Update homeassistant/components/bring/manifest.json

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>

* add unit testing for __init__.py

* cleanup comments

* use dict instead of list

* Update homeassistant/components/bring/todo.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* clean up

* update attribute name

* update more attribute name

* improve unit tests

- remove patch and use mock in conftest

* clean up tests even more

* more unit test inprovements

* remove optional type

* minor unit test cleanup

* Update .coveragerc

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-29 15:08:11 +01:00
Duco Sebel d631cad07f Add new sensors exposed by HomeWizard kWh meter (#108850)
* Add new sensors exposed by kWh meter

* Add entity translation placeholders

* Fix Mypy issue

* Adjusts tests

* Remove suggested display precision for disabled-by-default sensors

* Update test-snapshots

* Update snapshots
2024-01-29 14:42:16 +01:00
J. Nick Koston e9e289286e Set hassio api json encoding to avoid looking it up every request (#109032) 2024-01-29 14:32:53 +01:00
J. Nick Koston 5183eed0bc Avoid re-encoding the hassio command URL each request (#109031)
* Avoid reconstructing the hassio command URL each request

The host had to be re-encoded every time which creates an ip_address object

By doing a join we avoid this. It was actually happening twice since
we passed constructed the URL for testing and than passed it as a string
so aiohttp did it as well

* make url the same
2024-01-29 14:25:27 +01:00
Marc Mueller 030727b078 Remove deprecated event_loop fixtures in tests (#109048) 2024-01-29 14:24:58 +01:00
Duco Sebel dbc568cd53 Simplify HomeWizard sensor names (#108854)
* Simplify HomeWizard sensor names

* Simplify translations even more by using default device_class names
2024-01-29 13:24:00 +01:00
Isak Nyberg 789055fd68 Fix Permobil eula error (#107290)
* bump mypermobil to 0.1.8

* add eula check in config flow

* Update strings.json

* add test for email code with signed eula

* fix docstring character limit

* add placeholder description for MyPermobil
2024-01-29 12:48:55 +01:00
dependabot[bot] 0517e6049b Bump github/codeql-action from 3.23.1 to 3.23.2 (#109039)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.1 to 3.23.2.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3.23.1...v3.23.2)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-29 12:02:53 +01:00
Christophe Gagnier 91e7e5e01a Add binary sensors to TechnoVE integration (#108938)
* Add binary sensors to TechnoVE integration

* Add unit tests for TechnoVE binary sensors

* Implement PR feedback for TechnoVE

* Limit to appropriate sensors in TechnoVE tests

* Removed leftover code

* Implement feedback in TechnoVE PR #108938
2024-01-29 11:56:57 +01:00
Brett Adams d45227adbb Move asyncio lock in Teslemetry (#109044)
Use single wakelock per vehicle
2024-01-29 11:00:18 +01:00
Erik Montnemery fd87fd9559 Update attributes in Entity.__init__ in matter (#108877) 2024-01-29 10:32:15 +01:00
Jan-Philipp Benecke 95aea1488d Add pylint plugin to check if coordinator is placed in its own module (#108174)
* Add pylint plugin to check if coordinator is placed in its own module

* Remove unintended changes

* Remove pylint disable and let CI only fail on W,E,F

* Make check conventional

* Apply review suggestion

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Use option instead

* Remove pylint arguments from pre-commit

* Partially revert "Remove pylint disable and let CI only fail on W,E,F"

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-29 10:30:19 +01:00
Joost Lekkerkerker 57622acabf Bump python-homewizard-energy to v4.2.2 (#109038) 2024-01-29 08:42:24 +01:00
Joost Lekkerkerker b50f7041a3 Bump pytest-asyncio to 0.23.4 (#109027) 2024-01-29 07:10:17 +01:00
Arie Catsman 2b33feb341 Add phase entities to Enphase Envoy (#108725)
* add phase entities to Enphase Envoy

* Implement review feedback for translation strings

* Enphase Envoy multiphase review changes

Move device name logic to separate function.
Refactor native value for phases
Use dataclasses.replace for phase entities, add on-phase to base class as well, no need for phase entity descriptions anymore

* Enphase Envoy reviewe feedback

Move model determination to library.
Revert states test for future split to sensor test.

* Enphase_Envoy use model description from pyenphase library

* Enphase_Envoy refactor Phase Sensors

* Enphase_Envoy use walrus in phase sensor

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-28 22:46:47 +01:00
G Johansson e13a34df0f Separate fixture in Sensibo (#109000) 2024-01-28 22:43:22 +01:00
J. Nick Koston b54e282801 Remove follow symlinks support from CachingStaticResource (#109015) 2024-01-28 10:07:12 -10:00
Brett Adams b28e8a3cf0 Add tests to Teslemetry (#108884)
* Add tests

* Add partial sleep test

* Remove useless AsyncMock

* Review feedback

* Patch imports

* Fix mock_test
2024-01-28 21:04:44 +01:00
Joost Lekkerkerker a01e73a575 Add translation placeholder to Hue (#108848) 2024-01-28 20:40:21 +01:00
dependabot[bot] 7c59b0b43c Bump dorny/paths-filter from 2.12.0 to 3.0.0 (#108894)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-28 20:35:52 +01:00
J. Nick Koston 7667024a2f Remove extra confirmation step in tplink authenticated discovery flow (#109016)
Remove extra confirmation step in tplink discovery flow

After discovery, and manually entering credentials, we would ask
the user if they still wanted to set up the device. Instead we
now set create the config entry as soon as they enter correct
credentials as its clear that they want to proceed.
2024-01-28 20:23:07 +01:00
Tomer Shemesh 6de8304256 Update pylutron-caseta to 0.19.0 (#108987) 2024-01-28 09:18:28 -10:00
max2697 843c84a325 Add new virtual integration for opower City of Austin Utilities provider (#108337) 2024-01-28 19:54:16 +01:00
David F. Mulcahey c3222ef733 Fix statuses for ZHA attribute reporting configuration event (#108532)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-01-28 19:28:06 +01:00
Erik Montnemery 8abb4e5f52 Improve display of errors with no message in script trace (#108735) 2024-01-28 19:27:14 +01:00
suaveolent 5818b6141a Added type information to lupusec (#109004)
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2024-01-28 19:26:05 +01:00
Brett Adams 6ef0b9bf97 Bump tesla-fleet-api to 0.2.3 (#108992) 2024-01-28 19:25:17 +01:00
Joost Lekkerkerker 17b543513c Add strings to Sensirion BLE (#109001) 2024-01-28 19:18:22 +01:00
Christopher Fenner 19988b456c Fix entity naming for heatpump heatings in ViCare (#109013)
Update strings.json
2024-01-28 19:07:14 +01:00
Simone Chemelli f413ff2837 Add clima support to Comelit integration (#108858)
* Add clima support to Comelit integration

* address first part of review comments

* applied more review comments

* remove old multiplier

* removed preset modes (not always configured)

* small tweak

* apply StrEnum class
2024-01-28 18:50:38 +01:00
suaveolent f2100f80c4 Add device info to lupusec (#108910)
* added device info and unique id

* removed wrong attribute

* added base entity

* rename domain

* added entity.py to coveragerc

* added base entity for sensors and alarm panel

* add generic type translation

* rename functions

* rename device name to device model

* set _attr_name = None

* pass in only the entry_id instead of the full config_entry

* set unique id to device_id or entry id

* use deviceinfo class

* moved     _attr_name = None to entities

* Update homeassistant/components/lupusec/alarm_control_panel.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/lupusec/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/lupusec/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* remove DOMAIN from unique id

* removed redundant function

* Update homeassistant/components/lupusec/alarm_control_panel.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/lupusec/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-28 16:06:57 +01:00
RJPoelstra 9413d15c25 Add enum sensor to Vogel's MotionMount integration (#108643)
Add enum sensor entity
2024-01-28 15:02:39 +01:00
karwosts a2d707442a Fix error when passing a whole number to location selector (#108952)
* Fix error when passing an integer to location selector

* fix tests

* more fix tests

* don't mutate original dict

* remove string testcase
2024-01-28 14:13:00 +01:00
G Johansson c6ffd453d2 Bump pytrafikverket to 0.3.10 (#108984) 2024-01-28 11:26:02 +01:00
myztillx ba5d10be73 Separate ecobee start and end date/times for create_vacation service (#107255)
Separate start and end time msg and update service string
2024-01-28 11:21:52 +01:00
Matrix 40010620dd Bump yolink-api to 0.3.6 fix aiomqtt breaking changes (#108555)
* bump yolink-api to 0.3.5

* bump yolink-api to 0.3.6
2024-01-28 00:38:42 -05:00
Joost Lekkerkerker a793a5445f Add options flow to Analytics Insights (#108716)
* Add options flow to Analytics Insights

* Fix options flow function
2024-01-27 22:24:35 +01:00
J. Nick Koston 601988ecf2 Bump cryptography to 42.0.1 and pyOpenSSL to 24.0.0 (#108956)
* Bump cryptography to 42.0.1

changes: https://github.com/pyca/cryptography/compare/41.0.7...42.0.1

Note that more of the non-rust backend code has been removed
I had to handle that in
https://github.com/bdraco/chacha20poly1305-reuseable/releases/tag/v0.12.1

So there may be other downstream consumers that have a problem

* need pyOpenSSL as well

* too early before coffee
2024-01-27 21:30:00 +01:00
Arie Catsman 49667a26b2 Bump pyenphase to 1.19.0 (#108951) 2024-01-27 10:10:03 -10:00
mkmer 019e80b204 Use version property in Blink (#108911) 2024-01-27 19:45:13 +01:00
David F. Mulcahey 7069fb9508 Add model check to ZHA Sonoff manufacturer specific cluster handler (#108947) 2024-01-27 10:40:23 -05:00
jan iversen 3cc5ffaa4b Replace modbus number_validator by HA standard (#108939) 2024-01-27 16:39:33 +01:00
Brett Adams 858fb1fa37 Add snapshot testing to Tessie (#108346)
* Redo Binary Sensors

* Redo Button

* Redo Climate

* Stage unfixed platforms

* Redo Cover

* Redo device tracker

* Redo lock

* Redo Media Player

* Redo Number

* Redo Select

* Redo Sensor

* Redo Switch

* Redo Update

* Fix setup_platform

* Add mixing snapshot

* Fix config flow

* Centralise entity testing

* Update snapshot

* Rename test_entities

* Fix assert_entities
2024-01-27 13:43:55 +01:00
David F. Mulcahey 950660b953 Reorganize ZHA device availability code (#108856)
* Correct ZHA device availability at startup

* don't set available property from gateway

* cleanup
2024-01-27 07:17:05 -05:00
Jan Bouwhuis 677b06f502 Add comment to explain not using the core API in MQTT client (#108942) 2024-01-27 02:05:31 -10:00
matt7aylor dec9eb9ae4 Matter sensors for air quality measurements (#108173)
* Matter sensors for air quality measurements
Add sensors for CO2, PM1, PM2.5, PM10 and TVOC

* Add initial tests for matter air quality sensor

* Remove VOC data as requires unit extraction from cluster
2024-01-27 08:46:24 +01:00
Stefan Agner f35e0d8a55 Add more Thread vendor to brand mappings (#108899)
Thread: Add additional vendor to brand mappings

Add additional vendor to brand mappings for known Thread border
router vendors.
2024-01-27 08:43:08 +01:00
Yuxin Wang 16a90f8f19 Fix stalls in config flow of APCUPSD (#108931)
Fix deadlock in config flow of APCUPSD
2024-01-27 08:34:29 +01:00
J. Nick Koston 5dac5d5c7e Refactor logbook helpers to reduce splits and lookups (#108933)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-26 20:07:24 -10:00
Michael Hansen 61c6c70a7d Improved Assist debug (#108889)
* Differentiate builtin/custom sentences and triggers in debug

* Refactor so async_process runs triggers

* Report relative path of custom sentences file

* Add sentence trigger test
2024-01-26 23:04:45 -05:00
J. Nick Koston f96f4d31f7 Convert referenced registry functions to use cached_property (#108895)
* Convert referenced registry functions to use cached_property

These already implemented caching, but now that we can use cached_property
because the lock problem is solved, we can make the code simplier and faster

* missed one

* make them the same
2024-01-26 23:02:42 -05:00
J. Nick Koston 0120d00081 Switch unifiprotect to use async_update_reload_and_abort helper (#108934) 2024-01-26 22:55:58 -05:00
J. Nick Koston 5177d022e8 Switch imap to use async_update_reload_and_abort helper (#108935) 2024-01-26 22:55:26 -05:00
Robert Resch b1b53ac893 Add Ecovacs image entities (#108924)
* Add Ecovacs image entities

* Fix
2024-01-26 20:33:21 +01:00
Michael d007327cf5 Deprecate legacy Proximity entity (#108730)
* deprecate proximity entity

* add test

* extend tests

* adjust strings

* make issue fixable

* use default repairflow
2024-01-26 19:04:48 +01:00
Erik Montnemery b074334c07 Fix light color mode in advantage_air (#108875) 2024-01-26 07:22:49 -10:00
Jan Bouwhuis 7bec5ef6bc Use unknown color_mode for MQTT json lights if color mode is not set (#108909) 2024-01-26 14:42:47 +01:00
Josef Zweck 00c2ba69f7 Add webhook support to tedee integration (#106846)
* start work on webhooks

* start work on webhooks

* use background task

* websocket improvement

* add test

* add webhook id to mock_config_entry

* some changes

* add webhook to manifest

* fix test

* reset poll timer on webhook update

* reset poll timer on webhook update

* code cleanup

* generate webhook id in config flow

* fix merge

* undo var rename

* remove

* ruff

* ruff

* only delete specific webhook

* clarify warning

* version bump

* minor improvements

* requested changes

* unregister function

* move more of unregistration logic

* test pushed data

* add comment

* Update config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* ruff

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-26 10:48:16 +01:00
Joost Lekkerkerker d4ac5e492b Add entity registry test to Withings (#108900) 2024-01-26 09:33:56 +01:00
Christophe Gagnier b91e9edd16 Remove "max_current" from TechnoVE sensors (#108898) 2024-01-26 09:05:36 +01:00
J. Nick Koston dff5e45761 Small speed up to listing config entries in the websocket api (#108892) 2024-01-25 20:20:19 -10:00
J. Nick Koston 9de8409f48 Speed up security filter middleware (#108703)
* Speed up security filter middleware

Check the path and query string with the filter expression once instead
of checking the path and query string seperately. If we get a hit than
we check the query string to ensure we give a more verbose error about
where the filter hit.

Additionally since we see the same urls over and over, cache the unquote

* request.url is to expensive, cheaper to join

* aiohttp has a path_qs fast path

* construct the string outselves so it functions exactly as before
2024-01-26 00:17:18 -05:00
J. Nick Koston 617e8dd8a5 Small cleanup to entity platform translation fetching (#108890)
* Small cleanup to entity platform translation fetching

While I could not realize the performance improvemnet I had
hoped in #108800, I pulled this out since its a nice cleanup to avoid
constructing the inner function over and over.

* stale docstring
2024-01-26 00:14:44 -05:00
David F. Mulcahey 3f31a76692 Apply consistent naming to ZHA cluster handler implementations (#108851)
* Apply consistent naming to ZHA cluster handler implentations

* remove import alias

* remove if statement around assert in test
2024-01-25 20:09:38 -05:00
Massimo Savazzi eb85f469e9 Add binary sensor platform to JVC Projector (#108668)
* JVC Projector Binary Sensor

* Fixed PR as per request, removed Name, removed Read_Only.

* Fixed as per Joostlek suggestions

* Update homeassistant/components/jvc_projector/coordinator.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/jvc_projector/binary_sensor.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Added changes as per requests

* fixed docstring

* Update homeassistant/components/jvc_projector/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/jvc_projector/binary_sensor.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Added icon property to binary sensor. Removed icons.json file as not used anymore

* Fixed tests

* Added icons file

* Update homeassistant/components/jvc_projector/icons.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update test_binary_sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 22:49:03 +01:00
Simone Chemelli e1b1bb070d Bump aiocomelit to 0.8.2 (#108862)
* bump aicomelit to 0.8.1

* bump to 0.8.2
2024-01-25 21:40:06 +01:00
J. Nick Koston 3447e7fddb Fix ESPHome color modes for older firmwares (#108870) 2024-01-25 10:18:53 -10:00
Jonas Fors Lellky 2b799830db Add switch to flexit bacnet integration (#108866)
* Add platform switch to flecit_bacnet integration

* Move testing of the switch to it’s own test

* Assert correct method is called one time

* Test switch on/off error recovery

* Review comment
2024-01-25 20:59:36 +01:00
Diogo Gomes 12289f172d Filter only utility_meter select entities in reset service (#108855)
filter reset service to only utility_meters
2024-01-25 20:46:45 +01:00
dougiteixeira 7713cf377d Add utility meter option for the sensor to always be available (#103481)
* Adds option for the sensor to always be available

* Remove logger debug

* Add migration config entry version

* Update homeassistant/components/utility_meter/config_flow.py

Co-authored-by: Robert Resch <robert@resch.dev>

* Update homeassistant/components/utility_meter/sensor.py

Co-authored-by: Robert Resch <robert@resch.dev>

* Remove migration config entry version

* Change CONF_SENSOR_ALWAYS_AVAILABLE optional in CONFIG_SCHEMA

* Remove CONF_SENSOR_ALWAYS_AVAILABLE in tests

* Remove CONF_SENSOR_ALWAYS_AVAILABLE in tests

* Remove CONF_SENSOR_ALWAYS_AVAILABLE in tests

* Add option in yaml

* Update homeassistant/components/utility_meter/strings.json

Co-authored-by: Robert Resch <robert@resch.dev>

* Update homeassistant/components/utility_meter/strings.json

Co-authored-by: Robert Resch <robert@resch.dev>

* Changes tests

* Add test_always_available

* Use freezegun

* Update homeassistant/components/utility_meter/strings.json

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-25 20:46:33 +01:00
suaveolent faad9a7584 Add ConfigFlow for Lupusec (#108740)
* init support for config flow for lupusec

* correctly iterate over BinarySensorDeviceClass values for device class

* bump lupupy to 0.3.2

* Updated device info for lupusec

* revert bump lupupy for separate pr

* fixed lupusec test-cases

* Change setup to async_setup

* remove redundant check for hass.data.setdefault

* init support for config flow for lupusec

* correctly iterate over BinarySensorDeviceClass values for device class

* bump lupupy to 0.3.2

* Updated device info for lupusec

* revert bump lupupy for separate pr

* fixed lupusec test-cases

* Change setup to async_setup

* remove redundant check for hass.data.setdefault

* resolve merge error lupupy

* connection check when setting up config entry

* removed unique_id and device_info for separate pr

* changed name to friendly name

* renamed LUPUSEC_PLATFORMS to PLATFORMS

* preparation for code review

* necessary changes for pr

* changed config access

* duplicate entry check

* types added for setup_entry and test_host_connection

* removed name for lupusec system

* removed config entry from LupusecDevice

* fixes for sensors

* added else block for try

* added integration warning

* pass config to config_flow

* fix test cases for new config flow

* added error strings

* changed async_create_entry invocation

* added tests for exception handling

* use parametrize

* use parametrize for tests

* recover test

* test unique id

* import from yaml tests

* import error test cases

* Update tests/components/lupusec/test_config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* fixed test case

* removed superfluous test cases

* self._async_abort_entries_match added

* lib patching call

* _async_abort_entries_match

* patch lupupy lib instead of test connection

* removed statements

* test_flow_source_import_already_configured

* Update homeassistant/components/lupusec/config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* removed unique_id from mockentry

* added __init__.py to .coveragerc

---------

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 18:52:30 +01:00
Michael bb8828c86f Address late review on auth (#108852) 2024-01-25 18:15:35 +01:00
Frank Wickström 1b7109fb95 Bump pyhuum to 0.7.10 (#108853)
* Upgrade pyhuum 0.7.9 -> 0.7.10

This fixes dependency issues with Black and ruff

* Update requirements_all.txt

* Update requirements_test_all.txt

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 17:52:03 +01:00
mkmer 24c9bddae0 Bump blinkpy to 0.22.6 (#108727)
Remove update after snap - now handled in library
2024-01-25 15:23:37 +01:00
David F. Mulcahey 74a60929e4 Use Zigpy definition objects in ZHA cluster handlers (#108383)
* use zigpy def objects in ZHA cluster handlers

* shorten with direct imports

* shorten with rename due to clash
2024-01-25 08:47:26 -05:00
TheJulianJES 4138b5c308 Reduce log level for creating ZHA cluster handler (#108809) 2024-01-25 08:45:11 -05:00
Martin Hjelmare 53b73bd0bd Make device tracker latitude and longitude optional (#108838)
* Make device tracker latitude and longitude optional

* Update test
2024-01-25 13:25:17 +01:00
Duco Sebel 1fa7ceede3 Use entity translations placeholders in HomeWizard (#108741)
* Adopt Entity placeholders

* Undo some snapshot changes
2024-01-25 13:15:20 +01:00
Cody C 6e59568ba3 Use feed name as entity name in GeoJSON (#108753)
* Add support for entity name in GeoJSON

Previously GeoJSON names were just the config entry ID. This is not very user friendly. Particularly so when there are many config entries and many, many entities from those same many config entries.

* Update GeoJSON tests to support entity names
2024-01-25 13:05:07 +01:00
Frank Wickström 6f81d21a35 Add Huum integration (#106420)
* Add Huum integration

* Use DeviceInfo instead of name property for huum climate

* Simplify entry setup for huum climate entry

* Don’t take status as attribute for huum climate init

* Remove unused import

* Set unique id as entity id in huum init

* Remove unused import for huum climate

* Use entry ID as unique ID for device entity

* Remove extra newline in huum climate

* Upgrade pyhuum to 0.7.4

This version no longer users Pydantic

* Parameterize error huum tests

* Update all requirements after pyhuum upgrade

* Use Huum specific naming for ConfigFlow

* Use constants for username and password in huum config flow

* Use constants for temperature units

* Fix typing and pylint issues

* Update pyhuum to 0.7.5

* Use correct enums for data entry flow in Huum tests

* Remove test for non-thrown CannotConnect in huum flow tests

* Refactor failure config test to also test a successful flow after failure

* Fix ruff-format issues

* Move _status outside of __init__ and type it

* Type temperature argument for _turn_on in huum climate

* Use constants for auth in huum config flow test

* Refactor validate_into into a inline call in huum config flow

* Refactor current and target temperature to be able to return None values

* Remove unused huum exceptions

* Flip if-statment in async_step_user flow setup to simplify code

* Change current and target temperature to be more future proof

* Log exception instead of error

* Use custom pyhuum exceptions

* Add checks for duplicate entries

* Use min temp if no target temp has been fetched yet when heating huum

* Fix tests so that mock config entry also include username and password

* Fix ruff styling issues

I don’t know why it keeps doing this. I run `ruff` locally, and then it does not complain, but CI must be doing something else here.

* Remove unneded setting of unique id

* Update requirements

* Refactor temperature setting to support settings target temparature properly
2024-01-25 12:55:55 +01:00
Brett Adams 909cdc2e5c Add Teslemetry Integration (#108147)
* Copy Paste Find Replace

* Small progress

* wip

* more wip

* Add SSE listen and close

* More rework

* Fix coordinator

* Get working

* Bump to 0.1.3

* Push to 0.1.4

* Lots of fixes

* Remove stream

* Add wakeup

* Improve set temp

* Be consistent with self

* Increase polling until streaming

* Work in progress

* Move to single climate

* bump to 0.2.0

* Update entity

* Data handling

* fixes

* WIP tests

* Tests

* Delete other tests

* Update comment

* Fix init

* Update homeassistant/components/teslemetry/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Add Codeowner

* Update coverage

* requirements

* Add failure for subscription required

* Add VIN to model

* Add wake

* Add context manager

* Rename to wake_up_if_asleep

* Remove context from coverage

* change lock to context

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Improving Logger

* Add url to subscription error

* Errors cannot markdown

* Fix logger

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* rename logger

* Fix error logging

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-25 12:54:47 +01:00
Joost Lekkerkerker 114bf0da34 Update Lutron in callback (#108779)
* Update Lutron in callback

* Update Lutron in callback

* Remove abstractmethod

* Don't do IO in constructor

* Split fetching and setting
2024-01-25 12:54:31 +01:00
Duco Sebel 0c9a30ab69 Add support for externally connected utility devices in HomeWizard (#100684)
* Backport code from #86386

* Add tests

* Remove local dev change

* Implement device class validation based on unit

* Swap sensor and externalsensor classes (based on importance)

* Use translations for external sensor entities

* Re-add meter identifier as sensor for external devices

* Add migration for Gas identifier

* Rename HomeWizardExternalIdentifierSensorEntity class

* Fix all existing tests

* Reimplement tests for extenal devices with smapshots

* Remove non-used 'None' type in unit

* Add migration test

* Clean up parameterize

* Add test to fix last coverage issue

* Fix non-frozen mypy issue

* Set device name via added EntityDescription field

* Remove device key translations for external sensors,

* Bring back translation keys

* Set device unique_id as serial number

* Remove meter identifier sensor

* Simplify external device initialization

* Adjust tests

* Remove unused gas_meter_id migration

* Remove external_devices redaction

* Remove old gas meter id sensor after migration
2024-01-25 12:51:50 +01:00
RoboMagus c54b65fdf0 Add 'last_reset' for 'total' state_class template sensor (#100806)
* Add last_reset to trigger based template sensors

* Add last_reset to state based template sensors

* CI check fixes

* Add pytests

* Add test cases for last_reset datetime parsing

* Add test for static last_reset value

* Fix ruff-format
2024-01-25 11:12:03 +01:00
Teemu R 3965f20526 Bump python-kasa to 0.6.1 (#108831) 2024-01-25 10:50:01 +01:00
dependabot[bot] 7efc82b14c Bump dorny/paths-filter from 2.11.1 to 2.12.0 (#108826)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-25 10:36:13 +01:00
J. Nick Koston 82d21136bd Do not try to cleanup invalid config entries without an AccessoryPairingID (#108830) 2024-01-24 22:49:27 -10:00
Erik Montnemery da7d2ef228 Fix light color mode in zwave_js (#108783) 2024-01-25 09:46:22 +01:00
Martin Hjelmare fabf8802f5 Fix matter color modes (#108804)
* Fix matter light color modes

* Make onoff light fixture only onoff

* Make dimmable light only a dimmable light

* Make color temp light fixture only a color temp light
2024-01-25 09:15:38 +01:00
Josef Zweck c9bef39c9a Update pytedee_async to 0.2.12 (#108800) 2024-01-25 08:47:05 +01:00
Robert Svensson 195ef6d769 Fix lights reporting unsupported colormodes in deCONZ (#108812) 2024-01-25 08:38:57 +01:00
J. Nick Koston 0628546a0e Add basic tests for powerview scenes (#108818) 2024-01-24 17:50:06 -10:00
J. Nick Koston c01e8288c1 Convert http auth internals to normal functions (#108815)
Nothing was being awaited here anymore, these can be normal functions
2024-01-24 22:34:52 -05:00
J. Nick Koston d588ec8202 Fix ESPHome not fully removing entities when entity info changes (#108823) 2024-01-24 17:29:11 -10:00
John Hess 7f56330e3b Bump thermopro-ble to 0.9.0 (#108820) 2024-01-24 17:26:58 -10:00
Michael f5d439799b Add expiration of unused refresh tokens (#108428)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-24 13:24:22 -10:00
Robert Resch 0d22822ed0 Add Ecovacs diagnostics (#108791)
* Add Ecovacs diagnostics

* Fix test
2024-01-24 23:30:14 +01:00
Kevin Worrel 02f7165ca5 Add super chlorination services to screenlogic (#108048)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-24 12:28:27 -10:00
Jan Bouwhuis 134cc78400 Fix processing supported color modes for emulated_hue (#108803) 2024-01-24 22:15:00 +01:00
Jan Bouwhuis 066692506c Fix unhandled exception on humidifier intent when available_modes is None (#108802) 2024-01-24 22:14:15 +01:00
J. Nick Koston de38e7a367 Bump aioshelly to 8.0.1 (#108805) 2024-01-24 10:56:26 -10:00
CR-Tech df9faeae6f Add write_registers support for Fan Mode in modbus (#108053) 2024-01-24 20:48:55 +01:00
Paul Bottein 0d633f33fa Set right icon for set_humidity climate service (#108801) 2024-01-24 20:40:48 +01:00
Jan-Philipp Benecke ddf02959f4 Bump area registry storage minor version to 4 (#108798) 2024-01-24 20:31:43 +01:00
J. Nick Koston f883f721c8 Avoid copying translations for single components (#108645) 2024-01-24 19:52:34 +01:00
Martin Hjelmare 852e4c21c6 Complete device tracker entity tests (#108768) 2024-01-24 19:50:55 +01:00
Jan Bouwhuis 30c9a70dbf Fix google_assistant climate modes might be None (#108793) 2024-01-24 19:47:07 +01:00
Erik Montnemery 909e58066d Fix changed_variables in automation and script traces (#108788) 2024-01-24 19:12:45 +01:00
Luke Lashley aa86d87a31 Bump python-roborock to 39.1 (#108751) 2024-01-24 19:11:39 +01:00
Erik Montnemery 9c727e5ea8 Add icon to areas (#108650) 2024-01-24 19:11:03 +01:00
Simone Chemelli c6a1ec96f4 Add Shelly CoAP port to default container port (#108016)
* Add Shelly CoAP port to default container port

* Update devcontainer.json
2024-01-24 19:00:57 +01:00
Jan Bouwhuis a90d8b6a0c Stabilize alexa discovery (#108787) 2024-01-24 18:56:21 +01:00
Robert Resch 5467fe8ff1 Add Ecovacs select entities (#108766)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-24 17:17:43 +01:00
Erik Montnemery aaf1cc818a Fix light color mode in tradfri (#108761) 2024-01-24 16:55:18 +01:00
Erik Montnemery 4b2b4ae36b Add invert option to switch_as_x (#107535)
* Add invert option to switch_as_x

* Store invert flag in entity options

* Add options flow

* Update strings

* Add tests

* Address review comment

* Update homeassistant/components/switch_as_x/strings.json

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Address review comments

* Inline get_suggested which was only used once in tests

* Address review comments

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-24 16:35:08 +01:00
Erik Montnemery c3de193e2e Adjust color_mode checks when lights render effects (#108737)
* Adjust color_mode checks when lights render effects

* Improve comment

* Avoid calling effect property if light does not support effects

* Fix test
2024-01-24 15:44:45 +01:00
Erik Montnemery 431e4b38ac Improve tests of script trace (#108733) 2024-01-24 15:29:35 +01:00
Erik Montnemery 97e038eb2e Fix light color mode in netatmo (#108759) 2024-01-24 15:29:16 +01:00
Erik Montnemery afbd71514f Fix light color mode in advantage_air (#108757) 2024-01-24 15:28:59 +01:00
Erik Montnemery 4a2a7872fb Fix light color mode in tplink (#108760) 2024-01-24 15:28:40 +01:00
Erik Montnemery dc672ff62c Fix light color mode in fritzbox (#108758) 2024-01-24 15:28:14 +01:00
Erik Montnemery fcf72ae0c2 Fix race when deleting an automation (#108772) 2024-01-24 15:27:09 +01:00
Jack af1ba4b22f Add ZHA metering summation received sensor (#107576)
* Add sensor for exposing Summation Received from Metering cluster

* Ruff format

* Test updates for new sensor

* Update test_sensor.py to support summation_received

* Correct report_count for smart meterning and some pylint warning fixes
2024-01-24 07:56:49 -05:00
Erik Montnemery 8fa93f6fe5 Bump comments in light indicating backwards compatibility plan (#108770) 2024-01-24 13:49:26 +01:00
Jan Klausa f828b1ce85 Bump py-switchbot-api to 2.0.0 (#108721)
* Update switchbot-api to 2.0.0

* bump requirements
2024-01-24 12:36:41 +01:00
Daniel a67113a95a Parse template result in async_render_with_possible_json_value (#99670)
* Optionally parse templates rendered with possible json

* Remove duplicate strip

* Add tests for parsing template result
2024-01-24 12:12:28 +01:00
Markus Jacobsen 1d7e0e7fe4 Add bang_olufsen integration (#93462)
* Add bangolufsen integration

* add untested files to .coveragerc

* Simplify integration to media_player platform

* Remove missing files from .coveragerc

* Add beolink_set_relative_volume custom service
Tweaks

* Remove custom services
Remove grouping as it was dependent on custom services

* Update API to 3.2.1.150.0
Reduce and optimize code with feedback from joostlek
Tweaks

* Updated testing

* Remove unused options schema

* Fix bugfix setting wrong state

* Fix wrong initial state

* Bump API

* Fix Beosound Level not reconnecting properly

* Remove unused constant

* Fix wrong variable checked to determine source

* Update integration with feedback from emontnemery

* Update integration with feedback from emontnemery

* Remove unused code

* Move API client into dataclass
Fix not all config_flow exceptions caught
Tweaks

* Add Bang & Olufsen brand

* Revert "Add Bang & Olufsen brand"

This reverts commit 57b2722078.

* Remove volume options from setup
Simplify device checks
rename integration to bang_olufsen
update tests to pass
Update API

* Remove _device from base
Add _device to websocket

* Move SW version device update to websocket
Sort websocket variables

* Add WebSocket connection test

* Remove unused constants

* Remove confirmation form
Make discovered devices get added to Home Assistant immediately
Fix device not being available on mdns discovery
Change config flow aborts to forms with error

* Update tests for new config_flow
Add missing api_exception test

* Restrict manual and discovered IP addresses to IPv4

* Re-add confirmation step for zeroconf discovery
Improve error messages
Move exception mapping dict to module level

* Enable remote control WebSocket listener

* Update tests
2024-01-24 12:00:51 +01:00
Steven B 393dee1524 Handle IP address changes properly for tplink (#108731)
* Update device config for SETUP_RETRY and use CONF_HOST on startup

* Make entry state checks use a constant

Co-authored-by: J. Nick Koston <nick@koston.org>

* Update tests

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-24 11:24:44 +01:00
Kristof Mariën 1cb15a398c Add more device info to foscam camera (#108177) 2024-01-24 11:13:45 +01:00
suaveolent 07449659a5 Bump lupupy to 0.3.2 (#108756)
bump lupupy to 0.3.2

Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
2024-01-24 09:20:54 +01:00
J. Nick Koston 21f646c5a7 Add LeaOne integration (#108617) 2024-01-23 22:08:20 -10:00
Paul Bottein 80e66c12b8 Add humidifier attributes icon translations (#108718) 2024-01-24 08:45:30 +01:00
Paul Bottein 00c4913401 Add fan attributes icon translations (#108722) 2024-01-24 08:44:45 +01:00
Paul Bottein 8d1665df16 Use fixed state icon for climate domain (#108723) 2024-01-24 08:44:10 +01:00
Duco Sebel f7b0a15aa5 Bumb python-homewizard-energy to 4.2.1 (#108738) 2024-01-24 08:31:23 +01:00
Joost Lekkerkerker c7db8a0bee Add translation placeholders for TPLink power strip (#108710) 2024-01-24 08:23:39 +01:00
puddly 22eed5419e Reduce log level of ZHA endpoint handler init (#108749)
* Reduce the log level of endpoint handler init failure to debug

* Reduce log level in unit test
2024-01-23 21:04:59 -05:00
J. Nick Koston 87898b7487 Add 3C52A1 oui to tplink for tapo l5 devices (#108750) 2024-01-23 21:04:43 -05:00
Michael Hansen cffd95a015 Pause Wyoming satellite on mute (#108322)
Pause satellite on mute
2024-01-23 20:37:25 -05:00
Michael Hansen d8a1c58b12 Fix intent loading and incorporate unmatched entities more (#108423)
* Incorporate unmatched entities more

* Don't list targets when match is incomplete

* Add test for out of range
2024-01-23 20:31:57 -05:00
Jan Bouwhuis c725238c20 Fix alexa fails reporting the state in specific cases (#108743)
* Fix alexa fails reporting the state in specific cases

* More cases
2024-01-23 23:36:44 +01:00
Erik Montnemery 823f268054 Randomize thread network names (#108302)
* Randomize thread network names

* Use PAN ID as network name suffix

* Apply suggestions from code review

Co-authored-by: Stefan Agner <stefan@agner.ch>

* Update tests

* Format code

* Change format of network name again

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2024-01-23 22:58:28 +01:00
jan iversen d8f16c14ab Get modbus coverage back to 100% (#108734)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-23 21:50:25 +01:00
Marc Mueller a6807b8a7f Improve vizio typing (#108042) 2024-01-23 21:20:15 +01:00
Robert Resch 37f5c75752 Add sensors to Ecovacs (#108686)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-23 21:17:18 +01:00
jan iversen bfd9bd3ff2 Bump pymodbus to v2.6.3 (#108736) 2024-01-23 21:12:07 +01:00
Erik Montnemery 069c2b7e38 Improve tests of script trace (#108717)
* Improve tests of script trace

* Update tests after rebase

* Apply suggestions from code review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Apply suggestions from code review

* Adjust

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-23 19:53:09 +01:00
mkmer ad14ebe7e9 Use new config entry update/abort handler in Honeywell (#108726)
Use update_reload helper in Honeywell
2024-01-23 17:15:37 +01:00
mkmer 592794566e Bump AIOSomecomort to 0.0.25 (#107815) 2024-01-23 16:27:41 +01:00
Jan-Philipp Benecke 13887793a7 Remove home_plus_control and mark as virtual integration supported by Netatmo (#107587)
* Mark home_plus_control a virtual integration using Netatmo

* Apply code review suggestion

Co-authored-by: Robert Resch <robert@resch.dev>

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 16:18:03 +01:00
mkmer f3b1f47d34 Return PRESET_NONE in Honeywell (#108599)
* Return PRESET_NONE

* format preset_hold

* Address Hold in tests

* Add translations
2024-01-23 15:57:55 +01:00
Michal Ziemski 074d59f849 Update openerz-api to 0.3.0 (#108575) 2024-01-23 15:14:41 +01:00
Erik Montnemery 9bff039d17 Add set_conversation_response script action (#108233)
* Add set_conversation_response script action

* Update homeassistant/components/conversation/trigger.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Revert accidental change

* Add test

* Ignore mypy

* Remove incorrect callback decorator

* Update homeassistant/helpers/script.py

* Add test with templated set_conversation_response

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-23 09:13:42 -05:00
Dave Leaver e3a73c12bc Add airtouch5 (#98136)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 14:49:47 +01:00
Peter Hall 701404fa0b Add ZHA entities for snzb06p (#107379)
* Updating zha component to add entities for snzb06p

Sonoff snzb06p presence detector needs some custom entities.

* Updating ZCL_INIT_ATTRS for sonoff specific attrs

* updating cluster name due to change in quirk
2024-01-23 08:31:32 -05:00
Joost Lekkerkerker 5dbcdfc6fb Bump python-homeassistant-analytics to 0.6.0 (#108713) 2024-01-23 13:05:40 +01:00
Jan-Philipp Benecke 2e19829d88 Use new config entry update/abort handler in co2signal (#108715) 2024-01-23 13:03:16 +01:00
G Johansson 65581e94ea Add config flow for Time & Date (#104183)
Co-authored-by: Erik <erik@montnemery.com>
2024-01-23 12:18:31 +01:00
Michael eaa32146a6 Add sensor platform to Proximity (#101497)
* add sensor platform

* transl. of distance already covered by dev.class

* add untested files to .coveragerc

* add missing state translations

* remove translation key for distance sensor

* proximity entity do not use HA number system

* fix

* extend tests

* make const final to be usable as key for TypedDict

* remove proximity from .coveragerc

* replace typeddict by simple dict definition

* make black happy

* rework to create proximity sensor for each tracked entity and always recalculate all entites

* apply review comments

* move direction of travel calc out of the loop

* make direction of travel an enum sensor

* remove unique_id from sensors

* don't set distance=0 when in monitored zone

* set None when direction is unknown

* keep distance 0 in case arrived for legacy entity

* exclude from nearest when in ignored zone

* keep distance=0 when arrived

* use description name for entity name

* remove uneeded typing

* uses consistent variable name

* fix debug messages

* use entity_id as loop var

* rename device_state to tracked_entity_state

* correct MRO for sensor entity classes
2024-01-23 10:56:02 +01:00
Allen Porter fa63719161 Reduce overhead for google calendar state updates (#108133) 2024-01-23 10:50:00 +01:00
Joost Lekkerkerker d9f1450ee6 Add Homeassistant Analytics Insights integration (#107634)
* Add Homeassistant Analytics integration

* Add Homeassistant Analytics integration

* Add Homeassistant Analytics integration

* Fix feedback

* Fix test

* Update conftest.py

* Add some testcases

* Make code clear

* log exception

* Bump python-homeassistant-analytics to 0.2.1

* Bump python-homeassistant-analytics to 0.3.0

* Change domain to homeassistant_analytics_consumer

* Add integration name to config flow selector

* Update homeassistant/components/homeassistant_analytics_consumer/manifest.json

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>

* Fix hassfest

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* Bump python-homeassistant-analytics to 0.4.0

* Rename to Home Assistant Analytics Insights

* Update homeassistant/components/analytics_insights/config_flow.py

Co-authored-by: Robert Resch <robert@resch.dev>

* Update homeassistant/components/analytics_insights/manifest.json

Co-authored-by: Robert Resch <robert@resch.dev>

* Rename to Home Assistant Analytics Insights

* add test

* Fallback to 0 when there is no data found

* Allow to select any integration

* Fix tests

* Fix tests

* Update tests/components/analytics_insights/conftest.py

Co-authored-by: Robert Resch <robert@resch.dev>

* Update tests/components/analytics_insights/test_sensor.py

Co-authored-by: Robert Resch <robert@resch.dev>

* Fix format

* Fix tests

---------

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-23 10:32:31 +01:00
Teemu R 52ede95c4f Scrub internal data for newer tplink devices (#108704) 2024-01-23 09:08:03 +01:00
Koen van Zuijlen acd07b4826 Fix for justnimbus integration (#99212)
* Fix for justnimbus integration

* Fixed tests and moved const

* fix: added reauth flow

* fix: fixed reauth config flow

* chore: added config_flow reauth test

* chore: Processed PR feedback

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-23 08:56:11 +01:00
G Johansson f9a4840ce2 Group sensor calculate attributes (#106972)
* Group sensor calculate attributes

* Use entity helpers

* Fix sensor tests

* Test change of uom

* Add tests and fix UoM issue

* Fix test

* Fix state class

* repair and logs

* delete issues

* pass through hass

* Update descriotion text to be more descriptive

* Comments

* Add pr to comment

* fix if in updating

* Fix test valid units

* Fix strings

* Fix issues
2024-01-23 08:16:51 +01:00
Erik Montnemery 329eca4918 Store area registry entries in a UserDict (#108656)
* Store area registry entries in a UserDict

* Address review comments
2024-01-23 08:14:28 +01:00
J. Nick Koston 2eea658fd8 Convert getting and removing access tokens to normal functions (#108670) 2024-01-22 20:51:33 -10:00
J. Nick Koston 904032e944 Bump habluetooth to 2.4.0 (#108695)
changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v2.3.1...v2.4.0
2024-01-23 07:46:47 +01:00
J. Nick Koston 60149e9b9e Add OUI 5C628B to tplink (#108699)
Seen on 530E(US)
2024-01-23 07:21:44 +01:00
Christophe Gagnier 4358c24edd Add zeroconf to TechnoVE integration (#108340)
* Add zeroconf to TechnoVE integration

* Update homeassistant/components/technove/config_flow.py

Co-authored-by: Teemu R. <tpr@iki.fi>

* Update zeroconf test to test if update is called.

When a station is already configured and it is re-discovered through zeroconf, make sure we don't call its API for nothing.
2024-01-23 06:32:42 +01:00
J. Nick Koston 6fb86f179a Use new config entry update/abort helper in bond (#108690)
Use new config entry update/abort helper in bond

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-23 06:09:33 +01:00
J. Nick Koston 7c86ab14c3 Refactor service enumeration methods to better match existing use cases (#108671) 2024-01-22 14:21:17 -10:00
J. Nick Koston f6bc5c98b3 Handle tplink credential change at run time (#108692) 2024-01-22 13:30:21 -10:00
J. Nick Koston 12b41c35ec Use new config entry update/abort helper in sense (#108691) 2024-01-22 13:24:15 -10:00
J. Nick Koston 426fce93aa Use new config entry update/abort helper in apple_tv (#108688) 2024-01-22 13:24:03 -10:00
J. Nick Koston def42c6da0 Use new config entry update/abort helper in enphase-envoy (part 2) (#108689)
Use new config entry update/abort helper in enphase_envoy

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 17:19:55 -05:00
Jan-Philipp Benecke 0b79504cf0 Extend config entry update/abort helper to also update unique id (#108681)
* Extend config entry update/abort helper to also update unique id

* Move kwarg to end

* Make additionals kwargs only
2024-01-22 23:01:55 +01:00
J. Nick Koston 9ee8832367 Use new config entry update/abort helper in onvif (#108680)
Use new config entry update/abort helper in onvif

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 23:01:08 +01:00
J. Nick Koston 17202e21f3 Use new config entry update/abort helper in samsungtv (#108683)
Use new config entry update/abort helper in samsungtv

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:59:50 +01:00
J. Nick Koston faf52aa2ed Use new config entry update/abort helper in shelly (#108684)
Use new config entry update/abort helper in shelly

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:59:17 +01:00
J. Nick Koston d825c85351 Use new config entry update/abort helper in enphase_envoy (#108679)
Use new config entry update/abort helper in enphase_envoy

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:43:12 +01:00
J. Nick Koston 4bf4bc7e9b Use new config entry update/abort helper in synology_dsm (#108682) 2024-01-22 11:39:57 -10:00
J. Nick Koston 07926660bc Use new config entry update/abort helper in isy994 (#108678)
Use new config entry update/abort helper in isy994

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:33:49 +01:00
J. Nick Koston 4378a171b2 Use new config entry update/abort helper in yalexs_ble (#108675)
Use new config entry update/abort helper in yalexs_ble

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:25:48 +01:00
J. Nick Koston bd7eb01546 Use new config entry update/abort helper in xiaomi_ble (#108677)
Use new config entry update/abort helper in xiaomi_ble

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:16:27 +01:00
J. Nick Koston d7273d66ab Use new config entry update/abort helper in bthome (#108676)
Use new config entry update/abort helper in bthome

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:14:00 +01:00
J. Nick Koston e7be9cb447 Use new config entry update/abort helper in powerwall (#108674)
Use new config entry update/abort helper in powerwall

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:12:56 +01:00
J. Nick Koston 3b6c85b904 Use new config entry update/abort helper in august (#108673)
Use new config entry update/abort helper in august

uses the new helper from https://github.com/home-assistant/core/pull/108034
2024-01-22 22:12:18 +01:00
J. Nick Koston 9811930470 Use new config entry update/abort helper in esphome (#108672) 2024-01-22 22:11:38 +01:00
Jan-Philipp Benecke 4760114408 Fix flaky sensibo test (#108669) 2024-01-22 21:47:28 +01:00
Brett Adams e1fd5e83a7 Add time to charge sensor to Tessie (#108342)
* Add time to charge and type checking

* Revert drive_state_shift_state change

* Use original name

* Use function instead of lambda

* Update homeassistant/components/tessie/sensor.py

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>

* Fix callback

* Avoid having to test None

* Go back to if

* Use minutes instead of hours

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-01-22 21:45:08 +01:00
jmwaldrip d75dd0973f Fix SleepIQ setting FootWarmer timer (#108433)
* Fixing foot warmer timer bug

* Fixing bug where temperature wasnt assigned to number entity causing tests to fail
2024-01-22 21:22:54 +01:00
Joost Lekkerkerker 21009bef02 Add icon translations to Airly (#108404)
* Add icon translations to Airly

* Fix test

* Fix tests
2024-01-22 21:17:04 +01:00
Joost Lekkerkerker e47ed16980 Use snapshot testing in Airly sensor (#108608)
* Use snapshot testing in Airly sensor

* Apply suggestions from code review

Co-authored-by: Robert Resch <robert@resch.dev>

* Fix tests

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-22 20:59:24 +01:00
Michael 3d1751bdfa Prevent runtime issue during entity registration in coordinator of AVM Fritz!Tools (#108667)
prevent dictionary changed size during iteration
2024-01-22 14:26:46 -05:00
Franck Nijhof 80207835d7 Move core fundamental components into bootstrap (#105560)
Co-authored-by: Erik <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-22 20:09:48 +01:00
Bruno Pantaleão Gonçalves 31ef034c3f Update iOS configuration adding Action toggles to show in CarPlay and Watch (#108355) 2024-01-22 09:22:08 -08:00
Jan-Philipp Benecke 4d85f78b32 Cleanup Discovergy config flow (#108381)
* Cleanup Discovergy config flow

* Make use of the helper function
2024-01-22 18:20:20 +01:00
Jan-Philipp Benecke 988d72b8b6 Add helper function to update and reload config entry to config flow (#108034)
* Add helper function to update and reload config entry to config flow

* Use async_create_task

* Remove await

* Reload only when update & add task name

* Rename function
2024-01-22 17:40:20 +01:00
Martin Hjelmare e086cd9fef Add cloud tts entity (#108293)
* Add cloud tts entity

* Test test_login_view_missing_entity

* Fix pipeline iteration for migration

* Update tests

* Make migration more strict

* Fix docstring
2024-01-22 17:24:15 +01:00
Joost Lekkerkerker d0da457a04 Add device to Lutron (#107467)
* Add typing to Lutron platforms

* Add devices to Lutron

* Add devices to Lutron

* Fix typing

* Fix

* Add name

* Fix lights

* Comment out ESA

* Fix domain

* Fix domain

* Fix

* Make generic keypad base class
2024-01-22 15:52:59 +01:00
jmwaldrip 43daf20be3 Bump asyncsleepiq to 1.5.2 (#108431)
Upgrading asyncsleepiq to version 1.5.2
2024-01-22 15:27:47 +01:00
Erik Montnemery ef5d46c79c Convert AreaEntry to dataclass (#108648)
* Convert AreaEntry to dataclass

* Correct typing of AreaEntry.id

* Move responsibility for generating area id to AreaRegistry
2024-01-22 14:45:27 +01:00
Simone Chemelli 8c31e67dbc Bump aiovodafone to 0.5.4 (#108592) 2024-01-22 13:51:17 +01:00
Franck Nijhof 516fa64da5 Update Pillow to 10.2.0 (#108422) 2024-01-22 13:43:06 +01:00
Robert Resch 881872fdb4 Add binary_sensor to Ecovacs (#108544) 2024-01-22 13:36:26 +01:00
Marc Mueller 0d8afc72c2 Update python-slugify to 8.0.1 (#108373) 2024-01-22 10:10:02 +01:00
J. Nick Koston 4a34cd25b2 Reduce lock contention when all translations are already cached (#108634) 2024-01-21 22:29:03 -10:00
Joost Lekkerkerker 62fe9144f1 Add icon translations to Adguard (#108406) 2024-01-22 09:10:26 +01:00
Joost Lekkerkerker 9d380cea21 Use default icon in Agent DVR (#108405) 2024-01-22 09:08:01 +01:00
Teemu R fd1c9237a8 Bump songpal dependency to 0.16.1 (#108637) 2024-01-22 09:07:06 +01:00
Joost Lekkerkerker ef7e2cfc08 Add icon translations to Abode (#108407) 2024-01-22 09:06:25 +01:00
Jan-Philipp Benecke 09be3ffc29 Add icon translations to WLED (#108604) 2024-01-22 09:04:37 +01:00
Jan-Philipp Benecke 2a24af14ff Remove obsolete services.yaml and translations from WLED (#108605) 2024-01-22 09:03:30 +01:00
Joakim Sørensen 94f1f3e40c Remove numbering from GitHub progress step to not deal with styling of list entries (#108639) 2024-01-22 08:57:48 +01:00
J. Nick Koston fb62b6f01e Fix unifi test_tracked_clients test (#108638)
Fix unifi test_tracked_clients client

This test relied on the sensor platform getting set up and creating
the device before the device_tracker platform was setup since the
device_tracker platform will disable the entity because there is
not matching device entry for it via

https://github.com/home-assistant/core/blob/4ee6735cbbf13c130ee7cf2ca99274141fafc0fc/homeassistant/components/device_tracker/config_entry.py#L336

There is no guarantee the sensor platform will get set up before
the device tracker platform so the test was subject to a race
where it would fail if the device tracker platform was setup first
2024-01-22 08:35:24 +01:00
J. Nick Koston 4ee6735cbb Small cleanup to zone async_active_zone (#108629) 2024-01-21 19:33:05 -10:00
J. Nick Koston 8d4a1f475e Bump habluetooth to 2.3.1 (#108628) 2024-01-21 18:39:17 -10:00
J. Nick Koston e9a7870080 Small cleanups to async_get_all_descriptions (#108633) 2024-01-21 18:09:33 -10:00
J. Nick Koston 0b3bcca49b Avoid string decode/encode round trip in websocket_api get_services (#108632)
The cache was converting from bytes to str and when we read
the cache we converted it back to bytes again
2024-01-21 22:53:45 -05:00
J. Nick Koston a3f9fc45e3 Refactor async_listen_once to remove nonlocal (#108627) 2024-01-21 22:52:47 -05:00
J. Nick Koston 740209912c Small performance improvements to handing revoke token callbacks (#108625)
- Use a set to avoid linear search for remove
- Avoid recreating the unregister function each time
2024-01-21 22:49:06 -05:00
J. Nick Koston 3d3f4ac293 Avoid recreating persistent notification update function when subscribing (#108624)
I recently came up with an idea to look for callback functions
that get created over and over frequently by adding logging to
homeassistant.core.callback when its called to decorate
a function. This one happens a lot at runtime.
2024-01-21 22:45:45 -05:00
J. Nick Koston 573de95f21 Speed up run time of admin services by using HassJob (#108623) 2024-01-21 22:41:41 -05:00
J. Nick Koston dbb5645e63 Significantly reduce websocket api connection auth phase latency (#108564)
* Significantly reduce websocket api connection auth phase latancy

Since the auth phase has exclusive control over the websocket
until ActiveConnection is created, we can bypass the queue and
send messages right away. This reduces the latancy and reconnect
time since we do not have to wait for the background processing
of the queue to send the auth ok message.

* only start the writer queue after auth is successful
2024-01-21 22:33:31 -05:00
Cody C da1d530889 Update August diagnostics.py to redact contentToken (#108626) 2024-01-21 14:05:10 -10:00
Aaron Godfrey 71e636572f Send recurrence data when updating a task in todoist (#108269)
* Send recurrence data when updating a task in todoist

* Update tests/components/todoist/test_todo.py

Co-authored-by: Allen Porter <allen.porter@gmail.com>

* Move logic into _task_api_data.

* Add comment about sending potentinally stale data.

---------

Co-authored-by: Allen Porter <allen.porter@gmail.com>
2024-01-21 15:09:08 -08:00
Erik Montnemery e90b42d3d0 Fix FlowHandler show progress (#108586) 2024-01-21 22:40:48 +01:00
David Bonnes 0566ceca0f Tweak evohome code quality (#107596)
* initial commit

* lint

* initial commit
2024-01-21 22:22:04 +01:00
Ståle Storø Hauknes fbe1f238d4 Bump airthings-ble to 0.6.0 (#108612) 2024-01-21 11:20:07 -10:00
Joost Lekkerkerker 883711fb35 Add icon translations to Withings (#108385)
* Add icon translations to Withings

* Add icon translations to Withings

* Add icon translations to Withings

* Add icon translations to Withings

* Add icon translations to Withings
2024-01-21 21:34:44 +01:00
J. Nick Koston e94493f83d Use more shorthand attributes in tplink (#108284)
* Use more shorthand attributes in tplink

* naming

* unused
2024-01-21 21:34:06 +01:00
Jan-Philipp Benecke 4d5a511001 Add icon translations to co2signal (#108611) 2024-01-21 21:23:11 +01:00
Jonas Fors Lellky 702529627e Add missing property in flexit bacnet test (#108606)
Add missing property on mocked device

Also update the snapshot
2024-01-21 20:56:16 +01:00
J. Nick Koston 6525dad57a Add bthome event platform (#108268)
Co-authored-by: Ernst Klamer <e.klamer@gmail.com>
2024-01-21 08:17:55 -10:00
Erik Montnemery b4ab1bac56 Fix numbered list in github config flow (#108587) 2024-01-21 18:02:31 +01:00
Steven B 9b3d3b3b2d Add authentication to tplink integration for newer devices (#105143)
* Add authentication flows to tplink integration to enable newer device protocol support

* Add websession passing to tplink integration discover methods

* Use SmartDevice.connect()

* Update to use DeviceConfig

* Use credential hashes

* Bump python-kasa to 0.6.0.dev0

* Fix tests and address review comments

* Add autodetection for L530, P110, and L900

This adds mac address prefixes for the devices I have.
The wildcards are left quite lax assuming different series may share the same prefix.

* Bump tplink to 0.6.0.dev1

* Add config flow tests

* Use short_mac if alias is None and try legacy connect on discovery timeout

* Add config_flow tests

* Add init tests

* Migrate to aiohttp

* add some more ouis

* final

* ip change fix

* add fixmes

* fix O(n) searching

* fix O(n) searching

* move code that cannot fail outside of try block

* fix missing reauth_successful string

* add doc strings, cleanups

* error message by password

* dry

* adjust discovery timeout

* integration discovery already formats mac

* tweaks

* cleanups

* cleanups

* Update post review and fix broken tests

* Fix TODOs and FIXMEs in test_config_flow

* Add pragma no cover

* bump, apply suggestions

* remove no cover

* use iden check

* Apply suggestions from code review

* Fix branched test and update integration title

* legacy typing

* Update homeassistant/components/tplink/__init__.py

* lint

* Remove more unused consts

* Update test docstrings

* Add sdb9696 to tplink codeowners

* Update docstring on test for invalid DeviceConfig

* Update test stored credentials test

---------

Co-authored-by: Teemu Rytilahti <tpr@iki.fi>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-21 16:25:12 +01:00
Jan Bouwhuis c3da51db4e Icon translation for imap mail count sensor (#108576) 2024-01-21 14:57:00 +01:00
Malte Franken a7c94dda73 Add unique id to geonetnz_volcano sensors (#108556)
add unique id to each sensor
2024-01-21 14:03:28 +01:00
Jan-Philipp Benecke fcaa2fcf03 Make remaining WLED entities translatable (#108534) 2024-01-21 13:44:32 +01:00
Jan Rieger 48c434da86 Add icon translations to DWD Weather Warnings (#108501) 2024-01-21 13:34:26 +01:00
Jan Rieger 6a197e93aa Add icon translations to Roborock (#108508) 2024-01-21 13:32:56 +01:00
Jan Rieger 969ee5dd9f Add icon translation to Jellyfin (#108559) 2024-01-21 13:30:03 +01:00
Josef Zweck 5c0a67a3d2 Add icon translations for lamarzocco (#108569)
icon translations
2024-01-21 13:26:28 +01:00
Jonas Fors Lellky ed270f558a Add binary sensors to flexit_bacnet integration (#108571)
* Adds binary sensors to flexit_bacnet integration

* Review comments

* Removes binary sensor for electric heater

Will add switch or service later
2024-01-21 12:35:21 +01:00
Jonas Fors Lellky 7c86ea7e16 Add sensors to the flexit_bacnet integration (#108297)
* Adds sensors to the flexit_bacnet integration

* Add one platform at a time

* Removes commented out code

And restores attributes that are needed

* Review changes

* More review fixes

* Adds translations for the flexit_bacnet sensors

* Review comments

* Adds test for flexit_bacnet sensor

* Refactors the sensor test

* Review comment

* Review comment

* Review comments
2024-01-21 12:04:46 +01:00
J. Nick Koston d885bf886a Ensure button platform does not restore unavailable state (#108316) 2024-01-21 01:04:13 -10:00
Franck Nijhof fa485513d5 Ensure icon translations aren't the same as the default (#108568) 2024-01-21 12:02:15 +01:00
J. Nick Koston ec15b0def2 Always load auth storage at startup (#108543) 2024-01-20 16:16:43 -10:00
Michael 4d46f5ec07 Add icon translations for Pegelonline (#108554)
add icon translations
2024-01-20 20:37:39 -05:00
Florian Kisser b5bb97c856 Fix zha illuminance measured value mapping (#108547) 2024-01-20 20:37:13 -05:00
J. Nick Koston 3c6e7b188e Remove OrderedDict from auth_store (#108546)
normal dicts keep track of insert order now so this should
no longer be needed
2024-01-20 20:36:43 -05:00
Jan Rieger a042073d2f Add nut icon translations (#108471) 2024-01-20 15:17:28 -05:00
Jan Rieger d81682e02a Add sun icon translations (#108462) 2024-01-20 15:16:32 -05:00
Jan Rieger 1d35665107 Change calendar icon based on state (#108451) 2024-01-20 15:04:29 -05:00
Franck Nijhof 8a5071ff82 Add time icon translations (#108458) 2024-01-20 14:42:28 -05:00
Erik Montnemery 88dfe8d33b Remove unused TypeVar from config.py (#108495) 2024-01-20 14:39:12 -05:00
Franck Nijhof 2b90d968b4 Fix hassfest icon schema for service only (#108494) 2024-01-20 14:39:05 -05:00
Franck Nijhof 6374ee9378 Add cover icon translations (#108460)
* Add cover icon translations

* States -> state
2024-01-20 14:38:53 -05:00
Franck Nijhof 1804141b27 Add lawn mower icon translations (#108466) 2024-01-20 14:34:10 -05:00
Franck Nijhof 360ca9de34 Add remote icon translations (#108469) 2024-01-20 14:33:47 -05:00
Franck Nijhof a06308e6e6 Add stt icon translations (#108474) 2024-01-20 14:33:27 -05:00
Franck Nijhof 222e2c19f3 Add select icon translations (#108472) 2024-01-20 14:33:08 -05:00
Franck Nijhof 942636ffd6 Add todo icon translations (#108477) 2024-01-20 14:32:47 -05:00
Franck Nijhof 74ae79204a Add tts icon translations (#108476) 2024-01-20 14:32:24 -05:00
Ernst Klamer 0042a2fef2 Bump bthome-ble to 3.5.0 (#108475) 2024-01-20 14:31:57 -05:00
Franck Nijhof 70084dcefa Add vacuum icon translations (#108479) 2024-01-20 14:29:31 -05:00
Franck Nijhof a0d9a1e507 Add valve icon translations (#108480) 2024-01-20 14:28:57 -05:00
Franck Nijhof bb225e4b38 Add update icon translations (#108481)
* Add update icon translations

* Oops
2024-01-20 14:28:07 -05:00
Franck Nijhof 8a3b9000aa Add wake word icon translations (#108482) 2024-01-20 14:27:32 -05:00
Franck Nijhof 858b380e6b Add media player icon translations (#108486) 2024-01-20 14:22:55 -05:00
Franck Nijhof 06d748cee7 Add weather icon translations (#108488) 2024-01-20 14:21:28 -05:00
Franck Nijhof 408ba4d850 Add water heater icon translations (#108491) 2024-01-20 14:20:48 -05:00
Franck Nijhof 19bf8970d2 Add icon translations to Plugwise (#108498) 2024-01-20 14:15:53 -05:00
Franck Nijhof e71efa0e2b Add icon translations to HomeWizard Energy (#108506)
* Add icon translations to HomeWizard Energy

* Update snapshots
2024-01-20 14:14:48 -05:00
Joakim Plate d24636b179 Upgrade nibe to 2.7.0 (#108507) 2024-01-20 14:13:52 -05:00
Matthias Alphart aa6d058c10 Update knx-frontend to 2024.1.20.105944 (#108511) 2024-01-20 20:12:15 +01:00
Franck Nijhof 0f3fb2eb85 2024.1.5 (#108502) 2024-01-20 19:58:13 +01:00
Franck Nijhof 4c4dc6a086 Pin pandas to 2.1.4 (#108509) 2024-01-20 18:09:33 +01:00
Franck Nijhof 6cf8a3e5d1 Pin pandas to 2.1.4 (#108509) 2024-01-20 18:08:35 +01:00
Jan Rieger f40c8ce403 Add icon translations to Tankerkoenig (#108499) 2024-01-20 16:18:32 +01:00
Franck Nijhof 6901a80a70 Add siren icon translations (#108473) 2024-01-20 16:12:44 +01:00
Jan-Philipp Benecke c2820e3cde Use right state class for volume and timestamp sensor in bthome (#107675) 2024-01-20 16:03:46 +01:00
Franck Nijhof 71370f65d5 Bump version to 2024.1.5 2024-01-20 15:51:05 +01:00
Erik Montnemery ea8fc64dd6 Fix empty files included by !include_dir_named (#108489)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-20 15:50:50 +01:00
Steven Looman fb700cc847 Bump async-upnp-client to 0.38.1 (#108382) 2024-01-20 15:50:45 +01:00
Erik Montnemery 1cb5bbf865 Fix empty files included by !include_dir_named (#108489)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-20 15:12:32 +01:00
Franck Nijhof a3619e544e Add fan icon translations (#108461) 2024-01-20 13:29:43 +01:00
Franck Nijhof 16a85ab910 Add geo_location icon translations (#108463) 2024-01-20 13:29:08 +01:00
Franck Nijhof 5afbd34c64 Add humidifier icon translations (#108465) 2024-01-20 13:28:41 +01:00
Franck Nijhof 2c8981e100 Add text icon translations (#108457) 2024-01-20 13:28:23 +01:00
Franck Nijhof 618cfe587a Ensure pre-commit runs hassfest when icons change (#108470) 2024-01-20 13:28:11 +01:00
Franck Nijhof 8c55f8e7f5 Add lock icon translations (#108467) 2024-01-20 13:27:36 +01:00
Franck Nijhof b2ba808779 Add camera icon translations (#108419)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-20 11:39:13 +01:00
Jan Rieger 8dacb4f9ea Add icon translations to AVM FRITZ!Box Call Monitor (#108417)
* Add icon translations to AVM FRITZ!Box Call Monitor

* Update homeassistant/components/fritzbox_callmonitor/icons.json

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Update homeassistant/components/fritzbox_callmonitor/icons.json

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-01-20 11:16:56 +01:00
Franck Nijhof b3017c0f4e Add scene icon translations (#108456) 2024-01-20 11:07:29 +01:00
Franck Nijhof dbaa02a5a8 Add event icon translations (#108453) 2024-01-20 11:06:41 +01:00
Franck Nijhof 576230da40 Add number icon translations (#108452) 2024-01-20 11:06:29 +01:00
Franck Nijhof a9723df96c Add image icon translations (#108455) 2024-01-20 11:05:53 +01:00
Franck Nijhof 206e6dfd62 Add sensor icon translations (#108450)
* Add sensor icon translations

* Add missing moisture
2024-01-20 11:05:16 +01:00
Franck Nijhof 5a56cf3922 Add datetime icon translations (#108449) 2024-01-20 11:04:14 +01:00
Franck Nijhof 4f7ce28cb8 Add date icon translations (#108448) 2024-01-20 11:03:57 +01:00
Franck Nijhof d3bb33bd50 Add climate icon translations (#108418) 2024-01-20 09:10:22 +01:00
Franck Nijhof 4a824284d6 Mark flaky fritz update test as xfail (#108447) 2024-01-20 08:51:23 +01:00
Franck Nijhof 2a58b6e56b Add light icon translations (#108414) 2024-01-20 08:35:49 +01:00
J. Nick Koston 52b5d2e370 Avoid json encoder default fallback when serializing config (#108360)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-01-19 19:22:17 -10:00
J. Nick Koston 3184d3b168 Bump thermopro-ble to 0.8.0 (#108319) 2024-01-19 17:56:35 -10:00
Franck Nijhof 89570a73a7 Add air_quality icon translations (#108420) 2024-01-19 22:50:11 -05:00
Franck Nijhof 16f6854f64 Update psutil to 5.9.8 (#108421) 2024-01-19 22:09:39 -05:00
Franck Nijhof 0f1cb8fa5c Add calendar icon translations (#108416) 2024-01-19 22:07:14 -05:00
Franck Nijhof 1e32f96b0c Add button icon translations (#108415) 2024-01-19 22:06:15 -05:00
Franck Nijhof fb17b451c7 Add alarm_control_panel icon translations (#108413)
* Add alarm_control_panel icon translations

* Nest services correctly
2024-01-19 22:05:00 -05:00
Sid b612fafb9b Use async_create_clientsession for enigma2 (#108395)
Use async_creeate_clientsession for enigma2
2024-01-19 22:04:03 -05:00
Steven Looman 2b389739d3 Bump async-upnp-client to 0.38.1 (#108382) 2024-01-19 16:48:08 -10:00
Joost Lekkerkerker 5d5a2d1381 Add icon translations to Aseko (#108398) 2024-01-19 20:29:52 +01:00
Joost Lekkerkerker 4f998acb78 Add icon translations to Ambient station (#108400) 2024-01-19 20:28:36 +01:00
Franck Nijhof 6e6a5ff52c 2024.1.4 (#108379) 2024-01-19 20:21:12 +01:00
Joost Lekkerkerker 94b39941e2 Add icon translations to Airthings BLE (#108401) 2024-01-19 20:11:19 +01:00
Joost Lekkerkerker 51dca66908 Add icon translations to AsusWRT (#108397) 2024-01-19 20:10:31 +01:00
Joost Lekkerkerker 3a6e640c73 Add icon translations to Airnow (#108403) 2024-01-19 20:09:12 +01:00
Joost Lekkerkerker 2f227677b6 Add icon translations to awair (#108408) 2024-01-19 20:08:34 +01:00
Joost Lekkerkerker 300b4f161c Add icon translations to Aussie Broadband (#108409) 2024-01-19 20:07:20 +01:00
Joost Lekkerkerker fff1fc8d19 Add icon translations to August (#108396) 2024-01-19 20:07:04 +01:00
Joost Lekkerkerker 4f4f22ba36 Add icon translations to Aurora (#108410) 2024-01-19 20:06:14 +01:00
Joost Lekkerkerker 5a1d447730 Add icon translations to AirQ (#108402) 2024-01-19 20:06:06 +01:00
Joost Lekkerkerker 86f34f8216 Add icon translations to Anova (#108399) 2024-01-19 20:05:56 +01:00
Marc Mueller 4e11001a08 Update boto3 to 1.33.13 and aiobotocore to 2.9.1 (#108384) 2024-01-19 19:39:59 +01:00
Franck Nijhof 43f1c0927f Revert "Add debugging to assist in debugging already configured error (#108134)"
This reverts commit d2feee86b7.
2024-01-19 19:26:37 +01:00
Marc Mueller 7e60979abe Improve tplink_lte typing (#108393) 2024-01-19 19:06:52 +01:00
Marc Mueller f0077ac27e Update coverage to 7.4.0 (#108370) 2024-01-19 17:09:51 +01:00
Franck Nijhof 01372024f5 Add icon translations support (#103294)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
2024-01-19 16:56:56 +01:00
Robert Resch ed449a5abd Add support for MQTT based ecovacs vacuums (#108167)
* Add support for MQTT based ecovacs vacuums

* renames

* Add init import test

* bump deebot-client

* Translate continent options

* Apply suggestions from code review

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Remove continent

* use ServiceValidationError

* Small refactoring

* Simplify

* Fix tests

* Enable strict typing for ecovacs

* Apply suggestions from code review

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Implement suggestions

* improve test_async_setup_import

* Implement suggestions

* Update homeassistant/components/ecovacs/config_flow.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-19 16:52:30 +01:00
Marc Mueller c1d6f740af Update types packages (#108371) 2024-01-19 16:36:44 +01:00
RJPoelstra 298b0d1105 Add binary sensor to MotionMount integration (#107659)
* Add binary sensor for `isMoving`

* Sort platforms alphabetically

* Update doc strings
2024-01-19 16:01:20 +01:00
Marc Mueller 4a0b6af8c1 Update dwdwfsapi to 1.0.7 (#108377) 2024-01-19 15:56:54 +01:00
Franck Nijhof 916e5de9d1 Bump version to 2024.1.4 2024-01-19 15:44:20 +01:00
puddly e2a6097141 Bump ZHA dependency zigpy to 0.60.6 (#108266)
Bump zigpy to 0.60.6
2024-01-19 15:43:02 +01:00
Robert Svensson 005af2eb4c Bump aiounifi to v69 to improve websocket logging (#108265) 2024-01-19 15:42:57 +01:00
Erwin Douna 59e12ad0c1 Bump PyTado to 0.17.4 (#108255)
Bump to 17.4
2024-01-19 15:42:54 +01:00
starkillerOG 6ecb562a80 Bump reolink_aio to 0.8.7 (#108248) 2024-01-19 15:42:50 +01:00
starkillerOG da5d4fe4ae Use cache update for WIFI blinds (#108224) 2024-01-19 15:42:47 +01:00
John Allen 901b7b6278 Send target temp to Shelly TRV in F when needed (#108188) 2024-01-19 15:42:44 +01:00
Allen Porter d2feee86b7 Add debugging to assist in debugging already configured error (#108134) 2024-01-19 15:42:41 +01:00
cnico 5521ab0b35 Bump flipr-api to 1.5.1 (#108130)
Flipr-api version update for resolution of issue https://github.com/home-assistant/core/issues/105778
2024-01-19 15:42:38 +01:00
Aaron Bach 7fb2a8a3cd Bump aioridwell to 2024.01.0 (#108126) 2024-01-19 15:42:34 +01:00
puddly 304b950f1a Speed up ZHA initialization and improve startup responsiveness (#108103)
* Limit concurrency of startup traffic to allow for interactive usage

* Drop `retryable_req`, we already have request retrying

* Oops, `min` -> `max`

* Add a comment describing why `async_initialize` is not concurrent

* Fix existing unit tests

* Break out fetching mains state into its own function to unit test
2024-01-19 15:41:45 +01:00
Kevin Stillhammer 384b22c777 Expose TimeoutError during google_travel_time config_flow (#108179)
Expose TimeoutError during config_flow
2024-01-19 15:26:26 +01:00
Joost Lekkerkerker 99f9f0205a Use compat for supported features in media player (#108102) 2024-01-19 15:15:09 +01:00
Robert Resch 497d2f5677 Bump Jinja2 to 3.1.3 (#108082) 2024-01-19 15:15:06 +01:00
Marcel van der Veldt 7fee6c5279 Fix turning on the light with a specific color (#108080) 2024-01-19 15:15:03 +01:00
Cody C 70492a80cc Fix malformed user input error on MJPEG config flow (#108058) 2024-01-19 15:14:59 +01:00
Shay Levy ed31adc6db Fix Shelly Gen1 entity description restore (#108052)
* Fix Shelly Gen1 entity description restore

* Update tests/components/shelly/test_sensor.py

Co-authored-by: J. Nick Koston <nick@koston.org>

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-19 15:14:56 +01:00
Brett Adams 9c6f87dd11 Improve coordinator logic in Tessie to allow sleep (#107988)
* Poll status before state

* Tests
2024-01-19 15:14:52 +01:00
G Johansson 507cccdd53 Don't load entities for docker virtual ethernet interfaces in System Monitor (#107966) 2024-01-19 15:14:07 +01:00
puddly 8a3eb149b7 Reload ZHA only a single time when the connection is lost multiple times (#107963)
* Reload only a single time when the connection is lost multiple times

* Ignore when reset task finishes, allow only one reset per `ZHAGateway`
2024-01-19 15:14:04 +01:00
Simone Chemelli 20b88e30f5 Update sleep period for Shelly devices with buggy fw (#107961)
* update sleep period for Shelly devices with buggy fw

* code quality

* update model list

* add test

* Apply review comments

* fix test

* use costant
2024-01-19 15:14:01 +01:00
Arie Catsman 9551ff31ec Bump pyenphase to 1.17.0 (#107950) 2024-01-19 15:13:58 +01:00
G Johansson 488acc3252 Fix duplicate unique id in System Monitor (again) (#107947)
Fix duplicate unique id in System Monitor
2024-01-19 15:13:55 +01:00
G Johansson 80387be061 Skip disk types in System Monitor (#107943)
* Skip disk types in System Monitor

* change back
2024-01-19 15:13:52 +01:00
J. Nick Koston c0c9fb0f00 Bump aiohomekit to 3.1.3 (#107929)
changelog: https://github.com/Jc2k/aiohomekit/compare/3.1.2...3.1.3

fixes maybe #97888
2024-01-19 15:13:49 +01:00
Sid e2ef889687 Bump openwebifpy to 4.2.1 (#107894) 2024-01-19 15:13:45 +01:00
Pedro Lamas 5c99c6e823 Fix loading empty yaml files with include_dir_named (#107853) 2024-01-19 15:13:42 +01:00
Arie Catsman a8be7c27ad Bump Pyenphase to 1.16.0 (#107719) 2024-01-19 15:13:39 +01:00
Paarth Shah 596f19055e Fix MatrixBot not resolving room aliases per-command (#106347) 2024-01-19 15:13:32 +01:00
Franck Nijhof cdf3c07488 Add icon to entity registry list for display (#108313) 2024-01-19 15:11:27 +01:00
Sid 2e56d7d048 Bump openwebifpy to 4.2.1 (#107894) 2024-01-19 15:10:54 +01:00
J. Nick Koston 4d69515849 Use shorthand attributes for mobile_app sensor platforms (#108353) 2024-01-19 14:41:32 +01:00
Marc Mueller 42154bd684 Improve ifttt typing (#108308) 2024-01-19 13:45:59 +01:00
J. Nick Koston 8c71abe421 Avoid json encoder default fallback for APIComponentsView (#108359) 2024-01-19 13:44:29 +01:00
Marc Mueller b07b952ae6 Enable strict typing for intent_script (#108367) 2024-01-19 13:37:33 +01:00
Marc Mueller d7a9b7a4ab Enable strict typing for map (#108368) 2024-01-19 13:36:44 +01:00
Marc Mueller e785b2f5bb Enable strict typing for my (#108369) 2024-01-19 13:35:12 +01:00
Marc Mueller c6f1c4f550 Enable strict typing for default_config (#108366) 2024-01-19 13:34:40 +01:00
Marc Mueller 15bd31e8d8 Enable strict typing for api (#108363) 2024-01-19 13:33:20 +01:00
Marc Mueller 7e0e306c1f Enable strict typing for bluetooth_adapters (#108365) 2024-01-19 13:18:05 +01:00
J. Nick Koston 78d7562b41 Avoid json default fallback for area registry (#108358) 2024-01-19 13:16:05 +01:00
Erik Montnemery 3f5f1bc2f6 Fix homekit_controller test (#108375) 2024-01-19 13:05:55 +01:00
J. Nick Koston 6d979d21a6 Bump orjson to 3.9.12 (#108350) 2024-01-19 11:36:48 +01:00
Maikel Punie 4abf286a96 Bump pyDuotecno to 2024.1.2 (#108314) 2024-01-19 11:25:51 +01:00
Bouwe Westerdijk 54f23ff143 Bump plugwise to v0.36.3 (#108347) 2024-01-19 11:23:04 +01:00
Marc Mueller bc2acb3c0e Improve ffmpeg* typing (#108092) 2024-01-19 08:46:34 +01:00
Marc Mueller 25b7bb4a4f Adjust require_admin decorator typing (#108306)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-18 14:12:14 -10:00
Marc Mueller a21d5b5858 Improve person typing (#108218) 2024-01-18 14:11:55 -10:00
Marc Mueller 94c8c71ffb Improve august typing (5) (#108332) 2024-01-19 01:09:52 +01:00
Marc Mueller 0206833cfd Improve august typing (4) (#108331) 2024-01-19 00:59:26 +01:00
Marc Mueller 6e8e14fbe2 Improve august typing (3) (#108329) 2024-01-19 00:14:49 +01:00
Kostas Chatzikokolakis 6e8d491dae Add iBeacon UUID allowlist (#104790) 2024-01-18 13:06:11 -10:00
Marc Mueller 7c6fe31505 Improve api typing (#108307) 2024-01-18 12:45:15 -10:00
Steve Easley a670ac25fd Fix remote control codes for jvc_projector (#108253)
Update dependency to add/fix remote codes
2024-01-18 23:36:57 +01:00
Marc Mueller 72667adeba Improve august typing (2) (#108327) 2024-01-18 23:24:41 +01:00
Marc Mueller 5f08e2a2d1 Improve august typing (1) (#108325) 2024-01-18 23:13:08 +01:00
Robert Resch edd7feaf10 Add task to install all requirements of an integration (#108262)
* Add task to install the requirements of an integration

* Gather recursive requirements

* Move valid_integration to util

* Apply suggestions from code review

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Implement suggestions

---------

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-18 22:11:02 +01:00
J. Nick Koston c399cab427 Small speed up to checking core state (#107845) 2024-01-18 08:41:32 -10:00
Brett Adams 32b0bf6b4e Improve coordinator logic in Tessie to allow sleep (#107988)
* Poll status before state

* Tests
2024-01-18 17:40:36 +01:00
Erik Montnemery cdb798bec0 Don't always set first thread dataset as preferred (#108278)
* Don't always set first thread dataset as preferred

* Update tests

* Make clarifying comments clearer

* Call asyncio.wait with return_when=ALL_COMPLETED

* Update otbr test

* Update homeassistant/components/thread/dataset_store.py

Co-authored-by: Stefan Agner <stefan@agner.ch>

* Update homeassistant/components/thread/dataset_store.py

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2024-01-18 16:32:29 +01:00
Jonas Fors Lellky bfe21b33f0 Add coordinator to Flexit bacnet (#108295)
* Adds coordinator and base entity class

* Patch the coordinator

* Adds device property to base class

And refactors accordingly

* Use const instead of string

* Moves _attr_has_entity_name to base entity

* Argument as positional

* Use device_id from init
2024-01-18 15:45:56 +01:00
Joost Lekkerkerker c4f033e61c Add test for failed initialization in Flexit BACnet (#108294) 2024-01-18 14:55:44 +01:00
Jonas Fors Lellky 7d5a672ed1 Add tests to flexit_bacnet integration (#108291)
* Add fixture for update method

* Mock flexit_bacnet

* Adds test for climate

* Adds snapshot testing

* Adds test for init, refactor test for config flow
2024-01-18 14:37:43 +01:00
Josef Zweck 65abbe5369 Bump lmcloud to 0.4.35 (#108288)
bump lmcloud
2024-01-18 13:08:24 +01:00
Josef Zweck 83e0a7528d Add diagnostics to La Marzocco (#108240)
* add diagnostics

* make firmware section easier to read
2024-01-18 10:57:41 +01:00
Marc Mueller 3761d13915 Improve daikin typing (#108039) 2024-01-18 09:24:48 +01:00
Marc Mueller afcb7a26cd Enable strict typing for config (#108023) 2024-01-18 09:20:19 +01:00
J. Nick Koston 26cc6a5bb4 Add state caching to button entities (#108272) 2024-01-18 08:53:55 +01:00
J. Nick Koston 52e90b32df Avoid many replace calls in find_next_time_expression_time (#108273) 2024-01-18 08:44:40 +01:00
J. Nick Koston b4b041d4bf Small cleanups to the websocket api handler (#108274) 2024-01-18 08:39:49 +01:00
dependabot[bot] c656024365 Bump github/codeql-action from 3.23.0 to 3.23.1 (#108275) 2024-01-18 08:15:17 +01:00
J. Nick Koston 19258cb3df Fix benign typo in entity registry (#108270) 2024-01-18 07:45:44 +01:00
J. Nick Koston cfbfdf7949 Fix apple_tv IP Address not being updated from discovery (#107611) 2024-01-17 17:43:14 -10:00
mkmer 2d1c5d84f3 Remove unused variables in honeywell (#108252)
Remove unused configuration keys
2024-01-17 21:37:21 -05:00
mkmer 484584084a Allow multiple config entries in Honeywell (#108263)
* Address popping all entires when unloading

* optimize hass data
2024-01-17 21:35:53 -05:00
starkillerOG 154fe8631a Use cache update for WIFI blinds (#108224) 2024-01-17 21:34:18 -05:00
Robert Svensson 274d501bca Bump aiounifi to v69 to improve websocket logging (#108265) 2024-01-17 21:33:31 -05:00
puddly 867caab70a Speed up ZHA initialization and improve startup responsiveness (#108103)
* Limit concurrency of startup traffic to allow for interactive usage

* Drop `retryable_req`, we already have request retrying

* Oops, `min` -> `max`

* Add a comment describing why `async_initialize` is not concurrent

* Fix existing unit tests

* Break out fetching mains state into its own function to unit test
2024-01-17 18:36:28 -05:00
puddly 3ae858e3bf Bump ZHA dependency zigpy to 0.60.6 (#108266)
Bump zigpy to 0.60.6
2024-01-17 18:34:10 -05:00
Jan Bouwhuis f704a1a05a Remove legacy VacuumEntity base class support (#108189) 2024-01-17 23:19:49 +01:00
starkillerOG a27eea9b9f Bump reolink_aio to 0.8.7 (#108248) 2024-01-17 16:28:15 -05:00
Joakim Plate c827bba780 Let zigpy decide on default manufacturer id (#108257)
* zha: let cluster set default manufacturer id

* zha: allow forcing manufacturer id off
2024-01-17 15:42:20 -05:00
John Allen a385ca93bd Send target temp to Shelly TRV in F when needed (#108188) 2024-01-17 22:06:11 +02:00
Erwin Douna 97956702c9 Bump PyTado to 0.17.4 (#108255)
Bump to 17.4
2024-01-17 20:54:13 +01:00
Cyrill Raccaud 802f0da493 Switch for swiss_public_transport to unique_id instead of unique_entry (#107910)
* use unique_id instead of unique_entry

* move entry mock out of patch context
2024-01-17 19:08:33 +01:00
Marc Mueller 3d410a1d6e Improve systemmonitor generic typing (#108220) 2024-01-17 18:19:10 +01:00
Josef Zweck 64496b802a Fix state after La Marzocco update (#108244)
request a refresh from coordinator after update
2024-01-17 17:26:15 +01:00
Martin Hjelmare 9d5f714e29 Decrease fitbit logging verbosity on connection error (#108228)
* Add test for connection error

* Decrease fitbit connection error log verbosity
2024-01-17 07:07:02 -08:00
Jan Bouwhuis c47fb5d161 Remove deprecated redundant dry and fan modes from zwave_js climates (#108124)
Remove deprecated redundant dry and fan modes from zwave_js climates
2024-01-17 15:55:46 +01:00
Erik Montnemery 91815ed5f9 Assert default response from conversation trigger (#108231) 2024-01-17 15:47:06 +01:00
Josef Zweck 90f4900f2c Add button platform to La Marzocco (#108236)
* add button

* Update homeassistant/components/lamarzocco/button.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/lamarzocco/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* update snapshot

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-17 15:20:24 +01:00
Josef Zweck ee44e9d4d6 Add update platform to La Marzocco (#108235)
* add update

* requested changes

* improve

* docstring

* docstring
2024-01-17 14:49:08 +01:00
Franck Nijhof 3eb1283fa5 Disable Python 3.12 incompatible integrations (#108163) 2024-01-17 14:47:03 +01:00
J. Nick Koston 15384f4661 Remove unused entity_sources argument from shared_attrs_bytes_from_event (#108210) 2024-01-17 08:45:04 -05:00
Josef Zweck 2cd828b2d0 Add number platform to La Marzocco (#108229)
* add number

* remove key entities

* remove key numbers

* rename entities

* rename sensors
2024-01-17 14:15:48 +01:00
Josef Zweck 74d53a4231 Add select platform to La Marzocco integration (#108222)
* add select

* change check, icons

* fix docstrings, use []
2024-01-17 13:21:33 +01:00
Marc Mueller 1b2a4d2bf3 Improve aurora typing (#108217) 2024-01-17 12:11:34 +01:00
G Johansson bdda38f274 Allow selecting camera in Trafikverket Camera (#105927)
* Allow selecting camera in Trafikverket Camera

* Final config flow

* Add tests

* Fix load_int

* naming
2024-01-17 11:54:13 +01:00
Josef Zweck e811cf1ae8 Add binary sensor platforms to La Marzocco (#108212)
* add sensor

* remove switch

* requested changes

* property instead of function

* add missing snapshot

* rename var, fixture

* add binary sensors

* reorder strings

* rename sensor

* switch to supported_fn
2024-01-17 11:42:22 +01:00
Josef Zweck a25653e167 Change the way an entity is supported in La Marzocco (#108216)
* refactor supported

* refactor supported
2024-01-17 11:07:43 +01:00
Christophe Gagnier 44f2b8e6a3 Implement TechnoVE integration (#106029)
* Implement TechnoVE integration

Only the basic sensors for now.

* Add technoVE to strict typing

* Implement TechnoVE PR suggestions

* Remove Diagnostic from TechnoVE initial PR

* Switch status sensor to Enum device class

* Revert zeroconf for adding it back in subsequent PR

* Implement changes from feedback in TechnoVE PR

* Update homeassistant/components/technove/models.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/technove/sensor.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/technove/models.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Remove unnecessary translation keys

* Fix existing technoVE tests

* Use snapshot testing for TechnoVE sensors

* Improve unit tests for TechnoVE

* Add missing coverage for technoVE config flow

* Add TechnoVE coordinator tests

* Modify device_fixture for TechnoVE from PR Feedback

* Change CONF_IP_ADDRESS to CONF_HOST for TechnoVE

* Update homeassistant/components/technove/config_flow.py

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>

* Update homeassistant/components/technove/models.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/technove/models.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Implement feedback from TechnoVE PR

* Add test_sensor_update_failure to TechnoVE sensor tests

* Add test for error recovery during config flow of TechnoVE

* Remove test_coordinator.py from TechnoVE

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-17 11:04:35 +01:00
Josef Zweck a8b67d5a0a Add sensor platform to La Marzocco integration (#108157)
* add sensor

* remove switch

* requested changes

* property instead of function

* add missing snapshot

* rename var, fixture
2024-01-17 09:12:49 +01:00
Brett Adams 3a26bc3ee0 Fix translation keys in Tessie (#108203) 2024-01-17 08:25:25 +01:00
dependabot[bot] db9312cf9c Bump actions/cache from 3.3.3 to 4.0.0 (#108209)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-17 08:23:35 +01:00
G Johansson d4f9ad9dd3 Create update coordinator for Systemmonitor (#106693) 2024-01-16 15:07:55 -10:00
Aaron Bach d5c1049bfe Remove unnecessary RainMachine entity description mixins (#108190) 2024-01-16 15:04:32 -10:00
Aaron Bach 9bbf098901 Remove unnecessary Ambient PWS entity description mixins (#108191) 2024-01-16 15:01:07 -10:00
Aaron Bach e553cf2241 Remove unnecessary AirVisual Pro entity description mixins (#108192) 2024-01-16 15:00:55 -10:00
Aaron Bach 70aff728fd Remove unnecessary Notion entity description mixins (#108194) 2024-01-16 15:00:45 -10:00
Aaron Bach 0a9ec1a351 Remove unnecessary PurpleAir entity description mixins (#108196) 2024-01-16 15:00:26 -10:00
Aaron Bach cc9b874be3 Remove unnecessary SimpliSafe entity description mixins (#108197) 2024-01-16 15:00:14 -10:00
Aaron Bach 858004628e Remove unnecessary OpenUV entity description mixins (#108195) 2024-01-16 15:00:00 -10:00
Jan-Philipp Benecke 10014838ef Dynamically map state class, device class and UoM in ZHA smart energy metering sensor (#107685)
* Dynamically map state class, device class and UoM in ZHA smart energy metering sensor

* Fix some state & device classes and add scaling

* Fix added imperial gallons tests

* Use entity description instead of custom class & add one entity to tests

* Apply code review suggestion

* Scale only when needed

* Revert "Scale only when needed"

This reverts commit a9e0403402.

* Avoid second lookup of entity description

* Change test to not mix sensor types
2024-01-17 00:40:00 +01:00
Aaron Bach f0a63f7189 Move Guardian coordinator to suggested location (#108182)
* Move Guardian coordinator to suggested location

* Fix coverage
2024-01-16 15:38:20 -07:00
Marc Mueller bee53f6004 Add decorator typing [yeelight] (#107598) 2024-01-16 23:18:30 +01:00
Aaron Bach 25f4fe4a85 Bump aiokafka to 0.10.0 (#108165) 2024-01-16 23:16:31 +01:00
J. Nick Koston d82abd93fb Bump dbus-fast to 2.21.1 (#108176) 2024-01-16 23:15:19 +01:00
Cyrille 030b1bc0e8 Upgrade python-mpd2 to v3.1.1 (#108143) 2024-01-16 23:01:01 +01:00
Klaas Schoute 0f185a9a09 Set minimal value for modules power - Forecast.solar (#108166) 2024-01-16 22:46:00 +01:00
Michael Hansen db81f4d046 Wyoming satellite ping and bugfix for local wake word (#108164)
* Refactor with ping

* Fix tests

* Increase test coverage
2024-01-16 15:43:30 -06:00
G Johansson 7dffc9f515 Remove config import from netatmo (#107972)
* Remove config import from netatmo

* Fix tests
2024-01-16 22:17:18 +01:00
Franck Nijhof 0a758882e1 Deprecate Python 3.11 (#108160) 2024-01-16 22:07:22 +01:00
G Johansson 0ba0f57439 Add entity name translations to System Monitor (#107952) 2024-01-16 21:39:03 +01:00
J. Nick Koston 60ab360fe7 Avoid bytes to string to bytes conversion in websocket api (#108139) 2024-01-16 21:37:34 +01:00
G Johansson ad35113e86 Remove config import in Neato (#107967)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-01-16 21:08:05 +01:00
Joost Lekkerkerker bc9a85405e Delete removed channel devices in Youtube (#107907) 2024-01-16 21:06:58 +01:00
J. Nick Koston 6173bfe873 Cache commonly called Integration manifest properties (#108141) 2024-01-16 21:05:44 +01:00
Luke Lashley fa5af8f187 Add Translation for Roborock exceptions (#105427)
* add translations to exceptions

* Make errors more user understandable

* make command not ternary operator

* removed non-user facing exceptions

* Add user facing exceptions and code coverage

* add match

* fix linting

* Apply suggestions from code review

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-01-16 21:00:20 +01:00
G Johansson 639f06843b Remove config import from surepetcare (#107971)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-01-16 20:57:23 +01:00
Galorhallen ddaf194f91 Add Govee local light integration (#106697)
* Added govee_local_api

* Code cleanup

* Fix discovery

* Add missing supported device

* Fix autodiscovery

* Add missing quality scale in manifest.json

* QA

* QA: Moved coordinator creation to __init__.py

* QA

* Fix typo and update test

* QA

* Removed unecessary code

* Fix typo

* Fix typo

* QA, typing and strings

* Removed unsed logger in __init__.py

* QA, using ColorMode for lights capabilities

* Bump govee_local_api to 1.4.0

Moved capabilities to library.

* Update requirements

* Update library to 1.4.1 with unsupported dvice warning

* Fix tests after library update

* QA

* Add test for retry config

* Update integration name and domain

* Update homeassistant/components/govee_light_local/light.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-16 20:00:29 +01:00
Josef Zweck 95ed1ada50 Add late PR improvements to La Marzocco (#108162)
* add Martin's suggestions

* use password description

* fix for reauth + test

* fix invalid_auth test

* Update homeassistant/components/lamarzocco/config_flow.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-16 19:35:50 +01:00
Allen Porter b24222bd1d Add debugging to assist in debugging already configured error (#108134) 2024-01-16 17:05:35 +01:00
Sebastian Lövdahl d0f4780300 Bump vallox_websocket_api to 4.0.3 (#108109) 2024-01-16 17:04:44 +01:00
Jan Bouwhuis 3ff74fe20f Refactor demo vacuum's to only use StateVacuum base class and features (#108150)
* Demo cleanup

* Refactor vacuum demo to only use state vacuum base class

* Remove unneeded feature checks

* Remove exclusion issue for mqtt an demo
2024-01-16 16:44:12 +01:00
Josef Zweck 6bc36666b1 Add integration lamarzocco (#102291)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: tronikos <tronikos@users.noreply.github.com>
Co-authored-by: Luke Lashley <conway220@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: dupondje <jean-louis@dupond.be>
2024-01-16 15:24:16 +01:00
Bouwe Westerdijk a874895a81 Add gateway_mode Select to Plugwise (#108019) 2024-01-16 14:35:09 +01:00
J. Nick Koston 3d595fff13 Avoid duplicate timestamp conversions for websocket api and recorder (#108144)
* Avoid duplicate timestamp conversions for websocket api and recorder

We convert the time from datetime to timestamps one per
open websocket connection and the recorder for every
state update. Only do the conversion once since its
~30% of the cost of building the state diff

* more

* two more

* two more in live history
2024-01-16 14:05:01 +01:00
Jan Bouwhuis 26058bf922 Add serial_number attribute to MQTT device properties (#108105) 2024-01-16 14:02:34 +01:00
David Bonnes 7deebf8817 Handle renaming of evohome zones (#108089) 2024-01-16 13:45:24 +01:00
max2697 d4739cfa5c Bump opower to 0.2.0 (#108067) 2024-01-16 13:43:19 +01:00
DellanX 04bc8e09a5 Default tuya climate temperature unit to system unit (#108050) 2024-01-16 13:40:11 +01:00
Joakim Plate 523352c97e Avoid keeping config dir in path (#107760) 2024-01-16 13:38:47 +01:00
Robert Resch 7fe6fc987b Add config flow for Ecovacs (#108111)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-16 13:31:42 +01:00
Jan Bouwhuis 3e72c346b7 Remove MELCloud YAML import support (#108113) 2024-01-16 13:29:26 +01:00
G Johansson fa2f9eac1a Remove config import in meteo_france (#107970)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-01-16 13:27:49 +01:00
Jan Bouwhuis b46d0fb07c Remove YAML import support for plum_lightpad (#108114) 2024-01-16 13:13:33 +01:00
Aaron Bach ef7ebcffd6 Bump aioridwell to 2024.01.0 (#108126) 2024-01-16 13:10:09 +01:00
J. Nick Koston 549ff6ddc6 Enable compression on frontend index page (#108148) 2024-01-16 13:06:21 +01:00
Willem-Jan van Rootselaar 09234ca3af Update python-bsblan version to 0.5.18 (#108145) 2024-01-16 13:05:58 +01:00
G Johansson ef49e8a82f Bump holidays to 0.41 (#108132) 2024-01-16 12:13:41 +01:00
Michael 7942e9e3fe bump pyfritzhome to 0.6.10 (#108128) 2024-01-16 11:10:03 +01:00
Pedro Lamas 6cab4486f7 Fix loading empty yaml files with include_dir_named (#107853) 2024-01-16 10:23:04 +01:00
Paarth Shah 5afe155cd9 Fix MatrixBot not resolving room aliases per-command (#106347) 2024-01-16 10:07:51 +01:00
Jan-Philipp Benecke 28281523ec Add pylint plugin to check for sorted platforms list (#108115) 2024-01-16 09:47:53 +01:00
Erik Montnemery fb24e086b2 Hide FlowResultType.SHOW_PROGRESS_DONE from frontend (#107799)
* Hide FlowResultType.SHOW_PROGRESS_DONE from frontend

* Update tests
2024-01-16 09:04:27 +01:00
Jan-Philipp Benecke af6ad6be41 Remove deprecated vacuum services from tuya (#107896) 2024-01-16 08:51:57 +01:00
cnico 562798f037 Bump flipr-api to 1.5.1 (#108130)
Flipr-api version update for resolution of issue https://github.com/home-assistant/core/issues/105778
2024-01-16 06:56:54 +01:00
Leendert Gravendeel 5011a25ea6 Add Epion integration (#107570)
* Adding initial Epion Air integration logic

* Skipping sensors with missing data

* Patching Epion integration

* Adding additional Epion measurement types

* Cleaning up logging

* Cleaning up code

* Fixing error handling for invalid Epion keys

* Adding tests and improving error handling

* Patching Epion tests

* Cleaning up Epion integration code

* Bumping Epion package and including missing files

* Moving data updates to coordinator and addressing feedback

* Improve exception handling

* Exposing model name and firmware version

* Cleaning up code according to review

* Cleaning up code according to review

* Adding check to prevent duplicate account setup

* Refactoring tests and checking for duplicates

* Cleaning up test code according to review

* Cleaning up test code

* Removing entity name overrides

* Fix code format for tests

* Adding missing newlines in JSON files

* Fixing formatting

* Updating device method to always return a device

* Updating coordinator
2024-01-16 06:39:50 +01:00
Marc Mueller e8b962ea89 Improve risco typing (#108041) 2024-01-15 23:32:58 +01:00
Marc Mueller 369ed5b701 Improve typing for the generic integration (#108094) 2024-01-15 23:11:46 +01:00
Marc Mueller f28f2e4ed4 Improve google_translate typing (#108093) 2024-01-15 23:11:03 +01:00
Marc Mueller c2dec8f84f Improve electric_kiwi generic typing (#108084) 2024-01-15 23:09:09 +01:00
Joost Lekkerkerker b9e532cbb3 Use compat for supported features in media player (#108102) 2024-01-15 20:33:30 +01:00
Jan Bouwhuis 1a4d1907c9 Make ATTR_SERIAL_NUMBER a generic homeassistant constant (#108106) 2024-01-15 20:33:15 +01:00
Shay Levy 28e18ce7bf Fix Shelly Gen1 entity description restore (#108052)
* Fix Shelly Gen1 entity description restore

* Update tests/components/shelly/test_sensor.py

Co-authored-by: J. Nick Koston <nick@koston.org>

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-15 20:53:56 +02:00
G Johansson 3bc20a072a Fix test_sensor_process_fails test in System Monitor (#108110) 2024-01-15 19:46:28 +01:00
G Johansson 5b3e1306f8 Add tests for System Monitor (#107891)
* Add tests

* no coordinator

* Coverage

* processes

* test init

* util

* test icon

* Add tests

* Mod tests

* Add tests

* Test attributes

* snapshots

* icon

* test disk mounts

* fixes

* svmem

* cache_clear

* test icon

* reset icon test

* test_processor_temperature

* fix tests on macos

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-15 18:26:49 +01:00
G Johansson 749ef45727 Add availability to command_line (#105300)
* Add availability to command_line

* Add tests

* freezer
2024-01-15 18:20:34 +01:00
Marc Mueller 6a9fdaae7a Enable strict typing for onboarding (#108097) 2024-01-15 16:53:24 +01:00
Grant 5dde45e01f Fix comment for SmartThings fan capability (#108086)
* Fix the fan to support preset modes

* Add more tests and fix some comments

* Don't override inherited member

* Don't check for supported feature as the check is already performed before here

* Do not check for feature on properties

* Update homeassistant/components/smartthings/fan.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Fix tests

* Fix comment

* Break line

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-15 13:53:16 +01:00
Robert Resch ede6e01808 Bump Jinja2 to 3.1.3 (#108082) 2024-01-15 12:10:17 +01:00
David Bonnes 7f619579fa Harden zone schedule processing for evohome (#108079) 2024-01-15 11:24:55 +01:00
Marc Mueller 4d7186b6e6 Improve ffmpeg and freebox typing (#108026) 2024-01-15 11:23:26 +01:00
Jan-Philipp Benecke bd37d3776b Set webhook local_only to True by default (#107670) 2024-01-15 11:09:40 +01:00
Marcel van der Veldt 52acc4bbab Fix turning on the light with a specific color (#108080) 2024-01-15 11:08:38 +01:00
Cody C 5cc1a761dd Fix malformed user input error on MJPEG config flow (#108058) 2024-01-15 09:41:44 +01:00
David Bonnes dd2527db5b Bump evohome client to 0.4.17 (#108051) 2024-01-15 09:40:01 +01:00
Erik Montnemery c3e8e931e6 Deprecate passing step_id to FlowHandler methods (#107944) 2024-01-15 09:37:57 +01:00
Marc Mueller f968b43f6a Improve gdacs typing (#108040) 2024-01-15 09:32:30 +01:00
Marc Mueller 84038fb119 Enable strict typing for generic_thermostat (#108024) 2024-01-15 09:19:50 +01:00
Michael 9bca09a513 Remove obsolete .txt extension from diagnostics download (#108028) 2024-01-15 09:17:05 +01:00
Erik Montnemery aa3e172a65 Bump pychromecast to 13.1.0 (#108073) 2024-01-15 09:10:09 +01:00
Marc Mueller 16f110658c Enable strict typing for duckdns (#108022) 2024-01-15 09:09:57 +01:00
Marc Mueller 5bde007048 Enable strict typing for prometheus (#108025) 2024-01-15 09:07:12 +01:00
Jan Bouwhuis 45acd56861 Remove YAML auth setup support from home_connect (#108072) 2024-01-15 09:00:59 +01:00
Keilin Bickar 9d47e1983e Update asyncsleepiq to 1.4.2 (#108054) 2024-01-14 20:55:02 -10:00
Ståle Storø Hauknes 76a1e97947 Update framework for Airthings cloud (#107653)
* Upgrade framework

* Improve code for model name
2024-01-14 21:22:27 +01:00
J. Nick Koston b47861d973 Update shelly bluetooth scanner to version 2.0 (#107917) 2024-01-14 09:44:42 -10:00
jjlawren c4fd45ef97 Bump SoCo to 0.30.2 (#108033) 2024-01-14 14:19:36 -05:00
Erik Montnemery 00165fef5b Improve the test class used for testing FlowManager.async_show_progress (#107786)
* Improve the test class used for testing FlowManager.async_show_progress

* Address review comments
2024-01-14 18:39:45 +01:00
G Johansson 7a6dca0987 Sensibo include mac in diagnostics redact filter (#107986)
* Add mac to redaction in Sensibo diagnostics

* Add full snapshot

* use constant
2024-01-14 15:34:14 +01:00
wittypluck d94421e1a4 Reset UniFi bandwidth sensor when client misses heartbeat (#104522)
* Reset UniFi bandwidth sensor when client misses heartbeat

* Fix initialization sequence

* Code simplification: remove heartbeat_timedelta, unique_id and tracker logic

* Add unit tests

* Remove unused _is_connected attribute

* Remove redundant async_initiate_state

* Make is_connected_fn optional, heartbeat detection will only happen if not None

* Add checks on is_connected_fn
2024-01-14 15:19:43 +01:00
J. Nick Koston 1cdfb06d77 Add cached_property to State.name (#108011) 2024-01-14 11:50:40 +01:00
Jan-Philipp Benecke 7c848d78ab Remove deprecated services from Litterrobot (#107882) 2024-01-14 11:50:12 +01:00
Tobias Sauerwein f808c2ff14 Add Netatmo fan platform (#107989)
* Add fan platform

to support NLLF centralized ventilation devices

* Update tests/components/netatmo/test_fan.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/netatmo/test_fan.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/netatmo/test_fan.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/netatmo/test_fan.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* add snapshots

* update snapshot

* fix docstring

* address comment

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-14 11:47:20 +01:00
Franck Nijhof acbc2350d0 Update sentry-sdk to 1.39.2 (#108010) 2024-01-14 11:45:31 +01:00
Numa Perez 5d8bf86279 Fix lyric TCC set temperature when in Auto mode (#106853) 2024-01-14 11:29:03 +01:00
Numa Perez 75ba879c34 Fix autoChangeoverActive for lyric LCC devices (#106925) 2024-01-14 11:27:48 +01:00
Bouwe Westerdijk b034d6d0a1 Bump plugwise to v0.36.2 (#108012) 2024-01-14 11:25:45 +01:00
Tobias Sauerwein 10d5382ae6 Dynamically adjust Netatmo polling frequency (#106742) 2024-01-14 11:22:02 +01:00
Joost Lekkerkerker 965499dd90 Add entity translations to Glances (#107189) 2024-01-14 11:12:30 +01:00
Erik Montnemery 5e79cd8715 Remove file/line annotations after config has been validated (#107139) 2024-01-14 11:07:39 +01:00
Erik Montnemery 7fc3f8e473 Improve calls to async_show_progress in octoprint (#107792) 2024-01-14 11:06:35 +01:00
Erik Montnemery 1c9764bc44 Improve calls to async_show_progress in snooz (#107793) 2024-01-14 11:00:10 +01:00
mkmer e12dcfc1b4 Fix wifi sensor units in Blink (#107539) 2024-01-14 10:59:04 +01:00
Franck Nijhof 51cdb4ce36 Update pipdeptree to 2.13.2 (#108009) 2024-01-14 10:58:17 +01:00
J. Nick Koston 99b6c7d25f Refactor async_track_utc_time_change to avoid using nonlocal (#108007) 2024-01-14 10:57:54 +01:00
Erik Montnemery 3895defff9 Improve calls to async_show_progress in homeassistant_hardware (#107789) 2024-01-14 10:41:44 +01:00
Sam Reed bca629ed31 Drop facebox integration (#107005) 2024-01-14 10:40:05 +01:00
Jan-Philipp Benecke c86b45b454 Remove deprecated vacuum service from roborock (#107895) 2024-01-14 09:57:17 +01:00
Marc Mueller 01204356fa Enable strict typing for timer (#107915) 2024-01-14 09:40:14 +01:00
Marc Mueller ec708811d0 Enable strict typing for trace (#107945) 2024-01-14 09:39:22 +01:00
Marc Mueller 88d7fc87c9 Enable strict typing for shopping_list (#107913) 2024-01-14 09:38:53 +01:00
Erik Montnemery d4cb055d75 Improve calls to async_show_progress in improv_ble (#107790) 2024-01-14 09:37:54 +01:00
J. Nick Koston 93d363ea57 Improve apple_tv typing (#107694) 2024-01-14 09:37:04 +01:00
Jan Bouwhuis 4b8d8baa69 Remove deprecated YAML import from generic camera (#107992) 2024-01-14 09:36:00 +01:00
Jan Bouwhuis f48d057307 Remove YAML support from gdacs (#107962) 2024-01-14 09:03:00 +01:00
Brett Adams 8b4d99f7d2 Add route sensors to Tessie (#106530)
* keys may be missing at startup

* Add route sensors and tracker location

* Fix keys and add translation

* Allow a sensor to have no value

* Move attribute to sensor

* Remove state attribute string
2024-01-14 08:08:54 +01:00
J. Nick Koston 07810926d0 Update habluetooth to 2.2.0 (#108000)
* Update habluetooth to 2.2.0

* fixes

* lib
2024-01-13 23:50:47 -05:00
J. Nick Koston da9fc77333 Save the HassJob type in wemo discovery to avoid checking it each time (#107998) 2024-01-13 23:50:21 -05:00
J. Nick Koston 8d3f693907 Avoid useless time fetch in DataUpdateCoordinator (#107999)
* Avoid useless time fetch in DataUpdateCoordinator

Since we used the async_call_at helper, it would always call dt_util.utcnow()
to feed the _handle_refresh_interval which threw it away. This meant we had
to fetch time twice as much as needed for each update

* tweak

* compat

* adjust comment
2024-01-13 23:40:07 -05:00
J. Nick Koston 9033f1f3e8 Break long lines in powerwall integration (#108002) 2024-01-14 04:22:17 +01:00
J. Nick Koston 659ee51914 Refactor event time trackers to avoid using nonlocal (#107997) 2024-01-13 17:17:55 -10:00
J. Nick Koston e7c25d1c36 Migrate powerwall unique ids to use the gateway din (#107509) 2024-01-13 16:17:37 -10:00
J. Nick Koston e4a15354f4 Fix logger creating many thread locks when reloading the integrations page (#93768)
* Fix logger creating many thread locks

We call getLogger for each integration to get the current
log level when loading the integrations page. This creates
a storm of threading locks

* fixes
2024-01-13 21:11:34 -05:00
J. Nick Koston d8564eba17 Bump lxml to 5.1.0 (#106696)
* Bump lxml to 5.0.0

cython 3.0.7+ is required ?

* bump

* Apply suggestions from code review

* 5.1.0
2024-01-13 21:08:42 -05:00
J. Nick Koston 454c62b5b4 Avoid total_seconds conversion every state write when context is set (#107617) 2024-01-13 21:04:32 -05:00
J. Nick Koston bc2738c3a1 Avoid entity registry check in live logbook on each state update (#107622)
Avoid entity registry fetch in live logbook

There is no need to check the entity registry for the
state class since we already have the state
2024-01-13 21:04:04 -05:00
J. Nick Koston f1228a1cfb Add H5106 support to govee-ble (#107781)
* Bump govee-ble to 0.27.0

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.26.0...v0.27.0

note: H5106 is partially supported, full support will be added in another PR + docs

* .1

* Add Govee H5106 support

* 0.27.2

* commit the tests
2024-01-13 21:02:38 -05:00
J. Nick Koston 9c82df4b98 Fix duplicate config entry additions in tests (#107984)
zha and plex still add the same config entry multiple times
but they are going to need seperate PRs as they have more
complex logic
2024-01-13 21:01:18 -05:00
Marc Mueller 3c1e2e17a0 Use prometheus_client module directly (#107918) 2024-01-14 02:56:22 +01:00
Dorian Benech 2584de6324 Add TICMeter Energy Metering sensors (#107956) 2024-01-13 16:53:53 -05:00
Simone Chemelli ef8d394c16 Update sleep period for Shelly devices with buggy fw (#107961)
* update sleep period for Shelly devices with buggy fw

* code quality

* update model list

* add test

* Apply review comments

* fix test

* use costant
2024-01-13 22:33:02 +01:00
puddly b0adaece25 Reload ZHA only a single time when the connection is lost multiple times (#107963)
* Reload only a single time when the connection is lost multiple times

* Ignore when reset task finishes, allow only one reset per `ZHAGateway`
2024-01-13 16:32:25 -05:00
J. Nick Koston 6ada825805 Use faster is_admin check for websocket state and event subscriptions (#107621) 2024-01-13 10:42:41 -10:00
Marc Mueller 5e79a0e583 Enable strict typing for search (#107912) 2024-01-13 10:40:50 -10:00
J. Nick Koston 3649cb96de Refactor config entry storage and index (#107590) 2024-01-13 10:34:15 -10:00
J. Nick Koston 2c6aa80bc7 Use more shorthand attributes in ESPHome fans (#107923) 2024-01-13 15:28:43 -05:00
J. Nick Koston 5a198e05ad Small cleanups to ESPHome (#107924)
- Remove unused variables
- Remove unneeded static info lookups
2024-01-13 15:27:58 -05:00
J. Nick Koston b1d0c6a4f1 Refactor User attribute caching to be safer and more efficient (#96723)
* Cache construction of is_admin

This has to be checked for a lot of api calls and the websocket
every time the call is made

* Cache construction of is_admin

This has to be checked for a lot of api calls and the websocket
every time the call is made

* Cache construction of is_admin

This has to be checked for a lot of api calls and the websocket
every time the call is made

* modernize

* coverage

* coverage

* verify caching

* verify caching

* fix type

* fix mocking
2024-01-13 15:10:50 -05:00
J. Nick Koston d7910841ef Add an index for devices and config entries to the entity registry (#107516)
* Add an index for devices and config entries to the entity registry

* fixes

* tweak

* use a list for now since the tests check order
2024-01-13 14:49:41 -05:00
G Johansson 5d3e069655 Don't load entities for docker virtual ethernet interfaces in System Monitor (#107966) 2024-01-13 20:39:34 +01:00
J. Nick Koston 852a73267f Fix atag test mutating config entry after its adding to hass (#107603) 2024-01-13 20:34:49 +01:00
Marc Mueller 9221f5da10 Enable strict typing for webhook (#107946) 2024-01-13 09:08:26 -10:00
Antoni Czaplicki ca421d4f86 Add support for Uonet+ Vulcan integration on Python 3.12 (#107959)
* Bump vulcan-api to 2.3.2

* Enable vulcan integration on Python 3.12

* Stop skipping tests for vulcan integration on Python 3.12
2024-01-13 19:58:02 +01:00
Daniel Gangl d5c3c19d12 Bump zamg to 0.3.5 (#107939) 2024-01-13 19:53:28 +01:00
J. Nick Koston 1cf96a6558 Remove useless _update function in ESPHome (#107927)
This function is never overwritten so we can remove it
2024-01-13 19:39:27 +01:00
Brett Adams 6cbf1da76a Add charge cable lock to Tessie (#107212)
* Add cable lock

* Translate exception

* Use ServiceValidationError
2024-01-13 19:03:10 +01:00
J. Nick Koston 7db8a52c23 Bump aiohomekit to 3.1.3 (#107929)
changelog: https://github.com/Jc2k/aiohomekit/compare/3.1.2...3.1.3

fixes maybe #97888
2024-01-13 18:27:52 +01:00
Michael Arthur b1a246b817 Add account sensors to electric kiwi integration (#97681)
* add account sensors

* tidy up same issues as other sensors

* add unit tests for sensors

edit and remove comments

assert state and remove HOP sensor types since they aren't being used

* try and fix tests

* add frozen true

* Update tests/components/electric_kiwi/test_sensor.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* return proper native types

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* tidy up attr unique id

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* add entities once and use native values properly

* Improve conftest

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* tidy tests/components/electric_kiwi/test_sensor.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* add assert to component_setup

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* add extra parameters to test

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Update tests/components/electric_kiwi/test_sensor.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Update tests/components/electric_kiwi/test_sensor.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* change coordinator name

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* tidy up sensor translation names

* Apply suggestions from code review

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-13 18:12:40 +01:00
Grant 8395d84bbb Add fan mode support to SmartThings fan entity (#106794)
* Fix the fan to support preset modes

* Add more tests and fix some comments

* Don't override inherited member

* Don't check for supported feature as the check is already performed before here

* Do not check for feature on properties

* Update homeassistant/components/smartthings/fan.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

* Fix tests

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-13 17:25:26 +01:00
Jan Rieger 058759c76a Bump python-holidays to 0.40 (#107888) 2024-01-13 17:21:49 +01:00
Marc Mueller 0cc43d0915 Enable strict typing for xiaomi_ble (#107948) 2024-01-13 16:57:54 +01:00
Arie Catsman 45fec1d404 Bump pyenphase to 1.17.0 (#107950) 2024-01-13 16:53:48 +01:00
G Johansson 1d2c23d81c Skip disk types in System Monitor (#107943)
* Skip disk types in System Monitor

* change back
2024-01-13 14:34:24 +01:00
G Johansson c49246dd07 Fix duplicate unique id in System Monitor (again) (#107947)
Fix duplicate unique id in System Monitor
2024-01-13 13:48:02 +01:00
Erik Montnemery 24c23d7323 Warn if integrations call async_show_progress without passing a task (#107796) 2024-01-13 11:56:05 +01:00
Joost Lekkerkerker 9471f81a18 Give name to Netatmo device snapshots (#107938) 2024-01-13 11:09:47 +01:00
Joost Lekkerkerker f601104418 Snapshot Netatmo devices (#107935) 2024-01-13 10:59:36 +01:00
Joost Lekkerkerker 902619a4db Add snapshot tests to Netatmo platforms (#107932)
* Add snapshot tests to Netatmo platforms

* Add snapshot tests to Netatmo platforms
2024-01-13 10:18:21 +01:00
J. Nick Koston 0458bd68d9 Avoid duplicate search for existing config entries in homekit_controller (#107613) 2024-01-12 22:11:42 -10:00
Marc Mueller 7c98c1e544 Enable strict typing for rest_command (#107911) 2024-01-13 08:48:42 +01:00
Marc Mueller ca1aaacc90 Enable strict typing for system_log (#107914) 2024-01-12 21:21:11 -10:00
Joost Lekkerkerker 7bcfcfef5f Improve Netatmo tests (#107902)
* Improve Netatmo tests

* Improve Netatmo tests
2024-01-12 23:27:31 +01:00
Jan-Philipp Benecke 68698cacac Remove deprecated YAML support from litejet (#107884) 2024-01-12 16:50:15 -05:00
J. Nick Koston 71aecab38b Revert "Restrict Version Disclosure to Authenticated Requests in Home Assistant" (#107904) 2024-01-12 11:06:59 -10:00
J. Nick Koston a7d21c709d Bump orjson to 3.9.10 (#107898) 2024-01-12 11:06:44 -10:00
J. Nick Koston 3a4c64b0a7 Fix missing timeout exception check in powerwall config flow (#107899)
* Fix missing timeout exception check in powerwall config flow

powerwall recently switched to asyncio, and every place we
check for unreachable we need to check for timeout error.
There was one missed

```
09:08 homeassistant homeassistant[546]: 2024-01-12 10:09:08.899 ERROR (MainThread) [homeassistant.components.powerwall.config_flow] Unexpected exception
Jan 12 20:09:08 homeassistant homeassistant[546]: Traceback (most recent call last):
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/src/homeassistant/homeassistant/components/powerwall/config_flow.py", line 168, in _async_try_connect
Jan 12 20:09:08 homeassistant homeassistant[546]:     info = await validate_input(self.hass, user_input)
Jan 12 20:09:08 homeassistant homeassistant[546]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/src/homeassistant/homeassistant/components/powerwall/config_flow.py", line 76, in validate_input
Jan 12 20:09:08 homeassistant homeassistant[546]:     site_info, gateway_din = await _login_and_fetch_site_info(
Jan 12 20:09:08 homeassistant homeassistant[546]:                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/src/homeassistant/homeassistant/components/powerwall/config_flow.py", line 43, in _login_and_fetch_site_info
Jan 12 20:09:08 homeassistant homeassistant[546]:     await power_wall.login(password)
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/powerwall.py", line 58, in login
Jan 12 20:09:08 homeassistant homeassistant[546]:     return await self.login_as(User.CUSTOMER, password, email, force_sm_off)
Jan 12 20:09:08 homeassistant homeassistant[546]:            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/powerwall.py", line 49, in login_as
Jan 12 20:09:08 homeassistant homeassistant[546]:     response = await self._api.login(user, email, password, force_sm_off)
Jan 12 20:09:08 homeassistant homeassistant[546]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/api.py", line 172, in login
Jan 12 20:09:08 homeassistant homeassistant[546]:     return await self.post(
Jan 12 20:09:08 homeassistant homeassistant[546]:            ^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/tesla_powerwall/api.py", line 146, in post
Jan 12 20:09:08 homeassistant homeassistant[546]:     response = await self._http_session.post(
Jan 12 20:09:08 homeassistant homeassistant[546]:                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 601, in _request
Jan 12 20:09:08 homeassistant homeassistant[546]:     await resp.start(conn)
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 960, in start
Jan 12 20:09:08 homeassistant homeassistant[546]:     with self._timer:
Jan 12 20:09:08 homeassistant homeassistant[546]:   File "/usr/local/lib/python3.12/site-packages/aiohttp/helpers.py", line 735, in __exit__
Jan 12 20:09:08 homeassistant homeassistant[546]:     raise asyncio.TimeoutError from None
Jan 12 20:09:08 homeassistant homeassistant[546]: TimeoutError

```

* cov
2024-01-12 21:39:27 +01:00
Xitee 86e608d04f Handle missing fields from Roomba (#107893)
Add default values to mission_stats and run_stats
2024-01-12 21:35:09 +01:00
steffenrapp d0e9e54f26 Extend Nuki integration to expose ringer through Nuki Opener (#107745)
* Expose ring_action_state and ring_action_timestamp of Nuki Opener

* add translation key

* address comments
2024-01-12 18:45:02 +01:00
Bram Kragten 28917011cb Update frontend to 20240112.0 (#107886) 2024-01-12 17:56:43 +01:00
Malte Franken e840824a6e Bump aio_geojson_generic_client to 0.4 (#107866) 2024-01-12 15:50:42 +01:00
Marc Mueller a9420bf05a Enable strict typing for ios (#107382) 2024-01-12 14:43:17 +01:00
Ernst Klamer 0257cd8bbe Bump xiaomi-ble to 0.21.2 (#107779) 2024-01-12 13:29:15 +01:00
Marc Mueller 8e83356ccb Add decorator typing [spotify] (#107560) 2024-01-12 12:58:19 +01:00
Marc Mueller 93dc0b9029 Enable strict typing for ecowitt (#107861) 2024-01-12 12:57:19 +01:00
Marc Mueller b1f1ecb40a Improve meteo_france typing (#107863) 2024-01-12 12:56:40 +01:00
Marc Mueller 7e28c788cb Enable strict typing for bthome (#107859) 2024-01-12 12:56:13 +01:00
Cyrill Raccaud 96a9ebf137 Fix missing unique_id for spt integration (#107087)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-12 12:55:09 +01:00
Marc Mueller e36141a4bc Improve onboarding provider call (#107864) 2024-01-12 12:41:37 +01:00
Marc Mueller 7023ac7366 Enable strict typing for cert_expiry (#107860) 2024-01-12 12:32:17 +01:00
Peter Winkler 2508b55b0f Add myUplink integration (#86522)
* First checkin for myUplink

* Refactored coordinator and sensor state classe

* Updated .coveragerc

* Update test_config_flow

* Fix test_config_flow for myuplink

* Only set state class for temperature sensor

* PR comment updates

* Type strong dict

* use asyncio.timeouts

* PR updates (part 1)

* Updated to myuplink 0.0.9

* Add strict typing

* Fix typing

* Inherit CoordinatorEntity

* Clean up coordinator and sensors

* Use common base entity

* Improve device point sensor

* Exclude entity from coverage

* Set device point entity name if there's no entity description

* Update homeassistant/components/myuplink/sensor.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/myuplink/entity.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/myuplink/entity.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Remvoed firmware + connstate sensors

* Always add device point parameter name

* Removed MyUplinkDeviceSensor

* Removed unused class

* key="celsius",

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-12 12:17:07 +01:00
Marc Mueller c1faafc6a0 Add decorator typing [zha] (#107599) 2024-01-12 11:42:10 +01:00
Marc Mueller 827a1b1f48 Add decorator typing [homematicip_cloud] (#107555) 2024-01-12 11:32:03 +01:00
Marc Mueller bec88e5e51 Add decorator typing [izone] (#107556) 2024-01-12 11:31:08 +01:00
Joost Lekkerkerker 68ddc1481e Rename netatmo base entity file (#107857) 2024-01-12 11:30:34 +01:00
Tobias Sauerwein 87b694298f Revert "Fix Netatmo camera name does not show under Media -> Media sources -> Camera" (#107856) 2024-01-12 11:30:23 +01:00
Marc Mueller c9befe8700 Add decorator typing [limitlessled] (#107557) 2024-01-12 11:30:07 +01:00
Jonas Fors Lellky 668fc442e9 Set max and min temp for flexit_bacnet climate entity (#107665)
107655: Set max and min temp for flexit_bacnet climate entity
2024-01-12 10:52:17 +01:00
Simone Chemelli 8d5cdfaf36 Fix reauth flow for Comelit VEDO (#107461) 2024-01-12 10:32:35 +01:00
Kevin Worrel ee9c6fa0d8 Fix for exception in screenlogic.set_color_mode (#107850) 2024-01-12 10:30:55 +01:00
J. Nick Koston 4b7a313ece Use identity checks for CoreState (#107846)
Some of the checks used ==, and some used is. Switch
everything to is as its faster
2024-01-12 10:21:26 +01:00
J. Nick Koston b12291633c Fix ld2410_ble not being able to setup because it has a stale connection (#107754) 2024-01-12 09:56:52 +01:00
Simone Chemelli 79254c6867 Fix "not-logged" edge cases for Comelit VEDO (#107741) 2024-01-12 09:56:13 +01:00
Erik Montnemery e7628d23d2 Don't include position in binary valve attributes (#107531) 2024-01-12 09:55:28 +01:00
Martin Hjelmare f8318bbbc7 Fix cloud tts loading (#107714) 2024-01-12 09:47:08 +01:00
J. Nick Koston ce11366b9c Bump bluetooth deps (#107816) 2024-01-12 09:45:49 +01:00
J. Nick Koston fb0dad66db Add jinja_pass_arg to reserved template names (#107822) 2024-01-12 09:34:49 +01:00
Mikail Tunç 46a06bc8cd Restrict Version Disclosure to Authenticated Requests in Home Assistant (#107458) 2024-01-12 09:34:18 +01:00
J. Nick Koston bef596d0dd Migrate unifiprotect descriptions to be kw_only (#107832) 2024-01-12 09:33:33 +01:00
J. Nick Koston b6dfa1fa7c Bump nexia to 2.0.8 (#107835) 2024-01-12 09:32:38 +01:00
dependabot[bot] 72618c1bf2 Bump github/codeql-action from 3.22.12 to 3.23.0 (#107628)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 09:31:13 +01:00
dependabot[bot] 751b459f80 Bump actions/cache from 3.3.2 to 3.3.3 (#107840)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-12 09:26:01 +01:00
J. Nick Koston 6612de9a6d Bump govee-ble to 0.27.3 (#107839)
changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.27.2...v0.27.3
2024-01-12 09:16:30 +01:00
G Johansson e715d6a7a1 Fix duplicated resource issue in System Monitor (#107671)
* Fix duplicated resource issue

* Only slug the argument
2024-01-12 08:44:38 +01:00
Matrix 83fbcb11ea Add YoLink SpeakerHub Service (#107787)
* Add YoLink SpeakerHub Service

* fix as suggestion

* service's params descriptions
2024-01-12 08:18:44 +01:00
Aaron Bach dc10f3c204 Move Guardian valve attributes to diagnostics sensors (#107834) 2024-01-11 19:16:54 -07:00
dcmeglio 69a8f476e8 Improved tracking of switchbot opening/closing states (#106741)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-11 16:09:50 -10:00
dcmeglio 0d8073fddf Bump PySwitchbot to 0.44.0 (#107833) 2024-01-11 15:18:57 -10:00
Franck Nijhof e71304580d Fix Tailwind cover stuck in closing state (#107827) 2024-01-11 23:25:33 +01:00
Phil Bruckner 24ddc939c0 Remove Life360 integration (#107805) 2024-01-11 21:49:39 +01:00
Cody C ff811a33f5 Fix Netatmo camera name does not show under Media -> Media sources -> Camera (#107696)
* Fixes issue where Netatmo camera name does not show under Media -> Media sources ->Camera

Fixes #105268

* Remove entity name and change has_entity_name to False

has_entity_name has to be retained (per https://developers.home-assistant.io/docs/core/entity/#has_entity_name-true-mandatory-for-new-integrations)
2024-01-11 21:36:39 +01:00
Erik Montnemery 8a9f9b94ef Fix call to async_setup_component in translation test (#107807) 2024-01-11 10:09:32 -10:00
Erik Montnemery 44a6882c39 Make step_id parameter to FlowHandler.async_show_progress optional (#107802)
Drop step_id parameter from FlowHandler.async_show_progress
2024-01-11 21:05:20 +01:00
Erik Montnemery ddf3a36061 Improve calls to async_show_progress in google (#107788) 2024-01-11 16:47:53 +01:00
Erik Montnemery fbb6c1d0f0 Improve calls to async_show_progress in matter (#107791) 2024-01-11 13:08:54 +01:00
Erik Montnemery 2a0bd6654b Improve calls to async_show_progress in zwave_js (#107794) 2024-01-11 13:07:43 +01:00
Erik Montnemery 24cd6a8a52 Improve ergonomics of FlowManager.async_show_progress (#107668)
* Improve ergonomics of FlowManager.async_show_progress

* Don't include progress coroutine in web response

* Unconditionally reset progress task when show_progress finished

* Fix race

* Tweak, add tests

* Address review comments

* Improve error handling

* Allow progress jobs to return anything

* Add comment

* Remove unneeded check

* Change API according to discussion

* Adjust typing
2024-01-11 12:00:12 +01:00
J. Nick Koston 00b40c964a Bump govee-ble to 0.27.2 (#107778)
* Bump govee-ble to 0.27.0

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.26.0...v0.27.0

note: H5106 is partially supported, full support will be added in another PR + docs

* .1

* 0.27.2
2024-01-11 11:28:03 +01:00
Matrix f217d438cd Add SpeakerHub support to YoLink (#104678)
* SpeakerHub support

* Remove unnecessary code

* fix entity description

* Fix as suggestion

* fixes

* fixes as suggestion & remove Speker Hub service
2024-01-11 11:04:14 +01:00
Ido Flatow b12c53e94e Fix switcher kis logging incorrect property for device's name (#107775)
* use of incorrect property for device's name

* Update switch.py according to Ruff formatter
2024-01-11 11:39:50 +02:00
Robert Resch 1c669c6e84 Revert "Revert "Add preselect_remember_me to /auth/providers"" (#106867) 2024-01-11 10:37:19 +01:00
Erwin Douna b08832a89a Fastdotcom service optimization (#107179)
* Startup mechanic

* Workable service (again)

* Optimized version, for now

* Minor refactoring

* Test cases

* Fixing test case

* Adding startup comment

* State_unknown added

* Update homeassistant/components/fastdotcom/services.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Check if config entries are not found

* Update tests/components/fastdotcom/test_service.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/fastdotcom/services.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/fastdotcom/services.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-11 08:27:15 +01:00
Jan Bouwhuis e0457590d1 Fix mqtt text text min max config params can not be equal (#107738)
Fix mqtt text text min max kan not be equal
2024-01-11 07:17:48 +01:00
Christopher Bailey b83f5b5932 Add new event sensors from UniFi Protect 2.11 (#107773) 2024-01-10 19:23:59 -10:00
Christopher Bailey 99e25d94c0 Rework events for UniFi Protect (#107771) 2024-01-10 19:02:16 -10:00
Christopher Bailey ec8a33b52d Rework state change detection for UniFi Protect entities (#107766) 2024-01-10 18:06:45 -10:00
Christopher Bailey 335a1f6e09 Bump pyunifiprotect to 4.23.2 (#107769) 2024-01-10 18:04:37 -10:00
Thomas Kistler 28cdf5f1d2 Bump aioambient to 2024.01.0 (#107767) 2024-01-10 18:04:15 -10:00
jjlawren 0bdbb52694 Bump sonos-websocket to 0.1.3 (#107765) 2024-01-10 18:00:34 -10:00
Christopher Bailey e595d24d78 Add leak sensor for UP Sense for UniFi Protect (#107762) 2024-01-10 15:32:05 -10:00
Shay Levy 28b5104cda Bump aioshelly to 7.1.0 (#107593) 2024-01-10 14:50:45 -10:00
Ernst Klamer 0ae86095d2 Bump bthome-ble to 3.4.1 (#107757) 2024-01-10 14:48:37 -10:00
Christopher Bailey b5bd910963 Bump pyunifiprotect to 4.23.1 (#107758) 2024-01-10 14:38:56 -10:00
Aaron Bach bc4c3bf9e7 Add valve platform to Guardian (#107423) 2024-01-10 13:03:18 -10:00
J. Nick Koston b2f7fd12a2 Add comment to ConfigEntry.async_setup about race safety (#107756) 2024-01-10 13:03:09 -10:00
Eugene Tiutiunnyk 1bb76e2351 Fix Mac address check in kef integration (#107746)
Fix the check for Mac address in kef integration (#106072)

It might be due to an update of `getmac` dependency in some case the mac
was resolved to "00:00:00:00:00:00" instead of the anticipated `None`.
With that the original bug #47678 where a duplicated entity would be
created in case of HA is restarted while the KEF speaker is offline
came back. The PR #52902 was applied back in time to fix that issue.
Now, this change is a continuation of the previous efforts. The solution
was tested for about two months and it does address the bug with
creating duplicated entities in case of KEF speakers being offline.
2024-01-10 23:23:40 +01:00
Allen Porter 350806c036 Make to-do list item exception wording consistent (#107743) 2024-01-10 22:49:25 +01:00
bubonicbob c74bef265a Update powerwall for tesla_powerwall 0.5.0 which is async (#107164)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-10 11:21:53 -10:00
YogevBokobza bdba6f41c9 Bump aioswitcher to 3.4.1 (#107730)
* switcher: added support for device_key logic included in aioswitcher==3.4.1

* switcher: small fix

* switcher: after lint

* switcher: fix missing device_key in tests

* remove device_key function

* fix missing device_key in tests
2024-01-10 21:41:16 +02:00
Álvaro Fernández Rojas 9036d67588 Rename AEMET weather_update_coordinator (#107740)
* aemet: rename weather_update_coordinator

Use "coordinator" instead, like other integrations.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

* coverage: remove AEMET coordinator

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-01-10 20:33:44 +01:00
J. Nick Koston 7d18ad6fe7 Reduce discovery flow matching overhead (#107709) 2024-01-10 07:14:18 -10:00
Álvaro Fernández Rojas 6a6c447c28 Use new AEMET library data for sensor platform (#102972)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-10 16:36:20 +01:00
Jan Bouwhuis de9bb20135 Fix invalid alexa climate or water_heater state report with double listed targetSetpoint (#107673) 2024-01-10 16:23:42 +01:00
Jan Bouwhuis 5bdcbc4e8b Redact sensitive data in alexa debug logging (#107676)
* Redact sensitive data in alexa debug logging

* Add wrappers to diagnostics module

* Test http api log is redacted
2024-01-10 16:20:47 +01:00
Josef Zweck 956921a930 Improvements for tedee integration (#107238)
* improvements

* wait another second before creating the entry

* move delay to lib

* move library bump to separate PR

* move available back to lock from entity
2024-01-10 14:55:28 +01:00
Arie Catsman e5eb58b456 Bump Pyenphase to 1.16.0 (#107719) 2024-01-10 14:34:25 +01:00
Marc Mueller e91a159efa Add decorator typing [modern_forms] (#107558) 2024-01-10 14:14:33 +01:00
Marc Mueller fbbe03c93c Add decorator typing [soma] (#107559) 2024-01-10 14:13:05 +01:00
Marc Mueller 402ead8df2 Add decorator typing [toon] (#107597) 2024-01-10 14:11:13 +01:00
elmurato 3fba02a692 Improve debug logs in Minecraft Server (#107672)
Improve debug logs
2024-01-10 14:06:49 +01:00
J. Nick Koston 49bdfbd9ca Bump govee-ble to 0.26.0 (#107706) 2024-01-10 14:03:15 +01:00
Jan-Philipp Benecke 08e3178682 Allow configuration of min_gradient from UI to be negative in Trend (#107720)
Allow configuration of min_gradient to be negative from UI
2024-01-10 14:03:02 +01:00
Cyrill Raccaud 598e18ca86 Set proper sensor device class for swiss_public_transport (#106485)
set proper sensor device class
2024-01-10 13:23:02 +01:00
Erwin Douna 15e3af72d1 Fix Tado unique mobile device dispatcher (#107631)
* Add unique home ID device dispatch

* Adding fixture for new setup

* Minor refactor work

* Add check for unlinked to different homes

* If the interface returns an error

* Proper error handling

* Feedback fixes

* Comments for error in client

* Typo

* Update homeassistant/components/tado/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update homeassistant/components/tado/__init__.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Update devices fix standard

* Dispatch out of loop

* Update dispatcher

* Clean up

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-10 12:09:10 +01:00
Michaël Arnauts 093e35f4d4 Remove myself as a codeowner from tado (#107708) 2024-01-09 22:54:43 -10:00
Josef Zweck 0f79b6ac2a Bump pytedee_async to 0.2.11 (#107707) 2024-01-10 09:43:04 +01:00
Lars R bf6b9175a1 Add 'bitwise_xor' filter to jinja templates (#104942)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-10 09:40:52 +01:00
J. Nick Koston 554c27a31a Clamp tplink color temp to valid range (#107695) 2024-01-09 17:08:49 -10:00
Maciej Bieniek 8181fbab5c Fix device_class type for Shelly Gen1 sleeping sensors (#107683) 2024-01-09 12:01:19 -10:00
Yuval Aboulafia b739fa8c02 Add missing 'state class' to Airvisual (#107666) 2024-01-09 13:01:11 -07:00
Erik Montnemery 9859306718 Prevent overriding cached attribute as property (#107657)
* Prevent overriding cached attribute as property

* Remove debug
2024-01-09 19:16:45 +01:00
J. Nick Koston ab6b9fe891 Avoid total_seconds conversion in bond keep alive (#107618) 2024-01-09 07:46:57 -10:00
Jan-Philipp Benecke d1c1eb8428 Add test for avoid triggering ping device tracker home after reload (#107107) 2024-01-09 18:39:31 +01:00
Jan-Philipp Benecke 3141b92027 Remove deprecated services from Huawei LTE (#107578) 2024-01-09 18:39:05 +01:00
Jan-Philipp Benecke 71dcbb95ab Remove deprecated services from Ezviz (#107582) 2024-01-09 18:38:42 +01:00
Luke Lashley 29cac5b093 Bump Python-Roborock to 0.39.0 (#107547)
* bump to 0.39.0

* add new strings

* change strings
2024-01-09 16:48:01 +01:00
Jan-Philipp Benecke 33dd6f66e3 Correct device class in sql tests (#107663) 2024-01-09 16:30:21 +01:00
Jan-Philipp Benecke 1a6418d361 Use right state class in filter test (#107643) 2024-01-09 16:06:36 +01:00
Jan-Philipp Benecke c62e79f9ee Use right state class for kWh sensor in homekit_controller (#107644) 2024-01-09 16:06:18 +01:00
mkmer 4dbaa576a7 Remove unused option flow from blink (#106735)
* Remove unused option flow

* remove update listener

* adjust scan_interval to original default

* default scn interval back to 30s
2024-01-09 16:06:04 +01:00
Ståle Storø Hauknes 5d259586e5 Airthings cloud: Add myself as codeowner (#107654)
Add myself as codeowner
2024-01-09 15:17:52 +01:00
J. Nick Koston 249e10d8c7 Fix dlink test mutating config entry after its adding to hass (#107604) 2024-01-09 14:55:20 +01:00
Jan-Philipp Benecke 15cee58637 Remove deprecated YAML support from zodiac (#107584) 2024-01-09 14:32:13 +01:00
Jan-Philipp Benecke fd533e46dd Correct state class in mobile_app tests (#107646)
Correct right state class in `mobile_app` tests
2024-01-09 14:08:58 +01:00
Manuel Dipolt c9d0134b8b Remove deprecated line in osoenergy (#107553) 2024-01-09 13:56:50 +01:00
Marc Mueller 29dd70ccfb Fix tplink_lte setup (#107642) 2024-01-09 13:08:40 +01:00
vexofp 3c53693fe3 Prevent toggle from calling stop on covers which do not support it (#106848)
* Prevent toggle from calling stop on covers which do not support it

* Update homeassistant/components/cover/__init__.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-09 12:32:27 +01:00
Abílio Costa 3a36117c08 Bump idasen-ha to 2.5 (#107607) 2024-01-08 22:27:16 -10:00
J. Nick Koston 1e4d10efe1 Add caching to the distance calculation utility (#107626) 2024-01-08 21:51:56 -10:00
J. Nick Koston 49e3c740cc Small cleanups to temperature helper (#107625) 2024-01-08 21:51:35 -10:00
Erwin Douna 9ca09bd6f0 Tado unavailable state to device tracker (#107542)
* Adding unavailable state to device tracker

* Small fixes
2024-01-09 08:18:22 +01:00
J. Nick Koston a0b00d78b1 Avoid duplicate property lookups in camera state_attributes (#107627) 2024-01-09 08:16:19 +01:00
J. Nick Koston 955c70b8f1 Fix cloudflare tests using a dict for the unique id (#107601)
fix cloudflare tests using a dict for the unique id
2024-01-09 07:59:29 +01:00
J. Nick Koston 05d205ae7a Small cleanups to number entity (#107624) 2024-01-08 20:20:15 -10:00
Eric Severance 82dc8260c6 Bump pywemo to 1.4.0 (#107623) 2024-01-08 20:01:15 -10:00
J. Nick Koston 86603b332a Bump aiohttp-zlib-ng to 0.3.1 (#107595) 2024-01-08 13:24:57 -10:00
J. Nick Koston ea2178a53d Fix tractive tests using a dict for the unique_id (#107602) 2024-01-08 13:10:15 -10:00
J. Nick Koston bb78b75d49 Bump pymeteoclimatic to 0.1.0 (#107583) 2024-01-08 23:02:29 +01:00
Jan Rieger 9a81a29ce2 Let babel handle the locale separator in holiday (#107571) 2024-01-08 22:59:12 +01:00
Arie Catsman e8acccce05 Catch missing inverter in Enphase Envoy (#106730)
* bug: prevent invalid key when empty invereter arrays is returned.

Some envoy fw versions return an empty inverter array
every 4 hours when no production is taking place.
Prevent collection failure due to this as other data
seems fine. Inveretrs will show unknown during this cycle.

* refactor: replace try/catch with test and make warning debug

* Update homeassistant/components/enphase_envoy/sensor.py

* Update homeassistant/components/enphase_envoy/sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-08 22:28:04 +01:00
Jan-Philipp Benecke ca886de3ca Remove deprecated YAML support from OpenSky (#107585) 2024-01-08 22:03:25 +01:00
Marc Mueller 8150754b9b Improve led_ble generic typing (#107534) 2024-01-08 10:08:19 -10:00
mkmer 438ba7eaad Add software version to Blink device info (#107548)
* add firmware to device

* Version from attributes
2024-01-08 20:32:29 +01:00
nic e349608f92 Retry zoneminder connection setup (#107519)
* zoneminder setup retry connection

Makes ZM setup be async for enabling connection retry attempts

This also requires zm-py version bump v0.5.4 as that
dependency was patched in conjunction to resolve this issue

Closes #105271

Signed-off-by: Nic Boet <nic@boet.cc>

* ruff format

Signed-off-by: Nic Boet <nic@boet.cc>

* ruff fixes

Signed-off-by: Nic Boet <nic@boet.cc>

* RequestsConnectionError

Signed-off-by: Nic Boet <nic@boet.cc>

* revert async changes

Signed-off-by: Nic Boet <nic@boet.cc>

---------

Signed-off-by: Nic Boet <nic@boet.cc>
2024-01-08 20:30:44 +01:00
Michael Hansen 4bb2a3ad92 Specific Assist errors for domain/device class (#107302)
* Specific errors for domain/device class

* Don't log exception

* Check device class first

* Refactor guard clauses

* Test default error
2024-01-08 12:23:06 -06:00
Jan Bouwhuis 20610645fb Pop the mocked config flow, restore the original with mock_config_flow (#107567)
Pop the mocked config flow, restore the original if it existed
2024-01-08 19:01:43 +01:00
Josef Zweck 0d946c62dc Bump pytedee_async to 0.2.10 (#107540)
* bump tedee

* bump tedee
2024-01-08 17:17:20 +01:00
starkillerOG fdf71b2687 Bump reolink_aio to 0.8.6 (#107541) 2024-01-08 17:01:19 +01:00
FlorianOosterhof 13bfeef1da Unlock the precision of sensors of the opentherm_gw integration (#107227)
* Unlock the precision of sensors of the opentherm_gw integration

* Add a suggested_display_precision attribute to all opentherm_gw sensors.
2024-01-08 16:37:11 +01:00
elmurato 0d44a1eb66 Bump mcstatus to v11.1.1 (#107546)
* Bump mcstatus to 11.1.0

* Bump mcstatus to v11.1.1
2024-01-08 16:32:37 +01:00
mkmer d7be7f5ae1 Bump blinkpy to 0.22.5 (#107537)
bump blinkpy 0.22.5
2024-01-08 15:11:19 +01:00
Josef Zweck 080484f2f6 Remove tedee device safely from registry (#107529)
remove device safely from registry
2024-01-08 13:10:16 +01:00
mkmer cc67fd8a3c Reduce polling rate in Blink (#107386) 2024-01-08 10:51:58 +01:00
Marc Mueller e7cc26d028 Improve folder_watcher typing (#107271) 2024-01-08 10:49:15 +01:00
Marc Mueller 3632d6be46 Enable strict typing for dlna_dms (#107305) 2024-01-08 10:45:51 +01:00
Marc Mueller d0e6ce193c Enable strict typing for tod (#107284) 2024-01-08 10:44:47 +01:00
Marc Mueller c30bf1f6e1 Enable strict typing for nightscout (#107307) 2024-01-08 10:43:40 +01:00
Marc Mueller b22cd2deaa Enable strict typing for system_health (#107283) 2024-01-08 10:40:49 +01:00
Joost Lekkerkerker 82e0fc5f4e Use parametrize in drop connect binary sensor tests (#107111) 2024-01-08 10:38:44 +01:00
Josef Zweck 14bf778c10 Cleanup device registry for tedee when a lock is removed (#106994)
* remove removed locks

* move duplicated code to function

* remove entities by removing device

* add new locks automatically

* add locks from coordinator

* smaller pr

* remove snapshot

* move lock removal to coordinator

* change comment

* Update tests/components/tedee/test_init.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/test_init.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* test lock unavailable

* move logic to function

* resolve merge conflicts

* no need to call keys()

* no need to call keys()

* check for change first

* readability

* Update tests/components/tedee/test_lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/test_lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-08 10:37:35 +01:00
Joost Lekkerkerker 5fe96390f5 Add zone devices to AnthemAV (#107192) 2024-01-08 10:37:17 +01:00
Manuel Rüger 394385fdeb Fix Luftdaten sensor id string (#107506)
Luftdaten: fix sensor id string
2024-01-08 10:15:30 +01:00
Marc Mueller 3c7a9272fa Enable strict typing for intent (#107282) 2024-01-08 10:09:48 +01:00
Marc Mueller 5ef04fcc7b Improve hunterdouglas_powerview typing (#107445) 2024-01-08 10:08:52 +01:00
Marc Mueller a6fc4c2bd5 Improve hassio typing (#107292) 2024-01-08 10:08:09 +01:00
Marc Mueller 78752264b3 Fully type homeassistant integration (#107380) 2024-01-08 10:07:30 +01:00
Marc Mueller 5ae419367e Enable strict typing for generic_hygrostat (#107272) 2024-01-08 09:59:31 +01:00
Marc Mueller 265f587768 Enable strict typing for history_stats (#107273) 2024-01-08 09:58:07 +01:00
Erwin Douna 3958d89ae6 Improve typing for Tado (#106992) 2024-01-08 09:57:01 +01:00
Lucas Mindêllo de Andrade db53237b9a Bump SunWEG to 2.1.0 (#107459) 2024-01-08 09:51:06 +01:00
Marc Mueller f5d5e1dcbb Enable strict typing for google_assistant_sdk (#107306) 2024-01-08 09:47:17 +01:00
Marc Mueller fde7a6e9ef Improve dispatcher typing (#106872) 2024-01-08 09:45:37 +01:00
J. Nick Koston ea4143154b Handle unknown state in HomeKit (#107039) 2024-01-08 09:42:28 +01:00
Jan-Philipp Benecke 40e1bab0ac Remove deprecated YAML for freebox (#107497) 2024-01-08 09:36:17 +01:00
Marc Mueller 442eb68d92 Fix asyncio.gather call (#107500) 2024-01-08 09:35:47 +01:00
tronikos 3709475cb5 Enable long term statistics for Flume water usage current sensor (#107512) 2024-01-08 09:31:56 +01:00
G Johansson d8c139f211 Fix language flavors in holiday (#107392) 2024-01-08 09:31:44 +01:00
J. Nick Koston d260ed938a Reduce overhead to call entity services (#106908) 2024-01-08 09:30:52 +01:00
Jan Bouwhuis 9ad3c8dbc9 Remove MQTT legacy vacuum support (#107274) 2024-01-08 09:22:43 +01:00
J. Nick Koston 3eb81bc461 Add coverage for scanning tags with ESPHome (#107337) 2024-01-08 09:20:27 +01:00
Joost Lekkerkerker 1171a7a3d9 Migrate kmtronic to has entity name (#107469) 2024-01-08 09:14:37 +01:00
Joost Lekkerkerker af209fe2b8 Migrate Mullvad to has entity name (#107520) 2024-01-08 09:13:50 +01:00
Joost Lekkerkerker 7202126751 Add Met eireann to strict typing (#107486) 2024-01-08 09:13:15 +01:00
J. Nick Koston d609344f40 Reduce duplicate code in ESPHome connection callback (#107338) 2024-01-08 09:10:58 +01:00
Joost Lekkerkerker 102fdbb237 Bump aiowithings to 2.1.0 (#107417) 2024-01-08 09:08:59 +01:00
J. Nick Koston 448d5bbf27 Increase pip timeout in image builds to match core (#107514) 2024-01-08 09:07:42 +01:00
J. Nick Koston fc36c48acc Bump sensorpush-ble to 1.6.2 (#107410) 2024-01-07 22:06:12 -10:00
Joost Lekkerkerker eaac01bc76 Introduce heat area property in moehlenhoff alpha2 (#107488) 2024-01-08 08:17:28 +01:00
Joost Lekkerkerker 8b0c96a212 Clean up met config flow (#107480) 2024-01-08 08:11:30 +01:00
Joost Lekkerkerker f2483bf660 Use constants in Alpha2 config flow (#107518) 2024-01-08 08:05:51 +01:00
J. Nick Koston efffbc08aa Add support for bluetooth local name matchers shorter than 3 chars (#107411) 2024-01-07 18:25:56 -10:00
J. Nick Koston 69307374f4 Signficantly reduce executor contention during bootstrap (#107312)
* Signficantly reduce executor contention during bootstrap

At startup we have a thundering herd wanting to use the executor
to load manifiest.json. Since we know which integrations we are
about to load in each resolver step, group the manifest loads
into single executor jobs by calling async_get_integrations on
the deps of the integrations after they are resolved.

In practice this reduced the number of executor jobs
by 80% during bootstrap

* merge

* naming

* tweak

* tweak

* not enough contention to be worth it there

* refactor to avoid waiting

* refactor to avoid waiting

* tweaks

* tweaks

* tweak

* background is fine

* comment
2024-01-07 22:55:40 -05:00
J. Nick Koston acf78664e2 Reduce overhead to compile statistics (#106927)
* Reduce overhead to compile statistics

statistics uses LazyState for compatibility with State when pulling
data from the database.

After the previous round of refactoring to modern history, the setters
are never called and can be removed.

* reduce
2024-01-07 22:36:49 -05:00
J. Nick Koston d04e2d56da Add support for JSON fragments (#107213) 2024-01-07 17:36:31 -10:00
J. Nick Koston 50edc334de Refactor sensor recorder _get_sensor_states to check for state class first (#107046)
The state class check is cheap and the entity filter check is much
more expensive, so do the state class check first
2024-01-07 22:36:03 -05:00
J. Nick Koston 0b9992260a Improve logbook context augment performance (#106926)
Makes LazyEventPartialState a bit lazier since almost all the
properties are never called.
2024-01-07 22:35:28 -05:00
J. Nick Koston d8c6534aff Refactor recorder for common event case (#106753)
Almost 99% of items that are put into the recorder queue are
Events. Avoid wrapping them in tasks since we have to unwrap
them right away and its must faster to check for both RecorderTask
and Events since events are the common case.
2024-01-07 22:31:40 -05:00
J. Nick Koston 368feec712 Refactor translations to reduce dict lookups (#107425)
* Refactor translations to reduce dict lookups

All of our cache lookups used:

`cache[language][O(component)][category]`

The cache was designed as

`cache[language][component][category][flatted_key]`

The lookups are now

`cache[language][category][O(component)]`

The cache is now stored as

`cache[language][category][component][flatted_key]`

This allows the catch fetch to avoid looking up
the category each loop

* already a set, and we do not mutate
2024-01-07 22:29:27 -05:00
Matthias Alphart f53109f513 Move KNX service registration to async_setup (#106635) 2024-01-07 23:26:46 +01:00
Joost Lekkerkerker 426a1511d5 Mark Ring battery and signal strength sensors as diagnostic (#107503) 2024-01-07 23:14:38 +01:00
tronikos 810c6ea5ae Google Generative AI: Add a service for prompts consisting of text and images using Gemini Pro Vision (#105789)
* Bump google-generativeai to 0.3.1

* Migrate to the new API and default to gemini-pro

* Add max output tokens option

* Add generate_content service

* Add  tests

* additional checks

* async read_bytes

* Add tests for all errors
2024-01-07 16:21:27 -05:00
Marc Mueller fd52172c33 Improve harmony typing (#107447) 2024-01-07 09:35:55 -10:00
Matthias Alphart a9b51f0255 Fix KNX telegram device trigger not firing after integration reload (#107388) 2024-01-07 20:32:17 +01:00
David Bonnes 2a8444b245 Fix evohome high_precision temps not retreived consistently (#107366)
* initial commit

* doctweak

* remove hint

* doctweak
2024-01-07 20:04:14 +01:00
J. Nick Koston 75d591593d Remove calls to distribution and legacy zip support from package util (#107427) 2024-01-07 07:39:48 -10:00
J. Nick Koston 901b9365b4 Small cleanups to ESPHome callbacks (#107428) 2024-01-07 07:39:33 -10:00
Joost Lekkerkerker 15ce70606f Add typing to Lutron platforms (#107408)
* Add typing to Lutron platforms

* Update homeassistant/components/lutron/switch.py

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Update homeassistant/components/lutron/__init__.py

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Update homeassistant/components/lutron/entity.py

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Update homeassistant/components/lutron/scene.py

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

* Fix typing

* Fix typing

---------

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-07 17:48:23 +01:00
Cyrill Raccaud 3139e92696 Fix Swiss public transport initial data for attributes (#107452)
faster initial data for attributes
2024-01-07 16:19:58 +01:00
Cyrill Raccaud da8ce7bbf3 Fix local_todo typo (#107454)
local todo typo
2024-01-07 14:20:37 +01:00
G Johansson 840089b8ac Handle OSError during setup for System Monitor (#107396)
* Handle OSError during setup for System Monitor

* Clean string copy

* debug

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-07 13:15:34 +01:00
Raman Gupta d19037a36b Clean up zwave_js test_removed_device test (#107346) 2024-01-07 12:26:08 +01:00
Marc Mueller cd8adfc84e Improve flume typing (#107444) 2024-01-07 11:39:41 +01:00
Joost Lekkerkerker cecb12a93c Remove name from faa_delays (#107418) 2024-01-07 11:27:13 +01:00
Michael 84b20edeca Add missing wifi data in AVM!Fritz Tools tests (#107373) 2024-01-07 10:51:31 +01:00
RJPoelstra c833f275d6 Add select platform to Vogel's MotionMount integration (#107132) 2024-01-06 23:44:28 -10:00
Marc Mueller e4ff51fa9a Enable strict typing for youtube (#107440) 2024-01-07 10:43:54 +01:00
Marc Mueller d8c79964c8 Enable strict typing for waqi (#107439) 2024-01-07 10:43:42 +01:00
Marc Mueller be68feffdd Enable strict typing for enphase_envoy (#107436) 2024-01-06 23:42:38 -10:00
Marc Mueller 5a39503acc Enable strict typing for led_ble (#107437) 2024-01-06 23:41:54 -10:00
Marc Mueller de3fde5901 Enable strict typing for oralb (#107438) 2024-01-06 23:41:31 -10:00
Aaron Bach c96f9864c5 Remove leftover Guardian mixin (#107424) 2024-01-06 23:06:45 -07:00
Aaron Bach e446857001 Clean up buggy Guardian switch context managers (#107426) 2024-01-06 23:06:28 -07:00
Aaron Bach 50fbcaf20f Streamline exception handling in Guardian (#107053) 2024-01-06 12:56:19 -10:00
Elvio fce869248c Update Apprise to 1.7.1 (#107383) 2024-01-06 23:44:20 +01:00
Brandon Rothweiler 3f2170bd06 Bump py-aosmith to 1.0.6 (#107409) 2024-01-06 12:01:11 -10:00
Marc Mueller 4ea8c174f5 Improve homekit_controller typing (#107381) 2024-01-06 11:02:30 -10:00
Ben Morton 427f7a7866 Add support for the Spotify DJ (#107268)
* Add support for the Spotify DJ playlist by mocking the playlist response
Add error handling for playlist lookup to ensure it doesn't break current playback state loading

* Run linters
Add exception type to playlist lookup error handling

* Fix typo in comment

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-06 17:22:46 +01:00
Brandon Rothweiler 4af47a4815 Add diagnostics to A. O. Smith integration (#106343)
* Add diagnostics to A. O. Smith integration

* Bump py-aosmith to 1.0.4

* remove redactions from test fixture
2024-01-06 17:16:24 +01:00
Marc-Olivier Arsenault 94885b9868 remove marcolivierarsenault from ecobee codeowners (#107377) 2024-01-06 16:29:50 +01:00
Josef Zweck 7385da626e Add new locks automatically to tedee integration (#107372)
* remove removed locks

* move duplicated code to function

* remove entities by removing device

* add new locks automatically

* add locks from coordinator

* remove other PR stuff

* add pullspring lock to test for coverage

* requested changes
2024-01-06 16:02:07 +01:00
Jan Bouwhuis d6aaaf1f1a Only mock config_entries.HANDLERS for the current test in mock_config_flow (#107357) 2024-01-06 11:46:12 +01:00
J. Nick Koston 65985c4e0b Fix name of 64bit intel/amd arch in builder and wheels workflow (#107335) 2024-01-06 11:30:20 +01:00
Sid 9b1a8a1129 enigma2: fix exception when device in deep sleep, fix previous track (#107296)
enigma2: fix exception when device in deep sleep; previous track
2024-01-06 11:18:32 +01:00
Joost Lekkerkerker a03ac3ddcd Fix passing correct location id to streamlabs water (#107291) 2024-01-06 10:50:06 +01:00
Marc Mueller 3086d33261 Fix rainforest_raven typing (#107309) 2024-01-06 10:41:25 +01:00
Marc Mueller 902d5a79ca Enable strict typing for p1_monitor (#107301) 2024-01-06 10:38:50 +01:00
Marc Mueller 135a718a0e Enable strict typing for energyzero (#107300) 2024-01-06 10:33:22 +01:00
Marc Mueller 28c0c2d2ad Enable strict typing for easyenergy (#107299) 2024-01-06 10:31:55 +01:00
J. Nick Koston 6ff990e2c2 Avoid fetching logger in check_if_deprecated_constant if there is nothing to log (#107341)
getLogger needs a threading lock so its nice to avoid
calling it if we are not going to log anything
2024-01-06 10:20:30 +01:00
J. Nick Koston 851ad21d11 Small cleanup to zeroconf properties matcher (#107342)
* Small cleanup to zeroconf properties matcher

- Switch to dict.items() to avoid dict key lookup
- return early when a match is rejected

* tweak
2024-01-06 10:16:57 +01:00
J. Nick Koston 44018a4183 Use faster identity checks for SupportsResponse Enum (#107351) 2024-01-06 10:12:31 +01:00
Aidan Timson ba60290431 Fix support for play/pause functionality in System Bridge (#103423)
Fix support for play/pause functionality
2024-01-06 10:06:23 +01:00
jimmyd-be ee67c97274 Add time entity to Renson (#105031)
* Add time entity to Renson

* Update homeassistant/components/renson/time.py

Co-authored-by: Robert Resch <robert@resch.dev>

* remove deleted sensors from strings.json

* Fix Ruff issue

* Fixed loading issue

* Try to fix frozen error

* Revert "Try to fix frozen error"

This reverts commit 803104c2925e6d5acecc0a9d45170a0c85ee7f0e.

* Try to fix frozen error

* Revert "Try to fix frozen error"

This reverts commit 8ba2dcce9444fadcf6bf79e86295f93359b6d7b8.

* Update homeassistant/components/renson/time.py

Co-authored-by: Robert Resch <robert@resch.dev>

* Change import + api argument

* use _attr_has_entity_name

* Update homeassistant/components/renson/time.py

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-01-06 09:27:34 +01:00
Paulus Schoutsen f1d2868fd0 Add API to fetch Assist devices (#107333)
* Add API to fetch Assist devices

* Revert some changes to fixture, make a single fixture for an Assist device
2024-01-05 23:30:18 -05:00
nic 6201e81eca Bump zm-py version to v0.5.3 for zoneminder (#107331)
zm-py version bump for zoneminder

Signed-off-by: Nic Boet <nic@boet.cc>
2024-01-05 19:19:35 -08:00
J. Nick Koston c86d1b03fc Disable thermobeacon voltage sensors by default (#107326) 2024-01-05 16:06:31 -10:00
Marc Mueller 4e62dacc00 Fix lutron test AttributeError (2) (#107324) 2024-01-06 01:15:50 +01:00
Marc Mueller 133fd6ea5d Fix lutron test AttributeError (#107323) 2024-01-06 00:51:17 +01:00
Joost Lekkerkerker 49284fb469 Fix duplicate unique_ids in emonitor (#107320) 2024-01-05 13:33:04 -10:00
Shay Levy ad3c78f848 Fix Shelly missing Gen value for older devices (#107294) 2024-01-05 13:32:04 -10:00
David F. Mulcahey 2ed9397611 Fix assertion error when unloading ZHA with pollable entities (#107311) 2024-01-05 16:53:43 -05:00
Joost Lekkerkerker 2b43271c3b Move Lutron entry data to typed class (#107256)
* Move Lutron entry data to typed class

* Move Lutron entry data to typed class

* Exclude file

* Update homeassistant/components/lutron/__init__.py

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-01-05 22:04:10 +01:00
Roman Sivriver bb03579bd9 Fix typo in recorder strings.json (#107278) 2024-01-05 20:39:04 +01:00
Joost Lekkerkerker 9672ca5719 Extract LutronDevice into separate file (#107285) 2024-01-05 20:38:02 +01:00
wilburCforce 52653220e3 Add code owner for Lutron (#107280)
* hassfest enable

* update code owner

* fix code owner typo

* removed garbage
2024-01-05 20:07:08 +01:00
J. Nick Koston 81458dbf6f Add test coverage for ESPHome state subscription (#107045) 2024-01-05 19:51:49 +01:00
Jan-Philipp Benecke c81f909ee3 Use call_soon_threadsafe in mqtt client unsubscribe callback (#107266) 2024-01-05 19:45:56 +01:00
Michael Hansen a600a0e023 Expose all areas to Assist and ignore empty aliases (#107267)
* Expose all areas to Assist

* Skip empty entity/area aliases
2024-01-05 13:45:41 -05:00
J. Nick Koston 24ee64e20c Convert cert_expiry to use asyncio (#106919) 2024-01-05 08:03:53 -10:00
Jan-Philipp Benecke 9a15a5b6c2 Cleanup and migrate rest_command tests to be async (#107264)
Migrate rest_command tests to be async
2024-01-05 18:53:25 +01:00
Marc Mueller 833cddc8f5 Improve conversation typing (#106905) 2024-01-05 18:40:34 +01:00
Marc Mueller b2a4de6eed Enable strict typing for duotecno (#107261) 2024-01-05 18:39:18 +01:00
Marc Mueller de72bbfaad Enable strict typing for minecraft_server (#107262) 2024-01-05 18:38:31 +01:00
Joost Lekkerkerker 3a94dd6578 Migrate Suez Water to has entity name (#107251) 2024-01-05 18:36:21 +01:00
Marc Mueller f0b47bf00c Enable strict typing for downloader (#107263) 2024-01-05 18:35:05 +01:00
Marc Mueller 221fa48ea5 Improve denonavr typing (#106907) 2024-01-05 18:34:32 +01:00
Jan-Philipp Benecke e80138dfdf Remove duplicate assignment of median and statistical_mode jinja2 filter (#106953) 2024-01-05 17:36:55 +01:00
Joost Lekkerkerker 3d338b5719 Sort Lutron platforms (#107257) 2024-01-05 17:31:50 +01:00
SLaks 9be9bbad61 Allow selecting of counter entities in derivative/integration config flow (#105321) 2024-01-05 16:46:12 +01:00
wilburCforce be6cf7d3ae Add Lutron config flow (#98489)
* rough in structure for config_flow

* updated json files

* initial conversion to config_flow

* minor updates

* Update binary_sensor.py

* Update config_flow.py

* Update __init__.py

* updates beased on requested changes

* Update const.py

added doc note for ruff

* updated based on suggestions

* updated load xmldb for efficiency

* updated references

* removed unneeded file

* updated config flow to use GUID from XML DB

* minor update to change logging

* updated based on PR feedback

* reverted change for line 30 based on testing

* corrected user_input

* updated based on latest comments

* exception handling

* added raising of issues for config flow

* updated issues strings

* config flow test shell - needs work

* minor changes

* Update strings.json

* Update config_flow.py

* Update __init__.py

* Create conftest.py

* Update test_config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Update strings.json

* Update requirements_test_all.txt

* Update strings.json

* Update strings.json

* Update config_flow.py

* Update test_config_flow.py

* Update config_flow.py

* Create test_init.py

* Update __init__.py

* Delete tests/components/lutron/test_init.py

* Update strings.json

* updated import parts and tested

* updated strings to improve user feedback

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-05 16:39:14 +01:00
Franck Nijhof 80a08199f8 Update Home Assistant Wheels action to 2024.01.0 (#107240) 2024-01-05 16:35:20 +01:00
Alexander Somov d754ea7e22 Add new Rabbit Air integration (#66130)
* Add new Rabbit Air integration

* Remove py.typed file

It is not needed and was just accidentally added to the commit.

* Enable strict type checking for rabbitair component

Keeping the code fully type hinted is a good idea.

* Add missing type annotations

* Remove translation file

* Prevent data to be added to hass.data if refresh fails

* Reload the config entry when the options change

* Add missing type parameters for generics

* Avoid using assert in production code

* Move zeroconf to optional dependencies

* Remove unnecessary logging

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Remove unused keys from the manifest

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Replace property with attr

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Allow to return None for power

The type of the is_on property now allows this.

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Remove unnecessary method call

Co-authored-by: Franck Nijhof <frenck@frenck.nl>

* Update the python library

The new version properly re-exports names from the package root.

* Remove options flow

Scan interval should not be part of integration configuration. This was
the only option, so the options flow can be fully removed.

* Replace properties with attrs

* Remove multiline ternary operator

* Use NamedTuple for hass.data

* Remove unused logger variable

* Move async_setup_entry up in the file

* Adjust debouncer settings to use request_refresh

* Prevent status updates during the cooldown period

* Move device polling code to the update coordinator

* Fix the problem with the switch jumping back and forth

The UI seems to have a timeout of 2 seconds somewhere, which is just a
little bit less than what we normally need to get an updated state. So
the power switch would jump to its previous state and then immediately
return to the new state.

* Update the python library

The new version fixes errors when multiple requests are executed
simultaneously.

* Fix incorrect check for pending call in debouncer

This caused the polling to stop.

* Fix tests

* Update .coveragerc to exclude new file.
* Remove test for Options Flow.

* Update the existing entry when device access details change

* Add Zeroconf discovery step

* Fix tests

The ZeroconfServiceInfo constructor now requires one more argument.

* Fix typing for CoordinatorEntity

* Fix signature of async_turn_on

* Fix depreciation warnings

* Fix manifest formatting

* Fix warning about debouncer typing

relates to 5ae5ae5392

* Wait for config entry platform forwards

* Apply some of the suggested changes

* Do not put the MAC address in the title. Use a fixed title instead.
* Do not format the MAC to use as a unique ID.
* Do not catch exceptions in _async_update_data().
* Remove unused _entry field in the base entity class.
* Use the standard attribute self._attr_is_on to keep the power state.

* Store the MAC in the config entry data

* Change the order of except clauses

OSError is an ancestor class of TimeoutError, so TimeoutError should be
handled first

* Fix depreciation warnings

* Fix tests

The ZeroconfServiceInfo constructor arguments have changed.

* Fix DeviceInfo import

* Rename the method to make it clearer what it does

* Apply suggestions from code review

* Fix tests

* Change speed/mode logic to use is_on from the base class

* A zero value is more appropriate than None

since None means "unknown", but we actually know that the speed is zero
when the power is off.

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-01-05 16:34:28 +01:00
Jan-Philipp Benecke 8bbfee7801 Make exceptions in rest_command services translatable (#107252) 2024-01-05 15:44:31 +01:00
MisterCommand 0d7627da22 Add Hong Kong Observatory integration (#98703)
* Add Hong Kong Observatory integration

* Move coordinator to a separate file

* Map icons to conditions

* Fix code for review

* Skip name

* Add typings to data_coordinator

* Some small fixes

* Rename coordinator.py
2024-01-05 14:52:46 +01:00
Richard Kroegel e7573c3ed4 Add python_script response (#97937)
* Add response to python_script

* Reset output to empty dict if not valid dict

* Add tests for python_script response

* Raise Exceptions on service execution

* Add info on exception type

* Raise ServiceValidationError instead of ValueError

* Raise only on return_response=True

* Fix exception logger if no service response

* Create issue if exception is not raised

* Revert "Create issue if exception is not raised"

This reverts commit a61dd8619f.

---------

Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2024-01-05 14:30:15 +01:00
J. Nick Koston 8645d9c717 Bump aiohttp-zlib-ng to 0.3.0 (#107184) 2024-01-05 14:28:29 +01:00
RoboMagus 4485ece719 Add support for service response to RESTful command (#97208)
* Add ServiceResponse to rest_command

* Handle json and text responses.
Add Unit tests

* Rest command text output handling.
Prevent issue solved by PR#97777

* Re-raise exceptions as HomeAssistantError to enable 'continue_on_error' in scripts / automations.

* Improve test coverage

* Restructure to improve McCabe Complexity

* Remove LookupError

* Revert exception catching location

* Remove LookupError from exception handling
2024-01-05 14:27:42 +01:00
Scott K Logan f249563608 Add Rainforest RAVEn integration (#80061)
* Add Rainforest RAVEn integration

* Add Rainforest Automation brand

* Add diagnostics to Rainforest RAVEn integration

* Drop a test assertion for an undefined behavior

* Add DEVICE_NAME test constant

* Catch up with reality

* Use Platform.SENSOR

Co-authored-by: Robert Resch <robert@resch.dev>

* Make rainforest_raven translatable

* Stop setting device_class on unsupported scenarios

* Rename rainforest_raven.data -> rainforest_raven.coordinator

* Make _generate_unique_id more reusable

* Move device synchronization into third party library

* Switch from asyncio_timeout to asyncio.timeout

* Ignore non-electric meters

Co-authored-by: Robert Resch <robert@resch.dev>

* Drop direct dependency on iso4217, bump aioraven

* Use RAVEn-specific exceptions

* Add timeouts to data updates

* Move DeviceInfo generation from Sensor to Coordinator

* Store meter macs as strings

* Convert to using SelectSelector

* Drop test_flow_user_invalid_mac

This test isn't necessary now that SelectSelector is used.

* Implement PR feedback

- Split some long format lines
- Simplify meter mac_id extraction in diagnostics
- Expose unique_id using an attribute instead of a property
- Add a comment about the meters dictionary shallow copy

Co-authored-by: Erik Montnemery <erik@montnemery.com>

* Simplify mac address redaction

Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>

* Freeze RAVEnSensorEntityDescription dataclass

Co-authored-by: Erik Montnemery <erik@montnemery.com>

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Joakim Sørensen <ludeeus@ludeeus.dev>
2024-01-05 14:00:54 +01:00
J. Nick Koston 824bb94d1d Add test coverage for ESPHome device info (#107034) 2024-01-05 14:00:38 +01:00
Maikel Punie 84d7be71e0 Bump velbus-aio to 2023.12.0 (#107066) 2024-01-05 13:40:00 +01:00
Grant 371ee1aa8e Add Tyua Product Category "dsd" for Filament Light (#106709)
* Add Product Category "dsd" support to tuya integration for Filament Lights

* remove unnecessary color_temp and color_data arguments

---------

Co-authored-by: Jan Čermák <sairon@users.noreply.github.com>
2024-01-05 13:36:57 +01:00
J. Nick Koston bc539a946f Use identity checks for unifiprotect enums (#106795)
enums are singletons in this case and there is no need to use
the slower equality checks here
2024-01-05 13:27:10 +01:00
Raman Gupta 85cdbb5ade Bump zwave-js-server-python to 0.55.3 (#107225)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-05 12:38:00 +01:00
Joost Lekkerkerker 6033a7c3d4 Finish Efergy entity translations (#107152) 2024-01-05 12:32:32 +01:00
Erik Montnemery c805ea7b4f Include deprecated constants in wildcard imports (#107114) 2024-01-05 11:46:45 +01:00
Robert Resch c063bf403a Fix mobile_app cloudhook creation (#107068) 2024-01-05 10:53:59 +01:00
Joakim Sørensen 6da82cf07e Use supported_features_compat in update.install service (#107224) 2024-01-05 10:38:54 +01:00
J. Nick Koston 2641e4014a Add color temp support for older HomeKit devices (#107206) 2024-01-04 22:50:26 -10:00
Jan Bouwhuis f0ec1235b1 Remove naming warnings and work-a-rounds for incorrectly configured MQTT entities (#107188)
* Remove naming warnings for MQTT entities

* Remove unused const
2024-01-05 09:32:22 +01:00
Jan Bouwhuis 8c4a29c200 Remove unneeded preset_mode checks for mqtt climate (#107190) 2024-01-05 09:27:48 +01:00
Jan Bouwhuis c7b6c9da31 Remove work-a-round for mqtt sensors with an entity_category set to config (#107199)
* Remove work-a-round for mqtt sensors with an entity_category set to `config`

* Cleanup strings
2024-01-05 09:24:52 +01:00
Petru Paler 4a2958baeb Fix entity property cache creation arguments (#107221) 2024-01-05 09:18:25 +01:00
Brett Adams ace4edf91c Hotfix cache logic bug in Tessie (#107187) 2024-01-05 08:23:43 +01:00
J. Nick Koston 298e2e2b99 Attempt to fix 32bit docker builds (#107210) 2024-01-05 08:23:04 +01:00
J. Nick Koston 8017661d31 Change default python version to 3.12 for image builds (#107209) 2024-01-05 08:21:26 +01:00
Martin Hjelmare 00ff93a69e Set zwave_js voltage sensor suggested precision (#107116) 2024-01-05 01:03:28 -05:00
J. Nick Koston d67c8bb44f Bump bluetooth-adapters to 0.17.0 (#107195)
changelog: https://github.com/Bluetooth-Devices/bluetooth-adapters/compare/v0.16.2...v0.17.0

related https://github.com/home-assistant/operating-system/issues/2944
2024-01-05 06:54:46 +01:00
tronikos 2a9a046fab Disable IPv6 in the opower integration to fix AEP utilities (#107203) 2024-01-04 15:07:15 -10:00
Joost Lekkerkerker 72e908f6cc Fix conversation snapshots (#107196) 2024-01-05 00:41:52 +01:00
Michael Hansen 269500cb29 Report missing entities/areas instead of failing to match in Assist (#107151)
* Report missing entities/areas instead of failing

* Fix test

* Update assist pipeline test snapshots

* Test complete match failure

* Fix conflict
2024-01-04 17:09:20 -06:00
Erwin Douna 1a7b06f66a Bump to PyTado 0.17.3 (#107181) 2024-01-04 23:41:56 +01:00
Michael 9b8f0e1ee9 Fix switch states in AVM FRITZ!Box Tools (#107183) 2024-01-04 23:36:36 +01:00
J. Nick Koston f5e7631e84 Fix tplink overloading power strips (#104208) 2024-01-04 12:15:35 -10:00
Ash Hopkins 0ff5ccb7fd Update sensorpush-ble library to 1.6.1 (#107168) 2024-01-04 12:00:06 -10:00
J. Nick Koston 61eb613128 Bump aiohomekit to 3.1.2 (#107177) 2024-01-04 11:21:01 -10:00
Joost Lekkerkerker 34a8812fc3 Introduce base entity in streamlabs water (#107095) 2024-01-04 21:52:38 +01:00
Aaron Bach 3caaf2931f Clean up outdated entity replacement logic in Guardian (#107160) 2024-01-04 21:50:45 +01:00
Denis Shulyaka 99bcc38284 Add conversation_id parameter to conversation.process service (#106078)
* Add conversation_id parameter to conversation.process service

* fix test

* fix tests
2024-01-04 14:46:06 -06:00
Josef Zweck 34e6fa3328 Pass aiohttp clientsession to tedee integration (#107089)
* pass aiohttpsession

* Update homeassistant/components/tedee/config_flow.py

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>

* Update homeassistant/components/tedee/__init__.py

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>

* move to coordinator

---------

Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
2024-01-04 21:42:38 +01:00
Franck Nijhof fd3a546cd8 Update Home Assistant base image to 2024.01.0 - Python 3.12 (#107175) 2024-01-04 21:42:03 +01:00
Joost Lekkerkerker eee6693855 Remove precision in streamlabs water (#107096) 2024-01-04 21:41:45 +01:00
Paul Holzinger 11170c6345 Pass down language to hassil (#106490)
Hassil needs the language to convert numbers, this was added in
https://github.com/home-assistant/hassil/pull/78. This fixes an
annoying warning from the logs.

Fixes #104760
2024-01-04 14:40:49 -06:00
Joost Lekkerkerker 8b1db37a85 Use snapshots in Glances sensor tests (#107159)
* Use snapshots in Glances sensor tests

* yes
2024-01-04 21:32:31 +01:00
J. Nick Koston bc26377c16 Cache homekit_controller supported features (#106702) 2024-01-04 10:31:09 -10:00
Jan Rieger f2514c0bde Migrate AVM FRITZ!Box Call monitor to has entity name (#99752)
* Migrate AVM FRITZ!Box Call monitor to has entity name

* Update homeassistant/components/fritzbox_callmonitor/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/fritzbox_callmonitor/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update sensor.py

* Update sensor.py

* Update strings.json

* Use translation placeholders

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-04 21:26:12 +01:00
Joost Lekkerkerker bf229be7bb Migrate Emonitor to has entity name (#107153) 2024-01-04 21:17:23 +01:00
Matt Emerick-Law eb320b69bc Bump Orvibo to 1.1.2 (#107162)
* Bump python-orvibo version

Fixes https://github.com/home-assistant/core/issues/106923

* Add version number

* Remove version

* Bump python-orvibo version
2024-01-04 20:41:12 +01:00
Bram Kragten afb5f3c031 Update frontend to 20240104.0 (#107155) 2024-01-04 19:45:18 +01:00
Jan Bouwhuis 5c82c39936 Reorganize drop_connect tests (#107148) 2024-01-04 17:48:31 +01:00
J. Nick Koston 0695bf8988 Move group helpers into their own module (#106924)
This gets rid of the legacy need to use bind_hass, and
the expand function no longer looses typing.
2024-01-04 17:34:56 +01:00
Jan Bouwhuis 6a02cadc13 Rework drop_connect switch, select and coordinator tests and cleanup fixtures (#107119)
* Refactor drop_connect switch and select tests

* Update coordinator tests, cleanup fixtures
2024-01-04 16:17:48 +01:00
J. Nick Koston 40d034cd8c Revert "Bump aiohttp-zlib-ng to 0.2.0 (#106691)" (#107109) 2024-01-04 15:34:43 +01:00
Martin Hjelmare 80a616d237 Remove zwave_js numeric sensor rounding (#107100) 2024-01-04 13:49:15 +01:00
J. Nick Koston 0ccf8ffbc6 Bump habluetooth to 2.0.2 (#107097) 2024-01-04 02:45:47 -10:00
Franck Nijhof 6debd112af Merge branch 'master' into dev 2024-01-04 13:35:57 +01:00
Erik Montnemery 9eefd95e91 Deduplicate handling of duplicated constants (#107074)
* Deduplicate handling of duplicated constants

* Use DeprecatedConstant + DeprecatedConstantEnum

* Fixup

* Remove test cases with unnamed tuples
2024-01-04 13:25:09 +01:00
J. Nick Koston 1a08bcce77 Fix missing backwards compatibility layer for water_heater supported_features (#107091) 2024-01-04 02:21:52 -10:00
Jan Bouwhuis 10f5ce2dc0 Refactor drop tests for binary_sensor (#107090) 2024-01-04 13:12:11 +01:00
Joost Lekkerkerker 5ae8b6bc02 Add entity descriptions to Streamlabs water (#107071)
* Add sensor tests to Streamlabs water

* Add sensor tests to Streamlabs water

* Use entity descriptions in streamlabs water

* Use entity descriptions in streamlabs water

* Use entity descriptions in streamlabs water

* Add translations
2024-01-04 11:53:04 +01:00
Jan Bouwhuis 5508bb3ef9 Refactor drop sensor tests (#106965)
* Refactor drop sensor tests

* Setup the config entry instead of the component
2024-01-04 10:43:04 +01:00
Franck Nijhof 26055ee636 Update home-assistant/builder to 2024.01.0 (#107069) 2024-01-04 10:19:45 +01:00
Joost Lekkerkerker 333711d951 Add sensor tests to Streamlabs water (#107065) 2024-01-04 09:57:00 +01:00
rappenze 254abeeb4f Remove dead code in fibaro light (#106890) 2024-01-04 09:45:08 +01:00
J. Nick Koston 9c69212ad5 Add test coverage for ESPHome service calls (#107042) 2024-01-04 09:37:56 +01:00
Thomas Kistler 4b3a1b5d2d Update pydrawise to 2024.1.0 (#107032) 2024-01-04 09:36:24 +01:00
J. Nick Koston a83ab403c1 Small cleanups to denonavr (#107050) 2024-01-04 09:35:13 +01:00
Joost Lekkerkerker dd6c5e89ef Fix data access in streamlabs water (#107062)
* Fix data access in streamlabs water

* Fix data access in streamlabs water
2024-01-04 09:13:34 +01:00
Joost Lekkerkerker 85a1d8b34c Use async_register in streamlabswater (#107060) 2024-01-04 09:11:44 +01:00
Joshua Krall 53717523e5 Add button platform to Opengarage (#103569)
* Add button entity to reboot OpenGarage device

* Addressing code review comments

* Another code-review fix

* Update homeassistant/components/opengarage/button.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-04 07:37:24 +01:00
Aaron Bach 4fa76801af Re-architect Guardian to use better entity descriptions and properties (#107028)
* Re-architect Guardian to use better entity descriptions and properties

* Reduce blast area

* Code review

* Remove mixins
2024-01-03 22:17:12 -07:00
Rami Mosleh 2331f89936 Issue warning if glances server version is 2 (#105887)
* Issue warning if glances server version is 2

* Auto detect api version

* Apply suggestions

* Add HA version deprecation

* Apply suggestions from code review

* update config flow tests

* Fix breaks in ha version

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-04 05:17:43 +01:00
Paulus Schoutsen 890615bb92 Ring: Add partial back (#107040) 2024-01-03 15:52:05 -10:00
Jan-Philipp Benecke 0183affc7c Use call_soon_threadsafe in token updater of Ring (#106984)
Use call_soon_threadsafe in token update of Ring
2024-01-03 19:59:02 -05:00
J. Nick Koston 4f213f6df3 Fix first ESPHome device update entity not offering install feature (#106993)
In the case where the user gets their first ESPHome device such as a RATGDO,
they will usually add the device first in HA, and than find the dashboard.

The install function will be missing because we do not know if the dashboard
supports updating devices until the first device is added. We now set the
supported features when we learn the version when the first device is added
2024-01-03 19:58:04 -05:00
J. Nick Koston 962c449009 Add missing coverage for esphome_state_property decorator (#106998) 2024-01-03 19:54:28 -05:00
J. Nick Koston 8d2ddb6a04 Small cleanups to ESPHome light platform (#107003)
- Remove unreachable code
- Cache filtering when possible
- Add missing coverage
2024-01-03 19:53:48 -05:00
Tom Harris d535409349 Bump pyinsteon (#107010) 2024-01-03 19:48:57 -05:00
J. Nick Koston 01d0031e09 Fix ESPHome service removal when the device name contains a dash (#107015)
* Fix ESPHome service removal when the device name contains a dash

If the device name contains a dash the service name is mutated to
replace the dash with an underscore, but the remove function did
not do the same mutation so it would fail to remove the service

* add more coverage

* more cover
2024-01-03 19:47:49 -05:00
Maciej Bieniek afcf8c9718 Get Shelly RPC device gen from config entry data (#107019)
Use gen from config entry data
2024-01-03 19:45:59 -05:00
J. Nick Koston 987663e4de Fix missing backwards compatiblity layer for humidifier supported_features (#107026)
fixes #107018
2024-01-03 19:41:50 -05:00
Sid bcc7570d81 Bump openwebifpy to 4.0.4 (#107000) 2024-01-03 19:40:59 -05:00
Robbert Verbruggen bba24a1251 Bump rachiopy to 1.1.0 (#106975) 2024-01-03 22:56:50 +01:00
Patrick Frazer aad2f2cd45 Bump dropmqttapi to 1.0.2 (#106978) 2024-01-03 21:10:00 +01:00
Ståle Storø Hauknes dde4217b2b Close stale connections (Airthings BLE) (#106748)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-01-03 10:08:58 -10:00
Michael eb01998395 Add support for placeholders in entity name translations (#104453)
* add placeholder support to entity name translation

* add negativ tests

* make property also available via description

* fix doc string in translation_placeholders()

* fix detection of placeholder

* validate placeholders for localized strings

* add test

* Cache translation_placeholders property

* Make translation_placeholders uncondotionally return dict

* Fall back to unsubstituted name in case of mismatch

* Only replace failing translations with English

* Update snapshots

* Blow up on non stable releases

* Fix test

* Update entity.py

---------

Co-authored-by: Erik <erik@montnemery.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-03 17:34:47 +01:00
Bram Kragten d071299233 Update frontend to 20240103.3 (#106963) 2024-01-03 15:28:22 +01:00
Jonas Fors Lellky e2b2732a90 Set precision to halves in flexit_bacnet (#106959)
flexit_bacnet: set precision to halves for target temperature
2024-01-03 14:43:17 +01:00
CR-Tech df97b0e945 Removed double assignment of _attr_target_temperature_step in __init__ (#106611)
Removed double/wrong assignement of _attr_target_temperature_step into climate Init routine
2024-01-03 13:44:14 +01:00
jan iversen 40d4061fc5 Only set precision in modbus if not configured. (#106952)
Only set precision if not configured.
2024-01-03 13:42:55 +01:00
Bram Kragten a7ec78601e Update frontend to 20240103.1 (#106948) 2024-01-03 13:18:09 +01:00
Robert Resch c90f6f2fea Fix creating cloud hook twice for mobile_app (#106945) 2024-01-03 12:29:05 +01:00
Bram Kragten be6ceb020e Update frontend to 20240103.0 (#106942) 2024-01-03 11:32:48 +01:00
Erwin Douna 8ad66c11b0 Change Tado deprecation version to 2024.7.0 (#106938)
Change version to 2024.7.0
2024-01-03 10:30:32 +01:00
Erwin Douna 59a01fcf9c Add try-catch for invalid auth to Tado (#106774)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-03 09:15:39 +01:00
J. Nick Koston 7b3ec60f90 Speed up getting the mean of statistics (#106930)
All the values we need to get the mean for are always list[float]
so we can use a much simpler algorithm to get the mean of the list
2024-01-03 09:13:23 +01:00
J. Nick Koston 710e55fb09 Bump SQLAlchemy to 2.0.25 (#106931)
* Bump SQLAlchemy to 2.0.25

changelog: https://docs.sqlalchemy.org/en/20/changelog/changelog_20.html#change-2.0.25

* drop unused ignore now that upstream is fixed
2024-01-03 09:12:35 +01:00
Marc Mueller b3f997156a Enable strict typing for counter (#106906) 2024-01-03 09:06:26 +01:00
Jan-Philipp Benecke 32b6e4d5de Bump aioelectricitymaps to v0.1.6 (#106932) 2024-01-03 08:52:41 +01:00
Jan-Philipp Benecke 938c32d35e Avoid triggering ping device tracker home after restore (#106913) 2024-01-03 06:40:42 +01:00
Joe Neuman 711498793a Fix qBittorrent torrent count when empty (#106903)
* Fix qbittorrent torrent cound when empty

* lint fix

* Change based on comment
2024-01-03 00:19:00 +01:00
Michael f66438b0ce Remove group_members from significant attributes in media player (#106916) 2024-01-02 23:47:32 +01:00
steffenrapp 608d52f167 Add translatable title to holiday (#106825) 2024-01-02 23:40:38 +01:00
Josef Zweck 87c79ef57f Add tedee bridge as via_device for tedee integration (#106914)
* add bridge as via_device

* add bridge as via_device

* move getting bridge to update_data

* add bridge property
2024-01-02 23:23:50 +01:00
Michael Hansen 5003993658 Bump intents to 2024.1.2 (#106909) 2024-01-02 15:35:48 -06:00
Marc Mueller f0d520d91f Remove assert for unique_id (#106910)
* Remove assert for unique_id

* Use str | None return instead
2024-01-02 22:01:12 +01:00
Marc Mueller 1526c321f1 Enable strict typing for axis (#106844) 2024-01-02 20:55:59 +01:00
J. Nick Koston e1f078b70a Bump aiohttp-zlib-ng to 0.2.0 (#106691) 2024-01-02 20:50:26 +01:00
Marc Mueller 43fa51b696 Enable strict typing for blueprint (#106887) 2024-01-02 20:48:51 +01:00
J. Nick Koston 9231e00561 Update switchbot to use close_stale_connections_by_address (#106835) 2024-01-02 20:44:17 +01:00
Bram Kragten 584b6c2862 Update frontend to 20240102.0 (#106898) 2024-01-02 20:42:27 +01:00
J. Nick Koston 73b36086cf Avoid tuple construction to check HKC available (#106902) 2024-01-02 20:41:54 +01:00
Marc Mueller fde03d7888 Enable strict typing for co2signal (#106888) 2024-01-02 20:41:39 +01:00
Marc Mueller dcee8e67c4 Add strict typing to command_line (#106889)
* Add strict typing to command_line

* Code review
2024-01-02 20:04:28 +01:00
Allen Porter 943fb2791e Improve To-do service error handling (#106886) 2024-01-02 19:50:28 +01:00
J. Nick Koston afed45d5d0 Replace intersection with isdisjoint in apple_tv config flow (#106633) 2024-01-02 17:58:00 +01:00
Allen Porter 2e4c4729c4 Improve fitbit authentication error handling (#106885) 2024-01-02 17:51:15 +01:00
J. Nick Koston 54ba00095b Close stale connections in yalexs_ble to ensure setup can proceed (#106842) 2024-01-02 17:50:10 +01:00
Phil Bruckner 4bfeb87377 Remove deprecated Life360 yaml configuration (#106286) 2024-01-02 17:43:33 +01:00
Franck Nijhof 2d0325a471 Mark stt entity component as strictly typed (#106723)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-02 17:07:47 +01:00
Erik Montnemery e7b0bf2453 Disable polling in time_date sensor (#106881) 2024-01-02 16:50:07 +01:00
Erik Montnemery a7f4d426ee Handle time zone change in time_date (#106880) 2024-01-02 16:28:22 +01:00
Erik Montnemery 03cbf8b28d Fix state update in time_date sensor (#106879) 2024-01-02 16:22:16 +01:00
Erik Montnemery 513261baff Improve time_date tests (#106878) 2024-01-02 16:04:38 +01:00
starkillerOG ba0cb3bd05 Add Reolink image settings (#105415) 2024-01-02 15:39:28 +01:00
J. Nick Koston 09b65f14b9 Index entities by domain for entity services (#106759) 2024-01-02 15:28:58 +01:00
David F. Mulcahey bf0d891f68 Bump Zigpy to 0.60.4 (#106870) 2024-01-02 08:59:45 -05:00
Erik Montnemery 8f8c0ef13b Deprecate 'beat' display option in Time & Date (#106871)
* Deprecate 'beat' display option in Time & Date

* Move deprecation warning

* Update homeassistant/components/time_date/const.py

Co-authored-by: Sander <developer@golles.nl>

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Sander <developer@golles.nl>
2024-01-02 14:11:45 +01:00
Erik Montnemery 8f9bd75a36 Enable strict typing of date_time (#106868)
* Enable strict typing of date_time

* Fix parse_datetime

* Add test

* Add comments

* Update tests/util/test_dt.py

Co-authored-by: G Johansson <goran.johansson@shiftit.se>

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-01-02 13:57:25 +01:00
Michael 15cdd42c99 Apply late review comments on media player (#106727) 2024-01-02 13:37:58 +01:00
Sid 729a0fbcd5 Move urllib3 constraint to pyproject.toml (#106768) 2024-01-02 13:34:19 +01:00
steffenrapp 0b9242f809 Add translatable title to logbook (#106810) 2024-01-02 13:30:04 +01:00
Marc Mueller 6e6575afe5 Enable strict typing for apache_kafka (#106823) 2024-01-02 13:29:38 +01:00
Franck Nijhof 06fa306821 Mark humidifier entity component as strictly typed (#106721)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-01-02 13:29:07 +01:00
Jan-Philipp Benecke d2a03a4706 Avoid unnecessary domain dataclass in Discovergy (#106869) 2024-01-02 13:28:55 +01:00
Josef Zweck f0132a6b88 Add reauthentication for tedee integration (#106667)
* start work

* add reauth

* title

* reuse user step for reauth

* Update strings.json

* simplify flow

* remove inline if

* remove await hass block
2024-01-02 13:28:15 +01:00
Robert Groot 2df9e5e7b9 Changed setup of EnergyZero services (#106224)
* Changed setup of energyzero services

* PR review updates

* Dict access instead of get

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

* Added tests for unloaded state

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-01-02 13:24:17 +01:00
Joost Lekkerkerker 0d7bb2d124 Improve entity descriptions in Tami4 (#106776)
* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4

* Improve entity descriptions in Tami4
2024-01-02 13:11:19 +01:00
Marc Mueller 4747460286 Enable strict typing for arwn (#106840) 2024-01-02 13:07:47 +01:00
Jan-Philipp Benecke bdaf269ba3 Migrate geo_rss_events test to use freezegun (#105895) 2024-01-02 12:53:36 +01:00
Jan-Philipp Benecke e3b09a5470 Migrate vizio tests to use freezegun (#105417) 2024-01-02 12:53:03 +01:00
J. Nick Koston 038e55a2cb Fix emulated_hue brightness check (#106783) 2024-01-02 12:51:05 +01:00
J. Nick Koston 3f1263a533 Refactor light platform to avoid duplicate property calls (#106857) 2024-01-02 12:49:53 +01:00
J. Nick Koston 73bc65059b Use shorthand attr for screenlogic climate preset modes (#106858) 2024-01-02 12:48:34 +01:00
J. Nick Koston bbdccede85 Refactor restore state saving to avoid a dict lookup of ATTR_RESTORED (#106854) 2024-01-02 12:48:14 +01:00
Stanislas 41646a6514 Xiaomi MIIO: fix typo in error log (#106852) 2024-01-02 12:47:16 +01:00
David Knowles 6f339541c6 Fix Hydrawise data not refreshing (#105923)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-01-02 12:46:39 +01:00
J. Nick Koston 1cbacd13aa Use identity checks for HassJobType (#106860) 2024-01-02 12:33:02 +01:00
vexofp ef261842ac Pass default SSLContext instances to Octoprint custom HTTP sessions (#105351) 2024-01-02 11:59:40 +01:00
J. Nick Koston 93a29ebf2f Bump yalexs-ble to 2.4.0 (#106834) 2024-01-02 11:41:56 +01:00
J. Nick Koston 21fc3203a6 Bump pySwitchbot to 0.43.0 (#106833) 2024-01-02 11:39:04 +01:00
Marc Mueller 8903aecb77 Enable strict typing for airthings (#106814) 2024-01-02 11:38:20 +01:00
J. Nick Koston d89683f980 Fix incorrect state in Yale Access Bluetooth when lock status is unknown (#106851) 2024-01-02 11:37:51 +01:00
J. Nick Koston e40faf957e Bump bleak-esphome to 0.4.1 (#106832) 2024-01-02 11:37:18 +01:00
Erik Montnemery 599271fdc0 Don't use entity_id in __repr__ of not added entity (#106861) 2024-01-02 11:35:16 +01:00
Josef Zweck 97a5f0b2af Add diagnostics for tedee (#106662)
* add diagnostics

* don't redact lock name

* Update test_diagnostics.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-01-02 10:34:02 +01:00
Benjamin Richter b27e830997 Fix fints account type check (#106082) 2024-01-02 09:59:13 +01:00
Robert Hillis 7396bc61d7 Set entity category and device class for Netgear LTE entities (#106661)
* Set entity category and device class for Netgear

* add suggested unit of measure and precision
2024-01-02 09:55:06 +01:00
J. Nick Koston a4f0c84457 Reduce duplicate code in json_loads (#106859) 2024-01-01 20:25:23 -10:00
Bram Kragten 391123beb0 Update frontend to 20240101.0 (#106808) 2024-01-01 18:15:34 -10:00
Marc Mueller d93d25a7d1 Enable strict typing for ambiclimate (#106819) 2024-01-01 18:09:22 -10:00
Luke Lashley cc18b9a2d8 Constrain dacite to at least 1.7.0 (#105709) 2024-01-01 18:00:17 -10:00
Matt Zimmerman 370345ce2b Map missing preset mapping for heat mode "ready" in smarttub (#106856) 2024-01-01 17:58:12 -10:00
Maikel Punie b074b23979 Bump pyduotecno to 2024.1.1 (#106801)
* Bump pyduotecno to 2024.0.1

* Bump pyduotecno to 2024.1.0

* small update
2024-01-01 23:45:31 +01:00
J. Nick Koston 25f09134b2 Bump bleak-retry-connector to 3.4.0 (#106831) 2024-01-01 12:16:17 -10:00
Marc Mueller aec8dc13b2 Improve acmeda typing (#106812) 2024-01-01 22:16:22 +01:00
Marc Mueller 73ccd0d310 Enable strict typing for arcam_fmj (#106837) 2024-01-01 21:12:29 +01:00
Marc Mueller 33f8a364ab Enable strict typing for arris_tg2492lg (#106838) 2024-01-01 20:47:37 +01:00
Marc Mueller 8501b2e71b Enable strict typing for asterisk_cdr + asterisk_mbox (#106841) 2024-01-01 20:45:16 +01:00
Marc Mueller 3b0d877b5e Enable strict typing for amberelectric (#106817) 2024-01-01 20:35:34 +01:00
Marc Mueller c5c132e1d4 Enable strict typing for airq (#106813) 2024-01-01 20:33:38 +01:00
Marc Mueller f67bae2cde Enable strict typing for aruba (#106839) 2024-01-01 20:33:15 +01:00
Marc Mueller 800351287b Enable strict typing for aquostv (#106836) 2024-01-01 20:32:29 +01:00
Marc Mueller 0077989169 Enable strict typing for alpha_vantage (#106816) 2024-01-01 20:19:19 +01:00
Marc Mueller 4e0c0cf2ca Enable strict typing for androidtv (#106820) 2024-01-01 20:15:01 +01:00
Marc Mueller 06a5e25853 Enable strict typing for anel_pwrctrl (#106821) 2024-01-01 20:14:34 +01:00
Marc Mueller c37e268030 Enable strict typing for aprs (#106824) 2024-01-01 20:14:00 +01:00
Marc Mueller 3433e1d349 Enable strict typing for airthings_ble (#106815) 2024-01-01 18:56:44 +01:00
Xitee a64f912733 Use walrus operator for roomba total cleaned area sensor value (#106772) 2024-01-01 06:24:13 -10:00
J. Nick Koston 41f0eda712 Use shorthand attrs for tplink color temp min/max (#106796)
The valid_temperature_range property does a regex match over
every possible model. Avoid calling it more than once since
it will never change as its based on the model
2024-01-01 13:14:28 +01:00
Marc Mueller 74e02fe057 Update pytest to 7.4.4 (#106802) 2024-01-01 13:12:56 +01:00
Christopher Bailey ce54a1259a Bump pyunifiprotect to v4.22.5 (#106781) 2023-12-31 09:26:21 -10:00
David Knowles 80f8102b83 Bump pyschlage to 2023.12.1 (#106782) 2023-12-31 20:17:51 +01:00
Erik Montnemery c1f1b5c50b Ensure it's safe to call Entity.__repr__ on non added entity (#106032) 2023-12-31 18:54:34 +01:00
David F. Mulcahey c83388fd2d Fix Zlinky energy polling in ZHA (#106738) 2023-12-31 12:12:06 -05:00
J. Nick Koston bfda3f1ba8 Bump habluetooth to 2.0.1 (#106750)
fixes switching scanners to quickly since the manager failed
to account for jitter in the auto discovered advertising interval

replaces and closes #96531

changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v2.0.0...v2.0.1
2023-12-31 06:44:55 -10:00
Guy Shefer 70e2ff351d Add Tami4 integration boil water button (#103400)
* Implement boil water button

* Sort platforms list

* Get API directly

* Cleanup

* Rename boil button string

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Add button to .coveragerc

* Change ButtonEntityDescription to EntityDescription

* Update homeassistant/components/tami4/button.py

* Update homeassistant/components/tami4/button.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-31 15:39:00 +01:00
Josef Zweck 83b0934138 Add binary sensors for tedee (#106773)
* fix tests

* Update homeassistant/components/tedee/binary_sensor.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-31 13:16:01 +01:00
Josef Zweck 0549c9e113 Add sensor platform for tedee integration (#106722)
* add sensors

* requested changes

* remove translation key from battery

* fix pullspring test

* loop instead of parametrize

* name snapshots

* fix snapshots
2023-12-31 12:24:44 +01:00
Álvaro Fernández Rojas f7154cff9d Update aioairzone-cloud to v0.3.8 (#106736)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-12-31 11:50:53 +01:00
puddly 98c41f7398 Bump ZHA dependencies (#106756)
* Bump ZHA dependencies

* Revert "Remove bellows thread, as it has been removed upstream"

This reverts commit c28053f4bf.
2023-12-31 04:54:09 -05:00
Tobias Sauerwein 6a582b29f1 Bump pyatmo to v8.0.2 (#106758) 2023-12-31 10:04:42 +01:00
J. Nick Koston 92713c3f37 Bump pyunifiprotect to 4.22.4 (#106749)
changelog: https://github.com/AngellusMortis/pyunifiprotect/compare/v4.22.3...v4.22.4
2023-12-31 09:44:12 +01:00
Franck Nijhof b1dd064f2d Mark time entity component as strictly typed (#106720) 2023-12-31 02:52:59 +01:00
starkillerOG 95f6336ecd Bump reolink_aio to 0.8.5 (#106747) 2023-12-31 00:45:05 +01:00
Franck Nijhof 82b15d9e38 Add missing vacuum toggle service description (#106729) 2023-12-30 23:16:06 +01:00
J. Nick Koston 969f9e2e3f Use more shorthand attrs in bond fan (#106740) 2023-12-30 20:49:06 +01:00
Franck Nijhof 1849d68e78 Mark siren entity component as strictly typed (#106719) 2023-12-30 20:21:33 +01:00
Franck Nijhof ff25211bf9 Mark wake_word entity component as strictly typed (#106724) 2023-12-30 20:20:33 +01:00
Franck Nijhof 2a6a347cd0 Mark datetime entity component as strictly typed (#106717) 2023-12-30 15:47:08 +01:00
DiamondDrake 8140036d2e Add support for cookie file to media_extractor (#104973)
* media_extractor comp -> add support for cookie file

* Update __init__.py

* Update __init__.py

* fixed pr request, added test

* update test with valid cookie file

* move cookies to subdirectory

* use pathlib instead of os.path
2023-12-30 14:34:50 +01:00
Franck Nijhof faa2129e96 Mark todo entity component as strictly typed (#106718) 2023-12-30 14:32:44 +01:00
Franck Nijhof 4764af96a8 Mark date entity component as strictly typed (#106716) 2023-12-30 14:23:43 +01:00
Jan-Philipp Benecke 9d36b716e7 Use call_soon_threadsafe in render_will_timeout of template helper (#106514) 2023-12-30 13:55:53 +01:00
Floris272 ee1b0b46ce Add reauth to Blue Current integration (#106658)
* Add reauth to Blue Current integration.

* Apply feedback

* Fix failing codecov check

* Fix patches

* Add wrong_account to strings.json
2023-12-30 13:53:35 +01:00
Josef Zweck f17470cb29 Upper case tedee device name (#106685) 2023-12-30 13:15:22 +01:00
Michael cc14d80d3d Add ffmpeg to dev-container (#106710) 2023-12-30 13:14:49 +01:00
J. Nick Koston a49999e984 Pin lxml to 4.9.4 (#106694) 2023-12-30 11:29:19 +01:00
G Johansson bcf75795c2 DNS IP implement retry (#105675)
* DNS IP implement retry

* Review comments
2023-12-30 10:51:34 +01:00
Sid f22d6a4279 Use volume up/down from enigma2 API (#106674)
enigma2: use volume up/down from enigma2 API
2023-12-30 10:34:57 +01:00
J. Nick Koston 197525c697 Bump thermobeacon-ble to 0.6.2 (#106676)
changelog: https://github.com/Bluetooth-Devices/thermobeacon-ble/compare/v0.6.0...v0.6.2
2023-12-30 10:33:59 +01:00
Erik Montnemery 461dad3039 Fix changed_variables in automation traces (#106665) 2023-12-30 08:34:21 +01:00
J. Nick Koston 9e3869ae1c Avoid recreating ReadOnly dicts when attributes do not change (#106687) 2023-12-29 17:10:40 -10:00
Keilin Bickar 2177113c6e Bump asyncsleepiq to v1.4.1 (#106682)
Update asyncsleepiq to v1.4.1
2023-12-30 01:45:04 +01:00
J. Nick Koston f3ecec9c44 Fix missed cached_property for hvac_mode in climate (#106692) 2023-12-29 14:12:19 -10:00
J. Nick Koston 8abfde2d15 Bump roombapy to 1.6.10 (#106678)
changelog: https://github.com/pschmitt/roombapy/compare/1.6.8...1.6.10

fixes #105323
2023-12-30 00:45:27 +01:00
J. Nick Koston 6e98f72f8b Bump SQLAlchemy to 2.0.24 (#106672) 2023-12-29 10:19:06 -10:00
Jaroslav Hanslík e83aa86426 Fixed native apparent temperature in WeatherEntity (#106645) 2023-12-29 18:37:46 +01:00
Xitee 2add7707b4 Add roomba total cleaned area sensor (#106640)
* Add roomba total cleaned area sensor

* Use parentheses for multi-line lambda

* Update homeassistant/components/roomba/sensor.py

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>

* Update homeassistant/components/roomba/sensor.py

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>

* Revert "Update homeassistant/components/roomba/sensor.py"

This reverts commit 819be6179f.

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2023-12-29 15:52:38 +01:00
Josef Zweck 02b863e968 Add tedee integration (#102846)
* init tedee

* init tests

* add config flow tests

* liniting

* test

* undo

* linting

* pylint

* add tests

* more tests

* more tests

* update snapshot

* more tests

* typing

* strict typing

* cleanups

* cleanups, fix tests

* remove extra platforms

* remove codeowner

* improvements

* catch tedeeclientexception

* allow bridge selection in CF

* allow bridge selection in CF

* allow bridge selection in CF

* allow bridge selection in CF

* abort earlier

* auto-select bridge

* remove cloud token, optionsflow to remove size

* remove options flow leftovers

* improve coverage

* defer coordinator setting to after first update

* define coordinator

* some improvements

* remove diagnostics, webhook

* remove reauth flow, freeze data classes

* fix lock test

* Update homeassistant/components/tedee/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/__init__.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* requested changes

* requested changes

* Update lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update entity.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* requested changes

* Update tests/components/tedee/test_lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/test_lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/test_lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/test_lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/conftest.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/coordinator.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update tests/components/tedee/test_config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/tedee/lock.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* requested changes

* requested changes

* requested changes

* revert load fixture

* change tests

* Update test_config_flow.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update coordinator.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* remove warning

* move stuff out of try

* add docstring

* tedee lowercase, time.time

* back to some uppercase, time.time

* awaitable

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-29 14:55:41 +01:00
Erik Montnemery 56a58f9285 Improve tests of inheriting entity descriptions (#106647) 2023-12-29 13:22:52 +01:00
Erik Montnemery 95d7a66c16 Fix yolink entity descriptions (#106649) 2023-12-29 13:22:06 +01:00
G Johansson 853e4d87fa Handle no permission for disks in Systemmonitor (#106653) 2023-12-29 13:21:36 +01:00
G Johansson 4cd1965786 Use set instead of list in Systemmonitor (#106650) 2023-12-29 13:21:08 +01:00
Jirka 19e0f55fc8 Fix typo in Blink strings (#106641)
Update strings.json

Fixed typo.
2023-12-29 12:01:23 +01:00
Joe Neuman e17e372c94 Fix count bug in qBittorrent (#106603) 2023-12-29 11:08:40 +01:00
Robert Hillis 27bdbc6600 Add entity name and translations to Netgear LTE (#106599) 2023-12-29 11:07:56 +01:00
Brett Adams 149fdfb802 Minor improvements to Tessie device entries (#106623)
Add more fields to device info
2023-12-29 10:32:13 +01:00
Nikolay Vasilchuk c2cfc8ab46 Add GPS satellites count to Starline sensor (#105740)
* GPS Satellites count Starline sensor

* Update homeassistant/components/starline/sensor.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update homeassistant/components/starline/strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Capitalise units

* Revert capitalisation

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2023-12-29 10:29:06 +01:00
Erik Montnemery a4e9a053c7 Fix missing await when running shutdown jobs (#106632) 2023-12-29 10:04:16 +01:00
J. Nick Koston 7702f971fb Use built-in set methods for light supported checks (#106625) 2023-12-29 08:37:44 +01:00
J. Nick Koston 03fcb81a59 Small speed up to compressed state diff (#106624) 2023-12-29 08:36:20 +01:00
J. Nick Koston 7051f28547 Add deprecation warning for cover supported features when using magic numbers (#106618) 2023-12-29 08:34:08 +01:00
Kevin Worrel ee2689de3c Refactor screenlogic numbers to use subclasses (#106574) 2023-12-28 15:45:34 -10:00
J. Nick Koston a47587e3cd Add deprecation warning for siren supported features when using magic numbers (#106621) 2023-12-28 15:45:27 -10:00
J. Nick Koston e4a25825d3 Migrate light entity to use contains for LightEntityFeature with deprecation warnings (#106622) 2023-12-28 15:45:06 -10:00
J. Nick Koston e6c6327463 Add deprecation warning for alarm_control_panel supported features when using magic numbers (#106619) 2023-12-28 15:04:06 -10:00
J. Nick Koston 2b972f6dba Add deprecation warning for lock supported features when using magic numbers (#106620) 2023-12-28 15:03:14 -10:00
J. Nick Koston e0b6d4e216 Media player platform back-compat for custom components without MediaPlayerEntityFeature (#106616) 2023-12-28 14:32:44 -10:00
J. Nick Koston 931e90ab20 Humidifier platform back-compat for custom components without HumidifierEntityFeature (#106613) 2023-12-28 14:10:46 -10:00
J. Nick Koston 4b6aaf6254 Update platform back-compat for custom components without UpdateEntityFeature (#106528) 2023-12-28 14:10:26 -10:00
J. Nick Koston 81726808e8 Vacuum platform back-compat for custom components without VacuumEntityFeature (#106614) 2023-12-28 14:06:25 -10:00
J. Nick Koston 6506a8d511 Camera platform back-compat for custom components without CameraEntityFeature (#106529) 2023-12-29 00:45:35 +01:00
J. Nick Koston 552d4e49f0 Climate platform back-compat for custom components without ClimateEntityFeature (#106605) 2023-12-29 00:36:28 +01:00
J. Nick Koston 3e7c44c612 Fan platform back-compat for custom components without FanEntityFeature (#106607) 2023-12-29 00:36:15 +01:00
J. Nick Koston d0e9f2ce0d Water heater platform back-compat for custom components without WaterHeaterEntityFeature (#106608) 2023-12-29 00:16:02 +01:00
J. Nick Koston 97ee7e2c98 Remote platform back-compat for custom components without RemoteEntityFeature (#106609) 2023-12-29 00:15:48 +01:00
J. Nick Koston a46fe94216 Add helper to report deprecated entity supported features magic numbers (#106602) 2023-12-28 12:24:36 -10:00
Robert Hillis f93b0a4831 Fix Netgear LTE halting startup (#106598) 2023-12-28 22:26:19 +01:00
tronikos 858e01ea42 Rename domain aepohio to aep_ohio (#106536)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-28 22:24:11 +01:00
Sid f99c37b2b5 bump openwebifpy to 4.0.3 (#106593) 2023-12-28 21:59:56 +01:00
Joost Lekkerkerker c9ecf3af54 Move aeptexas to aep_texas (#106595) 2023-12-28 21:58:34 +01:00
J. Nick Koston 7441962211 Bump aiohomekit to 3.1.1 (#106591) 2023-12-28 21:18:05 +01:00
jjlawren ad199aaba2 Cleanup Sonos subscription used during setup (#106575) 2023-12-28 21:08:55 +01:00
Erik Montnemery 90744b0a8e Revert "Set volume_step in enigma2 media_player" (#106584) 2023-12-28 21:08:16 +01:00
G Johansson 67629111f9 Systemmonitor always load imported disks (#106546)
* Systemmonitor always load legacy disks

* loaded_resources
2023-12-28 20:39:39 +01:00
Thomas Hollstegge 6deb6ddbc4 Use correct state for emulated_hue covers (#106516) 2023-12-28 09:30:26 -10:00
Michael 756847eea8 Only check known attributes in significant change support (#106572)
only check known attributes
2023-12-28 20:20:59 +01:00
G Johansson 648afe121d Replace dash in language if needed (#106559)
* Replace dash in language if needed

* Add tests
2023-12-28 20:16:14 +01:00
mkmer e7e0ae8f6a Move services to entity services in blink (#105413)
* Use device name to lookup camera

* Fix device registry serial

* Move to entity based services

* Update tests

* Use config_entry
Move refresh service out of camera

* Use config entry for services

* Fix service schema

* Add depreciation note

* Depreciation note

* key error changes
deprecated (not depreciated)
repair issue

* tweak message

* deprication v2

* back out update field change

* backout update schema changes

* Finish rollback on update service

* update doc strings

* move to 2024.7.0
More verbosity to deprecation message
2023-12-28 19:56:40 +01:00
Erik Montnemery 1909163c8e Revert "Set volume_step in bluesound media_player" (#106582)
Revert "Set volume_step in bluesound media_player (#105672)"

This reverts commit 7fa55ffdd2.
2023-12-28 19:54:51 +01:00
Erik Montnemery 20d1560b01 Revert "Set volume_step in monoprice media_player" (#106580)
Revert "Set volume_step in monoprice media_player (#105670)"

This reverts commit cffb51ebec.
2023-12-28 19:54:36 +01:00
Erik Montnemery 744f06b5a8 Revert "Set volume_step in cmus media_player" (#106579)
Revert "Set volume_step in cmus media_player (#105667)"

This reverts commit c10b460c6b.
2023-12-28 19:54:21 +01:00
Erik Montnemery 52cc6a1008 Revert "Set volume_step in clementine media_player" (#106578)
Revert "Set volume_step in clementine media_player (#105666)"

This reverts commit 36eeb15fee.
2023-12-28 19:54:10 +01:00
Erik Montnemery 1fc0a305e7 Revert "Set volume_step in aquostv media_player" (#106577)
Revert "Set volume_step in aquostv media_player (#105665)"

This reverts commit bb8dce6187.
2023-12-28 19:53:56 +01:00
Erik Montnemery 29dea2e0ea Revert "Set volume_step in frontier_silicon media_player" (#106583)
Revert "Set volume_step in frontier_silicon media_player (#105953)"

This reverts commit 3e50ca6cda.
2023-12-28 19:50:57 +01:00
Erik Montnemery fb280229c2 Revert "Set volume_step in sonos media_player" (#106581)
Revert "Set volume_step in sonos media_player (#105671)"

This reverts commit 6dc8c2c370.
2023-12-28 19:48:34 +01:00
jjlawren 43384effcd Bump plexapi to 4.15.7 (#106576) 2023-12-28 19:36:57 +01:00
Isak Nyberg 756292234e Add Record distance sensor to MyPermobil (#106519)
* add record-distance-sensor

* simplify UOM property

* remove uom for record_distance description

* remove redundant code

* Update homeassistant/components/permobil/sensor.py

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-12-28 19:27:06 +01:00
Robert Hillis 454201d0a8 Add device info to Netgear LTE (#106568)
* Add device info to Netgear LTE

* uno mas
2023-12-28 17:47:04 +01:00
G Johansson 353f33f4ac Add missing disks to Systemmonitor (#106541) 2023-12-28 17:45:21 +01:00
jan iversen 2abf7d75e9 Remove default value for modbus lazy_error (#106561) 2023-12-28 17:37:48 +01:00
Álvaro Fernández Rojas 5dd63d86f2 Update aioairzone-cloud to v0.3.7 (#106544)
Release v0.3.7

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-12-28 17:14:25 +01:00
G Johansson 34c9ef42e9 Add myself as codeowner for holiday (#106560) 2023-12-28 16:32:55 +01:00
G Johansson b852eb7e23 Fix holiday HA language not supported (#106554) 2023-12-28 16:10:27 +01:00
G Johansson 0605c499aa Bump python-holidays to 0.39 (#106550) 2023-12-28 16:05:52 +01:00
Bram Kragten 1cbd9bded0 Update frontend to 20231228.0 (#106556) 2023-12-28 16:05:11 +01:00
jan iversen 21dbc57fc1 Remove default value from modbus retries (#106551)
Solve retries issue.
2023-12-28 14:20:56 +01:00
Marc Mueller 1a6e81767d Improve trace helper typing (#105964) 2023-12-28 14:00:24 +01:00
Christopher Fenner 6eec4998bd Avoid changing state of reduced preset in ViCare integration (#105642) 2023-12-28 11:17:13 +01:00
Christopher Fenner af881d7ac8 Handle AttributeError in ViCare integration (#106470) 2023-12-28 09:35:39 +01:00
Bart Janssens a6af2be675 Skip activating/deactivating Vicare standby preset (#106476) 2023-12-28 09:31:35 +01:00
Brett Adams fb893a5315 Fix run errors in Tessie (#106521) 2023-12-28 09:02:04 +01:00
Brett Adams 5b706cedeb Fix Tessie honk button (#106518) 2023-12-28 09:00:34 +01:00
Franck Nijhof 7ad44a02b7 Bump version to 2024.2.0dev0 (#106504) 2023-12-28 02:08:16 +01:00
J. Nick Koston 178e4f9e25 Use converter factory in sensor platform (#106508)
This is a bit faster than calling .covert
2023-12-28 00:06:36 +01:00
dependabot[bot] f59e2b0eec Bump dawidd6/action-download-artifact from 2 to 3.0.0 (#105712)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-12-27 21:52:32 +01:00
4169 changed files with 197751 additions and 45636 deletions
+94 -23
View File
@@ -28,7 +28,6 @@ omit =
homeassistant/components/adguard/sensor.py
homeassistant/components/adguard/switch.py
homeassistant/components/ads/*
homeassistant/components/aemet/weather_update_coordinator.py
homeassistant/components/aftership/__init__.py
homeassistant/components/aftership/sensor.py
homeassistant/components/agent_dvr/alarm_control_panel.py
@@ -47,6 +46,9 @@ omit =
homeassistant/components/airtouch4/__init__.py
homeassistant/components/airtouch4/climate.py
homeassistant/components/airtouch4/coordinator.py
homeassistant/components/airtouch5/__init__.py
homeassistant/components/airtouch5/climate.py
homeassistant/components/airtouch5/entity.py
homeassistant/components/airvisual/__init__.py
homeassistant/components/airvisual/sensor.py
homeassistant/components/airvisual_pro/__init__.py
@@ -71,6 +73,10 @@ omit =
homeassistant/components/apple_tv/browse_media.py
homeassistant/components/apple_tv/media_player.py
homeassistant/components/apple_tv/remote.py
homeassistant/components/aprilaire/__init__.py
homeassistant/components/aprilaire/climate.py
homeassistant/components/aprilaire/coordinator.py
homeassistant/components/aprilaire/entity.py
homeassistant/components/aqualogic/*
homeassistant/components/aquostv/media_player.py
homeassistant/components/arcam_fmj/__init__.py
@@ -87,7 +93,7 @@ omit =
homeassistant/components/aseko_pool_live/entity.py
homeassistant/components/aseko_pool_live/sensor.py
homeassistant/components/asterisk_cdr/mailbox.py
homeassistant/components/asterisk_mbox/*
homeassistant/components/asterisk_mbox/mailbox.py
homeassistant/components/aten_pe/*
homeassistant/components/atome/*
homeassistant/components/aurora/__init__.py
@@ -110,6 +116,12 @@ omit =
homeassistant/components/baf/sensor.py
homeassistant/components/baf/switch.py
homeassistant/components/baidu/tts.py
homeassistant/components/bang_olufsen/__init__.py
homeassistant/components/bang_olufsen/const.py
homeassistant/components/bang_olufsen/entity.py
homeassistant/components/bang_olufsen/media_player.py
homeassistant/components/bang_olufsen/util.py
homeassistant/components/bang_olufsen/websocket.py
homeassistant/components/bbox/device_tracker.py
homeassistant/components/bbox/sensor.py
homeassistant/components/beewi_smartclim/sensor.py
@@ -142,6 +154,8 @@ omit =
homeassistant/components/braviatv/coordinator.py
homeassistant/components/braviatv/media_player.py
homeassistant/components/braviatv/remote.py
homeassistant/components/bring/coordinator.py
homeassistant/components/bring/todo.py
homeassistant/components/broadlink/climate.py
homeassistant/components/broadlink/light.py
homeassistant/components/broadlink/remote.py
@@ -174,9 +188,11 @@ omit =
homeassistant/components/comed_hourly_pricing/sensor.py
homeassistant/components/comelit/__init__.py
homeassistant/components/comelit/alarm_control_panel.py
homeassistant/components/comelit/climate.py
homeassistant/components/comelit/const.py
homeassistant/components/comelit/cover.py
homeassistant/components/comelit/coordinator.py
homeassistant/components/comelit/humidifier.py
homeassistant/components/comelit/light.py
homeassistant/components/comelit/sensor.py
homeassistant/components/comelit/switch.py
@@ -273,7 +289,12 @@ omit =
homeassistant/components/econet/climate.py
homeassistant/components/econet/sensor.py
homeassistant/components/econet/water_heater.py
homeassistant/components/ecovacs/*
homeassistant/components/ecovacs/controller.py
homeassistant/components/ecovacs/entity.py
homeassistant/components/ecovacs/image.py
homeassistant/components/ecovacs/number.py
homeassistant/components/ecovacs/util.py
homeassistant/components/ecovacs/vacuum.py
homeassistant/components/ecowitt/__init__.py
homeassistant/components/ecowitt/binary_sensor.py
homeassistant/components/ecowitt/entity.py
@@ -304,6 +325,8 @@ omit =
homeassistant/components/elmax/cover.py
homeassistant/components/elmax/switch.py
homeassistant/components/elv/*
homeassistant/components/elvia/__init__.py
homeassistant/components/elvia/importer.py
homeassistant/components/emby/media_player.py
homeassistant/components/emoncms/sensor.py
homeassistant/components/emoncms_history/*
@@ -332,13 +355,15 @@ omit =
homeassistant/components/environment_canada/weather.py
homeassistant/components/envisalink/*
homeassistant/components/ephember/climate.py
homeassistant/components/epion/__init__.py
homeassistant/components/epion/coordinator.py
homeassistant/components/epion/sensor.py
homeassistant/components/epson/__init__.py
homeassistant/components/epson/media_player.py
homeassistant/components/epsonworkforce/sensor.py
homeassistant/components/escea/__init__.py
homeassistant/components/escea/climate.py
homeassistant/components/escea/discovery.py
homeassistant/components/esphome/manager.py
homeassistant/components/etherscan/sensor.py
homeassistant/components/eufy/*
homeassistant/components/eufylife_ble/__init__.py
@@ -402,8 +427,6 @@ omit =
homeassistant/components/fjaraskupan/sensor.py
homeassistant/components/fleetgo/device_tracker.py
homeassistant/components/flexit/climate.py
homeassistant/components/flexit_bacnet/__init__.py
homeassistant/components/flexit_bacnet/const.py
homeassistant/components/flexit_bacnet/climate.py
homeassistant/components/flic/binary_sensor.py
homeassistant/components/flick_electric/__init__.py
@@ -421,6 +444,7 @@ omit =
homeassistant/components/foscam/__init__.py
homeassistant/components/foscam/camera.py
homeassistant/components/foscam/coordinator.py
homeassistant/components/foscam/entity.py
homeassistant/components/foursquare/*
homeassistant/components/free_mobile/notify.py
homeassistant/components/freebox/camera.py
@@ -461,9 +485,11 @@ omit =
homeassistant/components/google_cloud/tts.py
homeassistant/components/google_maps/device_tracker.py
homeassistant/components/google_pubsub/__init__.py
homeassistant/components/gpsd/__init__.py
homeassistant/components/gpsd/sensor.py
homeassistant/components/greenwave/light.py
homeassistant/components/growatt_server/__init__.py
homeassistant/components/growatt_server/const.py
homeassistant/components/growatt_server/sensor.py
homeassistant/components/growatt_server/sensor_types/*
homeassistant/components/gstreamer/media_player.py
@@ -471,9 +497,11 @@ omit =
homeassistant/components/guardian/__init__.py
homeassistant/components/guardian/binary_sensor.py
homeassistant/components/guardian/button.py
homeassistant/components/guardian/coordinator.py
homeassistant/components/guardian/sensor.py
homeassistant/components/guardian/switch.py
homeassistant/components/guardian/util.py
homeassistant/components/guardian/valve.py
homeassistant/components/habitica/__init__.py
homeassistant/components/habitica/sensor.py
homeassistant/components/harman_kardon_avr/media_player.py
@@ -495,6 +523,9 @@ omit =
homeassistant/components/hive/sensor.py
homeassistant/components/hive/switch.py
homeassistant/components/hive/water_heater.py
homeassistant/components/hko/__init__.py
homeassistant/components/hko/weather.py
homeassistant/components/hko/coordinator.py
homeassistant/components/hlk_sw16/__init__.py
homeassistant/components/hlk_sw16/switch.py
homeassistant/components/home_connect/__init__.py
@@ -504,8 +535,6 @@ omit =
homeassistant/components/home_connect/light.py
homeassistant/components/home_connect/sensor.py
homeassistant/components/home_connect/switch.py
homeassistant/components/home_plus_control/api.py
homeassistant/components/home_plus_control/switch.py
homeassistant/components/homematic/__init__.py
homeassistant/components/homematic/binary_sensor.py
homeassistant/components/homematic/climate.py
@@ -530,11 +559,14 @@ omit =
homeassistant/components/hunterdouglas_powerview/coordinator.py
homeassistant/components/hunterdouglas_powerview/cover.py
homeassistant/components/hunterdouglas_powerview/entity.py
homeassistant/components/hunterdouglas_powerview/number.py
homeassistant/components/hunterdouglas_powerview/select.py
homeassistant/components/hunterdouglas_powerview/sensor.py
homeassistant/components/hunterdouglas_powerview/shade_data.py
homeassistant/components/hunterdouglas_powerview/util.py
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/huum/__init__.py
homeassistant/components/huum/climate.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/ialarm/alarm_control_panel.py
@@ -607,12 +639,6 @@ omit =
homeassistant/components/izone/climate.py
homeassistant/components/izone/discovery.py
homeassistant/components/joaoapps_join/*
homeassistant/components/juicenet/__init__.py
homeassistant/components/juicenet/device.py
homeassistant/components/juicenet/entity.py
homeassistant/components/juicenet/number.py
homeassistant/components/juicenet/sensor.py
homeassistant/components/juicenet/switch.py
homeassistant/components/justnimbus/coordinator.py
homeassistant/components/justnimbus/entity.py
homeassistant/components/justnimbus/sensor.py
@@ -661,10 +687,6 @@ omit =
homeassistant/components/lg_netcast/media_player.py
homeassistant/components/lg_soundbar/__init__.py
homeassistant/components/lg_soundbar/media_player.py
homeassistant/components/life360/__init__.py
homeassistant/components/life360/button.py
homeassistant/components/life360/coordinator.py
homeassistant/components/life360/device_tracker.py
homeassistant/components/lightwave/*
homeassistant/components/limitlessled/light.py
homeassistant/components/linksys_smart/device_tracker.py
@@ -692,10 +714,16 @@ omit =
homeassistant/components/loqed/sensor.py
homeassistant/components/luci/device_tracker.py
homeassistant/components/luftdaten/sensor.py
homeassistant/components/lupusec/*
homeassistant/components/lupusec/__init__.py
homeassistant/components/lupusec/alarm_control_panel.py
homeassistant/components/lupusec/binary_sensor.py
homeassistant/components/lupusec/entity.py
homeassistant/components/lupusec/switch.py
homeassistant/components/lutron/__init__.py
homeassistant/components/lutron/binary_sensor.py
homeassistant/components/lutron/cover.py
homeassistant/components/lutron/entity.py
homeassistant/components/lutron/fan.py
homeassistant/components/lutron/light.py
homeassistant/components/lutron/switch.py
homeassistant/components/lutron_caseta/__init__.py
@@ -736,6 +764,16 @@ omit =
homeassistant/components/meteoclimatic/__init__.py
homeassistant/components/meteoclimatic/sensor.py
homeassistant/components/meteoclimatic/weather.py
homeassistant/components/microbees/__init__.py
homeassistant/components/microbees/api.py
homeassistant/components/microbees/application_credentials.py
homeassistant/components/microbees/button.py
homeassistant/components/microbees/const.py
homeassistant/components/microbees/coordinator.py
homeassistant/components/microbees/entity.py
homeassistant/components/microbees/light.py
homeassistant/components/microbees/sensor.py
homeassistant/components/microbees/switch.py
homeassistant/components/microsoft/tts.py
homeassistant/components/mikrotik/hub.py
homeassistant/components/mill/climate.py
@@ -758,8 +796,11 @@ omit =
homeassistant/components/motion_blinds/entity.py
homeassistant/components/motion_blinds/sensor.py
homeassistant/components/motionmount/__init__.py
homeassistant/components/motionmount/binary_sensor.py
homeassistant/components/motionmount/entity.py
homeassistant/components/motionmount/number.py
homeassistant/components/motionmount/select.py
homeassistant/components/motionmount/sensor.py
homeassistant/components/mpd/media_player.py
homeassistant/components/mqtt_room/sensor.py
homeassistant/components/msteams/notify.py
@@ -817,6 +858,7 @@ omit =
homeassistant/components/nextcloud/coordinator.py
homeassistant/components/nextcloud/entity.py
homeassistant/components/nextcloud/sensor.py
homeassistant/components/nextcloud/update.py
homeassistant/components/nfandroidtv/__init__.py
homeassistant/components/nfandroidtv/notify.py
homeassistant/components/nibe_heatpump/__init__.py
@@ -841,6 +883,7 @@ omit =
homeassistant/components/notion/__init__.py
homeassistant/components/notion/binary_sensor.py
homeassistant/components/notion/sensor.py
homeassistant/components/notion/util.py
homeassistant/components/nsw_fuel_station/sensor.py
homeassistant/components/nuki/__init__.py
homeassistant/components/nuki/binary_sensor.py
@@ -999,6 +1042,11 @@ omit =
homeassistant/components/qrcode/image_processing.py
homeassistant/components/quantum_gateway/device_tracker.py
homeassistant/components/qvr_pro/*
homeassistant/components/rabbitair/__init__.py
homeassistant/components/rabbitair/const.py
homeassistant/components/rabbitair/coordinator.py
homeassistant/components/rabbitair/entity.py
homeassistant/components/rabbitair/fan.py
homeassistant/components/rachio/__init__.py
homeassistant/components/rachio/binary_sensor.py
homeassistant/components/rachio/device.py
@@ -1029,8 +1077,10 @@ omit =
homeassistant/components/renson/sensor.py
homeassistant/components/renson/button.py
homeassistant/components/renson/fan.py
homeassistant/components/renson/switch.py
homeassistant/components/renson/binary_sensor.py
homeassistant/components/renson/number.py
homeassistant/components/renson/time.py
homeassistant/components/raspyrfm/*
homeassistant/components/recollect_waste/sensor.py
homeassistant/components/recorder/repack.py
@@ -1069,6 +1119,9 @@ omit =
homeassistant/components/ripple/sensor.py
homeassistant/components/roborock/coordinator.py
homeassistant/components/rocketchat/notify.py
homeassistant/components/romy/__init__.py
homeassistant/components/romy/coordinator.py
homeassistant/components/romy/vacuum.py
homeassistant/components/roomba/__init__.py
homeassistant/components/roomba/binary_sensor.py
homeassistant/components/roomba/braava.py
@@ -1309,15 +1362,13 @@ omit =
homeassistant/components/system_bridge/notify.py
homeassistant/components/system_bridge/sensor.py
homeassistant/components/system_bridge/update.py
homeassistant/components/systemmonitor/__init__.py
homeassistant/components/systemmonitor/sensor.py
homeassistant/components/systemmonitor/util.py
homeassistant/components/tado/__init__.py
homeassistant/components/tado/binary_sensor.py
homeassistant/components/tado/climate.py
homeassistant/components/tado/device_tracker.py
homeassistant/components/tado/sensor.py
homeassistant/components/tado/water_heater.py
homeassistant/components/tami4/button.py
homeassistant/components/tank_utility/sensor.py
homeassistant/components/tankerkoenig/__init__.py
homeassistant/components/tankerkoenig/binary_sensor.py
@@ -1386,6 +1437,11 @@ omit =
homeassistant/components/tplink_omada/controller.py
homeassistant/components/tplink_omada/update.py
homeassistant/components/traccar/device_tracker.py
homeassistant/components/traccar_server/__init__.py
homeassistant/components/traccar_server/coordinator.py
homeassistant/components/traccar_server/device_tracker.py
homeassistant/components/traccar_server/entity.py
homeassistant/components/traccar_server/helpers.py
homeassistant/components/tractive/__init__.py
homeassistant/components/tractive/binary_sensor.py
homeassistant/components/tractive/device_tracker.py
@@ -1485,12 +1541,12 @@ omit =
homeassistant/components/vesync/switch.py
homeassistant/components/viaggiatreno/sensor.py
homeassistant/components/vicare/__init__.py
homeassistant/components/vicare/binary_sensor.py
homeassistant/components/vicare/button.py
homeassistant/components/vicare/climate.py
homeassistant/components/vicare/entity.py
homeassistant/components/vicare/number.py
homeassistant/components/vicare/sensor.py
homeassistant/components/vicare/types.py
homeassistant/components/vicare/utils.py
homeassistant/components/vicare/water_heater.py
homeassistant/components/vilfo/__init__.py
@@ -1528,6 +1584,11 @@ omit =
homeassistant/components/weatherflow/__init__.py
homeassistant/components/weatherflow/const.py
homeassistant/components/weatherflow/sensor.py
homeassistant/components/weatherflow_cloud/__init__.py
homeassistant/components/weatherflow_cloud/const.py
homeassistant/components/weatherflow_cloud/coordinator.py
homeassistant/components/weatherflow_cloud/weather.py
homeassistant/components/webmin/sensor.py
homeassistant/components/wiffi/__init__.py
homeassistant/components/wiffi/binary_sensor.py
homeassistant/components/wiffi/sensor.py
@@ -1605,7 +1666,9 @@ omit =
homeassistant/components/yolink/entity.py
homeassistant/components/yolink/light.py
homeassistant/components/yolink/lock.py
homeassistant/components/yolink/number.py
homeassistant/components/yolink/sensor.py
homeassistant/components/yolink/services.py
homeassistant/components/yolink/siren.py
homeassistant/components/yolink/switch.py
homeassistant/components/youless/__init__.py
@@ -1644,6 +1707,14 @@ omit =
homeassistant/components/zwave_me/switch.py
homeassistant/components/electrasmart/climate.py
homeassistant/components/electrasmart/__init__.py
homeassistant/components/myuplink/__init__.py
homeassistant/components/myuplink/api.py
homeassistant/components/myuplink/application_credentials.py
homeassistant/components/myuplink/coordinator.py
homeassistant/components/myuplink/entity.py
homeassistant/components/myuplink/helpers.py
homeassistant/components/myuplink/sensor.py
[report]
# Regexes for lines to exclude from consideration
+2 -1
View File
@@ -5,7 +5,8 @@
"postCreateCommand": "script/setup",
"postStartCommand": "script/bootstrap",
"containerEnv": { "DEVCONTAINER": "1" },
"appPort": ["8123:8123"],
// Port 5683 udp is used by Shelly integration
"appPort": ["8123:8123", "5683:5683/udp"],
"runArgs": ["-e", "GIT_EDITOR=code --wait"],
"customizations": {
"vscode": {
Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

+16 -6
View File
@@ -10,7 +10,8 @@ on:
env:
BUILD_TYPE: core
DEFAULT_PYTHON: "3.11"
DEFAULT_PYTHON: "3.12"
PIP_TIMEOUT: 60
jobs:
init:
@@ -102,7 +103,7 @@ jobs:
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v3.1.2
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/frontend
@@ -113,7 +114,7 @@ jobs:
- name: Download nightly wheels of intents
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v2
uses: dawidd6/action-download-artifact@v3.1.2
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/intents-package
@@ -179,6 +180,15 @@ jobs:
sed -i "s|pyezviz|# pyezviz|g" requirements_all.txt
sed -i "s|pykrakenapi|# pykrakenapi|g" requirements_all.txt
- name: Adjustments for 64-bit
if: matrix.arch == 'amd64' || matrix.arch == 'aarch64'
run: |
# Some speedups are only available on 64-bit, and since
# we build 32bit images on 64bit hosts, we only enable
# the speed ups on 64bit since the wheels for 32bit
# are not available.
sed -i "s|aiohttp-zlib-ng|aiohttp-zlib-ng\[isal\]|g" requirements_all.txt
- name: Download Translations
run: python3 -m script.translations download
env:
@@ -197,7 +207,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2023.12.0
uses: home-assistant/builder@2024.01.0
with:
args: |
$BUILD_ARGS \
@@ -274,7 +284,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build base image
uses: home-assistant/builder@2023.12.0
uses: home-assistant/builder@2024.01.0
with:
args: |
$BUILD_ARGS \
@@ -331,7 +341,7 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Install Cosign
uses: sigstore/cosign-installer@v3.3.0
uses: sigstore/cosign-installer@v3.4.0
with:
cosign-release: "v2.0.2"
+41 -32
View File
@@ -35,8 +35,8 @@ on:
env:
CACHE_VERSION: 5
PIP_CACHE_VERSION: 4
MYPY_CACHE_VERSION: 6
HA_SHORT_VERSION: "2024.1"
MYPY_CACHE_VERSION: 7
HA_SHORT_VERSION: "2024.3"
DEFAULT_PYTHON: "3.11"
ALL_PYTHON_VERSIONS: "['3.11', '3.12']"
# 10.3 is the oldest supported version
@@ -103,7 +103,7 @@ jobs:
echo "key=pre-commit-${{ env.CACHE_VERSION }}-${{
hashFiles('.pre-commit-config.yaml') }}" >> $GITHUB_OUTPUT
- name: Filter for core changes
uses: dorny/paths-filter@v2.11.1
uses: dorny/paths-filter@v3.0.1
id: core
with:
filters: .core_files.yaml
@@ -118,7 +118,7 @@ jobs:
echo "Result:"
cat .integration_paths.yaml
- name: Filter for integration changes
uses: dorny/paths-filter@v2.11.1
uses: dorny/paths-filter@v3.0.1
id: integrations
with:
filters: .integration_paths.yaml
@@ -231,7 +231,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: venv
key: >-
@@ -246,7 +246,7 @@ jobs:
pip install "$(cat requirements_test.txt | grep pre-commit)"
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
lookup-only: true
@@ -276,7 +276,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -285,7 +285,7 @@ jobs:
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
@@ -316,7 +316,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -325,7 +325,7 @@ jobs:
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
@@ -355,7 +355,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -364,7 +364,7 @@ jobs:
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
@@ -454,7 +454,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: venv
lookup-only: true
@@ -463,7 +463,7 @@ jobs:
needs.info.outputs.python_cache_key }}
- name: Restore pip wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: ${{ env.PIP_CACHE }}
key: >-
@@ -517,7 +517,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -549,7 +549,7 @@ jobs:
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -582,7 +582,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -597,14 +597,14 @@ jobs:
run: |
. venv/bin/activate
python --version
pylint --ignore-missing-annotations=y homeassistant
pylint --ignore-missing-annotations=y --ignore-wrong-coordinator-module=y homeassistant
- name: Run pylint (partially)
if: needs.info.outputs.test_full_suite == 'false'
shell: bash
run: |
. venv/bin/activate
python --version
pylint --ignore-missing-annotations=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
pylint --ignore-missing-annotations=y --ignore-wrong-coordinator-module=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
mypy:
name: Check mypy
@@ -633,7 +633,7 @@ jobs:
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -641,7 +641,7 @@ jobs:
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Restore mypy cache
uses: actions/cache@v3.3.2
uses: actions/cache@v4.0.0
with:
path: .mypy_cache
key: >-
@@ -708,7 +708,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -803,10 +803,11 @@ jobs:
path: pytest-*.txt
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v3.1.2
uses: actions/upload-artifact@v4.3.1
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
overwrite: true
- name: Check dirty
run: |
./script/check_dirty
@@ -860,7 +861,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -898,6 +899,7 @@ jobs:
python --version
set -o pipefail
mariadb=$(echo "${{ matrix.mariadb-group }}" | sed "s/:/-/g")
echo "mariadb=${mariadb}" >> $GITHUB_OUTPUT
cov_params=()
if [[ "${{ needs.info.outputs.skip_coverage }}" != "true" ]]; then
cov_params+=(--cov="homeassistant.components.recorder")
@@ -927,10 +929,12 @@ jobs:
path: pytest-*.txt
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v3.1.2
uses: actions/upload-artifact@v4.3.1
with:
name: coverage-${{ matrix.python-version }}-mariadb
name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.mariadb }}
path: coverage.xml
overwrite: true
- name: Check dirty
run: |
./script/check_dirty
@@ -984,7 +988,7 @@ jobs:
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v3.3.2
uses: actions/cache/restore@v4.0.0
with:
path: venv
fail-on-cache-miss: true
@@ -1022,6 +1026,7 @@ jobs:
python --version
set -o pipefail
postgresql=$(echo "${{ matrix.postgresql-group }}" | sed "s/:/-/g")
echo "postgresql=${postgresql}" >> $GITHUB_OUTPUT
cov_params=()
if [[ "${{ needs.info.outputs.skip_coverage }}" != "true" ]]; then
cov_params+=(--cov="homeassistant.components.recorder")
@@ -1052,10 +1057,12 @@ jobs:
path: pytest-*.txt
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v3.1.0
uses: actions/upload-artifact@v4.3.1
with:
name: coverage-${{ matrix.python-version }}-postgresql
name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.postgresql }}
path: coverage.xml
overwrite: true
- name: Check dirty
run: |
./script/check_dirty
@@ -1072,10 +1079,12 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.1
- name: Download all coverage artifacts
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4.1.3
with:
pattern: coverage-*
- name: Upload coverage to Codecov (full coverage)
if: needs.info.outputs.test_full_suite == 'true'
uses: Wandalen/wretry.action@v1.3.0
uses: Wandalen/wretry.action@v1.4.4
with:
action: codecov/codecov-action@v3.1.3
with: |
@@ -1086,7 +1095,7 @@ jobs:
attempt_delay: 30000
- name: Upload coverage to Codecov (partial coverage)
if: needs.info.outputs.test_full_suite == 'false'
uses: Wandalen/wretry.action@v1.3.0
uses: Wandalen/wretry.action@v1.4.4
with:
action: codecov/codecov-action@v3.1.3
with: |
+2 -7
View File
@@ -2,11 +2,6 @@ name: "CodeQL"
# yamllint disable-line rule:truthy
on:
push:
branches:
- dev
- rc
- master
schedule:
- cron: "30 18 * * 4"
@@ -29,11 +24,11 @@ jobs:
uses: actions/checkout@v4.1.1
- name: Initialize CodeQL
uses: github/codeql-action/init@v3.22.12
uses: github/codeql-action/init@v3.24.5
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3.22.12
uses: github/codeql-action/analyze@v3.24.5
with:
category: "/language:python"
+25 -17
View File
@@ -63,16 +63,18 @@ jobs:
) > .env_file
- name: Upload env_file
uses: actions/upload-artifact@v3.1.2
uses: actions/upload-artifact@v4.3.1
with:
name: env_file
path: ./.env_file
overwrite: true
- name: Upload requirements_diff
uses: actions/upload-artifact@v3.1.2
uses: actions/upload-artifact@v4.3.1
with:
name: requirements_diff
path: ./requirements_diff.txt
overwrite: true
core:
name: Build Core wheels ${{ matrix.abi }} for ${{ matrix.arch }} (musllinux_1_2)
@@ -82,31 +84,31 @@ jobs:
strategy:
fail-fast: false
matrix:
abi: ["cp311", "cp312"]
abi: ["cp312"]
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Download env_file
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4.1.3
with:
name: env_file
- name: Download requirements_diff
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4.1.3
with:
name: requirements_diff
- name: Build wheels
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-key: ${{ secrets.WHEELS_KEY }}
env-file: true
apk: "libffi-dev;openssl-dev;yaml-dev"
apk: "libffi-dev;openssl-dev;yaml-dev;nasm"
skip-binary: aiohttp
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
@@ -120,19 +122,19 @@ jobs:
strategy:
fail-fast: false
matrix:
abi: ["cp311", "cp312"]
abi: ["cp312"]
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.1
- name: Download env_file
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4.1.3
with:
name: env_file
- name: Download requirements_diff
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4.1.3
with:
name: requirements_diff
@@ -160,6 +162,12 @@ jobs:
sed -i "s|pyezviz|# pyezviz|g" ${requirement_file}
sed -i "s|pykrakenapi|# pykrakenapi|g" ${requirement_file}
fi
# Some speedups are only for 64-bit
if [ "${{ matrix.arch }}" = "amd64" ] || [ "${{ matrix.arch }}" = "aarch64" ]; then
sed -i "s|aiohttp-zlib-ng|aiohttp-zlib-ng\[isal\]|g" ${requirement_file}
fi
done
- name: Split requirements all
@@ -192,7 +200,7 @@ jobs:
sed -i "/numpy/d" homeassistant/package_constraints.txt
- name: Build wheels (old cython)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
@@ -207,42 +215,42 @@ jobs:
pip: "'cython<3'"
- name: Build wheels (part 1)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-key: ${{ secrets.WHEELS_KEY }}
env-file: true
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev"
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtaa"
- name: Build wheels (part 2)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-key: ${{ secrets.WHEELS_KEY }}
env-file: true
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev"
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtab"
- name: Build wheels (part 3)
uses: home-assistant/wheels@2023.10.5
uses: home-assistant/wheels@2024.01.0
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-key: ${{ secrets.WHEELS_KEY }}
env-file: true
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev"
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
+2 -2
View File
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.8
rev: v0.2.1
hooks:
- id: ruff
args:
@@ -83,7 +83,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(homeassistant/.+/(manifest|strings)\.json|homeassistant/brands/.*\.json|\.coveragerc|homeassistant/.+/services\.yaml|script/hassfest/(?!metadata|mypy_config).+\.py)$
files: ^(homeassistant/.+/(icons|manifest|strings)\.json|homeassistant/brands/.*\.json|\.coveragerc|homeassistant/.+/services\.yaml|script/hassfest/(?!metadata|mypy_config).+\.py)$
- id: hassfest-metadata
name: hassfest-metadata
entry: script/run-in-env.sh python3 -m script.hassfest -p metadata
+87 -2
View File
@@ -42,6 +42,7 @@ homeassistant.components
homeassistant.components.abode.*
homeassistant.components.accuweather.*
homeassistant.components.acer_projector.*
homeassistant.components.acmeda.*
homeassistant.components.actiontec.*
homeassistant.components.adax.*
homeassistant.components.adguard.*
@@ -49,7 +50,10 @@ homeassistant.components.aftership.*
homeassistant.components.air_quality.*
homeassistant.components.airly.*
homeassistant.components.airnow.*
homeassistant.components.airq.*
homeassistant.components.airthings.*
homeassistant.components.airthings_ble.*
homeassistant.components.airtouch5.*
homeassistant.components.airvisual.*
homeassistant.components.airvisual_pro.*
homeassistant.components.airzone.*
@@ -58,52 +62,82 @@ homeassistant.components.aladdin_connect.*
homeassistant.components.alarm_control_panel.*
homeassistant.components.alert.*
homeassistant.components.alexa.*
homeassistant.components.alpha_vantage.*
homeassistant.components.amazon_polly.*
homeassistant.components.amberelectric.*
homeassistant.components.ambiclimate.*
homeassistant.components.ambient_station.*
homeassistant.components.amcrest.*
homeassistant.components.ampio.*
homeassistant.components.analytics.*
homeassistant.components.analytics_insights.*
homeassistant.components.android_ip_webcam.*
homeassistant.components.androidtv.*
homeassistant.components.androidtv_remote.*
homeassistant.components.anel_pwrctrl.*
homeassistant.components.anova.*
homeassistant.components.anthemav.*
homeassistant.components.apache_kafka.*
homeassistant.components.apcupsd.*
homeassistant.components.api.*
homeassistant.components.apple_tv.*
homeassistant.components.apprise.*
homeassistant.components.aprs.*
homeassistant.components.aqualogic.*
homeassistant.components.aquostv.*
homeassistant.components.aranet.*
homeassistant.components.arcam_fmj.*
homeassistant.components.arris_tg2492lg.*
homeassistant.components.aruba.*
homeassistant.components.arwn.*
homeassistant.components.aseko_pool_live.*
homeassistant.components.assist_pipeline.*
homeassistant.components.asterisk_cdr.*
homeassistant.components.asterisk_mbox.*
homeassistant.components.asuswrt.*
homeassistant.components.auth.*
homeassistant.components.automation.*
homeassistant.components.awair.*
homeassistant.components.axis.*
homeassistant.components.backup.*
homeassistant.components.baf.*
homeassistant.components.bang_olufsen.*
homeassistant.components.bayesian.*
homeassistant.components.binary_sensor.*
homeassistant.components.bitcoin.*
homeassistant.components.blockchain.*
homeassistant.components.blue_current.*
homeassistant.components.blueprint.*
homeassistant.components.bluetooth.*
homeassistant.components.bluetooth_adapters.*
homeassistant.components.bluetooth_tracker.*
homeassistant.components.bmw_connected_drive.*
homeassistant.components.bond.*
homeassistant.components.braviatv.*
homeassistant.components.brother.*
homeassistant.components.browser.*
homeassistant.components.bthome.*
homeassistant.components.button.*
homeassistant.components.calendar.*
homeassistant.components.camera.*
homeassistant.components.canary.*
homeassistant.components.cert_expiry.*
homeassistant.components.clickatell.*
homeassistant.components.clicksend.*
homeassistant.components.climate.*
homeassistant.components.cloud.*
homeassistant.components.co2signal.*
homeassistant.components.command_line.*
homeassistant.components.config.*
homeassistant.components.configurator.*
homeassistant.components.counter.*
homeassistant.components.cover.*
homeassistant.components.cpuspeed.*
homeassistant.components.crownstone.*
homeassistant.components.date.*
homeassistant.components.datetime.*
homeassistant.components.deconz.*
homeassistant.components.default_config.*
homeassistant.components.demo.*
homeassistant.components.derivative.*
homeassistant.components.device_automation.*
@@ -114,11 +148,18 @@ homeassistant.components.dhcp.*
homeassistant.components.diagnostics.*
homeassistant.components.discovergy.*
homeassistant.components.dlna_dmr.*
homeassistant.components.dlna_dms.*
homeassistant.components.dnsip.*
homeassistant.components.doorbird.*
homeassistant.components.dormakaba_dkey.*
homeassistant.components.downloader.*
homeassistant.components.dsmr.*
homeassistant.components.duckdns.*
homeassistant.components.dunehd.*
homeassistant.components.duotecno.*
homeassistant.components.easyenergy.*
homeassistant.components.ecovacs.*
homeassistant.components.ecowitt.*
homeassistant.components.efergy.*
homeassistant.components.electrasmart.*
homeassistant.components.electric_kiwi.*
@@ -126,7 +167,9 @@ homeassistant.components.elgato.*
homeassistant.components.elkm1.*
homeassistant.components.emulated_hue.*
homeassistant.components.energy.*
homeassistant.components.energyzero.*
homeassistant.components.enigma2.*
homeassistant.components.enphase_envoy.*
homeassistant.components.esphome.*
homeassistant.components.event.*
homeassistant.components.evil_genius_labs.*
@@ -148,12 +191,15 @@ homeassistant.components.fritzbox_callmonitor.*
homeassistant.components.fronius.*
homeassistant.components.frontend.*
homeassistant.components.fully_kiosk.*
homeassistant.components.generic_hygrostat.*
homeassistant.components.generic_thermostat.*
homeassistant.components.geo_location.*
homeassistant.components.geocaching.*
homeassistant.components.gios.*
homeassistant.components.glances.*
homeassistant.components.goalzero.*
homeassistant.components.google.*
homeassistant.components.google_assistant_sdk.*
homeassistant.components.google_sheets.*
homeassistant.components.gpsd.*
homeassistant.components.greeneye_monitor.*
@@ -163,9 +209,9 @@ homeassistant.components.hardkernel.*
homeassistant.components.hardware.*
homeassistant.components.here_travel_time.*
homeassistant.components.history.*
homeassistant.components.history_stats.*
homeassistant.components.holiday.*
homeassistant.components.homeassistant.exposed_entities
homeassistant.components.homeassistant.triggers.event
homeassistant.components.homeassistant.*
homeassistant.components.homeassistant_alerts.*
homeassistant.components.homeassistant_green.*
homeassistant.components.homeassistant_hardware.*
@@ -184,6 +230,7 @@ homeassistant.components.homekit_controller.utils
homeassistant.components.homewizard.*
homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.humidifier.*
homeassistant.components.hydrawise.*
homeassistant.components.hyperion.*
homeassistant.components.ibeacon.*
@@ -196,6 +243,9 @@ homeassistant.components.input_button.*
homeassistant.components.input_select.*
homeassistant.components.input_text.*
homeassistant.components.integration.*
homeassistant.components.intent.*
homeassistant.components.intent_script.*
homeassistant.components.ios.*
homeassistant.components.ipp.*
homeassistant.components.iqvia.*
homeassistant.components.islamic_prayer_times.*
@@ -208,11 +258,13 @@ homeassistant.components.knx.*
homeassistant.components.kraken.*
homeassistant.components.lacrosse.*
homeassistant.components.lacrosse_view.*
homeassistant.components.lamarzocco.*
homeassistant.components.lametric.*
homeassistant.components.laundrify.*
homeassistant.components.lawn_mower.*
homeassistant.components.lcn.*
homeassistant.components.ld2410_ble.*
homeassistant.components.led_ble.*
homeassistant.components.lidarr.*
homeassistant.components.lifx.*
homeassistant.components.light.*
@@ -228,15 +280,18 @@ homeassistant.components.london_underground.*
homeassistant.components.lookin.*
homeassistant.components.luftdaten.*
homeassistant.components.mailbox.*
homeassistant.components.map.*
homeassistant.components.mastodon.*
homeassistant.components.matrix.*
homeassistant.components.matter.*
homeassistant.components.media_extractor.*
homeassistant.components.media_player.*
homeassistant.components.media_source.*
homeassistant.components.met_eireann.*
homeassistant.components.metoffice.*
homeassistant.components.mikrotik.*
homeassistant.components.min_max.*
homeassistant.components.minecraft_server.*
homeassistant.components.mjpeg.*
homeassistant.components.modbus.*
homeassistant.components.modem_callerid.*
@@ -244,7 +299,9 @@ homeassistant.components.moon.*
homeassistant.components.mopeka.*
homeassistant.components.motionmount.*
homeassistant.components.mqtt.*
homeassistant.components.my.*
homeassistant.components.mysensors.*
homeassistant.components.myuplink.*
homeassistant.components.nam.*
homeassistant.components.nanoleaf.*
homeassistant.components.neato.*
@@ -253,20 +310,24 @@ homeassistant.components.netatmo.*
homeassistant.components.network.*
homeassistant.components.nextdns.*
homeassistant.components.nfandroidtv.*
homeassistant.components.nightscout.*
homeassistant.components.nissan_leaf.*
homeassistant.components.no_ip.*
homeassistant.components.notify.*
homeassistant.components.notion.*
homeassistant.components.number.*
homeassistant.components.nut.*
homeassistant.components.onboarding.*
homeassistant.components.oncue.*
homeassistant.components.onewire.*
homeassistant.components.open_meteo.*
homeassistant.components.openexchangerates.*
homeassistant.components.opensky.*
homeassistant.components.openuv.*
homeassistant.components.oralb.*
homeassistant.components.otbr.*
homeassistant.components.overkiz.*
homeassistant.components.p1_monitor.*
homeassistant.components.peco.*
homeassistant.components.persistent_notification.*
homeassistant.components.pi_hole.*
@@ -275,6 +336,7 @@ homeassistant.components.plugwise.*
homeassistant.components.poolsense.*
homeassistant.components.powerwall.*
homeassistant.components.private_ble_device.*
homeassistant.components.prometheus.*
homeassistant.components.proximity.*
homeassistant.components.prusalink.*
homeassistant.components.pure_energie.*
@@ -282,7 +344,9 @@ homeassistant.components.purpleair.*
homeassistant.components.pushbullet.*
homeassistant.components.pvoutput.*
homeassistant.components.qnap_qsw.*
homeassistant.components.rabbitair.*
homeassistant.components.radarr.*
homeassistant.components.rainforest_raven.*
homeassistant.components.rainmachine.*
homeassistant.components.raspberry_pi.*
homeassistant.components.rdw.*
@@ -292,11 +356,13 @@ homeassistant.components.remote.*
homeassistant.components.renault.*
homeassistant.components.repairs.*
homeassistant.components.rest.*
homeassistant.components.rest_command.*
homeassistant.components.rfxtrx.*
homeassistant.components.rhasspy.*
homeassistant.components.ridwell.*
homeassistant.components.rituals_perfume_genie.*
homeassistant.components.roku.*
homeassistant.components.romy.*
homeassistant.components.rpi_power.*
homeassistant.components.rss_feed_template.*
homeassistant.components.rtsp_to_webrtc.*
@@ -306,6 +372,7 @@ homeassistant.components.samsungtv.*
homeassistant.components.scene.*
homeassistant.components.schedule.*
homeassistant.components.scrape.*
homeassistant.components.search.*
homeassistant.components.select.*
homeassistant.components.sensibo.*
homeassistant.components.sensirion_ble.*
@@ -313,8 +380,10 @@ homeassistant.components.sensor.*
homeassistant.components.senz.*
homeassistant.components.sfr_box.*
homeassistant.components.shelly.*
homeassistant.components.shopping_list.*
homeassistant.components.simplepush.*
homeassistant.components.simplisafe.*
homeassistant.components.siren.*
homeassistant.components.skybell.*
homeassistant.components.slack.*
homeassistant.components.sleepiq.*
@@ -330,6 +399,7 @@ homeassistant.components.steamist.*
homeassistant.components.stookalert.*
homeassistant.components.stream.*
homeassistant.components.streamlabswater.*
homeassistant.components.stt.*
homeassistant.components.suez_water.*
homeassistant.components.sun.*
homeassistant.components.surepetcare.*
@@ -338,6 +408,8 @@ homeassistant.components.switchbee.*
homeassistant.components.switchbot_cloud.*
homeassistant.components.switcher_kis.*
homeassistant.components.synology_dsm.*
homeassistant.components.system_health.*
homeassistant.components.system_log.*
homeassistant.components.systemmonitor.*
homeassistant.components.tag.*
homeassistant.components.tailscale.*
@@ -345,14 +417,22 @@ homeassistant.components.tailwind.*
homeassistant.components.tami4.*
homeassistant.components.tautulli.*
homeassistant.components.tcp.*
homeassistant.components.technove.*
homeassistant.components.tedee.*
homeassistant.components.text.*
homeassistant.components.threshold.*
homeassistant.components.tibber.*
homeassistant.components.tile.*
homeassistant.components.tilt_ble.*
homeassistant.components.time.*
homeassistant.components.time_date.*
homeassistant.components.timer.*
homeassistant.components.tod.*
homeassistant.components.todo.*
homeassistant.components.tolo.*
homeassistant.components.tplink.*
homeassistant.components.tplink_omada.*
homeassistant.components.trace.*
homeassistant.components.tractive.*
homeassistant.components.tradfri.*
homeassistant.components.trafikverket_camera.*
@@ -376,10 +456,13 @@ homeassistant.components.valve.*
homeassistant.components.velbus.*
homeassistant.components.vlc_telnet.*
homeassistant.components.wake_on_lan.*
homeassistant.components.wake_word.*
homeassistant.components.wallbox.*
homeassistant.components.waqi.*
homeassistant.components.water_heater.*
homeassistant.components.watttime.*
homeassistant.components.weather.*
homeassistant.components.webhook.*
homeassistant.components.webostv.*
homeassistant.components.websocket_api.*
homeassistant.components.wemo.*
@@ -388,8 +471,10 @@ homeassistant.components.withings.*
homeassistant.components.wiz.*
homeassistant.components.wled.*
homeassistant.components.worldclock.*
homeassistant.components.xiaomi_ble.*
homeassistant.components.yale_smart_alarm.*
homeassistant.components.yalexs_ble.*
homeassistant.components.youtube.*
homeassistant.components.zeroconf.*
homeassistant.components.zodiac.*
homeassistant.components.zone.*
+14
View File
@@ -157,6 +157,20 @@
"kind": "build",
"isDefault": true
}
},
{
"label": "Install integration requirements",
"detail": "Install all requirements of a given integration.",
"type": "shell",
"command": "${command:python.interpreterPath} -m script.install_integration_requirements ${input:integrationName}",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new"
}
}
],
"inputs": [
+84 -41
View File
@@ -45,12 +45,14 @@ build.json @home-assistant/supervisor
/tests/components/airnow/ @asymworks
/homeassistant/components/airq/ @Sibgatulin @dl2080
/tests/components/airq/ @Sibgatulin @dl2080
/homeassistant/components/airthings/ @danielhiversen
/tests/components/airthings/ @danielhiversen
/homeassistant/components/airthings/ @danielhiversen @LaStrada
/tests/components/airthings/ @danielhiversen @LaStrada
/homeassistant/components/airthings_ble/ @vincegio @LaStrada
/tests/components/airthings_ble/ @vincegio @LaStrada
/homeassistant/components/airtouch4/ @samsinnamon
/tests/components/airtouch4/ @samsinnamon
/homeassistant/components/airtouch5/ @danzel
/tests/components/airtouch5/ @danzel
/homeassistant/components/airvisual/ @bachya
/tests/components/airvisual/ @bachya
/homeassistant/components/airvisual_pro/ @bachya
@@ -76,6 +78,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/amcrest/ @flacjacket
/homeassistant/components/analytics/ @home-assistant/core @ludeeus
/tests/components/analytics/ @home-assistant/core @ludeeus
/homeassistant/components/analytics_insights/ @joostlek
/tests/components/analytics_insights/ @joostlek
/homeassistant/components/android_ip_webcam/ @engrbm87
/tests/components/android_ip_webcam/ @engrbm87
/homeassistant/components/androidtv/ @JeffLIrion @ollo69
@@ -100,6 +104,8 @@ build.json @home-assistant/supervisor
/tests/components/application_credentials/ @home-assistant/core
/homeassistant/components/apprise/ @caronc
/tests/components/apprise/ @caronc
/homeassistant/components/aprilaire/ @chamberlain2007
/tests/components/aprilaire/ @chamberlain2007
/homeassistant/components/aprs/ @PhilRW
/tests/components/aprs/ @PhilRW
/homeassistant/components/aranet/ @aschmitz @thecode
@@ -145,14 +151,16 @@ build.json @home-assistant/supervisor
/tests/components/baf/ @bdraco @jfroy
/homeassistant/components/balboa/ @garbled1 @natekspencer
/tests/components/balboa/ @garbled1 @natekspencer
/homeassistant/components/bang_olufsen/ @mj23000
/tests/components/bang_olufsen/ @mj23000
/homeassistant/components/bayesian/ @HarvsG
/tests/components/bayesian/ @HarvsG
/homeassistant/components/beewi_smartclim/ @alemuro
/homeassistant/components/binary_sensor/ @home-assistant/core
/tests/components/binary_sensor/ @home-assistant/core
/homeassistant/components/bizkaibus/ @UgaitzEtxebarria
/homeassistant/components/blebox/ @bbx-a @riokuu
/tests/components/blebox/ @bbx-a @riokuu
/homeassistant/components/blebox/ @bbx-a @riokuu @swistakm
/tests/components/blebox/ @bbx-a @riokuu @swistakm
/homeassistant/components/blink/ @fronzbot @mkmer
/tests/components/blink/ @fronzbot @mkmer
/homeassistant/components/blue_current/ @Floris272 @gleeuwen
@@ -174,6 +182,8 @@ build.json @home-assistant/supervisor
/tests/components/bosch_shc/ @tschamm
/homeassistant/components/braviatv/ @bieniu @Drafteed
/tests/components/braviatv/ @bieniu @Drafteed
/homeassistant/components/bring/ @miaucl @tr4nt0r
/tests/components/bring/ @miaucl @tr4nt0r
/homeassistant/components/broadlink/ @danielhiversen @felipediel @L-I-Am @eifinger
/tests/components/broadlink/ @danielhiversen @felipediel @L-I-Am @eifinger
/homeassistant/components/brother/ @bieniu
@@ -317,13 +327,12 @@ build.json @home-assistant/supervisor
/tests/components/eafm/ @Jc2k
/homeassistant/components/easyenergy/ @klaasnicolaas
/tests/components/easyenergy/ @klaasnicolaas
/homeassistant/components/ecobee/ @marcolivierarsenault
/tests/components/ecobee/ @marcolivierarsenault
/homeassistant/components/ecoforest/ @pjanuario
/tests/components/ecoforest/ @pjanuario
/homeassistant/components/econet/ @w1ll1am23
/tests/components/econet/ @w1ll1am23
/homeassistant/components/ecovacs/ @OverloadUT @mib1185
/homeassistant/components/ecovacs/ @OverloadUT @mib1185 @edenhaus @Augar
/tests/components/ecovacs/ @OverloadUT @mib1185 @edenhaus @Augar
/homeassistant/components/ecowitt/ @pvizeli
/tests/components/ecowitt/ @pvizeli
/homeassistant/components/efergy/ @tkdrob
@@ -340,6 +349,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/elmax/ @albertogeniola
/tests/components/elmax/ @albertogeniola
/homeassistant/components/elv/ @majuss
/homeassistant/components/elvia/ @ludeeus
/tests/components/elvia/ @ludeeus
/homeassistant/components/emby/ @mezz64
/homeassistant/components/emoncms/ @borpin
/homeassistant/components/emonitor/ @bdraco
@@ -361,6 +372,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/environment_canada/ @gwww @michaeldavie
/tests/components/environment_canada/ @gwww @michaeldavie
/homeassistant/components/ephember/ @ttroy50
/homeassistant/components/epion/ @lhgravendeel
/tests/components/epion/ @lhgravendeel
/homeassistant/components/epson/ @pszafer
/tests/components/epson/ @pszafer
/homeassistant/components/epsonworkforce/ @ThaStealth
@@ -494,7 +507,10 @@ build.json @home-assistant/supervisor
/tests/components/google_travel_time/ @eifinger
/homeassistant/components/govee_ble/ @bdraco @PierreAronnax
/tests/components/govee_ble/ @bdraco @PierreAronnax
/homeassistant/components/gpsd/ @fabaff
/homeassistant/components/govee_light_local/ @Galorhallen
/tests/components/govee_light_local/ @Galorhallen
/homeassistant/components/gpsd/ @fabaff @jrieger
/tests/components/gpsd/ @fabaff @jrieger
/homeassistant/components/gree/ @cmroche
/tests/components/gree/ @cmroche
/homeassistant/components/greeneye_monitor/ @jkeljo
@@ -528,14 +544,14 @@ build.json @home-assistant/supervisor
/tests/components/history/ @home-assistant/core
/homeassistant/components/hive/ @Rendili @KJonline
/tests/components/hive/ @Rendili @KJonline
/homeassistant/components/hko/ @MisterCommand
/tests/components/hko/ @MisterCommand
/homeassistant/components/hlk_sw16/ @jameshilliard
/tests/components/hlk_sw16/ @jameshilliard
/homeassistant/components/holiday/ @jrieger
/tests/components/holiday/ @jrieger
/homeassistant/components/holiday/ @jrieger @gjohansson-ST
/tests/components/holiday/ @jrieger @gjohansson-ST
/homeassistant/components/home_connect/ @DavidMStraub
/tests/components/home_connect/ @DavidMStraub
/homeassistant/components/home_plus_control/ @chemaaa
/tests/components/home_plus_control/ @chemaaa
/homeassistant/components/homeassistant/ @home-assistant/core
/tests/components/homeassistant/ @home-assistant/core
/homeassistant/components/homeassistant_alerts/ @home-assistant/core
@@ -570,6 +586,10 @@ build.json @home-assistant/supervisor
/tests/components/humidifier/ @home-assistant/core @Shulyaka
/homeassistant/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/tests/components/hunterdouglas_powerview/ @bdraco @kingy444 @trullock
/homeassistant/components/husqvarna_automower/ @Thomas55555
/tests/components/husqvarna_automower/ @Thomas55555
/homeassistant/components/huum/ @frwickst
/tests/components/huum/ @frwickst
/homeassistant/components/hvv_departures/ @vigonotion
/tests/components/hvv_departures/ @vigonotion
/homeassistant/components/hydrawise/ @dknowles2 @ptcryan
@@ -649,12 +669,10 @@ build.json @home-assistant/supervisor
/tests/components/jellyfin/ @j-stienstra @ctalkington
/homeassistant/components/jewish_calendar/ @tsvi
/tests/components/jewish_calendar/ @tsvi
/homeassistant/components/juicenet/ @jesserockz
/tests/components/juicenet/ @jesserockz
/homeassistant/components/justnimbus/ @kvanzuijlen
/tests/components/justnimbus/ @kvanzuijlen
/homeassistant/components/jvc_projector/ @SteveEasley
/tests/components/jvc_projector/ @SteveEasley
/homeassistant/components/jvc_projector/ @SteveEasley @msavazzi
/tests/components/jvc_projector/ @SteveEasley @msavazzi
/homeassistant/components/kaiterra/ @Michsior14
/homeassistant/components/kaleidescape/ @SteveEasley
/tests/components/kaleidescape/ @SteveEasley
@@ -685,6 +703,8 @@ build.json @home-assistant/supervisor
/tests/components/kulersky/ @emlove
/homeassistant/components/lacrosse_view/ @IceBotYT
/tests/components/lacrosse_view/ @IceBotYT
/homeassistant/components/lamarzocco/ @zweckj
/tests/components/lamarzocco/ @zweckj
/homeassistant/components/lametric/ @robbiet480 @frenck @bachya
/tests/components/lametric/ @robbiet480 @frenck @bachya
/homeassistant/components/landisgyr_heat_meter/ @vpathuis
@@ -701,13 +721,13 @@ build.json @home-assistant/supervisor
/tests/components/lcn/ @alengwenus
/homeassistant/components/ld2410_ble/ @930913
/tests/components/ld2410_ble/ @930913
/homeassistant/components/leaone/ @bdraco
/tests/components/leaone/ @bdraco
/homeassistant/components/led_ble/ @bdraco
/tests/components/led_ble/ @bdraco
/homeassistant/components/lg_netcast/ @Drafteed
/homeassistant/components/lidarr/ @tkdrob
/tests/components/lidarr/ @tkdrob
/homeassistant/components/life360/ @pnbruckner
/tests/components/life360/ @pnbruckner
/homeassistant/components/light/ @home-assistant/core
/tests/components/light/ @home-assistant/core
/homeassistant/components/linear_garage_door/ @IceBotYT
@@ -744,10 +764,12 @@ build.json @home-assistant/supervisor
/homeassistant/components/luci/ @mzdrale
/homeassistant/components/luftdaten/ @fabaff @frenck
/tests/components/luftdaten/ @fabaff @frenck
/homeassistant/components/lupusec/ @majuss
/homeassistant/components/lutron/ @cdheiser
/homeassistant/components/lutron_caseta/ @swails @bdraco @danaues
/tests/components/lutron_caseta/ @swails @bdraco @danaues
/homeassistant/components/lupusec/ @majuss @suaveolent
/tests/components/lupusec/ @majuss @suaveolent
/homeassistant/components/lutron/ @cdheiser @wilburCForce
/tests/components/lutron/ @cdheiser @wilburCForce
/homeassistant/components/lutron_caseta/ @swails @bdraco @danaues @eclair4151
/tests/components/lutron_caseta/ @swails @bdraco @danaues @eclair4151
/homeassistant/components/lyric/ @timmo001
/tests/components/lyric/ @timmo001
/homeassistant/components/mastodon/ @fabaff
@@ -766,8 +788,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/media_source/ @hunterjm
/tests/components/media_source/ @hunterjm
/homeassistant/components/mediaroom/ @dgomes
/homeassistant/components/melcloud/ @vilppuvuorinen
/tests/components/melcloud/ @vilppuvuorinen
/homeassistant/components/melissa/ @kennedyshead
/tests/components/melissa/ @kennedyshead
/homeassistant/components/melnor/ @vanstinator
@@ -783,6 +803,8 @@ build.json @home-assistant/supervisor
/tests/components/meteoclimatic/ @adrianmo
/homeassistant/components/metoffice/ @MrHarcombe @avee87
/tests/components/metoffice/ @MrHarcombe @avee87
/homeassistant/components/microbees/ @microBeesTech
/tests/components/microbees/ @microBeesTech
/homeassistant/components/mikrotik/ @engrbm87
/tests/components/mikrotik/ @engrbm87
/homeassistant/components/mill/ @danielhiversen
@@ -830,6 +852,8 @@ build.json @home-assistant/supervisor
/tests/components/mysensors/ @MartinHjelmare @functionpointer
/homeassistant/components/mystrom/ @fabaff
/tests/components/mystrom/ @fabaff
/homeassistant/components/myuplink/ @pajzo @astrandb
/tests/components/myuplink/ @pajzo @astrandb
/homeassistant/components/nam/ @bieniu
/tests/components/nam/ @bieniu
/homeassistant/components/nanoleaf/ @milanmeu
@@ -947,8 +971,8 @@ build.json @home-assistant/supervisor
/tests/components/otbr/ @home-assistant/core
/homeassistant/components/ourgroceries/ @OnFreund
/tests/components/ourgroceries/ @OnFreund
/homeassistant/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev
/tests/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev
/homeassistant/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev @tronix117
/tests/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev @tronix117
/homeassistant/components/ovo_energy/ @timmo001
/tests/components/ovo_energy/ @timmo001
/homeassistant/components/p1_monitor/ @klaasnicolaas
@@ -1034,8 +1058,10 @@ build.json @home-assistant/supervisor
/homeassistant/components/qvr_pro/ @oblogic7
/homeassistant/components/qwikswitch/ @kellerza
/tests/components/qwikswitch/ @kellerza
/homeassistant/components/rachio/ @bdraco
/tests/components/rachio/ @bdraco
/homeassistant/components/rabbitair/ @rabbit-air
/tests/components/rabbitair/ @rabbit-air
/homeassistant/components/rachio/ @bdraco @rfverbruggen
/tests/components/rachio/ @bdraco @rfverbruggen
/homeassistant/components/radarr/ @tkdrob
/tests/components/radarr/ @tkdrob
/homeassistant/components/radio_browser/ @frenck
@@ -1047,6 +1073,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/raincloud/ @vanstinator
/homeassistant/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
/tests/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
/homeassistant/components/rainforest_raven/ @cottsay
/tests/components/rainforest_raven/ @cottsay
/homeassistant/components/rainmachine/ @bachya
/tests/components/rainmachine/ @bachya
/homeassistant/components/random/ @fabaff
@@ -1099,8 +1127,10 @@ build.json @home-assistant/supervisor
/tests/components/roborock/ @humbertogontijo @Lash-L
/homeassistant/components/roku/ @ctalkington
/tests/components/roku/ @ctalkington
/homeassistant/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1
/tests/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1
/homeassistant/components/romy/ @xeniter
/tests/components/romy/ @xeniter
/homeassistant/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1 @Orhideous
/tests/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1 @Orhideous
/homeassistant/components/roon/ @pavoni
/tests/components/roon/ @pavoni
/homeassistant/components/rpi_power/ @shenxn @swetoast
@@ -1299,8 +1329,8 @@ build.json @home-assistant/supervisor
/tests/components/system_bridge/ @timmo001
/homeassistant/components/systemmonitor/ @gjohansson-ST
/tests/components/systemmonitor/ @gjohansson-ST
/homeassistant/components/tado/ @michaelarnauts @chiefdragon @erwindouna
/tests/components/tado/ @michaelarnauts @chiefdragon @erwindouna
/homeassistant/components/tado/ @chiefdragon @erwindouna
/tests/components/tado/ @chiefdragon @erwindouna
/homeassistant/components/tag/ @balloob @dmulcahey
/tests/components/tag/ @balloob @dmulcahey
/homeassistant/components/tailscale/ @frenck
@@ -1309,19 +1339,25 @@ build.json @home-assistant/supervisor
/tests/components/tailwind/ @frenck
/homeassistant/components/tami4/ @Guy293
/tests/components/tami4/ @Guy293
/homeassistant/components/tankerkoenig/ @guillempages @mib1185
/tests/components/tankerkoenig/ @guillempages @mib1185
/homeassistant/components/tankerkoenig/ @guillempages @mib1185 @jpbede
/tests/components/tankerkoenig/ @guillempages @mib1185 @jpbede
/homeassistant/components/tapsaff/ @bazwilliams
/homeassistant/components/tasmota/ @emontnemery
/tests/components/tasmota/ @emontnemery
/homeassistant/components/tautulli/ @ludeeus @tkdrob
/tests/components/tautulli/ @ludeeus @tkdrob
/homeassistant/components/technove/ @Moustachauve
/tests/components/technove/ @Moustachauve
/homeassistant/components/tedee/ @patrickhilker @zweckj
/tests/components/tedee/ @patrickhilker @zweckj
/homeassistant/components/tellduslive/ @fredrike
/tests/components/tellduslive/ @fredrike
/homeassistant/components/template/ @PhracturedBlue @tetienne @home-assistant/core
/tests/components/template/ @PhracturedBlue @tetienne @home-assistant/core
/homeassistant/components/tesla_wall_connector/ @einarhauks
/tests/components/tesla_wall_connector/ @einarhauks
/homeassistant/components/teslemetry/ @Bre77
/tests/components/teslemetry/ @Bre77
/homeassistant/components/tessie/ @Bre77
/tests/components/tessie/ @Bre77
/homeassistant/components/text/ @home-assistant/core
@@ -1329,8 +1365,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/tfiac/ @fredrike @mellado
/homeassistant/components/thermobeacon/ @bdraco
/tests/components/thermobeacon/ @bdraco
/homeassistant/components/thermopro/ @bdraco
/tests/components/thermopro/ @bdraco
/homeassistant/components/thermopro/ @bdraco @h3ss
/tests/components/thermopro/ @bdraco @h3ss
/homeassistant/components/thethingsnetwork/ @fabaff
/homeassistant/components/thread/ @home-assistant/core
/tests/components/thread/ @home-assistant/core
@@ -1355,12 +1391,14 @@ build.json @home-assistant/supervisor
/tests/components/tomorrowio/ @raman325 @lymanepp
/homeassistant/components/totalconnect/ @austinmroczek
/tests/components/totalconnect/ @austinmroczek
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/tests/components/tplink/ @rytilahti @thegardenmonkey @bdraco
/homeassistant/components/tplink/ @rytilahti @thegardenmonkey @bdraco @sdb9696
/tests/components/tplink/ @rytilahti @thegardenmonkey @bdraco @sdb9696
/homeassistant/components/tplink_omada/ @MarkGodwin
/tests/components/tplink_omada/ @MarkGodwin
/homeassistant/components/traccar/ @ludeeus
/tests/components/traccar/ @ludeeus
/homeassistant/components/traccar_server/ @ludeeus
/tests/components/traccar_server/ @ludeeus
/homeassistant/components/trace/ @home-assistant/core
/tests/components/trace/ @home-assistant/core
/homeassistant/components/tractive/ @Danielhiversen @zhulik @bieniu
@@ -1418,13 +1456,14 @@ build.json @home-assistant/supervisor
/tests/components/v2c/ @dgomes
/homeassistant/components/vacuum/ @home-assistant/core
/tests/components/vacuum/ @home-assistant/core
/homeassistant/components/vallox/ @andre-richter @slovdahl @viiru-
/tests/components/vallox/ @andre-richter @slovdahl @viiru-
/homeassistant/components/vallox/ @andre-richter @slovdahl @viiru- @yozik04
/tests/components/vallox/ @andre-richter @slovdahl @viiru- @yozik04
/homeassistant/components/valve/ @home-assistant/core
/tests/components/valve/ @home-assistant/core
/homeassistant/components/velbus/ @Cereal2nd @brefra
/tests/components/velbus/ @Cereal2nd @brefra
/homeassistant/components/velux/ @Julius2342
/homeassistant/components/velux/ @Julius2342 @DeerMaximum
/tests/components/velux/ @Julius2342 @DeerMaximum
/homeassistant/components/venstar/ @garbled1 @jhollowe
/tests/components/venstar/ @garbled1 @jhollowe
/homeassistant/components/versasense/ @imstevenxyz
@@ -1470,10 +1509,14 @@ build.json @home-assistant/supervisor
/tests/components/weather/ @home-assistant/core
/homeassistant/components/weatherflow/ @natekspencer @jeeftor
/tests/components/weatherflow/ @natekspencer @jeeftor
/homeassistant/components/weatherflow_cloud/ @jeeftor
/tests/components/weatherflow_cloud/ @jeeftor
/homeassistant/components/weatherkit/ @tjhorner
/tests/components/weatherkit/ @tjhorner
/homeassistant/components/webhook/ @home-assistant/core
/tests/components/webhook/ @home-assistant/core
/homeassistant/components/webmin/ @autinerd
/tests/components/webmin/ @autinerd
/homeassistant/components/webostv/ @thecode
/tests/components/webostv/ @thecode
/homeassistant/components/websocket_api/ @home-assistant/core
+9 -2
View File
@@ -28,12 +28,19 @@ RUN \
&& if ls homeassistant/home_assistant_intents*.whl 1> /dev/null 2>&1; then \
pip3 install homeassistant/home_assistant_intents-*.whl; \
fi \
&& \
&& if [ "${BUILD_ARCH}" = "i386" ]; then \
LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \
MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
linux32 pip3 install \
--only-binary=:all: \
-r homeassistant/requirements_all.txt; \
else \
LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \
MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
pip3 install \
--only-binary=:all: \
-r homeassistant/requirements_all.txt
-r homeassistant/requirements_all.txt; \
fi
## Setup Home Assistant Core
COPY . homeassistant/
+1
View File
@@ -16,6 +16,7 @@ RUN \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
# Additional library needed by some tests and accordingly by VScode Tests Discovery
bluez \
ffmpeg \
libudev-dev \
libavformat-dev \
libavcodec-dev \
+3 -3
View File
@@ -22,7 +22,7 @@ of a component, check the `Home Assistant help section <https://home-assistant.i
.. |Chat Status| image:: https://img.shields.io/discord/330944238910963714.svg
:target: https://www.home-assistant.io/join-chat/
.. |screenshot-states| image:: https://raw.githubusercontent.com/home-assistant/core/master/docs/screenshots.png
.. |screenshot-states| image:: https://raw.githubusercontent.com/home-assistant/core/dev/.github/assets/screenshot-states.png
:target: https://demo.home-assistant.io
.. |screenshot-integrations| image:: https://raw.githubusercontent.com/home-assistant/core/dev/docs/screenshot-integrations.png
:target: https://home-assistant.io/integrations/
.. |screenshot-integrations| image:: https://raw.githubusercontent.com/home-assistant/core/dev/.github/assets/screenshot-integrations.png
:target: https://home-assistant.io/integrations/
+5 -5
View File
@@ -1,10 +1,10 @@
image: ghcr.io/home-assistant/{arch}-homeassistant
build_from:
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2023.10.1
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2023.10.1
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2023.10.1
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2023.10.1
i386: ghcr.io/home-assistant/i386-homeassistant-base:2023.10.1
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2024.02.1
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2024.02.1
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2024.02.1
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2024.02.1
i386: ghcr.io/home-assistant/i386-homeassistant-base:2024.02.1
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io
+91 -28
View File
@@ -4,18 +4,27 @@ from __future__ import annotations
import asyncio
from collections import OrderedDict
from collections.abc import Mapping
from datetime import timedelta
from datetime import datetime, timedelta
from functools import partial
import time
from typing import Any, cast
import jwt
from homeassistant import data_entry_flow
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
from homeassistant.core import (
CALLBACK_TYPE,
HassJob,
HassJobType,
HomeAssistant,
callback,
)
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.event import async_track_point_in_utc_time
from homeassistant.util import dt as dt_util
from . import auth_store, jwt_wrapper, models
from .const import ACCESS_TOKEN_EXPIRATION, GROUP_ID_ADMIN
from .const import ACCESS_TOKEN_EXPIRATION, GROUP_ID_ADMIN, REFRESH_TOKEN_EXPIRATION
from .mfa_modules import MultiFactorAuthModule, auth_mfa_module_from_config
from .providers import AuthProvider, LoginFlow, auth_provider_from_config
@@ -47,6 +56,7 @@ async def auth_manager_from_config(
mfa modules exist in configs.
"""
store = auth_store.AuthStore(hass)
await store.async_load()
if provider_configs:
providers = await asyncio.gather(
*(
@@ -74,6 +84,7 @@ async def auth_manager_from_config(
module_hash[module.id] = module
manager = AuthManager(hass, store, provider_hash, module_hash)
manager.async_setup()
return manager
@@ -157,7 +168,22 @@ class AuthManager:
self._providers = providers
self._mfa_modules = mfa_modules
self.login_flow = AuthManagerFlowManager(hass, self)
self._revoke_callbacks: dict[str, list[CALLBACK_TYPE]] = {}
self._revoke_callbacks: dict[str, set[CALLBACK_TYPE]] = {}
self._expire_callback: CALLBACK_TYPE | None = None
self._remove_expired_job = HassJob(
self._async_remove_expired_refresh_tokens, job_type=HassJobType.Callback
)
@callback
def async_setup(self) -> None:
"""Set up the auth manager."""
hass = self.hass
hass.async_add_shutdown_job(
HassJob(
self._async_cancel_expiration_schedule, job_type=HassJobType.Callback
)
)
self._async_track_next_refresh_token_expiration()
@property
def auth_providers(self) -> list[AuthProvider]:
@@ -423,6 +449,11 @@ class AuthManager:
else:
token_type = models.TOKEN_TYPE_NORMAL
if token_type is models.TOKEN_TYPE_NORMAL:
expire_at = time.time() + REFRESH_TOKEN_EXPIRATION
else:
expire_at = None
if user.system_generated != (token_type == models.TOKEN_TYPE_SYSTEM):
raise ValueError(
"System generated users can only have system type refresh tokens"
@@ -454,48 +485,81 @@ class AuthManager:
client_icon,
token_type,
access_token_expiration,
expire_at,
credential,
)
async def async_get_refresh_token(
self, token_id: str
) -> models.RefreshToken | None:
@callback
def async_get_refresh_token(self, token_id: str) -> models.RefreshToken | None:
"""Get refresh token by id."""
return await self._store.async_get_refresh_token(token_id)
return self._store.async_get_refresh_token(token_id)
async def async_get_refresh_token_by_token(
@callback
def async_get_refresh_token_by_token(
self, token: str
) -> models.RefreshToken | None:
"""Get refresh token by token."""
return await self._store.async_get_refresh_token_by_token(token)
return self._store.async_get_refresh_token_by_token(token)
async def async_remove_refresh_token(
self, refresh_token: models.RefreshToken
) -> None:
@callback
def async_remove_refresh_token(self, refresh_token: models.RefreshToken) -> None:
"""Delete a refresh token."""
await self._store.async_remove_refresh_token(refresh_token)
self._store.async_remove_refresh_token(refresh_token)
callbacks = self._revoke_callbacks.pop(refresh_token.id, [])
callbacks = self._revoke_callbacks.pop(refresh_token.id, ())
for revoke_callback in callbacks:
revoke_callback()
@callback
def _async_remove_expired_refresh_tokens(self, _: datetime | None = None) -> None:
"""Remove expired refresh tokens."""
now = time.time()
for token in self._store.async_get_refresh_tokens():
if (expire_at := token.expire_at) is not None and expire_at <= now:
self.async_remove_refresh_token(token)
self._async_track_next_refresh_token_expiration()
@callback
def _async_track_next_refresh_token_expiration(self) -> None:
"""Initialise all token expiration scheduled tasks."""
next_expiration = time.time() + REFRESH_TOKEN_EXPIRATION
for token in self._store.async_get_refresh_tokens():
if (
expire_at := token.expire_at
) is not None and expire_at < next_expiration:
next_expiration = expire_at
self._expire_callback = async_track_point_in_utc_time(
self.hass,
self._remove_expired_job,
dt_util.utc_from_timestamp(next_expiration),
)
@callback
def _async_cancel_expiration_schedule(self) -> None:
"""Cancel tracking of expired refresh tokens."""
if self._expire_callback:
self._expire_callback()
self._expire_callback = None
@callback
def _async_unregister(
self, callbacks: set[CALLBACK_TYPE], callback_: CALLBACK_TYPE
) -> None:
"""Unregister a callback."""
callbacks.remove(callback_)
@callback
def async_register_revoke_token_callback(
self, refresh_token_id: str, revoke_callback: CALLBACK_TYPE
) -> CALLBACK_TYPE:
"""Register a callback to be called when the refresh token id is revoked."""
if refresh_token_id not in self._revoke_callbacks:
self._revoke_callbacks[refresh_token_id] = []
self._revoke_callbacks[refresh_token_id] = set()
callbacks = self._revoke_callbacks[refresh_token_id]
callbacks.append(revoke_callback)
@callback
def unregister() -> None:
if revoke_callback in callbacks:
callbacks.remove(revoke_callback)
return unregister
callbacks.add(revoke_callback)
return partial(self._async_unregister, callbacks, revoke_callback)
@callback
def async_create_access_token(
@@ -552,16 +616,15 @@ class AuthManager:
if provider := self._async_resolve_provider(refresh_token):
provider.async_validate_refresh_token(refresh_token, remote_ip)
async def async_validate_access_token(
self, token: str
) -> models.RefreshToken | None:
@callback
def async_validate_access_token(self, token: str) -> models.RefreshToken | None:
"""Return refresh token if an access token is valid."""
try:
unverif_claims = jwt_wrapper.unverified_hs256_token_decode(token)
except jwt.InvalidTokenError:
return None
refresh_token = await self.async_get_refresh_token(
refresh_token = self.async_get_refresh_token(
cast(str, unverif_claims.get("iss"))
)
+51 -81
View File
@@ -1,10 +1,9 @@
"""Storage for auth models."""
from __future__ import annotations
import asyncio
from collections import OrderedDict
from datetime import timedelta
import hmac
import itertools
from logging import getLogger
from typing import Any
@@ -19,6 +18,7 @@ from .const import (
GROUP_ID_ADMIN,
GROUP_ID_READ_ONLY,
GROUP_ID_USER,
REFRESH_TOKEN_EXPIRATION,
)
from .permissions import system_policies
from .permissions.models import PermissionLookup
@@ -43,44 +43,28 @@ class AuthStore:
def __init__(self, hass: HomeAssistant) -> None:
"""Initialize the auth store."""
self.hass = hass
self._users: dict[str, models.User] | None = None
self._groups: dict[str, models.Group] | None = None
self._perm_lookup: PermissionLookup | None = None
self._loaded = False
self._users: dict[str, models.User] = None # type: ignore[assignment]
self._groups: dict[str, models.Group] = None # type: ignore[assignment]
self._perm_lookup: PermissionLookup = None # type: ignore[assignment]
self._store = Store[dict[str, list[dict[str, Any]]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._lock = asyncio.Lock()
async def async_get_groups(self) -> list[models.Group]:
"""Retrieve all users."""
if self._groups is None:
await self._async_load()
assert self._groups is not None
return list(self._groups.values())
async def async_get_group(self, group_id: str) -> models.Group | None:
"""Retrieve all users."""
if self._groups is None:
await self._async_load()
assert self._groups is not None
return self._groups.get(group_id)
async def async_get_users(self) -> list[models.User]:
"""Retrieve all users."""
if self._users is None:
await self._async_load()
assert self._users is not None
return list(self._users.values())
async def async_get_user(self, user_id: str) -> models.User | None:
"""Retrieve a user by id."""
if self._users is None:
await self._async_load()
assert self._users is not None
return self._users.get(user_id)
async def async_create_user(
@@ -94,12 +78,6 @@ class AuthStore:
local_only: bool | None = None,
) -> models.User:
"""Create a new user."""
if self._users is None:
await self._async_load()
assert self._users is not None
assert self._groups is not None
groups = []
for group_id in group_ids or []:
if (group := self._groups.get(group_id)) is None:
@@ -145,10 +123,6 @@ class AuthStore:
async def async_remove_user(self, user: models.User) -> None:
"""Remove a user."""
if self._users is None:
await self._async_load()
assert self._users is not None
self._users.pop(user.id)
self._async_schedule_save()
@@ -161,8 +135,6 @@ class AuthStore:
local_only: bool | None = None,
) -> None:
"""Update a user."""
assert self._groups is not None
if group_ids is not None:
groups = []
for grid in group_ids:
@@ -171,7 +143,6 @@ class AuthStore:
groups.append(group)
user.groups = groups
user.invalidate_permission_cache()
for attr_name, value in (
("name", name),
@@ -195,10 +166,6 @@ class AuthStore:
async def async_remove_credentials(self, credentials: models.Credentials) -> None:
"""Remove credentials."""
if self._users is None:
await self._async_load()
assert self._users is not None
for user in self._users.values():
found = None
@@ -221,6 +188,7 @@ class AuthStore:
client_icon: str | None = None,
token_type: str = models.TOKEN_TYPE_NORMAL,
access_token_expiration: timedelta = ACCESS_TOKEN_EXPIRATION,
expire_at: float | None = None,
credential: models.Credentials | None = None,
) -> models.RefreshToken:
"""Create a new token for a user."""
@@ -229,6 +197,7 @@ class AuthStore:
"client_id": client_id,
"token_type": token_type,
"access_token_expiration": access_token_expiration,
"expire_at": expire_at,
"credential": credential,
}
if client_name:
@@ -242,27 +211,17 @@ class AuthStore:
self._async_schedule_save()
return refresh_token
async def async_remove_refresh_token(
self, refresh_token: models.RefreshToken
) -> None:
@callback
def async_remove_refresh_token(self, refresh_token: models.RefreshToken) -> None:
"""Remove a refresh token."""
if self._users is None:
await self._async_load()
assert self._users is not None
for user in self._users.values():
if user.refresh_tokens.pop(refresh_token.id, None):
self._async_schedule_save()
break
async def async_get_refresh_token(
self, token_id: str
) -> models.RefreshToken | None:
@callback
def async_get_refresh_token(self, token_id: str) -> models.RefreshToken | None:
"""Get refresh token by id."""
if self._users is None:
await self._async_load()
assert self._users is not None
for user in self._users.values():
refresh_token = user.refresh_tokens.get(token_id)
if refresh_token is not None:
@@ -270,14 +229,11 @@ class AuthStore:
return None
async def async_get_refresh_token_by_token(
@callback
def async_get_refresh_token_by_token(
self, token: str
) -> models.RefreshToken | None:
"""Get refresh token by token."""
if self._users is None:
await self._async_load()
assert self._users is not None
found = None
for user in self._users.values():
@@ -287,6 +243,15 @@ class AuthStore:
return found
@callback
def async_get_refresh_tokens(self) -> list[models.RefreshToken]:
"""Get all refresh tokens."""
return list(
itertools.chain.from_iterable(
user.refresh_tokens.values() for user in self._users.values()
)
)
@callback
def async_log_refresh_token_usage(
self, refresh_token: models.RefreshToken, remote_ip: str | None = None
@@ -294,35 +259,34 @@ class AuthStore:
"""Update refresh token last used information."""
refresh_token.last_used_at = dt_util.utcnow()
refresh_token.last_used_ip = remote_ip
if refresh_token.expire_at:
refresh_token.expire_at = (
refresh_token.last_used_at.timestamp() + REFRESH_TOKEN_EXPIRATION
)
self._async_schedule_save()
async def _async_load(self) -> None:
async def async_load(self) -> None: # noqa: C901
"""Load the users."""
async with self._lock:
if self._users is not None:
return
await self._async_load_task()
if self._loaded:
raise RuntimeError("Auth storage is already loaded")
self._loaded = True
async def _async_load_task(self) -> None:
"""Load the users."""
dev_reg = dr.async_get(self.hass)
ent_reg = er.async_get(self.hass)
data = await self._store.async_load()
# Make sure that we're not overriding data if 2 loads happened at the
# same time
if self._users is not None:
return
perm_lookup = PermissionLookup(ent_reg, dev_reg)
self._perm_lookup = perm_lookup
self._perm_lookup = perm_lookup = PermissionLookup(ent_reg, dev_reg)
now_ts = dt_util.utcnow().timestamp()
if data is None or not isinstance(data, dict):
self._set_defaults()
return
users: dict[str, models.User] = OrderedDict()
groups: dict[str, models.Group] = OrderedDict()
credentials: dict[str, models.Credentials] = OrderedDict()
users: dict[str, models.User] = {}
groups: dict[str, models.Group] = {}
credentials: dict[str, models.Credentials] = {}
# Soft-migrating data as we load. We are going to make sure we have a
# read only group and an admin group. There are two states that we can
@@ -469,6 +433,14 @@ class AuthStore:
else:
last_used_at = None
if (
expire_at := rt_dict.get("expire_at")
) is None and token_type == models.TOKEN_TYPE_NORMAL:
if last_used_at:
expire_at = last_used_at.timestamp() + REFRESH_TOKEN_EXPIRATION
else:
expire_at = now_ts + REFRESH_TOKEN_EXPIRATION
token = models.RefreshToken(
id=rt_dict["id"],
user=users[rt_dict["user_id"]],
@@ -485,6 +457,7 @@ class AuthStore:
jwt_key=rt_dict["jwt_key"],
last_used_at=last_used_at,
last_used_ip=rt_dict.get("last_used_ip"),
expire_at=expire_at,
version=rt_dict.get("version"),
)
if "credential_id" in rt_dict:
@@ -494,20 +467,16 @@ class AuthStore:
self._groups = groups
self._users = users
self._async_schedule_save()
@callback
def _async_schedule_save(self) -> None:
"""Save users."""
if self._users is None:
return
self._store.async_delay_save(self._data_to_save, 1)
@callback
def _data_to_save(self) -> dict[str, list[dict[str, Any]]]:
"""Return the data to store."""
assert self._users is not None
assert self._groups is not None
users = [
{
"id": user.id,
@@ -564,6 +533,7 @@ class AuthStore:
if refresh_token.last_used_at
else None,
"last_used_ip": refresh_token.last_used_ip,
"expire_at": refresh_token.expire_at,
"credential_id": refresh_token.credential.id
if refresh_token.credential
else None,
@@ -582,9 +552,9 @@ class AuthStore:
def _set_defaults(self) -> None:
"""Set default values for auth store."""
self._users = OrderedDict()
self._users = {}
groups: dict[str, models.Group] = OrderedDict()
groups: dict[str, models.Group] = {}
admin_group = _system_admin_group()
groups[admin_group.id] = admin_group
user_group = _system_user_group()
+1
View File
@@ -3,6 +3,7 @@ from datetime import timedelta
ACCESS_TOKEN_EXPIRATION = timedelta(minutes=30)
MFA_SESSION_EXPIRATION = timedelta(minutes=5)
REFRESH_TOKEN_EXPIRATION = timedelta(days=90).total_seconds()
GROUP_ID_ADMIN = "system-admin"
GROUP_ID_USER = "system-users"
+1 -1
View File
@@ -152,7 +152,7 @@ class NotifyAuthModule(MultiFactorAuthModule):
"""Return list of notify services."""
unordered_services = set()
for service in self.hass.services.async_services().get("notify", {}):
for service in self.hass.services.async_services_for_domain("notify"):
if service not in self._exclude:
unordered_services.add(service)
+37 -28
View File
@@ -3,10 +3,12 @@ from __future__ import annotations
from datetime import datetime, timedelta
import secrets
from typing import NamedTuple
from typing import TYPE_CHECKING, Any, NamedTuple
import uuid
import attr
from attr import Attribute
from attr.setters import validate
from homeassistant.const import __version__
from homeassistant.util import dt as dt_util
@@ -14,6 +16,12 @@ from homeassistant.util import dt as dt_util
from . import permissions as perm_mdl
from .const import GROUP_ID_ADMIN
if TYPE_CHECKING:
from functools import cached_property
else:
from homeassistant.backports.functools import cached_property
TOKEN_TYPE_NORMAL = "normal"
TOKEN_TYPE_SYSTEM = "system"
TOKEN_TYPE_LONG_LIVED_ACCESS_TOKEN = "long_lived_access_token"
@@ -29,19 +37,27 @@ class Group:
system_generated: bool = attr.ib(default=False)
@attr.s(slots=True)
def _handle_permissions_change(self: User, user_attr: Attribute, new: Any) -> Any:
"""Handle a change to a permissions."""
self.invalidate_cache()
return validate(self, user_attr, new)
@attr.s(slots=False)
class User:
"""A user."""
name: str | None = attr.ib()
perm_lookup: perm_mdl.PermissionLookup = attr.ib(eq=False, order=False)
id: str = attr.ib(factory=lambda: uuid.uuid4().hex)
is_owner: bool = attr.ib(default=False)
is_active: bool = attr.ib(default=False)
is_owner: bool = attr.ib(default=False, on_setattr=_handle_permissions_change)
is_active: bool = attr.ib(default=False, on_setattr=_handle_permissions_change)
system_generated: bool = attr.ib(default=False)
local_only: bool = attr.ib(default=False)
groups: list[Group] = attr.ib(factory=list, eq=False, order=False)
groups: list[Group] = attr.ib(
factory=list, eq=False, order=False, on_setattr=_handle_permissions_change
)
# List of credentials of a user.
credentials: list[Credentials] = attr.ib(factory=list, eq=False, order=False)
@@ -51,40 +67,31 @@ class User:
factory=dict, eq=False, order=False
)
_permissions: perm_mdl.PolicyPermissions | None = attr.ib(
init=False,
eq=False,
order=False,
default=None,
)
@property
@cached_property
def permissions(self) -> perm_mdl.AbstractPermissions:
"""Return permissions object for user."""
if self.is_owner:
return perm_mdl.OwnerPermissions
if self._permissions is not None:
return self._permissions
self._permissions = perm_mdl.PolicyPermissions(
return perm_mdl.PolicyPermissions(
perm_mdl.merge_policies([group.policy for group in self.groups]),
self.perm_lookup,
)
return self._permissions
@property
@cached_property
def is_admin(self) -> bool:
"""Return if user is part of the admin group."""
if self.is_owner:
return True
return self.is_owner or (
self.is_active and any(gr.id == GROUP_ID_ADMIN for gr in self.groups)
)
return self.is_active and any(gr.id == GROUP_ID_ADMIN for gr in self.groups)
def invalidate_permission_cache(self) -> None:
"""Invalidate permission cache."""
self._permissions = None
def invalidate_cache(self) -> None:
"""Invalidate permission and is_admin cache."""
for attr_to_invalidate in ("permissions", "is_admin"):
# try is must more efficient than suppress
try: # noqa: SIM105
delattr(self, attr_to_invalidate)
except AttributeError:
pass
@attr.s(slots=True)
@@ -110,6 +117,8 @@ class RefreshToken:
last_used_at: datetime | None = attr.ib(default=None)
last_used_ip: str | None = attr.ib(default=None)
expire_at: float | None = attr.ib(default=None)
credential: Credentials | None = attr.ib(default=None)
version: str | None = attr.ib(default=__version__)
+272 -111
View File
@@ -3,9 +3,10 @@ from __future__ import annotations
import asyncio
import contextlib
from datetime import datetime, timedelta
from datetime import timedelta
import logging
import logging.handlers
from operator import itemgetter
import os
import platform
import sys
@@ -13,13 +14,28 @@ import threading
from time import monotonic
from typing import TYPE_CHECKING, Any
# Import cryptography early since import openssl is not thread-safe
# _frozen_importlib._DeadlockError: deadlock detected by _ModuleLock('cryptography.hazmat.backends.openssl.backend')
import cryptography.hazmat.backends.openssl.backend # noqa: F401
import voluptuous as vol
import yarl
from . import config as conf_util, config_entries, core, loader
from .components import http
from . import config as conf_util, config_entries, core, loader, requirements
# Pre-import config and lovelace which have no requirements here to avoid
# loading them at run time and blocking the event loop. We do this ahead
# of time so that we do not have to flag frontends deps with `import_executor`
# as it would create a thundering heard of executor jobs trying to import
# frontend deps at the same time.
from .components import (
api as api_pre_import, # noqa: F401
config as config_pre_import, # noqa: F401
http,
lovelace as lovelace_pre_import, # noqa: F401
)
from .const import (
FORMAT_DATETIME,
KEY_DATA_LOGGING as DATA_LOGGING,
REQUIRED_NEXT_PYTHON_HA_RELEASE,
REQUIRED_NEXT_PYTHON_VER,
SIGNAL_BOOTSTRAP_INTEGRATIONS,
@@ -31,22 +47,25 @@ from .helpers import (
device_registry,
entity,
entity_registry,
floor_registry,
issue_registry,
label_registry,
recorder,
restore_state,
template,
translation,
)
from .helpers.dispatcher import async_dispatcher_send
from .helpers.typing import ConfigType
from .setup import (
DATA_SETUP,
BASE_PLATFORMS,
DATA_SETUP_STARTED,
DATA_SETUP_TIME,
async_notify_setup_error,
async_set_domains_to_be_loaded,
async_setup_component,
)
from .util import dt as dt_util
from .util.async_ import create_eager_task
from .util.logging import async_activate_log_queue_handler
from .util.package import async_get_user_site, is_virtual_env
@@ -58,7 +77,6 @@ _LOGGER = logging.getLogger(__name__)
ERROR_LOG_FILENAME = "home-assistant.log"
# hass.data key for logging information.
DATA_LOGGING = "logging"
DATA_REGISTRIES_LOADED = "bootstrap_registries_loaded"
LOG_SLOW_STARTUP_INTERVAL = 60
@@ -106,6 +124,60 @@ STAGE_1_INTEGRATIONS = {
# Ensure supervisor is available
"hassio",
}
DEFAULT_INTEGRATIONS = {
# These integrations are set up unless recovery mode is activated.
#
# Integrations providing core functionality:
"application_credentials",
"backup",
"frontend",
"hardware",
"logger",
"network",
"system_health",
#
# Key-feature:
"automation",
"person",
"scene",
"script",
"tag",
"zone",
#
# Built-in helpers:
"counter",
"input_boolean",
"input_button",
"input_datetime",
"input_number",
"input_select",
"input_text",
"schedule",
"timer",
}
DEFAULT_INTEGRATIONS_RECOVERY_MODE = {
# These integrations are set up if recovery mode is activated.
"frontend",
}
DEFAULT_INTEGRATIONS_SUPERVISOR = {
# These integrations are set up if using the Supervisor
"hassio",
}
CRITICAL_INTEGRATIONS = {
# Recovery mode is activated if these integrations fail to set up
"frontend",
}
SETUP_ORDER = {
# Load logging as soon as possible
"logging": LOGGING_INTEGRATIONS,
# Setup frontend
"frontend": FRONTEND_INTEGRATIONS,
# Setup recorder
"recorder": RECORDER_INTEGRATIONS,
# Start up debuggers. Start these first in case they want to wait.
"debugger": DEBUGGER_INTEGRATIONS,
}
async def async_setup_hass(
@@ -165,14 +237,14 @@ async def async_setup_hass(
_LOGGER.warning("Unable to set up core integrations. Activating recovery mode")
recovery_mode = True
elif (
"frontend" in hass.data.get(DATA_SETUP, {})
and "frontend" not in hass.config.components
):
_LOGGER.warning("Detected that frontend did not load. Activating recovery mode")
elif any(domain not in hass.config.components for domain in CRITICAL_INTEGRATIONS):
_LOGGER.warning(
"Detected that %s did not load. Activating recovery mode",
",".join(CRITICAL_INTEGRATIONS),
)
# Ask integrations to shut down. It's messy but we can't
# do a clean stop without knowing what is broken
with contextlib.suppress(asyncio.TimeoutError):
with contextlib.suppress(TimeoutError):
async with hass.timeout.async_timeout(10):
await hass.async_stop()
@@ -229,7 +301,7 @@ def open_hass_ui(hass: core.HomeAssistant) -> None:
)
async def load_registries(hass: core.HomeAssistant) -> None:
async def async_load_base_functionality(hass: core.HomeAssistant) -> None:
"""Load the registries and cache the result of platform.uname().processor."""
if DATA_REGISTRIES_LOADED in hass.data:
return
@@ -246,16 +318,20 @@ async def load_registries(hass: core.HomeAssistant) -> None:
platform.uname().processor # pylint: disable=expression-not-assigned
# Load the registries and cache the result of platform.uname().processor
translation.async_setup(hass)
entity.async_setup(hass)
template.async_setup(hass)
await asyncio.gather(
area_registry.async_load(hass),
device_registry.async_load(hass),
entity_registry.async_load(hass),
issue_registry.async_load(hass),
create_eager_task(area_registry.async_load(hass)),
create_eager_task(device_registry.async_load(hass)),
create_eager_task(entity_registry.async_load(hass)),
create_eager_task(floor_registry.async_load(hass)),
create_eager_task(issue_registry.async_load(hass)),
create_eager_task(label_registry.async_load(hass)),
hass.async_add_executor_job(_cache_uname_processor),
template.async_load_custom_templates(hass),
restore_state.async_load(hass),
create_eager_task(template.async_load_custom_templates(hass)),
create_eager_task(restore_state.async_load(hass)),
create_eager_task(hass.config_entries.async_initialize()),
)
@@ -270,8 +346,7 @@ async def async_from_config_dict(
start = monotonic()
hass.config_entries = config_entries.ConfigEntries(hass, config)
await hass.config_entries.async_initialize()
await load_registries(hass)
await async_load_base_functionality(hass)
# Set up core.
_LOGGER.debug("Setting up %s", CORE_INTEGRATIONS)
@@ -279,7 +354,7 @@ async def async_from_config_dict(
if not all(
await asyncio.gather(
*(
async_setup_component(hass, domain, config)
create_eager_task(async_setup_component(hass, domain, config))
for domain in CORE_INTEGRATIONS
)
)
@@ -478,47 +553,83 @@ def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
domain for key in config if (domain := cv.domain_key(key)) != core.DOMAIN
}
# Add config entry domains
# Add config entry and default domains
if not hass.config.recovery_mode:
domains.update(DEFAULT_INTEGRATIONS)
domains.update(hass.config_entries.async_domains())
else:
domains.update(DEFAULT_INTEGRATIONS_RECOVERY_MODE)
# Make sure the Hass.io component is loaded
# Add domains depending on if the Supervisor is used or not
if "SUPERVISOR" in os.environ:
domains.add("hassio")
domains.update(DEFAULT_INTEGRATIONS_SUPERVISOR)
return domains
async def _async_watch_pending_setups(hass: core.HomeAssistant) -> None:
"""Periodic log of setups that are pending.
class _WatchPendingSetups:
"""Periodic log and dispatch of setups that are pending."""
def __init__(
self, hass: core.HomeAssistant, setup_started: dict[str, float]
) -> None:
"""Initialize the WatchPendingSetups class."""
self._hass = hass
self._setup_started = setup_started
self._duration_count = 0
self._handle: asyncio.TimerHandle | None = None
self._previous_was_empty = True
self._loop = hass.loop
def _async_watch(self) -> None:
"""Periodic log of setups that are pending."""
now = monotonic()
self._duration_count += SLOW_STARTUP_CHECK_INTERVAL
Pending for longer than LOG_SLOW_STARTUP_INTERVAL.
"""
loop_count = 0
setup_started: dict[str, datetime] = hass.data[DATA_SETUP_STARTED]
previous_was_empty = True
while True:
now = dt_util.utcnow()
remaining_with_setup_started = {
domain: (now - setup_started[domain]).total_seconds()
for domain in setup_started
domain: (now - start_time)
for domain, start_time in self._setup_started.items()
}
_LOGGER.debug("Integration remaining: %s", remaining_with_setup_started)
if remaining_with_setup_started or not previous_was_empty:
async_dispatcher_send(
hass, SIGNAL_BOOTSTRAP_INTEGRATIONS, remaining_with_setup_started
)
previous_was_empty = not remaining_with_setup_started
await asyncio.sleep(SLOW_STARTUP_CHECK_INTERVAL)
loop_count += SLOW_STARTUP_CHECK_INTERVAL
if loop_count >= LOG_SLOW_STARTUP_INTERVAL and setup_started:
self._async_dispatch(remaining_with_setup_started)
if (
self._setup_started
and self._duration_count % LOG_SLOW_STARTUP_INTERVAL == 0
):
# We log every LOG_SLOW_STARTUP_INTERVAL until all integrations are done
# once we take over LOG_SLOW_STARTUP_INTERVAL (60s) to start up
_LOGGER.warning(
"Waiting on integrations to complete setup: %s",
", ".join(setup_started),
", ".join(self._setup_started),
)
loop_count = 0
_LOGGER.debug("Running timeout Zones: %s", hass.timeout.zones)
_LOGGER.debug("Running timeout Zones: %s", self._hass.timeout.zones)
self._async_schedule_next()
def _async_dispatch(self, remaining_with_setup_started: dict[str, float]) -> None:
"""Dispatch the signal."""
if remaining_with_setup_started or not self._previous_was_empty:
async_dispatcher_send(
self._hass, SIGNAL_BOOTSTRAP_INTEGRATIONS, remaining_with_setup_started
)
self._previous_was_empty = not remaining_with_setup_started
def _async_schedule_next(self) -> None:
"""Schedule the next call."""
self._handle = self._loop.call_later(
SLOW_STARTUP_CHECK_INTERVAL, self._async_watch
)
def async_start(self) -> None:
"""Start watching."""
self._async_schedule_next()
def async_stop(self) -> None:
"""Stop watching."""
self._async_dispatch({})
if self._handle:
self._handle.cancel()
self._handle = None
async def async_setup_multi_components(
@@ -527,11 +638,15 @@ async def async_setup_multi_components(
config: dict[str, Any],
) -> None:
"""Set up multiple domains. Log on failure."""
# Avoid creating tasks for domains that were setup in a previous stage
domains_not_yet_setup = domains - hass.config.components
futures = {
domain: hass.async_create_task(
async_setup_component(hass, domain, config), f"setup component {domain}"
async_setup_component(hass, domain, config),
f"setup component {domain}",
eager_start=True,
)
for domain in domains
for domain in domains_not_yet_setup
}
results = await asyncio.gather(*futures.values(), return_exceptions=True)
for idx, domain in enumerate(futures):
@@ -544,16 +659,13 @@ async def async_setup_multi_components(
)
async def _async_set_up_integrations(
async def _async_resolve_domains_to_setup(
hass: core.HomeAssistant, config: dict[str, Any]
) -> None:
"""Set up all the integrations."""
hass.data[DATA_SETUP_STARTED] = {}
setup_time: dict[str, timedelta] = hass.data.setdefault(DATA_SETUP_TIME, {})
watch_task = asyncio.create_task(_async_watch_pending_setups(hass))
) -> tuple[set[str], dict[str, loader.Integration]]:
"""Resolve all dependencies and return list of domains to set up."""
base_platforms_loaded = False
domains_to_setup = _get_domains(hass, config)
needed_requirements: set[str] = set()
# Resolve all dependencies so we know all integrations
# that will have to be loaded and start rightaway
@@ -563,57 +675,113 @@ async def _async_set_up_integrations(
old_to_resolve: set[str] = to_resolve
to_resolve = set()
integrations_to_process = [
int_or_exc
for int_or_exc in (
await loader.async_get_integrations(hass, old_to_resolve)
).values()
if isinstance(int_or_exc, loader.Integration)
]
resolve_dependencies_tasks = [
itg.resolve_dependencies()
for itg in integrations_to_process
if not itg.all_dependencies_resolved
]
if not base_platforms_loaded:
# Load base platforms right away since
# we do not require the manifest to list
# them as dependencies and we want
# to avoid the lock contention when multiple
# integrations try to resolve them at once
base_platforms_loaded = True
to_get = {*old_to_resolve, *BASE_PLATFORMS}
else:
to_get = old_to_resolve
manifest_deps: set[str] = set()
resolve_dependencies_tasks: list[asyncio.Task[bool]] = []
integrations_to_process: list[loader.Integration] = []
for domain, itg in (await loader.async_get_integrations(hass, to_get)).items():
if not isinstance(itg, loader.Integration) or domain not in old_to_resolve:
continue
integrations_to_process.append(itg)
integration_cache[domain] = itg
manifest_deps.update(itg.dependencies)
manifest_deps.update(itg.after_dependencies)
needed_requirements.update(itg.requirements)
if not itg.all_dependencies_resolved:
resolve_dependencies_tasks.append(
create_eager_task(
itg.resolve_dependencies(),
name=f"resolve dependencies {domain}",
loop=hass.loop,
)
)
if unseen_deps := manifest_deps - integration_cache.keys():
# If there are dependencies, try to preload all
# the integrations manifest at once and add them
# to the list of requirements we need to install
# so we can try to check if they are already installed
# in a single call below which avoids each integration
# having to wait for the lock to do it individually
deps = await loader.async_get_integrations(hass, unseen_deps)
for dependant_domain, dependant_itg in deps.items():
if isinstance(dependant_itg, loader.Integration):
integration_cache[dependant_domain] = dependant_itg
needed_requirements.update(dependant_itg.requirements)
if resolve_dependencies_tasks:
await asyncio.gather(*resolve_dependencies_tasks)
for itg in integrations_to_process:
integration_cache[itg.domain] = itg
for dep in itg.all_dependencies:
if dep in domains_to_setup:
continue
domains_to_setup.add(dep)
to_resolve.add(dep)
_LOGGER.info("Domains to be set up: %s", domains_to_setup)
# Optimistically check if requirements are already installed
# ahead of setting up the integrations so we can prime the cache
# We do not wait for this since its an optimization only
hass.async_create_background_task(
requirements.async_load_installed_versions(hass, needed_requirements),
"check installed requirements",
eager_start=True,
)
# Start loading translations for all integrations we are going to set up
# in the background so they are ready when we need them. This avoids a
# lot of waiting for the translation load lock and a thundering herd of
# tasks trying to load the same translations at the same time as each
# integration is loaded.
#
# We do not wait for this since as soon as the task runs it will
# hold the translation load lock and if anything is fast enough to
# wait for the translation load lock, loading will be done by the
# time it gets to it.
hass.async_create_background_task(
translation.async_load_integrations(hass, {*BASE_PLATFORMS, *domains_to_setup}),
"load translations",
eager_start=True,
)
return domains_to_setup, integration_cache
async def _async_set_up_integrations(
hass: core.HomeAssistant, config: dict[str, Any]
) -> None:
"""Set up all the integrations."""
setup_started: dict[str, float] = {}
hass.data[DATA_SETUP_STARTED] = setup_started
setup_time: dict[str, timedelta] = hass.data.setdefault(DATA_SETUP_TIME, {})
watcher = _WatchPendingSetups(hass, setup_started)
watcher.async_start()
domains_to_setup, integration_cache = await _async_resolve_domains_to_setup(
hass, config
)
# Initialize recorder
if "recorder" in domains_to_setup:
recorder.async_initialize_recorder(hass)
# Load logging as soon as possible
if logging_domains := domains_to_setup & LOGGING_INTEGRATIONS:
_LOGGER.info("Setting up logging: %s", logging_domains)
await async_setup_multi_components(hass, logging_domains, config)
# Setup frontend
if frontend_domains := domains_to_setup & FRONTEND_INTEGRATIONS:
_LOGGER.info("Setting up frontend: %s", frontend_domains)
await async_setup_multi_components(hass, frontend_domains, config)
# Setup recorder
if recorder_domains := domains_to_setup & RECORDER_INTEGRATIONS:
_LOGGER.info("Setting up recorder: %s", recorder_domains)
await async_setup_multi_components(hass, recorder_domains, config)
# Start up debuggers. Start these first in case they want to wait.
if debuggers := domains_to_setup & DEBUGGER_INTEGRATIONS:
_LOGGER.debug("Setting up debuggers: %s", debuggers)
await async_setup_multi_components(hass, debuggers, config)
pre_stage_domains: dict[str, set[str]] = {
name: domains_to_setup & domain_group
for name, domain_group in SETUP_ORDER.items()
}
# calculate what components to setup in what stage
stage_1_domains: set[str] = set()
@@ -637,14 +805,13 @@ async def _async_set_up_integrations(
deps_promotion.update(dep_itg.all_dependencies)
stage_2_domains = (
domains_to_setup
- logging_domains
- frontend_domains
- recorder_domains
- debuggers
- stage_1_domains
)
stage_2_domains = domains_to_setup - stage_1_domains
for name, domain_group in pre_stage_domains.items():
if domain_group:
stage_2_domains -= domain_group
_LOGGER.info("Setting up %s: %s", name, domain_group)
await async_setup_multi_components(hass, domain_group, config)
# Enables after dependencies when setting up stage 1 domains
async_set_domains_to_be_loaded(hass, stage_1_domains)
@@ -657,7 +824,7 @@ async def _async_set_up_integrations(
STAGE_1_TIMEOUT, cool_down=COOLDOWN_TIME
):
await async_setup_multi_components(hass, stage_1_domains, config)
except asyncio.TimeoutError:
except TimeoutError:
_LOGGER.warning("Setup timed out for stage 1 - moving forward")
# Add after dependencies when setting up stage 2 domains
@@ -670,7 +837,7 @@ async def _async_set_up_integrations(
STAGE_2_TIMEOUT, cool_down=COOLDOWN_TIME
):
await async_setup_multi_components(hass, stage_2_domains, config)
except asyncio.TimeoutError:
except TimeoutError:
_LOGGER.warning("Setup timed out for stage 2 - moving forward")
# Wrap up startup
@@ -678,18 +845,12 @@ async def _async_set_up_integrations(
try:
async with hass.timeout.async_timeout(WRAP_UP_TIMEOUT, cool_down=COOLDOWN_TIME):
await hass.async_block_till_done()
except asyncio.TimeoutError:
except TimeoutError:
_LOGGER.warning("Setup timed out for bootstrap - moving forward")
watch_task.cancel()
async_dispatcher_send(hass, SIGNAL_BOOTSTRAP_INTEGRATIONS, {})
watcher.async_stop()
_LOGGER.debug(
"Integration setup times: %s",
{
integration: timedelta.total_seconds()
for integration, timedelta in sorted(
setup_time.items(), key=lambda item: item[1].total_seconds()
)
},
dict(sorted(setup_time.items(), key=itemgetter(1))),
)
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "govee",
"name": "Govee",
"integrations": ["govee_ble", "govee_light_local"]
}
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "rainforest_automation",
"name": "Rainforest Automation",
"integrations": ["rainforest_eagle", "rainforest_raven"]
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"domain": "tplink",
"name": "TP-Link",
"integrations": ["tplink", "tplink_omada", "tplink_lte"],
"integrations": ["tplink", "tplink_omada", "tplink_lte", "tplink_tapo"],
"iot_standards": ["matter"]
}
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "traccar",
"name": "Traccar",
"integrations": ["traccar", "traccar_server"]
}
+2 -1
View File
@@ -11,6 +11,7 @@ from __future__ import annotations
import logging
from homeassistant.core import HomeAssistant, split_entity_id
from homeassistant.helpers.group import expand_entity_ids
_LOGGER = logging.getLogger(__name__)
@@ -21,7 +22,7 @@ def is_on(hass: HomeAssistant, entity_id: str | None = None) -> bool:
If there is no entity id given we will check all.
"""
if entity_id:
entity_ids = hass.components.group.expand_entity_ids([entity_id])
entity_ids = expand_entity_ids(hass, [entity_id])
else:
entity_ids = hass.states.entity_ids()
+3 -3
View File
@@ -63,12 +63,12 @@ AUTOMATION_SCHEMA = vol.Schema({ATTR_ENTITY_ID: cv.entity_ids})
PLATFORMS = [
Platform.ALARM_CONTROL_PANEL,
Platform.BINARY_SENSOR,
Platform.LOCK,
Platform.SWITCH,
Platform.COVER,
Platform.CAMERA,
Platform.COVER,
Platform.LIGHT,
Platform.LOCK,
Platform.SENSOR,
Platform.SWITCH,
]
@@ -17,8 +17,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeDevice, AbodeSystem
from .const import DOMAIN
ICON = "mdi:security"
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
@@ -33,7 +31,6 @@ async def async_setup_entry(
class AbodeAlarm(AbodeDevice, alarm.AlarmControlPanelEntity):
"""An alarm_control_panel implementation for Abode."""
_attr_icon = ICON
_attr_name = None
_attr_code_arm_required = False
_attr_supported_features = (
@@ -0,0 +1,9 @@
{
"entity": {
"switch": {
"automation": {
"default": "mdi:robot"
}
}
}
}
+1 -3
View File
@@ -17,8 +17,6 @@ from .const import DOMAIN
DEVICE_TYPES = [CONST.TYPE_SWITCH, CONST.TYPE_VALVE]
ICON = "mdi:robot"
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
@@ -63,7 +61,7 @@ class AbodeSwitch(AbodeDevice, SwitchEntity):
class AbodeAutomationSwitch(AbodeAutomation, SwitchEntity):
"""A switch implementation for Abode automations."""
_attr_icon = ICON
_attr_translation_key = "automation"
async def async_added_to_hass(self) -> None:
"""Set up trigger automation service."""
@@ -75,7 +75,7 @@ async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
await hass.config_entries.async_reload(entry.entry_id)
class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]): # pylint: disable=hass-enforce-coordinator-module
"""Class to manage fetching AccuWeather data API."""
def __init__(
@@ -1,7 +1,6 @@
"""Adds config flow for AccuWeather."""
from __future__ import annotations
import asyncio
from asyncio import timeout
from typing import Any
@@ -61,7 +60,7 @@ class AccuWeatherFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
longitude=user_input[CONF_LONGITUDE],
)
await accuweather.async_get_location()
except (ApiError, ClientConnectorError, asyncio.TimeoutError, ClientError):
except (ApiError, ClientConnectorError, TimeoutError, ClientError):
errors["base"] = "cannot_connect"
except InvalidApiKeyError:
errors[CONF_API_KEY] = "invalid_api_key"
+2 -2
View File
@@ -66,12 +66,12 @@ class AcmedaBase(entity.Entity):
@property
def unique_id(self) -> str:
"""Return the unique ID of this roller."""
return self.roller.id
return self.roller.id # type: ignore[no-any-return]
@property
def device_id(self) -> str:
"""Return the ID of this roller."""
return self.roller.id
return self.roller.id # type: ignore[no-any-return]
@property
def device_info(self) -> dr.DeviceInfo:
@@ -1,7 +1,6 @@
"""Config flow for Rollease Acmeda Automate Pulse Hub."""
from __future__ import annotations
import asyncio
from asyncio import timeout
from contextlib import suppress
from typing import Any
@@ -42,7 +41,7 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
}
hubs: list[aiopulse.Hub] = []
with suppress(asyncio.TimeoutError):
with suppress(TimeoutError):
async with timeout(5):
async for hub in aiopulse.Hub.discover():
if hub.id not in already_configured:
+2 -2
View File
@@ -30,7 +30,7 @@ async def async_setup_entry(
current: set[int] = set()
@callback
def async_add_acmeda_covers():
def async_add_acmeda_covers() -> None:
async_add_acmeda_entities(
hass, AcmedaCover, config_entry, current, async_add_entities
)
@@ -95,7 +95,7 @@ class AcmedaCover(AcmedaBase, CoverEntity):
@property
def is_closed(self) -> bool:
"""Return if the cover is closed."""
return self.roller.closed_percent == 100
return self.roller.closed_percent == 100 # type: ignore[no-any-return]
async def async_close_cover(self, **kwargs: Any) -> None:
"""Close the roller."""
+6 -2
View File
@@ -1,6 +1,8 @@
"""Helper functions for Acmeda Pulse."""
from __future__ import annotations
from aiopulse import Roller
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import device_registry as dr
@@ -16,7 +18,7 @@ def async_add_acmeda_entities(
config_entry: ConfigEntry,
current: set[int],
async_add_entities: AddEntitiesCallback,
):
) -> None:
"""Add any new entities."""
hub = hass.data[DOMAIN][config_entry.entry_id]
LOGGER.debug("Looking for new %s on: %s", entity_class.__name__, hub.host)
@@ -34,7 +36,9 @@ def async_add_acmeda_entities(
async_add_entities(new_items)
async def update_devices(hass: HomeAssistant, config_entry: ConfigEntry, api):
async def update_devices(
hass: HomeAssistant, config_entry: ConfigEntry, api: dict[int, Roller]
) -> None:
"""Tell hass that device info has been updated."""
dev_registry = dr.async_get(hass)
+16 -15
View File
@@ -2,9 +2,12 @@
from __future__ import annotations
import asyncio
from collections.abc import Callable
import aiopulse
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.dispatcher import async_dispatcher_send
from .const import ACMEDA_ENTITY_REMOVE, ACMEDA_HUB_UPDATE, LOGGER
@@ -14,31 +17,29 @@ from .helpers import update_devices
class PulseHub:
"""Manages a single Pulse Hub."""
def __init__(self, hass, config_entry):
api: aiopulse.Hub
def __init__(self, hass: HomeAssistant, config_entry: ConfigEntry) -> None:
"""Initialize the system."""
self.config_entry = config_entry
self.hass = hass
self.api: aiopulse.Hub | None = None
self.tasks = []
self.current_rollers = {}
self.cleanup_callbacks = []
self.tasks: list[asyncio.Task[None]] = []
self.current_rollers: dict[int, aiopulse.Roller] = {}
self.cleanup_callbacks: list[Callable[[], None]] = []
@property
def title(self):
def title(self) -> str:
"""Return the title of the hub shown in the integrations list."""
return f"{self.api.id} ({self.api.host})"
@property
def host(self):
def host(self) -> str:
"""Return the host of this hub."""
return self.config_entry.data["host"]
return self.config_entry.data["host"] # type: ignore[no-any-return]
async def async_setup(self, tries=0):
async def async_setup(self, tries: int = 0) -> bool:
"""Set up a hub based on host parameter."""
host = self.host
hub = aiopulse.Hub(host)
self.api = hub
self.api = hub = aiopulse.Hub(self.host)
hub.callback_subscribe(self.async_notify_update)
self.tasks.append(asyncio.create_task(hub.run()))
@@ -46,7 +47,7 @@ class PulseHub:
LOGGER.debug("Hub setup complete")
return True
async def async_reset(self):
async def async_reset(self) -> bool:
"""Reset this hub to default state."""
for cleanup_callback in self.cleanup_callbacks:
@@ -66,7 +67,7 @@ class PulseHub:
return True
async def async_notify_update(self, update_type):
async def async_notify_update(self, update_type: aiopulse.UpdateType) -> None:
"""Evaluate entities when hub reports that update has occurred."""
LOGGER.debug("Hub {update_type.name} updated")
+2 -2
View File
@@ -25,7 +25,7 @@ async def async_setup_entry(
current: set[int] = set()
@callback
def async_add_acmeda_sensors():
def async_add_acmeda_sensors() -> None:
async_add_acmeda_entities(
hass, AcmedaBattery, config_entry, current, async_add_entities
)
@@ -48,4 +48,4 @@ class AcmedaBattery(AcmedaBase, SensorEntity):
@property
def native_value(self) -> float | int | None:
"""Return the state of the device."""
return self.roller.battery
return self.roller.battery # type: ignore[no-any-return]
@@ -0,0 +1 @@
"""Virtual integration: Acomax."""
@@ -0,0 +1,6 @@
{
"domain": "acomax",
"name": "Acomax",
"integration_type": "virtual",
"supported_by": "motion_blinds"
}
+6 -1
View File
@@ -67,9 +67,14 @@ class AdaxDevice(ClimateEntity):
_attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
_attr_max_temp = 35
_attr_min_temp = 5
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, heater_data: dict[str, Any], adax_data_handler: Adax) -> None:
"""Initialize the heater."""
@@ -0,0 +1,75 @@
{
"entity": {
"sensor": {
"dns_queries": {
"default": "mdi:magnify"
},
"dns_queries_blocked": {
"default": "mdi:magnify-close"
},
"dns_queries_blocked_ratio": {
"default": "mdi:magnify-close"
},
"parental_control_blocked": {
"default": "mdi:human-male-girl"
},
"safe_browsing_blocked": {
"default": "mdi:shield-half-full"
},
"safe_searches_enforced": {
"default": "mdi:shield-search"
},
"average_processing_speed": {
"default": "mdi:speedometer"
},
"rules_count": {
"default": "mdi:counter"
}
},
"switch": {
"protection": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"parental": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"safe_search": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"safe_browsing": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"filtering": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
},
"query_log": {
"default": "mdi:shield-check",
"state": {
"off": "mdi:shield-off"
}
}
}
},
"services": {
"add_url": "mdi:link-plus",
"remove_url": "mdi:link-off",
"enable_url": "mdi:link-variant",
"disable_url": "mdi:link-variant-off",
"refresh": "mdi:refresh"
}
}
@@ -33,56 +33,48 @@ SENSORS: tuple[AdGuardHomeEntityDescription, ...] = (
AdGuardHomeEntityDescription(
key="dns_queries",
translation_key="dns_queries",
icon="mdi:magnify",
native_unit_of_measurement="queries",
value_fn=lambda adguard: adguard.stats.dns_queries(),
),
AdGuardHomeEntityDescription(
key="blocked_filtering",
translation_key="dns_queries_blocked",
icon="mdi:magnify-close",
native_unit_of_measurement="queries",
value_fn=lambda adguard: adguard.stats.blocked_filtering(),
),
AdGuardHomeEntityDescription(
key="blocked_percentage",
translation_key="dns_queries_blocked_ratio",
icon="mdi:magnify-close",
native_unit_of_measurement=PERCENTAGE,
value_fn=lambda adguard: adguard.stats.blocked_percentage(),
),
AdGuardHomeEntityDescription(
key="blocked_parental",
translation_key="parental_control_blocked",
icon="mdi:human-male-girl",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_parental(),
),
AdGuardHomeEntityDescription(
key="blocked_safebrowsing",
translation_key="safe_browsing_blocked",
icon="mdi:shield-half-full",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_safebrowsing(),
),
AdGuardHomeEntityDescription(
key="enforced_safesearch",
translation_key="safe_searches_enforced",
icon="mdi:shield-search",
native_unit_of_measurement="requests",
value_fn=lambda adguard: adguard.stats.replaced_safesearch(),
),
AdGuardHomeEntityDescription(
key="average_speed",
translation_key="average_processing_speed",
icon="mdi:speedometer",
native_unit_of_measurement=UnitOfTime.MILLISECONDS,
value_fn=lambda adguard: adguard.stats.avg_processing_time(),
),
AdGuardHomeEntityDescription(
key="rules_count",
translation_key="rules_count",
icon="mdi:counter",
native_unit_of_measurement="rules",
value_fn=lambda adguard: adguard.filtering.rules_count(allowlist=False),
entity_registry_enabled_default=False,
@@ -34,7 +34,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="protection",
translation_key="protection",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.protection_enabled,
turn_on_fn=lambda adguard: adguard.enable_protection,
turn_off_fn=lambda adguard: adguard.disable_protection,
@@ -42,7 +41,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="parental",
translation_key="parental",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.parental.enabled,
turn_on_fn=lambda adguard: adguard.parental.enable,
turn_off_fn=lambda adguard: adguard.parental.disable,
@@ -50,7 +48,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="safesearch",
translation_key="safe_search",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.safesearch.enabled,
turn_on_fn=lambda adguard: adguard.safesearch.enable,
turn_off_fn=lambda adguard: adguard.safesearch.disable,
@@ -58,7 +55,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="safebrowsing",
translation_key="safe_browsing",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.safebrowsing.enabled,
turn_on_fn=lambda adguard: adguard.safebrowsing.enable,
turn_off_fn=lambda adguard: adguard.safebrowsing.disable,
@@ -66,7 +62,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="filtering",
translation_key="filtering",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.filtering.enabled,
turn_on_fn=lambda adguard: adguard.filtering.enable,
turn_off_fn=lambda adguard: adguard.filtering.disable,
@@ -74,7 +69,6 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
AdGuardHomeSwitchEntityDescription(
key="querylog",
translation_key="query_log",
icon="mdi:shield-check",
is_on_fn=lambda adguard: adguard.querylog.enabled,
turn_on_fn=lambda adguard: adguard.querylog.enable,
turn_off_fn=lambda adguard: adguard.querylog.disable,
+1 -1
View File
@@ -303,7 +303,7 @@ class AdsEntity(Entity):
try:
async with timeout(10):
await self._event.wait()
except asyncio.TimeoutError:
except TimeoutError:
_LOGGER.debug("Variable %s: Timeout during first update", ads_var)
@property
@@ -19,11 +19,11 @@ PLATFORMS = [
Platform.BINARY_SENSOR,
Platform.CLIMATE,
Platform.COVER,
Platform.LIGHT,
Platform.SELECT,
Platform.SENSOR,
Platform.SWITCH,
Platform.UPDATE,
Platform.LIGHT,
]
_LOGGER = logging.getLogger(__name__)
@@ -17,7 +17,8 @@ from homeassistant.components.climate import (
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import ServiceValidationError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
@@ -49,6 +50,24 @@ ADVANTAGE_AIR_HEAT_TARGET = "myAutoHeatTargetTemp"
ADVANTAGE_AIR_COOL_TARGET = "myAutoCoolTargetTemp"
ADVANTAGE_AIR_MYFAN = "autoAA"
HVAC_MODES = [
HVACMode.OFF,
HVACMode.COOL,
HVACMode.HEAT,
HVACMode.FAN_ONLY,
HVACMode.DRY,
]
HVAC_MODES_MYAUTO = HVAC_MODES + [HVACMode.HEAT_COOL]
SUPPORTED_FEATURES = (
ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
SUPPORTED_FEATURES_MYZONE = SUPPORTED_FEATURES | ClimateEntityFeature.TARGET_TEMPERATURE
SUPPORTED_FEATURES_MYAUTO = (
SUPPORTED_FEATURES | ClimateEntityFeature.TARGET_TEMPERATURE_RANGE
)
PARALLEL_UPDATES = 0
_LOGGER = logging.getLogger(__name__)
@@ -83,30 +102,57 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
_attr_max_temp = 32
_attr_min_temp = 16
_attr_name = None
_enable_turn_on_off_backwards_compatibility = False
_support_preset = ClimateEntityFeature(0)
def __init__(self, instance: AdvantageAirData, ac_key: str) -> None:
"""Initialize an AdvantageAir AC unit."""
super().__init__(instance, ac_key)
self._attr_supported_features = ClimateEntityFeature.FAN_MODE
self._attr_hvac_modes = [
HVACMode.OFF,
HVACMode.COOL,
HVACMode.HEAT,
HVACMode.FAN_ONLY,
HVACMode.DRY,
]
# Set supported features and HVAC modes based on current operating mode
self._attr_preset_modes = [ADVANTAGE_AIR_MYZONE]
# Add "MyTemp" preset if available
if ADVANTAGE_AIR_MYTEMP_ENABLED in self._ac:
self._attr_preset_modes += [ADVANTAGE_AIR_MYTEMP]
self._support_preset = ClimateEntityFeature.PRESET_MODE
# Add "MyAuto" preset if available
if ADVANTAGE_AIR_MYAUTO_ENABLED in self._ac:
self._attr_preset_modes += [ADVANTAGE_AIR_MYAUTO]
self._support_preset = ClimateEntityFeature.PRESET_MODE
# Setup attributes based on current preset
self._async_configure_preset()
def _async_configure_preset(self) -> None:
"""Configure attributes based on preset."""
# Preset Changes
if self._ac.get(ADVANTAGE_AIR_MYAUTO_ENABLED):
# MyAuto
self._attr_supported_features |= (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TARGET_TEMPERATURE_RANGE
self._attr_preset_mode = ADVANTAGE_AIR_MYAUTO
self._attr_hvac_modes = HVAC_MODES_MYAUTO
self._attr_supported_features = (
SUPPORTED_FEATURES_MYAUTO | self._support_preset
)
self._attr_hvac_modes += [HVACMode.HEAT_COOL]
elif not self._ac.get(ADVANTAGE_AIR_MYTEMP_ENABLED):
elif self._ac.get(ADVANTAGE_AIR_MYTEMP_ENABLED):
# MyTemp
self._attr_preset_mode = ADVANTAGE_AIR_MYTEMP
self._attr_hvac_modes = HVAC_MODES
self._attr_supported_features = SUPPORTED_FEATURES | self._support_preset
else:
# MyZone
self._attr_supported_features |= ClimateEntityFeature.TARGET_TEMPERATURE
self._attr_preset_mode = ADVANTAGE_AIR_MYZONE
self._attr_hvac_modes = HVAC_MODES
self._attr_supported_features = (
SUPPORTED_FEATURES_MYZONE | self._support_preset
)
@callback
def _handle_coordinator_update(self) -> None:
"""Handle updated data from the coordinator."""
self._async_configure_preset()
super()._handle_coordinator_update()
@property
def current_temperature(self) -> float | None:
@@ -119,11 +165,7 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
def target_temperature(self) -> float | None:
"""Return the current target temperature."""
# If the system is in MyZone mode, and a zone is set, return that temperature instead.
if (
self._myzone
and not self._ac.get(ADVANTAGE_AIR_MYAUTO_ENABLED)
and not self._ac.get(ADVANTAGE_AIR_MYTEMP_ENABLED)
):
if self._myzone and self.preset_mode == ADVANTAGE_AIR_MYZONE:
return self._myzone["setTemp"]
return self._ac["setTemp"]
@@ -164,14 +206,15 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set the HVAC Mode and State."""
if hvac_mode == HVACMode.OFF:
await self.async_update_ac({"state": ADVANTAGE_AIR_STATE_OFF})
else:
await self.async_update_ac(
{
"state": ADVANTAGE_AIR_STATE_ON,
"mode": HASS_HVAC_MODES.get(hvac_mode),
}
)
return await self.async_turn_off()
if hvac_mode == HVACMode.HEAT_COOL and self.preset_mode != ADVANTAGE_AIR_MYAUTO:
raise ServiceValidationError("Heat/Cool is not supported in this mode")
await self.async_update_ac(
{
"state": ADVANTAGE_AIR_STATE_ON,
"mode": HASS_HVAC_MODES.get(hvac_mode),
}
)
async def async_set_fan_mode(self, fan_mode: str) -> None:
"""Set the Fan Mode."""
@@ -193,16 +236,31 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
}
)
async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Set the preset mode."""
change = {}
if ADVANTAGE_AIR_MYTEMP_ENABLED in self._ac:
change[ADVANTAGE_AIR_MYTEMP_ENABLED] = preset_mode == ADVANTAGE_AIR_MYTEMP
if ADVANTAGE_AIR_MYAUTO_ENABLED in self._ac:
change[ADVANTAGE_AIR_MYAUTO_ENABLED] = preset_mode == ADVANTAGE_AIR_MYAUTO
if change:
await self.async_update_ac(change)
class AdvantageAirZone(AdvantageAirZoneEntity, ClimateEntity):
"""AdvantageAir MyTemp Zone control."""
_attr_hvac_modes = [HVACMode.OFF, HVACMode.HEAT_COOL]
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = PRECISION_WHOLE
_attr_max_temp = 32
_attr_min_temp = 16
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an AdvantageAir Zone control."""
@@ -40,6 +40,7 @@ async def async_setup_entry(
class AdvantageAirLight(AdvantageAirEntity, LightEntity):
"""Representation of Advantage Air Light."""
_attr_color_mode = ColorMode.ONOFF
_attr_supported_color_modes = {ColorMode.ONOFF}
_attr_name = None
@@ -82,7 +83,8 @@ class AdvantageAirLight(AdvantageAirEntity, LightEntity):
class AdvantageAirLightDimmable(AdvantageAirLight):
"""Representation of Advantage Air Dimmable Light."""
_attr_supported_color_modes = {ColorMode.ONOFF, ColorMode.BRIGHTNESS}
_attr_color_mode = ColorMode.BRIGHTNESS
_attr_supported_color_modes = {ColorMode.BRIGHTNESS}
def __init__(self, instance: AdvantageAirData, light: dict[str, Any]) -> None:
"""Initialize an Advantage Air Dimmable Light."""
@@ -106,13 +108,15 @@ class AdvantageAirLightDimmable(AdvantageAirLight):
class AdvantageAirThingLight(AdvantageAirThingEntity, LightEntity):
"""Representation of Advantage Air Light controlled by myThings."""
_attr_color_mode = ColorMode.ONOFF
_attr_supported_color_modes = {ColorMode.ONOFF}
class AdvantageAirThingLightDimmable(AdvantageAirThingEntity, LightEntity):
"""Representation of Advantage Air Dimmable Light controlled by myThings."""
_attr_supported_color_modes = {ColorMode.ONOFF, ColorMode.BRIGHTNESS}
_attr_color_mode = ColorMode.BRIGHTNESS
_attr_supported_color_modes = {ColorMode.BRIGHTNESS}
@property
def brightness(self) -> int:
+2 -2
View File
@@ -18,7 +18,7 @@ from .const import (
ENTRY_WEATHER_COORDINATOR,
PLATFORMS,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
from .coordinator import WeatherUpdateCoordinator
_LOGGER = logging.getLogger(__name__)
@@ -31,7 +31,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
longitude = entry.data[CONF_LONGITUDE]
station_updates = entry.options.get(CONF_STATION_UPDATES, True)
options = ConnectionOptions(api_key, station_updates, True)
options = ConnectionOptions(api_key, station_updates)
aemet = AEMET(aiohttp_client.async_get_clientsession(hass), options)
try:
await aemet.select_coordinates(latitude, longitude)
@@ -21,7 +21,7 @@ from .const import CONF_STATION_UPDATES, DEFAULT_NAME, DOMAIN
OPTIONS_SCHEMA = vol.Schema(
{
vol.Required(CONF_STATION_UPDATES): bool,
vol.Required(CONF_STATION_UPDATES, default=True): bool,
}
)
OPTIONS_FLOW = {
@@ -45,7 +45,7 @@ class AemetConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
await self.async_set_unique_id(f"{latitude}-{longitude}")
self._abort_if_unique_id_configured()
options = ConnectionOptions(user_input[CONF_API_KEY], False, True)
options = ConnectionOptions(user_input[CONF_API_KEY], False)
aemet = AEMET(aiohttp_client.async_get_clientsession(self.hass), options)
try:
await aemet.select_coordinates(latitude, longitude)
+3 -48
View File
@@ -20,7 +20,7 @@ from aemet_opendata.const import (
AOD_TEMP,
AOD_TEMP_MAX,
AOD_TEMP_MIN,
AOD_TIMESTAMP,
AOD_TIMESTAMP_UTC,
AOD_WIND_DIRECTION,
AOD_WIND_SPEED,
AOD_WIND_SPEED_MAX,
@@ -59,8 +59,6 @@ ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
ATTR_API_CONDITION = "condition"
ATTR_API_FORECAST_CONDITION = "condition"
ATTR_API_FORECAST_DAILY = "forecast-daily"
ATTR_API_FORECAST_HOURLY = "forecast-hourly"
ATTR_API_FORECAST_PRECIPITATION = "precipitation"
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY = "precipitation_probability"
ATTR_API_FORECAST_TEMP = "temperature"
@@ -101,56 +99,13 @@ CONDITIONS_MAP = {
AOD_COND_SUNNY: ATTR_CONDITION_SUNNY,
}
FORECAST_MONITORED_CONDITIONS = [
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_SPEED,
]
MONITORED_CONDITIONS = [
ATTR_API_CONDITION,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_RAIN,
ATTR_API_RAIN_PROB,
ATTR_API_SNOW,
ATTR_API_SNOW_PROB,
ATTR_API_STATION_ID,
ATTR_API_STATION_NAME,
ATTR_API_STATION_TIMESTAMP,
ATTR_API_STORM_PROB,
ATTR_API_TEMPERATURE,
ATTR_API_TEMPERATURE_FEELING,
ATTR_API_TOWN_ID,
ATTR_API_TOWN_NAME,
ATTR_API_TOWN_TIMESTAMP,
ATTR_API_WIND_BEARING,
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
]
FORECAST_MODE_DAILY = "daily"
FORECAST_MODE_HOURLY = "hourly"
FORECAST_MODES = [
FORECAST_MODE_DAILY,
FORECAST_MODE_HOURLY,
]
FORECAST_MODE_ATTR_API = {
FORECAST_MODE_DAILY: ATTR_API_FORECAST_DAILY,
FORECAST_MODE_HOURLY: ATTR_API_FORECAST_HOURLY,
}
FORECAST_MAP = {
AOD_FORECAST_DAILY: {
AOD_CONDITION: ATTR_FORECAST_CONDITION,
AOD_PRECIPITATION_PROBABILITY: ATTR_FORECAST_PRECIPITATION_PROBABILITY,
AOD_TEMP_MAX: ATTR_FORECAST_NATIVE_TEMP,
AOD_TEMP_MIN: ATTR_FORECAST_NATIVE_TEMP_LOW,
AOD_TIMESTAMP: ATTR_FORECAST_TIME,
AOD_TIMESTAMP_UTC: ATTR_FORECAST_TIME,
AOD_WIND_DIRECTION: ATTR_FORECAST_WIND_BEARING,
AOD_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
},
@@ -159,7 +114,7 @@ FORECAST_MAP = {
AOD_PRECIPITATION_PROBABILITY: ATTR_FORECAST_PRECIPITATION_PROBABILITY,
AOD_PRECIPITATION: ATTR_FORECAST_NATIVE_PRECIPITATION,
AOD_TEMP: ATTR_FORECAST_NATIVE_TEMP,
AOD_TIMESTAMP: ATTR_FORECAST_TIME,
AOD_TIMESTAMP_UTC: ATTR_FORECAST_TIME,
AOD_WIND_DIRECTION: ATTR_FORECAST_WIND_BEARING,
AOD_WIND_SPEED_MAX: ATTR_FORECAST_NATIVE_WIND_GUST_SPEED,
AOD_WIND_SPEED: ATTR_FORECAST_NATIVE_WIND_SPEED,
@@ -0,0 +1,85 @@
"""Weather data coordinator for the AEMET OpenData service."""
from __future__ import annotations
from asyncio import timeout
from datetime import timedelta
import logging
from typing import Any, Final, cast
from aemet_opendata.const import (
AOD_CONDITION,
AOD_FORECAST,
AOD_FORECAST_DAILY,
AOD_FORECAST_HOURLY,
AOD_TOWN,
)
from aemet_opendata.exceptions import AemetError
from aemet_opendata.helpers import dict_nested_value
from aemet_opendata.interface import AEMET
from homeassistant.components.weather import Forecast
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import CONDITIONS_MAP, DOMAIN, FORECAST_MAP
_LOGGER = logging.getLogger(__name__)
API_TIMEOUT: Final[int] = 120
WEATHER_UPDATE_INTERVAL = timedelta(minutes=10)
class WeatherUpdateCoordinator(DataUpdateCoordinator):
"""Weather data update coordinator."""
def __init__(
self,
hass: HomeAssistant,
aemet: AEMET,
) -> None:
"""Initialize coordinator."""
self.aemet = aemet
super().__init__(
hass,
_LOGGER,
name=DOMAIN,
update_interval=WEATHER_UPDATE_INTERVAL,
)
async def _async_update_data(self) -> dict[str, Any]:
"""Update coordinator data."""
async with timeout(API_TIMEOUT):
try:
await self.aemet.update()
except AemetError as error:
raise UpdateFailed(error) from error
data = self.aemet.data()
return {
"forecast": {
AOD_FORECAST_DAILY: self.aemet_forecast(data, AOD_FORECAST_DAILY),
AOD_FORECAST_HOURLY: self.aemet_forecast(data, AOD_FORECAST_HOURLY),
},
"lib": data,
}
def aemet_forecast(
self,
data: dict[str, Any],
forecast_mode: str,
) -> list[Forecast]:
"""Return the forecast array."""
forecasts = dict_nested_value(data, [AOD_TOWN, forecast_mode, AOD_FORECAST])
forecast_map = FORECAST_MAP[forecast_mode]
forecast_list: list[dict[str, Any]] = []
for forecast in forecasts:
cur_forecast: dict[str, Any] = {}
for api_key, ha_key in forecast_map.items():
value = forecast[api_key]
if api_key == AOD_CONDITION:
value = CONDITIONS_MAP.get(value)
cur_forecast[ha_key] = value
forecast_list += [cur_forecast]
return cast(list[Forecast], forecast_list)
@@ -0,0 +1,44 @@
"""Support for the AEMET OpenData diagnostics."""
from __future__ import annotations
from typing import Any
from aemet_opendata.const import AOD_COORDS
from homeassistant.components.diagnostics.util import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_API_KEY,
CONF_LATITUDE,
CONF_LONGITUDE,
CONF_UNIQUE_ID,
)
from homeassistant.core import HomeAssistant
from .const import DOMAIN, ENTRY_WEATHER_COORDINATOR
from .coordinator import WeatherUpdateCoordinator
TO_REDACT_CONFIG = [
CONF_API_KEY,
CONF_LATITUDE,
CONF_LONGITUDE,
CONF_UNIQUE_ID,
]
TO_REDACT_COORD = [
AOD_COORDS,
]
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
aemet_entry = hass.data[DOMAIN][config_entry.entry_id]
coordinator: WeatherUpdateCoordinator = aemet_entry[ENTRY_WEATHER_COORDINATOR]
return {
"api_data": coordinator.aemet.raw_data(),
"config_entry": async_redact_data(config_entry.as_dict(), TO_REDACT_CONFIG),
"coord_data": async_redact_data(coordinator.data, TO_REDACT_COORD),
}
+1 -1
View File
@@ -8,7 +8,7 @@ from aemet_opendata.helpers import dict_nested_value
from homeassistant.components.weather import Forecast
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .weather_update_coordinator import WeatherUpdateCoordinator
from .coordinator import WeatherUpdateCoordinator
class AemetEntity(CoordinatorEntity[WeatherUpdateCoordinator]):
+1 -1
View File
@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/aemet",
"iot_class": "cloud_polling",
"loggers": ["aemet_opendata"],
"requirements": ["AEMET-OpenData==0.4.7"]
"requirements": ["AEMET-OpenData==0.5.1"]
}
+209 -139
View File
@@ -1,6 +1,41 @@
"""Support for the AEMET OpenData service."""
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from datetime import datetime
from typing import Final
from aemet_opendata.const import (
AOD_CONDITION,
AOD_FEEL_TEMP,
AOD_FORECAST_CURRENT,
AOD_FORECAST_DAILY,
AOD_FORECAST_HOURLY,
AOD_HUMIDITY,
AOD_ID,
AOD_NAME,
AOD_PRECIPITATION,
AOD_PRECIPITATION_PROBABILITY,
AOD_PRESSURE,
AOD_RAIN,
AOD_RAIN_PROBABILITY,
AOD_SNOW,
AOD_SNOW_PROBABILITY,
AOD_STATION,
AOD_STORM_PROBABILITY,
AOD_TEMP,
AOD_TEMP_MAX,
AOD_TEMP_MIN,
AOD_TIMESTAMP_UTC,
AOD_TOWN,
AOD_WEATHER,
AOD_WIND_DIRECTION,
AOD_WIND_SPEED,
AOD_WIND_SPEED_MAX,
)
from aemet_opendata.helpers import dict_nested_value
from homeassistant.components.sensor import (
SensorDeviceClass,
SensorEntity,
@@ -18,7 +53,6 @@ from homeassistant.const import (
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util import dt as dt_util
from .const import (
@@ -51,172 +85,270 @@ from .const import (
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
ATTRIBUTION,
CONDITIONS_MAP,
DOMAIN,
ENTRY_NAME,
ENTRY_WEATHER_COORDINATOR,
FORECAST_MODE_ATTR_API,
FORECAST_MODE_DAILY,
FORECAST_MODES,
FORECAST_MONITORED_CONDITIONS,
MONITORED_CONDITIONS,
)
from .weather_update_coordinator import WeatherUpdateCoordinator
from .coordinator import WeatherUpdateCoordinator
from .entity import AemetEntity
FORECAST_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
key=ATTR_API_FORECAST_CONDITION,
name="Condition",
@dataclass(frozen=True, kw_only=True)
class AemetSensorEntityDescription(SensorEntityDescription):
"""A class that describes AEMET OpenData sensor entities."""
keys: list[str] | None = None
value_fn: Callable[[str], datetime | float | int | str | None] = lambda value: value
FORECAST_SENSORS: Final[tuple[AemetSensorEntityDescription, ...]] = (
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_CONDITION}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_CONDITION],
name="Daily forecast condition",
value_fn=CONDITIONS_MAP.get,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION,
name="Precipitation",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_CONDITION}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_CONDITION],
name="Hourly forecast condition",
value_fn=CONDITIONS_MAP.get,
),
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_PRECIPITATION}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_PRECIPITATION],
name="Hourly forecast precipitation",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
name="Precipitation probability",
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_PRECIPITATION_PROBABILITY}",
keys=[
AOD_TOWN,
AOD_FORECAST_DAILY,
AOD_FORECAST_CURRENT,
AOD_PRECIPITATION_PROBABILITY,
],
name="Daily forecast precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP,
name="Temperature",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_PRECIPITATION_PROBABILITY}",
keys=[
AOD_TOWN,
AOD_FORECAST_HOURLY,
AOD_FORECAST_CURRENT,
AOD_PRECIPITATION_PROBABILITY,
],
name="Hourly forecast precipitation probability",
native_unit_of_measurement=PERCENTAGE,
),
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_TEMP}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_TEMP_MAX],
name="Daily forecast temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TEMP_LOW,
name="Temperature Low",
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_TEMP_LOW}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_TEMP_MIN],
name="Daily forecast temperature low",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_TIME,
name="Time",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_TEMP}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_TEMP],
name="Hourly forecast temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
),
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_TIME}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_TIMESTAMP_UTC],
name="Daily forecast time",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_BEARING,
name="Wind bearing",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_TIME}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_TIMESTAMP_UTC],
name="Hourly forecast time",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_WIND_BEARING}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_WIND_DIRECTION],
name="Daily forecast wind bearing",
native_unit_of_measurement=DEGREE,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_MAX_SPEED,
name="Wind max speed",
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_WIND_BEARING}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_WIND_DIRECTION],
name="Hourly forecast wind bearing",
native_unit_of_measurement=DEGREE,
),
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_WIND_MAX_SPEED}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_WIND_SPEED_MAX],
name="Hourly forecast wind max speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
SensorEntityDescription(
key=ATTR_API_FORECAST_WIND_SPEED,
name="Wind speed",
AemetSensorEntityDescription(
key=f"forecast-daily-{ATTR_API_FORECAST_WIND_SPEED}",
keys=[AOD_TOWN, AOD_FORECAST_DAILY, AOD_FORECAST_CURRENT, AOD_WIND_SPEED],
name="Daily forecast wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
AemetSensorEntityDescription(
entity_registry_enabled_default=False,
key=f"forecast-hourly-{ATTR_API_FORECAST_WIND_SPEED}",
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_FORECAST_CURRENT, AOD_WIND_SPEED],
name="Hourly forecast wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
),
)
WEATHER_SENSOR_TYPES: tuple[SensorEntityDescription, ...] = (
SensorEntityDescription(
WEATHER_SENSORS: Final[tuple[AemetSensorEntityDescription, ...]] = (
AemetSensorEntityDescription(
key=ATTR_API_CONDITION,
keys=[AOD_WEATHER, AOD_CONDITION],
name="Condition",
value_fn=CONDITIONS_MAP.get,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_HUMIDITY,
keys=[AOD_WEATHER, AOD_HUMIDITY],
name="Humidity",
native_unit_of_measurement=PERCENTAGE,
device_class=SensorDeviceClass.HUMIDITY,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_PRESSURE,
keys=[AOD_WEATHER, AOD_PRESSURE],
name="Pressure",
native_unit_of_measurement=UnitOfPressure.HPA,
device_class=SensorDeviceClass.PRESSURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_RAIN,
keys=[AOD_WEATHER, AOD_RAIN],
name="Rain",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_RAIN_PROB,
keys=[AOD_WEATHER, AOD_RAIN_PROBABILITY],
name="Rain probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_SNOW,
keys=[AOD_WEATHER, AOD_SNOW],
name="Snow",
native_unit_of_measurement=UnitOfVolumetricFlux.MILLIMETERS_PER_HOUR,
device_class=SensorDeviceClass.PRECIPITATION_INTENSITY,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_SNOW_PROB,
keys=[AOD_WEATHER, AOD_SNOW_PROBABILITY],
name="Snow probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STATION_ID,
keys=[AOD_STATION, AOD_ID],
name="Station ID",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STATION_NAME,
keys=[AOD_STATION, AOD_NAME],
name="Station name",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STATION_TIMESTAMP,
keys=[AOD_STATION, AOD_TIMESTAMP_UTC],
name="Station timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_STORM_PROB,
keys=[AOD_WEATHER, AOD_STORM_PROBABILITY],
name="Storm probability",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TEMPERATURE,
keys=[AOD_WEATHER, AOD_TEMP],
name="Temperature",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TEMPERATURE_FEELING,
keys=[AOD_WEATHER, AOD_FEEL_TEMP],
name="Temperature feeling",
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
device_class=SensorDeviceClass.TEMPERATURE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TOWN_ID,
keys=[AOD_TOWN, AOD_ID],
name="Town ID",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TOWN_NAME,
keys=[AOD_TOWN, AOD_NAME],
name="Town name",
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_TOWN_TIMESTAMP,
keys=[AOD_TOWN, AOD_FORECAST_HOURLY, AOD_TIMESTAMP_UTC],
name="Town timestamp",
device_class=SensorDeviceClass.TIMESTAMP,
value_fn=dt_util.parse_datetime,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_WIND_BEARING,
keys=[AOD_WEATHER, AOD_WIND_DIRECTION],
name="Wind bearing",
native_unit_of_measurement=DEGREE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_WIND_MAX_SPEED,
keys=[AOD_WEATHER, AOD_WIND_SPEED_MAX],
name="Wind max speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
AemetSensorEntityDescription(
key=ATTR_API_WIND_SPEED,
keys=[AOD_WEATHER, AOD_WIND_SPEED],
name="Wind speed",
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
device_class=SensorDeviceClass.WIND_SPEED,
@@ -232,108 +364,46 @@ async def async_setup_entry(
) -> None:
"""Set up AEMET OpenData sensor entities based on a config entry."""
domain_data = hass.data[DOMAIN][config_entry.entry_id]
name = domain_data[ENTRY_NAME]
weather_coordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
name: str = domain_data[ENTRY_NAME]
coordinator: WeatherUpdateCoordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
unique_id = config_entry.unique_id
entities: list[AbstractAemetSensor] = [
AemetSensor(name, unique_id, weather_coordinator, description)
for description in WEATHER_SENSOR_TYPES
if description.key in MONITORED_CONDITIONS
]
entities.extend(
[
AemetForecastSensor(
f"{domain_data[ENTRY_NAME]} {mode} Forecast",
f"{unique_id}-forecast-{mode}",
weather_coordinator,
mode,
description,
entities: list[AemetSensor] = []
for description in FORECAST_SENSORS + WEATHER_SENSORS:
if dict_nested_value(coordinator.data["lib"], description.keys) is not None:
entities.append(
AemetSensor(
name,
coordinator,
description,
config_entry,
)
)
for mode in FORECAST_MODES
for description in FORECAST_SENSOR_TYPES
if description.key in FORECAST_MONITORED_CONDITIONS
]
)
async_add_entities(entities)
class AbstractAemetSensor(CoordinatorEntity[WeatherUpdateCoordinator], SensorEntity):
"""Abstract class for an AEMET OpenData sensor."""
class AemetSensor(AemetEntity, SensorEntity):
"""Implementation of an AEMET OpenData sensor."""
_attr_attribution = ATTRIBUTION
entity_description: AemetSensorEntityDescription
def __init__(
self,
name,
unique_id,
name: str,
coordinator: WeatherUpdateCoordinator,
description: SensorEntityDescription,
description: AemetSensorEntityDescription,
config_entry: ConfigEntry,
) -> None:
"""Initialize the sensor."""
super().__init__(coordinator)
self.entity_description = description
self._attr_name = f"{name} {description.name}"
self._attr_unique_id = unique_id
class AemetSensor(AbstractAemetSensor):
"""Implementation of an AEMET OpenData sensor."""
def __init__(
self,
name,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
description: SensorEntityDescription,
) -> None:
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
self._attr_unique_id = f"{config_entry.unique_id}-{description.key}"
@property
def native_value(self):
"""Return the state of the device."""
return self.coordinator.data.get(self.entity_description.key)
class AemetForecastSensor(AbstractAemetSensor):
"""Implementation of an AEMET OpenData forecast sensor."""
def __init__(
self,
name,
unique_id_prefix,
weather_coordinator: WeatherUpdateCoordinator,
forecast_mode,
description: SensorEntityDescription,
) -> None:
"""Initialize the sensor."""
super().__init__(
name=name,
unique_id=f"{unique_id_prefix}-{description.key}",
coordinator=weather_coordinator,
description=description,
)
self._forecast_mode = forecast_mode
self._attr_entity_registry_enabled_default = (
self._forecast_mode == FORECAST_MODE_DAILY
)
@property
def native_value(self):
"""Return the state of the device."""
forecast = None
forecasts = self.coordinator.data.get(
FORECAST_MODE_ATTR_API[self._forecast_mode]
)
if forecasts:
forecast = forecasts[0].get(self.entity_description.key)
if self.entity_description.key == ATTR_API_FORECAST_TIME:
forecast = dt_util.parse_datetime(forecast)
return forecast
value = self.get_aemet_value(self.entity_description.keys)
return self.entity_description.value_fn(value)
+1 -1
View File
@@ -38,8 +38,8 @@ from .const import (
ENTRY_WEATHER_COORDINATOR,
WEATHER_FORECAST_MODES,
)
from .coordinator import WeatherUpdateCoordinator
from .entity import AemetEntity
from .weather_update_coordinator import WeatherUpdateCoordinator
async def async_setup_entry(
@@ -1,558 +0,0 @@
"""Weather data coordinator for the AEMET OpenData service."""
from __future__ import annotations
from asyncio import timeout
from datetime import timedelta
import logging
from typing import Any, Final, cast
from aemet_opendata.const import (
AEMET_ATTR_DATE,
AEMET_ATTR_DAY,
AEMET_ATTR_DIRECTION,
AEMET_ATTR_ELABORATED,
AEMET_ATTR_FEEL_TEMPERATURE,
AEMET_ATTR_FORECAST,
AEMET_ATTR_HUMIDITY,
AEMET_ATTR_MAX,
AEMET_ATTR_MIN,
AEMET_ATTR_PRECIPITATION,
AEMET_ATTR_PRECIPITATION_PROBABILITY,
AEMET_ATTR_SKY_STATE,
AEMET_ATTR_SNOW,
AEMET_ATTR_SNOW_PROBABILITY,
AEMET_ATTR_SPEED,
AEMET_ATTR_STATION_DATE,
AEMET_ATTR_STATION_HUMIDITY,
AEMET_ATTR_STATION_PRESSURE,
AEMET_ATTR_STATION_PRESSURE_SEA,
AEMET_ATTR_STATION_TEMPERATURE,
AEMET_ATTR_STORM_PROBABILITY,
AEMET_ATTR_TEMPERATURE,
AEMET_ATTR_WIND,
AEMET_ATTR_WIND_GUST,
AOD_CONDITION,
AOD_FORECAST,
AOD_FORECAST_DAILY,
AOD_FORECAST_HOURLY,
AOD_TOWN,
ATTR_DATA,
)
from aemet_opendata.exceptions import AemetError
from aemet_opendata.forecast import ForecastValue
from aemet_opendata.helpers import (
dict_nested_value,
get_forecast_day_value,
get_forecast_hour_value,
get_forecast_interval_value,
)
from aemet_opendata.interface import AEMET
from homeassistant.components.weather import Forecast
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from homeassistant.util import dt as dt_util
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
ATTR_API_FORECAST_DAILY,
ATTR_API_FORECAST_HOURLY,
ATTR_API_FORECAST_PRECIPITATION,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY,
ATTR_API_FORECAST_TEMP,
ATTR_API_FORECAST_TEMP_LOW,
ATTR_API_FORECAST_TIME,
ATTR_API_FORECAST_WIND_BEARING,
ATTR_API_FORECAST_WIND_MAX_SPEED,
ATTR_API_FORECAST_WIND_SPEED,
ATTR_API_HUMIDITY,
ATTR_API_PRESSURE,
ATTR_API_RAIN,
ATTR_API_RAIN_PROB,
ATTR_API_SNOW,
ATTR_API_SNOW_PROB,
ATTR_API_STATION_ID,
ATTR_API_STATION_NAME,
ATTR_API_STATION_TIMESTAMP,
ATTR_API_STORM_PROB,
ATTR_API_TEMPERATURE,
ATTR_API_TEMPERATURE_FEELING,
ATTR_API_TOWN_ID,
ATTR_API_TOWN_NAME,
ATTR_API_TOWN_TIMESTAMP,
ATTR_API_WIND_BEARING,
ATTR_API_WIND_MAX_SPEED,
ATTR_API_WIND_SPEED,
CONDITIONS_MAP,
DOMAIN,
FORECAST_MAP,
)
_LOGGER = logging.getLogger(__name__)
API_TIMEOUT: Final[int] = 120
STATION_MAX_DELTA = timedelta(hours=2)
WEATHER_UPDATE_INTERVAL = timedelta(minutes=10)
def format_condition(condition: str) -> str:
"""Return condition from dict CONDITIONS_MAP."""
val = ForecastValue.parse_condition(condition)
return CONDITIONS_MAP.get(val, val)
def format_float(value) -> float | None:
"""Try converting string to float."""
try:
return float(value)
except (TypeError, ValueError):
return None
def format_int(value) -> int | None:
"""Try converting string to int."""
try:
return int(value)
except (TypeError, ValueError):
return None
class WeatherUpdateCoordinator(DataUpdateCoordinator):
"""Weather data update coordinator."""
def __init__(
self,
hass: HomeAssistant,
aemet: AEMET,
) -> None:
"""Initialize coordinator."""
self.aemet = aemet
super().__init__(
hass,
_LOGGER,
name=DOMAIN,
update_interval=WEATHER_UPDATE_INTERVAL,
)
async def _async_update_data(self) -> dict[str, Any]:
"""Update coordinator data."""
async with timeout(API_TIMEOUT):
try:
await self.aemet.update()
except AemetError as error:
raise UpdateFailed(error) from error
weather_response = self.aemet.legacy_weather()
return self._convert_weather_response(weather_response)
def _convert_weather_response(self, weather_response):
"""Format the weather response correctly."""
if not weather_response or not weather_response.hourly:
return None
elaborated = dt_util.parse_datetime(
weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_ELABORATED] + "Z"
)
now = dt_util.now()
now_utc = dt_util.utcnow()
hour = now.hour
# Get current day
day = None
for cur_day in weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_FORECAST][
AEMET_ATTR_DAY
]:
cur_day_date = dt_util.parse_datetime(cur_day[AEMET_ATTR_DATE])
if now.date() == cur_day_date.date():
day = cur_day
break
# Get latest station data
station_data = None
station_dt = None
if weather_response.station:
for _station_data in weather_response.station[ATTR_DATA]:
if AEMET_ATTR_STATION_DATE in _station_data:
_station_dt = dt_util.parse_datetime(
_station_data[AEMET_ATTR_STATION_DATE] + "Z"
)
if not station_dt or _station_dt > station_dt:
station_data = _station_data
station_dt = _station_dt
condition = None
humidity = None
pressure = None
rain = None
rain_prob = None
snow = None
snow_prob = None
station_id = None
station_name = None
station_timestamp = None
storm_prob = None
temperature = None
temperature_feeling = None
town_id = None
town_name = None
town_timestamp = dt_util.as_utc(elaborated)
wind_bearing = None
wind_max_speed = None
wind_speed = None
# Get weather values
if day:
condition = self._get_condition(day, hour)
humidity = self._get_humidity(day, hour)
rain = self._get_rain(day, hour)
rain_prob = self._get_rain_prob(day, hour)
snow = self._get_snow(day, hour)
snow_prob = self._get_snow_prob(day, hour)
station_id = self._get_station_id()
station_name = self._get_station_name()
storm_prob = self._get_storm_prob(day, hour)
temperature = self._get_temperature(day, hour)
temperature_feeling = self._get_temperature_feeling(day, hour)
town_id = self._get_town_id()
town_name = self._get_town_name()
wind_bearing = self._get_wind_bearing(day, hour)
wind_max_speed = self._get_wind_max_speed(day, hour)
wind_speed = self._get_wind_speed(day, hour)
# Overwrite weather values with closest station data (if present)
if station_data:
station_timestamp = dt_util.as_utc(station_dt)
if (now_utc - station_dt) <= STATION_MAX_DELTA:
if AEMET_ATTR_STATION_HUMIDITY in station_data:
humidity = format_float(station_data[AEMET_ATTR_STATION_HUMIDITY])
if AEMET_ATTR_STATION_PRESSURE_SEA in station_data:
pressure = format_float(
station_data[AEMET_ATTR_STATION_PRESSURE_SEA]
)
elif AEMET_ATTR_STATION_PRESSURE in station_data:
pressure = format_float(station_data[AEMET_ATTR_STATION_PRESSURE])
if AEMET_ATTR_STATION_TEMPERATURE in station_data:
temperature = format_float(
station_data[AEMET_ATTR_STATION_TEMPERATURE]
)
else:
_LOGGER.warning("Station data is outdated")
# Get forecast from weather data
forecast_daily = self._get_daily_forecast_from_weather_response(
weather_response, now
)
forecast_hourly = self._get_hourly_forecast_from_weather_response(
weather_response, now
)
data = self.aemet.data()
forecasts: list[dict[str, Forecast]] = {
AOD_FORECAST_DAILY: self.aemet_forecast(data, AOD_FORECAST_DAILY),
AOD_FORECAST_HOURLY: self.aemet_forecast(data, AOD_FORECAST_HOURLY),
}
return {
ATTR_API_CONDITION: condition,
ATTR_API_FORECAST_DAILY: forecast_daily,
ATTR_API_FORECAST_HOURLY: forecast_hourly,
ATTR_API_HUMIDITY: humidity,
ATTR_API_TEMPERATURE: temperature,
ATTR_API_TEMPERATURE_FEELING: temperature_feeling,
ATTR_API_PRESSURE: pressure,
ATTR_API_RAIN: rain,
ATTR_API_RAIN_PROB: rain_prob,
ATTR_API_SNOW: snow,
ATTR_API_SNOW_PROB: snow_prob,
ATTR_API_STATION_ID: station_id,
ATTR_API_STATION_NAME: station_name,
ATTR_API_STATION_TIMESTAMP: station_timestamp,
ATTR_API_STORM_PROB: storm_prob,
ATTR_API_TOWN_ID: town_id,
ATTR_API_TOWN_NAME: town_name,
ATTR_API_TOWN_TIMESTAMP: town_timestamp,
ATTR_API_WIND_BEARING: wind_bearing,
ATTR_API_WIND_MAX_SPEED: wind_max_speed,
ATTR_API_WIND_SPEED: wind_speed,
"forecast": forecasts,
"lib": data,
}
def aemet_forecast(
self,
data: dict[str, Any],
forecast_mode: str,
) -> list[Forecast]:
"""Return the forecast array."""
forecasts = dict_nested_value(data, [AOD_TOWN, forecast_mode, AOD_FORECAST])
forecast_map = FORECAST_MAP[forecast_mode]
forecast_list: list[dict[str, Any]] = []
for forecast in forecasts:
cur_forecast: dict[str, Any] = {}
for api_key, ha_key in forecast_map.items():
value = forecast[api_key]
if api_key == AOD_CONDITION:
value = CONDITIONS_MAP.get(value)
cur_forecast[ha_key] = value
forecast_list += [cur_forecast]
return cast(list[Forecast], forecast_list)
def _get_daily_forecast_from_weather_response(self, weather_response, now):
if weather_response.daily:
parse = False
forecast = []
for day in weather_response.daily[ATTR_DATA][0][AEMET_ATTR_FORECAST][
AEMET_ATTR_DAY
]:
day_date = dt_util.parse_datetime(day[AEMET_ATTR_DATE])
if now.date() == day_date.date():
parse = True
if parse:
cur_forecast = self._convert_forecast_day(day_date, day)
if cur_forecast:
forecast.append(cur_forecast)
return forecast
return None
def _get_hourly_forecast_from_weather_response(self, weather_response, now):
if weather_response.hourly:
parse = False
hour = now.hour
forecast = []
for day in weather_response.hourly[ATTR_DATA][0][AEMET_ATTR_FORECAST][
AEMET_ATTR_DAY
]:
day_date = dt_util.parse_datetime(day[AEMET_ATTR_DATE])
hour_start = 0
if now.date() == day_date.date():
parse = True
hour_start = now.hour
if parse:
for hour in range(hour_start, 24):
cur_forecast = self._convert_forecast_hour(day_date, day, hour)
if cur_forecast:
forecast.append(cur_forecast)
return forecast
return None
def _convert_forecast_day(self, date, day):
if not (condition := self._get_condition_day(day)):
return None
return {
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._get_precipitation_prob_day(
day
),
ATTR_API_FORECAST_TEMP: self._get_temperature_day(day),
ATTR_API_FORECAST_TEMP_LOW: self._get_temperature_low_day(day),
ATTR_API_FORECAST_TIME: dt_util.as_utc(date).isoformat(),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed_day(day),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing_day(day),
}
def _convert_forecast_hour(self, date, day, hour):
if not (condition := self._get_condition(day, hour)):
return None
forecast_dt = date.replace(hour=hour, minute=0, second=0)
return {
ATTR_API_FORECAST_CONDITION: condition,
ATTR_API_FORECAST_PRECIPITATION: self._calc_precipitation(day, hour),
ATTR_API_FORECAST_PRECIPITATION_PROBABILITY: self._calc_precipitation_prob(
day, hour
),
ATTR_API_FORECAST_TEMP: self._get_temperature(day, hour),
ATTR_API_FORECAST_TIME: dt_util.as_utc(forecast_dt).isoformat(),
ATTR_API_FORECAST_WIND_MAX_SPEED: self._get_wind_max_speed(day, hour),
ATTR_API_FORECAST_WIND_SPEED: self._get_wind_speed(day, hour),
ATTR_API_FORECAST_WIND_BEARING: self._get_wind_bearing(day, hour),
}
def _calc_precipitation(self, day, hour):
"""Calculate the precipitation."""
rain_value = self._get_rain(day, hour) or 0
snow_value = self._get_snow(day, hour) or 0
if round(rain_value + snow_value, 1) == 0:
return None
return round(rain_value + snow_value, 1)
def _calc_precipitation_prob(self, day, hour):
"""Calculate the precipitation probability (hour)."""
rain_value = self._get_rain_prob(day, hour) or 0
snow_value = self._get_snow_prob(day, hour) or 0
if rain_value == 0 and snow_value == 0:
return None
return max(rain_value, snow_value)
@staticmethod
def _get_condition(day_data, hour):
"""Get weather condition (hour) from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_SKY_STATE], hour)
if val:
return format_condition(val)
return None
@staticmethod
def _get_condition_day(day_data):
"""Get weather condition (day) from weather data."""
val = get_forecast_day_value(day_data[AEMET_ATTR_SKY_STATE])
if val:
return format_condition(val)
return None
@staticmethod
def _get_humidity(day_data, hour):
"""Get humidity from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_HUMIDITY], hour)
if val:
return format_int(val)
return None
@staticmethod
def _get_precipitation_prob_day(day_data):
"""Get humidity from weather data."""
val = get_forecast_day_value(day_data[AEMET_ATTR_PRECIPITATION_PROBABILITY])
if val:
return format_int(val)
return None
@staticmethod
def _get_rain(day_data, hour):
"""Get rain from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_PRECIPITATION], hour)
if val:
return format_float(val)
return None
@staticmethod
def _get_rain_prob(day_data, hour):
"""Get rain probability from weather data."""
val = get_forecast_interval_value(
day_data[AEMET_ATTR_PRECIPITATION_PROBABILITY], hour
)
if val:
return format_int(val)
return None
@staticmethod
def _get_snow(day_data, hour):
"""Get snow from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_SNOW], hour)
if val:
return format_float(val)
return None
@staticmethod
def _get_snow_prob(day_data, hour):
"""Get snow probability from weather data."""
val = get_forecast_interval_value(day_data[AEMET_ATTR_SNOW_PROBABILITY], hour)
if val:
return format_int(val)
return None
def _get_station_id(self):
"""Get station ID from weather data."""
if self.aemet.station:
return self.aemet.station.get_id()
return None
def _get_station_name(self):
"""Get station name from weather data."""
if self.aemet.station:
return self.aemet.station.get_name()
return None
@staticmethod
def _get_storm_prob(day_data, hour):
"""Get storm probability from weather data."""
val = get_forecast_interval_value(day_data[AEMET_ATTR_STORM_PROBABILITY], hour)
if val:
return format_int(val)
return None
@staticmethod
def _get_temperature(day_data, hour):
"""Get temperature (hour) from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_TEMPERATURE], hour)
return format_int(val)
@staticmethod
def _get_temperature_day(day_data):
"""Get temperature (day) from weather data."""
val = get_forecast_day_value(
day_data[AEMET_ATTR_TEMPERATURE], key=AEMET_ATTR_MAX
)
return format_int(val)
@staticmethod
def _get_temperature_low_day(day_data):
"""Get temperature (day) from weather data."""
val = get_forecast_day_value(
day_data[AEMET_ATTR_TEMPERATURE], key=AEMET_ATTR_MIN
)
return format_int(val)
@staticmethod
def _get_temperature_feeling(day_data, hour):
"""Get temperature from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_FEEL_TEMPERATURE], hour)
return format_int(val)
def _get_town_id(self):
"""Get town ID from weather data."""
if self.aemet.town:
return self.aemet.town.get_id()
return None
def _get_town_name(self):
"""Get town name from weather data."""
if self.aemet.town:
return self.aemet.town.get_name()
return None
@staticmethod
def _get_wind_bearing(day_data, hour):
"""Get wind bearing (hour) from weather data."""
val = get_forecast_hour_value(
day_data[AEMET_ATTR_WIND_GUST], hour, key=AEMET_ATTR_DIRECTION
)[0]
return ForecastValue.parse_wind_direction(val)
@staticmethod
def _get_wind_bearing_day(day_data):
"""Get wind bearing (day) from weather data."""
val = get_forecast_day_value(
day_data[AEMET_ATTR_WIND], key=AEMET_ATTR_DIRECTION
)
return ForecastValue.parse_wind_direction(val)
@staticmethod
def _get_wind_max_speed(day_data, hour):
"""Get wind max speed from weather data."""
val = get_forecast_hour_value(day_data[AEMET_ATTR_WIND_GUST], hour)
if val:
return format_int(val)
return None
@staticmethod
def _get_wind_speed(day_data, hour):
"""Get wind speed (hour) from weather data."""
val = get_forecast_hour_value(
day_data[AEMET_ATTR_WIND_GUST], hour, key=AEMET_ATTR_SPEED
)[0]
if val:
return format_int(val)
return None
@staticmethod
def _get_wind_speed_day(day_data):
"""Get wind speed (day) from weather data."""
val = get_forecast_day_value(day_data[AEMET_ATTR_WIND], key=AEMET_ATTR_SPEED)
if val:
return format_int(val)
return None
@@ -22,8 +22,6 @@ CONF_TRACKING_NUMBER: Final = "tracking_number"
DEFAULT_NAME: Final = "aftership"
UPDATE_TOPIC: Final = f"{DOMAIN}_update"
ICON: Final = "mdi:package-variant-closed"
MIN_TIME_BETWEEN_UPDATES: Final = timedelta(minutes=15)
SERVICE_ADD_TRACKING: Final = "add_tracking"
@@ -0,0 +1,13 @@
{
"entity": {
"sensor": {
"packages": {
"default": "mdi:package-variant-closed"
}
}
},
"services": {
"add_tracking": "mdi:package-variant-plus",
"remove_tracking": "mdi:package-variant-minus"
}
}
+1 -2
View File
@@ -35,7 +35,6 @@ from .const import (
CONF_TRACKING_NUMBER,
DEFAULT_NAME,
DOMAIN,
ICON,
MIN_TIME_BETWEEN_UPDATES,
REMOVE_TRACKING_SERVICE_SCHEMA,
SERVICE_ADD_TRACKING,
@@ -135,7 +134,7 @@ class AfterShipSensor(SensorEntity):
_attr_attribution = ATTRIBUTION
_attr_native_unit_of_measurement: str = "packages"
_attr_icon: str = ICON
_attr_translation_key = "packages"
def __init__(self, aftership: AfterShip, name: str) -> None:
"""Initialize the sensor."""
@@ -18,8 +18,6 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import CONNECTION, DOMAIN as AGENT_DOMAIN
ICON = "mdi:security"
CONF_HOME_MODE_NAME = "home"
CONF_AWAY_MODE_NAME = "away"
CONF_NIGHT_MODE_NAME = "night"
@@ -41,7 +39,6 @@ async def async_setup_entry(
class AgentBaseStation(AlarmControlPanelEntity):
"""Representation of an Agent DVR Alarm Control Panel."""
_attr_icon = ICON
_attr_supported_features = (
AlarmControlPanelEntityFeature.ARM_HOME
| AlarmControlPanelEntityFeature.ARM_AWAY
@@ -0,0 +1,7 @@
{
"entity_component": {
"_": {
"default": "mdi:air-filter"
}
}
}
@@ -0,0 +1,9 @@
{
"entity": {
"sensor": {
"caqi": {
"default": "mdi:air-filter"
}
}
}
}
-1
View File
@@ -66,7 +66,6 @@ class AirlySensorEntityDescription(SensorEntityDescription):
SENSOR_TYPES: tuple[AirlySensorEntityDescription, ...] = (
AirlySensorEntityDescription(
key=ATTR_API_CAQI,
icon="mdi:air-filter",
translation_key="caqi",
native_unit_of_measurement="CAQI",
suggested_display_precision=0,
+1 -2
View File
@@ -77,9 +77,8 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
new_data = entry.data.copy()
del new_data[CONF_RADIUS]
entry.version = 2
hass.config_entries.async_update_entry(
entry, data=new_data, options=new_options
entry, data=new_data, options=new_options, version=2
)
_LOGGER.info("Migration to version %s successful", entry.version)
@@ -0,0 +1,18 @@
{
"entity": {
"sensor": {
"aqi": {
"default": "mdi:blur"
},
"pm25": {
"default": "mdi:blur"
},
"o3": {
"default": "mdi:blur"
},
"station": {
"default": "mdi:blur"
}
}
}
}
+2 -4
View File
@@ -77,7 +77,7 @@ def station_extra_attrs(data: dict[str, Any]) -> dict[str, Any]:
SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
AirNowEntityDescription(
key=ATTR_API_AQI,
icon="mdi:blur",
translation_key="aqi",
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.AQI,
value_fn=lambda data: data.get(ATTR_API_AQI),
@@ -94,7 +94,7 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
),
AirNowEntityDescription(
key=ATTR_API_PM25,
icon="mdi:blur",
translation_key="pm25",
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
device_class=SensorDeviceClass.PM25,
@@ -104,7 +104,6 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
AirNowEntityDescription(
key=ATTR_API_O3,
translation_key="o3",
icon="mdi:blur",
native_unit_of_measurement=CONCENTRATION_PARTS_PER_MILLION,
state_class=SensorStateClass.MEASUREMENT,
value_fn=lambda data: data.get(ATTR_API_O3),
@@ -113,7 +112,6 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
AirNowEntityDescription(
key=ATTR_API_STATION,
translation_key="station",
icon="mdi:blur",
value_fn=lambda data: data.get(ATTR_API_STATION),
extra_state_attributes_fn=station_extra_attrs,
),
+1 -1
View File
@@ -56,4 +56,4 @@ class AirQCoordinator(DataUpdateCoordinator):
hw_version=info["hw_version"],
)
)
return await self.airq.get_latest_data()
return await self.airq.get_latest_data() # type: ignore[no-any-return]
+24
View File
@@ -0,0 +1,24 @@
{
"entity": {
"sensor": {
"health_index": {
"default": "mdi:heart-pulse"
},
"absolute_humidity": {
"default": "mdi:water"
},
"oxygen": {
"default": "mdi:leaf"
},
"performance_index": {
"default": "mdi:head-check"
},
"radon": {
"default": "mdi:radioactive"
},
"virus_index": {
"default": "mdi:virus-off"
}
}
}
}
-9
View File
@@ -190,7 +190,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
translation_key="health_index",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:heart-pulse",
value=lambda data: data.get("health", 0.0) / 10.0,
),
AirQEntityDescription(
@@ -206,7 +205,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_GRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("humidity_abs"),
icon="mdi:water",
),
AirQEntityDescription(
key="h2_M1000",
@@ -263,7 +261,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("oxygen"),
icon="mdi:leaf",
),
AirQEntityDescription(
key="o3",
@@ -277,7 +274,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
translation_key="performance_index",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:head-check",
value=lambda data: data.get("performance", 0.0) / 10.0,
),
AirQEntityDescription(
@@ -293,7 +289,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pm1"),
icon="mdi:dots-hexagon",
),
AirQEntityDescription(
key="pm2_5",
@@ -301,7 +296,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pm2_5"),
icon="mdi:dots-hexagon",
),
AirQEntityDescription(
key="pm10",
@@ -309,7 +303,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("pm10"),
icon="mdi:dots-hexagon",
),
AirQEntityDescription(
key="pressure",
@@ -376,7 +369,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
native_unit_of_measurement=ACTIVITY_BECQUEREL_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
value=lambda data: data.get("radon"),
icon="mdi:radioactive",
),
AirQEntityDescription(
key="temperature",
@@ -405,7 +397,6 @@ SENSOR_TYPES: list[AirQEntityDescription] = [
translation_key="virus_index",
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:virus-off",
value=lambda data: data.get("virus", 0.0),
),
]
@@ -4,7 +4,7 @@ from __future__ import annotations
from datetime import timedelta
import logging
from airthings import Airthings, AirthingsError
from airthings import Airthings, AirthingsDevice, AirthingsError
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_ID, Platform
@@ -19,6 +19,8 @@ _LOGGER = logging.getLogger(__name__)
PLATFORMS: list[Platform] = [Platform.SENSOR]
SCAN_INTERVAL = timedelta(minutes=6)
AirthingsDataCoordinatorType = DataUpdateCoordinator[dict[str, AirthingsDevice]]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Airthings from a config entry."""
@@ -30,10 +32,10 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async_get_clientsession(hass),
)
async def _update_method():
async def _update_method() -> dict[str, AirthingsDevice]:
"""Get the latest data from Airthings."""
try:
return await airthings.update_devices()
return await airthings.update_devices() # type: ignore[no-any-return]
except AirthingsError as err:
raise UpdateFailed(f"Unable to fetch data: {err}") from err
@@ -1,10 +1,10 @@
{
"domain": "airthings",
"name": "Airthings",
"codeowners": ["@danielhiversen"],
"codeowners": ["@danielhiversen", "@LaStrada"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airthings",
"iot_class": "cloud_polling",
"loggers": ["airthings"],
"requirements": ["airthings-cloud==0.1.0"]
"requirements": ["airthings-cloud==0.2.0"]
}
+9 -9
View File
@@ -24,11 +24,9 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
)
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import AirthingsDataCoordinatorType
from .const import DOMAIN
SENSORS: dict[str, SensorEntityDescription] = {
@@ -108,7 +106,7 @@ async def async_setup_entry(
) -> None:
"""Set up the Airthings sensor."""
coordinator: DataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
coordinator: AirthingsDataCoordinatorType = hass.data[DOMAIN][entry.entry_id]
entities = [
AirthingsHeaterEnergySensor(
coordinator,
@@ -122,7 +120,9 @@ async def async_setup_entry(
async_add_entities(entities)
class AirthingsHeaterEnergySensor(CoordinatorEntity, SensorEntity):
class AirthingsHeaterEnergySensor(
CoordinatorEntity[AirthingsDataCoordinatorType], SensorEntity
):
"""Representation of a Airthings Sensor device."""
_attr_state_class = SensorStateClass.MEASUREMENT
@@ -130,7 +130,7 @@ class AirthingsHeaterEnergySensor(CoordinatorEntity, SensorEntity):
def __init__(
self,
coordinator: DataUpdateCoordinator,
coordinator: AirthingsDataCoordinatorType,
airthings_device: AirthingsDevice,
entity_description: SensorEntityDescription,
) -> None:
@@ -149,10 +149,10 @@ class AirthingsHeaterEnergySensor(CoordinatorEntity, SensorEntity):
identifiers={(DOMAIN, airthings_device.device_id)},
name=airthings_device.name,
manufacturer="Airthings",
model=airthings_device.device_type.replace("_", " ").lower().title(),
model=airthings_device.product_name,
)
@property
def native_value(self) -> StateType:
"""Return the value reported by the sensor."""
return self.coordinator.data[self._id].sensors[self.entity_description.key]
return self.coordinator.data[self._id].sensors[self.entity_description.key] # type: ignore[no-any-return]
@@ -40,10 +40,11 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
f"Could not find Airthings device with address {address}"
)
airthings = AirthingsBluetoothDeviceData(_LOGGER, elevation, is_metric)
async def _async_update_method() -> AirthingsDevice:
"""Get data from Airthings BLE."""
ble_device = bluetooth.async_ble_device_from_address(hass, address)
airthings = AirthingsBluetoothDeviceData(_LOGGER, elevation, is_metric)
try:
data = await airthings.update_device(ble_device) # type: ignore[arg-type]
@@ -23,6 +23,13 @@ from .const import DOMAIN, MFCT_ID
_LOGGER = logging.getLogger(__name__)
SERVICE_UUIDS = [
"b42e1f6e-ade7-11e4-89d3-123b93f75cba",
"b42e4a8e-ade7-11e4-89d3-123b93f75cba",
"b42e1c08-ade7-11e4-89d3-123b93f75cba",
"b42e3882-ade7-11e4-89d3-123b93f75cba",
]
@dataclasses.dataclass
class Discovery:
@@ -147,6 +154,9 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
if MFCT_ID not in discovery_info.manufacturer_data:
continue
if not any(uuid in SERVICE_UUIDS for uuid in discovery_info.service_uuids):
continue
try:
device = await self._get_device_data(discovery_info)
except AirthingsDeviceUpdateError:
@@ -0,0 +1,18 @@
{
"entity": {
"sensor": {
"radon_1day_avg": {
"default": "mdi:radioactive"
},
"radon_longterm_avg": {
"default": "mdi:radioactive"
},
"radon_1day_level": {
"default": "mdi:radioactive"
},
"radon_longterm_level": {
"default": "mdi:radioactive"
}
}
}
}
@@ -24,5 +24,5 @@
"dependencies": ["bluetooth_adapters"],
"documentation": "https://www.home-assistant.io/integrations/airthings_ble",
"iot_class": "local_polling",
"requirements": ["airthings-ble==0.5.6-2"]
"requirements": ["airthings-ble==0.6.1"]
}
@@ -52,24 +52,20 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
translation_key="radon_1day_avg",
native_unit_of_measurement=VOLUME_BECQUEREL,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:radioactive",
),
"radon_longterm_avg": SensorEntityDescription(
key="radon_longterm_avg",
translation_key="radon_longterm_avg",
native_unit_of_measurement=VOLUME_BECQUEREL,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:radioactive",
),
"radon_1day_level": SensorEntityDescription(
key="radon_1day_level",
translation_key="radon_1day_level",
icon="mdi:radioactive",
),
"radon_longterm_level": SensorEntityDescription(
key="radon_longterm_level",
translation_key="radon_longterm_level",
icon="mdi:radioactive",
),
"temperature": SensorEntityDescription(
key="temperature",
@@ -107,7 +103,6 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
device_class=SensorDeviceClass.VOLATILE_ORGANIC_COMPOUNDS_PARTS,
native_unit_of_measurement=CONCENTRATION_PARTS_PER_BILLION,
state_class=SensorStateClass.MEASUREMENT,
icon="mdi:cloud",
),
"illuminance": SensorEntityDescription(
key="illuminance",
+11 -2
View File
@@ -88,9 +88,13 @@ class AirtouchAC(CoordinatorEntity, ClimateEntity):
_attr_name = None
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, coordinator, ac_number, info):
"""Initialize the climate device."""
@@ -192,9 +196,14 @@ class AirtouchGroup(CoordinatorEntity, ClimateEntity):
_attr_has_entity_name = True
_attr_name = None
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_hvac_modes = AT_GROUP_MODES
_enable_turn_on_off_backwards_compatibility = False
def __init__(self, coordinator, group_number, info):
"""Initialize the climate device."""
@@ -0,0 +1,50 @@
"""The Airtouch 5 integration."""
from __future__ import annotations
from airtouch5py.airtouch5_simple_client import Airtouch5SimpleClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from .const import DOMAIN
PLATFORMS: list[Platform] = [Platform.CLIMATE]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Airtouch 5 from a config entry."""
hass.data.setdefault(DOMAIN, {})
# Create API instance
host = entry.data[CONF_HOST]
client = Airtouch5SimpleClient(host)
# Connect to the API
try:
await client.connect_and_stay_connected()
except TimeoutError as t:
raise ConfigEntryNotReady() from t
# Store an API object for your platforms to access
hass.data[DOMAIN][entry.entry_id] = client
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
if unload_ok := await hass.config_entries.async_unload_platforms(entry, PLATFORMS):
client: Airtouch5SimpleClient = hass.data[DOMAIN][entry.entry_id]
await client.disconnect()
client.ac_status_callbacks.clear()
client.connection_state_callbacks.clear()
client.data_packet_callbacks.clear()
client.zone_status_callbacks.clear()
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
@@ -0,0 +1,379 @@
"""AirTouch 5 component to control AirTouch 5 Climate Devices."""
import logging
from typing import Any
from airtouch5py.airtouch5_simple_client import Airtouch5SimpleClient
from airtouch5py.packets.ac_ability import AcAbility
from airtouch5py.packets.ac_control import (
AcControl,
SetAcFanSpeed,
SetAcMode,
SetpointControl,
SetPowerSetting,
)
from airtouch5py.packets.ac_status import AcFanSpeed, AcMode, AcPowerState, AcStatus
from airtouch5py.packets.zone_control import (
ZoneControlZone,
ZoneSettingPower,
ZoneSettingValue,
)
from airtouch5py.packets.zone_name import ZoneName
from airtouch5py.packets.zone_status import ZonePowerState, ZoneStatusZone
from homeassistant.components.climate import (
FAN_AUTO,
FAN_DIFFUSE,
FAN_FOCUS,
FAN_HIGH,
FAN_LOW,
FAN_MEDIUM,
PRESET_BOOST,
PRESET_NONE,
ClimateEntity,
ClimateEntityFeature,
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN, FAN_INTELLIGENT_AUTO, FAN_TURBO
from .entity import Airtouch5Entity
_LOGGER = logging.getLogger(__name__)
AC_MODE_TO_HVAC_MODE = {
AcMode.AUTO: HVACMode.AUTO,
AcMode.AUTO_COOL: HVACMode.AUTO,
AcMode.AUTO_HEAT: HVACMode.AUTO,
AcMode.COOL: HVACMode.COOL,
AcMode.DRY: HVACMode.DRY,
AcMode.FAN: HVACMode.FAN_ONLY,
AcMode.HEAT: HVACMode.HEAT,
}
HVAC_MODE_TO_SET_AC_MODE = {
HVACMode.AUTO: SetAcMode.SET_TO_AUTO,
HVACMode.COOL: SetAcMode.SET_TO_COOL,
HVACMode.DRY: SetAcMode.SET_TO_DRY,
HVACMode.FAN_ONLY: SetAcMode.SET_TO_FAN,
HVACMode.HEAT: SetAcMode.SET_TO_HEAT,
}
AC_FAN_SPEED_TO_FAN_SPEED = {
AcFanSpeed.AUTO: FAN_AUTO,
AcFanSpeed.QUIET: FAN_DIFFUSE,
AcFanSpeed.LOW: FAN_LOW,
AcFanSpeed.MEDIUM: FAN_MEDIUM,
AcFanSpeed.HIGH: FAN_HIGH,
AcFanSpeed.POWERFUL: FAN_FOCUS,
AcFanSpeed.TURBO: FAN_TURBO,
AcFanSpeed.INTELLIGENT_AUTO_1: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_2: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_3: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_4: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_5: FAN_INTELLIGENT_AUTO,
AcFanSpeed.INTELLIGENT_AUTO_6: FAN_INTELLIGENT_AUTO,
}
FAN_MODE_TO_SET_AC_FAN_SPEED = {
FAN_AUTO: SetAcFanSpeed.SET_TO_AUTO,
FAN_DIFFUSE: SetAcFanSpeed.SET_TO_QUIET,
FAN_LOW: SetAcFanSpeed.SET_TO_LOW,
FAN_MEDIUM: SetAcFanSpeed.SET_TO_MEDIUM,
FAN_HIGH: SetAcFanSpeed.SET_TO_HIGH,
FAN_FOCUS: SetAcFanSpeed.SET_TO_POWERFUL,
FAN_TURBO: SetAcFanSpeed.SET_TO_TURBO,
FAN_INTELLIGENT_AUTO: SetAcFanSpeed.SET_TO_INTELLIGENT_AUTO,
}
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Airtouch 5 Climate entities."""
client: Airtouch5SimpleClient = hass.data[DOMAIN][config_entry.entry_id]
entities: list[ClimateEntity] = []
# Add each AC (and remember what zones they apply to).
# Each zone is controlled by a single AC
zone_to_ac: dict[int, AcAbility] = {}
for ac in client.ac:
for i in range(ac.start_zone_number, ac.start_zone_number + ac.zone_count):
zone_to_ac[i] = ac
entities.append(Airtouch5AC(client, ac))
# Add each zone
for zone in client.zones:
entities.append(Airtouch5Zone(client, zone, zone_to_ac[zone.zone_number]))
async_add_entities(entities)
class Airtouch5ClimateEntity(ClimateEntity, Airtouch5Entity):
"""Base class for Airtouch5 Climate Entities."""
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_target_temperature_step = 1
_attr_name = None
_enable_turn_on_off_backwards_compatibility = False
class Airtouch5AC(Airtouch5ClimateEntity):
"""Representation of the AC unit. Used to control the overall HVAC Mode."""
def __init__(self, client: Airtouch5SimpleClient, ability: AcAbility) -> None:
"""Initialise the Climate Entity."""
super().__init__(client)
self._ability = ability
self._attr_unique_id = f"ac_{ability.ac_number}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"ac_{ability.ac_number}")},
name=f"AC {ability.ac_number}",
manufacturer="Polyaire",
model="AirTouch 5",
)
self._attr_hvac_modes = [HVACMode.OFF]
if ability.supports_mode_auto:
self._attr_hvac_modes.append(HVACMode.AUTO)
if ability.supports_mode_cool:
self._attr_hvac_modes.append(HVACMode.COOL)
if ability.supports_mode_dry:
self._attr_hvac_modes.append(HVACMode.DRY)
if ability.supports_mode_fan:
self._attr_hvac_modes.append(HVACMode.FAN_ONLY)
if ability.supports_mode_heat:
self._attr_hvac_modes.append(HVACMode.HEAT)
self._attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE | ClimateEntityFeature.FAN_MODE
)
if len(self.hvac_modes) > 1:
self._attr_supported_features |= (
ClimateEntityFeature.TURN_OFF | ClimateEntityFeature.TURN_ON
)
self._attr_fan_modes = []
if ability.supports_fan_speed_quiet:
self._attr_fan_modes.append(FAN_DIFFUSE)
if ability.supports_fan_speed_low:
self._attr_fan_modes.append(FAN_LOW)
if ability.supports_fan_speed_medium:
self._attr_fan_modes.append(FAN_MEDIUM)
if ability.supports_fan_speed_high:
self._attr_fan_modes.append(FAN_HIGH)
if ability.supports_fan_speed_powerful:
self._attr_fan_modes.append(FAN_FOCUS)
if ability.supports_fan_speed_turbo:
self._attr_fan_modes.append(FAN_TURBO)
if ability.supports_fan_speed_auto:
self._attr_fan_modes.append(FAN_AUTO)
if ability.supports_fan_speed_intelligent_auto:
self._attr_fan_modes.append(FAN_INTELLIGENT_AUTO)
# We can have different setpoints for heat cool, we expose the lowest low and highest high
self._attr_min_temp = min(
ability.min_cool_set_point, ability.min_heat_set_point
)
self._attr_max_temp = max(
ability.max_cool_set_point, ability.max_heat_set_point
)
@callback
def _async_update_attrs(self, data: dict[int, AcStatus]) -> None:
if self._ability.ac_number not in data:
return
status = data[self._ability.ac_number]
self._attr_current_temperature = status.temperature
self._attr_target_temperature = status.ac_setpoint
if status.ac_power_state in [AcPowerState.OFF, AcPowerState.AWAY_OFF]:
self._attr_hvac_mode = HVACMode.OFF
else:
self._attr_hvac_mode = AC_MODE_TO_HVAC_MODE[status.ac_mode]
self._attr_fan_mode = AC_FAN_SPEED_TO_FAN_SPEED[status.ac_fan_speed]
self.async_write_ha_state()
async def async_added_to_hass(self) -> None:
"""Add data updated listener after this object has been initialized."""
await super().async_added_to_hass()
self._client.ac_status_callbacks.append(self._async_update_attrs)
self._async_update_attrs(self._client.latest_ac_status)
async def async_will_remove_from_hass(self) -> None:
"""Remove data updated listener after this object has been initialized."""
await super().async_will_remove_from_hass()
self._client.ac_status_callbacks.remove(self._async_update_attrs)
async def _control(
self,
*,
power: SetPowerSetting = SetPowerSetting.KEEP_POWER_SETTING,
ac_mode: SetAcMode = SetAcMode.KEEP_AC_MODE,
fan: SetAcFanSpeed = SetAcFanSpeed.KEEP_AC_FAN_SPEED,
setpoint: SetpointControl = SetpointControl.KEEP_SETPOINT_VALUE,
temp: int = 0,
) -> None:
control = AcControl(
power,
self._ability.ac_number,
ac_mode,
fan,
setpoint,
temp,
)
packet = self._client.data_packet_factory.ac_control([control])
await self._client.send_packet(packet)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set new operation mode."""
set_power_setting: SetPowerSetting
set_ac_mode: SetAcMode
if hvac_mode == HVACMode.OFF:
set_power_setting = SetPowerSetting.SET_TO_OFF
set_ac_mode = SetAcMode.KEEP_AC_MODE
else:
set_power_setting = SetPowerSetting.SET_TO_ON
if hvac_mode not in HVAC_MODE_TO_SET_AC_MODE:
raise ValueError(f"Unsupported hvac mode: {hvac_mode}")
set_ac_mode = HVAC_MODE_TO_SET_AC_MODE[hvac_mode]
await self._control(power=set_power_setting, ac_mode=set_ac_mode)
async def async_set_fan_mode(self, fan_mode: str) -> None:
"""Set new fan mode."""
if fan_mode not in FAN_MODE_TO_SET_AC_FAN_SPEED:
raise ValueError(f"Unsupported fan mode: {fan_mode}")
fan_speed = FAN_MODE_TO_SET_AC_FAN_SPEED[fan_mode]
await self._control(fan=fan_speed)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperatures."""
if (temp := kwargs.get(ATTR_TEMPERATURE)) is None:
_LOGGER.debug("Argument `temperature` is missing in set_temperature")
return
await self._control(temp=temp)
class Airtouch5Zone(Airtouch5ClimateEntity):
"""Representation of a Zone. Used to control the AC effect in the zone."""
_attr_hvac_modes = [HVACMode.OFF, HVACMode.FAN_ONLY]
_attr_preset_modes = [PRESET_NONE, PRESET_BOOST]
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.PRESET_MODE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
def __init__(
self, client: Airtouch5SimpleClient, name: ZoneName, ac: AcAbility
) -> None:
"""Initialise the Climate Entity."""
super().__init__(client)
self._name = name
self._attr_unique_id = f"zone_{name.zone_number}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, f"zone_{name.zone_number}")},
name=name.zone_name,
manufacturer="Polyaire",
model="AirTouch 5",
)
# We can have different setpoints for heat and cool, we expose the lowest low and highest high
self._attr_min_temp = min(ac.min_cool_set_point, ac.min_heat_set_point)
self._attr_max_temp = max(ac.max_cool_set_point, ac.max_heat_set_point)
@callback
def _async_update_attrs(self, data: dict[int, ZoneStatusZone]) -> None:
if self._name.zone_number not in data:
return
status = data[self._name.zone_number]
self._attr_current_temperature = status.temperature
self._attr_target_temperature = status.set_point
if status.zone_power_state == ZonePowerState.OFF:
self._attr_hvac_mode = HVACMode.OFF
self._attr_preset_mode = PRESET_NONE
elif status.zone_power_state == ZonePowerState.ON:
self._attr_hvac_mode = HVACMode.FAN_ONLY
self._attr_preset_mode = PRESET_NONE
elif status.zone_power_state == ZonePowerState.TURBO:
self._attr_hvac_mode = HVACMode.FAN_ONLY
self._attr_preset_mode = PRESET_BOOST
else:
self._attr_hvac_mode = None
self.async_write_ha_state()
async def async_added_to_hass(self) -> None:
"""Add data updated listener after this object has been initialized."""
await super().async_added_to_hass()
self._client.zone_status_callbacks.append(self._async_update_attrs)
self._async_update_attrs(self._client.latest_zone_status)
async def async_will_remove_from_hass(self) -> None:
"""Remove data updated listener after this object has been initialized."""
await super().async_will_remove_from_hass()
self._client.zone_status_callbacks.remove(self._async_update_attrs)
async def _control(
self,
*,
zsv: ZoneSettingValue = ZoneSettingValue.KEEP_SETTING_VALUE,
power: ZoneSettingPower = ZoneSettingPower.KEEP_POWER_STATE,
value: float = 0,
) -> None:
control = ZoneControlZone(self._name.zone_number, zsv, power, value)
packet = self._client.data_packet_factory.zone_control([control])
await self._client.send_packet(packet)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set new operation mode."""
power: ZoneSettingPower
if hvac_mode is HVACMode.OFF:
power = ZoneSettingPower.SET_TO_OFF
elif self._attr_preset_mode is PRESET_BOOST:
power = ZoneSettingPower.SET_TO_TURBO
else:
power = ZoneSettingPower.SET_TO_ON
await self._control(power=power)
async def async_set_preset_mode(self, preset_mode: str) -> None:
"""Enable or disable Turbo. Done this way as we can't have a turbo HVACMode."""
power: ZoneSettingPower
if preset_mode == PRESET_BOOST:
power = ZoneSettingPower.SET_TO_TURBO
else:
power = ZoneSettingPower.SET_TO_ON
await self._control(power=power)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperatures."""
if (temp := kwargs.get(ATTR_TEMPERATURE)) is None:
_LOGGER.debug("Argument `temperature` is missing in set_temperature")
return
await self._control(
zsv=ZoneSettingValue.SET_TARGET_SETPOINT,
value=float(temp),
)
async def async_turn_on(self) -> None:
"""Turn the zone on."""
await self.async_set_hvac_mode(HVACMode.FAN_ONLY)
async def async_turn_off(self) -> None:
"""Turn the zone off."""
await self.async_set_hvac_mode(HVACMode.OFF)
@@ -0,0 +1,46 @@
"""Config flow for Airtouch 5 integration."""
from __future__ import annotations
import logging
from typing import Any
from airtouch5py.airtouch5_simple_client import Airtouch5SimpleClient
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.const import CONF_HOST
from homeassistant.data_entry_flow import FlowResult
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
STEP_USER_DATA_SCHEMA = vol.Schema({vol.Required(CONF_HOST): str})
class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Airtouch 5."""
VERSION = 1
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> FlowResult:
"""Handle the initial step."""
errors: dict[str, str] | None = None
if user_input is not None:
client = Airtouch5SimpleClient(user_input[CONF_HOST])
try:
await client.test_connection()
except Exception: # pylint: disable=broad-exception-caught
errors = {"base": "cannot_connect"}
else:
await self.async_set_unique_id(user_input[CONF_HOST])
self._abort_if_unique_id_configured()
return self.async_create_entry(
title=user_input[CONF_HOST], data=user_input
)
return self.async_show_form(
step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors
)
@@ -0,0 +1,6 @@
"""Constants for the Airtouch 5 integration."""
DOMAIN = "airtouch5"
FAN_TURBO = "turbo"
FAN_INTELLIGENT_AUTO = "intelligent_auto"
@@ -0,0 +1,40 @@
"""Base class for Airtouch5 entities."""
from airtouch5py.airtouch5_client import Airtouch5ConnectionStateChange
from airtouch5py.airtouch5_simple_client import Airtouch5SimpleClient
from homeassistant.core import callback
from homeassistant.helpers.entity import Entity
from .const import DOMAIN
class Airtouch5Entity(Entity):
"""Base class for Airtouch5 entities."""
_attr_should_poll = False
_attr_has_entity_name = True
_attr_translation_key = DOMAIN
def __init__(self, client: Airtouch5SimpleClient) -> None:
"""Initialise the Entity."""
self._client = client
self._attr_available = True
@callback
def _receive_connection_callback(
self, state: Airtouch5ConnectionStateChange
) -> None:
self._attr_available = state is Airtouch5ConnectionStateChange.CONNECTED
self.async_write_ha_state()
async def async_added_to_hass(self) -> None:
"""Add data updated listener after this object has been initialized."""
self._client.connection_state_callbacks.append(
self._receive_connection_callback
)
async def async_will_remove_from_hass(self) -> None:
"""Remove data updated listener when entity is removed from homeassistant."""
self._client.connection_state_callbacks.remove(
self._receive_connection_callback
)
@@ -0,0 +1,10 @@
{
"domain": "airtouch5",
"name": "AirTouch 5",
"codeowners": ["@danzel"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airtouch5",
"iot_class": "local_push",
"loggers": ["airtouch5py"],
"requirements": ["airtouch5py==0.2.8"]
}
@@ -0,0 +1,32 @@
{
"config": {
"step": {
"user": {
"data": {
"host": "[%key:common::config_flow::data::host%]"
}
}
},
"error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"unknown": "[%key:common::config_flow::error::unknown%]"
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]"
}
},
"entity": {
"climate": {
"airtouch5": {
"state_attributes": {
"fan_mode": {
"state": {
"turbo": "Turbo",
"intelligent_auto": "Intelligent Auto"
}
}
}
}
}
}
}
@@ -242,7 +242,7 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
# 1 -> 2: One geography per config entry
if version == 1:
version = entry.version = 2
version = 2
# Update the config entry to only include the first geography (there is always
# guaranteed to be at least one):
@@ -255,6 +255,7 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
unique_id=first_id,
title=f"Cloud API ({first_id})",
data={CONF_API_KEY: entry.data[CONF_API_KEY], **first_geography},
version=version,
)
# For any geographies that remain, create a new config entry for each one:
@@ -379,7 +380,7 @@ async def async_migrate_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
},
)
else:
entry.version = version
hass.config_entries.async_update_entry(entry, version=version)
LOGGER.info("Migration to version %s successful", version)
@@ -0,0 +1,12 @@
{
"entity": {
"sensor": {
"pollutant_level": {
"default": "mdi:gauge"
},
"pollutant_label": {
"default": "mdi:chemical-weapon"
}
}
}
}
@@ -5,6 +5,7 @@
"config_flow": true,
"dependencies": ["airvisual_pro"],
"documentation": "https://www.home-assistant.io/integrations/airvisual",
"import_executor": true,
"integration_type": "service",
"iot_class": "cloud_polling",
"loggers": ["pyairvisual", "pysmb"],
@@ -42,7 +42,6 @@ GEOGRAPHY_SENSOR_DESCRIPTIONS = (
SensorEntityDescription(
key=SENSOR_KIND_LEVEL,
name="Air pollution level",
icon="mdi:gauge",
device_class=SensorDeviceClass.ENUM,
options=[
"good",
@@ -63,7 +62,6 @@ GEOGRAPHY_SENSOR_DESCRIPTIONS = (
SensorEntityDescription(
key=SENSOR_KIND_POLLUTANT,
name="Main pollutant",
icon="mdi:chemical-weapon",
device_class=SensorDeviceClass.ENUM,
options=["co", "n2", "o3", "p1", "p2", "s2"],
translation_key="pollutant_label",
@@ -26,22 +26,15 @@ from . import AirVisualProData, AirVisualProEntity
from .const import DOMAIN
@dataclass(frozen=True)
class AirVisualProMeasurementKeyMixin:
"""Define an entity description mixin to include a measurement key."""
@dataclass(frozen=True, kw_only=True)
class AirVisualProMeasurementDescription(SensorEntityDescription):
"""Describe an AirVisual Pro sensor."""
value_fn: Callable[
[dict[str, Any], dict[str, Any], dict[str, Any], dict[str, Any]], float | int
]
@dataclass(frozen=True)
class AirVisualProMeasurementDescription(
SensorEntityDescription, AirVisualProMeasurementKeyMixin
):
"""Describe an AirVisual Pro sensor."""
SENSOR_DESCRIPTIONS = (
AirVisualProMeasurementDescription(
key="air_quality_index",
@@ -67,6 +60,7 @@ SENSOR_DESCRIPTIONS = (
device_class=SensorDeviceClass.BATTERY,
entity_category=EntityCategory.DIAGNOSTIC,
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
value_fn=lambda settings, status, measurements, history: status["battery"],
),
AirVisualProMeasurementDescription(
@@ -80,6 +74,7 @@ SENSOR_DESCRIPTIONS = (
key="humidity",
device_class=SensorDeviceClass.HUMIDITY,
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
value_fn=lambda settings, status, measurements, history: measurements[
"humidity"
],
+6 -1
View File
@@ -117,6 +117,7 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
_attr_name = None
_speeds: dict[int, str] = {}
_speeds_reverse: dict[str, int] = {}
_enable_turn_on_off_backwards_compatibility = False
def __init__(
self,
@@ -129,7 +130,11 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
super().__init__(coordinator, entry, system_zone_id, zone_data)
self._attr_unique_id = f"{self._attr_unique_id}_{system_zone_id}"
self._attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
self._attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
self._attr_target_temperature_step = API_TEMPERATURE_STEP
self._attr_temperature_unit = TEMP_UNIT_LIB_TO_HASS[
self.get_airzone_value(AZD_TEMP_UNIT)
@@ -11,5 +11,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone",
"iot_class": "local_polling",
"loggers": ["aioairzone"],
"requirements": ["aioairzone==0.7.2"]
"requirements": ["aioairzone==0.7.6"]
}
@@ -24,6 +24,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
options = ConnectionOptions(
entry.data[CONF_USERNAME],
entry.data[CONF_PASSWORD],
True,
)
airzone = AirzoneCloudApi(aiohttp_client.async_get_clientsession(hass), options)
@@ -7,6 +7,7 @@ from typing import Any, Final
from aioairzone_cloud.const import (
AZD_ACTIVE,
AZD_AIDOOS,
AZD_AQ_ACTIVE,
AZD_ERRORS,
AZD_PROBLEMS,
AZD_SYSTEMS,
@@ -76,6 +77,10 @@ ZONE_BINARY_SENSOR_TYPES: Final[tuple[AirzoneBinarySensorEntityDescription, ...]
device_class=BinarySensorDeviceClass.RUNNING,
key=AZD_ACTIVE,
),
AirzoneBinarySensorEntityDescription(
key=AZD_AQ_ACTIVE,
translation_key="air_quality_active",
),
AirzoneBinarySensorEntityDescription(
attributes={
"warnings": AZD_WARNINGS,
@@ -144,8 +144,8 @@ class AirzoneClimate(AirzoneEntity, ClimateEntity):
"""Define an Airzone Cloud climate."""
_attr_name = None
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_enable_turn_on_off_backwards_compatibility = False
@callback
def _handle_coordinator_update(self) -> None:
@@ -175,6 +175,12 @@ class AirzoneClimate(AirzoneEntity, ClimateEntity):
class AirzoneDeviceClimate(AirzoneClimate):
"""Define an Airzone Cloud Device base class."""
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
async def async_turn_on(self) -> None:
"""Turn the entity on."""
params = {
@@ -212,6 +218,12 @@ class AirzoneDeviceClimate(AirzoneClimate):
class AirzoneDeviceGroupClimate(AirzoneClimate):
"""Define an Airzone Cloud DeviceGroup base class."""
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_OFF
| ClimateEntityFeature.TURN_ON
)
async def async_turn_on(self) -> None:
"""Turn the entity on."""
params = {
@@ -94,6 +94,7 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
ConnectionOptions(
user_input[CONF_USERNAME],
user_input[CONF_PASSWORD],
False,
),
)
@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone_cloud",
"iot_class": "cloud_polling",
"loggers": ["aioairzone_cloud"],
"requirements": ["aioairzone-cloud==0.3.6"]
"requirements": ["aioairzone-cloud==0.4.5"]
}

Some files were not shown because too many files have changed in this diff Show More