Compare commits

...

2509 Commits

Author SHA1 Message Date
Franck Nijhof
460909a7f6 2024.6.0 (#118400) 2024-06-05 20:06:01 +02:00
Franck Nijhof
21fd012447 Bump version to 2024.6.0 2024-06-05 19:00:08 +02:00
Robert Resch
c27f0c560e Replace slave by meter in v2c (#118893) 2024-06-05 18:59:52 +02:00
Michael Hansen
0f4a1b421e Bump intents to 2024.6.5 (#118890) 2024-06-05 18:59:49 +02:00
Erik Montnemery
5e35ce2996 Improve WS command validate_config (#118864)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-06-05 18:59:44 +02:00
Franck Nijhof
e5804307e7 Bump version to 2024.6.0b9 2024-06-05 15:51:19 +02:00
Bram Kragten
3b74b63b23 Update frontend to 20240605.0 (#118875) 2024-06-05 15:51:08 +02:00
Marc Mueller
06df32d9d4 Fix TypeAliasType not callable in senz (#118872) 2024-06-05 15:51:05 +02:00
Jan Bouwhuis
63947e4980 Improve repair issue when notify service is still being used (#118855)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-06-05 15:51:02 +02:00
Ethem Cem Özkan
ac6a377478 Bump python-roborock to 2.2.3 (#118853)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-06-05 15:50:59 +02:00
Paulus Schoutsen
18af423a78 Fix the radio browser doing I/O in the event loop (#118842) 2024-06-05 15:50:56 +02:00
Franck Nijhof
f1445bc8f5 Fix capitalization of protocols in Reolink option flow (#118839) 2024-06-05 15:50:53 +02:00
starkillerOG
3784c99305 Conserve Reolink battery by not waking the camera on each update (#118773)
* update to new cmd_list type

* Wake battery cams each 1 hour

* fix styling

* fix epoch

* fix timezone

* force full update when using generic update service

* improve comment

* Use time.time() instead of datetime

* fix import order
2024-06-05 15:50:50 +02:00
Pete Sage
0084d6c5bd Fix Hydrawise sensor availability (#118669)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-06-05 15:50:47 +02:00
Franck Nijhof
f1e6375406 Bump version to 2024.6.0b8 2024-06-04 21:32:36 +02:00
Jan-Philipp Benecke
9157905f80 Initialize the Sentry SDK within an import executor job to not block event loop (#118830) 2024-06-04 21:31:49 +02:00
J. Nick Koston
b02c9aa2ef Ensure name of task is logged for unhandled loop exceptions (#118822) 2024-06-04 21:31:45 +02:00
Bram Kragten
6e30fd7633 Update frontend to 20240604.0 (#118811) 2024-06-04 21:31:42 +02:00
Stefan Agner
74b29c2e54 Bump Python Matter Server library to 6.1.0 (#118806) 2024-06-04 21:31:38 +02:00
Maciej Bieniek
b1b26af92b Check if Shelly entry.runtime_data is available (#118805)
* Check if runtime_data is available

* Add tests

* Use `is` operator

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-06-04 21:31:33 +02:00
arturyak
b107ffd30d Add missing FAN_ONLY mode to ccm15 (#118804) 2024-06-04 21:31:28 +02:00
Joost Lekkerkerker
776675404a Set unique id in aladdin connect config flow (#118798) 2024-06-04 21:30:08 +02:00
Paulus Schoutsen
38ee32fed2 Include script description in LLM exposed entities (#118749)
* Include script description in LLM exposed entities

* Fix race in test

* Fix type

* Expose script

* Remove fields
2024-06-04 21:21:26 +02:00
Tsvi Mostovicz
111d11aaca Fix updating options in Jewish Calendar (#118643) 2024-06-04 21:21:23 +02:00
Jack Boswell
ff8752ea4f Fix calculation of Starlink sleep end setting (#115507)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-06-04 21:21:13 +02:00
Franck Nijhof
2151f7ebf3 Bump version to 2024.6.0b7 2024-06-04 12:20:22 +02:00
Richard Kroegel
50efce4e53 Allow per-sensor unit conversion on BMW sensors (#110272)
* Update BMW sensors to use device_class

* Test adjustments

* Trigger CI

* Remove unneeded cast

* Set suggested_display_precision to 0

* Rebase for climate_status

* Change charging_status to ENUM device class

* Add test for Enum translations

* Pin Enum sensor values

* Use snapshot_platform helper

* Remove translation tests

* Formatting

* Remove comment

* Use const.STATE_UNKOWN

* Fix typo

* Update strings

* Loop through Enum sensors

* Revert enum sensor changes

---------

Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-06-04 12:20:08 +02:00
Richard Kroegel
c8538f3c08 Use snapshot_platform helper for BMW tests (#118735)
* Use snapshot_platform helper

* Remove comments

---------

Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-06-04 12:19:01 +02:00
Richard Kroegel
4bfff12570 Set lock state to unkown on BMW API error (#118559)
* Revert to previous lock state on BMW API error

* Set lock state to unkown on error and force refresh from API

---------

Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-06-04 12:02:47 +02:00
Richard Kroegel
f2b1635969 Refactor fixture calling for BMW tests (#118708)
* Refactor BMW tests to use pytest.mark.usefixtures

* Fix freeze_time

---------

Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-06-04 12:01:40 +02:00
Joost Lekkerkerker
b3b8ae31fd Move Aladdin stale device removal to init module (#118784) 2024-06-04 11:58:35 +02:00
Joost Lekkerkerker
ba96fc272b Re-enable sensor platform for Aladdin Connect (#118782) 2024-06-04 11:58:32 +02:00
Joost Lekkerkerker
c702174fa0 Add coordinator to Aladdin Connect (#118781) 2024-06-04 11:58:29 +02:00
Joost Lekkerkerker
5d6fe7387e Use model from Aladdin Connect lib (#118778)
* Use model from Aladdin Connect lib

* Fix
2024-06-04 11:58:25 +02:00
Joost Lekkerkerker
c76b7a48d3 Initial cleanup for Aladdin connect (#118777) 2024-06-04 11:58:22 +02:00
Joost Lekkerkerker
954e8ff9b3 Bump airgradient to 0.4.3 (#118776) 2024-06-04 11:58:18 +02:00
Joakim Sørensen
8c332ddbdb Update hass-nabucasa to version 0.81.1 (#118768) 2024-06-04 11:58:15 +02:00
Jan Bouwhuis
01c4ca2749 Recover mqtt abbrevations optimizations (#118762)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-06-04 11:58:12 +02:00
Michael Hansen
4b4b5362d9 Clean up exposed domains (#118753)
* Remove lock and script

* Add media player

* Fix tests
2024-06-04 11:58:08 +02:00
Jan Bouwhuis
70d7cedf08 Do not log mqtt origin info if the log level does not allow it (#118752) 2024-06-04 11:58:05 +02:00
Michael Hansen
7bbfb1a22b Bump intents to 2024.6.3 (#118748) 2024-06-04 11:58:02 +02:00
Paulus Schoutsen
d68d871054 Update OpenAI prompt on each interaction (#118747) 2024-06-04 11:57:58 +02:00
Jan Bouwhuis
69bdefb02d Revert "Allow MQTT device based auto discovery" (#118746)
Revert "Allow MQTT device based auto discovery (#109030)"

This reverts commit 585892f067.
2024-06-04 11:57:55 +02:00
Paulus Schoutsen
ebaec6380f Google Gen AI: Copy messages to avoid changing the trace data (#118745) 2024-06-04 11:57:51 +02:00
starkillerOG
9cf6e9b21a Bump reolink-aio to 0.9.1 (#118655)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-06-04 11:55:34 +02:00
David Bonnes
eb1a9eda60 Harden evohome against failures to retrieve zone schedules (#118517) 2024-06-04 11:55:21 +02:00
Franck Nijhof
26344ffd74 Bump version to 2024.6.0b6 2024-06-03 21:27:31 +02:00
Paulus Schoutsen
2940104008 Remove dispatcher from Tag entity (#118671)
* Remove dispatcher from Tag entity

* type

* Don't use  helper

* Del is faster than pop

* Use id in update

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-06-03 21:27:08 +02:00
Joost Lekkerkerker
8072a268a1 Require firmware version 3.1.1 for airgradient (#118744) 2024-06-03 21:26:19 +02:00
Bram Kragten
b5f557ad73 Update frontend to 20240603.0 (#118736) 2024-06-03 21:26:16 +02:00
Michael Hansen
f977b54312 Resolve areas/floors to ids in intent_script (#118734) 2024-06-03 21:26:13 +02:00
Jan-Philipp Benecke
11b2f201f3 Rename Discovergy to inexogy (#118724) 2024-06-03 21:26:10 +02:00
Erik Montnemery
8cc3c147fe Tweak light service schema (#118720) 2024-06-03 21:26:07 +02:00
epenet
fd9ea2f224 Bump renault-api to 0.2.3 (#118718) 2024-06-03 21:26:04 +02:00
Diogo Gomes
f064f44a09 Address reviews comments in #117147 (#118714) 2024-06-03 21:26:01 +02:00
Erik Montnemery
f3d1157bc4 Remove tag_id from tag store (#118713) 2024-06-03 21:25:58 +02:00
mkmer
85982d2b87 Remove unintended translation key from blink (#118712) 2024-06-03 21:25:55 +02:00
Erik Montnemery
cc83443ad1 Don't store tag_id in tag storage (#118707) 2024-06-03 21:25:52 +02:00
tronikos
8a516207e9 Use ISO format when passing date to LLMs (#118705) 2024-06-03 21:25:49 +02:00
Mick Vleeshouwer
f805df8390 Bump pyoverkiz to 1.13.11 (#118703) 2024-06-03 21:25:46 +02:00
Joost Lekkerkerker
ea85ed6992 Disable both option in Airgradient select (#118702) 2024-06-03 21:25:43 +02:00
Joost Lekkerkerker
54425b756e Configure device in airgradient config flow (#118699) 2024-06-03 21:25:40 +02:00
Paul Bottein
7b43b587a7 Bump python-roborock to 2.2.2 (#118697) 2024-06-03 21:25:37 +02:00
Matrix
7e71975358 Fixing device model compatibility issues. (#118686) 2024-06-03 21:25:34 +02:00
J. Nick Koston
e0232510d7 Revert "Add websocket API to get list of recorded entities (#92640)" (#118644)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-06-03 21:21:45 +02:00
Paulus Schoutsen
84f9bb1d63 Automatically fill in slots based on LLM context (#118619)
* Automatically fill in slots from LLM context

* Add tests

* Apply suggestions from code review

Co-authored-by: Allen Porter <allen@thebends.org>

---------

Co-authored-by: Allen Porter <allen@thebends.org>
2024-06-03 21:21:41 +02:00
David Knowles
b436fe94ae Bump pydrawise to 2024.6.2 (#118608) 2024-06-03 21:21:38 +02:00
epenet
aff5da5762 Address late review comment in samsungtv (#118539)
Address late comment in samsungtv
2024-06-03 21:21:29 +02:00
Paulus Schoutsen
b5783e6f5c Bump version to 2024.6.0b5 2024-06-03 01:10:10 +00:00
G Johansson
1708b60ecf Fix entity state dispatching for Tag entities (#118662) 2024-06-03 01:10:06 +00:00
puddly
3c012c497b Bump ZHA dependencies (#118658)
* Bump bellows to 0.39.0

* Do not create a backup if there is no active ZHA gateway object

* Bump universal-silabs-flasher as well
2024-06-03 01:10:05 +00:00
Joost Lekkerkerker
4d2dc9a40e Fix incorrect placeholder in SharkIQ (#118640)
Update strings.json
2024-06-03 01:10:05 +00:00
Jan Bouwhuis
3653a51288 Fix handling undecoded mqtt sensor payloads (#118633) 2024-06-03 01:10:04 +00:00
J. Nick Koston
9366a4e69b Include a traceback for non-strict event loop blocking detection (#118620) 2024-06-03 01:10:03 +00:00
Luca Angemi
1d1af7ec11 Fix telegram bot send_document (#118616) 2024-06-03 01:10:02 +00:00
tronikos
236b19c5b3 Use gemini-1.5-flash-latest in google_generative_ai_conversation.generate_content (#118594) 2024-06-03 01:10:02 +00:00
tronikos
1afbfd687f Strip Google AI text responses (#118593)
* Strip Google AI test responses

* strip each part
2024-06-03 01:10:01 +00:00
Paulus Schoutsen
20159d0277 Add base prompt for LLMs (#118592) 2024-06-03 01:10:00 +00:00
tronikos
4df3d43e45 Stop instructing LLM to not pass the domain as a list (#118590) 2024-06-03 01:10:00 +00:00
Michael
1a588760b9 Avoid future exception during setup of Synology DSM (#118583)
* avoid future exception during integration setup

* clear future flag during setup

* always clear the flag (with comment)
2024-06-03 01:09:58 +00:00
Jan-Philipp Benecke
6ba9e7d5fd Run ruff format for device registry (#118582) 2024-06-03 01:09:58 +00:00
epenet
4b06c5d2fb Update device connections in samsungtv (#118556) 2024-06-03 01:09:57 +00:00
Adam Pasztor
bfc1c62a49 Bump pyads to 3.4.0 (#116934)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-06-03 01:09:57 +00:00
Thomas Ytterdal
c52fabcf77 Ignore myuplink sensors without a description that provide non-numeric values (#115525)
Ignore sensors without a description that provide non-numeric values

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2024-06-03 01:09:56 +00:00
Paulus Schoutsen
b39d7b39e1 Bump version to 2024.6.0b4 2024-05-31 19:34:58 +00:00
Paulus Schoutsen
c01c155037 Fix openAI tool calls (#118577) 2024-05-31 19:34:38 +00:00
epenet
b459559c8b Add ability to replace connections in DeviceRegistry (#118555)
* Add ability to replace connections in DeviceRegistry

* Add more tests

* Improve coverage

* Apply suggestion

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2024-05-31 19:34:38 +00:00
Maciej Bieniek
d823e56659 In Brother integration use SnmpEngine from SNMP integration (#118554)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-31 19:34:37 +00:00
Michael Chisholm
e401a0da7f Fix KeyError in dlna_dmr SSDP config flow when checking existing config entries (#118549)
Fix KeyError checking existing dlna_dmr config entries
2024-05-31 19:34:36 +00:00
Tsvi Mostovicz
3f6df28ef3 Fix YAML deprecation breaking version in jewish calendar and media extractor (#118546)
* Fix YAML deprecation breaking version

* Update

* fix media extractor deprecation as well

* Add issue_domain
2024-05-31 19:34:35 +00:00
Joost Lekkerkerker
9b63779063 Fix typo in OWM strings (#118538)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-05-31 19:34:35 +00:00
Josef Zweck
4998fe5e6d Migrate openai_conversation to entry.runtime_data (#118535)
* switch to entry.runtime_data

* check for missing config entry

* Update homeassistant/components/openai_conversation/__init__.py

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2024-05-31 19:34:34 +00:00
Brett Adams
a59c890779 Fix off_grid_vehicle_charging_reserve_percent in Teselemetry (#118532) 2024-05-31 19:34:34 +00:00
Luca Angemi
a2cdb349f4 Fix telegram doing blocking I/O in the event loop (#118531) 2024-05-31 19:34:33 +00:00
J. Nick Koston
267228cae0 Fix openweathermap config entry migration (#118526)
* Fix openweathermap config entry migration

The options keys were accidentally migrated to data so
they could no longer be changed in the options flow

* more fixes

* adjust

* reduce

* fix

* adjust
2024-05-31 19:34:32 +00:00
J. Nick Koston
ba769f4d9f Fix snmp doing blocking I/O in the event loop (#118521) 2024-05-31 19:34:31 +00:00
Denis Shulyaka
c09bc726d1 Add OpenAI Conversation system prompt user_name and llm_context variables (#118512)
* OpenAI Conversation: Add variables to the system prompt

* User name and llm_context

* test for user name

* test for user id

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-31 19:34:31 +00:00
Josef Zweck
c441f689bf Add typing for OpenAI client and fallout (#118514)
* typing for client and consequences

* Update homeassistant/components/openai_conversation/conversation.py

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2024-05-31 19:34:07 +00:00
Denis Shulyaka
395e1ae31e Add Google Generative AI Conversation system prompt user_name and llm_context variables (#118510)
* Google Generative AI Conversation: Add variables to the system prompt

* User name and llm_context

* test for template variables

* test for template variables

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-31 19:32:47 +00:00
Bas Brussee
2e45d678b8 Revert "Fix Tibber sensors state class" (#118409)
Revert "Fix Tibber sensors state class (#117085)"

This reverts commit 658c1f3d97.
2024-05-31 19:32:46 +00:00
Paulus Schoutsen
17cb25a5b6 Rename llm.ToolContext to llm.LLMContext (#118566) 2024-05-31 19:32:07 +00:00
Paulus Schoutsen
e5e26de06f Bump version to 2024.6.0b3 2024-05-31 02:20:10 +00:00
tronikos
7dab255c15 Fix unnecessary single quotes escaping in Google AI (#118522) 2024-05-31 02:19:58 +00:00
tronikos
cea7347ed9 Improve LLM prompt (#118520) 2024-05-31 02:19:56 +00:00
tronikos
f4a876c590 Fix LLMs asking which area when there is only one device (#118518)
* Ignore deprecated open and close cover intents for LLMs

* Fix LLMs asking which area when there is only one device

* remove unrelated changed

* remove unrelated changes
2024-05-31 02:19:55 +00:00
tronikos
117a02972d Ignore deprecated open and close cover intents for LLMs (#118515) 2024-05-31 02:19:54 +00:00
G Johansson
3fb40deacb Fix key issue in config entry options in Openweathermap (#118506) 2024-05-31 02:19:54 +00:00
G Johansson
38c88c576b Fix tado non-string unique id for device trackers (#118505)
* Fix tado none string unique id for device trackers

* Add comment

* Fix comment
2024-05-31 02:19:53 +00:00
Paulus Schoutsen
e95b63bc89 Intent script: allow setting description and platforms (#118500)
* Add description to intent_script

* Allow setting platforms
2024-05-31 02:19:51 +00:00
Jan Bouwhuis
ea44b534e6 Fix group platform dependencies (#118499) 2024-05-31 02:19:50 +00:00
G Johansson
7646d853f4 Remove not needed hass object from Tag (#118498) 2024-05-31 02:19:49 +00:00
G Johansson
248c7c33b2 Fix blocking call in holiday (#118496) 2024-05-31 02:19:48 +00:00
Paulus Schoutsen
eb887a707c Ignore the toggle intent (#118491) 2024-05-31 02:19:46 +00:00
David Bonnes
e3ddbb2768 Fix evohome so it doesn't retrieve schedules unnecessarily (#118478) 2024-05-31 02:19:45 +00:00
Jan-Philipp Benecke
008aec5670 Log aiohttp error in rest_command (#118453) 2024-05-31 02:19:45 +00:00
Tsvi Mostovicz
d93d7159db Fix Jewish calendar unique id's (#117985)
* Initial commit

* Fix updating of unique id

* Add testing to check the unique id is being updated correctly

* Reload the config entry and confirm the unique id has not been changed

* Move updating unique_id to __init__.py as suggested

* Change the config_entry variable's name back from config to config_entry

* Move the loop into the update_unique_ids method

* Move test from test_config_flow to test_init

* Try an early optimization to check if we need to update the unique ids

* Mention the correct version

* Implement suggestions

* Ensure all entities are migrated correctly

* Just to be sure keep the previous assertion as well
2024-05-31 02:19:44 +00:00
Diogo Gomes
e6e017dab7 Add support for V2C Trydan 2.1.7 (#117147)
* Support for firmware 2.1.7

* add device ID as unique_id

* add device ID as unique_id

* add test device id as unique_id

* backward compatibility

* move outside try

* Sensor return type

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

* not needed

* make slave error enum state

* fix enum

* Update homeassistant/components/v2c/sensor.py

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

* Update homeassistant/components/v2c/strings.json

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

* Update homeassistant/components/v2c/strings.json

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

* simplify tests

* fix misspellings from upstream library

* add sensor tests

* just enough coverage for enum sensor

* Refactor V2C tests (#117264)

* Refactor V2C tests

* fix rebase issues

* ruff

* review

* fix https://github.com/home-assistant/core/issues/117296

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-31 02:19:43 +00:00
dontinelli
486c72db73 Adjustment of unit of measurement for light (#116695) 2024-05-31 02:19:42 +00:00
Franck Nijhof
4beb184faf Bump version to 2024.6.0b2 2024-05-30 17:02:58 +02:00
Bram Kragten
4951b60b1d Update frontend to 20240530.0 (#118489) 2024-05-30 17:02:37 +02:00
Marcel van der Veldt
9095941b62 Mark Matter climate dry/fan mode support on Panasonic AC (#118485) 2024-05-30 17:02:32 +02:00
Marcel van der Veldt
e906812fbd Extend Matter sensor discovery schemas for Air Purifier / Air Quality devices (#118483)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-05-30 17:02:26 +02:00
Robert Resch
522152e7d2 Set enity_category to config for airgradient select entities (#118477) 2024-05-30 17:02:21 +02:00
lunmay
50acc26812 Typo fix in media_extractor (#118473) 2024-05-30 17:02:16 +02:00
Maciej Bieniek
356374cdc3 Raise ConfigEntryNotReady when there is no _id in the Tractive data (#118467)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-30 17:02:11 +02:00
Robert Resch
98d905562e Bump deebot-client to 7.3.0 (#118462) 2024-05-30 17:02:05 +02:00
tronikos
48342837c0 Instruct LLM to not pass a list to the domain (#118451) 2024-05-30 17:02:00 +02:00
tronikos
3e0d9516a9 Improve LLM prompt (#118443)
* Improve LLM prompt

* test

* improvements

* improvements
2024-05-30 17:01:55 +02:00
Alexey Guseynov
c6c36718b9 Add Total Volatile Organic Compounds (tVOC) matter discovery schema (#116963) 2024-05-30 17:01:49 +02:00
Franck Nijhof
8ee1d8865c Bump version to 2024.6.0b1 2024-05-30 01:19:49 +02:00
J. Nick Koston
5d5210b47d Fix google_mail doing blocking i/o in the event loop (take 2) (#118441) 2024-05-30 01:18:34 +02:00
tronikos
27cc97bbeb Bump opower to 0.4.6 (#118434) 2024-05-30 01:18:31 +02:00
J. Nick Koston
9728103de4 Fix blocking I/O in the event loop in meteo_france (#118429) 2024-05-30 01:18:28 +02:00
Evgeny
ebf9013569 Fix OpenWeatherMap migration (#118428) 2024-05-30 01:18:24 +02:00
J. Nick Koston
b75f3d9681 Fix workday doing blocking I/O in the event loop (#118422) 2024-05-30 01:18:21 +02:00
J. Nick Koston
0d4990799f Fix google_mail doing blocking I/O in the event loop (#118421)
fixes #118411
2024-05-30 01:18:17 +02:00
J. Nick Koston
1e77a59561 Fix google_tasks doing blocking I/O in the event loop (#118418)
fixes #118407
2024-05-30 01:17:37 +02:00
J. Nick Koston
7ee2f09fe1 Ensure paho.mqtt.client is imported in the executor (#118412)
fixes #118405
2024-05-30 00:12:34 +02:00
Michael Hansen
23d9b4b17f Handle case where timer device id exists but is not registered (delayed command) (#118410)
Handle case where device id exists but is not registered
2024-05-30 00:12:30 +02:00
Marcel van der Veldt
a580d834da Fix light discovery for Matter dimmable plugin unit (#118404) 2024-05-30 00:12:27 +02:00
Marcel van der Veldt
4fb6e59fdc Add translation strings for Matter Fan presets (#118401) 2024-05-30 00:12:24 +02:00
swcloudgenie
ad3823764a New official genie garage integration (#117020)
* new official genie garage integration

* move api constants into api module

* move scan interval constant to cover.py
2024-05-30 00:12:19 +02:00
Franck Nijhof
024de4f8a6 Bump version to 2024.6.0b0 2024-05-29 20:17:13 +02:00
Joost Lekkerkerker
c80718628e Add select entities to AirGradient (#117136) 2024-05-29 20:12:51 +02:00
TheJulianJES
6382cb9134 Bump zha-quirks to 0.0.116 (#118393) 2024-05-29 19:52:25 +02:00
Marcel van der Veldt
7136be5047 Bump Python Matter Server library to 6.1.0(b0) (#118388) 2024-05-29 19:20:18 +02:00
Bram Kragten
23381ff30c Bump frontend to 20240529.0 (#118392) 2024-05-29 19:06:46 +02:00
Michael Hansen
3ffbbcfa5c Allow delayed commands to not have a device id (#118390) 2024-05-29 12:39:41 -04:00
Joost Lekkerkerker
181ae1227a Bump airgradient to 0.4.2 (#118389) 2024-05-29 18:17:26 +02:00
G Johansson
9e3e7f5b48 Entity for Tags (#115048)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik <erik@montnemery.com>
2024-05-29 17:45:19 +02:00
Sid
f37edc207e Bump ruff to 0.4.6 (#118384) 2024-05-29 17:35:54 +02:00
Markus Jacobsen
7fda7ccafc Convert unnecessary coroutines into functions (#118311) 2024-05-29 16:44:43 +02:00
Michael
916c6a2f46 Rework and simplify the cleanup of orphan AVM Fritz!Tools entities (#117706) 2024-05-29 15:52:49 +02:00
tronikos
3d15e15e59 Add Android TV Remote debug logs to help with zeroconf issue (#117960) 2024-05-29 15:50:13 +02:00
Joost Lekkerkerker
9e342a61f3 Bump yt-dlp to 2024.05.27 (#118378) 2024-05-29 15:38:21 +02:00
epenet
461ac1e0bc Add ClientSessionGenerator type hints in tests (#118377) 2024-05-29 14:49:14 +02:00
epenet
d10362e226 Add AiohttpClientMocker type hints in tests (#118373) 2024-05-29 14:38:46 +02:00
osohotwateriot
d69431ea48 Bump pyosoenergyapi to 1.1.4 (#118368) 2024-05-29 14:15:26 +02:00
epenet
1fbf93fd36 Add SnapshotAssertion type hints in tests (#118371) 2024-05-29 14:11:58 +02:00
epenet
166c588cac Add LogCaptureFixture type hints in tests (#118372) 2024-05-29 14:10:00 +02:00
tronikos
aeee222df4 Default to gemini-1.5-flash-latest in Google Generative AI (#118367)
Default to flash
2024-05-29 08:04:47 -04:00
tronikos
4056c4c2cc Ask LLM to pass area name and domain (#118357) 2024-05-29 08:03:43 -04:00
tronikos
c75cb08aae Fix LLM tracing for Google Generative AI (#118359)
Fix LLM tracing for Gemini
2024-05-29 08:02:59 -04:00
tronikos
b7ee90a53c Expose useful media player attributes to LLMs (#118363) 2024-05-29 08:01:40 -04:00
karwosts
6e5dcd8b8d Support in blueprint schema for input sections (#110513)
* initial commit for sections

* updates

* add description

* fix test

* rename collapsed key

* New schema

* update snapshots

* Testing for sections

* Validate no duplicate input keys across sections

* rename all_inputs

* Update homeassistant/components/blueprint/models.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-29 13:13:01 +02:00
tronikos
d83ab7bb04 Fix issue when you have multiple Google Generative AI config entries and you remove one of them (#118365) 2024-05-29 11:59:06 +02:00
dontinelli
aa957600ce Set quality scale of fyta to platinum (#118307) 2024-05-29 11:41:59 +02:00
Joakim Sørensen
d33068d00c Update pylaunches dependency to version 2.0.0 (#118362) 2024-05-29 11:18:29 +02:00
Adam Kapos
43f42dd512 Extend image_upload to return the original image (#116652) 2024-05-29 11:16:23 +02:00
Jan Bouwhuis
585892f067 Allow MQTT device based auto discovery (#109030)
* Add MQTT device based auto discovery

* Respect override of component options over shared ones

* Add state_topic, command_topic, qos and encoding as shared options

* Add shared option test

* Rename device.py to schemas.py

* Remove unused legacy `platform` attribute to avoid confusion

* Split validation device and origin info

* Require `origin` info on device based discovery

* Log origin info for only once for device discovery

* Fix tests and linters

* ruff

* speed up _replace_all_abbreviations

* Fix imports and merging errors - add slots attr

* Fix unrelated const changes

* More unrelated changes

* join string

* fix merge

* Undo move

* Adjust logger statement

* fix task storm to load platforms

* Revert "fix task storm to load platforms"

This reverts commit 8f12a5f2511ab872880a186f5a4605c8bae80c7d.

* bail if logging is disabled

* Correct mixup object_id and node_id

* Auto migrate entities to device discovery

* Add device discovery test for device_trigger

* Add migration support for non entity platforms

* Use helper to remove discovery payload

* Fix tests after update branch

* Add discovery migration test

* Refactor

* Repair after rebase

* Fix discovery is broken after migration

* Improve comments

* More comment improvements

* Split long lines

* Add comment to indicate payload dict can be empty

* typo

* Add walrus and update comment

* Add tag to migration test

* Join try blocks

* Refactor

* Cleanup not used attribute

* Refactor

* Move _replace_all_abbreviations out of try block

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-29 11:12:05 +02:00
Bouwe Westerdijk
83e62c5239 Discover new device at runtime in Plugwise (#117688)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-05-29 11:00:07 +02:00
G Johansson
6b7ff2bf44 Add default code to alarm_control_panel (#112540) 2024-05-29 10:46:53 +02:00
Erwin Douna
38da61a5ac Add DSMR Reader icons (#118329) 2024-05-29 10:41:51 +02:00
G Johansson
13ebc6fb0e Add more tests to Yale Smart Alarm (#116501) 2024-05-29 10:34:20 +02:00
epenet
bead6b0094 Rename service_calls fixture in template tests (#118358) 2024-05-29 10:27:52 +02:00
Stefan Agner
cae22e5109 Adjust add-on installation error message (#118309) 2024-05-29 09:41:09 +02:00
epenet
98d24dd276 Improve typing for calls fixture in tests (m-z) (#118350)
* Improve typing for `calls` fixture in tests (m-z)

* More

* More
2024-05-29 09:30:41 +02:00
epenet
0c38aa56f5 Rename calls fixture in components tests (#118355) 2024-05-29 09:26:44 +02:00
epenet
0f8588a857 Rename calls fixture in mqtt tests (#118354)
Rename calls fixture in mqtt
2024-05-29 09:25:34 +02:00
epenet
e488f9b87f Rename calls fixture in calendar tests (#118353) 2024-05-29 09:24:36 +02:00
J. Nick Koston
0888233f06 Make Recorder dialect_name a cached_property (#117922) 2024-05-29 09:23:40 +02:00
Bygood91
f7d2d94fdc Add Google assistant Gate device type (#118144) 2024-05-29 09:18:02 +02:00
dependabot[bot]
09d4112784 Bump docker/login-action from 3.1.0 to 3.2.0 (#118351)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-29 09:16:54 +02:00
Robert Resch
e087abe802 Add ws endpoint to remove expiration date from refresh tokens (#117546)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-29 09:09:59 +02:00
epenet
7e62061b9a Improve typing for calls fixture in tests (a-l) (#118349)
* Improve typing for `calls` fixture in tests (a-l)

* More

* More
2024-05-29 09:06:48 +02:00
Raman Gupta
89ae425ac2 Update zwave_js WS APIs for provisioning (#117400) 2024-05-29 02:47:09 -04:00
osohotwateriot
1c2cda5033 Add OSO Energy binary sensors (#117174) 2024-05-29 08:36:20 +02:00
Maximilian Hildebrand
05d0174e07 Add august open action (#113795)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-28 20:35:53 -10:00
G Johansson
ae6c394b53 Add smoke detector temperature to Yale Smart Alarm (#116306) 2024-05-29 08:34:00 +02:00
Erik Montnemery
7abffd7cc8 Don't report entities with invalid unique id when loading the entity registry (#118290) 2024-05-29 08:32:39 +02:00
Quentame
4d7b1288d1 Fix epic_games_store mystery game URL (#118314) 2024-05-29 08:32:29 +02:00
Jan-Philipp Benecke
2c99925286 Use runtime_data in ping (#118332) 2024-05-29 08:12:54 +02:00
J. Nick Koston
76aa504e36 Fix last_reported_timestamp not being updated when last_reported is changed (#118341)
* Reduce number of calls to last_reported_timestamp

When a state is created, last_update is always the same
as last_reported, and we only update it later if it changes
so we can pre-set the cached property to avoid it being
run when the recorder accesses it later.

* fix cache not being overridden

* coverage
2024-05-28 19:03:19 -10:00
J. Nick Koston
f3fa843b9d Replace pop calls with del where the result is discarded in restore_state (#118339) 2024-05-28 23:14:40 -04:00
J. Nick Koston
79bc179ce8 Improve websocket message coalescing to handle thundering herds better (#118268)
* Increase websocket peak messages to match max expected entities

During startup the websocket would frequently disconnect if more than
4096 entities were added back to back. Some MQTT setups will have more
than 10000 entities. Match the websocket peak value to the max expected
entities

* coalesce more

* delay more if the backlog gets large

* wait to send if the queue is building rapidly

* tweak

* tweak for chrome since it works great in firefox but chrome cannot handle it

* Revert "tweak for chrome since it works great in firefox but chrome cannot handle it"

This reverts commit 439e2d76b11d2355c552c8a577d0e85fc7262808.

* adjust for chrome

* lower number

* remove code

* fixes

* fast path for bytes

* compact

* adjust test since we see the close right away now on overload

* simplify check

* reduce loop

* tweak

* handle ready right away
2024-05-28 23:14:06 -04:00
J. Nick Koston
b94bf1f214 Add cache to more complex entity filters (#118344)
Many of these do regexes and since the entity_ids are almost
always the same we should cache these
2024-05-28 23:07:50 -04:00
Paulus Schoutsen
d22871f1fd Reduce the intent response data sent to LLMs (#118346)
* Reduce the intent response data sent to LLMs

* No longer delete speech
2024-05-28 23:07:00 -04:00
J. Nick Koston
fa9ebb062c Small speed up to connecting dispatchers (#118342) 2024-05-28 16:49:58 -10:00
Paulus Schoutsen
c097a05ed4 Tweak Assist LLM API prompt (#118343) 2024-05-28 22:43:22 -04:00
Michael Hansen
d223e1f2ac Add Conversation command to timers (#118325)
* Add Assist command to timers

* Rename to conversation_command. Execute in timer code.

* Make agent_id optional

* Fix arg

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-28 20:33:31 -05:00
Paulus Schoutsen
615a1eda51 LLM Assist API to ignore intents if not needed for exposed entities or calling device (#118283)
* LLM Assist API to ignore timer intents if device doesn't support it

* Refactor to use API instances

* Extract ToolContext class

* Limit exposed intents based on exposed entities
2024-05-28 21:29:18 -04:00
J. Nick Koston
e0264c8604 Replace pop calls with del where the result is discarded in entity (#118340) 2024-05-28 15:26:53 -10:00
J. Nick Koston
9de066d9e1 Replace pop calls with del where the result is discarded in mqtt (#118338) 2024-05-28 15:26:35 -10:00
J. Nick Koston
fd9d4dbb34 Use del instead of pop in the entity platform remove (#118337) 2024-05-28 15:26:22 -10:00
Paulus Schoutsen
0cf574dc42 Update the recommended model for Google Gen AI (#118323) 2024-05-28 21:21:28 -04:00
Markus Jacobsen
8d7dff0228 Fix source_change not triggering an update (#118312) 2024-05-28 21:19:10 -04:00
Marcel van der Veldt
5f5288d8b9 Several fixes for the Matter climate platform (#118322)
* extend hvacmode mapping with extra modes

* Fix climate platform

* adjust tests

* fix reversed test

* cleanup

* dry and fan hvac mode test
2024-05-28 21:18:35 -04:00
Joakim Sørensen
7f1a616c9a Use None default for traccar server battery level sensor (#118324)
Do not set -1 as default for traccar server battery level
2024-05-28 21:15:22 -04:00
Jesse Hills
035e21ddbb [esphome] 100% voice assistant test coverage (#118334) 2024-05-28 21:14:47 -04:00
J. Nick Koston
097ca3a0ae Mark sonos group update a background task (#118333) 2024-05-28 14:53:28 -10:00
Michael Hansen
9e1676bee4 Filter timers more when pausing/unpausing (#118331) 2024-05-28 19:36:34 -04:00
Joakim Plate
acfc027456 Update ha philips_js to 3.2.2 (#118326) 2024-05-28 23:13:17 +02:00
J. Nick Koston
69353d2719 Speed up mqtt debug info on message callback (#118303) 2024-05-28 11:10:07 -10:00
Michael Hansen
2dc49f0410 Add platforms to intent handlers (#118328) 2024-05-28 16:46:08 -04:00
dontinelli
5eb1d72691 Raise UpdateFailed on fyta API error (#118318)
* Raise UpdateFailed

* Update homeassistant/components/fyta/coordinator.py

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

* Remove logger

* simplify code

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-28 21:18:15 +02:00
Jesse Hills
7f530ee0e4 [esphome] Assist timers (#118275)
* [esphome] Assist timers

* Add intent to manifest dependencies

* Add test

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-28 14:57:58 -04:00
Michael Hansen
06d6f99964 Respect WyomingSatelliteMuteSwitch state on start (#118320)
* Respect WyomingSatelliteMuteSwitch state on start

* Fix test

---------

Co-authored-by: Kostas Chatzikokolakis <kostas@chatzi.org>
2024-05-28 14:55:02 -04:00
Michael Hansen
75ab4d2398 Add temperature slot to light turn on intent (#118321) 2024-05-28 14:53:49 -04:00
epenet
a59621bf9e Add more type hints to pylint plugin (#118319) 2024-05-28 18:37:38 +02:00
epenet
0b2aac8f4c Use registry fixtures in tests (z) (#118300) 2024-05-28 18:25:49 +02:00
Michael Hansen
106cb4cfb7 Bump intents and add tests for new error messages (#118317)
* Add new error keys

* Bump intents and test new error messages

* Fix response text
2024-05-28 12:24:24 -04:00
epenet
05fc7cfbde Enforce namespace use for import conventions (#118215)
* Enforce namespace use for import conventions

* Include all registries

* Only apply to functions

* Use blacklist

* Rephrase comment

* Add async_entries_for_config_entry

* Typo

* Improve

* More core files

* Revert "More core files"

This reverts commit 9978b9370629af402a9a18f184b6f3a7ad45b08d.

* Revert diagnostics amends

* Include category/floor/label registries

* Performance

* Adjust text
2024-05-28 18:15:53 +02:00
Kostas Chatzikokolakis
14132b5090 Don't set 'assist in progess' flag on wake_word-end (#113585) 2024-05-28 11:09:59 -05:00
Paulus Schoutsen
f0d7f48930 Handle generic commands as area commands in the LLM Assist API (#118276)
* Handle generic commands as area commands in the LLM Assist API

* Add word area
2024-05-28 11:21:17 -04:00
Mike Degatano
dbcef2e3c3 Add more supervisor info to system info panel (#115715)
* Add virtualization field fo system info

* Add ntp sync and host connectivity

* Prevent nonetype errors

* Add supervisor_connectivity and fix tests

* Add mock of network info to other fixtures

* Update more fixtures with network/info mock
2024-05-28 16:14:42 +02:00
epenet
e58d060f82 Use registry fixtures in tests (s) (#118295) 2024-05-28 15:41:03 +02:00
Poshy163
90500c4b97 Thread: Add more Thread vendor to brand mappings (#115888)
Co-authored-by: Stefan Agner <stefan@agner.ch>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-28 15:33:32 +02:00
epenet
f07f183a3e Use registry fixtures in tests (v-y) (#118299) 2024-05-28 14:26:14 +02:00
epenet
8d8696075b Use registry fixtures in tests (r) (#118293) 2024-05-28 14:23:31 +02:00
epenet
2545b7d3bb Use registry fixtures in tests (t-u) (#118297) 2024-05-28 14:23:01 +02:00
epenet
ef6c7621cf Use registry fixtures in scaffold (#118308) 2024-05-28 14:20:01 +02:00
epenet
301c17cba7 Use registry fixtures in tests (o-p) (#118292) 2024-05-28 13:42:38 +02:00
epenet
ead0e797c1 Use registry fixtures in tests (m-n) (#118291) 2024-05-28 13:40:45 +02:00
epenet
8837c50da7 Use registry fixtures in tests (a-h) (#118288) 2024-05-28 13:15:16 +02:00
Sebastian Lövdahl
e9ab9b818f Add reconfigure step for vallox (#115915)
* Add reconfigure step for vallox

* Reuse translation
2024-05-28 13:13:53 +02:00
epenet
01be006d40 Use registry fixtures in tests (tailscale) (#118301) 2024-05-28 13:12:51 +02:00
Marcel van der Veldt
21f5ac7715 Fix Matter device ID for non-bridged composed device (#118256) 2024-05-28 12:47:46 +02:00
starkillerOG
a5f81262aa Bump reolink-aio to 0.8.11 (#118294) 2024-05-28 12:29:30 +02:00
Ludovic BOUÉ
f44dfe8fef Add Matter fan platform (#111212)
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
2024-05-28 12:24:58 +02:00
ollo69
7f934bafc2 Add diagnostics test to AndroidTV (#117129) 2024-05-28 10:56:32 +02:00
J. Nick Koston
a3c3f938a7 Migrate mqtt mixin async_added_to_hass inner functions to bound methods (#118280) 2024-05-27 22:45:40 -10:00
Erwin Douna
fb95b91507 Add DSMR Reader tests (#115808)
* Add DSMR Reader sensor tests

* Change to paramatization

* Removing patch

* Emulate the test

* Go for 100% test coverage

* Adding defintions.py

* Add myself as code owner to keep improving
2024-05-28 10:42:21 +02:00
Mr. Bubbles
98710e6c91 Fix some typing errors in Bring integration (#115641)
Fix typing errors
2024-05-28 10:25:39 +02:00
Ville Skyttä
3b938e592f Add additional Huawei LTE 5G sensors (#108928)
* Add some Huawei LTE 5G sensor descriptions

Closes https://github.com/home-assistant/core/issues/105786

* Mark cqi1 and nrcqi1 as diagnostic
2024-05-28 09:59:28 +02:00
Brett Adams
b71f6a2b7d Use entry.runtime_data in Tessie (#118287) 2024-05-28 09:05:24 +02:00
J. Nick Koston
3ba3e3135e Fix flakey bootstrap test (#118285) 2024-05-28 08:11:14 +02:00
Michael
5d61743a5b Bump aiovlc to 0.3.2 (#118258) 2024-05-28 07:58:20 +02:00
Tsvi Mostovicz
ea91f7a5aa Change strings to const in Jewish Calendar (#118274) 2024-05-28 07:49:39 +02:00
tronikos
4f7a91828e Mock llm prompts in test_default_prompt for Google Generative AI (#118286) 2024-05-28 00:40:26 -04:00
J. Nick Koston
69a177e864 Migrate mqtt discovery subscribes to use internal helper (#118279) 2024-05-27 18:14:58 -10:00
tronikos
63227f14ed Add diagnostics to Google Generative AI (#118262)
* Add diagnostics for Google Generative AI

* Remove quality scale from manifest

* include options in diagnostics
2024-05-28 00:02:32 -04:00
Ben Thomas
f6f6bf8953 SharkIQ Fix for vacuums without room support (#118209)
* Fix SharkIQ vacuums without room support crashing the SharkIQ integration

* Fix ruff format

* Fix SharkIQ tests to account for robot identifier and second expected value
2024-05-27 23:57:21 -04:00
Ben Thomas
4d7802215c Fix rooms not being matched correctly in sharkiq.clean_room (#118277)
* Fix rooms not being matched correctly in sharkiq.clean_room

* Update sharkiq tests to account for new room matching logic
2024-05-27 23:51:51 -04:00
tronikos
0c245f1976 Fix freezing on HA startup when there are multiple Google Generative AI config entries (#118282)
* Fix freezing on HA startup when there are multiple Google Generative AI config entries

* Add timeout to list_models
2024-05-27 23:49:16 -04:00
Paulus Schoutsen
aa78998f41 Make sure conversation entities have correct name in list output (#118272) 2024-05-27 21:45:14 -04:00
J. Nick Koston
a5644c8ddb Rewrite flow handler to flow result conversion as a list comp (#118269) 2024-05-27 15:39:59 -10:00
Paulus Schoutsen
6f248acfd5 LLM Assist API: Inline all exposed entities (#118273)
Inline all exposed entities
2024-05-27 21:12:10 -04:00
Jesse Hills
a23da3bd46 Bump aioesphomeapi to 24.5.0 (#118271) 2024-05-28 13:03:01 +12:00
tronikos
f2d0512f39 Make sure HassToggle and HassSetPosition have description (#118267) 2024-05-27 20:30:34 -04:00
J. Nick Koston
33ff84469a Align max expected entities constant between modules (#118102) 2024-05-27 14:06:16 -10:00
tronikos
722feb285b Handle multiple function_call and text parts in Google Generative AI (#118270) 2024-05-27 19:57:03 -04:00
Jan Bouwhuis
bfc3194661 Fix mqtt not publishing null payload payload to remove discovery (#118261) 2024-05-27 12:53:22 -10:00
G Johansson
6067ea2454 Cleanup tag integration (#118241)
* Cleanup tag integration

* Fix review comments
2024-05-27 21:53:06 +02:00
Josef Zweck
c349797938 Add new lock states to tedee integration (#117108) 2024-05-27 15:04:44 -04:00
G Johansson
d9ce4128c0 Add entry.runtime_data typing for Teslemetry (#118253) 2024-05-27 19:11:55 +02:00
dontinelli
e54fbcec77 Add diagnostics for fyta (#118234)
* Add diagnostics

* add test for diagnostics

* Redact access_token

* remove unnecessary redaction
2024-05-27 18:34:05 +02:00
Josef Zweck
70820c1702 Migrate tedee to entry.runtime_data (#118246)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-05-27 16:11:38 +02:00
Åke Strandberg
b61919ec71 Add helper strings for myuplink application credentials (#115349) 2024-05-27 15:58:22 +02:00
Michael
a24d97d79d Convert Feedreader to use an update coordinator (#118007) 2024-05-27 14:48:41 +02:00
epenet
97f6b578c8 Enforce namespace import in core (#118235) 2024-05-27 14:03:00 +02:00
Josef Zweck
9828a50dca Add quality scale (platinum) to tedee integration (#106940) 2024-05-27 12:57:58 +02:00
Maciej Bieniek
805f634634 Bump nettigo_air_monitor to version 3.1.0 (#118227)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-27 12:54:10 +02:00
epenet
e7ce01e649 Enforce namespace import in components (#118218) 2024-05-27 12:50:11 +02:00
shelvacu
33bdcb46cf Fix XMPP giving up on first auth fail (#118224) 2024-05-27 12:44:56 +02:00
epenet
fa038bef92 Use area_registry fixture in component tests (#118236) 2024-05-27 12:40:08 +02:00
Brett Adams
46158f5c14 Allow older vehicles to sleep in Teslemetry (#117229)
* Allow older vehicles to sleep

* Remove updated_once

* move pre2021 to lib

* bump

* Bump again

* Bump to 0.5.11

* Fix VIN so it matches the check

* Fix snapshot

* Snapshots

* Fix self.updated_once

* Remove old pre2021 attribute

* fix snapshots

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-27 12:37:33 +02:00
dontinelli
2a8fc7f310 Add Fyta sensor tests (#117995)
* Add test for init

* update tests

* split common.py into const.py and __init__.py

* Update tests/components/fyta/__init__.py

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

* add autospec, tidy up

* adjust len-test

* add test_sensor.py, amend tests for coordinator.py

* Update tests/components/fyta/conftest.py

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

* move load_unload with expired token into own test

* Update tests/components/fyta/test_init.py

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

* ruff change

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-27 12:01:11 +02:00
Tsvi Mostovicz
1565561c03 Remove platform sensor from Jewish Calendar binary sensor (#118231) 2024-05-27 11:47:08 +02:00
Joost Lekkerkerker
f2762c9031 Bump yt-dlp to 2024.05.26 (#118229) 2024-05-27 11:38:30 +02:00
Claes Hallström
efcfbbf189 Add key expiry disabled binary sensor to Tailscale (#117667) 2024-05-27 11:37:00 +02:00
Duco Sebel
22cc7d34d5 Fix unique_id not being unique in HomeWizard (#117940) 2024-05-27 11:23:10 +02:00
J. Nick Koston
6b8223e339 Try to read multiple packets in MQTT (#118222) 2024-05-27 11:07:24 +02:00
Arie Catsman
83e4c2927c Implement reconfigure step for enphase_envoy (#115781) 2024-05-27 11:06:55 +02:00
Richard Kroegel
10291b1ce8 Bump bimmer_connected to 0.15.3 (#118179)
Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-05-27 11:01:22 +02:00
Joost Lekkerkerker
481c50f7a5 Remove platform setup from Jewish calendar (#118226) 2024-05-27 10:51:54 +02:00
Joost Lekkerkerker
a2b1dd8a5f Add config flow to Media Extractor (#115717) 2024-05-27 10:43:49 +02:00
J. Nick Koston
87989a88cd Remove translation and icon component path functions (#118214)
These functions have been stripped down to always return
the same path so there was no longer a need to have a
function for this. This is left-over cleanup from
previous refactoring.
2024-05-27 10:35:52 +02:00
Joost Lekkerkerker
3d2ecd6a28 Refactor Twitch tests (#114330)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2024-05-27 10:09:12 +02:00
J. Nick Koston
21b9a4ef2e Increase MQTT incoming buffer to 8MiB (#118220) 2024-05-27 10:07:53 +02:00
J. Nick Koston
3ebcee9bbb Fix mqtt chunk subscribe logging (#118217) 2024-05-26 21:56:09 -10:00
J. Nick Koston
3680d1f8c5 Remove legacy mqtt debug_info implementation (#118212) 2024-05-26 21:55:54 -10:00
J. Nick Koston
cfc2cadb77 Eagerly remove MQTT entities on reload (#118213) 2024-05-26 21:55:42 -10:00
G Johansson
e6142985a5 Use config entry runtime data in Scrape (#118191)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-05-27 08:48:54 +02:00
G Johansson
4d52d920ee Create EventEntity for Folder Watcher (#116526) 2024-05-27 08:47:02 +02:00
J. Nick Koston
5b608bea01 Remove extra inner function for mqtt reload service (#118211) 2024-05-26 18:55:00 -10:00
J. Nick Koston
872e9f2d5e Fix thundering herd of mqtt component setup tasks (#118210)
We had a thundering herd of tasks to back up against the lock to load each MQTT platform at startup because we had to wait to import the platforms.
2024-05-27 00:29:35 -04:00
Paulus Schoutsen
ecb05989ca Add exposed entities to the Assist LLM API prompt (#118203)
* Add exposed entities to the Assist LLM API prompt

* Check expose entities in Google test

* Copy Google default prompt test cases to LLM tests
2024-05-27 00:27:08 -04:00
J. Nick Koston
c391d73fec Remove unneeded time fetch in mqtt discovery (#118208) 2024-05-26 18:07:27 -10:00
J. Nick Koston
25f199c39c Improve performance of verify_event_loop_thread (#118198) 2024-05-26 17:39:15 -10:00
Paulus Schoutsen
87fc27eeae Teach Context about deepcopy (#118206)
Teach context about deepcopy
2024-05-26 23:14:02 -04:00
J. Nick Koston
c15f7f304f Remove unneeded dispatcher in mqtt discovery (#118205) 2024-05-26 17:07:24 -10:00
Paulus Schoutsen
9dc580e5de Add (deep)copy support to read only dict (#118204) 2024-05-26 23:05:45 -04:00
J. Nick Koston
56431ef750 Pre-set the HassJob job_type cached_property if its known (#118199) 2024-05-26 16:13:48 -10:00
J. Nick Koston
811ec57c31 Convert mqtt entity discovery to use callbacks (#118200) 2024-05-26 16:12:40 -10:00
Paulus Schoutsen
1602c8063c Standardize LLM instructions prompt (#118195)
* Standardize instructions prompt

* Add time/date to default instructions
2024-05-26 20:24:26 -04:00
J. Nick Koston
98d7821f47 Avoid creating template objects in mqtt sensor if they are not configured (#118194) 2024-05-26 12:09:06 -10:00
Brett Adams
841d5dfd4f Fix flaky test in Teslemetry (#118196)
Cleanup tests
2024-05-26 17:31:11 -04:00
Michael Hansen
3766c72ddb Forward timer events to Wyoming satellites (#118128)
* Add timer tests

* Forward timer events to satellites

* Use config entry for background tasks
2024-05-26 17:29:46 -04:00
J. Nick Koston
039bc3501b Fix mqtt switch types (#118193)
Remove unused code, add missing type for _is_on_map
2024-05-26 23:18:07 +02:00
tronikos
0588806922 Promote Google Generative AI to platinum quality (#118158)
* Promote Google Generative AI to platinum quality

* make exception for diagnostics
2024-05-26 17:07:31 -04:00
J. Nick Koston
f0b4f4655c Simplify mqtt switch state message processor (#118187) 2024-05-26 10:42:24 -10:00
J. Nick Koston
e74292e358 Move sensor mqtt state update functions to bound methods (#118188) 2024-05-26 10:42:09 -10:00
J. Nick Koston
226d010ab2 Simplify mqtt connection state dispatcher (#118184) 2024-05-26 10:21:21 -10:00
Jan Bouwhuis
b7f1f805fa Simplify subscription mqtt entity platforms (#118177) 2024-05-26 09:25:54 -10:00
G Johansson
008b56b4dd Bump holidays to 0.49 (#118181) 2024-05-26 20:29:58 +02:00
Tsvi Mostovicz
11646cab5f Move Jewish calendar constants to const file (#118180)
* Move Jewish calendar constants to const file

* Add a few missed constants

* Move CONF_LANGUAGE to it's correct path
2024-05-26 19:23:02 +02:00
tronikos
0972b29510 Add Google Generative AI reauth flow (#118096)
* Add reauth flow

* address comments
2024-05-26 11:44:48 -04:00
Angel Nunez Mencias
b85cf36a68 Upgrade thethingsnetwork to v3 (#113375)
* thethingsnetwork upgrade to v3

* add en translations and requirements_all

* fix most of the findings

* hassfest

* use ttn_client v0.0.3

* reduce content of initial release

* remove features that trigger errors

* remove unneeded

* add initial testcases

* Exception warning

* add strict type checking

* add strict type checking

* full coverage

* rename to conftest

* review changes

* avoid using private attributes - use protected instead

* simplify config_flow

* remove unused options

* review changes

* upgrade client

* add types client library - no need to cast

* use add_suggested_values_to_schema

* add ruff fix

* review changes

* remove unneeded comment

* use typevar for TTN value

* use typevar for TTN value

* review

* ruff error not detected in local

* test review

* re-order fixture

* fix test

* reviews

* fix case

* split testcases

* review feedback

* Update homeassistant/components/thethingsnetwork/__init__.py

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

* Update homeassistant/components/thethingsnetwork/__init__.py

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

* Update tests/components/thethingsnetwork/test_config_flow.py

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

* Remove deprecated var

* Update tests/components/thethingsnetwork/test_config_flow.py

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

* Remove unused import

* fix ruff warning

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-26 16:30:33 +02:00
Robert Svensson
a7938091bf Use fixtures to setup UniFi config entries (#118126) 2024-05-26 16:30:22 +02:00
J. Nick Koston
caa65708fb Collapse websocket_api _state_diff into _state_diff_event (#118170) 2024-05-26 16:04:34 +02:00
Jan Bouwhuis
4a5c5fa311 Remove remove unreachable code in async_wait_for_mqtt_client (#118172) 2024-05-26 16:04:03 +02:00
J. Nick Koston
8b3cad372e Avoid constructing mqtt availability template objects when there is no template (#118171) 2024-05-26 02:02:13 -10:00
J. Nick Koston
c368ffffd5 Add async_get_hass_or_none (#118164) 2024-05-26 13:38:46 +02:00
Mike Degatano
05c24e92d1 Add repair for detached addon issues (#118064)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-05-26 13:37:50 +02:00
Paulus Schoutsen
233c3bb2be Add render prompt method when no API selected (#118136) 2024-05-26 13:35:15 +02:00
J. Nick Koston
dff8c06166 Fix unnecessary calls to update entity display_precision (#118159) 2024-05-26 13:32:59 +02:00
J. Nick Koston
80371d3a73 Reduce duplicate publish code in mqtt (#118163) 2024-05-26 01:22:54 -10:00
J. Nick Koston
5d37217d96 Avoid expensive inspection of callbacks to setup mqtt subscriptions (#118161) 2024-05-26 01:22:44 -10:00
J. Nick Koston
607aaa0efe Speed up template result parsing (#118168) 2024-05-26 13:09:12 +02:00
Paulus Schoutsen
4a3808c08e Don't crash when firing event for timer for unregistered device (#118132) 2024-05-26 13:08:00 +02:00
J. Nick Koston
6697cf07a6 Fix parallel script execution in queued mode (#118153) 2024-05-26 13:05:31 +02:00
Brett Adams
f12f82caac Add update platform to Teslemetry (#118145)
* Add update platform

* Add tests

* updates

* update test

* Fix support features comment

* Add assertion
2024-05-26 13:04:02 +02:00
J. Nick Koston
7bbb33b415 Improve script disallowed recursion logging (#118151) 2024-05-26 12:58:34 +02:00
G-Two
189cf88537 Bump subarulink to 0.7.11 (#117743) 2024-05-26 12:56:43 +02:00
Michael
66119c9d47 Clean up PIhole unneccesary async_block_till_done call (#118166)
leanup unneccesary async_bock_till_done calls
2024-05-26 12:40:22 +02:00
Michael
1b191230e4 Clean up AVM Fritz!Box Tools unneccesary async_block_till_done call (#118165)
cleanup unneccesary async_bock_till_done calls
2024-05-26 12:40:07 +02:00
Brett Adams
28a6f9eae7 Add number platform to Teslemetry (#117470)
* Add number platform

* Cast numbers

* rework numbers

* Add number platform

* Update docstrings

* fix json

* Remove speed limit

* Fix snapshot

* remove speed limit icon

* Remove speed limit strings

* rework min max

* Fix coverage

* Fix snapshot

* Apply suggestions from code review

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

* Type callable

* Fix types

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-26 11:02:35 +02:00
Michael
74f288286a Bump py-sucks to 0.9.10 (#118148)
bump py-sucks to 0.9.10
2024-05-26 10:55:04 +02:00
Brett Adams
711f7e1ac3 Add media player platform to Teslemetry (#117394)
* Add media player

* Add tests

* Better service assertions

* Update strings.json

* Update snapshot

* Docstrings

* Fix json

* Update diag

* Review feedback

* Update snapshot

* use key for title
2024-05-26 10:36:35 +02:00
Brett Adams
af8542ebe1 Add button platform to Teslemetry (#117227)
* Add buttons

* Add buttons

* Fix docstrings

* Rebase entry.runtime_data

* Revert testing change

* Fix tests

* format json

* Type callable

* Remove refresh

* Update icons.json

* Update strings.json

* Update homeassistant/components/teslemetry/button.py

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

* import Awaitable

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-26 09:04:07 +02:00
J. Nick Koston
04101b044b Avoid constructing mqtt json attrs template if its not defined (#118146) 2024-05-25 16:13:54 -10:00
Shay Levy
0ae5275f01 Bump aioswitcher to 3.4.3 (#118123) 2024-05-26 00:04:44 +02:00
J. Nick Koston
5eeeb8c11f Remove code that is no longer used in mqtt (#118143) 2024-05-25 11:59:34 -10:00
Shay Levy
6a0e7cfea5 Clean up WebOS TV unneccesary async_block_till_done calls (#118142) 2024-05-26 00:37:44 +03:00
Jan Bouwhuis
991d6d92db Refactor mqtt callbacks for valve (#118140) 2024-05-25 11:34:56 -10:00
J. Nick Koston
9be829ba1f Make mqtt internal subscription a normal function (#118092)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-05-25 11:34:24 -10:00
Shay Levy
ecd48cc447 Clean up Shelly unneccesary async_block_till_done calls (#118141) 2024-05-26 00:28:48 +03:00
Jan Bouwhuis
d4a95b3735 Refactor mqtt callbacks for light basic, json and template schema (#118113) 2024-05-25 11:24:38 -10:00
Jan Bouwhuis
f21c0679b4 Rework mqtt callbacks for camera, image and event (#118109) 2024-05-25 11:23:45 -10:00
Jan Bouwhuis
ae0c00218a Refactor mqtt callbacks for vacuum (#118137) 2024-05-25 11:19:37 -10:00
Jan Bouwhuis
fc9f7aee7e Refactor mqtt callbacks for switch (#118127) 2024-05-25 11:17:54 -10:00
Jan Bouwhuis
6b1b15ef9b Refactor mqtt callbacks for text (#118130) 2024-05-25 11:16:54 -10:00
Jan Bouwhuis
e740e2cdc1 Refactor mqtt callbacks for select platform (#118121) 2024-05-25 11:16:16 -10:00
Jan Bouwhuis
3dbe9a41af Refactor mqtt callbacks for number (#118119) 2024-05-25 11:15:53 -10:00
Jan Bouwhuis
c510031fcf Refactor mqtt callbacks for siren (#118125) 2024-05-25 11:15:22 -10:00
Jan Bouwhuis
0f44ebd51e Refactor mqtt callbacks for update platform (#118131) 2024-05-25 11:14:48 -10:00
Jan Bouwhuis
e30297d837 Refactor mqtt callbacks for lawn_mower (#118117) 2024-05-25 11:13:43 -10:00
Jan Bouwhuis
05d8ec85aa Refactor mqtt callbacks for lock (#118118) 2024-05-25 11:13:14 -10:00
Jan Bouwhuis
6580a07308 Refactor mqtt callbacks for humidifier (#118116) 2024-05-25 11:11:07 -10:00
Jan Bouwhuis
b4acadc992 Rework mqtt callbacks for fan (#118115) 2024-05-25 11:09:24 -10:00
Jan Bouwhuis
5d7a735da6 Rework mqtt callbacks for device_tracker (#118110) 2024-05-25 11:07:50 -10:00
Jan Bouwhuis
521ed0a220 Fix mqtt callback exception logging (#118138)
* Fix mqtt callback exception logging

* Improve code

* Add test
2024-05-25 22:46:33 +02:00
elmurato
569763b7a8 Reach platinum level in Minecraft Server (#105432)
Reach platinum level
2024-05-25 22:13:32 +02:00
Denis Shulyaka
cee3be5f7a Break long strings in LLM tools (#118114)
* Break long code strings

* Address comments

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-25 14:24:51 -04:00
Allen Porter
89e2c57da6 Add conversation agent debug tracing (#118124)
* Add debug tracing for conversation agents

* Minor cleanup
2024-05-25 14:16:51 -04:00
Marc Mueller
2f16c3aa80 Fix mqtt callback typing (#118104) 2024-05-25 18:59:29 +02:00
Matthias Alphart
344bb568f4 Add diagnostics support for Fronius (#117845)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-05-25 14:01:24 +02:00
Michael
73f9234107 Remove deprecated services from AVM Fritz!Box Tools (#118108) 2024-05-25 13:52:28 +02:00
tronikos
0182bfcc81 Google Generative AI: 100% test coverage for conversation (#118112)
100% coverage for conversation
2024-05-25 07:52:20 -04:00
MatthewFlamm
8fbe39f2a7 Improve nws tests by centralizing and removing unneeded patching (#118052) 2024-05-25 13:50:15 +02:00
Michael
a89dcbc78b Use PEP 695 type alias for ConfigEntry type in Forecast Solar (#118107) 2024-05-25 13:48:58 +02:00
Brett Adams
ec76f34ba5 Add device tracker platform to Teslemetry (#117341) 2024-05-25 12:29:27 +01:00
Michael
10efb2017b Use PEP 695 type alias for ConfigEntry type in Spotify (#118106)
Use PEP 695 type alias for ConfigEntry type
2024-05-25 12:55:40 +02:00
Jan Bouwhuis
6fc6d109c9 Freeze and fix plaato CI tests (#118103) 2024-05-25 12:34:44 +02:00
nopoz
543d47d7f7 Allow Meraki API v2 or v2.1 (#115828) 2024-05-25 12:33:39 +02:00
J. Nick Koston
de275878c4 Small speed up to mqtt _async_queue_subscriptions (#118094) 2024-05-25 12:32:15 +02:00
Franck Nijhof
09cbc35b46 Merge branch 'master' into dev 2024-05-25 12:28:34 +02:00
Shay Levy
e8226a8056 Store Switcher runtime data in config entry (#118054) 2024-05-25 12:17:33 +02:00
J. Nick Koston
3f76b865fa Switch mqtt to use async_unload_platforms (#118097) 2024-05-25 11:55:36 +02:00
J. Nick Koston
b58e0331cf Migrate zwave_js to use async_unload_platforms (#118101) 2024-05-25 11:54:25 +02:00
J. Nick Koston
2954cba65d Migrate zha to use async_unload_platforms (#118100) 2024-05-25 11:53:42 +02:00
J. Nick Koston
131c1807c4 Migrate vera to use async_unload_platforms (#118099) 2024-05-25 11:48:55 +02:00
J. Nick Koston
204cd376cb Migrate firmata to use async_unload_platforms (#118098) 2024-05-25 11:48:06 +02:00
J. Nick Koston
4da125e27b Simplify mqtt discovery cooldown calculation (#118095) 2024-05-24 23:27:22 -10:00
Allister Maguire
5c60a5ae59 Bump pyenvisalink version to 4.7 (#118086) 2024-05-25 11:16:51 +02:00
Joakim Plate
943799f4d9 Adjust title of integration sensor (#116954) 2024-05-25 11:00:47 +02:00
Michael
a43fe71413 Store runtime data inside the config entry in Forecast Solar (#117033) 2024-05-25 10:54:38 +02:00
Michael
0ea1474556 Store runtime data inside the config entry in Spotify (#117037) 2024-05-25 10:41:23 +02:00
J. Nick Koston
ad638dbcc5 Speed up removing MQTT subscriptions (#118088) 2024-05-25 10:28:14 +02:00
Maikel Punie
ffcc9100a6 Bump velbusaio to 2024.5.1 (#118091) 2024-05-25 10:24:06 +02:00
Paulus Schoutsen
81f3387d06 Flip prompts to put user prompt on top (#118085) 2024-05-25 00:33:24 -04:00
Paulus Schoutsen
69f237fa9e Update Google safety defaults to match Google (#118084) 2024-05-25 00:02:53 -04:00
Paulus Schoutsen
676fe5a9a2 Add recommended model options to OpenAI (#118083)
* Add recommended options to OpenAI

* Use string join
2024-05-25 00:01:48 -04:00
Paulus Schoutsen
c59d4f9bba Add no-API LLM prompt back to Google (#118082)
* Add no-API LLM prompt back

* Use string join
2024-05-25 00:00:04 -04:00
Paulus Schoutsen
86a24cc3b9 Fix default Google AI prompt on initial setup (#118078) 2024-05-24 23:55:11 -04:00
Paulus Schoutsen
a257f63119 Add device info to OpenAI (#118077) 2024-05-24 23:55:01 -04:00
J. Nick Koston
d71c7705ae Convert remaining mqtt attrs classes to dataclasses (#118073) 2024-05-24 17:44:50 -10:00
J. Nick Koston
42232ecc8a Remove unused code in template helper (#118075) 2024-05-24 17:44:24 -10:00
J. Nick Koston
6923fb1601 Avoid template context manager overhead when template is already compiled (#118079) 2024-05-24 17:44:02 -10:00
J. Nick Koston
5cb3bc19c0 Speed up async_render_with_possible_json_value (#118080) 2024-05-24 17:43:42 -10:00
J. Nick Koston
3416162fdb Remove OrderedDict from entity_values as dict guarantees order on newer cpython (#118081) 2024-05-24 17:43:20 -10:00
J. Nick Koston
f026083712 Speed up is_template_string by avoiding regex engine (#118076) 2024-05-24 17:42:55 -10:00
Paulus Schoutsen
4b0f58ec63 Add device info to Google (#118074) 2024-05-24 22:23:25 -04:00
Denis Shulyaka
da74ac06d7 Add user name and location to the LLM assist prompt (#118071)
Add user name and location to the llm assist prompt
2024-05-24 22:23:05 -04:00
tronikos
620487fe75 Add Google Generative AI safety settings (#117679)
* Add safety settings

* snapshot-update

* DROPDOWN

* fix test

* rename const

* Update const.py

* Update strings.json
2024-05-24 21:48:39 -04:00
tronikos
5ca27f5d0c Google Generative AI: add timeout to ensure we don't block HA startup (#118066)
* timeout

* fix

* tests
2024-05-24 21:31:02 -04:00
Jan Bouwhuis
c9a79f6293 Fix lingering mqtt test (#118072) 2024-05-24 14:34:18 -10:00
J. Nick Koston
90d10dd773 Use defaultdict instead of setdefault in mqtt client (#118070) 2024-05-24 14:34:06 -10:00
J. Nick Koston
3031e4733b Reduce duplicate code to handle mqtt message replies (#118067) 2024-05-24 14:33:21 -10:00
J. Nick Koston
c7a1c59215 Avoid catch_log_exception overhead in MQTT for simple callbacks (#118036) 2024-05-24 14:32:32 -10:00
J. Nick Koston
65a702761b Avoid generating matchers that will never be used in MQTT (#118068) 2024-05-24 14:04:03 -10:00
Jan Bouwhuis
fa1ef8b0cf Split mqtt subscribe and unsubscribe calls to smaller chunks (#118035) 2024-05-24 13:33:28 -10:00
Jan Bouwhuis
01f3a5a97c Consequently ignore empty MQTT state payloads and set state to unknown on "None" payload (#117813)
* Consequently ignore empty MQTT state payloads and set state to `unknown` on "None" payload

* Do not change preset mode behavior

* Add device tracker ignoring empty state

* Ignore empty state for lock

* Resolve merge errors
2024-05-25 01:29:43 +02:00
Jan Bouwhuis
c616fc036e Move recorder chunk utils to shared collection utils (#118065) 2024-05-24 12:49:39 -10:00
Jan Bouwhuis
7522bbfa9d Refactor mqtt callbacks for climate and water_heater (#118040)
* Refactor mqtt callbacks for climate and water_heater

* Reduce callbacks
2024-05-25 00:20:05 +02:00
J. Nick Koston
cf73a47fc0 Significantly speed up single use callback dispatchers (#117934) 2024-05-24 11:21:10 -10:00
Aaron Bach
881237189d Add activity type to appropriate RainMachine switches (#117875) 2024-05-24 22:40:13 +02:00
Jan Bouwhuis
35a20d9c60 Refactor mqtt callbacks for cover (#118044) 2024-05-24 10:26:24 -10:00
Jan Bouwhuis
4b89443f62 Refactor mqtt callbacks for alarm_control_panel (#118037) 2024-05-24 10:20:37 -10:00
Christian Neumeier
ee38099a91 Add tests to Zeversolar integration (#117928) 2024-05-24 22:18:29 +02:00
Paulus Schoutsen
7554ca9460 Allow llm API to render dynamic template prompt (#118055)
* Allow llm API to render dynamic template prompt

* Make rendering api prompt async so it can become a RAG

* Fix test
2024-05-24 16:04:48 -04:00
Franck Nijhof
c347311851 2024.5.5 (#118049) 2024-05-24 22:01:44 +02:00
Paulus Schoutsen
3b2cdb63f1 Update OpenAI defaults (#118059)
* Update OpenAI defaults

* Update max temperature
2024-05-24 15:37:44 -04:00
J. Nick Koston
750ec261be Add state check to config entry setup to ensure it cannot be setup twice (#117193) 2024-05-24 21:28:04 +02:00
Paulus Schoutsen
ffc3560dad Remove unneeded asserts (#118056)
* Remove unneeded asserts

* No need to guard changing a timer that is owned by a disconnected device
2024-05-24 14:56:57 -04:00
Michael Hansen
5be15c94bc Require registered device id for all timer intents (#117946)
* Require device id when registering timer handlers

* Require device id for timer intents

* Raise errors for unregistered device ids

* Add callback

* Add types for callback to __all__

* Clean up

* More clean up
2024-05-24 12:55:52 -05:00
Michael Hansen
77e385db52 Fix intent helper test (#118053)
Fix test
2024-05-24 12:59:19 -04:00
Franck Nijhof
8128449879 Fix rc pylint warning in MQTT (#118050) 2024-05-24 18:41:46 +02:00
Franck Nijhof
3f7e57dde2 Bump version to 2024.5.5 2024-05-24 16:13:44 +02:00
Marcel van der Veldt
81bf31bbb1 Extend the blocklist for Matter transitions with more models (#118038) 2024-05-24 16:13:32 +02:00
J. Nick Koston
f5c20b3528 Bump pySwitchbot to 0.46.1 (#118025) 2024-05-24 16:13:29 +02:00
Erik Montnemery
3238bc83b8 Improve async_get_issue_tracker for custom integrations (#118016) 2024-05-24 16:13:26 +02:00
J. Nick Koston
f4b653a767 Update pySwitchbot to 0.46.0 to fix lock key retrieval (#118005)
* Update pySwitchbot to 0.46.0 to fix lock key retrieval

needs https://github.com/Danielhiversen/pySwitchbot/pull/236

* bump

* fixes
2024-05-24 16:13:22 +02:00
Shay Levy
09779b5f6e Add Shelly debug logging for async_reconnect_soon (#117945) 2024-05-24 16:13:19 +02:00
On Freund
ac97f25d6c Bump pyrympro to 0.0.8 (#117919) 2024-05-24 16:13:15 +02:00
Joakim Plate
7e18527dfb Update philips_js to 3.2.1 (#117881)
* Update philips_js to 3.2.0

* Update to 3.2.1
2024-05-24 16:13:12 +02:00
Peter
7d5f9b1adf Prevent time pattern reschedule if cancelled during job execution (#117879)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-24 16:13:09 +02:00
Bernardus Jansen
0fb5aaf0f8 Tesla Wall Connector fix spelling error/typo (#117841) 2024-05-24 16:13:05 +02:00
puddly
6956d0d65a Account for disabled ZHA discovery config entries when migrating SkyConnect integration (#117800)
* Properly handle disabled ZHA discovery config entries

* Update tests/components/homeassistant_sky_connect/test_util.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-05-24 16:13:02 +02:00
Franck Nijhof
db73074185 Update wled to 0.18.0 (#117790) 2024-05-24 16:12:59 +02:00
J. Nick Koston
dae4d316ae Fix race in config entry setup (#117756) 2024-05-24 16:12:55 +02:00
J. Nick Koston
56b55a0df5 Block older versions of custom integration mydolphin_plus since they cause crashes (#117751) 2024-05-24 16:12:50 +02:00
Ricardo Steijn
8d24f68f55 Bump crownstone-sse to 2.0.5, crownstone-cloud to 1.4.11 (#117748) 2024-05-24 16:12:46 +02:00
Anrijs
b44821b805 Bump aranet4 to 2.3.4 (#117738)
bump aranet4 lib version to 2.3.4
2024-05-24 16:12:43 +02:00
Michael
66c52e144e Consider only active config entries as media source in Synology DSM (#117691)
consider only active config entries as media source
2024-05-24 16:12:40 +02:00
On Freund
66fccb7296 Bump pyrisco to 0.6.2 (#117682) 2024-05-24 16:12:36 +02:00
J. Nick Koston
ecb587c4ca Fix setting MQTT socket buffer size with WebsocketWrapper (#117672) 2024-05-24 16:12:33 +02:00
Bouwe Westerdijk
c6a9388aea Add options-property to Plugwise Select (#117655) 2024-05-24 16:12:29 +02:00
Ville Skyttä
85f0fffa5a Filter out HTML greater/less than entities from huawei_lte sensor values (#117209) 2024-05-24 16:12:26 +02:00
Pete Sage
9dc66404e7 Fix Sonos album artwork performance (#116391) 2024-05-24 16:12:05 +02:00
epenet
6a10e89f6d Exclude gold and platinum integrations from .coveragerc (#117563) 2024-05-24 16:10:22 +02:00
J. Nick Koston
a8fba691ee Add types to event tracker data (#118010)
* Add types to event tracker data

* fixes

* do not test event internals in other tests

* fixes

* Update homeassistant/helpers/event.py

* cleanup

* cleanup
2024-05-24 10:09:39 -04:00
dontinelli
7183260d95 Change ZoneInfo to async_get_time_zone in fyta (#117996) 2024-05-24 16:09:18 +02:00
epenet
44f715bd02 Use issue_registry fixture in component tests (#118041) 2024-05-24 15:54:20 +02:00
Robert Resch
cb62f4242e Remove strict connection (#117933) 2024-05-24 15:50:22 +02:00
Jan Bouwhuis
6f81852eb4 Rename MQTT mixin classes (#118039) 2024-05-24 15:41:59 +02:00
Brian Rogers
080bba5d9b Update Rachio hose timer battery sensor (#118045) 2024-05-24 15:31:05 +02:00
epenet
0b4f1cff98 Use issue_registry fixture in core tests (#118042) 2024-05-24 15:26:32 +02:00
Marc Mueller
dd22ee3dac Improve annotation styling (#118032) 2024-05-24 15:05:53 +02:00
J. Nick Koston
2308ff2cbf Add json cache to lovelace config (#117843) 2024-05-24 14:07:43 +02:00
Yuval Aboulafia
2c09f72c33 Add config flow to Jewish Calendar (#84464)
* Initial commit

* add basic tests (will probably fail)

* Set basic UID for now

* Various improvements

* use new naming convention?

* bit by bit, still not working tho

* Add tz selection

* Remove failing tests

* update unique_id

* add the tests again

* revert to previous binary_sensor test

* remove translations

* apply suggestions

* remove const.py

* Address review

* revert changes

* Initial fixes for tests

* Initial commit

* add basic tests (will probably fail)

* Set basic UID for now

* Various improvements

* use new naming convention?

* bit by bit, still not working tho

* Add tz selection

* Remove failing tests

* update unique_id

* add the tests again

* revert to previous binary_sensor test

* remove translations

* apply suggestions

* remove const.py

* Address review

* revert changes

* Fix bad merges in rebase

* Get tests to run again

* Fixes due to fails in ruff/pylint

* Fix binary sensor tests

* Fix config flow tests

* Fix sensor tests

* Apply review

* Adjust candle lights

* Apply suggestion

* revert unrelated change

* Address some of the comments

* We should only allow a single jewish calendar config entry

* Make data schema easier to read

* Add test and confirm only single entry is allowed

* Move OPTIONS_SCHEMA to top of file

* Add options test

* Simplify import tests

* Test import end2end

* Use a single async_forward_entry_setups statement

* Revert schema updates for YAML schema

* Remove unneeded brackets

* Remove CONF_NAME from config_flow

* Assign hass.data[DOMAIN][config_entry.entry_id] to a local variable before creating the sensors

* Data doesn't have a name remove slugifying of it

* Test that the entry has been created correctly

* Simplify setup_entry

* Use suggested values helper and flatten location dictionary

* Remove the string for name exists as this error doesn't exist

* Remove name from config entry

* Remove _attr_has_entity_name - will be added in a subsequent PR

* Don't override entity id's - we'll fixup the naming later

* Make location optional - will by default revert to the user's home location

* Update homeassistant/components/jewish_calendar/strings.json

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

* No need for local lat/long variable

* Return name attribute, will deal with it in another PR

* Revert unique_id changes, will deal with this in a subsequent PR

* Add time zone data description

* Don't break the YAML config until the user has removed it.

* Cleanup initial config flow test

---------

Co-authored-by: Tsvi Mostovicz <ttmost@gmail.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-24 14:04:17 +02:00
Marcel van der Veldt
23597a8cdf Extend the blocklist for Matter transitions with more models (#118038) 2024-05-24 13:50:10 +02:00
Fabrice
d4acd86819 Make co/co2 threshold configurable via entity_config (#112978)
* make co/co2 threshold configurable via entity_config

* Split threshold into co/co2_threshold configuration
2024-05-24 13:28:19 +02:00
Philip Rosenberg-Watt
e7d23d8b49 Add APRS object tracking (#113080)
* Add APRS object tracking

Closes issue #111731

* Fix unit test

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-24 13:13:02 +02:00
Jan Bouwhuis
f12aee28a8 Improve error logging on invalid MQTT entity state (#118006)
* Improve error logging on invalid MQTT entity state

* Explain not hanlding TpeError and ValueError

* Move length check closer to source

* use _LOGGER.exception
2024-05-24 13:11:52 +02:00
Em
7d44321f0f Remove duplicate tests in generic_thermostat (#105622)
Tests using `setup_comp_4` and `setup_comp_6` have been replaced by a parameterized tests in #105643. Tests using `setup_comp_5` are therefore still duplicates and are removed.
2024-05-24 12:24:05 +02:00
Brett Adams
b99476284b Add Cover platform to Teslemetry (#117340)
* Add cover

* Test coverage

* Json lint

* Apply suggestions from code review

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

* Update tests

* Fix features

* Update snapshot from fixture

* Apply suggestions from code review

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-24 12:09:23 +02:00
Jan Bouwhuis
9333965b23 Create bound callback_message_received method for handling mqtt callbacks (#117951)
* Create bound callback_message_received method for handling mqtt callbacks

* refactor a bit

* fix ruff

* reduce overhead

* cleanup

* cleanup

* Revert changes alarm_control_panel

* Add sensor and binary sensor

* use same pattern for MqttAttributes/MqttAvailability

* remove useless function since we did not need to add to it

* code cleanup

* collapse

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-24 11:18:25 +02:00
epenet
d4df86da06 Move TibberDataCoordinator to separate module (#118027) 2024-05-24 11:05:54 +02:00
epenet
95840a031a Move nuki coordinator to separate module (#117975) 2024-05-24 10:55:26 +02:00
Thomas55555
13385912d1 Refactor Husqvarna Automower (#117938) 2024-05-24 10:54:19 +02:00
Sid
bc72f82776 Convert namedtuple to NamedTuple for smartthings (#115395) 2024-05-24 10:53:05 +02:00
Pete Sage
1ad2e4951d Fix Sonos album artwork performance (#116391) 2024-05-24 10:42:45 +02:00
mkmer
5c263b039e Catch client connection error in Honeywell (#117502)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-24 10:40:30 +02:00
epenet
bb0b01e4a9 Add error message to snapshot_platform helper (#117974) 2024-05-24 10:38:23 +02:00
J. Nick Koston
488b2edfd8 Bump pySwitchbot to 0.46.1 (#118025) 2024-05-24 10:37:10 +02:00
epenet
39f618d5e5 Add snapshot tests to nuki (#117973) 2024-05-24 10:36:59 +02:00
Ulfmerbold2000
e274316a50 Add missing Ecovacs life spans (#117134)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-24 10:36:13 +02:00
Fredrik Erlandsson
d1904941c1 Fix issue with device_class.capitalize() in point (#117969) 2024-05-24 10:35:44 +02:00
Marc Mueller
905adb2431 Update codespell ignore list (#118018) 2024-05-24 10:24:34 +02:00
Marc Mueller
3b4b36a9fd Fix partial typing (#118022) 2024-05-24 10:24:18 +02:00
Marc Mueller
0e03e591e7 Improve callable annotations (#118024) 2024-05-24 10:24:09 +02:00
J. Nick Koston
b7a18e9a8f Avoid calling split_entity_id in event add/remove filters (#118015) 2024-05-24 10:01:33 +02:00
Marc Mueller
01ace8cffd Update typing-extensions to 4.12.0 (#118020) 2024-05-24 10:00:43 +02:00
epenet
a6ca5c5b84 Add logging to SamsungTV turn-on (#117962)
* Add logging to SamsungTV turn-on

* Apply suggestions from code review

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-24 09:59:29 +02:00
Erik Montnemery
f896c7505b Improve async_get_issue_tracker for custom integrations (#118016) 2024-05-24 09:55:05 +02:00
Evgeny
24d31924a0 Migrate OpenWeaterMap to new library (support API 3.0) (#116870)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-23 21:51:10 -10:00
epenet
5bca9d142c Use snapshot in renault diagnostics tests (#118021) 2024-05-24 09:42:33 +02:00
epenet
19aaa8ccee Move plaato coordinator to separate module (#118019) 2024-05-24 09:42:12 +02:00
Franck Nijhof
9224997411 Add sequence action for automations & scripts (#117690)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-24 09:34:49 +02:00
kingy444
e70d8aec96 Daikin Aircon - Add strings and debug (#116674) 2024-05-24 09:28:44 +02:00
epenet
edd14929e3 Add snapshot tests to plaato (#118017) 2024-05-24 09:23:09 +02:00
Brett Adams
96d9342f13 Add models to energy sites in Teslemetry (#117419)
* Add models to energy sites and test devices

* Fix device testing

* Revert VIN

* Fix snapshot

* Fix snapshot

* fix snap

* Sort list
2024-05-24 09:18:22 +02:00
Shay Levy
cb59eb183d Switcher - use single_config_entry and register_discovery_flow in con… (#118000) 2024-05-24 09:15:17 +02:00
Brett Adams
ad90ecef3f Add binary sensor platform to Teslemetry (#117230)
* Add binary sensor platform

* Add tests

* Cleanup

* Add refresh test

* Fix runtime_data after rebase

* Remove streaming strings

* test error

* updated_once

* fix updated_once

* assert_entities_alt

* Update homeassistant/components/teslemetry/binary_sensor.py

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

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-24 08:55:27 +02:00
epenet
8da799e420 Move omnilogic coordinator to separate module (#118014) 2024-05-24 08:48:05 +02:00
Marc Mueller
301c484e05 Fix vallow test fixtures (#118003) 2024-05-24 08:31:21 +02:00
Thomas55555
528d67ee06 Remove unused snapshots [a-f] (#117999) 2024-05-24 08:28:04 +02:00
Brett Adams
3c7857f0f0 Add lock platform to Teslemetry (#117344)
* Add lock platform

* Tests and fixes

* Fix json

* Review Feedback

* Apply suggestions from code review

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

* wording

* Fix rebase

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-24 08:26:29 +02:00
Marc Mueller
dc47792ff2 Update codespell to 2.3.0 (#118001) 2024-05-24 08:22:29 +02:00
J. Nick Koston
93daac9b3d Update pySwitchbot to 0.46.0 to fix lock key retrieval (#118005)
* Update pySwitchbot to 0.46.0 to fix lock key retrieval

needs https://github.com/Danielhiversen/pySwitchbot/pull/236

* bump

* fixes
2024-05-23 23:59:44 -04:00
Paulus Schoutsen
d1af40f1eb Google gen updates (#117893)
* Add a recommended model for Google Gen AI

* Add recommended settings to Google Gen AI

* Revert no API msg

* Use correct default settings

* Make sure options are cleared when using recommended

* Update snapshots

* address comments
2024-05-23 17:16:48 -04:00
Shay Levy
c0bcf00bf8 Remove Switcher YAML import support (#117994) 2024-05-23 21:12:19 +02:00
epenet
4ee1460eec Move moehlenhoff_alpha2 coordinator to separate module (#117970) 2024-05-23 21:06:00 +02:00
epenet
34deac1a61 Add snapshot tests to omnilogic (#117986) 2024-05-23 21:04:31 +02:00
J. Nick Koston
bdc3bb57f3 Bump habluetooth to 3.1.1 (#117992) 2024-05-23 20:43:14 +02:00
Shay Levy
36d77414c6 Enable Switcher assume buttons for all devices (#117993) 2024-05-23 20:29:49 +02:00
Allen Porter
978fe2d7b0 Bump to google-nest-sdm to 4.0.4 (#117982) 2024-05-23 20:27:48 +02:00
agrauballe
ef138eb976 Deconz - Added trigger support for Aqara WB-R02D mini switch (#117917)
Added support for Aqara WB-R02D mini switch

Co-authored-by: agr <agr@kamstrup.com>
2024-05-23 18:04:37 +02:00
J. Nick Koston
c5cc9801a6 Cache serialize of manifest for loaded integrations (#117965)
* Cache serialize of manifest for loaded integrations

The manifest/list and manifest/get websocket apis
are called frequently when moving around in the UI.
Since the manifest does not change we can make
the the serialized version a cached property

* reduce

* reduce
2024-05-23 10:52:05 -04:00
J. Nick Koston
09e7156d2d Fix turbojpeg init doing blocking I/O in the event loop (#117971)
* Fix turbojpeg init doing blocking I/O in the event loop

fixes
```
Detected blocking call to open inside the event loop by integration camera at homeassistant/components/camera/img_util.py, line 100: TurboJPEGSingleton.__instance = TurboJPEG() (offender: /usr/local/lib/python3.12/ctypes/util.py, line 276: with open(filepath, rb) as fh:), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+camera%22
```

* Update homeassistant/components/camera/img_util.py

* Fix turbojpeg init doing blocking I/O in the event loop

fixes
```
Detected blocking call to open inside the event loop by integration camera at homeassistant/components/camera/img_util.py, line 100: TurboJPEGSingleton.__instance = TurboJPEG() (offender: /usr/local/lib/python3.12/ctypes/util.py, line 276: with open(filepath, rb) as fh:), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+camera%22
```

* already suppressed and logged
2024-05-23 10:50:25 -04:00
epenet
6b2ddcca5e Move rainmachine coordinator to separate module (#117983)
* Move rainmachine coordinator to separate module

* Coverage
2024-05-23 16:41:50 +02:00
epenet
162f5ccbde Add snapshot platform tests to rainmachine (#117978)
* Add snapshot tests to rainmachine

* Add sensor and switch tests
2024-05-23 16:29:39 +02:00
epenet
0c243d699c Use SnapshotAssertion in rainmachine diagnostic tests (#117979)
* Use SnapshotAssertion in rainmachine diagnostic tests

* Force entry_id

* Adjust

* Fix incorrect fixtures

* Adjust
2024-05-23 16:22:31 +02:00
Brett Adams
880b315890 Add switch platform to Teslemetry (#117482)
* Add switch platform

* Add tests

* Add test

* Fixes

* ruff

* Rename to storm watch

* Remove valet

* Apply suggestions from code review

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

* ruff

* Review feedback

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-23 14:28:18 +02:00
epenet
bc51a4c524 Add snapshot tests to moehlenhoff_alpha2 (#117967)
* Add tests to moehlenhoff_alpha2

* Adjust coverage

* Adjust coverage

* Adjust coverage

* Adjust patch

* Adjust
2024-05-23 11:54:20 +02:00
epenet
bbe8e69795 Cleanup pylint ignore (#117964) 2024-05-23 11:09:33 +02:00
dontinelli
6682244abf Improve fyta tests (#117661)
* Add test for init

* update tests

* split common.py into const.py and __init__.py

* Update tests/components/fyta/__init__.py

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

* add autospec, tidy up

* adjust len-test

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-23 10:51:30 +02:00
Joost Lekkerkerker
e8f544d216 Bump airgradient to 0.4.1 (#117963) 2024-05-23 10:25:54 +02:00
J. Nick Koston
6c6a5f496a Simplify async_track_time_interval implementation (#117956) 2024-05-22 21:56:49 -10:00
Matthias Alphart
fc4ea774ca Fix run-in-env script for not running in venv (#117961) 2024-05-23 09:14:59 +02:00
kaareseras
cd14d9b0e3 Add Azure data explorer (#68992)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-23 09:14:09 +02:00
Galorhallen
767d971c5f Better handling of EADDRINUSE for Govee light (#117943) 2024-05-23 08:45:49 +02:00
Jan-Philipp Benecke
88257c9c42 Allow to reconfigure integrations with single_config_entry set (#117939) 2024-05-23 08:41:12 +02:00
Sid
cc17725d1d Bump ruff to 0.4.5 (#117958) 2024-05-23 07:29:09 +02:00
Shay Levy
178c185a2f Add Shelly debug logging for async_reconnect_soon (#117945) 2024-05-22 23:15:15 -04:00
J. Nick Koston
e663d4f602 Refactor state_reported listener setup to avoid merge in async_fire_internal (#117953)
* Refactor state_reported listener setup to avoid merge in async_fire_internal

Instead of merging the listeners in async_fire_internal, setup the listener for
state_changed at the same time so async_fire_internal can avoid having to copy
another list

* Refactor state_reported listener setup to avoid merge in async_fire_internal

Instead of merging the listeners in async_fire_internal, setup the listener for
state_changed at the same time so async_fire_internal can avoid having to copy
another list

* tweak

* tweak

* tweak

* tweak

* tweak
2024-05-22 23:14:50 -04:00
Paulus Schoutsen
1f7245ecf2 Update LLM no tools message (#117935) 2024-05-22 21:17:03 -04:00
Jan Bouwhuis
050fc73056 Refactor shared mqtt schema's to new module (#117944)
* Refactor mqtt schema's to new module

* Remove unrelated change
2024-05-23 01:12:25 +02:00
Mischa Siekmann
ad69a23fda Send MEDIA_ANNOUNCE flag to ESPHome media_player (#116993) 2024-05-23 09:47:34 +12:00
Peter
eb76386c68 Prevent time pattern reschedule if cancelled during job execution (#117879)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-22 10:36:03 -10:00
Kevin Worrel
40fdc840ab Add number entities for screenlogic values used in SI calc (#117812) 2024-05-22 09:52:09 -10:00
Michael
be6598ea4f Store runtime data inside the config entry in iBeacon (#117936)
store runtime data inside the config entry

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-22 20:44:41 +02:00
epenet
deded19bb3 Add available and state to SamsungTV remote (#117909)
* Add available and state to SamsungTV remote

* Align turn_off

* Fix merge

* Fix merge (again)
2024-05-22 20:35:34 +02:00
J. Nick Koston
0d5c8e30cd Migrate issue registry to use singleton helper (#117848)
* Migrate issue registry to use singleton helper

The other registries were already migrated, but since this
one had a read only flag, it required a slightly different
solution since it uses the same hass.data key

* refactor
2024-05-22 14:13:19 -04:00
Allen Porter
7a6b107248 Move nest diagnostic tests to use snapshots (#117929) 2024-05-22 14:11:07 -04:00
Joost Lekkerkerker
0c5296b38f Add lock to token validity check (#117912) 2024-05-22 14:10:23 -04:00
puddly
55c8ef1c7b Simplify SkyConnect setup flow (#117868)
* Delay firmware probing until after the user picks the firmware type

* Remove confirmation step

* Fix unit tests

* Simplify unit test patching logic

Further simplify unit tests

* Bump Zigbee firmware up to the first choice

* Reuse `async_step_pick_firmware` during options flow

* Proactively validate all ZHA entries, not just the first
There can only be one (for now) so this changes nothing functionally

* Add unit test for bad firmware when configuring Thread
2024-05-22 14:09:30 -04:00
J. Nick Koston
6113b58e9c Speed up registry indices (#117897)
* Use defaultdict for registry indices

defaultdict is faster and does not have to create an empty
dict that gets throw away when the key is already present

* Use defaultdict for registry indices

defaultdict is faster and does not have to create an empty
dict that gets throw away when the key is already present
2024-05-22 14:07:39 -04:00
Michael Hansen
f99ec87338 Fail if targeting all devices in the house in service intent handler (#117930)
* Fail if targeting all devices in the house

* Update homeassistant/helpers/intent.py

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-22 13:53:31 -04:00
Thomas55555
eeeb5b2725 Add switch for stay out zones in Husqvarna Automower (#117809)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-05-22 18:51:21 +02:00
On Freund
f9eb3db897 Bump pyrympro to 0.0.8 (#117919) 2024-05-22 18:14:04 +02:00
tronikos
e4130480c3 Google Generative AI: Handle response with empty parts in generate_content (#117908)
Handle response with empty parts in generate_content
2024-05-22 07:47:16 -07:00
mkmer
5b1677ccb7 Use common title for reauth confirm in Whirlpool config flow (#117924)
* Add missing placeholder

* Use common title for reauth
2024-05-22 16:45:54 +02:00
G Johansson
d1bdf73bc5 Add clear night to smhi (#115998) 2024-05-22 16:03:48 +02:00
Marc Mueller
5c9c71ba2c Fix performance regression with SignalType (#117920) 2024-05-22 13:58:37 +02:00
Joost Lekkerkerker
5229f0d0ef Exclude modbus from diagnostics hassfest check (#117855) 2024-05-22 13:09:20 +02:00
epenet
5ee42ec780 Remove duplicate code in SamsungTV (#117913) 2024-05-22 12:29:25 +02:00
J. Nick Koston
9454dfc719 Bump habluetooth to 3.1.0 (#117905) 2024-05-22 12:28:13 +02:00
J. Nick Koston
4e3c4400a7 Refactor MQTT to replace get_mqtt_data with HassKey (#117899) 2024-05-21 23:21:51 -10:00
Chris
b4d0562063 Adopt new runtime entry data model for AlarmDecoder (#117856)
* Adopt new runtime entity data model for AlarmDecoder

Transition the AlarmDecoder integration to the new runtime entity model.

* Apply change suggestions by epenet

Tested & applied the suggestions from epenet.
2024-05-22 10:47:37 +02:00
epenet
b898c86c89 Add MAC cleanup to SamsungTV (#117906)
* Add MAC cleanup to samsungtv

* Simplify

* Adjust

* leftover

* Appl

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

* Update diagnostics tests

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-22 10:36:21 +02:00
MatthewFlamm
52bb02b376 Keep observation data valid for 60 min and retry with no data for nws (#117109)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-21 22:14:05 -10:00
epenet
cddb057eae Adjust conftest type hints (#117900) 2024-05-22 09:34:17 +02:00
epenet
39b4e890a0 Add coordinator to SamsungTV (#117863)
* Introduce samsungtv coordinator

* Adjust

* Adjust media_player

* Remove remote

* Adjust

* Fix mypy

* Adjust

* Use coordinator.async_refresh
2024-05-22 09:20:05 +02:00
Jakob Schlyter
2e68363755 Improve typing via hassfest serializer (#117382) 2024-05-22 08:22:18 +02:00
J. Nick Koston
1985a2ad8b Small speed up to creating flows (#117896)
Use a defaultdict instead of setdefault
2024-05-22 08:16:08 +02:00
Robert Svensson
5abf77662a Support carbon dioxide and formaldehyde sensors in deCONZ (#117877)
* Add formaldehyde sensor
* Add carbon dioxide sensor
* Bump pydeconz to v116
2024-05-22 07:33:55 +02:00
J. Nick Koston
f42b98336c Reduce overhead to validate mqtt topics (#117891)
* Reduce overhead to validate mqtt topics

valid_topic would iterate all the chars 4x, refactor to only
do it 1x

valid_subscribe_topic would enumerate all the chars when there was
no + in the string

* check if adding a cache helps

* tweak lrus based on testing stats

* note to future maintainers

* note to future maintainers

* keep standard lru_cache size as increasing makes no material difference
2024-05-21 23:11:05 -04:00
Denis Shulyaka
2f0215b034 LLM Tools support for OpenAI integration (#117645)
* initial commit

* Add tests

* Move tests to the correct file

* Fix exception type

* Undo change to default prompt

* Add intent dependency

* Move format_tool out of the class

* Fix tests

* coverage

* Adjust to new API

* Update strings

* Update tests

* Remove unrelated change

* Test referencing non-existing API

* Add test to verify no exception on tool conversion for Assist tools

* Bump voluptuous-openapi==0.0.4

* Add device_id to tool input

* Fix tests

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-21 22:45:04 -04:00
J. Nick Koston
09213d8933 Avoid creating tasks to subscribe to discovery in MQTT (#117890) 2024-05-21 16:39:23 -10:00
Denis Shulyaka
009c9e79ae LLM Tools: Add device_id (#117884) 2024-05-21 21:24:46 -04:00
J. Nick Koston
4ed45a322c Reduce overhead to call get_mqtt_data (#117887)
We call this 100000s of times if there are many subscriptions

https://github.com/home-assistant/core/pull/109030#issuecomment-2123612530
2024-05-21 21:11:27 -04:00
J. Nick Koston
f429bfa903 Fix mqtt timer churn (#117885)
Borrows the same design from homeassistant.helpers.storage to avoid
rescheduling the timer every time async_schedule is called if a timer
is already running.

Instead of the timer fires too early it gets rescheduled for the time
we wanted it. This avoids 1000s of timer add/cancel during startup
2024-05-21 21:05:33 -04:00
J. Nick Koston
1800a60a6d Simplify and speed up mqtt_config_entry_enabled check (#117886) 2024-05-21 21:04:31 -04:00
Joakim Plate
5f7b84caea Update philips_js to 3.2.1 (#117881)
* Update philips_js to 3.2.0

* Update to 3.2.1
2024-05-22 00:11:10 +02:00
Matthias Alphart
70cf176d93 Add value_template option to KNX expose (#117732)
* Add value_template option to KNX expose

* template exception handling
2024-05-22 00:09:42 +02:00
Matthias Alphart
622d1e4c50 Add data point type option to knx.telegram trigger (#117463)
* Add data point type (dpt) option to `knx.telegram` trigger

* Rename from `dpt` to `type` to match services

* Add test for GroupValueRead telegrams

* Fix device trigger schema inheritance

* Typesafe dispatcher signal

* readability

* Avoid re-decoding with same transcoder
2024-05-22 00:03:54 +02:00
Matthias Alphart
b94735a445 Add async_turn_on/off methods for KNX climate entities (#117882)
Add async_turn_on/off methods for KNX climate entities
2024-05-21 23:54:43 +02:00
Sid
c2b3bf3fb9 Enable Ruff RET502 (#115139) 2024-05-21 22:19:33 +02:00
Paulus Schoutsen
ff2b851683 Make Google AI model picker a dropdown (#117878) 2024-05-21 22:13:07 +02:00
Paulus Schoutsen
f21226dd0e Address late feedback Google LLM (#117873) 2024-05-21 20:11:18 +02:00
mkmer
2a9b31261c Add missing placeholder name to reauth (#117869)
add placeholder name to reauth
2024-05-21 12:57:23 -04:00
Michael Hansen
8079cc0464 Add description to intent handlers and use in LLM helper (#117864) 2024-05-21 12:54:34 -04:00
wittypluck
0c37a065ad Add support for Glances v4 (#117664) 2024-05-21 16:21:36 +02:00
J. Nick Koston
0112c7fcfd Small speed up to logbook humanify (#117854) 2024-05-21 09:10:20 -04:00
J. Nick Koston
e12d23bd48 Speed up async_get_loaded_integrations (#117851)
* Speed up async_get_loaded_integrations

Use a setcomp and difference to find the components to split
to avoid the loop. A setcomp is inlined in python3.12 so its
much faster

* Speed up async_get_loaded_integrations

Use a setcomp and difference to find the components to split
to avoid the loop. A setcomp is inlined in python3.12 so its
much faster

* simplify

* fix compat

* bootstrap

* fix tests
2024-05-21 09:08:49 -04:00
J. Nick Koston
266ce9e268 Cache area registry JSON serialize (#117847)
We already cache the entity and device registry, but since I never
used area until recently I did not have enough to notice that they
were not cached
2024-05-21 09:03:31 -04:00
J. Nick Koston
905692901c Simplify service description cache logic (#117846) 2024-05-21 09:02:32 -04:00
J. Nick Koston
e8fc4e0f19 Small speed up to adding event bus listeners (#117849) 2024-05-21 13:52:44 +02:00
epenet
bfffcc3ad6 Simplify samsungtv unload (#117838) 2024-05-21 10:01:52 +02:00
epenet
54d048fb11 Remove silver integrations from NO_DIAGNOSTICS (#117840) 2024-05-21 10:01:13 +02:00
Bernardus Jansen
d5e0ffc4d8 Tesla Wall Connector fix spelling error/typo (#117841) 2024-05-21 10:00:29 +02:00
Robert Resch
5e3483ac3c Use uv instead of pip in development env (#113517) 2024-05-21 09:56:31 +02:00
Marc Mueller
d44f949b19 Use PEP 695 misc (2) (#117814) 2024-05-21 09:45:57 +02:00
J. Nick Koston
c1b4c977e9 Convert solax to use DataUpdateCoordinator (#117767) 2024-05-21 09:44:10 +02:00
Thomas55555
bb758bcb26 Bump aioautomower to 2024.5.1 (#117815) 2024-05-21 09:43:36 +02:00
Marc Mueller
58d0ac7f21 Remove future import to fix broken typing.get_type_hints call (#117837) 2024-05-21 09:39:47 +02:00
J. Nick Koston
508cc2e5a1 Remove @ from codeowners when downloading diagnostics (#117825)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-21 09:32:07 +02:00
Bernardus Jansen
d0b1ac6918 Tesla wall connector add sensors (#117769) 2024-05-21 09:30:24 +02:00
dependabot[bot]
0fb78b3ab3 Bump github/codeql-action from 3.25.5 to 3.25.6 (#117835)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 09:29:06 +02:00
epenet
aaa5df9981 Refactor SamsungTV auth check (#117834) 2024-05-21 09:14:17 +02:00
dependabot[bot]
ae0988209b Bump codecov/codecov-action from 4.4.0 to 4.4.1 (#117836)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-21 09:09:53 +02:00
Allen Porter
fc931ac449 Stop the nest subscriber on Home Assistant stop (#117830) 2024-05-20 22:59:11 -07:00
Marc Mueller
9cbcf5f2a5 Improve zwave_js TypeVar usage (#117810)
* Improve zwave_js TypeVar usage

* Use underscore for TypeVar name
2024-05-21 07:42:07 +02:00
Marc Mueller
26fb7627ed Update scaffold templates to use runtime_data (#117819) 2024-05-21 07:15:08 +02:00
J. Nick Koston
c9d1b127d8 Improve error message when template is rendered from wrong thread (#117822)
* Improve error message when template is rendered from wrong thread

* Improve error message when template is rendered from wrong thread
2024-05-20 23:26:48 -04:00
J. Nick Koston
58210b1968 Bump tesla-powerwall to 0.5.2 (#117823) 2024-05-20 16:51:39 -10:00
J. Nick Koston
7c58f05898 Bump dbus-fast to 2.21.3 (#117824) 2024-05-20 16:27:02 -10:00
puddly
4dc670056c Account for disabled ZHA discovery config entries when migrating SkyConnect integration (#117800)
* Properly handle disabled ZHA discovery config entries

* Update tests/components/homeassistant_sky_connect/test_util.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-05-20 21:35:57 -04:00
J. Nick Koston
7714f807b4 Detect incorrect exception in forwarded platforms (#117754)
* Detect incorrect exception in forwarded platforms

If an integration raises ConfigEntryError/ConfigEntryAuthFailed/ConfigEntryAuthFailed
in a forwarded platform it would affect the state of the config entry and cause it to
process unloads and setup retries in while the other platforms continued to setup

* Detect incorrect exception in forwarded platforms

If an integration raises ConfigEntryError/ConfigEntryAuthFailed/ConfigEntryAuthFailed
in a forwarded platform it would affect the state of the config entry and cause it to
process unloads and setup retries in while the other platforms continued to setup

* Update homeassistant/config_entries.py

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

* adjust

* fix

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-20 20:01:59 -04:00
MatthewFlamm
4d447ee0a7 Bump pynws to 1.8.1 for nws (#117820) 2024-05-20 10:43:31 -10:00
Marc Mueller
bc2ee96cae Remove quotes surrounding annotations (#117817) 2024-05-20 22:06:58 +02:00
Marc Mueller
1ad8151bd1 Use PEP 695 type alias in tests (#117797) 2024-05-20 19:03:04 +02:00
Michael Hansen
e8aa4b069a Unpause media players that were paused outside voice (#117575)
* Unpause media players that were paused outside voice

* Use time.time()

* Update last paused as media players change state

* Add sleep to test

* Use context

* Implement suggestions
2024-05-20 11:02:36 -05:00
Marc Mueller
32bf02479b Enable UP040 ruff check (#117792) 2024-05-20 15:57:03 +02:00
Franck Nijhof
7f92ee5e04 Update wled to 0.18.0 (#117790) 2024-05-20 14:49:52 +03:00
Marc Mueller
7998f874c0 Use PEP 695 for function annotations with scoping (#117787) 2024-05-20 12:43:39 +02:00
Marc Mueller
f50973c76c Use PEP 695 misc (#117788) 2024-05-20 12:01:49 +02:00
Marc Mueller
649981e503 Update mypy-dev to 1.11.0a3 (#117786) 2024-05-20 11:40:55 +02:00
Marlon
2809070e85 Set integration_type to device for apsystems integration (#117782) 2024-05-20 11:13:08 +02:00
epenet
1bf7a4035c Downgrade tellduslive quality scale to silver (#117784) 2024-05-20 11:07:26 +02:00
epenet
ae5769dc50 Downgrade point quality scale to silver (#117783) 2024-05-20 11:06:56 +02:00
J. Nick Koston
5a609c34bb Fix blocking I/O in the event loop when loading timezones (#117721) 2024-05-20 11:06:03 +02:00
Marc Mueller
0293315b23 Use PEP 695 for covariant class annotations (#117780) 2024-05-20 10:55:44 +02:00
Marc Mueller
f76842d7db Use PEP 695 for hass_dict annotations (#117779) 2024-05-20 10:46:50 +02:00
Marc Mueller
7b27101f8a Use PEP 695 for class annotations (3) (#117777) 2024-05-20 10:46:01 +02:00
Marc Mueller
8f0fb4db3e Use PEP 695 for class annotations (4) (#117778) 2024-05-20 10:44:52 +02:00
Marc Mueller
eedce95bc9 Use PEP 695 for class annotations (2) (#117776) 2024-05-20 10:43:59 +02:00
Marc Mueller
b93312b62c Use PEP 695 for class annotations (1) (#117775) 2024-05-20 10:42:57 +02:00
epenet
3f15b44a11 Move environment_canada coordinator to separate module (#117426) 2024-05-20 10:00:01 +02:00
Marc Mueller
e48cf6fad2 Update pylint to 3.2.2 (#117770) 2024-05-20 09:59:22 +02:00
J. Nick Koston
149120b749 Add setup time detail to diagnostics (#117766) 2024-05-20 09:52:28 +02:00
J. Nick Koston
13ba8e62a9 Fix race in config entry setup (#117756) 2024-05-20 09:47:47 +02:00
J. Nick Koston
d11003ef12 Block older versions of custom integration mydolphin_plus since they cause crashes (#117751) 2024-05-20 09:45:52 +02:00
J. Nick Koston
fe769c4527 Fix missing type for mqtt websocket wrapper (#117752) 2024-05-20 09:32:50 +02:00
epenet
570d5f2b55 Add turn_on to SamsungTV remote (#117403)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-19 20:14:20 -10:00
Ricardo Steijn
14f1e8c520 Bump crownstone-sse to 2.0.5, crownstone-cloud to 1.4.11 (#117748) 2024-05-19 19:18:28 -10:00
Alberto Geniola
9fab2aa2bc Update elmax_api to v0.0.5 (#117693)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-19 19:16:46 -10:00
Denis Shulyaka
c3196a5667 LLM Tools support for Google Generative AI integration (#117644)
* initial commit

* Undo prompt chenges

* Move format_tool out of the class

* Only catch HomeAssistantError and vol.Invalid

* Add config flow option

* Fix type

* Add translation

* Allow changing API access from options flow

* Allow model picking

* Remove allowing HASS Access in main flow

* Move model to the top in options flow

* Make prompt conditional based on API access

* convert only once to dict

* Reduce debug logging

* Update title

* re-order models

* Address comments

* Move things

* Update labels

* Add tool call tests

* coverage

* Use LLM APIs

* Fixes

* Address comments

* Reinstate the title to not break entity name

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-19 22:11:25 -04:00
J. Nick Koston
ac3321cef1 Fix setting MQTT socket buffer size with WebsocketWrapper (#117672) 2024-05-19 14:09:21 -10:00
Jan-Philipp Benecke
99565bef27 Bump pydiscovergy to 3.0.1 (#117740) 2024-05-19 20:56:58 +02:00
Maciej Bieniek
826f6c6f7e Refactor tests for Brother integration (#117377)
* Refactor tests - step 1

* Remove fixture

* Refactor test_init

* Refactor test_diagnostics

* Refactor test_config_flow

* Increase test coverage

* Cleaning

* Cleaning

* Check config entry state in test_async_setup_entry

* Simplify patching

* Use AsyncMock when patching

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-19 20:41:47 +02:00
Anrijs
d2008ffdd7 Bump aranet4 to 2.3.4 (#117738)
bump aranet4 lib version to 2.3.4
2024-05-19 21:08:39 +03:00
Guido Schmitz
e68bf623a7 Use reauth helper in devolo Home Control (#117739) 2024-05-19 19:31:19 +02:00
Joost Lekkerkerker
1b105a3c97 Use helper in Withings reauth (#117727) 2024-05-19 19:25:31 +02:00
Shay Levy
d84890bc59 Bump aioshelly to 10.0.0 (#117728) 2024-05-19 19:25:12 +02:00
Guido Schmitz
38f0c47942 Use reauth helper in devolo Home Network (#117736) 2024-05-19 19:23:30 +02:00
Jake Martin
cc60fc6d9f Bump monzopy to 1.2.0 (#117730) 2024-05-19 15:37:25 +02:00
jjlawren
b8c5dcaeef Bump PlexAPI to 4.15.13 (#117712) 2024-05-19 11:36:25 +02:00
Maciej Bieniek
da42a8e1c6 Use SnmpEngine stored in hass.data by singleton in Brother integration (#117043) 2024-05-19 11:33:21 +02:00
Paulus Schoutsen
d001e7daea Add API class to LLM helper (#117707)
* Add API class to LLM helper

* Add more tests

* Rename intent to assist to broaden scope
2024-05-18 21:14:05 -04:00
Shay Levy
bfc52b9fab Avoid Shelly RPC reconnect during device shutdown (#117702) 2024-05-19 02:05:51 +03:00
Paulus Schoutsen
c59010c499 Remove AngellusMortis as code-owner Unifi Protect (#117708) 2024-05-18 22:54:00 +02:00
Paulus Schoutsen
98330162e9 Add GitHub CoPilot to extensions devcontainer (#117699) 2024-05-18 22:30:22 +02:00
Michael
6d3cafb43b Move entity definitions into own module in AVM Fritz!Tools (#117701)
* move entity definitions into own module

* merge entity description mixin

* add entity.py to .coveragerc
2024-05-18 22:25:25 +02:00
Michael
a983a8c6d8 Consider only active config entries as media source in Synology DSM (#117691)
consider only active config entries as media source
2024-05-18 16:38:22 +02:00
epenet
d81bb8cdcd Allow manual delete of stale Renault vehicles (#116229) 2024-05-18 13:46:38 +02:00
Ville Skyttä
a27cc24da2 Filter out HTML greater/less than entities from huawei_lte sensor values (#117209) 2024-05-18 13:45:42 +02:00
epenet
3a8bdfbfdf Use remove_device helper in tasmota tests (#116617) 2024-05-18 13:43:21 +02:00
Joost Lekkerkerker
1d16e219e4 Refactor Aurora tests (#117323) 2024-05-18 13:40:30 +02:00
Sid
54ba393be8 Add __pycache__ to gitignore (#114056) 2024-05-18 13:30:03 +02:00
Brett Adams
1b0c91fa4d Improve diagnostics in Teslemetry (#117613) 2024-05-18 13:27:23 +02:00
Joost Lekkerkerker
b39028acf2 Improve Monzo tests (#117036) 2024-05-18 13:20:08 +02:00
epenet
4dad9c8859 Move plenticore coordinators to separate module (#117491) 2024-05-18 13:11:22 +02:00
Joost Lekkerkerker
c38539b368 Use generator expression in poolsense (#117582) 2024-05-18 13:10:06 +02:00
Marc Mueller
10dfa91e54 Remove useless TypeVars (#117687) 2024-05-18 12:58:51 +02:00
Marc Mueller
97a4101900 Use PEP 695 for dispatcher helper typing (#117685) 2024-05-18 12:47:03 +02:00
Bouwe Westerdijk
fe6df8db1e Add options-property to Plugwise Select (#117655) 2024-05-18 12:39:58 +02:00
Marc Mueller
3cd1717437 Improve YieldFixture typing (#117686) 2024-05-18 12:35:02 +02:00
Marc Mueller
26a599ad11 Use PEP 695 for function annotations (1) (#117658) 2024-05-18 11:45:54 +02:00
Marc Mueller
900b6211ef Use PEP 695 for function annotations (2) (#117659) 2024-05-18 11:44:39 +02:00
Marc Mueller
4cf0a3f154 Use PEP 695 for function annotations (3) (#117660) 2024-05-18 11:43:32 +02:00
Marc Mueller
34ea781031 Use PEP 695 for decorator typing with type aliases (1) (#117662) 2024-05-18 11:42:39 +02:00
Marc Mueller
907b9c42e5 Use PEP 695 for decorator typing with type aliases (2) (#117663) 2024-05-18 11:41:46 +02:00
tronikos
d65437e347 Bump google-generativeai==0.5.4 (#117680) 2024-05-18 11:38:33 +02:00
On Freund
b97cf9ce42 Bump pyrisco to 0.6.2 (#117682) 2024-05-18 11:37:24 +02:00
Maciej Bieniek
fe65ef72a7 Add missing string reconfigure_successful for NAM reconfigure flow (#117683)
Add missing string reconfigure_successful

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-18 11:24:39 +02:00
David Knowles
034197375c Clean up some bad line wrapping in Hydrawise (#117671)
Fix some bad line wrapping
2024-05-18 10:26:22 +02:00
epenet
a904557bbb Move philips_js coordinator to separate module (#117561) 2024-05-18 10:21:22 +02:00
epenet
7ceaf2d3f0 Move tomorrowio coordinator to separate module (#117537)
* Move tomorrowio coordinator to separate module

* Adjust imports
2024-05-18 09:01:50 +02:00
Christopher Tremblay
b015dbfccb Add AlarmDecoder device info (#117357)
* Update AlarmDecoder component to newer model

This commit makes AlarmDecoder operate as a proper device entity following the new model introduced a few years ago.

Code also has an internal dependency on a newer version of adext (>= 0.4.3) which has been updated correspondingly.

* Created AlarmDecoder entity

Added an alarmdecoder entity so the device_info can be re-used across the integration

* Move _attr_has_entity_name to base entity

As per code review suggestion, clean up the object model.

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

* Missed one suggestion with the prior commit

Moves _attr_has_entity_name to base entity

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

* Address some ruff issues

* Apply additional ruff cleanups

Ran ruff again to clean up a few files tat weren't picked up last time

* Apply suggestions from code review

Some additional cleanup of style & removal of unnecessary code

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

* Properly generated the integration file

generation had to happen twice for this to work.  Now that it's generated, I'm including the missing update.

* Apply suggestions from code review

Use local client variable instead of self._client

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

* Sort the manifest

documentation was added, but it wasn't sorted properly in the key/value pairs

* Add alarmdecoder entity file to coverage ignore file

Added the alarmdecoder entity file so it is ignored for coverage

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-05-18 08:59:44 +02:00
Mr. Bubbles
2b195cab72 Fix Habitica doing blocking I/O in the event loop (#117647) 2024-05-17 21:06:26 -04:00
Maikel Punie
3efdeaaa77 Bump pyduotecno to 2024.5.1 (#117643) 2024-05-17 18:37:59 +02:00
Allen Porter
caa35174cb Add Google Gen AI Conversation Agent Entity (#116362)
* Add Google Gen AI Conversation Agent Entity

* Rename agent to entity

* Revert ollama changes

* Don't copy service tests to conversation_test.py

* Move logger and cleanup snapshots

* Move property after init

* Set logger to use package

* Cleanup hass from constructor

* Fix merges

* Revert ollama change
2024-05-17 11:00:11 -04:00
epenet
fce4263493 Move p1_monitor coordinator to separate module (#117562) 2024-05-17 16:34:47 +02:00
Marc Mueller
c41962455e Use PEP 695 for decorator typing (2) (#117639) 2024-05-17 16:31:01 +02:00
Marc Mueller
25d1ca747b Use PEP 695 for decorator typing (3) (#117640) 2024-05-17 16:27:32 +02:00
Marc Mueller
34bd291615 Use PEP 695 for decorator typing (1) (#117638) 2024-05-17 16:27:02 +02:00
epenet
067c9e63e9 Adjust bootstrap script to use correct version of pre-commit (#117621) 2024-05-17 16:18:44 +02:00
Joost Lekkerkerker
9cf8e49b01 Fix icons and strings in Balboa (#117618) 2024-05-17 16:17:36 +02:00
epenet
a29a0a36e5 Move elmax coordinator to separate module (#117425) 2024-05-17 16:02:19 +02:00
epenet
bbcbf57117 Add snapshot tests to elmax (#117637)
* Add snapshot tests to elmax

* Rename test methods

* Re-generate
2024-05-17 15:55:38 +02:00
Marc Mueller
44049c34f9 Use PEP 695 type alias for ConfigEntry types (#117632) 2024-05-17 15:42:58 +02:00
Joost Lekkerkerker
0b8a5ac9ad Add snapshot tests to Balboa (#117620) 2024-05-17 15:38:39 +02:00
epenet
081bf1cc39 Move modern_forms coordinator to separate module (#117610) 2024-05-17 15:19:40 +02:00
Bas Brussee
658c1f3d97 Fix Tibber sensors state class (#117085)
* set correct state classes

* revert bool to pass mypy locally
2024-05-17 09:10:08 -04:00
tronikos
a7ca36e88c Android TV Remote: Mention the TV will turn on in the reauth flow (#117548)
* Update strings.json

* Remove duplicate space

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-05-17 09:05:46 -04:00
Franck Nijhof
3dc3de95fa 2024.5.4 (#117631) 2024-05-17 15:04:13 +02:00
Marc Mueller
87bb7ced79 Use PEP 695 for simple type aliases (#117633) 2024-05-17 14:42:21 +02:00
Franck Nijhof
5c8f7fe52a Fix rc pylint warning for Home Assistant Analytics (#117635) 2024-05-17 14:13:10 +02:00
Franck Nijhof
8896d134e9 Bump version to 2024.5.4 2024-05-17 13:45:47 +02:00
Robert Svensson
f043b2db49 Improve syncing light states to deCONZ groups (#117588) 2024-05-17 13:45:03 +02:00
Joost Lekkerkerker
5cd101d2b1 Fix poolsense naming (#117567) 2024-05-17 13:45:00 +02:00
Joost Lekkerkerker
ab9ed0eba4 Handle uncaught exceptions in Analytics insights (#117558) 2024-05-17 13:44:57 +02:00
starkillerOG
4548ff619c Bump reolink-aio to 0.8.10 (#117501) 2024-05-17 13:44:53 +02:00
Erik Montnemery
b1746faa47 Fix API creation for passwordless pi_hole (#117494) 2024-05-17 13:43:50 +02:00
starkillerOG
615ae780ca Reolink fix not unregistering webhook during ReAuth (#117490) 2024-05-17 13:38:56 +02:00
J. Nick Koston
b86513c3a4 Fix non-thread-safe state write in tellduslive (#117487) 2024-05-17 13:38:51 +02:00
Maikel Punie
970ad8c07c Bump pyduotecno to 2024.5.0 (#117446) 2024-05-17 13:38:48 +02:00
Franck Nijhof
819e9860a8 Update wled to 0.17.1 (#117444) 2024-05-17 13:38:44 +02:00
mk-81
e7ff552de6 Fix Kodi on/off status (#117436)
* Fix Kodi Issue 104603

Fixes issue, that Kodi media player is displayed as online even when offline. The issue occurrs when using HTTP(S) only (no web Socket) integration after kodi was found online once.
Issue: In async_update the connection exceptions from self._kodi.get_players are not catched and therefore self._players (and the like) are not reset. The call of self._connection.connected returns always true for HTTP(S) connections.

Solution: Catch Exceptions from self._kodi.get_players und reset state in case of HTTP(S) only connection. Otherwise keep current behaviour.

* Fix Kodi Issue 104603 / code style adjustments

as requested
2024-05-17 13:38:41 +02:00
Jiaqi Wu
f48f8eefe7 Fix Lutron Serena Tilt Only Wood Blinds set tilt function (#117374) 2024-05-17 13:38:38 +02:00
J. Nick Koston
c90818e10c Fix squeezebox blocking startup (#117331)
fixes #117079
2024-05-17 13:38:33 +02:00
tronikos
642a6b44eb Call Google Assistant SDK service using async_add_executor_job (#117325) 2024-05-17 13:38:30 +02:00
Joost Lekkerkerker
bca20646bb Fix Aurora naming (#117314) 2024-05-17 13:38:26 +02:00
Jan Bouwhuis
dba4785c9b Increase MQTT broker socket buffer size (#117267)
* Increase MQTT broker socket buffer size

* Revert unrelated change

* Try to increase buffer size

* Set INITIAL_SUBSCRIBE_COOLDOWN back to 0.5 sec

* Sinplify and add test

* comments

* comments

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-17 13:38:23 +02:00
Raman Gupta
57cf91a8d4 Fix zwave_js discovery logic for node device class (#117232)
* Fix zwave_js discovery logic for node device class

* simplify check
2024-05-17 13:38:19 +02:00
jjlawren
17c6a49ff8 Bump SoCo to 0.30.4 (#117212) 2024-05-17 13:38:17 +02:00
Tom Harris
5941cf05e4 Fix issue changing Insteon Hub configuration (#117204)
Add Hub version to config schema
2024-05-17 13:38:14 +02:00
Thomas55555
a53b8cc0e2 Add reauth for missing token scope in Husqvarna Automower (#117098)
* Add repair for wrong token scope to Husqvarna Automower

* avoid new installations with missing scope

* tweaks

* just reauth

* texts

* Add link to correct account

* Update homeassistant/components/husqvarna_automower/strings.json

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

* Update homeassistant/components/husqvarna_automower/strings.json

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

* Update homeassistant/components/husqvarna_automower/strings.json

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

* Add comment

* directly assert mock_missing_scope_config_entry.state is loaded

* assert that a flow is started

* pass complete url to strings and simplify texts

* shorten long line

* address review

* simplify tests

* grammar

* remove obsolete fixture

* fix test

* Update tests/components/husqvarna_automower/test_init.py

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

* test if reauth flow has started

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-17 13:38:11 +02:00
Michal Čihař
9d25d228ab Reduce update interval in Ondilo Ico (#116989)
Ondilo: reduce update interval

The API seems to have sticter rate-limiting and frequent requests fail
with HTTP 400.

Fixes #116593
2024-05-17 13:38:08 +02:00
tronikos
652ee1b90d Avoid exceptions when Gemini responses are blocked (#116847)
* Bump google-generativeai to v0.5.2

* Avoid exceptions when Gemini responses are blocked

* pytest --snapshot-update

* set error response

* add test

* ruff
2024-05-17 13:38:05 +02:00
Thomas55555
afb5e622cd Catch auth exception in husqvarna automower (#115365)
* Catch AuthException in Husqvarna Automower

* don't use getattr

* raise ConfigEntryAuthFailed
2024-05-17 13:38:01 +02:00
Maikel Punie
4501658a16 Mark Duotecno entities unavailable when tcp goes down (#114325)
When the tcp connection to the duotecno smartbox goes down, mark all entities as unavailable.
2024-05-17 13:37:58 +02:00
amura11
52147e5196 Fix Fully Kiosk set config service (#112840)
* Fixed a bug that prevented setting Fully Kiosk config values using a template

* Added test to cover change

* Fixed issue identified by Ruff

* Update services.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-17 13:37:52 +02:00
Marc Mueller
4edee94a81 Update mypy-dev to 1.11.0a2 (#117630) 2024-05-17 13:32:20 +02:00
epenet
eacbebce22 Prevent const.py in coverage ignore list (#117625) 2024-05-17 12:53:58 +02:00
Joost Lekkerkerker
098ba125d1 Extract Monzo coordinator in separate module (#117034) 2024-05-17 12:40:19 +02:00
epenet
addc4a84ff Rename hassio coordinator module (#117611) 2024-05-17 12:10:21 +02:00
epenet
ac62faee23 Bump pre-commit to 3.7.1 (#117619) 2024-05-17 11:44:51 +02:00
starkillerOG
abe83f5515 Fix Reolink battery translation_key unneeded (#117616) 2024-05-17 09:09:01 +02:00
dependabot[bot]
1589226618 Bump actions/checkout from 4.1.4 to 4.1.6 (#117612)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-17 08:45:23 +02:00
Robert Svensson
bbfc2456ec Improve syncing light states to deCONZ groups (#117588) 2024-05-17 08:44:09 +02:00
J. Nick Koston
48ea15cc6e Fix dlna_dmr task flood when player changes state (#117606) 2024-05-17 08:40:14 +02:00
epenet
bbf86335be Move opengarage coordinator to separate module (#117608) 2024-05-17 08:05:43 +02:00
epenet
407d0f88f0 Rename openweathermap coordinator module (#117609) 2024-05-17 08:05:11 +02:00
Tom Harris
9420e041ac Fix issue changing Insteon Hub configuration (#117204)
Add Hub version to config schema
2024-05-16 21:45:03 -04:00
Robert Svensson
0e3c0ccfd8 Remove old deCONZ entity cleanup (#117590) 2024-05-16 21:42:09 -04:00
Robert Svensson
657b3ceedc Rework deCONZ services to load once and never unload (#117592)
* Rework deCONZ services to load once and never unload

* Fix hassfest
2024-05-16 21:41:23 -04:00
Marc Mueller
4300ff6b60 Mark HassJob target as Final (#117578) 2024-05-17 00:01:07 +02:00
MatthewFlamm
121aa158c9 Use config entry runtime_data in nws (#117593) 2024-05-16 23:14:44 +02:00
starkillerOG
f788f88052 Add Reolink battery entities (#117506)
* add battery sensors

* Disable Battery Temperature and State by default

* fix mypy

* Use device class for icon
2024-05-16 21:41:19 +02:00
Joost Lekkerkerker
68b7302cdc Add Poolsense platform tests (#117579) 2024-05-16 21:35:00 +02:00
MatthewFlamm
9aa7d3057b Add diagnostics for nws (#117587)
* add diagnostics

* remove hassfezt exception
2024-05-16 21:26:22 +02:00
Chris Talkington
5635bcce86 Bump pyipp to 0.16.0 (#117583)
bump pyipp to 0.16.0
2024-05-16 13:04:35 -05:00
Joost Lekkerkerker
cd8dac65b3 Refactor Poolsense config flow tests (#117573) 2024-05-16 17:51:57 +02:00
Maciej Bieniek
789073384b Support reconfigure flow in Shelly integration (#117525)
* Support reconfigure flow

* Update strings

* Add tests

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-16 17:47:12 +02:00
epenet
996132f3f8 Ensure gold and platinum integrations implement diagnostic (#117565) 2024-05-16 11:33:23 -04:00
Joost Lekkerkerker
0335a01fba Use runtime data in Poolsense (#117570) 2024-05-16 17:31:14 +02:00
Joakim Sørensen
535aa05c65 Update hass-nabucasa dependency to version 0.81.0 (#117568) 2024-05-16 11:08:01 -04:00
epenet
d670f1d81d Move pure_energie coordinator to separate module (#117560) 2024-05-16 16:51:25 +02:00
Michael Hansen
e168cb96e9 Add area filter and rounded time to timers (#117527)
* Add area filter

* Add rounded time to status

* Fix test

* Extend test

* Increase test coverage
2024-05-16 09:45:14 -05:00
Joost Lekkerkerker
ba395fb9f3 Fix poolsense naming (#117567) 2024-05-16 16:42:40 +02:00
epenet
d019c25ae4 Move pvpc coordinator to separate module (#117559) 2024-05-16 16:06:50 +02:00
dfaour
6f5e820090 Improve recorder statistics error messages (#113498)
* Update statistics.py

Added more detail error descriptions to make debugging easier

* Update statistics.py

formatting corrected
2024-05-16 13:44:03 +02:00
Joost Lekkerkerker
4cded378bf Handle uncaught exceptions in Analytics insights (#117558) 2024-05-16 13:43:03 +02:00
epenet
59645aeb0f Move risco coordinator to separate module (#117549) 2024-05-16 13:29:57 +02:00
epenet
388132cfc8 Move rainforest_eagle coordinator to separate module (#117556) 2024-05-16 12:57:20 +02:00
Simone Chemelli
32a9cb4b14 Add Shelly motion sensor switch (#115312)
* Add Shelly motion sensor switch

* update name

* make motion switch a restore entity

* add test

* apply review comment

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* rename switch

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* Update tests/components/shelly/test_switch.py

Co-authored-by: Shay Levy <levyshay1@gmail.com>

* fix ruff

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2024-05-16 12:49:49 +02:00
Marc Mueller
53da59a454 Replace meaningless TypeVar usage (#117553) 2024-05-16 12:48:02 +02:00
Marc Mueller
ab07bc5298 Improve ReloadServiceHelper typing (#117552) 2024-05-16 12:47:43 +02:00
Sid
9d10e42d79 Only allow ethernet and wi-fi interfaces as unique ID in webmin (#113084) 2024-05-16 12:16:13 +02:00
Jeffrey Stone
e6f5b08264 Add functionality to Mastodon (#112862)
* Adds functionality to Mastodon

* protect media type

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

* update log warning

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

* protect upload media

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

* Update protected functions

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-16 12:08:50 +02:00
epenet
962dd81eb7 Move upcloud coordinator to separate module (#117536) 2024-05-16 11:45:22 +02:00
epenet
c2bf4b905c Move surepetcare coordinator to separate module (#117544) 2024-05-16 11:44:36 +02:00
Christopher Tremblay
2a540e1100 Bump adext to 0.4.3 (#117496) 2024-05-16 10:54:44 +02:00
Mischa Siekmann
481264693e Bump aioesphomeapi to 24.4.0 (#117543) 2024-05-16 10:53:00 +02:00
epenet
8bbac8040f Move gogogate2 coordinator to separate module (#117433) 2024-05-16 09:11:49 +02:00
epenet
07d289d1c6 Move switcher_kis coordinator to separate module (#117538) 2024-05-16 10:11:19 +03:00
epenet
2cd9bc1c2c Move xbox coordinator to separate module (#117421) 2024-05-16 09:10:41 +02:00
Sid
6ce1d97e7a Add Webmin filesystem sensors (#112660)
* Add Webmin filesystem sensors

* fix names

* update snapshots

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-16 09:03:35 +02:00
epenet
465e3d421e Move google coordinator to separate module (#117473) 2024-05-15 20:40:51 -07:00
J. Nick Koston
f1e8262db2 Bump bleak to 0.22.1 (#117383) 2024-05-16 12:36:27 +09:00
Michael Hansen
daee3d8db0 Don't prioritize "name" slot if it's a wildcard in default conversation agent (#117518)
* Don't prioritize "name" slot if it's a wildcard

* Fix typing error
2024-05-15 22:23:24 -04:00
Denis Shulyaka
f31873a846 Add LLM tools (#115464)
* Add llm helper

* break out Tool.specification as class members

* Format state output

* Fix intent tests

* Removed auto initialization of intents - let conversation platforms do that

* Handle DynamicServiceIntentHandler.extra_slots

* Add optional description to IntentTool init

* Add device_id and conversation_id parameters

* intent tests

* Add LLM tools tests

* coverage

* add agent_id parameter

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Fix tests

* Fix intent schema

* Allow a Python function to be registered as am LLM tool

* Add IntentHandler.effective_slot_schema

* Ensure IntentHandler.slot_schema to be vol.Schema

* Raise meaningful error on tool not found

* Move this change to a separate PR

* Update todo integration intent

* Remove Tool constructor

* Move IntentTool to intent helper

* Convert custom serializer into class method

* Remove tool_input from FunctionTool auto arguments to avoid recursion

* Remove conversion into Open API format

* Apply suggestions from code review

* Fix tests

* Use HassKey for helpers (see #117012)

* Add support for functions with typed lists, dicts, and sets as type hints

* Remove FunctionTool

* Added API to get registered intents

* Move IntentTool to the llm library

* Return only handlers in intents.async.get

* Removed llm tool registration from intent library

* Removed tool registration

* Add bind_hass back for now

* removed area and floor resolving

* fix test

* Apply suggestions from code review

* Improve coverage

* Fix intent_type type

* Temporary disable HassClimateGetTemperature intent

* Remove bind_hass

* Fix usage of slot schema

* Fix test

* Revert some test changes

* Don't mutate tool_input

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-15 19:16:47 -04:00
Paulus Schoutsen
4aba92ad04 Fix the type of slot schema of intent handlers (#117520)
Fix the slot schema of dynamic intenet handler
2024-05-15 16:45:15 -04:00
Paulus Schoutsen
a95baf0d39 Set integration type for wyoming (#117519)
* Set integration type to wyoming

* Add entry_type
2024-05-15 16:17:49 -04:00
Jan-Philipp Benecke
5e194b8a82 Do not register mqtt mock config flow with handlers (#117521) 2024-05-15 16:17:27 -04:00
epenet
0a625baeed Rename fritz coordinator module (#117440)
* Rename fritz coordinator module

* Update .coveragerc

* Adjust .coveragerc

* Adjust coverage

* Adjust coverage
2024-05-15 21:58:29 +02:00
IceBotYT
ebb02a7081 Add light platform to Linear garage door (#111426)
* Add light platform

* Fix light test

* Suggestions by CFenner

* Fix tests

* More fixes

* Revert test changes

* Undo base entity

* Rebase

* Fix to use base entity

* Fix name

* More fixes

* Fix tests

* Add translation key

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-15 21:43:31 +02:00
starkillerOG
38c2688ec2 Add Reolink PIR entities (#117507)
* Add PIR entities

* fix typo
2024-05-15 21:10:52 +02:00
Matthias Alphart
ec4c8ae228 Allow templates for enabling actions (#117049)
* Allow templates for enabling automation actions

* Use `cv.template` instead of `cv.template_complex`

* Rename test function
2024-05-15 21:03:52 +02:00
Matthias Alphart
076f57ee07 Allow templates for enabling conditions (#117047)
* Allow templates for enabling automation conditions

* Use `cv.template` instead of `cv.template_complex`
2024-05-15 21:03:28 +02:00
epenet
aa2485c7b9 Move vallox coordinator to separate module (#117503)
* Move vallox coordinator to separate module

* Move logic into coordinator class

* Adjust
2024-05-15 21:01:21 +02:00
epenet
2c6071820e Move vizio coordinator to separate module (#117498) 2024-05-15 21:00:21 +02:00
Marlon
3604a34823 Post review comments on APsystems (#117504)
* Cleanup for apsystems and fix for strings

* Migrate to typed ConfigEntry Data for apsystems

* Improve strings for apsystems

* Improve config flow tests for apsystems by cleaning up fixtures

* Do not use Dataclass for Config Entry Typing

* Improve translations for apsystems by using sentence case and removing an apostrophe

* Rename test fixture and remove unnecessary comment in tests from apsystems

* Remove default override with default in coordinator from apsystems
2024-05-15 19:56:12 +02:00
Brett Adams
4125b6e15f Add select platform to Teslemetry (#117422)
* Add select platform

* Add tests

* Tests WIP

* Add tests

* Update homeassistant/components/teslemetry/select.py

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

* Update homeassistant/components/teslemetry/select.py

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

* use references

* Fix typo

* Update homeassistant/components/teslemetry/select.py

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

* Update homeassistant/components/teslemetry/select.py

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

* Make less confusing for @joostlek

* Update homeassistant/components/teslemetry/select.py

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

* Update homeassistant/components/teslemetry/select.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-15 18:17:28 +02:00
Åke Strandberg
c4c96be880 Add alarm and connectivity binary_sensors to myuplink (#111643)
* Add alarm and connectivity binary_sensors

* Get is_on for correct system

* Make coverage 100% in binary_sensor

* Address review comments

* Revert dict comprehension for now
2024-05-15 17:13:56 +02:00
Anil Daoud
8eaf471dd2 Improve error handing in kaiterra data retrieval when no aqi data is present (#112885)
* Update api_data.py

change log level on typeerror on line 103 from error to debug, it occurs too often to be useful as an error

* Update api_data.py

restore error level and add a type check instead

* Update homeassistant/components/kaiterra/api_data.py

actually filter for aqi being None rather than None or 0

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

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-15 16:22:58 +02:00
starkillerOG
fd8dbe0367 Bump reolink-aio to 0.8.10 (#117501) 2024-05-15 16:19:02 +02:00
Dennis Lee
4d34350f66 Add Jellyfin audio_codec optionflow (#113036)
* Fix #92419; Add Jellyfin audio_codec optionflow

* Use CONF_AUDIO_CODEC constant, clean up code based on suggestions

* Fixed typos

* Parameterize Tests

* Use parameterized test for jellyfin test media resolve

* Apply suggestions from code review

* Update homeassistant/components/jellyfin/config_flow.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-15 16:11:11 +02:00
tronikos
d2d39bce3a Android TV Remote: Support launching any app by its application ID/package name (#116906)
Bumps androidtvremote2 to 0.1.1
2024-05-15 15:48:57 +02:00
Marcel van der Veldt
5af8041c57 Fix ghost events for Hue remotes (#113047)
* Use report values for events

* adjust tests
2024-05-15 15:48:15 +02:00
epenet
4e600b7b19 Move venstar coordinator to separate module (#117500) 2024-05-15 15:18:26 +02:00
Maikel Punie
d5a1587b1c Mark Duotecno entities unavailable when tcp goes down (#114325)
When the tcp connection to the duotecno smartbox goes down, mark all entities as unavailable.
2024-05-15 15:12:47 +02:00
amura11
2a9d29c5f5 Fix Fully Kiosk set config service (#112840)
* Fixed a bug that prevented setting Fully Kiosk config values using a template

* Added test to cover change

* Fixed issue identified by Ruff

* Update services.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-15 15:01:55 +02:00
epenet
60193a3c2d Move mill coordinator to separate module (#117493) 2024-05-15 13:52:32 +02:00
epenet
4803db7cf0 Move prusalink coordinators to separate module (#117495) 2024-05-15 13:51:22 +02:00
Erik Montnemery
6ecc0ec3a1 Fix API creation for passwordless pi_hole (#117494) 2024-05-15 13:39:07 +02:00
epenet
6bd3648c77 Move melnor coordinator to separate module (#117486) 2024-05-15 12:13:05 +02:00
J. Nick Koston
37c55d81e3 Fix non-thread-safe state write in tellduslive (#117487) 2024-05-15 12:08:24 +02:00
starkillerOG
e286621f93 Reolink fix not unregistering webhook during ReAuth (#117490) 2024-05-15 12:04:12 +02:00
epenet
6c892b227b Rename mikrotik coordinator module (#117488) 2024-05-15 12:02:33 +02:00
epenet
73ed49e4b7 Remove ignore-wrong-coordinator-module in pylint CI (#117479) 2024-05-15 11:51:14 +02:00
epenet
6116caa7ed Move idasen_desk coordinator to separate module (#117485) 2024-05-15 11:26:40 +02:00
epenet
48c03a6564 Move gios coordinator to separate module (#117471) 2024-05-15 11:26:04 +02:00
Aidan Timson
65e6e1fa28 Add exception translations to System Bridge integration (#112206)
* Add exception translations to System Bridge integration

* Add translated error to coordinator

* Refactor strings.json in system_bridge component

* Sort

* Add HomeAssistantError import
2024-05-15 11:00:56 +02:00
Dave T
30f789d5e9 Set integration type for generic (#117464) 2024-05-15 09:33:47 +02:00
epenet
a36ad6bb64 Move ialarm coordinator to separate module (#117478) 2024-05-15 09:30:44 +02:00
Joost Lekkerkerker
72d873ce70 Rename add entities function in Aurora (#117480) 2024-05-15 09:27:19 +02:00
Franck Nijhof
bed31f302a Revert "Bump opower to 0.4.5 and use new account.id" (#117476) 2024-05-15 09:22:45 +02:00
Erik Montnemery
e6296ae502 Revert "Add Viam image processing integration" (#117477) 2024-05-15 09:20:40 +02:00
Renat Sibgatulin
be5d6425dc Add options flow to the airq integration (#109337)
* Add support for options to airq integration

Expose to the user the following configuration:
1. A choice between fetching from the device either:
    a. the averaged (previous and the new default behaviour) or
    b. noisy momentary sensor reading
2. A toggle to clip (spuriously) negative sensor values (default
    functionality, previously unexposed)

To those ends:
- Introduce an `OptionsFlowHandler` alongside with a listener
  `AirQCoordinator.async_set_options`
- Introduce constants to handle represent options
- Add tests and strings

* Drop OptionsFlowHandler in favour of SchemaOptionsFlowHandler

Modify `AirQCoordinator.__init__` to accommodate the change in option
handling, and drop `async_set_options` which slipped through the
previous commit.

* Ruff formatting
2024-05-15 09:13:26 +02:00
epenet
f188668d8a Rename gree coordinator module (#117474) 2024-05-15 08:57:27 +02:00
epenet
a4ceba2e0f Split homeassistant_alerts constants and coordinator (#117475) 2024-05-15 08:54:12 +02:00
dependabot[bot]
141355e776 Bump codecov/codecov-action from 4.3.1 to 4.4.0 (#117472)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-15 08:52:04 +02:00
J. Nick Koston
3f053eddbd Add websocket API to get list of recorded entities (#92640)
* Add API to get list of recorded entities

* update for latest codebase

* ruff

* Update homeassistant/components/recorder/websocket_api.py

* Update homeassistant/components/recorder/websocket_api.py

* Update homeassistant/components/recorder/websocket_api.py

* add suggested test
2024-05-15 08:41:56 +02:00
J. Nick Koston
d29084d6fc Improve thread safety check messages to better convey impact (#117467)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-15 13:49:57 +09:00
Paulus Schoutsen
8f9273e945 Fix intent_type type (#117469) 2024-05-14 21:32:11 -07:00
Marlon
d4d30f1c46 Add integration for APsystems EZ1 microinverter (#114531)
* Add APsystems local API integration

* Fix session usage in config_flow in apsystems local api

* Remove skip check option for apsystems_loca api

* Update APsystems API dependency and increased test coverage to 100%

* Utilize EntityDescriptions for APsystems Local integration

* Ensure coverage entries are sorted (#114424)

* Ensure coverage entries are sorted

* Use autofix

* Adjust

* Add comment to coverage file

* test CI

* revert CI test

---------

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

* Use patch instead of Http Mocks for APsystems API tests

* Fix linter waring for apsystemsapi

* Fix apsystemsapi test

* Fix CODEOWNERS for apsystemsapi

* Address small PR review changes for apsystems_local

* Remove wrong lines in coveragerc

* Add serial number for apsystems_local

* Remove option of custom refresh interval fro apsystems_local

* Remove function override and fix stale comments

* Use native device id and name storage instead of custom one for apsystems_local

* Use runtime_data for apsystems_local

* Don't store entry data in runtime data

* Move from apsystems_local to apsystems domain

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2024-05-14 22:50:25 -04:00
Scott K Logan
2590db1b6d Fix brand ID for Rainforest Automation (#113770) 2024-05-14 22:50:48 +02:00
Floris272
b4eeb00f9e Separate Blue Current timestamp sensors (#111942) 2024-05-14 22:46:31 +02:00
Dave T
03cce66f23 Set integration type for aurora_abb_powerone (#117462) 2024-05-14 22:36:15 +02:00
Ben Van Mechelen
dad9423c08 Add water meter to Youless intergration (#117452)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2024-05-14 21:50:38 +02:00
Michael Hansen
d441a62aa6 Remove "device_id" slot from timers (#117460)
Remove "device_id" slot
2024-05-14 15:48:24 -04:00
Ben Van Mechelen
6322821b65 Bump youless_api to 1.1.1 (#117459) 2024-05-14 21:34:50 +02:00
c0mputerguru
420afe0029 Bump opower to 0.4.5 and use new account.id (#117330) 2024-05-14 21:21:31 +02:00
Sean Chen
b6a530c405 Add PM10 sensor to AirNow (#117432) 2024-05-14 21:17:09 +02:00
Erik Montnemery
7f3d6fe1f0 Fix lying docstring in entity_platform (#117450) 2024-05-14 21:15:05 +02:00
Richard Kroegel
13e2bc7b6f Enable raising ConfigEntryAuthFailed on BMW coordinator init (#116643)
Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-05-14 21:14:35 +02:00
Robert Svensson
fa815234be Make UniFi use runtime data (#117457) 2024-05-14 21:04:26 +02:00
Franck Nijhof
faff5f4738 Some minor cleanups in WLED (#117453) 2024-05-14 21:02:31 +02:00
mk-81
0df9006bf7 Fix Kodi on/off status (#117436)
* Fix Kodi Issue 104603

Fixes issue, that Kodi media player is displayed as online even when offline. The issue occurrs when using HTTP(S) only (no web Socket) integration after kodi was found online once.
Issue: In async_update the connection exceptions from self._kodi.get_players are not catched and therefore self._players (and the like) are not reset. The call of self._connection.connected returns always true for HTTP(S) connections.

Solution: Catch Exceptions from self._kodi.get_players und reset state in case of HTTP(S) only connection. Otherwise keep current behaviour.

* Fix Kodi Issue 104603 / code style adjustments

as requested
2024-05-14 21:02:17 +02:00
Michael Hansen
641754e0bb Pass device_id to intent handlers (#117442) 2024-05-14 13:59:49 -05:00
Joost Lekkerkerker
d88851a85a Refactor Linear tests (#116336) 2024-05-14 20:47:14 +02:00
Michael Hansen
add6ffaf70 Add Assist timers (#117199)
* First pass at timers

* Move to separate file

* Refactor to using events

* Add pause/unpause/status

* Add ordinal

* Add test for timed Assist command

* Fix name matching

* Fix IntentHandleError

* Fix again

* Refactor to callbacks

* is_paused -> is_active

* Rename "set timer" to "start timer"

* Move tasks to timer manager

* More fixes

* Remove assist command

* Remove cancel by ordinal

* More tests

* Remove async on callbacks

* Export async_register_timer_handler
2024-05-14 14:42:32 -04:00
epenet
458cc838cf Rename wemo coordinator module (#117437) 2024-05-14 20:21:50 +02:00
Andrew Sayre
223bf99ac9 Update SmartThings codeowners (#117448) 2024-05-14 19:40:39 +02:00
Josef Zweck
d0e99b62da Re-introduce webhook to tedee integration (#110247)
* bring webhook over to new branch

* change log levels

* Update homeassistant/components/tedee/coordinator.py

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

* fix minor version

* ruff

* mock config entry version

* fix

* ruff

* add cleanup during webhook registration

* feedback

* ruff

* Update __init__.py

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

* Update homeassistant/components/tedee/__init__.py

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

* add downgrade test

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-14 19:38:58 +02:00
Ethem Cem Özkan
b684801cae Use integration fallback configuration for tado water heater fallback (#111014)
* 103619 tado water heater fallback

* extracted a method to remove code duplication

* test cases and suggested changes

* tests

* util method for connector

* Update homeassistant/components/tado/climate.py

Co-authored-by: Andriy Kushnir <me@orhideous.name>

* missing import after applies suggestion

* early return

* simplify if statements

* simplify pr

* pr requested changes

* better docstring

---------

Co-authored-by: Andriy Kushnir <me@orhideous.name>
2024-05-14 19:27:26 +02:00
Maikel Punie
ad6e6a1810 Bump pyduotecno to 2024.5.0 (#117446) 2024-05-14 19:22:13 +02:00
Franck Nijhof
c94d7b3294 Update wled to 0.17.1 (#117444) 2024-05-14 19:17:50 +02:00
epenet
3f4fd41549 Rename flo coordinator module (#117438) 2024-05-14 17:34:02 +02:00
Christopher Fenner
eca67eb901 Add ability to change heating programs for heat pumps in ViCare integration (#110924)
* heating programs

* fix heating program

* fix heating program

* remove commented code

* simplify

* Update types.py

* update vicare_programs in init
2024-05-14 17:01:34 +02:00
epenet
83f5133065 Move evil_genius_labs coordinator to separate module (#117435) 2024-05-14 10:32:41 -04:00
Denis Shulyaka
9add251b0a Add context to telegram_bot events (#109920)
* Add context for received messages events

* Add context for sent messages events

* ruff

* ruff

* ruff

* Removed user_id mapping

* Add tests
2024-05-14 15:48:59 +02:00
Robert Hillis
121966245b Bump pyefergy to 22.5.0 (#117395) 2024-05-14 15:42:41 +02:00
Diogo Gomes
450c57969a Add diagnostic platform to utility_meter (#114967)
* Add diagnostic to identify next_reset

* Add test

* add next_reset attr

* Trigger CI

* set as _unrecorded_attributes
2024-05-14 15:20:59 +02:00
J. Nick Koston
7871e9279b Adjust thread safety check messages to point to developer docs (#117392) 2024-05-14 15:20:31 +02:00
epenet
77de1b2331 Move abode service registration (#117418) 2024-05-14 15:18:45 +02:00
epenet
2e155f4de5 Move esphome coordinator to separate module (#117427) 2024-05-14 15:16:47 +02:00
Joost Lekkerkerker
92bb76ed24 Use snapshot platform helper in Flexit bacnet (#117428) 2024-05-14 15:10:21 +02:00
epenet
09fccf5188 Rename sharkiq coordinator module (#117429) 2024-05-14 15:07:19 +02:00
Matthias Alphart
bca277a027 Add knx.telegram integration specific trigger; update KNX Interface device trigger (#107592)
* Add `knx.telegram` integration specific trigger

* Move implementation to trigger.py, use it from device_trigger

* test device_trigger

* test trigger.py

* Add "incoming" and "outgoing" and handle legacy device triggers

* work with mixed group address styles

* improve coverage

* Add no-op option

* apply changed linting rules

* Don't distinguish legacy device triggers from new ones

that's now supported since frontend has fixed default values of extra_fields

* review suggestion: reuse trigger schema for device trigger extra fields

* cleanup for readability

* Remove no-op option
2024-05-14 14:45:49 +02:00
Matthias Alphart
ba48da7678 Allow templates for enabling automation triggers (#114458)
* Allow templates for enabling automation triggers

* Test exception for non-limited template

* Use `cv.template` instead of `cv.template_complex`

* skip trigger with invalid enable template

instead of returning and thus not evaluating other triggers
2024-05-14 14:44:21 +02:00
Marc Mueller
2a6a0e6230 Update pytest warnings filter (#117413) 2024-05-14 13:59:45 +02:00
J. Nick Koston
6d7345ea1c Speed up loading YAML (#117388)
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2024-05-14 13:56:42 +02:00
Nick Hehr
55bf0b6647 Add Viam image processing integration (#101786)
* feat: scaffold integration, configure client

* feat: register services, allow API key auth flow

* feat: register detection, classification services

* test(viam): add test coverage

* chore(viam): update viam-sdk version

* fix(viam): add service schemas and translation keys

* test(viam): update config flow to use new selector values

* chore(viam): update viam-sdk to 0.11.0

* feat: add exceptions translation stings

* refactor(viam): use constant keys, defer filesystem IO execution

* fix(viam): add missing constants, resolve correct image for services

* fix(viam): use lokalize string refs, resolve more constant strings

* fix(viam): move service registration to async_setup

* refactor: abstract services into separate module outside of manager

* refactor(viam): extend common vol schemas

* refactor(viam): consolidate common service values

* refactor(viam): replace FlowResult with ConfigFlowResult

* chore(viam): add icons.json for services

* refactor(viam): use org API key to connect to robot

* fix(viam): close app client if user abort config flow

* refactor(viam): run ruff formatter

* test(viam): confirm 100% coverage of config_flow

* refactor(viam): simplify manager, clean up config flow methods

* refactor(viam): split auth step into auth_api & auth_location

* refactor(viam): remove use of SelectOptionDict for auth choice, update strings

* fix(viam): use sentence case for translation strings

* test(viam): create mock_viam_client fixture for reusable mock
2024-05-14 13:35:56 +02:00
Federico D'Amico
746cfd3492 Add climate platform to microBees (#111152)
* Add climate platform to microBees

* add list comprehension

* fixes

* fixes

* fixes

* fix multiline ternary

* use a generator expression instead of filter + lambda.

* bug fixes

* Update homeassistant/components/microbees/climate.py

---------

Co-authored-by: Marco Lettieri <m.lettieri@microbees.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-14 12:11:19 +02:00
epenet
ed2c30b830 Move abode base entities to separate module (#117417) 2024-05-14 11:41:27 +02:00
Marc Mueller
09a8c06133 Update pylint to 3.1.1 (#117416) 2024-05-14 11:40:37 +02:00
epenet
438db92d86 Use ConfigEntry runtime_data in agent_dvr (#117412) 2024-05-14 11:10:40 +02:00
epenet
010ed8da9c Use ConfigEntry runtime_data in aemet (#117411) 2024-05-14 10:59:55 +02:00
Franck Nijhof
003622defd Update gotailwind to 0.2.3 (#117402) 2024-05-14 10:54:53 +02:00
dependabot[bot]
744e82f4fe Bump github/codeql-action from 3.25.4 to 3.25.5 (#117409) 2024-05-14 10:53:34 +02:00
epenet
635a89b9f9 Use ConfigEntry runtime_data in advantage_air (#117408) 2024-05-14 10:52:49 +02:00
Marc Mueller
31f980b054 Update types packages (#117407) 2024-05-14 10:48:54 +02:00
Franck Nijhof
053c898101 Update apprise to 1.8.0 (#117370) 2024-05-14 10:39:05 +02:00
Marc Mueller
d60f97262e Update uv to 0.1.43 (#117405) 2024-05-14 10:38:50 +02:00
Franck Nijhof
f5f57908dc Use ConfigEntry runtime_data in Tailwind (#117404) 2024-05-14 10:30:53 +02:00
Allen Porter
b84829f70f Import and cache supported feature enum flags only when needed (#117270)
* Import and cache supported feature enum flags only when needed

* Add comment aboud being loaded from executor.

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-13 21:07:39 -07:00
J. Nick Koston
13414a0a32 Pass loop to create_eager_task in loops from more coros (#117390) 2024-05-14 09:48:25 +09:00
J. Nick Koston
9381462877 Migrate restore_state to use the singleton helper (#117385) 2024-05-14 09:13:44 +09:00
Jiaqi Wu
728e1a2223 Fix Lutron Serena Tilt Only Wood Blinds set tilt function (#117374) 2024-05-14 09:05:12 +09:00
Thomas55555
b2996844be Add reauth for missing token scope in Husqvarna Automower (#117098)
* Add repair for wrong token scope to Husqvarna Automower

* avoid new installations with missing scope

* tweaks

* just reauth

* texts

* Add link to correct account

* Update homeassistant/components/husqvarna_automower/strings.json

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

* Update homeassistant/components/husqvarna_automower/strings.json

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

* Update homeassistant/components/husqvarna_automower/strings.json

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

* Add comment

* directly assert mock_missing_scope_config_entry.state is loaded

* assert that a flow is started

* pass complete url to strings and simplify texts

* shorten long line

* address review

* simplify tests

* grammar

* remove obsolete fixture

* fix test

* Update tests/components/husqvarna_automower/test_init.py

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

* test if reauth flow has started

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-13 23:00:51 +02:00
J. Nick Koston
9c97269fad Bump dbus-fast to 2.21.2 (#117195) 2024-05-14 05:52:43 +09:00
Jan Bouwhuis
85e651fd5a Create helper for File config flow step handling (#117371) 2024-05-13 22:40:01 +02:00
Joakim Plate
f23419ed35 Update to arcam 1.5.2 (#117375) 2024-05-13 20:59:50 +02:00
Maciej Bieniek
0d09226661 Support reconfigure flow in Nettigo Air Monitor integration (#117318)
* Add reconfigure flow

* Fix input

* Add tests

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-13 19:17:14 +02:00
Laurence Presland
c3f95a4f7a Implement support for SwitchBot Meter, MeterPlus, and Outdoor Meter (#115522)
* Implement support for SwitchBot MeterPlus

Add temperature, humidity, and battery sensor entities for the MeterPlus device

* Rename GH username

* Update homeassistant/components/switchbot_cloud/coordinator.py

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

* Refactor to use EntityDescriptions

Concat entity ID in SwitchBotCloudSensor init

* Remove __future__ import

* Make scan interval user configurable

* Add support for Meter and Outdoor Meter

* Revert "Make scan interval user configurable"

This reverts commit e256c35bb71e598cf879e05e1df21dff8456b09d.

* Remove device-specific default scan intervals

* Update homeassistant/components/switchbot_cloud/sensor.py

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

* Update homeassistant/components/switchbot_cloud/sensor.py

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

* Update homeassistant/components/switchbot_cloud/sensor.py

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

* Fix ruff errors

* Reorder manifest keys

* Update CODEOWNERS

* Add sensor.py to coveragerc

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-13 15:18:28 +02:00
Jan Bouwhuis
548eb35b79 Migrate File notify entity platform (#117215)
* Migrate File notify entity platform

* Do not load legacy notify service for new  config entries

* Follow up comment

* mypy

* Correct typing

* Only use the name when importing notify services

* Make sure a name is set on new entires
2024-05-13 11:22:13 +02:00
Erik Montnemery
0b47bfc823 Add minor version + migration to config entry store (#117350) 2024-05-13 10:16:18 +02:00
Erik Montnemery
b006aadeff Remove options from FlowResult (#117351) 2024-05-13 10:11:33 +02:00
Erik Montnemery
90ef19a255 Alphabetize some parts of config_entries (#117347) 2024-05-13 09:39:18 +02:00
Erik Montnemery
b09565b4ff Remove migration of config entry data pre version 0.73 (#117345) 2024-05-13 09:39:04 +02:00
Bouwe Westerdijk
84cc650bb3 Implement runtime data for Plugwise (#117172) 2024-05-13 09:38:06 +02:00
Erik Montnemery
d0c60ab21b Fix typo and useless default in config_entries (#117346) 2024-05-13 09:26:18 +02:00
Paulus Schoutsen
f3b694ee42 Add gh cli to dev container (#117321) 2024-05-13 15:33:42 +09:00
Brett Adams
af0dd189d9 Improve error handling in Teslemetry (#117336)
* Improvement command handle

* Add test for ignored reasons
2024-05-12 19:37:59 -07:00
Marc Hörsken
4d5ae57390 Add camera recording service to blink (#110612)
Add camera clip recording service to blink

Revival of #46598 by @fronzbot, therefore:

Co-authored-by: Kevin Fronczak <kfronczak@gmail.com>
2024-05-12 19:35:01 -07:00
Raman Gupta
61b906e29f Bump zwave-js-server-python to 0.56.0 (#117288)
* Bump zwave-js-server-python to 0.56.0

* Fix deprecation warning

* Fix tests

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-12 22:19:47 -04:00
tronikos
492ef67d02 Call Google Assistant SDK service using async_add_executor_job (#117325) 2024-05-12 22:19:20 -04:00
J. Nick Koston
38ce7b15b0 Fix squeezebox blocking startup (#117331)
fixes #117079
2024-05-12 22:18:52 -04:00
J. Nick Koston
11f49280c9 Enable open protection in the event loop (#117289) 2024-05-13 08:50:31 +09:00
J. Nick Koston
d06932bbc2 Refactor asyncio loop protection to improve performance (#117295) 2024-05-13 07:01:55 +09:00
Joost Lekkerkerker
aae39759d9 Clean up aurora (#117315)
* Clean up aurora

* Fix

* Fix

* Fix
2024-05-12 21:54:32 +02:00
Joost Lekkerkerker
8ab4113b4b Fix Aurora naming (#117314) 2024-05-12 15:36:21 -04:00
Robert Hillis
0a8feae49a Add test for radarr update failure (#116882) 2024-05-12 20:23:53 +02:00
Marc Mueller
3434fb70fb Remove ConfigEntry runtime_data on unload (#117312) 2024-05-12 13:53:22 -04:00
Jan Bouwhuis
a1bc929421 Migrate Tibber notify service (#116893)
* Migrate tibber notify service

* Tests and repair flow

* Use notify repair flow helper

* Cleanup strings after using helper, use HomeAssistantError

* Add entry state assertions to unload test

* Update comment

* Update comment
2024-05-12 19:52:08 +02:00
Jan Bouwhuis
07061b14d0 Fix typo in mqtt test name (#117305) 2024-05-12 16:44:39 +02:00
Jan Bouwhuis
606a2848db Fix import on File config entry and other improvements (#117210)
* Address comments

* Remove Name option for File based sensor

* Make sure platform schema is applied
2024-05-12 15:09:54 +02:00
J. Nick Koston
c971d08454 Fix flume doing blocking I/O in the event loop (#117293)
constructing FlumeData opens files
2024-05-12 08:28:22 -04:00
Brett Adams
7509ccff40 Use entry runtime data in Teslemetry (#117283)
* runtime_data

* runtime_data

* Remove some code

* format

* Fix missing entry.runtime_data
2024-05-12 08:25:09 -04:00
J. Nick Koston
f318a3b5e2 Fix blocking I/O in the event loop to get MacOS system_info (#117290)
* Fix blocking I/O in the event look to get MacOS system_info

* split pr

* Update homeassistant/helpers/system_info.py

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

* Update homeassistant/helpers/system_info.py

---------

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2024-05-12 08:16:21 -04:00
Jan Bouwhuis
65a4e5a1af Spelling of controlling in mqtt valve tests (#117301) 2024-05-12 14:06:21 +02:00
Marc Mueller
4f4389ba85 Improve bluetooth generic typing (#117157) 2024-05-12 13:15:30 +02:00
Jan Bouwhuis
92254772ca Increase MQTT broker socket buffer size (#117267)
* Increase MQTT broker socket buffer size

* Revert unrelated change

* Try to increase buffer size

* Set INITIAL_SUBSCRIBE_COOLDOWN back to 0.5 sec

* Sinplify and add test

* comments

* comments

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-12 13:13:41 +02:00
J. Nick Koston
f4e8d46ec2 Small speed ups to bootstrap tests (#117285) 2024-05-12 20:05:02 +09:00
J. Nick Koston
437fe3fa4e Fix mimetypes doing blocking I/O in the event loop (#117292)
The first time aiohttp calls mimetypes, it will load the mime.types file

We now init the db in the executor to avoid blocking the event loop
2024-05-12 10:47:52 +02:00
Ville Skyttä
34175846ff Bump upcloud-api to 2.5.1 (#117231)
Upgrade upcloud-python-api to 2.5.1

- https://github.com/UpCloudLtd/upcloud-python-api/releases/tag/v2.0.1
- https://github.com/UpCloudLtd/upcloud-python-api/releases/tag/v2.5.0
- https://github.com/UpCloudLtd/upcloud-python-api/releases/tag/v2.5.1
2024-05-12 08:10:02 +00:00
J. Nick Koston
eac4aaef10 Use a dictcomp to reconstruct DeviceInfo in the device_registry (#117286)
Use a dictcomp to reconstruct DeviceInfo

a dictcomp is faster than many sets on the dict by at least
25%

We call this for nearly every device in the registry at
startup
2024-05-12 08:07:12 +02:00
Erik Montnemery
0acf392a50 Use MockConfigEntry in hue tests (#117237)
Use MockConfigEntry in hue tests
2024-05-11 23:36:54 -04:00
J. Nick Koston
b061e7d1aa Small speed up to setting up integrations and config entries (#117278)
* Small speed up to setting up integration and config entries

When profiling tests, I noticed many calls to get_running_loop. In the places
where we are already in a coro, pass the existing loop so it does not have to
be looked up. I did not do this for places were we are not in a coro since there
is risk that an integration could be doing a non-thread-safe call and its better
that the code raises when trying to fetch the running loop vs the performance
improvement for these cases.

* fix merge

* missed some
2024-05-11 22:39:20 -04:00
Abílio Costa
15825b9444 Fix docstring in Idasen Desk (#117280) 2024-05-12 09:14:52 +09:00
J. Nick Koston
481de8cdc9 Ensure config entry operations are always holding the lock (#117214)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-12 08:20:08 +09:00
Erik Montnemery
f55fcca0bb Tweak config_entries tests (#117242) 2024-05-11 21:45:03 +02:00
Joost Lekkerkerker
9f53c807c6 Refactor V2C tests (#117264)
* Refactor V2C tests

* Refactor V2C tests

* Refactor V2C tests

* Refactor V2C tests

* Update tests/components/v2c/conftest.py

* Refactor V2C tests
2024-05-11 21:28:37 +02:00
Jan Bouwhuis
7eb8f265fe Add shared notify service migration repair helper (#117213)
* Add shared notifiy service migration repair helper

* Delete ecobee repairs.py

* Update dependency

* Fix file test

* Fix homematic tests

* Improve tests for file  and homematic
2024-05-11 21:13:44 +02:00
Erik Montnemery
d1525b1edf Sort parameters to MockConfigEntry (#117239) 2024-05-11 14:16:29 -04:00
Erik Montnemery
35900cd579 Use mock_config_flow helper in bootstrap tests (#117240) 2024-05-11 14:11:42 -04:00
Erik Montnemery
021b057a87 Use mock_config_flow helper in config_entries tests (#117241) 2024-05-11 14:11:18 -04:00
Erik Montnemery
5c1f6aeb60 Use mock_config_flow helper in config tests (#117245) 2024-05-11 14:09:00 -04:00
Raman Gupta
1f792fc2aa Start using runtime_data for zwave_js (#117261)
* Start using runtime_data for zwave_js

* fix bug
2024-05-11 14:08:30 -04:00
Tom Harris
a892062f01 Bump pyinsteon to 1.6.1 (#117196)
* Bump pyinsteon

* Bump pyinsteon

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-11 13:41:14 -04:00
mtielen
e5f8e08d62 Bump wolf-comm to 0.0.8 (#117218) 2024-05-11 18:29:59 +02:00
hahn-th
8e71fca511 Bump homematicip to 1.1.1 (#117175) 2024-05-11 18:24:56 +02:00
Raman Gupta
9655db3d55 Fix zwave_js discovery logic for node device class (#117232)
* Fix zwave_js discovery logic for node device class

* simplify check
2024-05-11 17:41:03 +02:00
Erik Montnemery
3bea124d84 Sort asserts in config config_entries tests (#117244) 2024-05-11 17:38:07 +02:00
Erik Montnemery
813f97dedc Rename some MQTT tests (#117246) 2024-05-11 16:57:46 +02:00
Erik Montnemery
745c4aef30 Rename some rflink tests (#117247) 2024-05-11 14:18:41 +01:00
Erik Montnemery
acc78b26f7 Rename some translation helper tests (#117248) 2024-05-11 14:17:53 +01:00
Erik Montnemery
6f50c60e60 Rename some runner tests (#117249) 2024-05-11 14:16:41 +01:00
Erik Montnemery
90a50c162d Use MockConfigEntry in unifi tests (#117238) 2024-05-11 11:11:53 +02:00
J. Nick Koston
daef625985 Speed up init and finish flow (#117226)
Since every flow now has to check for single config entry, change
the check to see if a config entry exists first before calling
the _support_single_config_entry_only since _support_single_config_entry_only
has to load the integration which adds up quite a bit in test runs
2024-05-11 09:47:17 +02:00
Paul Donald
c979597ec4 Prevent shutdown fault-log trace-back (#116735)
Closes issue #116710
2024-05-11 07:59:05 +02:00
G Johansson
70a1e627b6 Add device class to Command Line cover (#117183) 2024-05-11 06:22:30 +01:00
J. Nick Koston
d7aa24fa50 Only load translations for an integration once per test session (#117118) 2024-05-11 12:00:02 +09:00
J. Nick Koston
9e107a02db Fix flakey advantage_air test (#117224) 2024-05-10 21:39:01 -05:00
Allen Porter
f35b9c2b22 Bump pyrainbird to 6.0.1 (#117217)
* Bump pyrainbird to 6.0.0

* Bump to 6.0.1
2024-05-10 19:00:08 -07:00
jjlawren
b180e14224 Bump SoCo to 0.30.4 (#117212) 2024-05-10 21:38:38 -04:00
J. Nick Koston
52cca26473 Use async_get_loaded_integration in config_entries (#117192) 2024-05-11 10:30:34 +09:00
Allen Porter
25c97a5eab Bump ical to 8.0.1 (#117219) 2024-05-10 21:25:16 -04:00
J. Nick Koston
3ad489d835 Fix flakey sonos test teardown (#117222)
https://github.com/home-assistant/core/actions/runs/9039805087/job/24843300480?pr=117214
2024-05-10 21:24:49 -04:00
J. Nick Koston
2e60e09ba2 Ensure config entry setup lock is held when removing a config entry (#117086) 2024-05-11 09:47:26 +09:00
J. Nick Koston
c74c2f3652 Add state check to config entry setup to ensure it cannot be setup twice (#117193) 2024-05-11 07:09:28 +09:00
Jan Bouwhuis
c21dac855a Fix File entry setup config parsing whole YAML config (#117206)
Fix File entry setup config parsingwhole YAML config
2024-05-10 22:05:40 +02:00
Marc-Olivier Arsenault
db6e3f7cbf Add update_without_throttle to ecobee number (#116504)
add update_without_throttle
2024-05-10 21:54:28 +02:00
Paulus Schoutsen
9b6500582a 2024.5.3 (#117203) 2024-05-10 15:08:20 -04:00
Denis Shulyaka
8168aff253 Update SetPositionIntentHandler intent schema (#116794)
Update SetPositionIntentHandler

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-05-10 14:33:11 -04:00
Paulus Schoutsen
e2da28fbdb Bump version to 2024.5.3 2024-05-10 18:14:24 +00:00
Robert Resch
2c8b3ac8bb Bump deebot-client to 7.2.0 (#117189) 2024-05-10 18:10:05 +00:00
Diogo Gomes
f07c00a05b Bump pytrydan to 0.6.0 (#117162) 2024-05-10 18:10:04 +00:00
Jan Bouwhuis
56b38cd842 Fix typo in xiaomi_ble translation strings (#117144) 2024-05-10 18:10:03 +00:00
J. Nick Koston
1b519a4610 Handle tilt position being None in HKC (#117141) 2024-05-10 18:10:02 +00:00
mletenay
09490d9e0a Bump goodwe to 0.3.5 (#117115) 2024-05-10 18:10:02 +00:00
Jan Bouwhuis
c0cd76b3bf Make the mqtt discovery update tasks eager and fix race (#117105)
* Fix mqtt discovery race for update rapidly followed on creation

* Revert unrelated renaming local var
2024-05-10 18:10:01 +00:00
MatthewFlamm
b9ed2dab5f Fix nws blocking startup (#117094)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-10 18:10:00 +00:00
J. Nick Koston
11f86d9e0b Improve config entry has already been setup error message (#117091) 2024-05-10 18:10:00 +00:00
mletenay
82fab7df39 Goodwe Increase max value of export limit to 200% (#117090) 2024-05-10 18:09:59 +00:00
puddly
d40689024a Add a missing addon_name placeholder to the SkyConnect config flow (#117089) 2024-05-10 18:09:58 +00:00
Arie Catsman
9e7e839f03 Bump pyenphase to 1.20.3 (#117061) 2024-05-10 18:09:57 +00:00
Chris Talkington
08ba5304fe Bump rokuecp to 0.19.3 (#117059) 2024-05-10 18:09:57 +00:00
Jan Bouwhuis
f34a0dc5ce Log an exception mqtt client call back throws (#117028)
* Log an exception mqtt client call back throws

* Supress exceptions and add test
2024-05-10 18:09:56 +00:00
J. Nick Koston
1a13e1d024 Simplify MQTT subscribe debouncer execution (#117006) 2024-05-10 18:09:55 +00:00
Marc Mueller
bee518dc78 Update jinja2 to 3.1.4 (#116986) 2024-05-10 18:09:54 +00:00
Matrix
fdc59547e0 Bump Yolink api to 0.4.4 (#116967) 2024-05-10 18:09:54 +00:00
Mr. Bubbles
57861dc091 Update strings for Bring notification service (#116181)
update translations
2024-05-10 18:09:53 +00:00
Pete Sage
624baebbaa Fix Sonos select_source timeout error (#115640) 2024-05-10 18:09:52 +00:00
Diogo Gomes
8953616d11 Bump pytrydan to 0.6.0 (#117162) 2024-05-10 19:59:28 +02:00
Denis Shulyaka
f2460a6975 Update media_player intent schema (#116793)
Update media_player/intent.py
2024-05-10 11:27:04 -04:00
Jan Bouwhuis
96ccf7f2da Log some mqtt of the discovery logging at debug level (#117185) 2024-05-10 14:49:27 +02:00
Marc Mueller
9f321642b2 Import TypedDict from typing (#117161) 2024-05-10 14:18:13 +02:00
Robert Resch
22b83657f9 Bump deebot-client to 7.2.0 (#117189) 2024-05-10 13:33:18 +02:00
Markus
ed4c3196ab Add ESPhome discovery via MQTT (#116499)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-10 13:32:42 +02:00
Brett Adams
62d70b1b10 Add energy site coordinator to Teslemetry (#117184)
* Add energy site coordinator

* Add missing string

* Add another missing string

* Aprettier
2024-05-10 12:38:20 +02:00
Jan Bouwhuis
55c4ba12f6 Migrate file integration to config entry (#116861)
* File integration entry setup

* Import to entry and tests

* Add config flow

* Exception handling and tests

* Add config flow tests

* Add issue for micration and deprecation

* Check whole entry data for uniqueness

* Revert changes change new notify entity

* Follow up on code review

* Keep name service option

* Also keep sensor name

* Make name unique

* Follow up comment

* No default timestamp needed

* Remove default name as it is already set

* Use links
2024-05-10 10:54:36 +02:00
Brett Adams
1a4e416bf4 Refactor Teslemetry integration (#112480)
* Refactor Teslemetry

* Add abstractmethod

* Remove unused timestamp const

* Ruff

* Fix

* Update snapshots

* ruff

* Ruff

* ruff

* Lint

* Fix tests

* Fix tests and diag

* Refix snapshot

* Ruff

* Fix

* Fix bad merge

* has as property

* Remove _handle_coordinator_update

* Test and error changes
2024-05-10 10:52:33 +02:00
Bertrand Roussel
11f5b48724 Add standard deviation calculation to group (#112076)
* Add standard deviation calculation to group

* Add missing bits

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-05-10 10:16:09 +02:00
RJPoelstra
8c54587d7e Improve base entity state in Vogel's MotionMount integration (#109043)
* Update device info when name changes

* Entities now report themselves as being unavailable when the MotionMount is disconnected

* Don't update device_info when name changes

* Use `device_entry` property to update device name

* Assert device is available

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

* Add missing import

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-10 09:58:16 +02:00
tizianodeg
d4fbaef4f6 Raise ServiceValidationError in Nibe climate services (#117171)
Fix ClimateService to rise ServiceValidationError for stack free logs
2024-05-10 09:22:20 +02:00
J. Nick Koston
4138c7a0ef Handle tilt position being None in HKC (#117141) 2024-05-10 00:47:13 -05:00
Sid
e4a3cab801 Bump ruff to 0.4.4 (#117154) 2024-05-09 22:13:11 +02:00
Thomas55555
3fa2db84f0 Catch auth exception in husqvarna automower (#115365)
* Catch AuthException in Husqvarna Automower

* don't use getattr

* raise ConfigEntryAuthFailed
2024-05-09 16:56:26 +02:00
Jan Bouwhuis
82e12052e4 Fix typo in xiaomi_ble translation strings (#117144) 2024-05-09 16:31:36 +02:00
J. Nick Koston
333d5a9251 Speed up test teardown when no config entries are loaded (#117095)
Avoid the gather call when there are no loaded config entries
2024-05-09 10:14:07 -04:00
Kevin Worrel
c1f0ebee2c Add screenlogic service tests (#116356) 2024-05-09 07:19:58 -05:00
Joost Lekkerkerker
b30a02dee6 Add base entity for Airgradient (#117135) 2024-05-09 11:12:47 +02:00
Joost Lekkerkerker
6485973d9b Add airgradient integration (#114113) 2024-05-09 10:54:29 +02:00
dependabot[bot]
32061d4eb1 Bump github/codeql-action from 3.25.3 to 3.25.4 (#117127) 2024-05-09 09:28:24 +02:00
J. Nick Koston
19c26b79af Move available property in BasePassiveBluetoothCoordinator to PassiveBluetoothDataUpdateCoordinator (#117056) 2024-05-08 17:45:57 -05:00
Marc Mueller
04c0b7d3df Use HassKey for importlib helper (#117116) 2024-05-08 17:42:28 -05:00
Luke Lashley
a77add1b77 Add better testing to vacuum platform (#112523)
* Add better testing to vacuum platform

* remove state strings

* some of the MR comments

* move MockVacuum

* remove manifest extra

* fix linting

* fix other linting

* Fix create entity calls

* Format

* remove create_entity

* change to match notify

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-09 00:33:23 +02:00
mletenay
f9413fcc9c Bump goodwe to 0.3.5 (#117115) 2024-05-09 00:17:20 +02:00
Luke Lashley
412e9bb072 Add test data for Zeo and Dyad devices to Roborock (#117054) 2024-05-09 00:16:48 +02:00
mletenay
b60c90e5ee Goodwe Increase max value of export limit to 200% (#117090) 2024-05-09 00:08:08 +02:00
Michael
12759b50cc Store runtime data inside the config entry in Tuya (#116822) 2024-05-09 00:04:26 +02:00
J. Nick Koston
89049bc022 Fix config entry _async_process_on_unload being called for forwarded platforms (#117084) 2024-05-08 23:59:37 +02:00
puddly
ac9b8cce37 Add a missing addon_name placeholder to the SkyConnect config flow (#117089) 2024-05-08 23:57:50 +02:00
Sid
fe9e5e4382 Ignore Ruff SIM103 (#115732)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-08 23:56:59 +02:00
Sid
ac54cdcdb4 Enable Ruff RUF010 (#115371)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-08 23:54:49 +02:00
Jan Bouwhuis
589104f63d Export MQTT subscription helpers at integration level (#116150) 2024-05-08 23:46:50 +02:00
Luke Lashley
6da432a5c3 Bump python-roborock to 2.1.1 (#117078) 2024-05-08 23:46:24 +02:00
J. Nick Koston
00150881a5 Migrate elkm1 to use config entry runtime_data (#117077) 2024-05-08 23:44:39 +02:00
J. Nick Koston
8464c95fb4 Migrate yalexs_ble to use config entry runtime_data (#117082) 2024-05-08 23:43:25 +02:00
J. Nick Koston
6eeeafa8b8 Speed up tests by making mock_get_source_ip session scoped (#117096) 2024-05-08 23:42:35 +02:00
J. Nick Koston
03dcede211 Avoid creating inner tasks to load storage (#117099) 2024-05-08 23:41:20 +02:00
J. Nick Koston
ead69af27c Avoid creating a task to clear the hass instance at test teardown (#117103) 2024-05-08 23:39:45 +02:00
J. Nick Koston
8c37b3afd7 Migrate govee_ble to use config entry runtime_data (#117076) 2024-05-08 23:22:40 +02:00
J. Nick Koston
1d833d3795 Avoid storing Bluetooth scanner in hass.data (#117074) 2024-05-08 16:08:12 -05:00
Jan Bouwhuis
840d8cb39f Add open and opening state support to MQTT lock (#117110) 2024-05-08 22:52:57 +02:00
J. Nick Koston
159f0fcce7 Migrate baf to use config entry runtime_data (#117081) 2024-05-08 22:37:14 +02:00
Jan Bouwhuis
20b29242f1 Make the mqtt discovery update tasks eager and fix race (#117105)
* Fix mqtt discovery race for update rapidly followed on creation

* Revert unrelated renaming local var
2024-05-08 21:42:11 +02:00
MatthewFlamm
6b3ffad77a Fix nws blocking startup (#117094)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-08 14:16:20 -05:00
J. Nick Koston
84a91a86a9 Improve config entry has already been setup error message (#117091) 2024-05-08 14:16:08 -05:00
tizianodeg
92b246fda9 Fix nibe_heatpump climate for models without cooling support (#114599)
* fix nibe_heatpump climate for models without cooling support

* add test for set temperature with no cooling support

* fixup use self._coil_setpoint_cool None

* fixup add new test to explicitly test unsupported cooling
2024-05-08 21:02:43 +02:00
G Johansson
7862596ef3 Add open state to LockEntity (#111968)
* Add `open` state to LockEntity

* Add tests

* Fixes

* Fix tests

* strings and icons

* Adjust demo open lock

* Fix lock and tests

* fix import

* Fix strings

* mute ruff

* Change sequence

* Sequence2

* Group on states

* Fix ruff

* Fix tests

* Add more test cases

* Sorting
2024-05-08 20:42:22 +02:00
Peter Antonvich
189c07d502 Correct state class of ecowitt hourly rain rate sensors (#110475)
* Update sensor.py for Hourly Rain Rates mm and in

hourly_rain_rate from integration ecowitt has state class total_increasing, but its state is not strictly increasing

* Update sensor.py format
2024-05-08 17:19:16 +02:00
Troon
cc99a9b62a Add an add template filter (#109884)
* Addition of add filter

This change adds an `add` filter, the addition equivalent of the existing `multiply` filter.

* Test for add filter

* Update test_template.py

* Update tests/helpers/test_template.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-08 15:39:36 +02:00
Chris Talkington
1e35dd9f6f Bump rokuecp to 0.19.3 (#117059) 2024-05-08 08:38:44 -05:00
Luke Lashley
22bc11f397 Convert Anova to cloud push (#109508)
* current state

* finish refactor

* Apply suggestions from code review

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

* address MR comments

* Change to sensor setup to be listener based.

* remove assert for websocket handler

* added assert for log

* remove mixin

* fix linting

* fix merge change

* Add clarifying comment

* Apply suggestions from code review

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

* Address MR comments

* bump version and fix typing check

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-08 14:53:44 +02:00
J. Nick Koston
de62e205dd Bump bleak to 0.22.0 (#116955) 2024-05-08 07:35:33 -05:00
Joost Lekkerkerker
b54077026a Bump pylutron to 0.2.13 (#117062)
* Bump pylutron to 0.2.13

* Bump pylutron to 0.2.13
2024-05-08 14:32:23 +02:00
Michael
d9ad0c101b Apply late review on Synology DSM (#117060)
keep CONF_TIMEOUT in options to allow downgrades
2024-05-08 14:30:58 +02:00
Simone Chemelli
ad05a542ae Bump aiovodafone to 0.6.0 (#117064)
bump aiovodafone to 0.6.0
2024-05-08 14:26:43 +02:00
Arie Catsman
c437d3f858 Bump pyenphase to 1.20.3 (#117061) 2024-05-08 07:02:49 -05:00
Erik Montnemery
fd8c36d93b User eager task in github config flow (#117066) 2024-05-08 11:25:57 +02:00
Sid
dc1aba0a05 Use runtime_data in webmin (#117058) 2024-05-08 09:04:20 +02:00
Maciej Bieniek
40be1424b5 Store Tractive data in config_entry.runtime_data (#116781)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-05-08 09:03:26 +02:00
Maciej Bieniek
e16a88a9c9 Set the quality scale to platinum for IMGW-PIB integration (#116912)
* Increase test coverage

* Set the quality scale to platinum

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-08 08:51:25 +02:00
Michael
2891a63281 Store runtime data inside the config entry in IPP (#116765)
* store runtime data inside the config entry

* improve tests
2024-05-08 01:16:06 -05:00
Kevin Stillhammer
3844e2d533 Add service waze_travel_time.get_travel_times (#108170)
* Add service waze_travel_time.get_travel_times

* Align strings with home-assistant.io

* Remove not needed service args

* Use SelectSelectorConfig.sort

* Move vehicle_type mangling to async_get_travel_times
2024-05-08 07:56:17 +02:00
Michael Hansen
7923471b94 Intent target matching and media player enhancements (#115445)
* Working

* Tests are passing

* Fix climate

* Requested changes from review
2024-05-07 22:01:03 -04:00
J. Nick Koston
8401b05d40 Move thread safety check in category_registry sooner (#117050) 2024-05-07 19:55:43 -05:00
Lennard Beers
3b51bf266a Update eq3btsmart library dependency to 1.1.8 (#117051)
* Update eq3btsmart dependency to 1.1.8

* Update test dependency and manifest for eq3btsmart to 1.1.8
2024-05-07 19:49:00 -05:00
J. Nick Koston
0b2c29fdb9 Move thread safety in floor_registry sooner (#117044) 2024-05-07 18:48:38 -05:00
Joost Lekkerkerker
27d45f04c4 Fix capitalization in Monzo strings (#117035)
* Fix capitalization in Monzo strings

* Fix capitalization in Monzo strings

* Fix capitalization in Monzo strings
2024-05-07 22:33:10 +02:00
J. Nick Koston
fc3c384e0a Move thread safety in label_registry sooner (#117026) 2024-05-07 15:15:30 -05:00
Michael
9557ea902e Store runtime data inside the config entry in Apple TV (#117032)
store runtime data inside the config entry
2024-05-07 22:13:53 +02:00
Michael
7f7d025b44 Store runtime data inside the config entry in Upnp (#117030)
store runtime data inside the config entry
2024-05-07 22:05:04 +02:00
Maciej Bieniek
35d44ec90a Store Airly runtime data in config entry (#117031)
* Store runtime data in config entry

* Fix tests

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-07 22:04:37 +02:00
John Hollowell
640cd519dd Add Venstar HVAC stage sensor (#107510)
* Add sensor for which stage of heating/cooling is active

for example, a 2-stage heating system would initially use the first stage for heat and if it was unable to fulfill the demand, the thermostat would call for the second stage heat in addition to the first stage heat already in use.

* Add translation keys for english

* Apply suggestions from code review

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

* Add translation of entity name

* Update sensor name to correctly be translatable

---------

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
2024-05-07 21:43:01 +02:00
J. Nick Koston
649dd55da9 Simplify MQTT subscribe debouncer execution (#117006) 2024-05-07 14:41:31 -05:00
G Johansson
38a3c3a823 Fix double executor in Filesize (#117029) 2024-05-07 21:34:07 +02:00
Álvaro Fernández Rojas
3774d8ed54 Add climate temp ranges support for Airzone Cloud (#115025)
airzone_cloud: climate: add temperature ranges support

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-05-07 21:29:45 +02:00
Thomas Kistler
14fcf7be8e Add flow and rain sensor support to Hydrawise (#116303)
* Add flow and rain sensor support to Hydrawise

* Address comments

* Cleanup

* Review comments

* Address review comments

* Added tests

* Add icon translations

* Add snapshot tests

* Clean up binary sensor

* Mypy cleanup

* Another mypy error

* Reviewer feedback

* Clear next_cycle sensor when the value is unknown

* Reviewer feedback

* Reviewer feedback

* Remove assert

* Restructure switches, sensors, and binary sensors

* Reviewer feedback

* Reviewer feedback
2024-05-07 21:26:10 +02:00
Jan Bouwhuis
a3248ccff9 Log an exception mqtt client call back throws (#117028)
* Log an exception mqtt client call back throws

* Supress exceptions and add test
2024-05-07 21:19:46 +02:00
Marc Mueller
db138f3727 Add MediaSourceProtocol to improve platform typing (#117001) 2024-05-07 21:18:11 +02:00
Mr. Bubbles
e5b91aa522 Update strings for Bring notification service (#116181)
update translations
2024-05-07 21:10:04 +02:00
J. Nick Koston
26cc1cd3db Use singleton helper for registries (#117027) 2024-05-07 21:04:01 +02:00
Jake Martin
6e024d54f1 Add Monzo integration (#101731)
* Initial monzo implementation

* Tests and fixes

* Extracted api to pypi package

* Add app confirmation step

* Corrected data path for accounts

* Removed useless check

* Improved tests

* Exclude partially tested files from coverage check

* Use has_entity_name naming

* Bumped monzopy to 1.0.10

* Remove commented out code

* Remove reauth from initial PR

* Remove useless code

* Correct comment

* Remove reauth tests

* Remove device triggers from intial PR

* Set attr outside constructor

* Remove f-strings where no longer needed in entity.py

* Rename field to make clearer it's a Callable

* Correct native_unit_of_measurement

* Remove pot transfer service from intial PR

* Remove reauth string

* Remove empty fields in manifest.json

* Freeze SensorEntityDescription and remove Mixin

Also use list comprehensions for producing sensor lists

* Use consts in application_credentials.py

* Revert "Remove useless code"

Apparently this wasn't useless

This reverts commit c6b7109e47202f866c766ea4c16ce3eb0588795b.

* Ruff and pylint style fixes

* Bumped monzopy to 1.1.0

Adds support for joint/business/etc account pots

* Update test snapshot

* Rename AsyncConfigEntryAuth

* Use dataclasses instead of dictionaries

* Move OAuth constants to application_credentials.py

* Remove remaining constants and dependencies for services from this PR

* Remove empty manifest entry

* Fix comment

* Set device entry_type to service

* ACC_SENSORS -> ACCOUNT_SENSORS

* Make value_fn of sensors return StateType

* Rename OAuthMonzoAPI again

* Fix tests

* Patch API instead of integration for unavailable test

* Move pot constant to sensor.py

* Improve type safety in async_get_monzo_api_data()

* Update async_oauth_create_entry() docstring

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-05-07 20:38:58 +02:00
G Johansson
5bef2d5d25 Use entry runtime data on Filesize (#116962)
* Use entry runtime data on Filesize

* Fix comment

* ignore

* Another way

* Refactor
2024-05-07 20:07:32 +02:00
Michal Čihař
789aadcc4c Reduce update interval in Ondilo Ico (#116989)
Ondilo: reduce update interval

The API seems to have sticter rate-limiting and frequent requests fail
with HTTP 400.

Fixes #116593
2024-05-07 19:55:03 +02:00
Erwin Douna
968af28c54 Add Tado reconfigure step (#115970)
Co-authored-by: Matthias Alphart <farmio@alphart.net>
2024-05-07 19:50:07 +02:00
Marc Mueller
f9e2ab2e81 Improve issue_registry event typing (#117023) 2024-05-07 19:49:02 +02:00
G Johansson
b9d26c097f Holiday update calendar once per day (#116421) 2024-05-07 18:52:51 +02:00
Marc Mueller
018e7731ae Add SignificantChangeProtocol to improve platform typing (#117002) 2024-05-07 18:40:57 +02:00
Jan Bouwhuis
7148c849d6 Only log loop client subscription log if log level is DEBUG (#117008)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-07 18:38:59 +02:00
Marc Mueller
15618a8a97 Use HassKey for loader (#116999) 2024-05-07 18:37:01 +02:00
Marc Mueller
b21632ad05 Improve energy platform typing (#117003) 2024-05-07 11:28:42 -05:00
Marc Mueller
2db64c7e6d Use HassKey for helpers (1) (#117012) 2024-05-07 11:25:16 -05:00
Marc Mueller
8f614fb06d Use HassKey for helpers (2) (#117013) 2024-05-07 11:24:13 -05:00
Marc Mueller
c50a340cbc Use HassKey for setup and bootstrap (#116998) 2024-05-07 11:18:20 -05:00
Marc Mueller
fd5885ec83 Use HassKey for registries (#117000) 2024-05-07 18:03:14 +02:00
G-Two
5ad52f122d Return raw API data for subaru device diagnostics (#114119) 2024-05-07 17:32:17 +02:00
Marc Mueller
95a27796f2 Update imports from alarm_control_panel (#117014) 2024-05-07 17:21:29 +02:00
Joost Lekkerkerker
1559562c26 Clean up Ondilo config flow (#116931) 2024-05-07 14:15:56 +02:00
Maciej Bieniek
16d86e5d4c Store Philips TV runtime data in config entry (#116952)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-07 14:10:44 +02:00
Sid
2cc916db6d Replace pylint broad-except with Ruff BLE001 (#116250) 2024-05-07 14:00:27 +02:00
Marc Mueller
b35fbd8d20 Update tqdm to 4.66.4 (#116984) 2024-05-07 13:56:36 +02:00
Marc Mueller
f9755f5c4c Update jinja2 to 3.1.4 (#116986) 2024-05-07 13:56:11 +02:00
Thomas55555
9e5bb92851 Fix flakey test in Husqvarna Automower (#116981) 2024-05-07 12:08:52 +02:00
pemontto
1c414966fe Add support for round-robin DNS (#115218)
* Add support for RR DNS

* 🧪 Update tests for DNS IP round-robin

* 🤖 Configure DNS IP round-robin automatically

* 🐛 Sort IPv6 addresses correctly

* Limit returned IPs and cleanup test class

* 🔟 Change max DNS results to 10

* Rename IPs to ip_addresses
2024-05-07 11:49:13 +02:00
Marc Mueller
3d700e2b71 Add HassDict implementation (#103844) 2024-05-07 10:53:13 +02:00
J. Nick Koston
fd52588565 Bump SQLAlchemy to 2.0.30 (#116964) 2024-05-07 10:42:13 +02:00
Pete Sage
731fe17224 Fix Sonos select_source timeout error (#115640) 2024-05-07 10:08:12 +02:00
SLaks
b5cd0e629d Upgrade to hdate 0.10.8 (#116202)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-07 09:28:54 +02:00
Matrix
6ac44f3f14 Bump Yolink api to 0.4.4 (#116967) 2024-05-07 07:51:10 +02:00
ollo69
5db8082f91 Review AndroidTV decorator exception management (#114133) 2024-05-06 18:00:12 -05:00
Thomas55555
8e66e5bb11 Bump aioautomower to 2024.5.0 (#116942) 2024-05-06 17:59:34 -05:00
Abílio Costa
486b8ca7c4 Make Idasen Desk react to bluetooth changes (#115939) 2024-05-06 17:52:54 -05:00
G Johansson
4037f52d62 Bump python-holidays to 0.48 (#116951)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-06 23:36:47 +02:00
Jan Bouwhuis
eaf277844f Correct typo in MQTT translations (#116956) 2024-05-06 23:21:34 +02:00
J. Nick Koston
dc50095d06 Bump orjson to 3.10.3 (#116945) 2024-05-06 22:45:23 +02:00
Jan Bouwhuis
821c7d813d Correct formatting mqtt MQTT_DISCOVERY_DONE and MQTT_DISCOVERY_UPDATED message (#116947) 2024-05-06 22:32:46 +02:00
Guido Schmitz
e65f2f1984 Use ConfigEntry runtime_data in devolo Home Network (#116694) 2024-05-06 22:31:39 +02:00
G Johansson
b3008b074e Remove ambiclimate integration (#116410) 2024-05-06 22:15:04 +02:00
Joakim Plate
2b6dd59cfc Allow reconfiguration of integration sensor (#116740)
* Allow reconfiguration of integration sensor

* Adjust allowed options to not change unit
2024-05-06 21:03:46 +02:00
G Johansson
ebd1efa53b Handle exceptions in panic button for Yale Smart Alarm (#116515)
* Handle exceptions in panic button for Yale Smart Alarm

* Change key
2024-05-06 20:51:37 +02:00
Joost Lekkerkerker
ffa8265365 Snapshot Ondilo Ico devices (#116932)
Co-authored-by: JeromeHXP <dartdoka@mainguet.fr>
2024-05-06 20:34:29 +02:00
Sid
b456d97e65 Replace pylint protected-access with Ruff SLF001 (#115735) 2024-05-06 20:33:26 +02:00
mtielen
460c05dc43 Revert polling interval back to orginal value in Wolflink (#116758) 2024-05-06 20:09:41 +02:00
Maciej Bieniek
57283d16d9 Store AccuWeather runtime data in config entry (#116946)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-06 20:06:47 +02:00
Joakim Plate
1ef09048e6 Allow the rounding to be optional in integral (#116884) 2024-05-06 20:06:26 +02:00
Franck Nijhof
a8f3b699b3 2024.5.2 (#116937) 2024-05-06 19:49:06 +02:00
Maciej Bieniek
09be56964d AccuWeather tests refactoring (#116923)
* Add mock_accuweather_client

* Improve tests

* Fix exceptions

* Remove unneeded update_listener()

* Fix arguments for fixtures

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-06 19:41:48 +02:00
Franck Nijhof
72d6b4d1c9 Use ConfigEntry runtime_data in TwenteMilieu (#116642) 2024-05-06 19:21:34 +02:00
Marc Mueller
f5c54bcc0d Use runtime_data for wled (#116615) 2024-05-06 19:19:47 +02:00
Joost Lekkerkerker
f92fb0f492 Remove deprecated WAQI state attributes (#116595) 2024-05-06 19:12:45 +02:00
Marc Mueller
8c053a351c Use runtime_data for elgato (#116614) 2024-05-06 19:12:01 +02:00
Joost Lekkerkerker
95405ba6bb Add dataclass to Ondilo Ico (#116928) 2024-05-06 19:10:49 +02:00
Marc Mueller
52b8c189d7 Fix wiz test warning (#116693) 2024-05-06 19:10:06 +02:00
Joost Lekkerkerker
485f3b0f0a Set pH device class in Ondilo Ico (#116930) 2024-05-06 19:09:02 +02:00
J. Nick Koston
f3b08e89a5 Small speed ups to async_get_integration (#116900) 2024-05-06 19:08:33 +02:00
Bram Kragten
eb6ccea8aa Update frontend to 20240501.1 (#116939) 2024-05-06 18:43:20 +02:00
Bram Kragten
71d65e38b5 Update frontend to 20240501.1 (#116939) 2024-05-06 18:40:01 +02:00
Michael
ead9c4af38 Store runtime data inside the config entry in Radio Browser (#116821) 2024-05-06 17:54:44 +02:00
Franck Nijhof
6b93f8d997 Bump version to 2024.5.2 2024-05-06 17:19:04 +02:00
Jan Bouwhuis
ab113570c3 Fix initial mqtt subcribe cooldown timeout (#116904) 2024-05-06 17:18:26 +02:00
Robert Hillis
ed6788ca3f fix radarr coordinator updates (#116874) 2024-05-06 17:18:23 +02:00
J. Nick Koston
9533f5b490 Fix non-thread-safe operations in amcrest (#116859)
* Fix non-thread-safe operations in amcrest

fixes #116850

* fix locking

* fix locking

* fix locking
2024-05-06 17:18:19 +02:00
mletenay
7c9653e397 Bump goodwe to 0.3.4 (#116849) 2024-05-06 17:18:16 +02:00
tronikos
73eabe821c Bump androidtvremote2 to v0.0.15 (#116844) 2024-05-06 17:18:13 +02:00
Michael
834c2e2a09 Avoid duplicate data fetch during Synologs DSM setup (#116839)
don't do first refresh of central coordinator, is already done by api.setup before
2024-05-06 17:18:10 +02:00
Michael
421f74cd7f Increase default timeout to 30 seconds in Synology DSM (#116836)
increase default timeout to 30s and use it consequently
2024-05-06 17:18:06 +02:00
J. Nick Koston
c049888b00 Fix non-thread-safe state write in lutron event (#116829)
fixes #116746
2024-05-06 17:18:01 +02:00
Paulus Schoutsen
ad5e0949b6 Hide conversation agents that are exposed as agent entities (#116813) 2024-05-06 16:58:30 +02:00
J. Nick Koston
ae28c604e5 Fix airthings-ble data drop outs when Bluetooth connection is flakey (#116805)
* Fix airthings-ble data drop outs when Bluetooth adapter is flakey

fixes #116770

* add missing file

* update
2024-05-06 16:57:55 +02:00
Jan Bouwhuis
dbe303d95e Fix IMAP config entry setup (#116797) 2024-05-06 16:51:29 +02:00
J. Nick Koston
ad7688197f Ensure all synology_dsm coordinators handle expired sessions (#116796)
* Ensure all synology_dsm coordinators handle expired sessions

* Ensure all synology_dsm coordinators handle expired sessions

* Ensure all synology_dsm coordinators handle expired sessions

* handle cancellation

* add a debug log message

---------

Co-authored-by: mib1185 <mail@mib85.de>
2024-05-06 16:51:26 +02:00
Patrick Decat
79460cb017 fix UnboundLocalError on modified_statistic_ids in compile_statistics (#116795)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-06 16:51:23 +02:00
J. Nick Koston
18bcc61427 Bump bluetooth-adapters to 0.19.2 (#116785) 2024-05-06 16:51:19 +02:00
J. Nick Koston
57bbd10517 Refactor statistics to avoid creating tasks (#116743) 2024-05-06 16:51:16 +02:00
Joost Lekkerkerker
f068b8cdb8 Remove suggested UoM from Opower (#116728) 2024-05-06 16:51:12 +02:00
Joost Lekkerkerker
bbb94d9e17 Fix Bosch-SHC switch state (#116721) 2024-05-06 16:51:09 +02:00
J. Nick Koston
6d537e2a66 Bump aiohttp-isal to 0.3.1 (#116720) 2024-05-06 16:51:06 +02:00
J. Nick Koston
17c5aa2871 Improve logging of _TrackPointUTCTime objects (#116711) 2024-05-06 16:51:03 +02:00
Erik Montnemery
f4830216a8 Add workaround for data entry flow show progress (#116704)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-05-06 16:50:52 +02:00
Erik Montnemery
1cea22b8ba Fix search/replace mistake in recorder tests (#116933) 2024-05-06 09:03:21 -05:00
Erik Montnemery
2e945aed54 Convert recorder auto_repairs tests to use async API (#116927) 2024-05-06 08:25:48 -05:00
Erik Montnemery
5150557372 Convert recorder util tests to use async API (#116926) 2024-05-06 08:25:41 -05:00
epenet
9f9493c504 Simplify config entry check in SamsungTV (#116907)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-06 08:12:04 -05:00
Erik Montnemery
9807b2ec11 Convert recorder statistics tests to use async API (#116925) 2024-05-06 08:10:58 -05:00
Erik Montnemery
d01d161fe2 Convert recorder history tests to use async API (#116909) 2024-05-06 08:10:45 -05:00
Joost Lekkerkerker
9517800da6 Add snapshot tests to Ondilo Ico (#116929) 2024-05-06 15:08:15 +02:00
Maciej Bieniek
74df693079 Add new sensors to IMGW-PIB integration (#116631)
Add flood warning/alarm level sensors

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-06 15:03:25 +02:00
Mr. Bubbles
d81fad1ef1 Reduce API calls to fetch Habitica tasks (#116897) 2024-05-06 08:02:54 -05:00
ollo69
7e8fab65ff Store runtime data inside the config entry in AsusWrt (#116889) 2024-05-06 08:00:15 -05:00
Erik Montnemery
f5fe80bc90 Convert recorder init tests to use async API (#116918) 2024-05-06 07:59:39 -05:00
JeromeHXP
c9930d912e Handle errors retrieving Ondilo data and bump ondilo to 0.5.0 (#115926)
* Bump ondilo to 0.5.0 and handle errors retrieving data

* Bump ondilo to 0.5.0 and handle errors retrieving data

* Updated ruff recommendation

* Refactor

* Refactor

* Added exception log and updated call to update data

* Updated test cases to test through state machine

* Updated test cases

* Updated test cases after comments

* REnamed file

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2024-05-06 14:41:28 +02:00
Jan Bouwhuis
4b8b9ce92d Fix initial mqtt subcribe cooldown timeout (#116904) 2024-05-06 14:32:37 +02:00
tronikos
5c4afe55fd Avoid exceptions when Gemini responses are blocked (#116847)
* Bump google-generativeai to v0.5.2

* Avoid exceptions when Gemini responses are blocked

* pytest --snapshot-update

* set error response

* add test

* ruff
2024-05-06 18:22:22 +10:00
Paulus Schoutsen
4fce99edb5 Only call conversation should_expose once (#116891)
Only call should expose once
2024-05-05 21:37:10 -04:00
J. Nick Koston
5d5f311898 Move thread safety check in issue_registry sooner (#116899) 2024-05-05 20:32:55 -05:00
tronikos
2a4686e1b7 Bump google-generativeai to v0.5.2 (#116845) 2024-05-05 18:59:29 -05:00
Mr. Bubbles
db4eeffeed Bump bring-api to 0.7.1 (#115532)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-05 18:59:21 -05:00
Mr. Bubbles
afe55e2918 Bump Habitipy to 0.3.1 (#116378)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-06 01:44:54 +02:00
ollo69
e6fda4b357 Store runtime data inside the config entry in AndroidTV (#116895) 2024-05-05 18:15:33 -05:00
mletenay
9684867a57 Bump goodwe to 0.3.4 (#116849) 2024-05-05 18:05:21 -05:00
elmurato
2e52a7c4c0 Abort Minecraft Server config flow if device is already configured (#116852)
* Abort config flow if device is already configured

* Fix review findings

* Rename newly added test case
2024-05-06 00:21:50 +02:00
J. Nick Koston
673bbc1372 Switch out aiohttp-isal for aiohttp-fast-zlib to make isal optional (#116814)
* Switch out aiohttp-isal for aiohttp-fast-zlib to make isal optional

aiohttp-isal does not work on core installs where the system has 32bit userland and a 64bit kernel because we have no way to detect this configuration or handle it.

fixes #116681

* Update homeassistant/components/isal/manifest.json

* Update homeassistant/components/isal/manifest.json

* hassfest

* isal

* fixes

* Apply suggestions from code review

* make sure isal is updated before http

* fix tests

* late import
2024-05-05 17:06:12 -04:00
J. Nick Koston
092a2de340 Fix non-thread-safe operations in amcrest (#116859)
* Fix non-thread-safe operations in amcrest

fixes #116850

* fix locking

* fix locking

* fix locking
2024-05-05 16:58:38 -04:00
J. Nick Koston
a57f4b8f42 Index auth token ids to avoid linear search (#116583)
* Index auth token ids to avoid linear search

* async_remove_refresh_token

* coverage
2024-05-05 16:47:26 -04:00
J. Nick Koston
c8e6292cb7 Refactor statistics to avoid creating tasks (#116743) 2024-05-05 16:39:45 -04:00
J. Nick Koston
d970c19342 Fix airthings-ble data drop outs when Bluetooth connection is flakey (#116805)
* Fix airthings-ble data drop outs when Bluetooth adapter is flakey

fixes #116770

* add missing file

* update
2024-05-05 16:37:10 -04:00
J. Nick Koston
2964471e19 Keep august offline key up to date when it changes (#116857)
We only did discovery for the key at setup time. If it
changed, a reloaded of the integration was needed to
update the key. We now update it every time we update
the lock detail.
2024-05-05 16:33:55 -04:00
J. Nick Koston
91fa8b50cc Turn on thread safety checks in async_dispatcher_send (#116867)
* Turn on thread safety checks in async_dispatcher_send

We keep seeing issues where async_dispatcher_send is called from
a thread which means we call the callback function on the other
side in the thread as well which usually leads to a crash

* Turn on thread safety checks in async_dispatcher_send

We keep seeing issues where async_dispatcher_send is called from
a thread which means we call the callback function on the other
side in the thread as well which usually leads to a crash

* adjust
2024-05-05 16:29:43 -04:00
J. Nick Koston
b41b1bb998 Refactor entity_platform polling to avoid double time fetch (#116877)
* Refactor entity_platform polling to avoid double time fetch

Replace async_track_time_interval with loop.call_later
to avoid the useless time fetch every time the listener
fired since we always throw it away

* fix test
2024-05-05 16:28:01 -04:00
J. Nick Koston
76cd498c44 Replace utcnow().timestamp() with time.time() in auth_store (#116879)
utcnow().timestamp() is a slower way to get time.time()
2024-05-05 16:25:27 -04:00
J. Nick Koston
6339c63176 Improve recorder and worker thread matching in RecorderPool (#116886)
* Improve recorder and worker thread matching in RecorderPool

Previously we would look at the name of the threads. This
was a brittle if because other integrations may name their
thread Recorder or DbWorker. Instead we now use explict thread
ids which ensures there will never be a conflict

* fix

* fixes

* fixes
2024-05-05 16:25:10 -04:00
Robert Hillis
ee031f4850 fix radarr coordinator updates (#116874) 2024-05-05 18:54:17 +02:00
Michael
203d110787 Remove timeout option and set timeout static to 30 seconds in Synology DSM (#116815)
* remove timeout option, set timeout static to 30 seconds

* be slightly faster :)
2024-05-05 18:51:35 +02:00
Mr. Bubbles
b53081dc51 Add update coordinator for Habitica integration (#116427)
* Add DataUpdateCoordinator and exception handling for service

* remove unnecessary lines

* revert changes to service

* remove type check

* store coordinator in config_entry

* add exception translations

* update HabiticaData

* Update homeassistant/components/habitica/__init__.py

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

* Update homeassistant/components/habitica/sensor.py

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

* remove auth exception

* fixes

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-05 17:02:28 +02:00
tronikos
ffe6b9b6f0 Bump androidtvremote2 to v0.0.15 (#116844) 2024-05-05 15:44:40 +02:00
Joost Lekkerkerker
da5d975e22 Add Sensor descriptions for Bosch SHC (#116775)
* Add Sensor descriptions for Bosch SHC

* fix

* fix

* fix
2024-05-05 15:44:11 +02:00
J. Nick Koston
cb9914becd Fix non-thread-safe state write in lutron event (#116829)
fixes #116746
2024-05-05 15:43:39 +02:00
Austin Mroczek
91f5e2c8d3 Bump tcc to 2024.5 (#116827)
bump tcc to 2024.5
2024-05-05 15:38:16 +02:00
Maciej Bieniek
3498cb3ced Increase test coverage for Total Connect (#116851)
Increase test coverage

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-05 15:37:24 +02:00
Michael
b4ec1f5877 Avoid duplicate data fetch during Synologs DSM setup (#116839)
don't do first refresh of central coordinator, is already done by api.setup before
2024-05-05 15:09:26 +02:00
Michael
3d7d8fa28b Increase default timeout to 30 seconds in Synology DSM (#116836)
increase default timeout to 30s and use it consequently
2024-05-05 15:07:18 +02:00
Joost Lekkerkerker
486bb6d89f Use parametrize in drop connect sensor tests (#107078)
* Use parametrize in drop connect sensor tests

* Use parametrize in drop connect sensor tests

* Make common helper

* Assert the whole entity state

* fix

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-05-05 14:10:34 +02:00
Jan Bouwhuis
9fd31f6c92 Correct stale docstring on mqtt config flow method (#116848) 2024-05-05 14:06:13 +02:00
Joost Lekkerkerker
7d5aa03bf0 Move Totalconnect coordinator to separate module (#116368)
* Move Totalconnect coordinator to separate module

* Move Totalconnect coordinator to separate module

* Move Totalconnect coordinator to separate module
2024-05-05 13:05:36 +02:00
Maciej Bieniek
7e11fec761 Migrate properties to instance variables in NAM coordinator (#116703)
* Migrate properties to instance variables

* Fix unique_id type

* Update homeassistant/components/nam/__init__.py

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

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-05 13:04:01 +02:00
J. Nick Koston
b4bac7705e Ensure all synology_dsm coordinators handle expired sessions (#116796)
* Ensure all synology_dsm coordinators handle expired sessions

* Ensure all synology_dsm coordinators handle expired sessions

* Ensure all synology_dsm coordinators handle expired sessions

* handle cancellation

* add a debug log message

---------

Co-authored-by: mib1185 <mail@mib85.de>
2024-05-05 12:09:57 +02:00
Michael
f5394dc3a3 Store runtime data inside the config entry in Android TV Remote (#116824) 2024-05-05 08:59:19 +02:00
Paulus Schoutsen
33e9a6bd58 Hide conversation agents that are exposed as agent entities (#116813) 2024-05-04 19:09:38 -05:00
Michael
59349d2859 Store runtime data inside the config entry in System Monitor (#116816)
* replace optional timeout by sane default

* SystemMonitorConfigEntry noz needed in repairs.py
2024-05-05 02:03:57 +02:00
Mr. Bubbles
95ddb734ed Store runtime data inside the config entry in Bring (#116820) 2024-05-05 01:57:00 +02:00
Michael
e66581e3a2 Store runtime data inside the config entry in Certificate Expiry (#116819)
replace optional timeout by sane default
2024-05-05 01:33:24 +02:00
Michael
ddf9d6c53a Store runtime data inside the config entry in Local ToDo (#116818)
store runtime data inside the config entry
2024-05-05 01:10:34 +02:00
J. Nick Koston
0380116ef6 Improve logging of _TrackPointUTCTime objects (#116711) 2024-05-04 17:35:44 -05:00
Michael
910c991a58 Store runtime data inside the config entry in Sun (#116808)
* store runtime data inside the config entry

* move to entry.async_on_unload()
2024-05-04 23:39:12 +02:00
Michael
90a3c2e357 Store runtime data inside the config entry in NUT (#116771)
* store runtime data inside the config entry

* remove unsued constants

* add test for InvalidDeviceAutomationConfig exception

* assert entry

* add more specific type hint
2024-05-04 23:08:01 +02:00
Michael
4a25e67234 Store runtime data inside the config entry in Pi-Hole (#116806) 2024-05-04 22:52:13 +02:00
Michael
55ffc82be1 Store runtime data inside the config entry in Speedtest.net (#116802) 2024-05-04 22:32:53 +02:00
Michael
65120e5789 Store runtime data inside the config entry in VLC telnet (#116803)
store runtime data inside the config entry
2024-05-04 21:52:53 +02:00
Michael
64b5881652 Store runtime data inside the config entry in OpenWeatherMap (#116788) 2024-05-04 21:19:50 +02:00
Jan Bouwhuis
8bc5a798ca Fix IMAP config entry setup (#116797) 2024-05-04 13:18:26 -05:00
Erik Montnemery
1e72e9e0b2 Add workaround for data entry flow show progress (#116704)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-05-04 13:17:21 -05:00
Patrick Decat
ac12d2a463 fix UnboundLocalError on modified_statistic_ids in compile_statistics (#116795)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-04 13:16:58 -05:00
Michael
f143ed9eeb Store runtime data inside the config entry in SamsungTV (#116787) 2024-05-04 19:12:31 +02:00
Michael
ec46d4d644 Store runtime data inside the config entry in Nextcloud (#116790) 2024-05-04 19:03:25 +02:00
Michael
831282c3ba Store runtime data inside the config entry in Met.no (#116767) 2024-05-04 18:59:01 +02:00
Joost Lekkerkerker
985fd49909 Remove suggested UoM from Opower (#116728) 2024-05-04 10:29:42 -05:00
J. Nick Koston
a2a8cf6361 Bump aiohttp-isal to 0.3.1 (#116720) 2024-05-04 10:29:00 -05:00
J. Nick Koston
a444b832ed Bump bluetooth-adapters to 0.19.2 (#116785) 2024-05-04 10:26:14 -05:00
Maciej Bieniek
19eb51deeb Move Brother DataUpdateCoordinator to the coordinator module (#116772)
* Store data in config_entry.runtime_data

* Update homeassistant/components/brother/__init__.py

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

* Fix setdefault

* Do not include ignored and disabled

* Check loaded entries

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-04 16:29:08 +02:00
Maciej Bieniek
63484fdadd Store BraviaTV data in config_entry.runtime_data (#116778) 2024-05-04 15:50:33 +02:00
mkmer
2132b170f2 Update unique_id to string in Honeywell (#116726)
* Update unique_id to string

* Update homeassistant/components/honeywell/climate.py

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

* Update homeassistant/components/honeywell/climate.py

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

* Update homeassistant/components/honeywell/climate.py

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

* Add typing for devices

* Add tests

* Use methods to verify unique_id

* Update tests/components/honeywell/test_climate.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-04 14:18:50 +02:00
Marc Mueller
f9d95efac0 Improve CoordinatorWeatherEntity generic typing (#116760) 2024-05-04 14:02:23 +02:00
Michael
8238cd9f22 Store runtime data inside the config entry in Shelly (#116763) 2024-05-04 12:41:25 +02:00
Michael
e5543e3b95 Store runtime data inside the config entry in DWD (#116764) 2024-05-04 12:36:28 +02:00
Sid
a5df229715 Bump ruff to 0.4.3 (#116749) 2024-05-04 11:56:40 +02:00
Sean Chen
ac0eabad9f Fix UpdateCoordinator types in CoordinatorWeatherEntity constructor (#116747) 2024-05-04 10:32:37 +02:00
mtielen
8ec1576c67 Fix active state mapping in wolflink (#116659)
* Fix active state mapping for certain entities
2024-05-04 09:23:40 +01:00
Joost Lekkerkerker
45d44ac49e Fix Bosch-SHC switch state (#116721) 2024-05-03 23:54:27 +02:00
Robert Svensson
81a269f4f5 Use runtime_data in Axis integration (#116729)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-05-03 21:52:37 +02:00
Jan-Philipp Benecke
ce8cea86a2 Use ConfigEntry runtime_data in Discovergy (#116671) 2024-05-03 21:29:35 +02:00
Franck Nijhof
ab8a811c9f 2024.5.1 (#116696) 2024-05-03 17:17:43 +02:00
Allen Porter
9b4099950c Cleanup OpenAI and Ollama conversation entities (#116714) 2024-05-03 10:59:08 -04:00
Maciej Bieniek
1eed5442e2 Bump nettigo-air-monitor to version 3.0.1 (#116699)
Bump nettigo-air-monitor to version 3.0.1

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-03 14:36:42 +02:00
Erik Montnemery
e9b9d2d545 Convert recorder entity registry tests to use async API (#116448)
* Convert recorder entity registry tests to use async API

* Address review comment

* Make sure recorder is patch is set up before hass fixture
2024-05-03 14:10:58 +02:00
Erik Montnemery
f309064a7f Convert sensor recorder tests to use async API (#116373)
* Convert sensor recorder tests to use async API

* Fix accidentally renamed test

* Avoid unnecessary calls to async_wait_recording_done

* Avoid auto-commits for every state change

* Make sure recorder patches are set up before hass fixture
2024-05-03 14:07:38 +02:00
Maciej Bieniek
3c3a948c33 EntityDescription doesn't need to be generic for NextDNS binary sensor and switch platforms (#116697) 2024-05-03 13:56:38 +02:00
Guido Schmitz
cb26e3c633 Use ConfigEntry runtime_data in devolo Home Control (#116672) 2024-05-03 13:55:04 +02:00
Maciej Bieniek
5274165007 Use runtime_data to store NextDNS data (#116691)
* Use runtime_data to store data

* Use data type instead of CoordinatorDataT

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-03 13:39:10 +02:00
Franck Nijhof
9d2fd8217f Bump version to 2024.5.1 2024-05-03 13:38:38 +02:00
Guido Schmitz
79d50a0685 Add test for HA stop to devolo Home Control (#116682)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-05-03 13:36:15 +02:00
Felipe Martins Diel
7e8cbafc6f Fix BroadlinkRemote._learn_command() (#116692) 2024-05-03 13:36:03 +02:00
Marc Mueller
a4f9a64588 Fix fyta test timezone handling (#116689) 2024-05-03 13:36:00 +02:00
J. Nick Koston
7a56ba1506 Block dreame_vacuum versions older than 1.0.4 (#116673) 2024-05-03 13:35:56 +02:00
Glenn Waters
66bb3ecac9 Bump env_canada lib to 0.6.2 (#116662) 2024-05-03 13:35:53 +02:00
J. Nick Koston
ac302f38b1 Bump habluetooth to 2.8.1 (#116661) 2024-05-03 13:35:49 +02:00
puddly
abeb65e43d Bump ZHA dependency bellows to 0.38.4 (#116660)
Bump ZHA dependencies

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-05-03 13:35:46 +02:00
Galorhallen
c36fd5550b Bump govee-light-local library and fix wrong information for Govee lights (#116651) 2024-05-03 13:35:42 +02:00
Robert Svensson
6be25c784d Bump aiounifi to v77 (#116639) 2024-05-03 13:35:38 +02:00
Marc Mueller
c338f1b964 Add constraint for tuf (#116627) 2024-05-03 13:35:35 +02:00
Kevin Stillhammer
8193b82f4a Bump pywaze to 1.0.1 (#116621)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-03 13:35:31 +02:00
Ståle Storø Hauknes
7c1502fa05 Bump Airthings BLE to 0.8.0 (#116616)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-03 13:35:27 +02:00
Matthias Alphart
575a3da772 Fix inheritance order for KNX notify (#116600) 2024-05-03 13:35:23 +02:00
Joost Lekkerkerker
0e488ef505 Improve coordinator in Ondilo ico (#116596)
* Improve coordinator in Ondilo ico

* Improve coordinator in Ondilo ico
2024-05-03 13:35:19 +02:00
Ståle Storø Hauknes
fabbe2f28f Fix Airthings BLE model names (#116579) 2024-05-03 13:35:16 +02:00
Tomasz
99ab8d2956 Bump sanix to 1.0.6 (#116570)
dependency version bump
2024-05-03 13:35:12 +02:00
Marcel van der Veldt
523de94184 Fix Matter startup when Matter bridge is present (#116569) 2024-05-03 13:35:09 +02:00
Glenn Waters
65839067e3 Bump elkm1_lib to 2.2.7 (#116564)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-03 13:35:05 +02:00
Glenn Waters
5da6f83d10 Bump upb_lib to 0.5.6 (#116558) 2024-05-03 13:35:02 +02:00
Jan Bouwhuis
ea6a9b8316 Fix MQTT discovery cooldown too short with large setup (#116550)
* Fix MQTT discovery cooldown too short with large setup

* Set to 5 sec

* Only change the discovery cooldown

* Fire immediatly when teh debouncing period is over
2024-05-03 13:34:58 +02:00
J. Nick Koston
49de59432e Add a lock to homekit_controller platform loads (#116539) 2024-05-03 13:34:55 +02:00
GraceGRD
624e4a2b48 Bump opentherm_gw to 2.2.0 (#116527) 2024-05-03 13:34:52 +02:00
MatthewFlamm
4e4ac79595 Fix nws forecast coordinators and remove legacy forecast handling (#115857)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-03 13:34:48 +02:00
Marc Mueller
28ab45d5d8 Fix snapcast test warning (#116687) 2024-05-03 13:29:05 +02:00
Marc Mueller
15b24dfbc2 Fix fyta test warning (#116688) 2024-05-03 13:28:36 +02:00
Marcel van der Veldt
217795865b Fix Matter startup when Matter bridge is present (#116569) 2024-05-03 13:27:01 +02:00
Maciej Bieniek
309b3451b6 Move NAM Data Update Coordinator to the coordinator module (#116686)
Move Data Update Coordinator to the coordinator module

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-03 13:13:56 +02:00
Felipe Martins Diel
453ce0fc4e Fix BroadlinkRemote._learn_command() (#116692) 2024-05-03 13:11:22 +02:00
Galorhallen
fd398a3b3c Bump govee-light-local library and fix wrong information for Govee lights (#116651) 2024-05-03 13:07:45 +02:00
Marc Mueller
4a2b595cc8 Fix fyta test timezone handling (#116689) 2024-05-03 13:07:12 +02:00
MatthewFlamm
6413376ccb Fix nws forecast coordinators and remove legacy forecast handling (#115857)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-03 13:06:40 +02:00
J. Nick Koston
ee7f818fcd Block dreame_vacuum versions older than 1.0.4 (#116673) 2024-05-03 12:17:01 +02:00
J. Nick Koston
2b2b46c774 Bump habluetooth to 3.0.1 (#116663) 2024-05-03 12:15:51 +02:00
Maciej Bieniek
395fe0f47f Bump imgw_pib to version 1.0.1 (#116630)
Bump imgw_pib to version 1.0.1

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-03 11:44:51 +02:00
Jan Bouwhuis
84308c9e53 Add title feature to notify entity platform (#116426)
* Add title feature to notify entity platform

* Add overload variants

* Remove overloads, update signatures

* Improve test coverage

* Apply suggestions from code review

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

* Do not use const

* fix typo

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-03 11:17:28 +02:00
J. Nick Koston
ecdad19296 Drop pyserial-asyncio from zha (#116638) 2024-05-03 02:12:28 -05:00
Erik Montnemery
27fcf72275 Convert history tests to use async API (#116447)
* Convert history tests to use async API

* Add new fixture to help patch recorder

* Modify

* Modify

* Update tests/conftest.py

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

* Rename fixture

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-03 08:14:46 +02:00
Allen Porter
897794f53b Clean up small changes from OpenAI conversation entity change (#116395)
Small cleanups in OpenAI conversation
2024-05-02 19:38:12 -05:00
J. Nick Koston
c07f02534b Migrate bluetooth to use the singleton helper (#116629) 2024-05-02 19:35:16 -05:00
puddly
007b15dc8b Bump ZHA dependency bellows to 0.38.4 (#116660)
Bump ZHA dependencies

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-05-02 19:31:28 -05:00
Marc-Olivier Arsenault
0e23d0439b Add ecobee ventilator 20 min timer (#115969)
* add 20 min timer Ecobee

* modify local value with estimated time

* add ecobee test switch

* removed manual setting of data

* Add no throttle updates

* add more test cases

* move timezone calculation in update function

* update attribute based on feedback

* use timezone for time comparaison

* add location data to tests

* remove is_on function

* update python-ecobee-api lib

* remove uncessary checks

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-03 02:08:25 +02:00
Glenn Waters
a3791fde09 Bump env_canada lib to 0.6.2 (#116662) 2024-05-02 18:17:41 -05:00
J. Nick Koston
43a0c880eb Bump habluetooth to 2.8.1 (#116661) 2024-05-02 18:15:56 -05:00
Jan Bouwhuis
5ddf21e4da Cleanup MQTT sensor last_reset_topic config parameter a year after removal (#116657) 2024-05-03 00:04:58 +02:00
Erik Montnemery
b013d6ade9 Fix flaky hassio test (#116658) 2024-05-02 16:24:14 -05:00
J. Nick Koston
a1a314f63a Replace pyserial-asyncio with pyserial-asyncio-fast in serial (#116636) 2024-05-02 16:23:47 -05:00
Jan Bouwhuis
cbf853a84f Improve docstring on roborock image entity method (#116654)
* Improve docstring on roborock image entity method

* Update homeassistant/components/roborock/image.py

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

* More line breaks

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-02 23:09:52 +02:00
Jan Bouwhuis
2ec9728edb Cleanup unused class attr for MQTT config flow (#116653) 2024-05-02 23:09:16 +02:00
Jon Deeming
949ef49c09 Add vesync Vital 100S UK & EU Model mappings (#115948)
Add Vital 100S UK & EU Model mappings, fixes devices not being retrieved via VeSync APIs, using existing 100S device
2024-05-02 22:57:28 +02:00
Jan Bouwhuis
41b688645a Refactor group state logic (#116318)
* Refactor group state logic

* Fix

* Add helper and tests for groups with entity platforms multiple ON states

* Adress comments

* Do not store object and avoid linear search

* User dataclass, cleanup multiline ternary

* Add test cases for grouped groups

* Remove dead code

* typo in comment

* Update metjod and module docstr
2024-05-02 21:55:46 +02:00
Marc Mueller
8e7026d643 Use runtime_data for airnow (#116619) 2024-05-02 21:00:05 +02:00
Marc Mueller
f2b7733e8c Use runtime_data for airthings (#116622)
Co-authored-by: Matthias Alphart <farmio@alphart.net>
2024-05-02 20:59:34 +02:00
Marc Mueller
1c65aacde5 Use runtime_data for airq (#116620) 2024-05-02 20:58:37 +02:00
Jan Bouwhuis
bedd5c1cef Cleanup removed MQTT broker settings (#116633) 2024-05-02 20:37:21 +02:00
Robert Svensson
ecc431e231 Bump aiounifi to v77 (#116639) 2024-05-02 19:53:17 +02:00
Marc Mueller
3133dea803 Use runtime_data for aftership (#116618) 2024-05-02 18:38:52 +02:00
Marc Mueller
d19dac7290 Use runtime_data for airtouch5 (#116625) 2024-05-02 18:36:35 +02:00
Kevin Stillhammer
bf709bae9c Bump pywaze to 1.0.1 (#116621)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-02 09:54:06 -05:00
Marc Mueller
0977ad017d Use runtime_data for airthings_ble (#116623)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-02 09:38:01 -05:00
Ståle Storø Hauknes
adfd63be8c Bump Airthings BLE to 0.8.0 (#116616)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-02 09:37:02 -05:00
Maciej Bieniek
37d9ed899d Add binary_sensor platform to IMGW-PIB integration (#116624)
* Add binary_sensor platform

* Add tests

* Remove state attributes

* Remove attrs from strings.json

* Use base entity class

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-02 16:16:26 +02:00
Marc Mueller
1ec7a515d2 Add constraint for tuf (#116627) 2024-05-02 09:12:26 -05:00
Joost Lekkerkerker
a2bd045c9d Improve coordinator in Ondilo ico (#116596)
* Improve coordinator in Ondilo ico

* Improve coordinator in Ondilo ico
2024-05-02 15:57:47 +02:00
Marc Mueller
1fc8fdf9ff Use runtime_data for august (#116610) 2024-05-02 07:39:02 -05:00
Marc Mueller
ef242f2883 Use runtime_data for bond (#116611) 2024-05-02 07:38:59 -05:00
Marc Mueller
6bb2ab519f Use runtime_data for co2signal (#116612) 2024-05-02 14:04:21 +02:00
Matthias Alphart
70ae082281 Use entry.runtime_data in Fronius (#116604) 2024-05-02 13:42:48 +02:00
Marc Mueller
63a45035dd Use runtime_data for ambient_station (#116608) 2024-05-02 13:42:16 +02:00
Marc Mueller
5e8c9d66fb Use runtime_data for airvisual_pro (#116607) 2024-05-02 13:41:32 +02:00
Marc Mueller
64d9fac6db Use runtime_data for acmeda (#116606) 2024-05-02 13:40:49 +02:00
Matthias Alphart
8eb1970721 Fix inheritance order for KNX notify (#116600) 2024-05-02 11:44:32 +02:00
Franck Nijhof
10bc66ac77 Merge branch 'master' into dev 2024-05-02 11:22:38 +02:00
blob810
1170ce1296 Add shutter tilt support for Shelly Wave Shutter QNSH-001P10 (#116211)
* Add shutter tilt support for Shelly Wave Shutter QNSH-001P10

* Add shelly_europe_ltd_qnsh_001p10_state.json fixture

* Update test_discovery.py

* Load shelly wave shutter 001p10 node fixture

* Update test_discovery.py

Check if entity of first node exists.

* Update test_discovery.py

Add additional comments

* Clean whitespace

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-02 11:02:35 +02:00
dependabot[bot]
71c5f33e69 Bump codecov/codecov-action from 4.3.0 to 4.3.1 (#116592)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.3.0 to 4.3.1.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4.3.0...v4.3.1)

---
updated-dependencies:
- dependency-name: codecov/codecov-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-05-02 10:24:36 +02:00
dependabot[bot]
9c3a4c5365 Bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#115399)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-05-02 10:18:44 +02:00
Thomas55555
86637f7171 Address late review for Husqvarna Automower (#116536)
* Address late review for Husqvarna Automower

* fix wrong base entity
2024-05-02 10:05:45 +02:00
David Knowles
67e199fb2f Bump pydrawise to 2024.4.1 (#116449)
* Bump pydrawise to 2024.4.1

* Fix typing errors

* Use assert instead of cast

* Remove unused import
2024-05-02 07:56:27 +02:00
Glenn Waters
62a87b8430 Bump elkm1_lib to 2.2.7 (#116564)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-05-01 19:51:04 -05:00
J. Nick Koston
657c9ec25b Add a lock to homekit_controller platform loads (#116539) 2024-05-01 19:23:43 -05:00
Ståle Storø Hauknes
713ce0dd17 Fix Airthings BLE model names (#116579) 2024-05-01 19:19:40 -05:00
Tomasz
afbe0ce096 Bump sanix to 1.0.6 (#116570)
dependency version bump
2024-05-02 00:21:40 +02:00
Marc Mueller
2cb3a31db1 Improve fitbit generic coordinator typing (#116562) 2024-05-02 00:00:47 +02:00
Marc Mueller
86f96db9b0 Improve asuswrt decorator typing (#116563) 2024-05-02 00:00:30 +02:00
GraceGRD
aa1af37d1b Bump opentherm_gw to 2.2.0 (#116527) 2024-05-01 16:13:09 -05:00
Marc Mueller
8bc214b185 Improve airly generic coordinator typing (#116561) 2024-05-01 22:41:11 +02:00
Marc Mueller
bd24ce8d4d Improve tankerkoenig generic coordinator typing (#116560) 2024-05-01 22:33:07 +02:00
Glenn Waters
fa920fd910 Bump upb_lib to 0.5.6 (#116558) 2024-05-01 15:32:56 -05:00
J. Nick Koston
041456759f Remove duplicate mid handling in MQTT (#116531) 2024-05-01 15:18:44 -05:00
Joost Lekkerkerker
e68901235b Store runtime data in entry in Analytics Insights (#116441) 2024-05-01 22:13:38 +02:00
G Johansson
3bf67f3ddd Use config entry runtime data in Trafikverket Train (#116556) 2024-05-01 22:08:19 +02:00
G Johansson
b089f89f14 Use config entry runtime data in Trafikverket Ferry (#116557) 2024-05-01 22:05:47 +02:00
G Johansson
5e9a864f5b Use config entry runtime data in Sensibo (#116530)
* Use config entry runtime data in Sensibo

* Add typing

* Fixes coordinator

* Move import
2024-05-01 22:02:36 +02:00
G Johansson
b2c1cd3e2a Use config entry runtime data in Trafikverket Camera (#116552) 2024-05-01 21:59:07 +02:00
G Johansson
6cb703aa1d Use config entry runtime data in Trafikverket Weather (#116554) 2024-05-01 21:58:21 +02:00
Michael
054fb5af31 Store runtime data inside the config entry in PegelOnline (#116534) 2024-05-01 21:54:05 +02:00
Michael
a4139f1a61 Store runtime data inside the config entry in Proximity (#116533) 2024-05-01 21:51:47 +02:00
Michael
ad61e5f237 Store runtime data inside the config entry in Tankerkoenig (#116532) 2024-05-01 21:48:31 +02:00
Marc Mueller
a25e202ef0 Use runtime data for FritzBox Call Monitor (#116553) 2024-05-01 21:27:34 +02:00
Jan Bouwhuis
7fd60ddba4 Fix MQTT discovery cooldown too short with large setup (#116550)
* Fix MQTT discovery cooldown too short with large setup

* Set to 5 sec

* Only change the discovery cooldown

* Fire immediatly when teh debouncing period is over
2024-05-01 21:19:55 +02:00
G Johansson
ef2ae7b600 Use runtime data in Yale Smart Alarm (#116548) 2024-05-01 21:13:29 +02:00
Maciej Bieniek
ae6a497cd1 Add diagnostics platform to IMGW-PIB integration (#116551)
* Add diagnostics

* Add tests

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-01 21:06:22 +02:00
Michael
c5cac8fed4 Store runtime data inside the config entry in AVM Fritz!Smarthome (#116523) 2024-05-01 20:51:39 +02:00
Franck Nijhof
2f47668422 2024.5.0 (#116538) 2024-05-01 20:47:10 +02:00
J. Nick Koston
343d97527c Ensure mqtt handler is restored if its already registered in bootstrap test (#116549) 2024-05-01 20:23:14 +02:00
J. Nick Koston
f73c55b434 Ensure mqtt handler is restored if its already registered in bootstrap test (#116549) 2024-05-01 20:22:18 +02:00
J. Nick Koston
21466180aa Ensure mock mqtt handler is cleaned up after test_bootstrap_dependencies (#116544) 2024-05-01 19:46:54 +02:00
J. Nick Koston
573cd8e94a Ensure mock mqtt handler is cleaned up after test_bootstrap_dependencies (#116544) 2024-05-01 19:45:47 +02:00
Franck Nijhof
858874f0da Bump version to 2024.5.0 2024-05-01 18:59:07 +02:00
Franck Nijhof
1641f24314 Bump version to 2024.5.0b7 2024-05-01 18:32:41 +02:00
J. Nick Koston
e1c08959b0 Fix stop event cleanup when reloading MQTT (#116525) 2024-05-01 18:32:33 +02:00
Marcel van der Veldt
b42f367128 Add blocklist for known Matter devices with faulty transitions (#116524) 2024-05-01 18:32:24 +02:00
Marcel van der Veldt
1db770ab3a Add blocklist for known Matter devices with faulty transitions (#116524) 2024-05-01 18:30:59 +02:00
J. Nick Koston
0b08ae7e44 Reduce timestamp function call overhead in core states (#116517)
* Reduce timestamp function call overhead in core states

The recorder or the websocket_api will always call the timestamps, so we will set the timestamp values when creating the State to avoid the function call overhead in the property we know will always be called.

* Reduce timestamp function call overhead in core states

The recorder or the websocket_api will always call the timestamps, so we will set the timestamp values when creating the State to avoid the function call overhead in the property we know will always be called.

* reduce scope of change since last_reported is not called in websocket_api

* reduce scope of change since last_reported is not called in websocket_api
2024-05-01 11:04:20 -05:00
J. Nick Koston
25df41475a Simplify MQTT mid handling (#116522)
* Simplify MQTT mid handling

switch from asyncio.Event to asyncio.Future

* preen

* preen

* preen
2024-05-01 11:03:10 -05:00
J. Nick Koston
2fe17acaf7 Bump yalexs to 3.1.0 (#116511)
changelog: https://github.com/bdraco/yalexs/compare/v3.0.1...v3.1.0
2024-05-01 11:01:54 -05:00
Maciej Bieniek
9e8f7b5618 Store GIOS runtime data in entry (#116510)
Use entry.runtime_data

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-01 17:28:20 +02:00
J. Nick Koston
2ad6353bf8 Fix stop event cleanup when reloading MQTT (#116525) 2024-05-01 10:22:50 -05:00
G Johansson
51f9e661a4 Workday only update once a day (#116419)
* Workday only update once a day

* Fix tests
2024-05-01 17:11:47 +02:00
Franck Nijhof
1e4e891f0b Bump version to 2024.5.0b6 2024-05-01 16:24:03 +02:00
Joost Lekkerkerker
15aa8949ee Improve scrape strings (#116519) 2024-05-01 16:23:54 +02:00
J. Nick Koston
780a6b314f Fix blocking I/O to import modules in mysensors (#116516) 2024-05-01 16:23:50 +02:00
Marcel van der Veldt
082721e1ab Bump python matter server library to 5.10.0 (#116514) 2024-05-01 16:23:47 +02:00
J. Nick Koston
4312f36dbe Fix non-thread-safe operations in ihc (#116513) 2024-05-01 16:23:43 +02:00
puddly
f89677cd76 Bump ZHA dependencies (#116509) 2024-05-01 16:23:39 +02:00
Joost Lekkerkerker
b7a138b02a Improve scrape strings (#116519) 2024-05-01 16:22:25 +02:00
puddly
07e608d815 Bump ZHA dependencies (#116509) 2024-05-01 16:00:17 +02:00
Marcel van der Veldt
0b340e1477 Bump python matter server library to 5.10.0 (#116514) 2024-05-01 15:42:53 +02:00
J. Nick Koston
c39d3b501e Fix non-thread-safe operations in ihc (#116513) 2024-05-01 15:23:33 +02:00
J. Nick Koston
61a7bc7aab Fix blocking I/O to import modules in mysensors (#116516) 2024-05-01 15:22:50 +02:00
Maciej Bieniek
c46be022c8 Add IMGW-PIB integration (#116468)
* Add sensor platform

* Add tests

* Fix icons.json

* Use entry.runtime_data

* Remove validate_input function

* Change abort reason to cannot_connect

* Remove unnecessary square brackets

* Move _attr_attribution outside the constructor

* Use native_value property

* Use is with ENUMs

* Import SOURCE_USER

* Change test name

* Use freezer.tick

* Tests refactoring

* Remove test_setup_entry

* Test creating entry after error

* Add missing async_block_till_done

* Fix translation key

* Remove coordinator type annotation

* Enable strict typing

* Assert config entry unique_id

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-05-01 14:38:36 +02:00
Franck Nijhof
0eb734b6bf Bump version to 2024.5.0b5 2024-05-01 13:41:34 +02:00
Bram Kragten
ad16c5bc25 Update frontend to 20240501.0 (#116503) 2024-05-01 13:41:18 +02:00
max2697
fabc3d751e Bump opower to 0.4.4 (#116489) 2024-05-01 13:40:25 +02:00
Luke Lashley
31cfabc44d Fix roborock image crashes (#116487) 2024-05-01 13:40:22 +02:00
J. Nick Koston
7d51556e1e Hold a lock to prevent concurrent setup of config entries (#116482) 2024-05-01 13:40:18 +02:00
Bram Kragten
ac24105777 Update frontend to 20240430.0 (#116481) 2024-05-01 13:40:15 +02:00
Jan Bouwhuis
3d86577cab Add test MQTT subscription is completed when birth message is sent (#116476) 2024-05-01 13:40:12 +02:00
J. Nick Koston
6971898a43 Fix non-thread-safe operation in roon volume callback (#116475) 2024-05-01 13:40:08 +02:00
puddly
c54d53b88a Change SkyConnect integration type back to hardware and fix multi-PAN migration bug (#116474)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-05-01 13:40:05 +02:00
J. Nick Koston
c574d86ddb Fix local_todo blocking the event loop (#116473) 2024-05-01 13:40:01 +02:00
J. Nick Koston
3d13345575 Ensure MQTT resubscribes happen before birth message (#116471) 2024-05-01 13:39:58 +02:00
J. Nick Koston
c77cef0391 Bump bluetooth-adapters to 0.19.1 (#116465) 2024-05-01 13:39:55 +02:00
Joost Lekkerkerker
3351b82667 Fix zoneminder async v2 (#116451) 2024-05-01 13:39:52 +02:00
Richard Kroegel
78d19854dd Bump bimmer_connected to 0.15.2 (#116424)
Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-05-01 13:39:48 +02:00
Marcel van der Veldt
c0d529b072 Some fixes for the Matter light discovery schema (#116108)
* Fix discovery schema for light platform

* fix switch platform discovery schema

* extend light tests

* Update switch.py

* clarify comment

* use parameter for supported_color_modes
2024-05-01 13:39:16 +02:00
Bram Kragten
53d5960f49 Update frontend to 20240501.0 (#116503) 2024-05-01 12:53:45 +02:00
Luke Lashley
835ce919f4 Fix roborock image crashes (#116487) 2024-05-01 11:56:02 +02:00
Marcel van der Veldt
8230bfcf8f Some fixes for the Matter light discovery schema (#116108)
* Fix discovery schema for light platform

* fix switch platform discovery schema

* extend light tests

* Update switch.py

* clarify comment

* use parameter for supported_color_modes
2024-05-01 11:46:52 +02:00
Joost Lekkerkerker
ac608ef86a Remove unused argument from DWD coordinator (#116496) 2024-05-01 11:19:26 +02:00
wittypluck
7a10959e58 Use websocket client to test device removal in Unifi (#116309)
* Use websocket client to test device removal from registry

* Rename client to ws_client to avoid confusion with Unifi clients

* Use remove_device helper
2024-05-01 08:46:03 +02:00
max2697
58c7a97149 Bump opower to 0.4.4 (#116489) 2024-05-01 07:11:47 +02:00
J. Nick Koston
6cf1c5c1f2 Hold a lock to prevent concurrent setup of config entries (#116482) 2024-04-30 18:47:12 -05:00
Jan Bouwhuis
3c7cbf5794 Add test MQTT subscription is completed when birth message is sent (#116476) 2024-04-30 18:15:46 -05:00
J. Nick Koston
2401580b6f Make a copy of capability_attributes instead of making a new dict (#116477) 2024-04-30 17:54:33 -05:00
Bram Kragten
d39707ee4f Update frontend to 20240430.0 (#116481) 2024-05-01 00:46:25 +02:00
Richard Kroegel
0d0865e783 Bump bimmer_connected to 0.15.2 (#116424)
Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-04-30 22:49:28 +02:00
J. Nick Koston
d524baafd2 Fix non-thread-safe operation in roon volume callback (#116475) 2024-04-30 22:47:27 +02:00
puddly
963d8d6a76 Change SkyConnect integration type back to hardware and fix multi-PAN migration bug (#116474)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-30 22:47:17 +02:00
Robert Resch
1641df18ce Store runtime data in entry in Ecovacs (#116445) 2024-04-30 22:44:56 +02:00
J. Nick Koston
2e9b1916c0 Ensure MQTT resubscribes happen before birth message (#116471) 2024-04-30 22:31:40 +02:00
J. Nick Koston
6c446b4e59 Fix local_todo blocking the event loop (#116473) 2024-04-30 22:31:09 +02:00
G Johansson
23a8b29bfe Bring sensibo to full coverage (again) (#116469) 2024-04-30 21:31:52 +02:00
Christopher Bailey
c7a84b1c7b Bump pydantic constraint (#116401)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-30 13:13:56 -05:00
J. Nick Koston
9995207817 Avoid re-encoding the message id as bytes for every event/state change (#116460) 2024-04-30 12:02:28 -05:00
J. Nick Koston
fbe1781ebc Bump bluetooth-adapters to 0.19.1 (#116465) 2024-04-30 11:53:55 -05:00
J. Nick Koston
6be2b334d8 Avoid netloc ipaddress re-encoding to construct ingress urls (#116431) 2024-04-30 11:44:25 -05:00
J. Nick Koston
ff104f54b5 Small performance improvements to ingress forwarding (#116457) 2024-04-30 11:43:58 -05:00
andarotajo
1e63665bf2 Mock dwdwfsapi in all tests that use it (#116414)
* Mock dwdwfsapi in all tests

* Add mocking for config entries

* Fix assertions in init test
2024-04-30 18:08:15 +02:00
epenet
a440783208 Store runtime data in entry in renault (#116454) 2024-04-30 17:39:03 +02:00
epenet
0005f8400d Move Renault service registration (#116459)
* Move Renault service registration

* Hassfest
2024-04-30 17:10:40 +02:00
Maciej Bieniek
f9b1b371e9 Remove entity description mixin in NextDNS (#116456)
Remove entity description mixin

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-30 16:05:49 +02:00
J. Nick Koston
feb6cfdd56 Add pydantic to skip-binary (#116406) 2024-04-30 09:00:06 -05:00
epenet
8291769361 Store runtime data in entry in onewire (#116450)
* Store runtime data in entry in onewire

* Adjust
2024-04-30 15:55:20 +02:00
Joost Lekkerkerker
a12301f696 Fix zoneminder async v2 (#116451) 2024-04-30 08:07:15 -05:00
Joost Lekkerkerker
6f406603a6 Store runtime data in entry in Withings (#116439)
* Add entry runtime data to Withings

* Store runtime data in entry in Withings

* Fix

* Fix

* Update homeassistant/components/withings/coordinator.py

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>

---------

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-04-30 13:00:11 +02:00
epenet
ad84ff18eb Use remove_device helper in tests (1/2) (#116240)
* Use remove_device helper in tests

* Update test_tag.py

* Update test_tag.py
2024-04-30 12:52:33 +02:00
epenet
a3942e019b Use remove_device helper in tests (2/2) (#116442)
Use remove_device helper in tests (part 2)
2024-04-30 12:50:35 +02:00
Franck Nijhof
5b7e09b886 Bump version to 2024.5.0b4 2024-04-30 12:47:51 +02:00
Joost Lekkerkerker
7cbb2892c1 Add user id to coordinator name in Withings (#116440)
* Add user id to coordinator name in Withings

* Add user id to coordinator name in Withings

* Fix
2024-04-30 12:47:44 +02:00
Joost Lekkerkerker
5510315b87 Fix zoneminder async (#116436) 2024-04-30 12:47:41 +02:00
Michael
bd8ded1e55 Fix error handling in Shell Command integration (#116409)
* raise proper HomeAssistantError on command timeout

* raise proper HomeAssistantError on non-utf8 command output

* add error translation and test it

* Update homeassistant/components/shell_command/strings.json

* Update tests/components/shell_command/test_init.py

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-04-30 12:47:38 +02:00
Joost Lekkerkerker
1a1dfbd489 Remove semicolon in Modbus (#116399) 2024-04-30 12:47:34 +02:00
Graham Wetzler
3477c81ed1 Bump smart_meter_texas to 0.5.5 (#116321) 2024-04-30 12:47:31 +02:00
Collin Fair
5d9abf9ac5 Fix stale prayer times from islamic-prayer-times (#115683) 2024-04-30 12:47:28 +02:00
Joost Lekkerkerker
8843780aab Set Synology camera device name as entity name (#109123) 2024-04-30 12:47:24 +02:00
Joost Lekkerkerker
d84d2109c2 Add user id to coordinator name in Withings (#116440)
* Add user id to coordinator name in Withings

* Add user id to coordinator name in Withings

* Fix
2024-04-30 12:41:34 +02:00
Marc Mueller
dace9b32de Store runtime data inside ConfigEntry (#115669) 2024-04-30 11:29:43 +02:00
dontinelli
258e20bfc4 Update fyta async_migrate_entry (#116433)
Update async_migrate_entry __init__.py
2024-04-30 10:02:31 +02:00
Joost Lekkerkerker
fd8287bc15 Set Synology camera device name as entity name (#109123) 2024-04-30 09:49:35 +02:00
Joost Lekkerkerker
59d618bed1 Fix zoneminder async (#116436) 2024-04-30 09:48:58 +02:00
Graham Wetzler
b777947978 Bump smart_meter_texas to 0.5.5 (#116321) 2024-04-30 09:47:06 +02:00
Collin Fair
7184543f12 Fix stale prayer times from islamic-prayer-times (#115683) 2024-04-30 09:18:09 +02:00
G Johansson
822646749d Remove entity category "system" check from entity registry (#116412) 2024-04-30 04:01:12 +02:00
Marc Mueller
8233b621f0 Update pytest to 8.2.0 (#116379) 2024-04-29 21:50:11 +02:00
Guy Sie
f5700279d3 Add Open Home Foundation link (#116405) 2024-04-29 21:28:47 +02:00
Robert Resch
630ddd6a8c Revert "Remove strict connection" (#116416) 2024-04-29 21:26:40 +02:00
Thomas55555
f001e8524a Add Workarea cutting height to Husqvarna Automower (#116115)
* add work_area cutting_height

* add

* add default work_area

* ruff/mypy

* better names

* fit to api bump

* tweaks

* more tweaks

* layout

* address review

* change entity name

* tweak test

* cleanup entities

* fix for mowers with no workareas

* assure not other entities get deleted

* sort & remove one callback

* remove typing callbacks

* rename entity to entity_entry
2024-04-29 21:10:45 +02:00
Michael
c5953045d4 Add error translations to AVM Fritz!Tools (#116413) 2024-04-29 20:48:54 +02:00
rale
a6fdd4e1e2 Report webOS media player state (#113774)
* support for webos media player state

* add test coverage and don't use assumed state if media player state is available

* fallback to assumed state if media state isn't available

Co-authored-by: Shay Levy <levyshay1@gmail.com>

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2024-04-29 21:43:46 +03:00
Michael
50d83bbdbf Fix error handling in Shell Command integration (#116409)
* raise proper HomeAssistantError on command timeout

* raise proper HomeAssistantError on non-utf8 command output

* add error translation and test it

* Update homeassistant/components/shell_command/strings.json

* Update tests/components/shell_command/test_init.py

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-04-29 20:19:14 +02:00
Joost Lekkerkerker
d1c58467c5 Remove semicolon in Modbus (#116399) 2024-04-29 20:13:36 +02:00
Franck Nijhof
a7faf2710f Bump version to 2024.5.0b3 2024-04-29 19:44:22 +02:00
Bram Kragten
06e032b838 Update frontend to 20240429.0 (#116404) 2024-04-29 19:44:12 +02:00
Robert Resch
8f2d10c49a Remove strict connection (#116396) 2024-04-29 19:44:09 +02:00
Steve Easley
39d923dc02 Fix jvcprojector command timeout with some projectors (#116392)
* Fix projector timeout in pyprojector lib v1.0.10

* Fix projector timeout by increasing time between power command and refresh.

* Bump jvcprojector lib to ensure unknown power states are handled
2024-04-29 19:44:06 +02:00
Mr. Bubbles
99e3236fb7 Deprecate YAML configuration of Habitica (#116374)
Add deprecation issue for yaml import
2024-04-29 19:44:03 +02:00
dontinelli
7ee79002b3 Store access token in entry for Fyta (#116260)
* save access_token and expiration date in ConfigEntry

* add MINOR_VERSION and async_migrate_entry

* shorten reading of expiration from config entry

* add additional consts and test for config entry migration

* Update homeassistant/components/fyta/coordinator.py

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

* Update homeassistant/components/fyta/__init__.py

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

* omit check for datetime data type

* Update homeassistant/components/fyta/__init__.py

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

* Update homeassistant/components/fyta/coordinator.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 19:43:59 +02:00
dontinelli
ac45d20e1f Bump fyta_cli to 0.4.1 (#115918)
* bump fyta_cli to 0.4.0

* Update PLANT_STATUS and add PLANT_MEASUREMENT_STATUS

* bump fyta_cli to v0.4.0

* minor adjustments of states to API documentation
2024-04-29 19:43:55 +02:00
Robert Resch
dfc198cae0 Remove strict connection (#116396) 2024-04-29 19:33:31 +02:00
Bram Kragten
b3c1a86194 Update frontend to 20240429.0 (#116404) 2024-04-29 18:34:20 +02:00
Steve Easley
420d6a2d9d Fix jvcprojector command timeout with some projectors (#116392)
* Fix projector timeout in pyprojector lib v1.0.10

* Fix projector timeout by increasing time between power command and refresh.

* Bump jvcprojector lib to ensure unknown power states are handled
2024-04-29 18:25:16 +02:00
dontinelli
180e178a69 Store access token in entry for Fyta (#116260)
* save access_token and expiration date in ConfigEntry

* add MINOR_VERSION and async_migrate_entry

* shorten reading of expiration from config entry

* add additional consts and test for config entry migration

* Update homeassistant/components/fyta/coordinator.py

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

* Update homeassistant/components/fyta/__init__.py

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

* omit check for datetime data type

* Update homeassistant/components/fyta/__init__.py

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

* Update homeassistant/components/fyta/coordinator.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 17:09:07 +02:00
dontinelli
8ed10c7c4f Bump fyta_cli to 0.4.1 (#115918)
* bump fyta_cli to 0.4.0

* Update PLANT_STATUS and add PLANT_MEASUREMENT_STATUS

* bump fyta_cli to v0.4.0

* minor adjustments of states to API documentation
2024-04-29 17:08:36 +02:00
J. Nick Koston
8bfcaf3524 Add service to log all the current asyncio Tasks to the profiler (#116389)
* Add service to log all the current asyncio Tasks to the profiler

I have been helping users look for a task leaks, and need a
way to examine tasks at run time as trying to get someone to
run Home Assistant and attach aiomonitor is too difficult in
many cases.

* cover
2024-04-29 10:03:35 -05:00
J. Nick Koston
f1e5bbcbca Fix grammar in internal function comments (#116387)
https://github.com/home-assistant/core/pull/116339#discussion_r1582610474
2024-04-29 17:01:15 +02:00
Mr. Bubbles
3d750414f1 Deprecate YAML configuration of Habitica (#116374)
Add deprecation issue for yaml import
2024-04-29 17:00:13 +02:00
Joost Lekkerkerker
eec1dafe11 Fix typo in Switchbot cloud (#116388) 2024-04-29 16:58:02 +02:00
mkmer
f5b4637da8 Address late review in Honeywell (#115702)
Pass honeywell_data
2024-04-29 16:16:46 +02:00
Allen Porter
f1dda8ef63 Add Ollama Conversation Agent Entity (#116363)
* Add ConversationEntity to OLlama integration

* Add assist_pipeline dependencies
2024-04-29 10:15:46 -04:00
Paulus Schoutsen
0a9ac6b7a9 Bump version to 2024.5.0b2 2024-04-29 14:09:46 +00:00
J. Nick Koston
6fe20be095 Fix usb scan delaying shutdown (#116390)
If the integration page is accessed right before shutdown it
can trigger the usb scan debouncer which was not marked as
background so shutdown would wait for the scan to finish
2024-04-29 14:09:41 +00:00
Shay Levy
a61650e38f Prevent Shelly raising in a task (#116355)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-29 14:09:40 +00:00
J. Nick Koston
087b6533cd Fix another case of homeassistant_alerts delaying shutdown (#116352) 2024-04-29 14:09:39 +00:00
J. Nick Koston
9445b84ab5 Fix shelly delaying shutdown (#116346) 2024-04-29 14:09:39 +00:00
J. Nick Koston
88015986ad Fix bond update delaying shutdown when push updated are not available (#116344)
If push updates are not available, bond could delay shutdown. The update
task should have been marked as a background task
2024-04-29 14:09:38 +00:00
J. Nick Koston
0cec378126 Fix some flapping sonos tests (#116343) 2024-04-29 14:09:37 +00:00
Joost Lekkerkerker
5ca91190f2 Fix Netatmo indoor sensor (#116342)
* Debug netatmo indoor sensor

* Debug netatmo indoor sensor

* Fix
2024-04-29 14:09:36 +00:00
J. Nick Koston
c533ca50b1 Fix homeassistant_alerts delaying shutdown (#116340) 2024-04-29 14:09:35 +00:00
J. Nick Koston
66538ba34e Add thread safety checks to async_create_task (#116339)
* Add thread safety checks to async_create_task

Calling async_create_task from a thread almost always results in an
fast crash. Since most internals are using async_create_background_task
or other task APIs, and this is the one integrations seem to get wrong
the most, add a thread safety check here

* Add thread safety checks to async_create_task

Calling async_create_task from a thread almost always results in an
fast crash. Since most internals are using async_create_background_task
or other task APIs, and this is the one integrations seem to get wrong
the most, add a thread safety check here

* missed one

* Update homeassistant/core.py

* fix mocks

* one more internal

* more places where internal can be used

* more places where internal can be used

* more places where internal can be used

* internal one more place since this is high volume and was already eager_start
2024-04-29 14:09:34 +00:00
J. Nick Koston
6786479a81 Fix sonos events delaying shutdown (#116337) 2024-04-29 14:09:33 +00:00
J. Nick Koston
c4c21bc8ea Fix bluetooth adapter discovery delaying startup and shutdown (#116335) 2024-04-29 14:09:33 +00:00
J. Nick Koston
c3cb79e0e9 Fix wemo push updates delaying shutdown (#116333) 2024-04-29 14:09:32 +00:00
J. Nick Koston
1309fc5eda Fix unifiprotect delaying shutdown if websocket if offline (#116331) 2024-04-29 14:09:31 +00:00
J. Nick Koston
624eed4b83 Fix august delaying shutdown (#116329) 2024-04-29 14:09:30 +00:00
J. Nick Koston
d1e7471094 Prevent setup retry from delaying shutdown (#116328) 2024-04-29 14:09:29 +00:00
J. Nick Koston
f2a101128f Make discovery flow tasks background tasks (#116327) 2024-04-29 14:09:28 +00:00
Jan Bouwhuis
bfcffb5cb1 Fix no will published when mqtt is down (#116319) 2024-04-29 14:09:27 +00:00
hopkins-tk
abf45a0e0c Fix Aseko binary sensors names (#116251)
* Fix Aseko binary sensors names

* Fix add missing key to strings.json

* Fix remove setting shorthand translation key attribute

* Update homeassistant/components/aseko_pool_live/strings.json

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 14:09:26 +00:00
J. Nick Koston
2c46db16d4 Fix script in restart mode that is fired from the same trigger (#116247) 2024-04-29 14:09:25 +00:00
Martin Hjelmare
6d8066afa2 Add matter during onboarding (#116163)
* Add matter during onboarding

* test_zeroconf_not_onboarded_running

* test_zeroconf_not_onboarded_installed

* test_zeroconf_not_onboarded_not_installed

* test_zeroconf_discovery_not_onboarded_not_supervisor

* Clean up

* Add udp address

* Test zeroconf udp info too

* test_addon_installed_failures_zeroconf

* test_addon_running_failures_zeroconf

* test_addon_not_installed_failures_zeroconf

* Clean up stale changes

* Set unique id for discovery step

* Fix tests for background flow

* Fix flow running in background

* Test already discovered zeroconf

* Mock unload entry
2024-04-29 14:09:24 +00:00
Marco van 't Wout
ee4f55a5a9 Improve error handling for HTTP errors on Growatt Server (#110633)
* Update dependency growattServer for improved error details

Updating to latest version. Since version 1.3.1 it will raise requests.exceptions.HTTPError for unexpected API responses such as HTTP 405 (rate limiting/firewall)

* Improve error details by raising ConfigEntryAuthFailed

Previous code was returning None which the caller couldn't handle

* Use a more appropiate exception type

* Update homeassistant/components/growatt_server/sensor.py

* Update homeassistant/components/growatt_server/sensor.py

* Fix

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 14:09:23 +00:00
J. Nick Koston
eced3b0f57 Fix usb scan delaying shutdown (#116390)
If the integration page is accessed right before shutdown it
can trigger the usb scan debouncer which was not marked as
background so shutdown would wait for the scan to finish
2024-04-29 10:07:48 -04:00
J. Nick Koston
81d2f5b791 Small cleanups to climate entity feature compat (#116361)
* Small cleanups to climate entity feature compat

Fix some duplicate property fetches, avoid generating a new
enum every time supported_features was fetched if there was
no modifier

* param

* param
2024-04-29 15:43:55 +02:00
Shay Levy
d1f88ffd1e Prevent Shelly raising in a task (#116355)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-29 08:03:57 -05:00
Marc Mueller
8ac493fcf4 Update types packages (#116382) 2024-04-29 14:50:00 +02:00
Marc Mueller
6c9f277bbe Update uv to 0.1.39 (#116381) 2024-04-29 14:48:13 +02:00
Marc Mueller
de65e6b5d1 Update respx to 0.21.1 (#116380) 2024-04-29 14:45:57 +02:00
Marc Mueller
e060e90858 Update pipdeptree to 2.19.0 (#116376) 2024-04-29 14:44:04 +02:00
Marc Mueller
26fad0b786 Update pytest-xdist to 3.6.1 (#116377) 2024-04-29 14:42:57 +02:00
Marc Mueller
fd52348d57 Update freezegun to 1.5.0 (#116375) 2024-04-29 14:40:47 +02:00
Mr. Bubbles
0b8838cab8 Add icons and translations to Habitica (#116204)
* refactor habitica sensors, add strings and icon translations

* Change sensor names

* remove max_health as it is a fixed value

* remove SENSOR_TYPES

* removed wrong sensor

* Move Data coordinator to separate module

* add coordinator.py to coveragerc

* add deprecation warning for task sensors

* remove unused imports and logger

* Revert "add deprecation warning for task sensors"

This reverts commit 9e58053f3bb8b34b8e22d525bfd1ff55610f4581.

* Update homeassistant/components/habitica/strings.json

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

* Update homeassistant/components/habitica/strings.json

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

* Revert "Move Data coordinator to separate module"

This reverts commit f5c8c3c886a868b2ed50ad2098fe3cb1ccc01c62.

* Revert "add coordinator.py to coveragerc"

This reverts commit 8ae07a4786db786a73fc527e525813147d1c5ec4.

* rename Mana max. to Max. mana

* deprecation for yaml import

* move SensorType definition before TASK_TYPES

* Revert "deprecation for yaml import"

This reverts commit 2a1d58ee5ff7d4f1a19b7593cb7f56afde4e1d9d.

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 12:51:38 +02:00
Marco van 't Wout
b426c4133d Improve error handling for HTTP errors on Growatt Server (#110633)
* Update dependency growattServer for improved error details

Updating to latest version. Since version 1.3.1 it will raise requests.exceptions.HTTPError for unexpected API responses such as HTTP 405 (rate limiting/firewall)

* Improve error details by raising ConfigEntryAuthFailed

Previous code was returning None which the caller couldn't handle

* Use a more appropiate exception type

* Update homeassistant/components/growatt_server/sensor.py

* Update homeassistant/components/growatt_server/sensor.py

* Fix

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 12:02:49 +02:00
Martin Hjelmare
0e0ea0017e Add matter during onboarding (#116163)
* Add matter during onboarding

* test_zeroconf_not_onboarded_running

* test_zeroconf_not_onboarded_installed

* test_zeroconf_not_onboarded_not_installed

* test_zeroconf_discovery_not_onboarded_not_supervisor

* Clean up

* Add udp address

* Test zeroconf udp info too

* test_addon_installed_failures_zeroconf

* test_addon_running_failures_zeroconf

* test_addon_not_installed_failures_zeroconf

* Clean up stale changes

* Set unique id for discovery step

* Fix tests for background flow

* Fix flow running in background

* Test already discovered zeroconf

* Mock unload entry
2024-04-29 10:59:36 +02:00
Austin Mroczek
8153ff78bf Add Button for TotalConnect (#114530)
* add button for totalconnect

* test button for totalconnect

* change to zone.can_be_bypassed

* Update homeassistant/components/totalconnect/button.py

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

* Update homeassistant/components/totalconnect/button.py

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

* Update homeassistant/components/totalconnect/button.py

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

* remove unused logging

* Update homeassistant/components/totalconnect/button.py

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

* Update homeassistant/components/totalconnect/button.py

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

* fix button and test

* Revert "bump total_connect_client to 2023.12.1"

This reverts commit 189b7dcd89cf3cc8309dacc92ba47927cfbbdef3.

* bump total_connect_client to 2023.12.1

* use ZoneEntity for Bypass button

* use LocationEntity for PanelButton

* fix typing

* add translation_key for panel buttons

* mock clear_bypass instead of disarm

* use paramaterize

* use snapshot

* sentence case in strings

* remove un-needed stuff

* Update homeassistant/components/totalconnect/button.py

* Apply suggestions from code review

* Fix

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-29 09:47:05 +02:00
Erik Montnemery
0425b7aa6d Reduce scope of test fixtures for the pylint plugin tests (#116207) 2024-04-29 08:21:31 +02:00
J. Nick Koston
381ffe6eed Use built-in aiohttp timeout instead of asyncio.timeout in media_player (#116364)
* Use built-in aiohttp timeout instead of asyncio.timeout in media_player

Avoids having two timeouts running to fetch images

* fix mock
2024-04-29 07:38:40 +02:00
Austin Mroczek
8c73c1e1a5 Bump total_connect_client to 2024.4 (#116360) 2024-04-28 21:02:10 -05:00
J. Nick Koston
164403de20 Add thread safety checks to async_create_task (#116339)
* Add thread safety checks to async_create_task

Calling async_create_task from a thread almost always results in an
fast crash. Since most internals are using async_create_background_task
or other task APIs, and this is the one integrations seem to get wrong
the most, add a thread safety check here

* Add thread safety checks to async_create_task

Calling async_create_task from a thread almost always results in an
fast crash. Since most internals are using async_create_background_task
or other task APIs, and this is the one integrations seem to get wrong
the most, add a thread safety check here

* missed one

* Update homeassistant/core.py

* fix mocks

* one more internal

* more places where internal can be used

* more places where internal can be used

* more places where internal can be used

* internal one more place since this is high volume and was already eager_start
2024-04-28 18:29:00 -04:00
J. Nick Koston
b8ddf51e28 Avoid creating tasks to update universal media player (#116350)
* Avoid creating tasks to update universal media player

Nothing was being awaited in async_update. This entity has polling
disabled and there was no reason to implement manual updates since
the state is always coming from other entities

* manual update
2024-04-28 18:17:26 -04:00
J. Nick Koston
e215270c05 Remove eager_start argument from internal _async_add_hass_job function (#116310) 2024-04-28 16:30:19 -05:00
J. Nick Koston
cdfd0aa7d4 Fix incorrect call to async_schedule_update_ha_state in manual_mqtt (#116348) 2024-04-28 12:55:28 -05:00
J. Nick Koston
66a9430410 Fix incorrect call to async_schedule_update_ha_state in generic_hygrostat (#116349) 2024-04-28 12:55:17 -05:00
J. Nick Koston
48d620ce94 Fix another case of homeassistant_alerts delaying shutdown (#116352) 2024-04-28 12:54:53 -05:00
J. Nick Koston
ab2ea6100c Speed up singleton decorator so it can be used more places (#116292) 2024-04-28 12:11:08 -05:00
epenet
48b1678075 Add test helper to remove device (#116234)
* Add test helper to remove device

* Rename

* Fix signature
2024-04-28 18:50:15 +02:00
J. Nick Koston
3bcce2197c Fix incorrect call to async_schedule_update_ha_state in command_line switch (#116347) 2024-04-28 18:36:01 +02:00
J. Nick Koston
9ca1d204b6 Fix shelly delaying shutdown (#116346) 2024-04-28 11:19:38 -05:00
J. Nick Koston
62ab67376f Fix bond update delaying shutdown when push updated are not available (#116344)
If push updates are not available, bond could delay shutdown. The update
task should have been marked as a background task
2024-04-28 17:57:08 +02:00
J. Nick Koston
ddf58b6905 Fix homeassistant_alerts delaying shutdown (#116340) 2024-04-28 10:36:03 -05:00
Joost Lekkerkerker
7a4aa3c40c Fix Netatmo indoor sensor (#116342)
* Debug netatmo indoor sensor

* Debug netatmo indoor sensor

* Fix
2024-04-28 17:34:27 +02:00
Jan Bouwhuis
986df70fe3 Refactor group setup (#116317)
* Refactor group setup

* Add @callback decorator and remove commented out code

* Keep set, add default on state
2024-04-28 16:32:17 +02:00
J. Nick Koston
ad0aabe9a1 Fix some flapping sonos tests (#116343) 2024-04-28 09:21:32 -05:00
J. Nick Koston
6ccb165d8e Fix bluetooth adapter discovery delaying startup and shutdown (#116335) 2024-04-28 08:57:31 -05:00
J. Nick Koston
bf91ab6e2b Fix sonos events delaying shutdown (#116337) 2024-04-28 08:54:34 -05:00
J. Nick Koston
c3aa238a33 Fix wemo push updates delaying shutdown (#116333) 2024-04-28 08:14:45 -05:00
J. Nick Koston
006040270c Fix august delaying shutdown (#116329) 2024-04-28 08:14:30 -05:00
J. Nick Koston
66e86170b1 Make storage load tasks background tasks to avoid delaying shutdown (#116332) 2024-04-28 08:14:15 -05:00
J. Nick Koston
ce42ad187c Fix unifiprotect delaying shutdown if websocket if offline (#116331) 2024-04-28 08:14:04 -05:00
J. Nick Koston
3f0c0a72db Prevent setup retry from delaying shutdown (#116328) 2024-04-28 08:13:51 -05:00
J. Nick Koston
76639252c9 Make discovery flow tasks background tasks (#116327) 2024-04-28 08:13:37 -05:00
J. Nick Koston
5d59b4cddd Remove unneeded TYPE_CHECKING guard in core async_set (#116311) 2024-04-27 19:34:17 -05:00
Jan Bouwhuis
43dc5415de Fix no will published when mqtt is down (#116319) 2024-04-27 18:42:38 -05:00
J. Nick Koston
50405fae5f Add a cache to _verify_event_type_length_or_raise (#116312)
Most of the time the events being fired are the same so we can
skip the python code in this function
2024-04-27 18:42:29 -05:00
IceBotYT
9fb01f3956 Convert Linear to use a base entity (#116133)
* Convert Linear to use a base entity

* Convert Linear to use a base entity

* Remove str cast in coordinator

* More minor fixes
2024-04-27 23:11:52 +02:00
wittypluck
3fd863bd7c Unifi: enable statistics for PoE port power sensor (#116308)
Add SensorStateClass.MEASUREMENT to PoE port power sensor
2024-04-27 22:21:08 +02:00
J. Nick Koston
cf682c0c44 Use more shorthand attrs in emonitor (#116307) 2024-04-27 14:24:02 -05:00
David Knowles
83b5ecb36f Increase the Hydrawise refresh frequency from 120s to 30s (#116298) 2024-04-27 20:46:58 +02:00
J. Nick Koston
cbcfd71f3d Reduce number of time calls needed to write state (#116297) 2024-04-27 13:17:31 -05:00
J. Nick Koston
f295172d07 Add a fast path for _stringify_state when state is already a str (#116295) 2024-04-27 10:48:17 -05:00
J. Nick Koston
eea66921bb Avoid update call in entity state write if there is no customize data (#116296) 2024-04-27 10:48:05 -05:00
Erik Montnemery
b94b93cc63 Make freezegun find event.time_tracker_utcnow (#116284) 2024-04-27 07:08:56 -05:00
J. Nick Koston
7715bee6b0 Fix script in restart mode that is fired from the same trigger (#116247) 2024-04-27 07:08:29 -05:00
hopkins-tk
a37d274b37 Fix Aseko binary sensors names (#116251)
* Fix Aseko binary sensors names

* Fix add missing key to strings.json

* Fix remove setting shorthand translation key attribute

* Update homeassistant/components/aseko_pool_live/strings.json

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-27 10:02:52 +02:00
Paulus Schoutsen
9819cdfec2 Bump version to 2024.5.0b1 2024-04-27 07:27:57 +00:00
Raman Gupta
3c48c41734 Bump zwave-js-server-python to 0.55.4 (#116278) 2024-04-27 07:27:50 +00:00
J. Nick Koston
46dff86d1a Move thread safety check in area_registry sooner (#116265)
It turns out we have custom components that are writing to the area registry using the async APIs from threads. We now catch it at the point async_fire is called. Instead we should check sooner and use async_fire_internal so we catch the unsafe operation before it can corrupt the registry.
2024-04-27 07:27:49 +00:00
J. Nick Koston
85baa2508d Move thread safety check in device_registry sooner (#116264)
It turns out we have custom components that are writing to the device registry using the async APIs from threads. We now catch it at the point async_fire is called. Instead we should check sooner and use async_fire_internal so we catch the unsafe operation before it can corrupt the registry.
2024-04-27 07:27:49 +00:00
J. Nick Koston
8d11a9f21a Move thread safety check in entity_registry sooner (#116263)
* Move thread safety check in entity_registry sooner

It turns out we have a lot of custom components that are writing
to the entity registry using the async APIs from threads. We now
catch it at the point async_fire is called. Instread we should check
sooner and use async_fire_internal so we catch the unsafe operation
before it can corrupt the registry.

* coverage

* Apply suggestions from code review
2024-04-27 07:27:48 +00:00
Paul Bottein
603f46184c Update frontend to 20240426.0 (#116230) 2024-04-27 07:27:47 +00:00
Aidan Timson
e9c4185cf6 Fix state classes for ovo energy sensors (#116225)
* Fix state classes for ovo energy sensors

* Restore monetary values

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

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-04-27 07:27:47 +00:00
Robert Resch
2861ac4ac9 Use None as default value for strict connection cloud store (#116219) 2024-04-27 07:27:46 +00:00
Erik Montnemery
5fb08e8b25 Restore default timezone after electric_kiwi sensor tests (#116217) 2024-04-27 07:27:45 +00:00
Brett Adams
8f02ed4bf3 Breakfix to handle null value in Teslemetry (#116206)
* Fixes

* Remove unused test
2024-04-27 07:27:44 +00:00
Erik Montnemery
1be5249269 Reduce scope of bootstrap test fixture to module (#116195) 2024-04-27 07:27:43 +00:00
J. Nick Koston
9f84c38f08 Bump bluetooth-auto-recovery to 1.4.2 (#116192) 2024-04-27 07:27:42 +00:00
Erik Montnemery
a9b9d7f566 Fix flaky traccar_server tests (#116191) 2024-04-27 07:27:42 +00:00
J. Nick Koston
63ef52a312 Fix smartthings doing I/O in the event loop to import platforms (#116190) 2024-04-27 07:27:41 +00:00
Luke Lashley
8ac6593b53 Make Roborock listener update thread safe (#116184)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-27 07:27:40 +00:00
On Freund
7cabb04bc9 Bump pyrisco to 0.6.1 (#116182) 2024-04-27 07:27:39 +00:00
J. Nick Koston
1defd18cf5 Bump govee-ble to 0.31.2 (#116177)
changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.31.0...v0.31.2

Fixes some unrelated BLE devices being detected as a GVH5106
2024-04-27 07:27:38 +00:00
Jan Bouwhuis
e0cc9198aa Revert "Return specific group state if there is one" (#116176)
Revert "Return specific group state if there is one (#115866)"

This reverts commit 350ca48d4c.
2024-04-27 07:27:37 +00:00
Michael Hansen
5ac8488d2a Update Ollama model names list (#116172) 2024-04-27 07:27:36 +00:00
J. Nick Koston
12bce5451e Revert orjson to 3.9.15 due to segmentation faults (#116168) 2024-04-27 07:27:36 +00:00
Erik Montnemery
4612f18186 Remove early return when validating entity registry items (#116160) 2024-04-27 07:27:35 +00:00
Paul Bottein
29ab68fd24 Update unlocked icon for locks (#116157) 2024-04-27 07:27:34 +00:00
Erik Montnemery
0b74f02c4e Fix language in strict connection guard page (#116154) 2024-04-27 07:27:34 +00:00
epenet
571c86cb91 Handle invalid device type in onewire (#116153)
* Make device type optional in onewire

* Add comment
2024-04-27 07:27:33 +00:00
Erik Montnemery
18f1c0c9f3 Fix lying docstring for relative_time template function (#116146)
* Fix lying docstring for relative_time template function

* Update homeassistant/helpers/template.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-27 07:27:32 +00:00
Erik Montnemery
c8d025f525 Remove deprecation warnings for relative_time (#116144)
* Remove deprecation warnings for relative_time

* Update homeassistant/helpers/template.py

Co-authored-by: Simon <80467011+sorgfresser@users.noreply.github.com>

---------

Co-authored-by: Simon <80467011+sorgfresser@users.noreply.github.com>
2024-04-27 07:27:32 +00:00
On Freund
74f32cfa90 Avoid blocking the event loop when unloading Monoprice (#116141)
* Avoid blocking the event loop when unloading Monoprice

* Code review suggestions
2024-04-27 07:27:31 +00:00
rappenze
f91266908d Bump pyfibaro to 0.7.8 (#116126) 2024-04-27 07:27:30 +00:00
Joakim Plate
d6f1d0666c Update rfxtrx to 0.31.1 (#116125) 2024-04-27 07:27:29 +00:00
Joakim Plate
0eace572c6 Don't create event entries for lighting4 rfxtrx devices (#115716)
These have no standardized command need to be reworked
in the backing library to support exposing as events.

Fixes #115545
2024-04-27 07:27:28 +00:00
Maciej Bieniek
c65187cbfb Fix climate entity creation when Shelly WallDisplay uses external relay as actuator (#115216)
* Fix climate entity creation when Shelly WallDisplay uses external relay as actuator

* More comments

* Wrap condition into function

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-27 07:27:27 +00:00
J. Nick Koston
b403c9f92e Move thread safety check in area_registry sooner (#116265)
It turns out we have custom components that are writing to the area registry using the async APIs from threads. We now catch it at the point async_fire is called. Instead we should check sooner and use async_fire_internal so we catch the unsafe operation before it can corrupt the registry.
2024-04-27 09:26:35 +02:00
epenet
c1572d9600 Handle invalid device type in onewire (#116153)
* Make device type optional in onewire

* Add comment
2024-04-27 09:26:26 +02:00
On Freund
97d151d1c6 Avoid blocking the event loop when unloading Monoprice (#116141)
* Avoid blocking the event loop when unloading Monoprice

* Code review suggestions
2024-04-27 09:26:11 +02:00
J. Nick Koston
244433aeca Move thread safety check in entity_registry sooner (#116263)
* Move thread safety check in entity_registry sooner

It turns out we have a lot of custom components that are writing
to the entity registry using the async APIs from threads. We now
catch it at the point async_fire is called. Instread we should check
sooner and use async_fire_internal so we catch the unsafe operation
before it can corrupt the registry.

* coverage

* Apply suggestions from code review
2024-04-27 09:25:19 +02:00
Marc Mueller
4a79e750a1 Add HA version to cache key (#116159)
* Add HA version to cache key

* Add comment
2024-04-27 09:25:08 +02:00
J. Nick Koston
09ebbfa0e1 Move thread safety check in device_registry sooner (#116264)
It turns out we have custom components that are writing to the device registry using the async APIs from threads. We now catch it at the point async_fire is called. Instead we should check sooner and use async_fire_internal so we catch the unsafe operation before it can corrupt the registry.
2024-04-27 09:24:55 +02:00
Raman Gupta
8bae614d4e Bump zwave-js-server-python to 0.55.4 (#116278) 2024-04-27 09:24:23 +02:00
Joakim Plate
ff4b8fa5e3 Don't create event entries for lighting4 rfxtrx devices (#115716)
These have no standardized command need to be reworked
in the backing library to support exposing as events.

Fixes #115545
2024-04-27 09:24:11 +02:00
Erik Montnemery
a25b2168a3 Reduce scope of ZHA test fixtures (#116208) 2024-04-26 09:08:58 -05:00
Erik Montnemery
aa65f21be7 Fix flapping recorder tests (#116239) 2024-04-26 09:05:23 -05:00
Erik Montnemery
c9301850be Reduce scope of bluetooth test fixtures (#116210) 2024-04-26 09:03:49 -05:00
Brett Adams
e909074dfb Breakfix to handle null value in Teslemetry (#116206)
* Fixes

* Remove unused test
2024-04-26 15:44:13 +02:00
Paul Bottein
63dffbcce1 Update frontend to 20240426.0 (#116230) 2024-04-26 15:40:32 +02:00
Erik Montnemery
10be8f9683 Simplify timezone setting in recorder test (#116220) 2024-04-26 15:14:23 +02:00
Bram Kragten
b582d51a8a Remove myself as codeowner for Harmony (#116241)
* Remove myself as codeowner

* Update CODEOWNERS

* Format
2024-04-26 14:31:37 +02:00
Aidan Timson
7c64658aa9 Fix state classes for ovo energy sensors (#116225)
* Fix state classes for ovo energy sensors

* Restore monetary values

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

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-04-26 14:03:16 +02:00
Erik Montnemery
56f2f10a17 Fix flapping trafikverket tests (#116238)
* Fix flapping trafikverket tests

* Fix copy-paste mistake
2024-04-26 13:49:43 +02:00
Erik Montnemery
09a18459ff Restore default timezone after electric_kiwi sensor tests (#116217) 2024-04-26 12:28:40 +02:00
Robert Resch
67f6a84f5d Use None as default value for strict connection cloud store (#116219) 2024-04-26 11:22:04 +02:00
dependabot[bot]
49d8ac0811 Bump github/codeql-action from 3.25.2 to 3.25.3 (#116209)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.2 to 3.25.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.25.2...v3.25.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-04-26 08:50:58 +02:00
Sid
e662e3b65c Bump ruff to 0.4.2 (#116201)
* Bump ruff to 0.4.2

* review comments
2024-04-26 08:48:32 +02:00
Erik Montnemery
623d34e1e0 Remove early return when validating entity registry items (#116160) 2024-04-26 08:38:24 +02:00
Erik Montnemery
764b34ab62 Reduce scope of bootstrap test fixture to module (#116195) 2024-04-25 22:00:07 -05:00
Erik Montnemery
db8597a742 Reduce scope of JSON/XML test fixtures (#116197) 2024-04-25 19:12:36 -05:00
Jan Bouwhuis
372c6c7874 Use existing monotonic timestamp on mqtt messages for debugging (#116196) 2024-04-25 19:09:54 -05:00
Joost Lekkerkerker
4a1e1bd1b9 Improve linear coordinator (#116167)
* Improve linear coordinator

* Fix

* Fix
2024-04-25 22:57:29 +02:00
Thomas55555
ccc2f6c5b5 Add strict typing to husqvarna automower (#115374) 2024-04-25 15:39:42 -05:00
J. Nick Koston
421dbe1356 Bump bluetooth-auto-recovery to 1.4.2 (#116192) 2024-04-25 15:37:38 -05:00
Joost Lekkerkerker
860ac450c4 Use snapshots in Linear diagnostics tests (#116169)
* Use snapshots in Linear diagnostics tests

* Use snapshots in Linear diagnostics tests
2024-04-25 22:23:13 +02:00
Patrick Frazer
1e06054344 Bump dropmqttapi to 1.0.3 (#116179) 2024-04-25 15:00:21 -05:00
Anrijs
8649489117 Add support for Aranet radiation devices (#115239)
* sensor: added radiation dose sensor type and units

* Add support for Aranet Radiation devices

* Fix Aranet Radiation CI issues

* Revert "sensor: added radiation dose sensor type and units"

This reverts commit 28736a7da760d3490e879bb7fe5b17f8f2b851f4.

* aranet4: bump version to 2.3.3

* aranet radiation: remove removed sesnor consts

* aranet radiation: use radioactive icon by default

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2024-04-25 22:38:20 +03:00
Thomas55555
a8b41c90c5 Bump aioautomower to 2024.4.4 (#116185) 2024-04-25 14:36:00 -05:00
Erik Montnemery
9d33965bc9 Fix flaky traccar_server tests (#116191) 2024-04-25 21:20:24 +02:00
J. Nick Koston
8523df952e Fix smartthings doing I/O in the event loop to import platforms (#116190) 2024-04-25 14:07:07 -05:00
Maciej Bieniek
51bceb1c99 Fix climate entity creation when Shelly WallDisplay uses external relay as actuator (#115216)
* Fix climate entity creation when Shelly WallDisplay uses external relay as actuator

* More comments

* Wrap condition into function

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-25 21:06:52 +02:00
Michael Hansen
b3124aa7ed Update Ollama model names list (#116172) 2024-04-25 20:35:29 +02:00
Luke Lashley
cc79129587 Make Roborock listener update thread safe (#116184)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-25 13:26:11 -05:00
Joakim Plate
316f58404d Update rfxtrx to 0.31.1 (#116125) 2024-04-25 20:58:13 +03:00
rappenze
18be38d19f Bump pyfibaro to 0.7.8 (#116126) 2024-04-25 20:57:15 +03:00
J. Nick Koston
1e95476fa8 Bump govee-ble to 0.31.2 (#116177)
changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.31.0...v0.31.2

Fixes some unrelated BLE devices being detected as a GVH5106
2024-04-25 20:56:33 +03:00
On Freund
0467fca316 Bump pyrisco to 0.6.1 (#116182) 2024-04-25 20:43:31 +03:00
J. Nick Koston
98eb9a4067 Revert orjson to 3.9.15 due to segmentation faults (#116168) 2024-04-25 11:15:57 -05:00
Jan Bouwhuis
855bb57d5e Revert "Return specific group state if there is one" (#116176)
Revert "Return specific group state if there is one (#115866)"

This reverts commit 350ca48d4c.
2024-04-25 17:32:42 +02:00
Erik Montnemery
6bff0c384f Remove deprecation warnings for relative_time (#116144)
* Remove deprecation warnings for relative_time

* Update homeassistant/helpers/template.py

Co-authored-by: Simon <80467011+sorgfresser@users.noreply.github.com>

---------

Co-authored-by: Simon <80467011+sorgfresser@users.noreply.github.com>
2024-04-25 13:02:18 +02:00
Erik Montnemery
2e88ba40ff Fix lying docstring for relative_time template function (#116146)
* Fix lying docstring for relative_time template function

* Update homeassistant/helpers/template.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-25 13:01:41 +02:00
Marc Mueller
e2c60e9333 Update mypy to 1.10.0 (#116158) 2024-04-25 12:27:34 +02:00
dependabot[bot]
1e1e5ccc7a Bump actions/download-artifact from 4.1.6 to 4.1.7 (#116148)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/v4.1.6...v4.1.7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  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-04-25 11:23:15 +02:00
Paul Bottein
ce4db445e8 Update unlocked icon for locks (#116157) 2024-04-25 11:21:19 +02:00
dependabot[bot]
1241d70b3b Bump actions/checkout from 4.1.3 to 4.1.4 (#116147)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.3 to 4.1.4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.3...v4.1.4)

---
updated-dependencies:
- dependency-name: actions/checkout
  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-04-25 10:52:57 +02:00
Erik Montnemery
59dc394ac7 Fix language in strict connection guard page (#116154) 2024-04-25 10:48:32 +02:00
Chris Roberts
12c2ed5c4d Add play/pause functionality for Vizio Smartcast media_player entities (#108896)
* Add play/pause functionality to vizio integration

Leverages existing pyvizio functionality. My impression is that it also
works for soundbars based on https://github.com/exiva/Vizio_SmartCast_API/issues/19.

* Set vizio assumed_state to True

The Vizio API is only capable of indicating whether the device is on
or off and not whether it's playing/paused/idle. Setting assumed_state
to True gives us separate Play and Pause buttons versus the (useless)
merged Play/Pause button we would get otherwise.
2024-04-25 08:25:10 +02:00
Franck Nijhof
f2fe62d159 Bump version to 2024.6.0dev0 (#116120) 2024-04-24 23:16:48 +02:00
Franck Nijhof
0c44051d2a Bump version to 2024.5.0b0 2024-04-24 21:05:09 +02:00
prabhjotsbhatia-ca
79d6c2e75a Add all supported languages to Google Translate and remove unsupported ones (#107404)
* Adding supported language codes from Google Translate

Added all languages that Google Translate supports.

* Corrected alphabetical order of languages

* Remove languages not actually supported for speech

Previously I added languages supported by Google Translate. Based on comments received, I manually verified each language, and  removed languages that are not actually supported for speech in Google Translate.

* Add instructions to update the list of supported languages

Added instructions as suggested so as to facilitate easier update on this list.

* Reformat comment in const.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-24 20:51:46 +02:00
Robert Svensson
f8c38fad00 Split out event handling from Axis hub (#113837)
* Split out event handling from Axis hub

* Improve test coverage

* Mark internal methods with '_'

* Rename to event source
2024-04-24 20:47:22 +02:00
Michael
4b53471b60 Bump aiopegelonline to 0.0.10 (#116114)
bump aiopegelonline to 0.0.10
2024-04-24 20:09:40 +02:00
Daniel Hjelseth Høyer
830e8d7b94 Fix statistic bug in Tibber sensor (#116112)
* Handle keyError in Tibber sensor

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

* Constant

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>

---------

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2024-04-24 20:00:06 +02:00
Mr. Bubbles
67021be274 Add notification service for Bring component (#109222)
* Add notification service for Bring component

* change to async

* update to new library and raise for urgent message without item name

* add icons.json and replace string with reference in strings.json

* Incorporate proposed changes from https://github.com/home-assistant/core/pull/115510

* Remove unnecessary exception, rewrite translations strings

* remove unused constants
2024-04-24 19:41:46 +02:00
Michael Hansen
bc7fa8cf9e Bump intents to 2024.4.24 (#116111) 2024-04-24 18:41:17 +02:00
Steve Easley
d565c1a84b Add select platform to jvc_projector component (#111638)
* Initial commit of jvc_projector select platform

* Move icon to icons.json

* Apply suggestions from code review

* Update tests/components/jvc_projector/test_select.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-24 17:36:50 +02:00
Simone Chemelli
41a86d2404 Add quality scale to Vodafone Station (#116040)
Add quality scale
2024-04-24 17:36:31 +02:00
Simone Chemelli
7d5af09aec Add quality scale to Comelit (#116041)
add quality scale
2024-04-24 17:32:12 +02:00
TheJulianJES
5c3ffb8f55 Bump ZHA dependencies (#116106) 2024-04-24 17:24:43 +02:00
Joakim Sørensen
f83ee963bf Add binary sensor entities to Traccar Server (#114719) 2024-04-24 17:08:56 +02:00
Manuel Dipolt
2beab34de8 Add sensor platform to romy integration (#112388)
* poc romy status sensor working

* poc romy adc sensor working

* code review changes

* code review changes base enitity.py see branch romy_binary_sensor

* code review change: move CoordinatorEntity to the base class

* code review changes: sensors disabled per default

* code review: icons.json added

* checkout main entity.py

* code review changes: sensors enabled per default again

* disable rssi sensor per default

* Update homeassistant/components/romy/strings.json

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

* code review changes

* code review changes

* code review changes

* pylint fix

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-24 17:06:46 +02:00
puddly
380f192c93 Expose the SkyConnect integration with a firmware config/options flow (#115363)
Co-authored-by: Stefan Agner <stefan@agner.ch>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Erik <erik@montnemery.com>
2024-04-24 17:06:24 +02:00
J. Nick Koston
e47e62cbbf Reduce duplicate code in enphase_envoy (#116107)
Also converts a coro to a callback function since nothing
was being awaited
2024-04-24 16:58:46 +02:00
Phil Bruckner
169b9b0bfe Fix removing suggested_display_precision from entity registry (#110671)
* Fix removing suggested_display_precision from entity registry

* Fix tests

* Update homeassistant/components/sensor/__init__.py

---------

Co-authored-by: Erik <erik@montnemery.com>
2024-04-24 16:47:03 +02:00
Arie Catsman
bbaa0c16cc Cancel timer on enphase_envoy config entry unload (#111406)
* lingeringtimer

* Add async_cleanup to enphase_envoy_coordinator and call from unload_entry
2024-04-24 16:33:14 +02:00
nyangogo
c9ff618ef0 Add nfandroidtv type checking and allow for strings to be passed to the image and icon data (#108652)
* nfandroidtv - add type checking and allow for strings to be passed to the image and icon data

* nfandroidtv - wrong argument name

* nfandroidtv - put the icon in the wrong varible 🙃

* nfandroidtv - raise ServiceValidationError instead of logging

---------

Co-authored-by: nyangogo <7449028+ioangogo@users.noreply.github.com>
2024-04-24 16:19:44 +02:00
J. Nick Koston
d0f5e40b19 Refactor ESPHome manager to avoid sending signals in tests (#116033) 2024-04-24 16:14:44 +02:00
Manuel Dipolt
220dc1f125 Add binary sensor platform to romy integration (#112998)
* wip

* poc working, reworked to a binary sensor list

* Update homeassistant/components/romy/binary_sensor.py

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

* Update homeassistant/components/romy/binary_sensor.py

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

* Update homeassistant/components/romy/binary_sensor.py

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

* Update homeassistant/components/romy/binary_sensor.py

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

* Update homeassistant/components/romy/binary_sensor.py

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

* code review changes, adjust translation key names

* code review clean up: removed unecessary RomyBinarySensorEntityDescription

* code review changes: translation names

* code review changes, put DeviceInfo into RomyEntity

* code review change: change docked icon to type plug

* code review change: move CoordinatorEntity to the base class

* code review changes: sensors disabled per default

* code review: icons.json added

* code review changes: sensors enabled per default again

* checkout main entity.py

* type hinting changes

* Update homeassistant/components/romy/binary_sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-24 15:59:09 +02:00
mletenay
74cea2ecae Update goodwe library to 0.3.2 (#115309) 2024-04-24 15:31:29 +02:00
Bram Kragten
ea96ac37b7 Update frontend to 20240424.1 (#116103) 2024-04-24 15:29:51 +02:00
Jan Bouwhuis
70b358bca1 Always reload after a successful reauth flow (#116026)
* Always reload after a succesfull reauth-flow

* Add test, fix CI failures

* Add kwarg to prevent reloading and tests

* Do not reload entry for bond if it exists

* Remove mocks on internals

* Rename kwarg to always_reload

* Update tests/components/weatherflow_cloud/test_config_flow.py

* Update tests/components/homeworks/test_config_flow.py

* Update tests/components/homeworks/test_config_flow.py

* Rename to option to reload_even_if_entry_is_unchanged
2024-04-24 15:13:33 +02:00
Jan Bouwhuis
350ca48d4c Return specific group state if there is one (#115866)
* Return specific group state if there is one

* Refactor

* Additional test cases

* Refactor

* Break out if more than one on state

* tweaks

* Remove log, add comment

* add comment

* Apply suggestions from code review

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

* Refactor and improve comments

* Refactor to class method

* More filtering

* Apply suggestions from code review

* Only active if not excluded

* Do not use a set

* Apply suggestions from code review

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-24 15:12:29 +02:00
Shai Ungar
1f4585cc9e Add service to 17track to get packages (#116067)
* Add service to 17track

* Add service to 17track

change to select selector
add snapshot test

* Add service to 17track

use strings for the selector

* Add service to 17track

fix test
2024-04-24 14:29:13 +02:00
Pete Sage
24a1f0712f Fix Sonos music library play problems (#113429) 2024-04-24 14:03:40 +02:00
Brett Adams
0e0b543dec Deprecate speed limit lock in Tessie (#113848) 2024-04-24 13:30:22 +02:00
Jan Bouwhuis
18132916fa Mask current password in MQTT option flow (#116098)
* Mask current password in MQTT option flow

* Update docstr

* Typo
2024-04-24 13:29:42 +02:00
Andy
5aa61cb6d5 Extend options for ecovacs lifespans (#116094)
Co-authored-by: Robert Resch <robert@resch.dev>
2024-04-24 13:19:50 +02:00
Michael
bfed682abe Mark Tankerkoenig as Platinum 🏆 integration (#115917) 2024-04-24 13:18:09 +02:00
Marc Mueller
a752f8e7d7 Remove microsoft apt package list before update (#116097) 2024-04-24 13:17:01 +02:00
Michael
9fcb774252 Add reconfigure flow to AVM Fritz!SmartHome (#116047) 2024-04-24 13:06:14 +02:00
J. Nick Koston
d17e9bfc99 Enable debug mode if asyncio debug is on at startup (#116084) 2024-04-24 12:55:09 +02:00
J. Nick Koston
df12789e08 Remove duplicate async_write_ha_state thread safety check (#116086) 2024-04-24 12:46:16 +02:00
J. Nick Koston
e3984cd50a Temporary CI workaround for broken microsoft ubuntu repo (#116091) 2024-04-24 12:06:52 +02:00
J. Nick Koston
e9e401ae29 Migrate discovery debouncer callback to async_fire_internal (#116078) 2024-04-24 11:26:48 +02:00
rlippmann
1120246194 Deprecate relative_time() in favor of time_since() and time_until() (#111177)
* add time_since/time_until.  add deprecation of relative_time

* fix merge conflicts

* Apply suggestions from code review

* Update homeassistant/helpers/template.py

* Update homeassistant/helpers/template.py

* Update homeassistant/helpers/template.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-24 11:13:07 +02:00
J. Nick Koston
e0b58c3f45 Move thread safety check in async_register/async_remove (#116077) 2024-04-24 10:41:11 +02:00
Marc Mueller
5bded2a52d Fix accuweather system_health after data change (#116063) 2024-04-24 10:30:57 +02:00
Robert Resch
bcc2dd99b2 Rename strict connection static page to guard page (#116085) 2024-04-24 10:29:59 +02:00
Simon Roberts
07d68eacfa Fix iotawatt warnings about "Detected new cycle for sensor.{sensorname}_wh_last" (#115909)
* Bump ha-iotawattpy to 0.1.2

* Remove energy energy-over-period sensors: they cause issue for HA

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2024-04-24 10:24:49 +02:00
TheJulianJES
102b34123c Bump zha-quirks to 0.0.115 (#116071) 2024-04-24 10:17:01 +02:00
Gage Benne
c4340f6f5f Ecobee preset mode icon translations (#116072) 2024-04-24 10:16:35 +02:00
J. Nick Koston
79b4889812 Always do thread safety checks when writing state for custom components (#116044) 2024-04-24 10:05:52 +02:00
Bouwe Westerdijk
6f2a2ba46e Bump plugwise to v0.37.3 (#116081) 2024-04-24 10:00:18 +02:00
Robert Resch
a4829330f6 Add strict connection for cloud (#115814)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-24 09:57:38 +02:00
J. Nick Koston
b520efb87a Small speed up to async_track_event (#116083) 2024-04-24 09:56:59 +02:00
Robert Resch
ec377ce665 Bump deebot-client to 7.1.0 (#116082) 2024-04-24 09:49:10 +02:00
Richard Kroegel
474a1a3d94 Use display_precision if suggested_display_precision is None (#110270)
Co-authored-by: Richard <rikroe@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-24 09:46:55 +02:00
osohotwateriot
44208a5be0 Add OSO Energy sensors (#108226)
* Add OSO Energy sensors

* Fix comments

* Fixes after review

* Fix sensor names and translations

* Fixes after review

* Fix validation errors

* Fixes after review

* Remove profile sensor
2024-04-24 08:19:26 +02:00
Michael
d8cca482b3 Add reconfigure flow to AVM Fritz!Tools (#116057)
add reconfigure flow
2024-04-24 07:52:14 +02:00
Matthias Alphart
f115525137 Migrate KNX notify service to entity platform (#115665) 2024-04-24 07:51:02 +02:00
Sid
b37f7b1ff0 Enable Ruff RUF019 (#115396)
* Enable Ruff RUF019

* fix tado tests

* review comments
2024-04-24 07:23:24 +02:00
J. Nick Koston
4a59ee978c Always do thread safety checks when calling async_fire (#116055) 2024-04-24 06:41:55 +02:00
J. Nick Koston
53a179088f Add debug mode to catch unsafe thread operations using core helpers (#115390)
* adjust

* adjust

* fixes

* one more

* test

* debug

* move to config

* cover

* Update homeassistant/core.py

* set debug from RuntimeConfig

* reduce

* fix message

* raise

* Update homeassistant/core.py

* Update homeassistant/core.py

* no flood check for raise

* cover
2024-04-24 03:36:05 +02:00
J. Nick Koston
9d54aa205b Fix non-thread-safe operations in html5 (#116068)
Fix non thread-safe calls in html5

https://github.com/home-assistant/core/actions/runs/8808425552/job/24177668764?pr=116055
2024-04-24 03:33:19 +02:00
J. Nick Koston
b1b8b8ba00 Fix non-thread-safe operations in wake_on_lan (#116069)
Fix unsafe thread operations in wake_on_lan

https://github.com/home-assistant/core/actions/runs/8808429751/job/24177715837?pr=116066
2024-04-24 03:32:07 +02:00
J. Nick Koston
f2336a5a3a Fix non-thread-safe operation in harmony (#116070)
Fix unsafe thread operation in harmony

https://github.com/home-assistant/core/actions/runs/8808429751/job/24177716644?pr=116066
2024-04-24 03:31:44 +02:00
David Friedland
e3016b131a Add Event support to ESPHome components (#116061)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-24 13:22:03 +12:00
J. Nick Koston
f9c2cd73f5 Fix non-thread-safe operations in media_extractor (#116065) 2024-04-24 02:19:18 +02:00
dependabot[bot]
62dadc47ff Bump github/codeql-action from 3.25.1 to 3.25.2 (#116016)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-24 00:02:31 +02:00
Michael
35db2e4101 Complete test coverage for Tankerkonig (#115920)
* complete tests

* update snapshots after rebase
2024-04-23 23:42:17 +02:00
Jan Bouwhuis
72ed16c3e0 Update quality scale mqtt integration to platinum (#116059) 2024-04-23 23:20:34 +02:00
Jan Bouwhuis
8d2813fb8b Migrate legacy Ecobee notify service (#115592)
* Migrate legacy Ecobee notify service

* Correct comment

* Update homeassistant/components/ecobee/notify.py

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

* Use version to check latest entry being used

* Use 6 months of deprecation

* Add repair flow tests

* Only allow migrate_notify fix flow

* Simplify repair flow

* Use ecobee data to refrence entry

* Make entry attrubute puiblic

* Use hass.data ro retrieve entry.

* Only register issue when legacy service when it is use

* Remove backslash

* Use ws_client.send_json_auto_id

* Cleanup

* Import domain from notify integration

* Apply suggestions from code review

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

* Update dependencies

* Use Issue_registry fixture

* remove `update_before_add` flag

* Update homeassistant/components/ecobee/notify.py

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

* Update homeassistant/components/ecobee/notify.py

* Update tests/components/ecobee/conftest.py

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

* Fix typo and import

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-23 22:53:13 +02:00
J. Nick Koston
0f60b404df Fix husqvarna_automower typing (#116060) 2024-04-23 22:50:31 +02:00
Franck Nijhof
f828eb2301 Merge branch 'master' into dev 2024-04-23 22:40:16 +02:00
Joost Lekkerkerker
a45040af14 Add entity translations to 17track (#116022) 2024-04-23 22:30:20 +02:00
J. Nick Koston
a22c221722 Rename bus._async_fire to bus.async_fire_internal (#116027) 2024-04-23 22:28:31 +02:00
Jan Bouwhuis
31d11b2362 Add re-auth flow for MQTT broker username and password (#116011)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-23 22:26:01 +02:00
J. Nick Koston
0c583bb1d9 Fix ruff complaints in control4 (#116058) 2024-04-23 22:25:35 +02:00
J. Nick Koston
8f1761343e Only work out job type once when setting up dispatcher (#116030) 2024-04-23 22:24:36 +02:00
Thomas55555
f1fa33483e Bump aioautomower to 2024.4.3 (#114500) 2024-04-23 22:23:44 +02:00
Bouwe Westerdijk
2c7a1ddb1d Bump plugwise to v0.37.2 (#115989) 2024-04-23 22:13:09 +02:00
Brett Adams
f249a9ba4b Add API scope checks to Teslemetry (#113640) 2024-04-23 22:11:41 +02:00
Nalin Mahajan
a33aacfcaa Add Retry for C4 API due to flakiness (#113857)
Co-authored-by: nalin29 <nalin29@github.com>
2024-04-23 22:10:16 +02:00
J. Nick Koston
fd08b7281e Convert solaredge to asyncio with aiosolaredge (#115599) 2024-04-23 22:07:16 +02:00
Jan Bouwhuis
d08bb96d00 Deprecate Unify Circuit integration (#115528)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-04-23 21:59:03 +02:00
Joost Lekkerkerker
b5bd25d4fb Add entity translations to totalconnect (#115950) 2024-04-23 21:54:13 +02:00
J. Nick Koston
bb2bd086bc Add missing adapter data to Bluetooth config entry titles (#115930) 2024-04-23 21:52:55 +02:00
Franck Nijhof
60be2af8ac 2024.4.4 (#116045) 2024-04-23 21:50:08 +02:00
Robert Svensson
8bf3c87336 Breakout heartbeat monitor and poe command queue in UniFi (#112529)
* Split out entity helper functionality to own class

* Split out heartbeat to own class

* Break out poe command

* Make more parts private

* Make more things private and simplify naming

* Sort initialize

* Fix ruff
2024-04-23 21:45:20 +02:00
Franck Nijhof
3e0a45eee2 Update requests_mock to 1.12.1 (#116050) 2024-04-23 21:36:36 +02:00
J. Nick Koston
46ec8a85b6 Pass the job type when setting up homekit state change listeners (#116038) 2024-04-23 21:31:08 +02:00
Franck Nijhof
991e479dac Update coverage to 7.5.0 (#116048) 2024-04-23 21:26:00 +02:00
Franck Nijhof
61cf7e851b Update pipdeptree to 2.17.0 (#116049) 2024-04-23 21:13:32 +02:00
Markus Jacobsen
0ed48c844d Bump mozart-api to 3.4.1.8.5 (#113745) 2024-04-23 21:06:06 +02:00
Franck Nijhof
4d551d68c6 Bump version to 2024.4.4 2024-04-23 20:12:21 +02:00
Raj Laud
b521acb724 Use start helper in squeezebox for server discovery (#115978) 2024-04-23 20:12:06 +02:00
Michael
036b6fca25 Fix geo location attributes of Tankerkoenig sensors (#115914)
* geo location attributes needs to be float

* make mypy happy
2024-04-23 20:12:04 +02:00
Allen Porter
c9c7c7803e Bump ical to 8.0.0 (#115907)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-23 20:12:01 +02:00
jjlawren
b8b2f6427a Bump plexapi to 4.15.12 (#115872) 2024-04-23 20:11:58 +02:00
Ståle Storø Hauknes
13ed2d2919 Fix KeyError error when fetching sensors (Airthings) (#115844) 2024-04-23 20:11:55 +02:00
J. Nick Koston
32f82d480f Ensure scripts with timeouts of zero timeout immediately (#115830) 2024-04-23 20:11:52 +02:00
Robert Svensson
6464218e59 Bump aiounifi to v75 (#115819) 2024-04-23 20:11:49 +02:00
Simone Chemelli
4088447303 Add missing media_player features to Samsung TV (#115788)
* add missing features

* fix snapshot
2024-04-23 20:11:46 +02:00
Erik Montnemery
851a5497b4 Allow [##:##:##] type keypad address in homeworks (#115762)
Allow [##:##:##] type keypad address
2024-04-23 20:11:43 +02:00
Erik Montnemery
c4b504ce39 Fix homeworks import flow (#115761) 2024-04-23 20:11:40 +02:00
epenet
db31a526e5 Bump renault-api to 0.2.2 (#115738) 2024-04-23 20:11:36 +02:00
J. Nick Koston
8207fc29d2 Bump aiohttp to 3.9.5 (#115727)
changelog: https://github.com/aio-libs/aiohttp/compare/v3.9.4...v3.9.5
2024-04-23 20:08:08 +02:00
J. Nick Koston
630763ad9e Bump sqlparse to 0.5.0 (#115681)
fixes https://github.com/home-assistant/core/security/dependabot/54
fixes https://github.com/home-assistant/core/security/dependabot/55
2024-04-23 20:07:08 +02:00
J. Nick Koston
09ed0aa399 Bump httpcore to 1.0.5 (#115672)
Fixes missing handling of EndOfStream errors
2024-04-23 20:07:05 +02:00
Brett Adams
66918d1686 Fix sensor entity description in Teslemetry (#115614)
Add description back to sensor entity
2024-04-23 20:07:02 +02:00
jan iversen
3d68ee99a4 Modbus: Bump pymodbus v3.6.8 (#115574) 2024-04-23 20:06:59 +02:00
Brett Adams
37a82c8785 Fix Teslemetry sensor values (#115571) 2024-04-23 20:06:56 +02:00
J. Nick Koston
038040db5e Fix race in TimestampDataUpdateCoordinator (#115542)
* Fix race in TimestampDataUpdateCoordinator

The last_update_success_time value was being set after the listeners
were fired which could lead to a loop because the listener may
re-trigger an update because it thinks the data is stale

* coverage

* docstring
2024-04-23 20:06:53 +02:00
Marc Mueller
b770edc16e Update pillow to 10.3.0 (#115524) 2024-04-23 20:06:50 +02:00
J. Nick Koston
e1a2416076 Bump zeroconf to 0.132.2 (#115505) 2024-04-23 20:06:47 +02:00
J. Nick Koston
6247624514 Bump zeroconf to 0.132.1 (#115501) 2024-04-23 20:06:44 +02:00
slyoldfox
42c13eb57f Add scheduled mode to renault charge mode (#115427)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-04-23 20:06:41 +02:00
avee87
7eb6b2ca33 Fix Hyperion light not updating state (#115389) 2024-04-23 20:03:23 +02:00
Joost Lekkerkerker
5194faa8fd Make Withings recoverable after internet outage (#115124) 2024-04-23 20:03:20 +02:00
Jonny Rimkus
5826f9a4f6 Bump slixmpp version to 1.8.5 (#114448)
* Update slixmpp to 1.8.5, hopefully fixes #113990

* Bump slixmpp version to 1.8.5 #114448
2024-04-23 20:03:15 +02:00
Jim
cc9eab4c78 Allow plain text messages in telegram_bot (#110051)
* Add new plain_text parser

Passing None in the parse_mode kwargs on the various bot methods actually means that no parser is used.

* Add new plain text parser option to services.yaml

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-23 19:32:09 +02:00
Tucker Kern
d8aa1cd8b5 Add fan preset translations and icons to BAF (#109944) 2024-04-23 19:11:40 +02:00
Erik Montnemery
d4ecf30b6a Include libgammu-dev in devcontainer (#115983) 2024-04-23 18:35:53 +02:00
David Knowles
3b678896d9 Remove platform schema from Hydrawise (#116032) 2024-04-23 18:08:07 +02:00
Michael
10228ee1a2 Bump python-fritzhome to 0.6.11 (#115904) 2024-04-23 17:39:44 +02:00
Thomas55555
d4b801af32 Use snapshot test helper in Husqvarna Automower (#116039) 2024-04-23 17:39:29 +02:00
Marc Mueller
8257af1b22 Improve energy typing (#116034) 2024-04-23 17:33:36 +02:00
Marc Mueller
14e19c6d9c Remove unnecessary type ignores (#116036) 2024-04-23 17:32:21 +02:00
Volker Stolz
5e250d8a76 Augment SyntaxError raised during dependency collection with offending filename (#109204)
* Capture parsing exception when collecting dependencies and augment with offending filename.

Whereas before any syntax error in some component-file would result in an opaque SyntaxError without pointing out the file, now the result will show as:

```
  File "/usr/local/Cellar/python@3.11/3.11.7_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/multiprocessing/pool.py", line 873, in next
    raise value
SyntaxError: Can't parse file homeassistant/components/your/file.py
```

* tweak

* D'oh, had pre-commit hook still off.

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-23 17:13:25 +02:00
Maikel Punie
90efe5ac90 Velbus Cover: Assume state for VMBxBL modules (#109213) 2024-04-23 16:44:37 +02:00
Spacetech
1649957e5c Expose dynamic range status in Onkyo media player (#109099)
Expose HDR status in Onkyo media player

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-23 16:39:11 +02:00
Marc Mueller
a0314cddd4 Fix invalid tuple annotations (#116035) 2024-04-23 16:02:16 +02:00
Ståle Storø Hauknes
d367bc63f0 Fix KeyError error when fetching sensors (Airthings) (#115844) 2024-04-23 15:53:31 +02:00
Robert Resch
fced9eb4b5 Use location name on self hosted Ecovacs config entries (#115294) 2024-04-23 14:33:05 +02:00
Arie Catsman
2c651e190f Add additional zeroconf discovery coverage and logging to enphase_envoy (#114405)
* add debug info to zeroconf for enphase_envoy

* Implement review feedback, lost space

Co-authored-by: Charles Garwood <cgarwood@newdealmultimedia.com>

* review feedback textual changes.

* implement review feedbackw.py

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

* Add some more zeroconf tests and valid jwt

* review feedback assert abort reason and keyerror for serialnumber

* Review feedback config flow test ends with abort or create_entry

* Review feedback optimize resource usage

* Cover new code in test.

* Use caplog for debug COV

---------

Co-authored-by: Charles Garwood <cgarwood@newdealmultimedia.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-23 08:26:53 -04:00
Thomas55555
b8918d7d17 Add number platform to Husqvarna Automower (#115125)
* Add number platform to Husqvarna Automower

* use fixture to enable by default

* replace state test with snapshot test

* make property in entity description

* send value as integer

* give the exists functions something to do
2024-04-23 14:18:49 +02:00
Robert Resch
fd14695d26 Bump deebot-client to 7.0.0 (#116025) 2024-04-23 13:16:55 +02:00
Joost Lekkerkerker
2977ec4872 Add event platform to Lutron (#109121)
* Add event platform to Lutron

* Add event platform to Lutron

* Fix

* Fix

* Fix

* Add deprecation note

* Fix

* Fix

* Update homeassistant/components/lutron/event.py

* Update homeassistant/components/lutron/event.py

* Fix
2024-04-23 11:54:19 +02:00
Jesse Hills
85203aeb28 Bump aioesphomeapi to 24.3.0 (#116004) 2024-04-23 11:23:28 +02:00
Marc Mueller
9cdf7b435a Add uv version to wheels cache key [ci] (#116021) 2024-04-23 11:06:29 +02:00
jan iversen
640dc56c51 Deprecate modbus:restart service (#115754) 2024-04-23 10:28:46 +02:00
Martijn van der Pol
e90d76b18d Don't raise errors when using datetime objects in as_datetime Jinja function/filter (#109062)
* add support for datetime objects to as_datetime

* change import of datetime.date

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-23 09:55:58 +02:00
myhomeiot
3d59303433 Improve Vodafone Station empty/unavailable phone number detection (#115696)
Vodafone Sercomm H300S model incorrectly reports phone_unavailable1/phone_unavailable2 flags.
2024-04-23 09:50:41 +02:00
Joost Lekkerkerker
8f56d170b9 Use generator expression in totalconnect (#116020) 2024-04-23 09:48:17 +02:00
dependabot[bot]
e2b401397d Bump actions/upload-artifact from 4.3.1 to 4.3.3 (#116015) 2024-04-23 09:24:32 +02:00
dependabot[bot]
616c7ce68b Bump actions/download-artifact from 4.1.4 to 4.1.6 (#116017) 2024-04-23 09:23:45 +02:00
Shai Ungar
e0c785b2b4 Add coordinator to 17Track (#115057)
* Add coordinator to 17Track

* Add coordinator to 17Track

remove SensorEntityDescription (different PR)

* Update homeassistant/components/seventeentrack/coordinator.py

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

* Update homeassistant/components/seventeentrack/sensor.py

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

* Add coordinator to 17Track

fix CR

* Add coordinator to 17Track

fix second CR

* Add coordinator to 17Track

remove commented out code + fix display name

* Add coordinator to 17Track

created a set outside _async_create_remove_entities function

* Add coordinator to 17Track

fix CR

* Add coordinator to 17Track

fix CR 2

* Update homeassistant/components/seventeentrack/coordinator.py

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

* Add coordinator to 17Track

raise UpdateFailed if API throws an exception

* Add coordinator to 17Track

merge calls

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-23 09:01:45 +02:00
Thomas Kistler
b8f44fb722 Update Hydrawise from the legacy API to the new GraphQL API (#106904)
* Update Hydrawise from the legacy API to the new GraphQL API.

* Cleanup
2024-04-23 09:01:25 +02:00
G Johansson
917f4136a7 Add config flow to Folder Watcher (#105605)
* Add config flow to Folder Watcher

* Add tests config flow

* docstrings

* watcher is sync

* Fix strings

* Fix

* setup_entry issue

* ConfigFlowResult

* Review comments

* Review comment

* ruff

* new date
2024-04-23 08:55:39 +02:00
Robert Resch
2fafdc64d5 Bump uv to 0.1.35 (#115985) 2024-04-23 08:48:35 +02:00
Robert Svensson
c32961f1bc Bump aiounifi to v76 (#116005)
* Bump aiounifi to v76
2024-04-23 07:48:25 +02:00
Kim de Vos
b69f589c30 Add bandwidth sensor for unifi device ports (#115362) 2024-04-22 22:39:46 +02:00
G Johansson
5318a6f465 Bump holidays to 0.47 (#115992) 2024-04-22 21:33:56 +02:00
karwosts
2ac44f6083 Make recorder.purge_entities require at least one entity filter value (#110066)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-22 20:10:18 +02:00
J. Nick Koston
0ed56694b0 Migrate MQTT EnsureJobAfterCooldown to use eager start (#115977) 2024-04-22 20:09:45 +02:00
Marc-Olivier Arsenault
f2adae4524 Revert "Reduce ecobee throttle (#115968)" (#115981) 2024-04-22 19:28:08 +02:00
Erik Montnemery
2caca7fbe3 Generate requirements per supported architecture (#115708)
* Generate requirements per supported architecture

* Don't store wheels requirements in the repo

* Dry run

* Set Python version

* Install base packages

* Fix

* Fix

* Fix

* Fix typo

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

* Genarate requirements_all_pytest.txt

* Fix hassfest

* Reenable building wheels

* Remove unneeded code

* Address review comment

* Fix lying comment

* Add tests, address review comments

* Deduplicate

* Fix file name

* Add comment

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-22 19:23:08 +02:00
Raj Laud
124eca4d53 Use start helper in squeezebox for server discovery (#115978) 2024-04-22 17:46:12 +02:00
David Knowles
2afaa3d333 Remove YAML support from Hydrawise (#115966) 2024-04-22 16:54:04 +02:00
J. Nick Koston
20adc5be70 Small fixes for processing integration requirements (#115973) 2024-04-22 16:52:04 +02:00
J. Nick Koston
37d329c286 Improve reliability of homeassistant_alerts updates (#115974) 2024-04-22 16:51:19 +02:00
Marc-Olivier Arsenault
65b2c1519c Reduce ecobee throttle (#115968)
reduce ecobee throttle
2024-04-22 16:43:01 +02:00
Michael
5a7e921ae3 Address late review for AVM Fritz!Smarthome (#115960)
fix typo
2024-04-22 13:24:23 +02:00
Jesse Hills
9b6863f182 ESPHome: Add datetime entities (#115942) 2024-04-22 13:12:22 +02:00
Joost Lekkerkerker
693bd08a0b Add snapshot tests to Totalconnect (#115952)
* Add snapshot tests to Totalconnect

* Add snapshot tests to Totalconnect
2024-04-22 13:01:31 +02:00
Aidan Timson
6985d36f18 Update ovoenergy to 2.0.0 (#115921)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-22 12:39:53 +02:00
Maciej Bieniek
354e8e92f3 Move NextDNS data update coordinators to the coordinator module (#115919)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-22 11:19:35 +02:00
Joost Lekkerkerker
09ae8b9f52 Introduce base location entity for totalconnect (#115938)
* Introduce base location entity for totalconnect

* Update homeassistant/components/totalconnect/entity.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-04-22 10:41:26 +02:00
Jesse Hills
46941adb51 Bump aioesphomeapi to 24.2.0 (#115943) 2024-04-22 10:30:14 +02:00
Quentame
f927b27ed4 Add Epic Games Store integration (#104725)
* Add Epic Games Store integration

Squashed commit of the following PR: #81167

* Bump epicstore-api to 0.1.7 as it handle better error 1004

Thanks to d7469f7c99

* Use extra_state_attributes instead of overriding state_attributes

* Review: change how config_flow.validate_input is handled

* Use LanguageSelector and rename locale to language

* Review: init-better use of hass.data.setdefault

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

* Review: don't need to update at init

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

* Revert "Review: don't need to update at init" --> not working otherwise

This reverts commit 1445a87c8e9b7247f1c9835bf2e2d7297dd02586.

* Review: fix config_flow.validate_input/retactor following lib bump

* review: merge async_update function with event property

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

* hassfest

* Fix duplicates data from applied comment review 5035055

* review: thanks to 5035055 async_add_entities update_before_add param is not required anymore

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

* Fix Christmas special "Holiday sale" case

* gen_requirements_all

* Use CONF_LANGUAGE from HA const

* Move CalendarType to const

* manifest: integration_type -> service

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

* calendar: remove date start/end assert

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

* const: rename SUPPORTED_LANGUAGES

* hassfest

* config: Move to ConfigFlowResult

* coordinator: main file comment

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

* ruff & hassfest

* review: do not guess country

* Add @hacf-fr as codeowner

* review: remove games extra_attrs
Was dropped somehow:
- 73c20f34803b0a0ec242bf0740494f17a68f6f59 review: move games extra_attrs to data service
- other commit that removed the service part

* review: remove unused error class
was removed:
- 040cf945bb5346b6d42b3782b5061a13fb7b1f6b

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-22 09:54:47 +02:00
dependabot[bot]
66ea528e94 Bump actions/checkout from 4.1.2 to 4.1.3 (#115945)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-22 09:43:19 +02:00
rappenze
de75f82235 Refactor fibaro connect (#106875)
* Refactor fibaro connect

* Remove obsolete test

* Add comment about ignored return value
2024-04-22 09:29:58 +02:00
rappenze
aeaa1f84c0 Add type hints in fibaro device (#106874)
* Add typings in fibaro device

* Fix type hints

* Fix type hints

* Remove unused method parameter

* Improve log message

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-22 09:29:10 +02:00
andarotajo
70d4b4d20d Add optional location based region to dwd_weather_warnings (#96027)
* Add device tracker option

* Update const name to be more understandable

* Clean up sensor code

* Clean up init and coordinator

* Add tests and update util function and it's usage

* Switch to using the registry entry and add tests

* Clean up code

* Consolidate duplicate code and adjust tests

* Fix runtime error

* Fix blocking of the event loop

* Adjust API object handling

* Update homeassistant/components/dwd_weather_warnings/exceptions.py

* Optimize coordinator data update

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-22 09:13:09 +02:00
Allen Porter
e29b301dd1 Bump ical to 8.0.0 (#115907)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-21 15:52:47 -07:00
Joost Lekkerkerker
f26ac465b5 Introduce base entity for totalconnect (#115936) 2024-04-21 23:38:32 +02:00
Sid
895f73d8e4 Enable Ruff A001 (#115654) 2024-04-21 23:25:27 +02:00
J. Nick Koston
8754b12d08 Temporarily pickup mqtt codeowner (#115934) 2024-04-21 22:57:57 +02:00
J. Nick Koston
423544401e Convert MQTT to use asyncio (#115910) 2024-04-21 22:33:58 +02:00
Michael
5a24690d79 Make use of snapshot testing in Synology DSM (#115931) 2024-04-21 22:26:57 +02:00
mkmer
2620443a88 Add error translations to Blink (#115924)
* Add translations
Catch timeout in snap

* Grammer cleanup
2024-04-21 21:19:48 +02:00
Austin Mroczek
ddb415b77e Bump total_connect_client to 2023.12.1 (#115928)
bump total_connect_client to 2023.12.1
2024-04-21 20:27:50 +02:00
Robert Svensson
83370a5bde Remove sensor exposing UniFi WLAN password (#115929) 2024-04-21 20:27:44 +02:00
Joost Lekkerkerker
95b858648e Refactor Totalconnect binary sensor (#115629) 2024-04-21 17:36:19 +02:00
Michael
ec066472ae Fix geo location attributes of Tankerkoenig sensors (#115914)
* geo location attributes needs to be float

* make mypy happy
2024-04-21 11:44:58 +02:00
wittypluck
1c0c0bb0bc Allow manual delete of stale Unifi device from UI (#115267)
* Allow manual delete of stale device from UI

* Add unit tests for remove_config_entry_device
2024-04-21 11:08:39 +02:00
Jan Bouwhuis
b592225a87 Improve service validation exception test and translation key (#115843)
* Small improvement to service validation exception test and translation key

* Apply suggestions from code review

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

* Refactor string assertion

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-21 08:54:23 +02:00
Adam Goode
27bccf0b24 Add test for prometheus export of entities becoming unavailable and available again (#112157)
Add test for state change to unavailable and back
2024-04-20 20:20:01 -07:00
David Bonnes
30a60fd38b Improve debug logging for evohome (#110256)
better logging
2024-04-20 20:17:11 -07:00
Luke Lashley
d8117fd2bd Fix Roborock status not correctly mapping for some devices (#115646)
Use device_info.model instead of name
2024-04-20 19:57:05 -07:00
J. Nick Koston
29bfed72f7 Fix flaky history stats test (#115824) 2024-04-21 01:08:40 +02:00
Brett Adams
7d386b0d26 Fix sensor entity description in Teslemetry (#115614)
Add description back to sensor entity
2024-04-20 23:54:24 +02:00
r-binder
68225abce5 Add tls support for AVM Fritz!Tools (#112714) 2024-04-20 23:08:29 +02:00
Sid
b450918f66 Bump ruff to 0.4.1 (#115873) 2024-04-20 21:35:02 +02:00
Joost Lekkerkerker
48d1692cd6 Use snapshot test helper in Ambient Network (#115887) 2024-04-20 21:29:14 +02:00
Joost Lekkerkerker
ee116713cf Use snapshot test helper in Analytics insights (#115889) 2024-04-20 21:27:54 +02:00
Alberto Montes
c94b0a82ca Make release channel a hardcoded enum rather than a free form string (#115595)
* Make release channel a hardcoded enum rather than a free form string

* Update enum comparison to remove equality and us identity comparison

* Fix comparison condition to match the previous implementation

* Update tests to use Enum instead of string
2024-04-20 20:01:49 +02:00
Joost Lekkerkerker
c753093741 Use snapshot test helper in AO Smith (#115890) 2024-04-20 19:10:56 +02:00
mtielen
d478b87af7 Fix Wolf Smart Set Authentication and Session Management (#115815)
* Fix Wolf Smart Set Authentication and Session Management

Fix in the library to respect Wolf API token lifetime and implement Session Management

* Updatie requirments

* Update Code Owner
2024-04-20 19:09:32 +02:00
Maciej Bieniek
10be2cc004 Use snapshot test helper in NextDNS (#115895)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 18:43:40 +02:00
Maciej Bieniek
5e345b7129 Use snapshot test helper in NAM (#115894)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 18:43:33 +02:00
Maciej Bieniek
de1312f7e4 Use snapshot test helper in GIOS (#115893)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 18:43:25 +02:00
Joost Lekkerkerker
b328981868 Use snapshot test helper in Accuweather (#115884) 2024-04-20 17:24:40 +02:00
Joost Lekkerkerker
5796b651af Use snapshot test helper in Brother (#115885) 2024-04-20 17:14:42 +02:00
Joost Lekkerkerker
16e31d8f74 Add test helper to snapshot a platform (#115880)
* Add test helper to snapshot a platform

* Add test helper to snapshot a platform
2024-04-20 14:49:57 +02:00
Nathan Spencer
8f73422ce5 Bump pylitterbot to 2023.5.0 (#115856) 2024-04-20 12:37:35 +02:00
jjlawren
e3ce3ed6fd Bump plexapi to 4.15.12 (#115872) 2024-04-20 12:36:03 +02:00
Maciej Bieniek
194f3366ce Use snapshot testing in NAM sensor and diagnostics (#115877)
* Use snapshot testing in NAM diagnostics

* Use snapshot testing in NAM sensor

* Add NAM data fixture

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 12:34:27 +02:00
Maciej Bieniek
c4e7a7af21 Use snapshot testing in Brother sensor (#115875)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 12:33:08 +02:00
Maciej Bieniek
c2450c1112 Use snapshot testing in GIOS sensor (#115876)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 12:32:11 +02:00
Maciej Bieniek
c8d52c02c5 Use snapshot testing in NextDNS (#115879)
* Use snapshot testing in NextDNS sensor

* Use snapshot testing in NextDNS switch

* Use snapshot testing in NextDNS binary sensor

* Use snapshot testing in NextDNS button

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-20 12:31:20 +02:00
Michael
354c20a57b Automatic cleanup of entity and device registry in AVM FRITZ!SmartHome (#114601) 2024-04-20 12:13:56 +02:00
J. Nick Koston
0ea1564248 Bump bluetooth-adapters to 0.19.0 (#115864) 2024-04-20 01:36:46 +02:00
Maciej Bieniek
ffd6635c14 Bump nettigo_air_monitor to version 3.0.0 (#115853)
Bump nettigo_air_monitor to version 3.0.0

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-19 20:25:57 +02:00
Maciej Bieniek
f9ff3165af Bump nextdns to version 3.0.0 (#115854)
Bump nextdns to version 3.0.0

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-19 20:25:07 +02:00
Jan Bouwhuis
a8025a8606 Fix mutable objects in group registry class (#115797) 2024-04-19 18:41:29 +02:00
J. Nick Koston
4529268544 Ensure scripts with timeouts of zero timeout immediately (#115830) 2024-04-19 18:24:54 +02:00
slyoldfox
ebbcad17c6 Add scheduled mode to renault charge mode (#115427)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2024-04-19 18:22:12 +02:00
avee87
18d6581523 Fix Hyperion light not updating state (#115389) 2024-04-19 18:21:21 +02:00
Joost Lekkerkerker
cc2e0fd921 Make Withings recoverable after internet outage (#115124) 2024-04-19 18:18:32 +02:00
Joost Lekkerkerker
c108c7df38 Add reauth flow to Google Tasks (#109517)
* Add reauth flow to Google Tasks

* Update homeassistant/components/google_tasks/config_flow.py

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

* Add tests

* Reauth

* Remove insta reauth

* Fix

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-04-19 17:38:39 +02:00
Simone Chemelli
ff83d9acff Add missing media_player features to Samsung TV (#115788)
* add missing features

* fix snapshot
2024-04-19 16:45:19 +02:00
Maciej Bieniek
b462fdbf51 Bump gios to version 4.0.0 (#115822)
Bump gios to version 4.0.0

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-19 15:52:09 +02:00
Jan Bouwhuis
5b082ed669 Add group tests with mixed domain entities (#115849) 2024-04-19 14:48:18 +02:00
dependabot[bot]
f8738d9263 Bump actions/download-artifact from 4.1.4 to 4.1.5 (#115841) 2024-04-19 12:22:09 +02:00
dependabot[bot]
8d7ef6ea9a Bump actions/upload-artifact from 4.3.1 to 4.3.2 (#115842) 2024-04-19 12:11:08 +02:00
J. Nick Koston
79c9db4089 Bump aiodiscover to 2.1.0 (#115823) 2024-04-19 09:43:02 +02:00
hahn-th
ed4f00279e Show default profiles in homematic cloud climate entity (#107348)
* Default names for visible profiles

* Increase number of devices in test

* remove unnecessary check

* Add testcase and split another into two

* Add type annotations and docstring

* Remove code which not belongs to the PR

* Add myself to codeowners
2024-04-19 08:09:48 +02:00
Joe Neuman
4cce75177a Add get_torrents service to qBittorrent integration (#106501)
* Upgrade QBittorrent integration to show torrents

This brings the QBittorrent integration to be more in line with the Transmission integration. It updates how the integration is written, along with adding sensors for Active Torrents, Inactive Torrents, Paused Torrents, Total Torrents, Seeding Torrents, Started Torrents.

* Remove unused stuff

* Correct name in comments

* Make get torrents a service with a response

* Add new sensors

* remove service

* Add service with response to get torrents list

This adds a service with a response to be able to get the list of torrents within qBittorrent

* update

* update from rebase

* Update strings.json

* Update helpers.py

* Update to satisfy lint

* add func comment

* fix lint issues

* another update attempt

* Fix helpers

* Remove unneccesary part in services.yaml and add translations

* Fix return

* Add tests

* Fix test

* Improve tests

* Fix issue from rebase

* Add icon for get_torrents service

* Make get torrents a service with a response

* remove service

* Add service with response to get torrents list

This adds a service with a response to be able to get the list of torrents within qBittorrent

* Update to satisfy lint

* Handle multiple installed integrations

* fix lint issue

* Set return types for helper methods

* Create the service method in async_setup

* Add CONFIG_SCHEMA

* Add get_all_torrents service

* fix lint issues

* Add return types and ServiceValidationError(s)

* Fix naming

* Update translations

* Fix tests
2024-04-19 07:56:37 +02:00
Robert Svensson
6b6324f48e Bump aiounifi to v75 (#115819) 2024-04-19 06:36:43 +02:00
Maciej Bieniek
e62ae90d81 Bump accuweather to version 3.0.0 (#115820)
Bump accuweather to version 3.0.0

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-18 20:24:10 -07:00
Matrix
814b7a4447 Bump yolink-api to 0.4.3 (#115794) 2024-04-19 03:14:14 +02:00
J. Nick Koston
1d6ae01baa Handle Bluetooth adapters in a crashed state (#115790)
* Skip bluetooth discovery for Bluetooth adapters in a crashed state

* fixes

* fixes

* adjust

* coverage

* coverage

* fix race
2024-04-18 15:06:53 -05:00
Ryan Mattson
05c37648c4 Add support for room sensor accessories assigned to a Honeywell (Lyric) Thermostat (#104343)
* Add support for room sensor accessories.

- Update coordinator to refresh and grab information about room sensor accessories assigned to a thermostat
- Add sensor entities for room humidity and room temperature
- Add devices to the registry for each room accessory
- "via_device" these entities through the assigned thermostat.

* fixed pre-commit issues.

* PR suggestions

- update docstring to reflect ownership by thermostat
- fixed potential issue where a sensor would not be added if its temperature value was 0

* fix bad github merge

* asyicio.gather futures for updating theromstat room stats
2024-04-18 20:50:11 +02:00
Or Evron
5702ab3059 Add zhimi.fan.za3 to xiaomi_miio workaround unable to discover device (#108310)
* add  zhimi.fan.za3 to workaround fix unable to discover issue

* Update __init__.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-18 20:48:37 +02:00
Brian Rogers
3a461c32ac Add battery binary sensor to Rachio hose timer (#115810)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-18 13:26:09 -05:00
J. Nick Koston
d48bd9b016 Deprecate async_track_state_change in favor of async_track_state_change_event (#115558) 2024-04-18 10:45:14 -05:00
J. Nick Koston
b18f1ac265 Migrate device_sun_light_trigger to use async_track_state_change_event (#115555)
* Migrate device_sun_light_trigger to use async_track_state_change_event

async_track_state_change is legacy and will eventually be deprecated after
all core usage is removed. There are only two places left

* coverage
2024-04-18 10:45:06 -04:00
J. Nick Koston
80d6cdad67 Small cleanups to translation loading (#115583)
- Add missing typing
- Convert a update loop to a set comp
- Save some indent
2024-04-18 10:42:44 -04:00
J. Nick Koston
588c260dc5 Skip processing websocket_api schema if it has no arguments (#115618)
* Skip processing websocket_api schema if has no arguments

About 40% of the websocket commands on first connection have
no arguments. We can skip processing the schema for these cases

* cover

* fixes

* allow extra

* Revert "allow extra"

This reverts commit 85d9ec36b30aa2aedecd8571c7ed734d0b0a9b05.

* match behavior
2024-04-18 10:41:08 -04:00
J. Nick Koston
ea8d4d0dca Add reauth support to oncue (#115667)
* Add reauth support to oncue

* review comments

* reauth on update failure

* coverage
2024-04-18 10:39:58 -04:00
J. Nick Koston
53c48537d7 Add bluetooth adapter model and manufacturer to config flow (#115780)
* Show bluetooth adapter model and manufacturer in config flow

If there are multiple adapters, it could be a bit difficult
to figure out which one is which

* Show bluetooth adapter model and manufacturer in config flow

If there are multiple adapters, it could be a bit difficult
to figure out which one is which

* reorder

* reorder

* names

* remove

* fix incomplete mocking

* more missing mocks
2024-04-18 10:39:32 -04:00
J. Nick Koston
fbdef7f5cd Bump habluetooth to 2.8.0 (#115789)
* Bump habluetooth to 2.8.0

Adds support for recovering some adapters that fail to initialize
due to kernel races

* bump lib

* tweak
2024-04-18 10:37:20 -04:00
Arjan van Balken
74afed3b6d Bump arris-tg2492lg to 2.2.0 (#107905)
Bumps arris-tg2492lg from 1.2.1 to 2.2.0
2024-04-18 15:52:03 +02:00
Marcin Wielgoszewski
90575bc496 Add hvac_action attribute to iAqualink Thermostat climate entities (#107803)
* Update climate.py

* Reorder if/else statements per @dcmeglio's suggestion

* Don't infer state, actually read it from the underlying device

* HVACAction has a HEATING state, not ON

* Update homeassistant/components/iaqualink/climate.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-18 15:37:11 +02:00
Lukasz Szmit
ceaf8f2402 Add support for payload_template in rest component (#107464)
* Add support for payload_template in rest component

* Update homeassistant/components/rest/schema.py

* Update homeassistant/components/rest/data.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-18 15:22:58 +02:00
vexofp
8ba1340c2e Clarify cover toggle logic; prevent opening when already open (#107920)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-18 14:58:16 +02:00
Jan Bouwhuis
3299bc5ddc Translate service validation errors (#115024)
* Move service validation error message to translation cache

* Fix test

* Revert unrelated change

* Address review comments

* Improve error message

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-18 14:36:03 +02:00
Erwin Douna
d5e5a16303 Add diagnostics platform to DSMR Reader (#115805)
* Add diagnostics platform

* Feedback

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-18 14:08:23 +02:00
Luca Angemi
844ff30a60 Add state class to mobile_app restore entity (#115798)
add state class
2024-04-18 08:06:51 -04:00
mkmer
28da10ad0d Handle connection error in honeywell (#108168)
* Handle connection error

* Catch connection error

* Add tests

* Add translation strings

* Clean up overlapping exceptions

* ServiceValidationError

* HomeAssistant Error translations

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-18 13:53:32 +02:00
Martin Hjelmare
47f0d5ed1f Add script to compare alexa locales with upstream (#114247)
* Add script to compare alexa locales with upstream

* Use a function in script

* Add test base

* Complete output assertion

* Add type annotation

* Add note to docstring

* Update script call example

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-04-18 13:41:34 +02:00
William Easton
aee620be9f Ambient Weather: Check for key existence before checking value (#115776) 2024-04-18 05:38:52 -06:00
Krzysztof Kwitt
a47c76fc40 Bump connect-box to 0.3.1 (#107852) 2024-04-18 13:18:14 +02:00
dependabot[bot]
4374ec767d Bump github/codeql-action from 3.25.0 to 3.25.1 (#115796)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-18 10:14:51 +02:00
J. Nick Koston
0398a481c3 Fix failing sanix tests (#115793)
Fixing failing sanix tests

Regenerate snapshot to match what actually happens. There is no
translation keys for these two
2024-04-18 09:25:03 +02:00
Keith Burzinski
14515b77bb Add valve entity support for ESPHome (#115341)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
2024-04-17 20:47:15 -05:00
J. Nick Koston
8fb551430d Bump bluetooth-auto-recovery to 1.4.1 (#115792) 2024-04-17 20:38:17 -05:00
J. Nick Koston
98ed6e7fe5 Bump habluetooth to 2.7.0 (#115783) 2024-04-17 17:47:40 -05:00
J. Nick Koston
b829f1030b Migrate snooze config flow to use eager_start (#115658) 2024-04-17 14:59:16 -05:00
Felipe Martins Diel
7188d62340 Bump Broadlink to 0.19.0 (#115742)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-17 14:37:38 -05:00
J. Nick Koston
11931cdb56 Simplify labels and areas template calls (#115673)
The labels and areas are already exposed on the object
2024-04-17 21:28:09 +02:00
Allen Porter
0aa7946208 Bump google-nest-sdm to 3.0.4 (#115731) 2024-04-17 21:23:58 +02:00
Joost Lekkerkerker
07a46f17d0 Add sanix sensor tests (#115763)
Add sanix tests
2024-04-17 21:20:12 +02:00
Sid
cdc49328be Address late reviews for the enigma2 config flow (#115768)
* Address late reviews for the enigma2 config flow

* fix tests

* review comments

* test for issues

* Apply suggestions from code review

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-17 21:08:10 +02:00
Jan Bouwhuis
8275512130 Add mqtt notify platform (#115653)
* Add mqtt notify platform

* Stale docstring
2024-04-17 20:07:11 +02:00
J. Nick Koston
0a78e9d4aa Replace aiohttp-zlib-ng[isal] with aiohttp-isal (#115777)
* Replace aiohttp-zlib-ng[isal] with aiohttp-isal

The extra was causing wheel builds to fail

Since isal works on all of our supported platforms we can
always use it and drop the need for zlib-ng

https://github.com/home-assistant/core/actions/runs/8725019072

https://github.com/bdraco/aiohttp-isal

* typo
2024-04-17 19:46:15 +02:00
Xander
d4b62adfdc Guard negative values for IPP states (#107446)
* Guard negative values for IPP states

* ruff format

* Update sensor.py

---------

Co-authored-by: Chris Talkington <chris@talkingtontech.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-17 13:38:12 -04:00
jan iversen
3202743b6c Cleanup modbus test mocks (#115412) 2024-04-17 19:10:09 +02:00
Ståle Storø Hauknes
dcd61ac086 Fix unrecoverable error when fetching airthings_ble data (#115699) 2024-04-17 11:47:29 -05:00
Erik Montnemery
e4280b2c00 Use aiohttp-zlib-ng[isal] (#115767) 2024-04-17 17:57:34 +02:00
Álvaro Fernández Rojas
7e9b5b1128 Allow selecting Air Quality mode for Airzone Cloud (#106769)
* airzone_cloud: add Air Quality mode select

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

* trigger CI

* trigger CI

* Update select.py

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

* airzone_cloud: select: remove AirzoneSelectDescriptionMixin usage

* airzone_cloud: select: rename AIR_QUALITY_DICT

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-17 17:11:29 +02:00
Christopher Fenner
9bae6d694d Add secondary temperature sensor for DHW in ViCare (#106612)
* add temp2 sensor

* Update strings.json
2024-04-17 17:08:23 +02:00
J. Nick Koston
f62a3a7176 Simplify config_entries entity registry filter (#115678) 2024-04-17 09:42:23 -05:00
J. Nick Koston
7a67304301 Bump habluetooth to 2.6.0 (#115724) 2024-04-17 09:41:42 -05:00
Erik Montnemery
08b565701c Include hash of requirements.txt in venv cache key (#115759) 2024-04-17 16:37:49 +02:00
Joost Lekkerkerker
dfec91d274 Remove obsolete translation keys in Sanix (#115764) 2024-04-17 16:11:42 +02:00
Mike Degatano
f1ebe9d20a Add repairs to hassio manifest (#115486)
* Add repairs to hassio manifest

* Remove unnecessary fixture
2024-04-17 15:51:29 +02:00
J. Nick Koston
bd2efffb4a Reduce duplicate code in the device registry (#115677) 2024-04-17 15:50:39 +02:00
J. Nick Koston
45f025480e Avoid linear search to remove a label from the entity registry (#115674)
* Avoid linear search to remove a label from the entity registry

* simplify
2024-04-17 15:47:56 +02:00
J. Nick Koston
8cf14c9268 Avoid linear search to clear labels and areas in the device registry (#115676) 2024-04-17 15:46:59 +02:00
J. Nick Koston
9ca24ab2a2 Avoid linear search to remove labels and floors from area registry (#115675)
* Avoid linear search to remove labels and floors from area registry

* simplify
2024-04-17 15:45:40 +02:00
Sid
be0926b7b8 Add config flow to enigma2 (#106348)
* add config flow to enigma2

* Apply suggestions from code review

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

* fix suggested change

* use parametrize for config flow tests

* Restore PLATFORM_SCHEMA and add create_issue to async_setup_platform

* fix docstring

* remove name, refactor config flow

* bump dependency

* remove name, add verify_ssl, use async_create_clientsession

* use translation key, change integration type to device

* Bump openwebifpy to 4.2.1

* cleanup, remove CONF_NAME from entity, add async_set_unique_id

* clear unneeded constants, fix tests

* fix tests

* move _attr_translation_key out of init

* update test requirement

* Address review comments

* address review comments

* clear strings.json

* Review coments

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-17 15:21:54 +02:00
Erik Montnemery
764a0f29cc Allow [##:##:##] type keypad address in homeworks (#115762)
Allow [##:##:##] type keypad address
2024-04-17 15:04:37 +02:00
Erik Montnemery
e45583b83b Fix homeworks import flow (#115761) 2024-04-17 15:00:10 +02:00
Erik Montnemery
3f62267a48 Fix flaky qld_bushfire test (#115757) 2024-04-17 14:29:49 +02:00
Tomasz
864c80fa55 Add Sanix integration (#106785)
* Add Sanix integration

* Add Sanix integration

* Add sanix pypi package

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Add Sanix integration

* Fix ruff

* Fix

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2024-04-17 14:24:34 +02:00
epenet
92aae4d368 Bump renault-api to 0.2.2 (#115738) 2024-04-17 14:23:47 +02:00
Erik Montnemery
5c018f6ffc Improve standard library violation check in hassfest (#115752)
* Improve standard library violation check in hassfest

* Improve prints

* Improve error message
2024-04-17 14:10:26 +02:00
J. Nick Koston
cb16465539 Keep track of top level components (#115586)
* Keep track of top level components

Currently we have to do a set comp for icons, translations,
and integration platforms every time to split the top level
components from the platforms. Keep track of the top level
components in a seperate set so avoid having to do the setcomp
every time.

* remove impossible paths

* remove unused code

* preen

* preen

* fix

* coverage and fixes

* Update homeassistant/core.py

* Update homeassistant/core.py

* Update tests/test_core.py
2024-04-17 13:23:20 +02:00
Erik Montnemery
fee1f2833d Fix hassfest requirements check (#115744)
* Fix hassfest requirements check

* Add electrasmart to ignore list
2024-04-17 12:27:48 +02:00
Erik Montnemery
ff1ac1a544 Remove useless any in gen_requirements_all.comment_requirement (#115751) 2024-04-17 12:12:51 +02:00
Erik Montnemery
a3c767da2d Correct normalize_package_name (#115750) 2024-04-17 12:03:06 +02:00
Erik Montnemery
ba4731ecb4 Remove stale packages from uncommenting when building wheels (#115700) 2024-04-17 11:54:53 +02:00
J. Nick Koston
dae56222e9 Bump orjson to 3.10.1 (#115728)
changelog: https://github.com/ijl/orjson/compare/3.9.15...3.10.1
2024-04-17 09:13:55 +02:00
J. Nick Koston
34c3e523b4 Bump aiohttp to 3.9.5 (#115727)
changelog: https://github.com/aio-libs/aiohttp/compare/v3.9.4...v3.9.5
2024-04-17 09:10:06 +02:00
c0ffeeca7
20ff101015 Multiple data disks detected: tweak strings (#115713)
* Multiple data disks: tweak strings

* Fix typos

* Update homeassistant/components/hassio/strings.json

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-17 09:06:47 +02:00
Erik Montnemery
537b00db9a Fix stale comment in wheels.yml (#115736) 2024-04-17 08:50:33 +02:00
Jesse Hills
94a66fa648 Bump aioesphomeapi to 24.1.0 (#115729) 2024-04-17 15:39:38 +12:00
J. Nick Koston
6dcfe861fd Bump habluetooth to 2.5.2 (#115721) 2024-04-16 18:34:57 -05:00
Maciej Bieniek
e7076ac83f Use separate data coordinators for AccuWeather observation and forecast (#115628)
* Remove forecast option

* Update strings

* Use separate DataUpdateCoordinator for observation and forecast

* Fix tests

* Remove unneeded variable

* Separate data coordinator classes

* Use list comprehension

* Separate coordinator clasess to add type annotations

* Test the availability of the forecast sensor entity

* Add DataUpdateCoordinator types

* Use snapshot for test_sensor()

---------

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-17 00:00:16 +02:00
Joakim Plate
81036967f0 Correct unit for total usage in rfxtrx (#115719) 2024-04-16 22:35:55 +02:00
Matthew Hallonbacka
4a89e18b7e Fix check for missing parts on incoming SMS (#105068)
* Fix check for missing parts on incoming SMS

* Add tests for get_and_delete_all_sms function

* Fix CI issues

* Install libgammu-dev in CI

* Bust the venv cache

* Include python-gammu in requirements-all.txt

* Adjust install of dependencies

---------

Co-authored-by: Erik <erik@montnemery.com>
2024-04-16 21:34:09 +02:00
Mike Degatano
249a92d321 Unsupported if wrong image used on virtualization (#113882)
* Unsupported if wrong image used on virtualization

* Language tweaks

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

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2024-04-16 17:54:49 +02:00
BestPig
586d27320e Add Sound Mode selection in soundpal components (#106589) 2024-04-16 17:45:48 +02:00
J. Nick Koston
135fe26704 Bump httpcore to 1.0.5 (#115672)
Fixes missing handling of EndOfStream errors
2024-04-16 18:13:47 +03:00
Guido Schmitz
63c9aef71d Correct spelling of "Wi-Fi" in devolo_home_network (#106167)
* Use Wi-Fi in devolo_home_network

* Recreate snapshots

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-16 16:28:25 +02:00
myMartek
18ac9a7ba5 Add select hold to AppleTVs remote entity as possible command (#105764)
* Fixed home hold and added select hold

* Fixed home hold and added select hold

* Removed select_hold for now

* Fixed wrong import block sorting

* Fixed unit tests for AppleTV

* Added select hold command to AppleTV integration

* Removed home_hold and added hold_secs option for remote commands

* Added DEFAULT_HOLD_SECS

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-16 16:16:32 +02:00
Joost Lekkerkerker
e9894f8e91 Add extract media url service to media extractor (#100780)
* Exclude manifest files from youtube media extraction

* Add media_extractor service to extract media

* Fix snapshot

* Run ytdlp async

* Add icon

* Fix

* Fix
2024-04-16 16:13:03 +02:00
Erik Montnemery
7cd0fe3c5f Don't reload other automations when saving an automation (#80254)
* Only reload modified automation

* Correct check for existing automation

* Add tests

* Remove the new service, improve ReloadServiceHelper

* Revert unneeded changes

* Update tests

* Address review comments

* Improve test coverage

* Address review comments

* Tweak reloader code + add a targetted test

* Apply suggestions from code review

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

* Explain the tests + add more variations

* Fix copy-paste mistake in test

* Rephrase explanation of expected test outcome

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-16 15:58:57 +02:00
dependabot[bot]
679752ceb8 Bump github/codeql-action from 3.24.10 to 3.25.0 (#115686) 2024-04-16 12:33:10 +02:00
Martin Hjelmare
d1ed8d817c Remove Adafruit-BBIO from commented requirements (#115689) 2024-04-16 10:50:51 +02:00
Martin Hjelmare
093aee672c Fix ambient network test linting (#115691) 2024-04-16 10:19:23 +02:00
Thomas Kistler
0dd8ffd1f5 Add a new "Ambient Weather Network" integration (#105779)
* Adding a new "Ambient Weather Network" integration.

* Rebase and update code coverage.

* Addressed some reviewer comments.

* Remove mnemonics and replace with station names.

* Remove climate-utils

* Remove support for virtual stations.

* Rebase

* Address feedback

* Remove redundant errors

* Reviewer feedback

* Add icons.json

* More icons

* Reviewer feedback

* Fix test

* Make sensor tests more robust

* Make coordinator more robust

* Change update coordinator to raise UpdateFailed

* Recover from no station found error

* Dynamically set device name

* Address feedback

* Disable some sensors by default

* Reviewer feedback

* Change from hub to service

* Rebase

* Address reviewer feedback

* Reviewer feedback

* Manually rerun ruff on all files
2024-04-16 09:46:15 +02:00
Stephen Alderman
f62fb76765 Add Config Flow to LG Netcast (#104913)
* Add Config Flow to lg_netcast

* Add YAML import to Lg Netcast ConfigFlow

Deprecates YAML config support

* Add LG Netcast Device triggers for turn_on action

* Add myself to LG Netcast codeowners

* Remove unnecessary user_input validation check.

* Move netcast discovery logic to the backend

* Use FlowResultType Enum for tests

* Mock pylgnetcast.query_device_info instead of _send_to_tv

* Refactor lg_netcast client discovery, simplify YAML import

* Simplify CONF_NAME to use friendly name

Fix: Use Friendly name for Name

* Expose model to DeviceInfo

* Add test for testing YAML import when not TV not online

* Switch to entity_name for LGTVDevice

* Add data_description to host field in user step

* Wrap try only around _get_session_id

* Send regular request for access_token to ensure it display on the TV

* Stop displaying access token when flow is aborted

* Remove config_flow only consts and minor fixups

* Simplify media_player logic & raise new migration issue

* Add async_unload_entry

* Create issues when import config flow fails, and raise only a single yaml deprecation issue type

* Remove single use trigger helpers

* Bump issue deprecation breakage version

* Lint

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-16 09:29:02 +02:00
brave0d
a99ecb024e New BMW sensor for climate activity (#110287)
* add sensor with climate activity status

* Update strings.json

* use icon translation and is_available for sensor

* use enum with translations

* Return None if value is UNKNOWN

* fix getting the value: x.value

* fix getting the value: x instead of x.value

* Fix tests and pre-commit

---------

Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-04-16 09:24:32 +02:00
Tom Harris
c5c407b3bb Move Insteon configuration panel to config entry (#105581)
* Move Insteon panel to the config menu

* Bump pyinsteon to 1.5.3

* Undo devcontainer.json changes

* Bump Insteon frontend

* Update config_flow.py

* Code cleanup

* Code review changes

* Fix failing tests

* Fix format

* Remove unnecessary exception

* codecov

* Remove return from try

* Fix merge mistake

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-04-16 09:10:32 +02:00
theminer3746
1dfabf34c4 Fix typo in modbus integration strings.json (#115685) 2024-04-16 09:04:00 +02:00
J. Nick Koston
7e35fcf11a Bump sqlparse to 0.5.0 (#115681)
fixes https://github.com/home-assistant/core/security/dependabot/54
fixes https://github.com/home-assistant/core/security/dependabot/55
2024-04-16 08:30:51 +02:00
Marc Mueller
6a7a44c998 Add dataclass to store AdGuard data (#115668)
* Add dataclass to store AdGuard data

* Unify version call
2024-04-16 08:02:27 +02:00
J. Nick Koston
11ff00f637 Small speed up to async_prepare_setup_platform (#115662) 2024-04-15 17:30:05 -05:00
Collin Fair
4aab073bd2 Remove cloud dependency from islamic-prayer-times (#115146)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-15 15:42:33 -05:00
John Luetke
a16d98854a Remove pihole codeowner (#110384)
* Update codeowners

Removing myself from codeowners as I have been unable to dedicate time to this

* Update CODEOWNERS

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-15 22:32:14 +02:00
Sid
5f055a64bb Enable Ruff B017 (#115335) 2024-04-15 22:25:09 +02:00
Brian Rogers
c7e6f3696f Create base class for Rachio smart hose timer entities (#115475) 2024-04-15 14:22:44 -05:00
Heiko Carrasco
2c6ec506ad Update switchbot_api to 2.1.0 (#115529) 2024-04-15 21:09:34 +02:00
J. Nick Koston
a6a47c0b44 Make aiohttp_cors a top level import (#115563)
* Make aiohttp_cors a top level import

This was moved to a late import in #27935 but there is no
longer any need to import it late in the event loop as aiohttp_cors
is listed in pyproject.toml so it will always be available

* drop requirements as they are all top level now

* drop requirements as they are all top level now

* adjust
2024-04-15 21:06:59 +02:00
J. Nick Koston
2ec588d2a6 Migrate websocket_api sensor to use shorthand attrs (#115620) 2024-04-15 20:40:31 +02:00
J. Nick Koston
dbc5109fd8 Avoid update calls in state writes when attributes are empty (#115624) 2024-04-15 17:42:18 +02:00
Luke Lashley
9f852c6a58 Bump vacuum-map-parser-roborock to 0.1.2 (#115579)
bump to 0.1.2
2024-04-15 16:06:44 +02:00
Marc Mueller
881e201a15 Set platform for mypy (#115638) 2024-04-15 14:12:26 +02:00
J. Nick Koston
3963b3994b Small cleanups to the rate limit helper (#115621) 2024-04-15 13:42:28 +02:00
J. Nick Koston
15ecd3ae31 Fix flaky zwave update entity delay test (#115552)
The test assumed the node updates would happen in a specific order
but they can switch order based on timing.

Adjust to check to make sure all the nodes are called but make it
order independent
2024-04-15 13:12:09 +02:00
Shawn Weeks
b1bd9dc22c Bump emulated-roku to 0.3.0 to fix Sofabaton Support (#115452) 2024-04-14 21:43:11 -05:00
Brett Adams
5e1de6842d Fix Teslemetry sensor values (#115571) 2024-04-15 01:48:22 +02:00
Pete Sage
d40fc613aa Bump soco to 0.30.3 (#115607)
bump soco to 0.30.3
2024-04-14 18:39:07 -05:00
Marc Mueller
6422bc4c19 Set follow_imports to normal [mypy] (#115521) 2024-04-15 00:26:06 +02:00
Marc Hörsken
e08301f362 Move Alexa entity id generation into abstract config class (#115593)
This makes it possible to change the id schema in implementations.
2024-04-14 23:11:42 +02:00
J. Nick Koston
269429aa0c Only calculate the tplink emeter values once per update cycle (#115587)
The sensor platform has to read the native_value multiple times
during the state write cycle which means the integration calculated
the value multiple times. Switch to using _attr_native_value to
ensure the calculations in the library are only done once per
state write.

To demonstrate this issue,
+        _LOGGER.warning("Fetch name value for %s", self.entity_id)
was added to `def native_value`:
```
2024-04-14 06:58:52.506 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_current_consumption
2024-04-14 06:58:52.506 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_total_consumption
2024-04-14 06:58:52.507 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_today_s_consumption
2024-04-14 06:58:52.507 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_voltage
2024-04-14 06:58:52.508 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_current
2024-04-14 06:58:52.509 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_current_consumption
2024-04-14 06:58:52.510 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_total_consumption
2024-04-14 06:58:52.510 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_today_s_consumption
2024-04-14 06:58:52.510 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_voltage
2024-04-14 06:58:52.510 WARNING (MainThread) [homeassistant.components.tplink.sensor] Fetch name value for sensor.kasa_smart_plug_542b_0_kasa_smart_plug_542b_0_current
```
2024-04-14 20:38:28 +02:00
jan iversen
7cfd6a04d3 Modbus: Bump pymodbus v3.6.8 (#115574) 2024-04-14 19:22:42 +02:00
J. Nick Koston
5f00b9207d Small cleanups to script (#115565) 2024-04-14 10:47:13 -05:00
Arie Catsman
131edea576 Replace lambda by attrgetter in enphase_envoy platform value_fn (#115569) 2024-04-14 10:41:25 -05:00
Arie Catsman
6092894ce5 For new installs make enphase_envoy phase entities default disabled (#115577) 2024-04-14 10:41:00 -05:00
Shay Levy
291df6dafe Bump aioshelly to 9.0.0 (#114025)
* Update Shelly to use initialize from aioshelly

* Save indentation in _async_device_connect

* Use firmware_supported property from aioshelly

* Review comments

* Bump aioshelly

* Fix lint errors

* Test RPC initialized update
2024-04-14 18:07:26 +03:00
J. Nick Koston
33412dd9f6 Remove unused legacy state translations (#112023)
* Remove unused state translations

There have been replaced with entity translations
https://github.com/home-assistant/developers.home-assistant/pull/1557
https://github.com/home-assistant/core/pull/82701

* nothing does merging anymore

* useless dispatch

* remove

* remove platform code from hassfest

* preen

* Update homeassistant/helpers/translation.py

* ruff

* fix merge

* check is impossible now since we already know if translations exist or not

* keep the function for now

* remove unreachable code since we filter out `.` before now

* reduce

* reduce

* fix merge conflict (again)
2024-04-14 07:13:17 -04:00
Sid
0200d1aa66 Unignore Ruff UP006, UP007 (#115533) 2024-04-14 00:26:58 -05:00
Sid
c24ae01a43 Unignore Ruff E731 (#115564) 2024-04-14 00:15:10 -05:00
Sid
3799d20d43 Enable Ruff B905 (#114197) 2024-04-14 00:14:26 -05:00
J. Nick Koston
b70edb89bf Fix missing Home in listener deprecation message (#115559) 2024-04-13 20:44:07 -05:00
J. Nick Koston
0feea624f9 Migrate rfxtrx to use async_track_state_change_event (#115556) 2024-04-13 20:37:01 -05:00
J. Nick Koston
41f5325ce3 Refactor _async_setup_component to remove need for C901 (#115553) 2024-04-13 19:46:37 -05:00
J. Nick Koston
8da7de1fea Remove attr usage in event helper (#115554) 2024-04-13 19:46:23 -05:00
J. Nick Koston
dad03e7283 Remove sleep in async_setup_component (#115515)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-04-13 19:34:28 -05:00
J. Nick Koston
14b794b0f7 Migrate config entry reauth to use eager_start (#115549) 2024-04-13 18:38:33 -05:00
J. Nick Koston
7e84158fad Avoid double dict conversion in bluetooth serialize_entity_description (#115551) 2024-04-13 18:08:38 -05:00
J. Nick Koston
09b209245a Only calculate native_value once in mobile_app (#115550)
native_value is read a few times during the state write.

Use _attr_native_value so its only calculated once
2024-04-13 18:57:12 -04:00
Mr. Bubbles
927ea14562 Add exception translations to Bring integration (#115547)
* Add exception translations

* Add test for exceptions

* Remove unnecessary logging
2024-04-14 00:26:37 +02:00
J. Nick Koston
4955364948 Fix advantage_air disabled entity tests (#115548)
* Fix advantage_air disabled entity test

* fix both
2024-04-13 18:13:19 -04:00
J. Nick Koston
0b3627b59e Add additional cached_property to camera entities (#115075) 2024-04-13 16:50:11 -05:00
J. Nick Koston
dee99c764b Complete ESPHome media_player coverage (#114352) 2024-04-13 16:29:14 -05:00
J. Nick Koston
ee535ee611 Ensure test async_create_task eager start behavior matches production (#115517) 2024-04-13 15:58:52 -05:00
J. Nick Koston
d9617a8e3a Enable eager_start for weather platform update (#115496) 2024-04-13 15:56:14 -05:00
J. Nick Koston
0bd4064212 Update ollama config_flow task to use eager_start (#115455)
The test now adds a delay because it finished too fast
2024-04-13 16:54:21 -04:00
J. Nick Koston
f452c5b84e Add forecast subscription failure test case to nws (#115541) 2024-04-13 15:48:23 -05:00
J. Nick Koston
f1ac33c246 Fix unmocked remote socket calls in sunweg tests (#115546)
Fix unmocked calls in sunweg tests
2024-04-13 16:36:33 -04:00
J. Nick Koston
edd75a9d5f Fix race in TimestampDataUpdateCoordinator (#115542)
* Fix race in TimestampDataUpdateCoordinator

The last_update_success_time value was being set after the listeners
were fired which could lead to a loop because the listener may
re-trigger an update because it thinks the data is stale

* coverage

* docstring
2024-04-13 16:35:07 -04:00
J. Nick Koston
08e2b655be Migrate EntityRegistryDisabledHandler to use async_schedule_reload (#115544)
async_schedule_reload ensures that any setup retries are cancelled
before executing the reload. Its unlikely in this case but its
still possible
2024-04-13 16:30:59 -04:00
J. Nick Koston
1a8857aa2e Migrate homekit ffmpeg task to use eager_start (#115543) 2024-04-13 16:29:55 -04:00
J. Nick Koston
82d0f478a5 Hold the reload lock while attempting config entry setup retry (#115538) 2024-04-13 15:26:41 -05:00
J. Nick Koston
b9d4d0e15d Avoid removing websocket_api subscription in mobile_app teardown (#115540) 2024-04-13 15:24:46 -05:00
J. Nick Koston
008c42e282 Bump py-synologydsm-api to 2.4.2 (#115499)
Co-authored-by: mib1185 <mail@mib85.de>
2024-04-13 14:38:37 -05:00
Marc Mueller
64a4d52b3c Update pillow to 10.3.0 (#115524) 2024-04-13 18:26:33 +02:00
Robert Resch
68ba4d57d5 Remove unused CI code (#115300) 2024-04-13 17:24:02 +02:00
Jan Bouwhuis
197070486f Set up notify group with the notify services in test (#115526) 2024-04-13 17:10:16 +02:00
Jan Bouwhuis
36bdda5669 Migrate demo notify platform (#115448)
* Migrate demo notify platform

* Update homeassistant/components/demo/notify.py

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

* Remove no needed tests

* Cleanup redundant attribute assignment

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-04-13 14:27:07 +02:00
Joost Lekkerkerker
5e8b46c670 Make color extractor single config entry (#115016)
* Make color extractor single config entry

* Make color extractor single config entry

* Fix
2024-04-13 13:04:39 +02:00
Jan Bouwhuis
38c7b99aef Make legacy notify group tests independent of demo platform (#115494) 2024-04-13 12:58:31 +02:00
Marc Mueller
27f6a7de43 Revert mypy_config formatting (#115518) 2024-04-13 10:48:34 +02:00
Toni Korhonen
84a975b61e Add Balboa spa temperature range state control (high/low) (#115285)
* Add temperature range switch (high/low) to Balboa spa integration.

* Change Balboa spa integration temperature range control from switch to select

* Balboa spa integration: Fix ruff formatting

* Balboa spa integration: increase test coverage

* Balboa spa integration review fixes: Move instance attributes as class attributes. Fix code comments.
2024-04-13 10:44:02 +02:00
Jan Bouwhuis
127c27c9a7 Isolate legacy notify tests (#115470)
* Isolate legacy notify tests

* Rebase

* Refactor
2024-04-13 10:14:58 +02:00
Sid
223fefbbfa Enable Ruff RUF018 (#115485) 2024-04-13 09:56:33 +02:00
Sid
1a9ff8c8fa Ignore Ruff RUF015 (#115481) 2024-04-13 09:46:04 +02:00
J. Nick Koston
bb9330135d Fix race in influxdb test (#115514)
The patch was still too late in #115442

There is no good candidate to patch here since the late operation
is the error log that is being tested.

Patching the logger did not seem like a good idea so I went with
patching to wait for the error to be emitted since emit is the public
API of the log handler and was less likely to change
2024-04-13 09:13:01 +02:00
Jan Bouwhuis
76fefaafb0 Move out demo notify tests to the notify platform (#115504)
* Move test file

* Make independent of demo platform

* Restore tests for demo platform for coverage
2024-04-13 08:18:45 +02:00
J. Nick Koston
0d0b77c9e4 Remove eager_start=False from zeroconf (#115498) 2024-04-13 00:09:42 -05:00
J. Nick Koston
af2c381a0c Bump zeroconf to 0.132.2 (#115505) 2024-04-13 00:05:08 -05:00
J. Nick Koston
b9899a441c Bump zeroconf to 0.132.1 (#115501) 2024-04-12 14:13:06 -10:00
Sid
d74be6d5fe Set Ruff RUF001-003 to ignore (#115477) 2024-04-13 00:51:36 +02:00
Bram Kragten
f16ee2ded9 Update strict connection static page (#115473) 2024-04-12 23:35:59 +02:00
dontinelli
6eaf3402c6 Add re-auth-flow to fyta integration (#114972)
* add re-auth-flow to fyta integration

* add strings for reauth-flow

* resolve typing error

* update based on review comments

* Update homeassistant/components/fyta/config_flow.py

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

* add async_auth

* adjustment based on review commet

* Update test_config_flow.py

* remove credentials

* Update homeassistant/components/fyta/config_flow.py

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

* Update tests/components/fyta/test_config_flow.py

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

* Update tests/components/fyta/test_config_flow.py

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

* Update conftest.py

* Update test_config_flow.py

* Aktualisieren von conftest.py

* Update test_config_flow.py

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-04-12 20:33:24 +02:00
karwosts
77d1e2c812 Allow customizing display name for energy device (#112834)
* Allow customizing display name for energy device

* optional typing and comment
2024-04-12 20:31:51 +02:00
Brett Adams
b266224ccd Add diagnostics to Teslemetry (#115195)
* Add diag

* Add diag and tests

* Fix redaction

* Add another energy redact

* Review Feedback

* Update snapshot

* Fixed the wrong integration

* Fix snapshot again

* Update tests/components/teslemetry/test_diagnostics.py

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-04-12 20:27:38 +02:00
epenet
bea4c52d10 Ignore coverage for aiohttp_resolver backport helper (#115177)
* Ignore coverage for aiohttp_resolver backport helper

* Adjust generate to sort core items

* Adjust validate to sort core items

* Split line

* Apply suggestion

Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>

* Fix suggestion

---------

Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2024-04-12 16:33:05 +02:00
Sid
6d22dd073c Bump ruff to 0.3.7 (#115451)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-04-12 16:03:23 +02:00
Robert Resch
348e1df949 Add strict connection (#112387)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-12 14:47:46 +02:00
Franck Nijhof
efe91815fb 2024.4.3 (#115463) 2024-04-12 13:20:48 +02:00
Marc Mueller
f70ce8abf9 Fix ci Python cache key (#115467) 2024-04-12 13:11:24 +02:00
Franck Nijhof
62eee52aed Bump version to 2024.4.3 2024-04-12 12:00:16 +02:00
Bram Kragten
7f6514b03c Update frontend to 20240404.2 (#115460) 2024-04-12 11:59:53 +02:00
Santobert
2ed1cfd68d Bump pybotvac to 0.0.25 (#115435)
Bump pybotvac
2024-04-12 11:59:50 +02:00
Allen Porter
a455e142ac Fix bug in rainbird switch when turning off a switch that is already off (#115421)
Fix big in rainbird switch when turning off a switch that is already off

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-12 11:59:45 +02:00
Jessica Smith
5fa06e5a9c Bump whirlpool-sixth-sense to 0.18.8 (#115393)
bump whirlpool to 0.18.8
2024-04-12 11:59:42 +02:00
J. Nick Koston
4aca39b49e Fix deadlock in holidays dynamic loading (#115385) 2024-04-12 11:59:39 +02:00
jan iversen
d055f98736 Solve modbus test problem (#115376)
Fix test.
2024-04-12 11:59:35 +02:00
jan iversen
98bc7c0ed2 Secure against resetting a non active modbus (#115364) 2024-04-12 11:59:32 +02:00
J. Nick Koston
0d62e2e92a Bump bleak-retry-connector 3.5.0 (#115328) 2024-04-12 11:59:28 +02:00
J. Nick Koston
db5343164f Ensure automations do not execute from a trigger if they are disabled (#115305)
* Ensure automations are stopped as soon as the stop future is set

* revert script changes and move them to #115325
2024-04-12 11:59:24 +02:00
TheJulianJES
5c2e9142fa Bump zha-quirks to 0.0.114 (#115299) 2024-04-12 11:59:21 +02:00
Shay Levy
f941e5d5bb Fix Aranet failure when the Bluetooth proxy is not providing a device name (#115298)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-12 11:59:17 +02:00
Joost Lekkerkerker
150145c9b1 Bump yt-dlp to 2024.04.09 (#115295) 2024-04-12 11:59:14 +02:00
jan iversen
db2005d4ec Bump pymodbus v3.6.7 (#115279)
Bump pymodbus v3.6.7.
2024-04-12 11:59:11 +02:00
Stefan Agner
08bd269696 Support backup of add-ons with hyphens (#115274)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-12 11:59:07 +02:00
Klaas Schoute
5723ed28d3 Bump forecast-solar lib to v3.1.0 (#115272) 2024-04-12 11:59:04 +02:00
Allen Porter
14da34cd4d Fix Google Tasks parsing of remove responses (#115258) 2024-04-12 11:59:01 +02:00
J. Nick Koston
f284273ef6 Fix misssing timeout in caldav (#115247) 2024-04-12 11:58:57 +02:00
On Freund
fc60426213 Improve Risco exception logging (#115232) 2024-04-12 11:58:54 +02:00
On Freund
922cc81a62 Configurable maximum concurrency in Risco local (#115226)
* Configurable maximum concurrency in Risco local

* Show advanced Risco options in advanced mode
2024-04-12 11:58:50 +02:00
Mike Degatano
4c6fad8dc3 Add support for adopt data disk repair (#114891) 2024-04-12 11:58:46 +02:00
J. Nick Koston
733e2ec57a Bump aiohttp to 3.9.4 (#110730)
* Bump aiohttp to 3.9.4

This is rc0 for now but will be updated when the full release it out

* cleanup cruft

* regen

* fix tests (these changes are fine)

* chunk size is too small to read since boundry is now enforced

* chunk size is too small to read since boundry is now enforced
2024-04-12 11:55:52 +02:00
Bram Kragten
d59af22b69 Update frontend to 20240404.2 (#115460) 2024-04-12 11:50:22 +02:00
Jan Bouwhuis
a213de3db5 Add service schema tests for notify entity platform (#115457)
* Add service schema tests for notify entity platform

* Use correct entity

* Assert on exception value
2024-04-12 10:40:17 +02:00
J. Nick Koston
f3a3e6821b Switch imap push coordinator to use eager_start (#115454)
When I turned on eager_start here the data would always end up being
None because _async_update_data always returned None. To fix this
it now returns the value from the push loop. It appears this race
would happen in production so this may be a bugfix but since
I do not use this integration it could use a second set of eyes
2024-04-12 09:14:35 +02:00
Sid
9bf87329da Enable Ruff FLY002 rule (#115112)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-04-12 09:04:16 +02:00
Stefan Agner
35d3f2b29b Support backup of add-ons with hyphens (#115274)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-12 09:02:22 +02:00
Joost Lekkerkerker
adafdb2b2d Use enum device class in Netatmo health index sensor (#115409) 2024-04-12 08:40:27 +02:00
Joost Lekkerkerker
6cc2b1e10a Use enum device class in Netatmo wind direction (#115413)
* Use enum device class in Netatmo wind direction

* Use enum device class in Netatmo wind direction

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-12 08:39:59 +02:00
J. Nick Koston
fb5fc136e8 Avoid falling back to event loop import on ModuleNotFound (#115404) 2024-04-11 16:32:47 -10:00
J. Nick Koston
28bdbec14e Bypass ConfigEntry __setattr__ in __init__ (#115405)
ConfigEntries.async_initialize was trigger asyncio warnings because of the CPU time
to call __setattr__ for every variable for each ConfigEntry being loaded at startup
2024-04-11 22:16:01 -04:00
Allen Porter
c7cb0237d1 Fix bug in rainbird switch when turning off a switch that is already off (#115421)
Fix big in rainbird switch when turning off a switch that is already off

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-11 22:14:52 -04:00
Marc Mueller
1b24e78dd9 Improve FlowHandler menu_options typing (#115296) 2024-04-11 22:14:37 -04:00
Marc Mueller
a48f2803b2 Add py.typed file (#115446) 2024-04-11 22:14:10 -04:00
J. Nick Koston
e3680044fe Fix flakey influxdb test (#115442) 2024-04-11 13:26:03 -10:00
Luke Lashley
cfda8f64b4 Bump python-roborock to 2.0.0 (#115449) 2024-04-12 01:04:51 +02:00
J. Nick Koston
2e8f4743eb Fix flakey mobile app webhook test (#115447) 2024-04-11 12:17:01 -10:00
Sid
a093f943d7 Use library classes instead of namedtuple in ipma tests (#115372) 2024-04-12 01:03:10 +03:00
J. Nick Koston
137514edb7 Bump aiohttp to 3.9.4 (#110730)
* Bump aiohttp to 3.9.4

This is rc0 for now but will be updated when the full release it out

* cleanup cruft

* regen

* fix tests (these changes are fine)

* chunk size is too small to read since boundry is now enforced

* chunk size is too small to read since boundry is now enforced
2024-04-11 11:58:56 -10:00
Marc Mueller
db38da8eb8 Update pytest warnings filter (#115275) 2024-04-11 23:35:15 +02:00
J. Nick Koston
d9fc9f2e0c Convert async_setup calls for auth sub-modules to callback functions (#115443) 2024-04-11 11:22:50 -10:00
Santobert
c14f11fbf0 Bump pybotvac to 0.0.25 (#115435)
Bump pybotvac
2024-04-11 21:57:18 +02:00
TheJulianJES
6ba7a30cc8 Fix Codecov upload with token (#115384)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-11 09:51:09 -10:00
Allen Porter
6c1bc2a9f4 Reduce scope of diagnostics tests for rtsp_to_webrtc to not depend on global state (#115422) 2024-04-11 18:13:39 +02:00
Jessica Smith
f558121752 Bump whirlpool-sixth-sense to 0.18.8 (#115393)
bump whirlpool to 0.18.8
2024-04-11 16:26:05 +02:00
Jan Bouwhuis
10076e6523 Add notify entity component (#110950)
* Add notify entity component

* Device classes, restore state, icons

* Add icons file

* Add tests for kitchen_sink

* Remove notify from no_entity_platforms in hassfest icons, translation link

* ruff

* Remove `data` feature

* Only message support

* Complete initial device classes

* mypy pylint

* Remove device_class implementation

* format

* Follow up comments

* Remove _attr_supported_features

* Use setup_test_component_platform

* User helper at other places

* last comment

* Add entry unload test and non async test

* Avoid default mutable object in constructor
2024-04-11 12:04:08 +02:00
Steven B
df5d818c08 Make ring device generic in RingEntity (#115406)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2024-04-11 11:31:37 +02:00
Mike Degatano
5308e02c99 Add support for adopt data disk repair (#114891) 2024-04-11 11:23:10 +02:00
Steven B
6954fcc8ad Add strict typing to ring integration (#115276) 2024-04-11 10:10:56 +02:00
Jan Bouwhuis
3546ca386f Use freezer on diagnostics test (#115398)
* Use freezer on diagnostics test

* Patch correctly
2024-04-11 09:40:16 +02:00
Joost Lekkerkerker
4224234b7a Add binary sensor to Netatmo (#115119)
* Add binary sensor to Netatmo

* Update homeassistant/components/netatmo/binary_sensor.py

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

* Sigh

* Fix

* Fix

* Fix

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-04-11 07:46:07 +02:00
J. Nick Koston
d9b74fda89 Add PYTHONASYNCIODEBUG to the dev container env (#115392) 2024-04-11 07:26:30 +02:00
J. Nick Koston
f0c8c2a684 Adjust importlib helper to avoid leaking memory on re-raise (#115377) 2024-04-10 15:19:17 -10:00
J. Nick Koston
6bd6adc4f5 Avoid calling valid_entity_id when adding entities if they are already registered (#115388) 2024-04-10 15:18:47 -10:00
J. Nick Koston
288f3d84ba Fix duplicate automation entity state writes (#115386)
_async_attach_triggers was writing state, async_enable was
writing state, and all of them were called async_added_to_hass

After entity calls async_added_to_hass via add_to_platform_finish
it will also write state so there were some paths that
did it 3x

async_disable was also writing state when the entity was
removed
2024-04-10 21:15:21 -04:00
J. Nick Koston
e17c4ab4e3 Fix flakey tessie media_player test (#115391) 2024-04-10 14:18:11 -10:00
Jan Bouwhuis
be8adf9d29 Fix zha test by tweaking the log level (#115368) 2024-04-10 13:10:46 -10:00
J. Nick Koston
bbecb98927 Fix type on known_object_ids in _entity_id_available and async_generate_entity_id (#115378) 2024-04-10 11:44:25 -10:00
J. Nick Koston
9d7e20f9ca Fix deadlock in holidays dynamic loading (#115385) 2024-04-10 23:38:34 +02:00
On Freund
6394e25f75 Improve Risco exception logging (#115232) 2024-04-10 11:26:15 -10:00
jan iversen
220801bf1c Secure against resetting a non active modbus (#115364) 2024-04-10 22:09:10 +02:00
jan iversen
8d6473061c Solve modbus test problem (#115376)
Fix test.
2024-04-10 21:39:53 +02:00
Åke Strandberg
b99cdf3144 Add missing oauth2 error strings to myuplink (#115315)
Add some oauth2 error strings

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-10 17:52:08 +02:00
J. Nick Koston
63545ceaa4 Ensure automations do not execute from a trigger if they are disabled (#115305)
* Ensure automations are stopped as soon as the stop future is set

* revert script changes and move them to #115325
2024-04-10 08:42:18 -04:00
J. Nick Koston
f80894d56f Stop scripts with eager tasks (#115340) 2024-04-10 08:41:13 -04:00
Shay Levy
a6b93ea8ac Fix Aranet failure when the Bluetooth proxy is not providing a device name (#115298)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-10 14:58:35 +03:00
Joakim Sørensen
012509f683 Add documentation link for custom integrations in diagnostics (#115336)
* Add documentation link for custom integrations in diagnostics

* Enable custom integrations in test_download_diagnostics
2024-04-10 11:36:25 +02:00
Marc Mueller
8aa3ea575f Update pytest-xdist to 3.5.0 (#111266) 2024-04-10 08:56:08 +02:00
Sid
3efee10b95 Enable Ruff RUF013 (#115333) 2024-04-10 08:55:59 +02:00
Joost Lekkerkerker
7e1a5b19c4 Add entity translations to Netatmo (#115104)
* Add entity translations to Netatmo

* Yes

* Remove

* Fix name
2024-04-10 08:50:27 +02:00
Sid
d61db732da Enable Ruff SLOT rules (#115043) 2024-04-09 18:57:27 -10:00
Collin Fair
0636ba340c Fix flakiness of test_measure_sliding_window (#115322) 2024-04-09 18:28:06 -10:00
J. Nick Koston
2fdb420d1a Bump bleak-retry-connector 3.5.0 (#115328) 2024-04-09 18:04:52 -10:00
Marc Mueller
2decf6c023 Use dict instead of MutableMapping [recorder] (#115318) 2024-04-09 15:08:31 -10:00
Marc Mueller
d8c8d1a297 Use dict instead of MutableMapping [extra_state_attributes] (#115319) 2024-04-09 15:06:11 -10:00
Luke Lashley
968de08e4b Bump python-roborock to 1.0.0 (#115324)
* refactor base code

* refactor tests code
2024-04-09 20:50:46 -04:00
Jan-Philipp Benecke
fa3cba5b87 Bump codecov/codecov-action to v4.3.0 (#115317) 2024-04-09 12:15:30 -10:00
J. Nick Koston
f527fd0947 Improve error reporting when an integration tries to create a task in a thread (#115307) 2024-04-09 11:11:22 -10:00
TheJulianJES
6ed2190c29 Bump zha-quirks to 0.0.114 (#115299) 2024-04-09 15:22:46 -04:00
Joost Lekkerkerker
076e6ce6e6 Bump yt-dlp to 2024.04.09 (#115295) 2024-04-09 21:10:22 +02:00
J. Nick Koston
469b01bd64 Migrate apple_tv to use async_schedule_reload (#115241) 2024-04-09 07:05:23 -10:00
J. Nick Koston
d2a3473454 Migrate elkm1 to use async_schedule_reload (#115240) 2024-04-09 07:05:09 -10:00
J. Nick Koston
11af7d91ff Optimize _async_track_event for the single key common case (#115242) 2024-04-09 07:04:50 -10:00
J. Nick Koston
1de1e413a9 Migrate script entities to use more shorthand attrs (#115245) 2024-04-09 07:04:32 -10:00
J. Nick Koston
59d92f16bd Use shorthand attributes in automation for name (#115246) 2024-04-09 07:04:12 -10:00
J. Nick Koston
f8aec03c03 Migrate hyperion to use async_update_reload_and_abort (#115238) 2024-04-09 18:37:01 +02:00
Joost Lekkerkerker
763df83cdb Remove Nextbus YAML import (#115277) 2024-04-09 18:34:35 +02:00
Joost Lekkerkerker
e7c247f1f0 Remove Twitch YAML import (#115278) 2024-04-09 18:34:29 +02:00
Klaas Schoute
d2dcf04946 Bump forecast-solar lib to v3.1.0 (#115272) 2024-04-09 18:34:04 +02:00
Paulus Schoutsen
2df6f1849f Add OpenAI conversation entity (#114942)
* Add OpenAI conversation entity

* Add migration
2024-04-09 11:10:03 -04:00
jan iversen
51d5d51248 Bump pymodbus v3.6.7 (#115279)
Bump pymodbus v3.6.7.
2024-04-09 17:09:55 +02:00
Jesse Hills
68384bba67 Send/receive Voice Assistant audio via ESPHome native API (#114800)
* Protobuf audio test

* Remove extraneous code

* Rework voice assistant pipeline

* Move variables

* Fix reading flags

* Dont directly put to queue

* Bump aioesphomeapi to 24.0.0

* Update tests

- Add more tests for API pipeline
- Convert some udp tests to use api pipeline
- Update fixtures for new device info flags

* Fix bad merge

---------

Co-authored-by: Michael Hansen <mike@rhasspy.org>
2024-04-09 10:55:59 -04:00
konsti
cad4c3c0c2 Remove pip jemalloc config from dockerfile (#115206) 2024-04-09 15:08:55 +02:00
pleum
7bf2baa236 Add additional Vital 100S model to vesync (#113838) 2024-04-09 10:18:37 +01:00
Steven B
4cd2351bcc Update and migrate ring non string unique ids (#115265)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-08 23:08:46 -10:00
Joost Lekkerkerker
80450adb1a Remove Epson Workforce integration (#115201)
* Remove Epson Workforce integration

* Remove Epson Workforce integration
2024-04-09 10:38:17 +02:00
Steven B
bf3eb463ae Wrap tplink exceptions caused by user actions inside HomeAssistantError (#114919) 2024-04-08 22:35:25 -10:00
Steven B
0a57641f3f Bump ring_doorbell library to 0.8.11 (#115263) 2024-04-08 22:12:50 -10:00
On Freund
a852a38d24 Configurable maximum concurrency in Risco local (#115226)
* Configurable maximum concurrency in Risco local

* Show advanced Risco options in advanced mode
2024-04-09 09:59:27 +02:00
Robert Contreras
af7d0187cb Add tests to Home Connect integration (#114214)
* Add tests to Home Connect integration

* Fix misspelling

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

* Changes to tests with properly setup fixtures.

* Consolidated api tests, patched library instead of code

* Consolidate sensor edge cases, switch mock assertion to call_count

* Adjust assertion

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-09 08:52:39 +02:00
Allen Porter
4a7a22641e Fix Google Tasks parsing of remove responses (#115258) 2024-04-09 07:39:31 +02:00
Marc Mueller
d4500cf945 Improve recorder event typing (#115253) 2024-04-08 14:56:18 -10:00
J. Nick Koston
4e983d710f Fix misssing timeout in caldav (#115247) 2024-04-08 11:09:18 -10:00
J. Nick Koston
aa85e59c6f Migrate group to use shorthand attributes for name and icon (#115244) 2024-04-08 11:05:56 -10:00
J. Nick Koston
95958ac0ef Increase discovery flow init concurrency limit to 20 (#115230) 2024-04-08 11:05:40 -10:00
Jan-Philipp Benecke
44f8dbf86b Fix failing escea test in connection with greeneye_monitor (#115237)
* Fix failing escea test in connection with greeneye_monitor

* typing
2024-04-08 22:11:14 +02:00
J. Nick Koston
ca5ed274cb Deprecate calling async_listen and async_listen_once with run_immediately (#115169) 2024-04-08 10:07:54 -10:00
Luke Lashley
5ef42078a3 Add a service to get maps for Roborock (#111478)
* add service to get rooms

* fix linting

* add snapshot

* change map id
2024-04-08 21:40:59 +02:00
Sid
9cbed10372 Enable Ruff PYI041 (#115229) 2024-04-08 09:29:05 -10:00
Sid
cbbadf6256 Enable Ruff PYI036 (#115228) 2024-04-08 08:47:03 -10:00
Sergio Conde Gómez
f114ebd79d Remove @skgsergio from foscam and qingping codeowners (#115210) 2024-04-08 08:46:22 -10:00
Marc Mueller
4e94f11665 Use EventType for entity_registry_updated (#115187) 2024-04-08 08:44:59 -10:00
Sid
025c6f5e2e Add __slots__ to NodeClass classes (#115079)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-08 08:44:18 -10:00
J. Nick Koston
266e4f0c8b Migrate rfxtrx to use run_immediately=True for the device registry listener (#115165) 2024-04-08 08:29:27 -10:00
Marc Mueller
2fc0d8494d Use EventType for device_registry_updated (#115188) 2024-04-08 08:25:57 -10:00
Marc Mueller
0d18679c8f Use EventType for remaining registry events (#115189) 2024-04-08 08:25:39 -10:00
Marc Mueller
6116f11e6c Use EventType for system events (#115190) 2024-04-08 08:25:34 -10:00
Marc Mueller
a52a80f806 Always include old_state in EventStateChangedData [tests] (#115098) 2024-04-08 08:25:22 -10:00
Thomas55555
017b2fe685 Change scan interval for Husqvarna Automower (#115225)
* Change scan interval for Husqvarna Automower

* Also use const
2024-04-08 20:22:09 +02:00
Luca Angemi
fc1ebdaaa3 Add config message items selector to imap option flow (#115108)
* Update const.py

* Update config_flow.py

* Update coordinator.py

* Update coordinator.py

* Update strings.json

* Update config_flow.py

* Update const.py

* Update coordinator.py

* Update config_flow.py

* Update config_flow.py

* Update test_diagnostics.py

* Update const.py

* Update test_init.py

* Update test_diagnostics.py

* Update test_diagnostics.py

* Update test_diagnostics.py

* Update test_init.py

* Update test_diagnostics.py

* Update test_init.py

* Update test_diagnostics.py

* Update test_diagnostics.py

* Update test_diagnostics.py

* Update test_config_flow.py

* Update config_flow.py

* Update test_config_flow.py

* Update test_init.py

* Update const.py

* Only make text and headers optional

* Add message data tests

* Add message data test

* Update test_config_flow.py

* Update test message data

* Fix ruff

* Fix ruff

* Update test_init.py

* Update strings.json

---------

Co-authored-by: jbouwh <jan@jbsoft.nl>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-04-08 19:34:50 +02:00
Kim de Vos
f23e48f373 Add sensor for CPU and memory utilization for unifi device (#114986)
Add system stats to unifi device sensors
2024-04-08 19:29:54 +02:00
Paulus Schoutsen
f9a7e6bb9f Add migration logic to assist_pipeline (#115172) 2024-04-08 11:29:55 -04:00
Illia
cbaef096fa Add Arve integration (#113156)
* add Arve integration

* Update homeassistant/components/arve/config_flow.py

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

* Various fixes, changed scan interval to one minute

* coordinator implementation

* Code cleanup

* Moved device info to the entity.py, ArveDeviceEntityDescription to sensor.py

* delete refresh before adding entities

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

* Update tests/components/arve/test_config_flow.py

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

* Update tests/components/arve/conftest.py

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

* Changed value_fn in sensors.py, added typing to description

* Code cleanups, platfrom test implementation

* New code cleanups, first two working tests

* Created platform test, generated snapshots

* Reworked integration to get all of the customer devices

* new fixes

* Added customer id, small cleanups

* Logic of setting unique_id to the config flow

* Added test of abortion on duplicate config_flow id

* Added "available" and "device" properties fro ArveDeviceEntity

* small _attr_unique_id fix

* Added new test, improved mocking, various fixes

* Various cleanups and fixes

* microfix

* Update homeassistant/components/arve/strings.json

* ruff fix

---------

Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-08 17:24:32 +02:00
Sid
376aafc83e Enable Ruff INP001 (#115082) 2024-04-08 15:43:58 +02:00
Sid
f8b6629b26 Enable Ruff PGH rules (#115091) 2024-04-08 15:42:22 +02:00
Erwin Douna
85b453b86c Fix Downloader test cases and error title (#114847)
* Fix test cases

* Return value

* isdir change

* FIx test cases and error title

* Removing patch

* Tiny needless fine-tuning
2024-04-08 15:28:07 +02:00
Jan Bouwhuis
d9dada4fb3 Remove condition from ecobee humidifier attribute test (#115197)
Remove conditions from ecobee humidifier attribute test
2024-04-08 14:33:24 +02:00
Marc Mueller
53b4fd419a Update build system dependencies (#115102) 2024-04-08 11:18:20 +02:00
dependabot[bot]
c5f05908d7 Bump github/codeql-action from 3.24.9 to 3.24.10 (#115179) 2024-04-08 10:46:25 +02:00
gibwar
e403b50ddc Only reset requested utility meter with no tariff (#115170) 2024-04-08 10:05:46 +02:00
Niccolò Maggioni
f06b00c6d8 Fix hang in SNMP device_tracker implementation (#112815)
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-08 10:04:59 +02:00
Joost Lekkerkerker
ecda6b70ff Filter out fuzzy translations from Lokalise (#114968) 2024-04-08 10:04:16 +02:00
Jan Bouwhuis
8b5177e989 Add IMAP fetch service (#115127)
* Add IMAP fetch service

* Fix docstr
2024-04-08 09:50:28 +02:00
Brett Adams
1cace9a609 Add reauth to Teslemetry (#114726)
* Add reauth

* Add tests

* PARALLEL_UPDATES

* Bump quality to platinum

* Fix assertion

* Remove quality

* Remove async_create_task

* Review Feedback

* Remove loop inside parametrize

* Change config during reauth

* Fix missing return
2024-04-08 09:44:51 +02:00
Richard Kroegel
16fc935c87 Refactor BMW entity availability (#110294)
Co-authored-by: Richard <rikroe@users.noreply.github.com>
2024-04-08 09:26:50 +02:00
MarkGodwin
487480dc88 Address late review of TP-Link Omada (#115121)
tplink_omada implement feedback from #114138
2024-04-08 06:26:20 +02:00
Federico D'Amico
111ffdd77e Improve microBees code quality (#114939)
microBees code quality
2024-04-08 05:35:46 +02:00
J. Nick Koston
3daecc7a31 Remove remaining run_immediately=False from tests (#115168) 2024-04-07 16:47:41 -10:00
J. Nick Koston
9ef28f83ea Switch async_track_state_change to use run_immediately (#115164) 2024-04-07 16:38:25 -10:00
J. Nick Koston
1fd5f64dcc Migrate matrix to use run_immediately for start listener (#115167)
* Migrate matrix to use run_immediately for start listener

* Migrate matrix to use run_immediately for start listener
2024-04-07 22:30:54 -04:00
J. Nick Koston
af1023074e Add an event_filter to google_assistant state reporting (#115160)
* adjust

* fix test since it happens sooner now

* remove debug

* remove unneeded test change

* reduce

* reduce
2024-04-07 21:30:03 -04:00
J. Nick Koston
89a2c89fe2 Avoid checking for polling if an entity fails to add (#115159)
* Avoid checking for polling if an entity fails to add

* no need to do protected access

* no need to do protected access

* no need to do protected access

* no need to do protected access

* coverage

* fix test

* fix

* broken one must be first
2024-04-07 21:25:55 -04:00
J. Nick Koston
6b4457043d Deprecate async_add_hass_job (#115061) 2024-04-07 14:08:25 -10:00
rappenze
f044dd54cf Bump fibaro to 0.7.7 (#115152) 2024-04-07 13:49:20 -10:00
J. Nick Koston
213cf76781 Fix flakey fritz image test (#115161) 2024-04-07 13:46:38 -10:00
Mick Vleeshouwer
94a2352b41 Bump pyoverkiz to 1.13.10 (#115154) 2024-04-07 13:39:11 -10:00
Marc Mueller
a0e6fd6ec5 Add improved typing for event fire and listen methods (#114906)
* Add EventType implementation

* Update integrations for EventType

* Change state_changed to EventType

* Fix tests

* Remove runtime impact

* Add tests

* Move to stub file

* Apply pre-commit to stub files

* Fix ruff PYI checks

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-07 13:28:24 -10:00
J. Nick Koston
d007b175c5 Write timer entity state before firing events (#115151) 2024-04-07 12:51:59 -10:00
Pete Sage
f96c5a2905 Add additional Sonos integration code-owner (#115157) 2024-04-07 12:51:44 -10:00
Matrix
3a28125470 Bump yolink-api to 0.4.2 (#115026) 2024-04-07 11:31:52 -10:00
Sid
8e98ba7312 Add first batch of Ruff PYI rules (#115100)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-04-07 11:30:50 -10:00
J. Nick Koston
569f54d8e3 Terminate scripts with until and while conditions that execute more than 10000 times (#115110) 2024-04-07 11:02:53 -10:00
rappenze
771fe57e32 Fix fibaro sensor additional sensor lookup (#115148) 2024-04-07 10:53:30 -10:00
dontinelli
05440ec04c Bump fyta_cli to 0.3.5 (#115143)
bump fyta_cli to 0.3.5
2024-04-07 21:38:13 +02:00
dontinelli
80ec9d4394 improve handling of incorrect values in fyta integration (#115134)
* improve handling of incorrect values

* Changes based on review comment

* Apply suggestions from code review

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

* update value_fn

* ruff

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-07 21:07:51 +02:00
Joost Lekkerkerker
9ec4e9a1a9 Remove Color extractor import flow (#115015)
* Remove Color extractor import flow

* Remove Color extractor import flow
2024-04-07 19:38:56 +02:00
Maikel Punie
3239351f18 Bump velbus-aio to 2024.4.1 (#115109)
bump velbusaio to 2024.4.1
2024-04-07 19:32:15 +02:00
Jan Bouwhuis
c270ab0059 Correct duplicate word in IMAP translations (#115132) 2024-04-07 19:29:19 +02:00
wittypluck
63d43a9384 Add Glances network sensors (#114546)
* Add Glances network sensors

* Add unit test for network and remove unused MOCK_DATA

* Add network icons
2024-04-07 16:01:00 +02:00
Joost Lekkerkerker
32d62e477a Add entity translations to Bluemaestro (#102424)
* Add entity translations to Bluemaestro

* Fix

* yes
2024-04-07 15:54:22 +02:00
J. Nick Koston
5630b3611d Add an event filter to the alexa state report state change listener (#115076)
Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-04-07 03:14:18 -10:00
Tobias Sauerwein
f617000920 Add device removal capability for Netatmo (#107630)
* Add device removal capability for Netatmo

* Update tests/components/netatmo/test_init.py

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

* Update tests/components/netatmo/test_init.py

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

* Update tests/components/netatmo/test_init.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-07 15:10:00 +02:00
Álvaro Fernández Rojas
d4d06c0bc3 Add Water Heater support for Airzone Cloud (#115097)
* airzone_cloud: add Water Heater support

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

* run CI

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-04-07 15:07:40 +02:00
fhoekstra
e4fbe539aa Add GPU sensor to Glances (#106322)
* feat: add GPU sensor to Glances

* Add translations to Glances GPU sensor

* Fix translations of GPU processor and memory usage

* PR feedback: move icons to icons.json

thanks to @wittypluck

* Update glances snapshot with added GPU

* Remove JSON trailing comma

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

* Limit precision of Glance GPU mem usage sensor

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

* Clean up outdated snapshots

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-07 15:05:22 +02:00
Joost Lekkerkerker
1b07d3ecfa Enable entities in Netatmo snapshot test (#115105) 2024-04-07 14:38:40 +02:00
Joakim Sørensen
df6997bfa9 Downgrade hass-nabucasa from 0.80.0 to 0.78.0 (#115078) 2024-04-07 08:20:58 -04:00
Joost Lekkerkerker
021eed66f3 Add more base entities to netatmo (#107862)
* Rename netatmo base entity file

* Add more Netatmo base entities

* Add more Netatmo base entities

* Add more Netatmo base entities

* Add more Netatmo base entities

* Apply suggestions from code review

* Add more Netatmo base entities

* Add snapshot tests to Netatmo platforms

* Add snapshot tests to Netatmo platforms

* Fix snapshots

* Fix tests

* Update snapshots

* Add fans

* Add fans

* Update homeassistant/components/netatmo/select.py

Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>

* Add snapshot tests to Netatmo platforms

* Update snapshots

* minor clean up

* Fix tests

* Fix

* Fix

* Fix

* Move dot split to weather station sensors

---------

Co-authored-by: Tobias Sauerwein <cgtobi@users.noreply.github.com>
Co-authored-by: Tobias Sauerwein <cgtobi@gmail.com>
2024-04-07 13:36:12 +02:00
Joost Lekkerkerker
9f2fa7ec19 Add snapshot tests to Bluemaestro (#115094) 2024-04-07 13:19:40 +02:00
J. Nick Koston
32004973c8 Simplify invalidating the User cache (#115074) 2024-04-07 12:17:18 +02:00
J. Nick Koston
f2fe2c4510 Fix synology_dsm availablity (#115073)
* Remove reload on update failure from synology_dsm

fixes #115062

The coordinator will retry on its own later, there is no
reason to reload here.  This was added in #42697

* fix available checks
2024-04-07 10:54:40 +02:00
J. Nick Koston
b456a212eb Fix flakey tests using the _get_diagnostics_for_config_entry helper (#115069) 2024-04-06 21:58:23 -10:00
Marc Mueller
cb9352110c Improve registry store data typing (#115066) 2024-04-06 14:34:49 -10:00
J. Nick Koston
a0936902c2 Use identity checks for EntityPlatformState enum (#115067) 2024-04-07 02:31:23 +02:00
J. Nick Koston
164d29d4d9 Remove prepare override in HomeAssistantQueueHandler (#115064) 2024-04-06 13:53:36 -10:00
Marc Mueller
8324fd5d1d Deprecated old backports and typing aliases (#114883) 2024-04-06 13:15:30 -10:00
J. Nick Koston
8e645c9b32 Fix flakey cast discovery test (#115063) 2024-04-06 13:15:14 -10:00
Pete Sage
553c147933 Fix sonos switch test failures (#115052) 2024-04-06 12:51:21 -10:00
Avi Miller
6f783d75bc Bump aiolifx to 1.0.2 and aiolifx-themes to 0.4.15 (#115059) 2024-04-06 12:48:37 -10:00
J. Nick Koston
c4b5a7c027 Migrate start helper to use run_immediately (#115055) 2024-04-06 12:35:46 -10:00
wittypluck
3ef2c464ac Add Glances DiskIO read/write sensors (#114933) 2024-04-07 00:13:02 +02:00
Kevin Stillhammer
cce8e4839a Add reconfigure step for waze_travel_time (#114885)
* Add reconfigure step for waze_travel_time

* Add reconfigure_successful string

* Update tests/components/waze_travel_time/test_config_flow.py

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-04-07 00:06:30 +02:00
William Easton
ed451cab3b Update Ambient Weather to include Lightning Strike Time and Distance (#114255)
* Update sensor.py to include Lightning Distance

* Update strings.json to include Lightning Strikes distance

* Update homeassistant/components/ambient_station/sensor.py

* Update homeassistant/components/ambient_station/strings.json

* Update device class lightning distance

* Also add Last Lightning strike datetime

---------

Co-authored-by: Aaron Bach <bachya1208@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-06 23:39:43 +02:00
Steven Looman
78bb21138c Remove @StevenLooman from dlna_dmr codeowners (#115028)
* Remove myself from dlna_dmr codeowners

* Update codeowners file

---------

Co-authored-by: jbouwh <jan@jbsoft.nl>
2024-04-06 23:38:05 +02:00
Álvaro Fernández Rojas
9a1b0874fd Update aioairzone-cloud to v0.5.1 (#115029)
* Update aioairzone-cloud to v0.5.1

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

* tests: airzone_cloud: fix diagnostics

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

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-04-06 23:37:22 +02:00
J. Nick Koston
29bc67234e Make eager_start default to True for config entry async_create_task (#115047) 2024-04-06 11:22:02 -10:00
Matthias Alphart
2290362dfb Update xknxproject to 3.7.1 (#115053) 2024-04-06 23:18:52 +02:00
Maciej Bieniek
b0fd3d0b89 Bump brother to version 4.1.0 (#115021)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-06 11:09:46 -10:00
J. Nick Koston
52957849cf Make eager_start default to True for config entry async_create_background_task (#115050) 2024-04-06 10:59:24 -10:00
J. Nick Koston
166910f587 Make eager_start default to True for async_create_background_task (#114996) 2024-04-06 09:53:50 -10:00
Marc Mueller
8f425b9ea7 Improve generic event typing [recorder] (#114736) 2024-04-06 21:35:42 +02:00
Jan Bouwhuis
2e3cb1a767 Correct changes hassfest coverage backports (#115044) 2024-04-06 21:17:44 +02:00
J. Nick Koston
c33a234048 Make eager_start default to True for async_create_task (#114995) 2024-04-06 09:15:40 -10:00
Jan Bouwhuis
fa47e79292 Correct typo in IMAP translation (#115032) 2024-04-06 18:37:54 +02:00
mkmer
7f8341e03a Deprecate aux heat from Honeywell (#114110)
* Remove aux heat

* Add switch entity for emheat

* Optimized async_setup_entry

* Fix errors in comments

* Fix new ruff failuer

* Use constant for EM

* Protect EM mode - must be in heat to turn on/off

* Restore aux_heat

* Add repair issue

* Add missing place holder to issue

* Better placeholder "option"
2024-04-06 17:22:56 +02:00
larsvinc
a5c82f3713 Add adax on/off functionality for local heaters (#114557)
* Add adax on/off functionality for local heaters

* Fixed ruff / newline

* Ran Ruff

* Update homeassistant/components/adax/climate.py

Removed unecessary return

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

* Update homeassistant/components/adax/climate.py

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

* Update homeassistant/components/adax/climate.py

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

* Fixed bug with internal temperature state.

* Apply suggestions from code review

Added target_temp for code clarity

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

---------

Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-04-06 17:09:48 +02:00
Joost Lekkerkerker
57cc3495c2 Sort coveragerc again (#115017)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2024-04-06 15:51:56 +02:00
Joost Lekkerkerker
b743a86aa9 Refactor Vilfo tests (#115020)
* Refactor Vilfo tests

* Patch is_host_valid
2024-04-06 15:48:52 +02:00
Marc Mueller
81d682874f Update typing extensions to 4.11.0 (#114985) 2024-04-06 14:23:32 +02:00
Marc Mueller
856567d674 Improve generic event typing [google_pubsub] (#114731) 2024-04-06 14:20:31 +02:00
Marc Mueller
bf0309a722 Improve generic event typing [mqtt_statestream] (#114732) 2024-04-06 14:19:39 +02:00
Marc Mueller
e0f5559c8f Improve generic event typing [EventComponentLoaded] (#114739) 2024-04-06 14:18:03 +02:00
Marc Mueller
fa7da34298 Improve generic event typing [tasmota] (#114737) 2024-04-06 14:16:25 +02:00
Joost Lekkerkerker
bf142aef5f Fix ruff error (#115023) 2024-04-06 14:13:20 +02:00
Marc Mueller
289700dcf5 Improve generic event typing [device_tracker] (#114730) 2024-04-06 14:01:05 +02:00
Marc Mueller
7898bdcd4e Improve generic event typing [conversation] (#114729) 2024-04-06 14:00:13 +02:00
Marc Mueller
d24cf9e4ec Improve generic event typing [cloud] (#114728) 2024-04-06 13:59:12 +02:00
Marc Mueller
082af6e0ae Improve generic event typing [voip] (#114738) 2024-04-06 13:57:09 +02:00
Øyvind Matheson Wergeland
fdef3ece13 Fix placeholder quotes (#114974)
* When quoting placeholders, always use double quotes so Lokalise recognizes the placeholder.

* Ensure that strings does not contain placeholders in single quotes.

* Avoid redefining value

* Moved string_with_no_placeholders_in_single_quotes

* Define regex once

* Fix tests
2024-04-06 13:01:56 +02:00
Álvaro Fernández Rojas
bd9070be11 Update aioairzone-cloud to v0.5.0 (#114928) 2024-04-06 12:24:00 +02:00
wittypluck
0ccd334608 Update glances-api to 0.6.0 (#114929) 2024-04-06 12:20:00 +02:00
Nathan Spencer
6594d022ba Bump pylitterbot to 2023.4.11 (#114918) 2024-04-06 12:16:00 +02:00
Joost Lekkerkerker
d9573bb7dc Move Color extractor service to async_setup (#115013) 2024-04-06 12:06:16 +02:00
J. Nick Koston
b6d0c9d1c3 Migrate proximity to use async_track_state_change_event (#115002) 2024-04-06 12:00:30 +02:00
J. Nick Koston
34bf4dc962 Migrate generic_hygrostat to use async_track_state_change_event (#115001) 2024-04-06 11:57:30 +02:00
J. Nick Koston
7d5b39b9de Fix dictionary changed size during iteration in prometheus (#115005)
Fixes #104803
2024-04-06 11:50:29 +02:00
Steven B
e85b9faa00 Bump ring_doorbell to 0.8.10 (#114865) 2024-04-06 11:49:30 +02:00
Sid
0d66d298ec Enable Ruff RET504 (#114528)
* Enable Ruff RET504

* fix test

* Use noqa instead of cast

* fix sonos RET504

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-06 11:07:37 +02:00
Claudio Ruggeri - CR-Tech
a28731c294 Add Swing Mode Feature to Modbus integration (#113710) 2024-04-06 11:01:44 +02:00
Øyvind Matheson Wergeland
c3942a7d44 Upgrade to pynobo 1.8.1 (#114982)
pynobo 1.8.1
2024-04-06 09:38:14 +02:00
Robert Svensson
48b281a581 Bump axis to v61 (#114964) 2024-04-06 09:01:55 +02:00
lunmay
0e202770e3 Brand name typo in swiss_public_transport (#115000) 2024-04-06 08:12:44 +02:00
J. Nick Koston
f497c461ed Switch to using the AsyncResolver with aiohttp (#114529)
* Bump aiodns to 3.2.0

changelog: https://github.com/saghul/aiodns/compare/v3.1.1...v3.2.0

* Switch to using the AsyncResolver with aiohttp

This avoids creating executor jobs to do DNS resolution

AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available

This is a backport of https://github.com/aio-libs/aiohttp/pull/8270

* Switch to using the AsyncResolver with aiohttp

This avoids creating executor jobs to do DNS resolution

AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available

This is a backport of https://github.com/aio-libs/aiohttp/pull/8270

* Switch to using the AsyncResolver with aiohttp

This avoids creating executor jobs to do DNS resolution

AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available

This is a backport of https://github.com/aio-libs/aiohttp/pull/8270

* Switch to using the AsyncResolver with aiohttp

This avoids creating executor jobs to do DNS resolution

AsyncResolver was not usable before https://github.com/aio-libs/aiohttp/pull/8270
because it did not fallback to fallback to A records and only returned AAAA records
in most cases when IPv6 was available

This is a backport of https://github.com/aio-libs/aiohttp/pull/8270

* fixes

* fix mocking in next_dns

* fix unmocked calls in blink

* more mocking fixes

* more fixes

* more fixes

* Fix missing mocking in nextdns tests

extracted from #114539

* extract from context
2024-04-05 23:15:51 -04:00
J. Nick Koston
9c27e632fb Switch configurator to use async_run_hass_job (#114993) 2024-04-05 17:02:58 -10:00
J. Nick Koston
657bc969a3 Improve performance of system_log traceback handling (#114992) 2024-04-05 16:47:17 -10:00
J. Nick Koston
90bbfdd53c Migrate torque to use async platform setup (#114994) 2024-04-05 22:41:37 -04:00
J. Nick Koston
fb98a6f026 Make run_immediately the default for core EventBus listeners (#113752)
* DNM: Make run_immediately the default for listeners

This is a test to see how much progress we have made twords this goal

https://github.com/home-assistant/core/pull/113727#issuecomment-2004587947

* fix shutdown

* Revert "fix shutdown"

This reverts commit a8969d7db9fed10040cb8b7b25459dc9d812eb9c.

* set false since it break utility meter tests

* one more

* fix rfxtrx test

* test needs to be explict now

* fix matrix

* fail sooner
2024-04-05 22:14:20 -04:00
J. Nick Koston
bf5cf382dc Avoid useless stat() syscalls for every logger record (#114987)
* Avoid useless stat() syscalls for every logger record

shouldRollover will always return False since we do
not use maxBytes as we are only using RotatingFileHandler
for the backupCount option. Since every log record will
stat the log file to see if it exists and if its a normal
file, we can override the shouldRollover to reduce the
logging overhead quite a bit

1d3225ae05/Lib/logging/handlers.py (L189)

* assert False is False
2024-04-05 22:00:09 -04:00
J. Nick Koston
00db97a765 Run device_registry stop listener immediately (#114978) 2024-04-05 21:59:27 -04:00
J. Nick Koston
d25ac06326 Run storage final write listener immediately (#114976)
This one should not need a call_soon
2024-04-05 21:59:11 -04:00
Brent Petit
c9ce848b4b Add current_humidity to Ecobee humidifier (#114753)
* Ecobee: add current_humidity to humidifier

* Ecobee: Add test for current_humidity property

* Update current_humidity handling in climate and
humidifier entity to support the ecobee API
not returning actualHumidity, which is an optional
value.
Also updated tests to add a thermostat which
covers a non-populated humidity. In passing,
set up the new test thermostat to cover a missing
condition where the code doens't recognize the
ecobee model number. This gets ecobee humidifier
test coverage to 100%
2024-04-05 21:54:40 +02:00
Joost Lekkerkerker
0214511b38 Make config flow imports consistent (#114962)
* Make config flow imports consistent

* Fix
2024-04-05 21:38:11 +02:00
J. Nick Koston
aeaed83578 Start async_schedule_update_ha_state task eagerly (#114704) 2024-04-05 08:14:21 -10:00
Joost Lekkerkerker
850361d1da Fix Snapcast Config flow (#114952) 2024-04-05 19:45:24 +02:00
Joost Lekkerkerker
5194215074 Allow single entry in Downloader (#114957) 2024-04-05 19:45:14 +02:00
Bengt Sirbelius
e1575678ed Add new OUI for Axis products (#114923)
* Add new OUI for Axis products

* Run hassfest

---------

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2024-04-05 19:06:18 +02:00
Erwin Douna
f142e902df SIngle entry for Fastdotcom (#114963) 2024-04-05 18:53:28 +02:00
epenet
9204ccfa17 Use is in ConfigEntryState enum comparison in tests (N-Z) (#114926) 2024-04-05 17:37:00 +02:00
Ashot Tonoyan
f2c091fe0c Include serial number in HomeKit device info (#114688)
Very useful when adding a hub that has many identical devices already paired
2024-04-05 17:32:23 +02:00
RJPoelstra
35f2287d1a Bump python-MotionMount to 1.0.0 (#114945) 2024-04-05 17:20:58 +02:00
epenet
0b01326f9f Use is in ConfigEntryState enum comparison in tests (A-M) (#114925) 2024-04-05 17:16:55 +02:00
Jan-Philipp Benecke
dd8de14cc5 Update person to use _attr_* and thus cached properties (#114590)
* Update `person` to use `_attr_*` and thus cached properties

* Make func

* Just use attribute

* Move to init
2024-04-05 15:28:33 +02:00
Joost Lekkerkerker
370c902eb9 Fix ROVA validation (#114938)
* Fix ROVA validation

* Fix ROVA validation
2024-04-05 14:21:24 +02:00
Joost Lekkerkerker
69f8de2c59 Create right import issues in Downloader (#114922)
* Create right import issues in Downloader

* Create right import issues in Downloader

* Create right import issues in Downloader

* Create right import issues in Downloader

* Fix

* Fix

* Fix

* Fix

* Apply suggestions from code review

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

* Fix

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-05 12:32:09 +02:00
dependabot[bot]
63392ea1c2 Bump Wandalen/wretry.action from 3.0.1 to 3.1.0 (#114916) 2024-04-05 12:16:27 +02:00
Joost Lekkerkerker
8ca6e12ddd Fix cast dashboard in media browser (#114924) 2024-04-05 11:44:51 +02:00
Joost Lekkerkerker
772d9f754a Fix Downloader YAML import (#114844) 2024-04-05 11:32:59 +02:00
epenet
24f83c5890 Use is in FlowResultType enum comparison in tests (#114917)
* Use is in FlowResultType enum comparison in tests

* Adjust auth

* Adjust systemmonitor

* Once more

* Add comment
2024-04-05 10:40:14 +02:00
Åke Strandberg
04e5086e01 Show correct model string in myuplink (#114921) 2024-04-05 10:01:51 +02:00
Robert Svensson
b67e9b28d6 Fix Axis reconfigure step not providing protocols as alternatives but as string (#114889) 2024-04-05 09:47:49 +02:00
J. Nick Koston
bfe944f666 Handle ambiguous script actions by using action map order (#114825) 2024-04-05 08:42:57 +02:00
Lex Li
1f37774352 Fix type cast in snmp (#114795) 2024-04-05 08:41:15 +02:00
Robert Svensson
6040272c04 Fix Axis camera platform support HTTPS (#114886) 2024-04-05 08:28:35 +02:00
J. Nick Koston
0e2fe3b728 Avoid timestamp conversion in core State when equal to last_updated (#114911) 2024-04-05 08:27:27 +02:00
J. Nick Koston
5447a1a015 Ensure all tables have the default table args in the db_schema (#114895) 2024-04-05 08:22:00 +02:00
Jeef
90d502e161 Bump weatherflow4py to 0.2.20 (#114888) 2024-04-04 15:37:54 -10:00
J. Nick Koston
d321906342 Always run keyed event trackers immediately (#114709) 2024-04-04 15:30:01 -10:00
J. Nick Koston
78920e1d71 Reduce august polling frequency (#114904)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-04-04 15:28:36 -10:00
Åke Strandberg
a66ed1d936 Bump myuplink dependency to 0.6.0 (#114767) 2024-04-05 02:55:39 +02:00
Joakim Sørensen
96149d9444 Bump hass-nabucasa from 0.79.0 to 0.80.0 (#114818)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-04-05 00:48:21 +02:00
Bram Kragten
7f19882843 Update frontend to 20240404.1 (#114890) 2024-04-05 00:26:07 +02:00
Marc Mueller
3c5089bc3f Update import for EventStateChangedData [a-h] (#114899) 2024-04-04 11:48:36 -10:00
Marc Mueller
0f03079065 Update import for EventStateChangedData [i-z] (#114900) 2024-04-04 11:48:29 -10:00
J. Nick Koston
e0e54ab9d3 Migrate more sonos tasks to use eager_start (#114697) 2024-04-04 11:43:15 -10:00
Erik Montnemery
b0d1b6555d Address late review comments on homeworks PRs (#114867) 2024-04-04 22:48:31 +02:00
Pete Sage
95ef087fa8 Fix Sonos Tests failing intermittently on CI (#114873) 2024-04-04 10:34:23 -10:00
tronikos
2cfc60b5b6 Bump opower to 0.4.3 (#114826)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-04 22:06:15 +02:00
Erik Montnemery
7c95ecff20 Validate unique_id in entity registry (#114648)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-04-04 09:51:44 -10:00
Michael Hansen
1c2499b03a Add "conversation" key to translations (#114887)
* Use translated trigger response

* Use conversation key instead
2024-04-04 14:45:27 -05:00
J. Nick Koston
cceea6dac2 Refactor ConfigStore to avoid needing to pass config_dir (#114827)
Co-authored-by: Erik <erik@montnemery.com>
2024-04-04 09:30:10 -10:00
Marc Mueller
56ef9500f7 Use EventStateChangedData type when firing state changed event (#114740) 2024-04-04 09:27:44 -10:00
J. Nick Koston
9189cd5ec2 Avoid linear search in gpslogger to find devices (#114811) 2024-04-04 09:27:24 -10:00
J. Nick Koston
a83d5e4071 Avoid linear search in geofency to find devices (#114810) 2024-04-04 09:27:14 -10:00
J. Nick Koston
c7d1319acf Avoid linear search in owntracks to find devices (#114812) 2024-04-04 09:26:58 -10:00
Bram Kragten
c798128ef1 Update frontend to 20240404.0 (#114859) 2024-04-04 15:01:15 -04:00
J. Nick Koston
a9d43db315 Avoid linear search to clear a config entry in the device registry (#114802) 2024-04-04 08:35:07 -10:00
Aidan Timson
e845d12733 Pin systembridgemodels to 4.0.4 (#114842) 2024-04-04 14:25:35 +02:00
Joost Lekkerkerker
28dc77a72d Avoid blocking IO in downloader initialization (#114841)
* Avoid blocking IO in downloader initialization

* Avoid blocking IO in downloader initialization
2024-04-04 13:45:44 +02:00
Marc Mueller
efde8400e2 Improve generic event typing [rfxtrx] (#114733) 2024-04-04 12:08:37 +02:00
J. Nick Koston
342e47dcc8 Ensure async_test_home_assistant is passed a str in storage tests (#114813) 2024-04-04 12:05:16 +02:00
J. Nick Koston
cc96bc44a0 Avoid linear search in ps4 to find devices (#114814) 2024-04-04 11:53:04 +02:00
J. Nick Koston
0710f4c661 Avoid linear search in purpleair to find devices (#114816) 2024-04-04 11:51:57 +02:00
J. Nick Koston
d7153d525f Avoid linear search in ibeacon to find devices (#114809) 2024-04-04 11:50:30 +02:00
Benjamin
e909242bc5 Fix missing if statement in homematic (#114832)
* homematic fix issue #114807

Update climate.py

* Update homeassistant/components/homematic/climate.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-04 11:45:01 +02:00
J. Nick Koston
5be5c37326 Avoid linear search in homekit to find devices (#114808) 2024-04-04 11:39:16 +02:00
J. Nick Koston
86feae421c Avoid linear search in hassio to find devices (#114806) 2024-04-04 11:38:37 +02:00
Marc Mueller
816ce116bf Remove unnecessary functools.cached_property backport (#114239) 2024-04-04 11:24:26 +02:00
cdheiser
7228f63c4a Fix Lutron light brightness values (#114794)
Fix brightness values in light.py

Bugfix to set the brightness to 0-100 which is what Lutron expects.
2024-04-04 11:24:02 +02:00
J. Nick Koston
7b64097399 Load mobile_app notify platform with eager_start (#114700) 2024-04-04 09:34:13 +02:00
J. Nick Koston
1462c99bc0 Load template platforms with eager_start (#114701)
* Load template platforms with eager_start

These can all be loaded synchronously

* missed some
2024-04-04 09:33:10 +02:00
J. Nick Koston
2b06168573 Avoid linear search in traccar to find devices (#114817)
* Avoid linear search in traccar to find devices

* remove useless check
2024-04-04 09:09:47 +02:00
Álvaro Fernández Rojas
15a821f6ac Update aioairzone-cloud to v0.4.7 (#114761) 2024-04-03 21:05:08 -10:00
J. Nick Koston
aedfd6c983 Add index for floor/label to the area registry (#114777) 2024-04-03 21:04:26 -10:00
J. Nick Koston
aa52688d4b Avoid linear search of the device registry in deconz (#114803) 2024-04-03 21:02:18 -10:00
dependabot[bot]
c18ff39540 Bump Wandalen/wretry.action from 2.1.0 to 3.0.1 (#114805)
Bumps [Wandalen/wretry.action](https://github.com/wandalen/wretry.action) from 2.1.0 to 3.0.1.
- [Release notes](https://github.com/wandalen/wretry.action/releases)
- [Commits](https://github.com/wandalen/wretry.action/compare/v2.1.0...v3.0.1)

---
updated-dependencies:
- dependency-name: Wandalen/wretry.action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 08:38:15 +02:00
J. Nick Koston
0c3ccabfb1 Speed up logger setup (#114610)
* Speed up logger setup

Preload core.logger and avoid saving it
until after startup

* add comment about 180s

* Adjust grammar

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-04 08:35:44 +02:00
J. Nick Koston
7a2e529bb7 Avoid executor job to start http if server_host is unspecified (#114609)
* Avoid executor job to start http if server_host is unspecified

Same as #112522 for http

* adjust test

* CONF_SERVER_HOST is always set now
2024-04-04 07:51:18 +02:00
J. Nick Koston
56d0ad27f0 Adjust async_load_platform comment to remove dead lock reference (#114771)
* Adjust async_load_platform comment

Its likely the deadlock here has been fixed for a long time, however
we should still do these in a task because it has to wait for base
components if they are not loaded yet.

* Adjust async_load_platform comment

Its likely the deadlock here has been fixed for a long time, however
we should still do these in a task because it has to wait for base
components if they are not loaded yet.
2024-04-03 22:53:31 -04:00
J. Nick Koston
3f76d1f056 Add index for area/config_entry/label to the device registry (#114776)
* Add index for area/config_entry/label to the device registry

* use it for services

* naming

* naming

* tweak
2024-04-03 22:52:17 -04:00
Aaron Bach
841d3940d1 Fix unhandled KeyError during Notion setup (#114787) 2024-04-03 18:20:20 -06:00
Manuel Dipolt
c1c664dc09 Update romy to 0.0.10 (#114785) 2024-04-04 00:48:35 +02:00
J. Nick Koston
5394a2a34a Load mailbox integration platforms in tracked tasks (#114774) 2024-04-03 11:12:38 -10:00
J. Nick Koston
e86fec310b Improve performance of extracting entities by label (#114720) 2024-04-03 10:24:44 -10:00
J. Nick Koston
3d8a110908 Dispatch the same ReceiveMessage object if the subscription topic is the same (#114769) 2024-04-03 09:36:57 -10:00
Fexiven
535da483b6 Rework update_data starlink coordinator (#114642)
* Update coordinator.py

fixes https://github.com/home-assistant/core/issues/114353

* Rework update_data starlink coordinator

* modify return handlung according to ruff

* add type annotation for _get_srtarlink_data

* add channel_context type annotation

* Add docstring

* ruff ruff here you go - modfied docstring

* Clean up

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-03 20:51:55 +02:00
J. Nick Koston
69a6e9f5d7 Use eager_start to forward wemo config entry platforms (#114702)
* Use eager_start to forward wemo config entry platforms

These can all be setup synchronously

* do not create another task
2024-04-03 20:29:48 +02:00
Jan Bouwhuis
d66145358a Correct imap services setup (#114760)
* Correct imap services setup

* Add config schema
2024-04-03 18:40:59 +02:00
Chris Bräucker
51a3e79048 Add wake on LAN via Fritz!Box for tracked devices (#106778) 2024-04-03 18:37:20 +02:00
Michael
6369b75653 Fix Synology DSM setup in case no Surveillance Station permission (#114757) 2024-04-03 17:53:44 +02:00
Bram Kragten
dcef40f27c Update frontend to 20240403.1 (#114756) 2024-04-03 17:32:26 +02:00
Michael Hansen
26c7e170e9 Bump intents (#114755) 2024-04-03 17:27:26 +02:00
Robert Resch
e2c99d226e Fix CI after splitting tests (#114754) 2024-04-03 16:45:07 +02:00
Robert Resch
7adced6876 Allow passing area/device/entity IDs to floor_id and floor_name (#114748) 2024-04-03 16:33:58 +02:00
Maciej Bieniek
f91994d788 Revert the logger level in the Shelly update platform (#114749)
Revert debug level

Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-03 16:01:56 +02:00
Robert Resch
ed88c2abc9 Replace pytest-test-groups by custom tests splitter (#114381)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2024-04-03 15:43:12 +02:00
Bram Kragten
90c06d6538 Update frontend to 20240403.0 (#114747) 2024-04-03 15:19:49 +02:00
Jan-Philipp Benecke
613bdebfe5 Migrate sabnzbd to use data update coordinator (#114745)
* Migrate sabnzbd to use data update coordinator

* Add to coveragerc

* Setup coordinator after migration

* Use kB/s as UoM

* Add suggested
2024-04-03 15:15:23 +02:00
J. Nick Koston
2b9f22f11e Make creation of capabilities_updated_at deque in Entity lazy (#114711)
Most entities will never update their capabilities so we should
avoid creating the deque as its a large chunk of the entity
creation time
2024-04-03 13:53:17 +02:00
Joost Lekkerkerker
b9f27d2b31 Avoid blocking IO in downloader config flow (#114741) 2024-04-03 13:50:34 +02:00
J. Nick Koston
e522f2f67e Create bond fallback polling tasks eagerly (#114705)
There was not reason to delay here
2024-04-03 12:36:55 +02:00
J. Nick Koston
80e066a7a8 Use eager_start to create async_update_alerts task in homeassistant_alerts (#114707)
If there are no alerts, the task will finish synchronously
2024-04-03 12:23:36 +02:00
J. Nick Koston
ef047707d9 Simplify config entry cache clear (#114691)
same as #113136 but for config entries
2024-04-03 12:21:37 +02:00
J. Nick Koston
cf4c02b9fa Simplify core state cache clear (#114694)
same as #113136 but for core
2024-04-03 12:20:32 +02:00
J. Nick Koston
742643936f Migrate legacy device_tracker task creation to use eager_start (#114703)
Many of these can finish synchronously without being scheduled on the loop
2024-04-03 12:12:52 +02:00
Lenn
e870d420a6 Rename Motionblinds BLE integration to Motionblinds Bluetooth (#114584) 2024-04-03 12:11:46 +02:00
J. Nick Koston
41a88c876d Avoid useless done check in config entries async_create_task (#114695)
If the task is not started with eager_start it will
never be done right away
2024-04-03 11:49:32 +02:00
Robert Resch
74d8c6cce4 Fix synology_dsm test side effects (#114722) 2024-04-03 11:11:56 +02:00
J. Nick Koston
be3c923c7f Use eager_start to load utility_meter platforms (#114699) 2024-04-02 22:06:16 -10:00
Joost Lekkerkerker
4a879ce424 Fix Downloader config flow (#114718) 2024-04-03 09:56:19 +02:00
Joost Lekkerkerker
f3ba713289 Use FlowResultType enum in config flow tests N-Z (#114682)
Use FlowResultType enum in config flow tests
2024-04-03 09:53:20 +02:00
J. Nick Koston
7a543af8ee Simplify homekit_controller cache clear (#114692) 2024-04-02 21:45:08 -10:00
Jonas Fors Lellky
05c1963815 Bump flexit_bacnet to 2.2.1 (#114641) 2024-04-03 09:23:06 +02:00
Joost Lekkerkerker
b9281327c4 Use FlowResultType enum in config flow tests A-M (#114681) 2024-04-03 09:21:17 +02:00
J. Nick Koston
a767530970 Migrate homeassistant_sky_connect to use eager_start for tasks (#114706) 2024-04-03 09:14:15 +02:00
dependabot[bot]
3eafdadc8f Bump Wandalen/wretry.action from 3.0.0 to 3.0.1 (#114714)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-03 09:13:53 +02:00
David F. Mulcahey
53cbb83e46 Import zha quirks in the executor (#114685) 2024-04-03 09:12:00 +02:00
Erik Montnemery
d058615961 Add service homeworks.send_command (#114059)
* Add service homeworks.send_command

* Translate exception
2024-04-03 09:10:10 +02:00
J. Nick Koston
adbaed2c6d Reduce code for registry items with a base class (#114689) 2024-04-03 09:02:32 +02:00
J. Nick Koston
d17f308c6a Small speed up to starting and stopping cloud (#114696) 2024-04-02 23:47:22 -04:00
J. Nick Koston
06a752aa92 Small speed ups to ambient_station (#114698) 2024-04-02 16:09:27 -10:00
Bram Kragten
3c76036c15 Update frontend to 20240402.2 (#114683) 2024-04-03 00:12:31 +02:00
Pete Sage
f26a7843c6 Fix Sonos play imported playlists (#113934) 2024-04-03 00:10:15 +02:00
J. Nick Koston
1779fe8f62 Bump yalexs to 3.0.1 (#114678)
* Bump yalexs to 3.0.1

changelog: https://github.com/bdraco/yalexs/compare/v2.0.0...v3.0.1

* fix for breaking change
2024-04-02 23:37:16 +02:00
J. Nick Koston
17da077c74 Avoid trying to load platform that are known to not exist in async_prepare_setup_platform (#114659) 2024-04-02 11:22:40 -10:00
Joost Lekkerkerker
9b41e3d124 Use is in enum comparison in config flow tests A-E (#114669) 2024-04-02 11:22:05 -10:00
Joost Lekkerkerker
ee66f6ec8c Use is in enum comparison in config flow tests P-T (#114675) 2024-04-02 11:21:50 -10:00
Joost Lekkerkerker
5d500cb74b Use is in enum comparison in config flow tests K-O (#114672) 2024-04-02 11:21:42 -10:00
Dos Moonen
3875533f95 Bump solax to 3.1.0 (#114617)
0.3.2 was succeeded by 0.3.4.
0.3.3 was yanked
0.3.4 was succeeded by 3.0.5.
3.0.5 is succeeded by 3.1.0.
2024-04-02 23:16:39 +02:00
Joost Lekkerkerker
2ef0521d3d Use is in enum comparison in config flow tests U-Z (#114677)
* Use right enum expression U-Z

* Fix
2024-04-02 23:09:56 +02:00
Jan Bouwhuis
83b56ab005 Add IMAP seen, move and delete service (#114501)
* Add seen, move and delete IMAP services

* Add entry_id to the imap_content event data

* Use config validation library

* Add tests

* Add logging

* Typo in docstr

* Add guard
2024-04-02 23:05:05 +02:00
Joost Lekkerkerker
906d3198e3 Use is in enum comparison in config flow tests F-J (#114670)
* Use right enum expression F-J

* Fix
2024-04-02 23:01:37 +02:00
Phil Bruckner
ea2bb24484 Remove old device tracker device cleanup code & test (#114668) 2024-04-02 15:23:59 -05:00
Joost Lekkerkerker
2175cd6039 Add tests for Roomba Options flow (#114666)
* Add tests for Roomba Options flow

* Fix
2024-04-02 21:49:53 +02:00
G Johansson
448f8a9568 Refactor setup code in command_line (#114661)
* Refactor setup code in command_line

* Fix rebase

* Review comments
2024-04-02 22:47:04 +03:00
Cyrill Raccaud
bf9627ad07 Add extra sensors to Swiss Public Transport (#114636)
* convert extra_state_attributes to sensors

* add deprecation notice for extra state attributes

* cleanup after comments

* remove exists_fn as it does not add value

* move function outside the class
2024-04-02 21:35:11 +02:00
Aidan Timson
17f0002549 Azure DevOps integration tests (#114577)
* Add tests to azure devops

* Remove Azure DevOps files from coverage

* Add assertion for entity registration in test_sensors()

* Remove unnecessary code in test_sensor.py

* Refactor test_sensors function

* Fix

* Test unique id

* Refactor

* Refactor reauth_flow test in azure_devops module

* Suggested changes, batched

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

* Changes

* Use snapshot

* Remove redundant entry fetch

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-04-02 21:23:55 +02:00
Joost Lekkerkerker
7cb01f75ae Add typing to Roomba config flow (#114624) 2024-04-02 21:21:55 +03:00
Robert Resch
f85511255c Fix Rpi_power test race condition (#114662) 2024-04-02 21:19:43 +03:00
jayme-github
850dac0655 Don't overwrite target temperature by setting hvac mode in AVM Fritz!SmartHome (#112119) 2024-04-02 20:14:02 +02:00
atlflyer
ef7836be73 Add icon to command_line cover config (#114645)
* Add icon to command_line cover config

* Remove unwanted #noqa tag

* Remove redundancy from new test name

* Apply requested changes
2024-04-02 20:59:57 +03:00
G Johansson
6638d1c8e8 Bump holidays to 0.46 (#114657) 2024-04-02 20:58:18 +03:00
Robert Resch
17625dc74d Fix Google translate TTS test race condition (#114656) 2024-04-02 18:52:41 +02:00
Robert Svensson
9893a6c5e4 Bump aiounifi to v74 (#114649) 2024-04-02 18:33:12 +02:00
Maciej Bieniek
25c920b1ee Add missing state to the Tractive tracker state sensor (#114654)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-02 18:28:52 +02:00
Paulus Schoutsen
52bd3efad9 Clean up unnecessary setup calls in tests (#114644) 2024-04-02 17:30:41 +02:00
puddly
581c67ed29 Reduce ZHA OTA logbook entries and extraneous updates (#114591) 2024-04-02 17:16:59 +02:00
Bram Kragten
1b875e7de2 Update frontend to 20240402.1 (#114646) 2024-04-02 17:15:24 +02:00
Joost Lekkerkerker
991a4940cd Bump ruff to 0.3.5 (#114634) 2024-04-02 13:53:58 +02:00
Joost Lekkerkerker
0b7d9d6c44 Remove YAML configuration from Withings (#114626)
* Remove YAML configuration from Withings

* Remove YAML configuration from Withings

* Remove YAML configuration from Withings
2024-04-02 13:36:44 +02:00
Robert Resch
476e39dd2c Bump uv to 0.1.27 (#114629) 2024-04-02 13:19:50 +02:00
Steven B
8a86d7512a Bump ring_doorbell integration to 0.8.9 (#114631) 2024-04-02 13:17:47 +02:00
dotvav
a3dce51d38 Fix Overkiz Hitachi OVP air-to-air heat pump (#114611) 2024-04-02 13:08:53 +02:00
Austin Mroczek
49fc8a1230 Improve DeviceInfo for Total Connect (#114509) 2024-04-02 12:23:44 +02:00
Brett Adams
f36c37a3b7 Fix battery heater in Tessie (#114568) 2024-04-02 12:23:08 +02:00
Jan Bouwhuis
acf2f855fe Raise ServiceValidationError on number out of range exception (#114589) 2024-04-02 12:22:00 +02:00
Bram Kragten
31b0b823df Update frontend to 20240402.0 (#114627) 2024-04-02 12:17:52 +02:00
Joakim Sørensen
a1ae4ec23d Add sensor entities to Traccar Server (#111374) 2024-04-02 12:11:28 +02:00
Fexiven
e473914407 Fix Starlink integration startup issue (#114615) 2024-04-02 12:04:07 +02:00
Joost Lekkerkerker
21c7cc3250 Bump roombapy to 1.8.1 (#114478)
* Bump roombapy to 1.7.0

* Bump

* Bump

* Fix
2024-04-02 11:15:52 +02:00
Steven B
51e716bef3 Update ring quality scale to silver (#113146) 2024-04-02 10:47:30 +02:00
Jack Boswell
385da75963 Catch potential ValueError when getting or setting Starlink sleep values (#114607) 2024-04-02 10:45:46 +02:00
Franck Nijhof
4a93b4a4b4 Add floor selector (#114614) 2024-04-02 10:43:14 +02:00
Robert Resch
67c334f842 Fix ruff issue in sonos (#114616) 2024-04-02 10:30:01 +02:00
Maciej Bieniek
c8f282c8bc Improve Shelly RPC device update progress (#114566)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-04-02 10:15:58 +02:00
Pete Sage
31cd41adb8 Display sonos album title with URL encoding (#113693)
* unescape the title

When extracting the title from the item_id, it needs to be unescaped.

* sort imports
2024-04-02 10:11:45 +02:00
mkmer
078535e1d6 Add diagnostic platform to Whirlpool (#114578)
* Add diagnostic platform and tests

* lowercase variable

* Correc doc string
2024-04-02 09:41:40 +02:00
Erik Montnemery
0030c97f59 Tweak integration sensor (#114384)
* Tweak integration sensor

* Improve tests
2024-04-02 09:19:25 +02:00
dependabot[bot]
667e119d32 Bump Wandalen/wretry.action from 2.1.0 to 3.0.0 (#114554)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-02 09:07:47 +02:00
max2697
09fbd8bb52 Bump opower to 0.4.2 (#114608) 2024-04-02 09:04:28 +02:00
Jan-Philipp Benecke
c2ffed9b2d Use switch entities instead of toggle entities in tests (#114585) 2024-04-02 08:25:28 +02:00
Michael
ab2c88353b Filter out ignored entries in ssdp step of AVM Fritz!SmartHome (#114574)
filter out ignored entries in ssdp step
2024-04-01 21:48:26 -04:00
mkmer
3513bd0cc5 Bump whirlpool-sixth-sense to 0.18.7 (#114606)
Bump sixth-sense to 0.18.7
2024-04-01 21:47:30 -04:00
J. Nick Koston
5856bbc07b Add missing platforms_exist guard to check_config (#114600)
* Add missing platforms_exist guard to check_config

related issue #112811

When the exception hits, the config will end up being saved in the traceback
so the memory is never released.

This matches the check_config code to homeassistant.config to avoid having
the exception thrown.

* patch

* merge branch
2024-04-01 21:37:30 -04:00
J. Nick Koston
b12c69accb Fix memory leak when importing a platform fails (#114602)
* Fix memory leak when importing a platform fails

re-raising ImportError would trigger a memory leak

* fixes, coverage

* Apply suggestions from code review
2024-04-01 21:36:48 -04:00
J. Nick Koston
0963f5e642 Avoid storing raw extracted traceback in system_log (#114603)
This is never actually used and takes up quite a bit of ram
2024-04-01 21:35:38 -04:00
J. Nick Koston
ce9d4c8683 Fix flakey cast discovery stop test (#114605)
https://github.com/home-assistant/core/actions/runs/8515215623/job/23322322954?pr=114602
2024-04-01 21:34:54 -04:00
Paulus Schoutsen
d2e4f5f36e Add conversation entity (#114518)
* Default agent as entity

* Migrate constant to point at new value

* Fix tests

* Fix more tests

* Move assist pipeline back to cloud after dependenceis
2024-04-01 21:34:25 -04:00
Martin Hjelmare
b1af590eed Fix reolink media source data access (#114593)
* Add test

* Fix reolink media source data access
2024-04-02 00:14:13 +02:00
IngoK1
acdb3cc7a2 Fix for Sonos URL encoding problem #102557 (#109518)
* Fix for URL encoding problem #102557

Fixes the problem "Cannot play media with spaces in folder names to Sonos #102557" removing the encoding of the strings in the music library.

* Fix type casting problem

* Update media_browser.py to fix pr check findings

Added required casting for all unquote statements to avoid further casting findings in the pr checks

* Update media_browser.py

Checked on linting, lets give it another try

* Update media_browser.py

Updated ruff run

* Update media_browser.py - added version run through ruff

* Update media_browser.py - ruff changes

* Apply ruff formatting

* Update homeassistant/components/sonos/media_browser.py

Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>

* Update homeassistant/components/sonos/media_browser.py

Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>

* Update homeassistant/components/sonos/media_browser.py

Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>

* Update homeassistant/components/sonos/media_browser.py

Co-authored-by: jjlawren <jjlawren@users.noreply.github.com>

---------

Co-authored-by: computeq-admin <51021172+computeq-admin@users.noreply.github.com>
Co-authored-by: Jason Lawrence <jjlawren@users.noreply.github.com>
2024-04-01 17:07:02 -05:00
Jan-Philipp Benecke
8e384ab598 Use dict comprehension in honeywell diagnostics (#114598) 2024-04-01 23:55:14 +02:00
Jan-Philipp Benecke
e14573a465 Migrate uptime to use single_config_entry (#114586) 2024-04-01 23:33:29 +02:00
J. Nick Koston
f2b9e6b389 Bump zeroconf to 0.132.0 (#114596)
changelog: https://github.com/python-zeroconf/python-zeroconf/compare/0.131.0...0.132.0
2024-04-01 23:18:26 +02:00
Michael
98a1608604 Reduce usage of executer threads in AVM Fritz!Tools (#114570)
* call entity state update calls in one executer task

* remove not needed wrapping

* mark as "non-public" method

* add guard against changes on _entity_update_functions
2024-04-01 21:59:06 +02:00
J. Nick Koston
0732952b32 Reduce hassio startup time (#114588) 2024-04-01 09:58:06 -10:00
Sid
304ed8bf3d Unignore Ruff PLC in tests (#114572) 2024-04-01 21:28:54 +02:00
J. Nick Koston
ae640b6e1a Small cleanups to zone to reduce startup time (#114587) 2024-04-01 09:03:59 -10:00
Michael
886f03dd71 Apply late review of tankerkoenig (#114582)
remove config entry from device, not device itself
2024-04-01 19:36:57 +02:00
jjlawren
94060b1566 Bump plexapi to 4.15.11 (#114581) 2024-04-01 19:28:39 +02:00
J. Nick Koston
96120b64e0 Fix missing mocking in nextdns tests (#114541) 2024-04-01 06:53:49 -10:00
Aidan Timson
429b5d22cf Upgrade aioazuredevops to 2.0.0 (#114537)
* Upgrade aioazuredevops to 2.0.0

* Refactor Azure DevOps config flow to use async_get_clientsession

* Wrap conditional in parentesis
2024-04-01 16:51:27 +02:00
Michael
2e11a61726 Automatic cleanup of entity and device registry in Tankerkoenig (#114573) 2024-04-01 16:04:18 +02:00
Joost Lekkerkerker
7f9ad140f9 Fix wrong icons (#114567)
* Fix wrong icons

* Fix wrong icons
2024-04-01 15:53:14 +02:00
Maikel Punie
72447a0717 Bump velbusaio to 2024.4.0 (#114569)
Bump valbusaio to 2024.4.0
2024-04-01 14:49:14 +02:00
epenet
ad3577804b Ensure coverage entries are sorted (#114424)
* Ensure coverage entries are sorted

* Use autofix

* Adjust

* Add comment to coverage file

* test CI

* revert CI test

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-04-01 14:12:24 +02:00
J. Nick Koston
ea7f2af966 Fix missing mocking in blink tests (#114540)
extracted from #114539
2024-04-01 11:23:38 +02:00
Sid
d5f883fbf0 Unignore Ruff PLR in tests (#114470)
* Unignore Ruff PLR in tests

* Address review comments

* review comments

* fix import

* Update test_api.py

* Update test_api.py

* Update test_api.py
2024-04-01 11:11:59 +02:00
Jonny Rimkus
dc59073f25 Bump slixmpp version to 1.8.5 (#114448)
* Update slixmpp to 1.8.5, hopefully fixes #113990

* Bump slixmpp version to 1.8.5 #114448
2024-04-01 10:50:21 +02:00
Teemu R
55657dcb40 Bump python-songpal to 0.16.2 (#114525) 2024-04-01 02:08:05 +02:00
J. Nick Koston
be398e0a3f Fix flakey sonos test test_creating_entry_sets_up_media_player (#114539) 2024-03-31 13:49:24 -10:00
Jan-Philipp Benecke
04786e019a Use device registry mock instead of hass.helpers in traccar_server tests (#114532) 2024-04-01 00:42:46 +02:00
Jan-Philipp Benecke
ecf286cd81 Avoid use of hass.helpers in plugwise test (#114534) 2024-04-01 00:41:47 +02:00
Jan-Philipp Benecke
0238c2ea9e Use device registry mock instead of hass.helpers in dsmr tests (#114535) 2024-04-01 00:41:06 +02:00
Robert Svensson
05d40fbc4c Bump axis to v60 (#114544)
* Improve Axis MQTT support

* Bump axis to v60
2024-04-01 00:24:41 +02:00
Jan-Philipp Benecke
f08af5dc6d Avoid use of hass.helpers in _mqtt_mock_entry fixture (#114536) 2024-03-31 11:33:59 -10:00
G Johansson
3bb9858dfb Fix server update from breaking setup in Speedtest.NET (#114524) 2024-03-31 20:08:43 +02:00
Thomas55555
5eb4cf6a05 Add error sensor for Husqvarna Automower (#113165)
* Add error sensor for Husqvarna Automower

* Apply suggestions from code review

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

* address review

* Add restricted reason sensor

* ruff

* pin options

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2024-03-31 20:06:30 +02:00
wittypluck
7919ca63d0 Add uptime sensor to Glances (#111402)
* Add uptime sensor to Glances

* Merge upstream

* Merge upstream

* Fix coverage

* Add uptime sensor to Glances

* Merge upstream

* Merge upstream

* Fix coverage

* Move most uptime specific code to DataUpdateCoordinator

* Add last_reported after merge with upstream

* Add unit tests for uptime sensor

* Add unit tests for uptime sensor

* Add unit tests for uptime sensor

* Add unit tests for uptime sensor

* Move update code out of getter native_value()

* Add unit tests for uptime sensor

* Update uptime method signatures

* Set uptime icon in icons.json

* Use freezer.tick for uptime tests

* Frozen time test fails on github

* Add MIN_UPTIME_VARIATION const value

* Only update uptime on startup or when remote server restarts

* Fix for 0 values

* Set value to None to set state to Unknown if key is not found

* Add unit test for uptime change

* Code reduction

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2024-03-31 20:04:39 +02:00
J. Nick Koston
8ebdd46509 Bump aiodns to 3.2.0 (#114527)
changelog: https://github.com/saghul/aiodns/compare/v3.1.1...v3.2.0
2024-03-31 19:41:06 +02:00
Joost Lekkerkerker
52741d7114 Add single config entry to Analytics insights (#114427)
* Add single config entry to Analytics insights

* Add single config entry to Analytics insights

* Add single config entry to Analytics insights
2024-03-31 15:47:24 +02:00
Jan-Philipp Benecke
d5da0a053b Deprecate hass.helpers (#114484)
* Deprecate hass.helpers

* Patch

* Patch _REPORTED_INTEGRATIONS set in test

* Fix test

* Update version
2024-03-31 11:44:11 +02:00
dotvav
f2f24a5d35 Fix Overkiz Hitachi OVP air-to-air heat pump (#114487)
Unpack command parameters instead of passing a list
2024-03-31 11:38:59 +02:00
Sid
d846676e84 Enable first batch of Ruff RET rules (#114480)
* Enable first batch of Ruff RET rules

* disable pylint rules
2024-03-31 11:30:59 +02:00
Jan-Philipp Benecke
6e3e09f2c3 Use entity & device registry mocks instead of hass.helpers in airthings_ble tests (#114520) 2024-03-31 09:08:07 +02:00
J. Nick Koston
5038a035bd Detect blocking module imports in the event loop (#114488) 2024-03-30 19:51:31 -10:00
Paulus Schoutsen
f01235ef74 Re-organize conversation integration (#114502)
* Re-organize conversation integration

* Clean up 2 more imports

* Re-export models

* Fix imports

* Uno mas

* Rename agents to models

* Fix cast test that i broke?

* Just blocking till I'm done

* Wrong place
2024-03-31 00:05:25 -04:00
Paulus Schoutsen
fb572b8413 Conversation to unsubscribe when no cache to invalidate (#114515)
* Add event filter callbacks to conversation

* Unsusbcribe when we have no slot lists
2024-03-30 23:47:13 -04:00
J. Nick Koston
f0b07ae942 Add pytest rewrite for wemo tests that use entity_test_helpers (#114516) 2024-03-30 17:35:49 -10:00
TheJulianJES
b0a1450a2b Fix ZHA websocket API test (#114495)
* Fix result overwriting expected config

* Use `BASE_CUSTOM_CONFIGURATION` for initial/expected config
2024-03-31 00:17:09 +01:00
Michael Hansen
d23b22b566 Add initial support for floors to intents (#114456)
* Add initial support for floors to intents

* Fix climate intent

* More tests

* No return value

* Add requested changes

* Reuse event handler
2024-03-30 16:59:20 -04:00
Jan-Philipp Benecke
502231b7d2 Avoid call to hass.helpers.store in CategoryRegistry (#114485) 2024-03-30 21:15:52 +01:00
J. Nick Koston
ef5f6829e7 Fix late load of anyio doing blocking I/O in the event loop (#114491)
* Fix late load of anyio doing blocking I/O in the event loop

httpx loads anyio which loads the asyncio backend in the event loop
as soon as httpx makes the first request

* tweak
2024-03-30 14:56:01 -04:00
Bruno Henrique
9f9a141112 Add UniFi WLAN Password sensor (#114419)
* Adding UniFi WLAN Password Sensor

* Adding UniFi WLAN Password Sensor

* Adding UniFi WLAN Password Sensor

* Adding UniFi WLAN Password Sensor

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* Adding UniFi WLAN Password Sensor

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* Adding UniFi WLAN Password Sensor

* Adding UniFi WLAN Password Sensor

* Adding UniFi WLAN Password Sensor

---------

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2024-03-30 19:49:33 +01:00
J. Nick Koston
0b9c40a233 Fix workday doing blocking I/O in the event loop (#114492) 2024-03-30 19:05:14 +01:00
J. Nick Koston
d63adb6350 Improve sonos test synchronization (#114468) 2024-03-30 06:34:47 -10:00
Shay Levy
3e99afdd54 Cleanup Shelly RGBW light entities (#114410) 2024-03-30 18:48:57 +03:00
Bruno Henrique
53f262095c Add UniFi WLAN regenerate password button (#114422)
* Adding UniFi WLAN Change Password Button

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

* Adding UniFi WLAN Regenerate Password Button

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>

---------

Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2024-03-30 15:53:23 +01:00
Tom Matheussen
a1eef4732f Add hourly forecast to open_meteo (#113622)
* Add hourly forecast to open_meteo

* Ran ruff formatting again
2024-03-30 15:13:26 +01:00
Joost Lekkerkerker
b7527feb5f Rework opensky tests (#114441)
* Rework opensky tests

* Rework opensky tests

* Fix
2024-03-30 14:52:33 +01:00
Sid
6587ee20db Enable Ruff TRY300 (#114437)
* Enable Ruff TRY300

* Update validation.py

* Address review comments
2024-03-30 10:37:59 +01:00
J. Nick Koston
9a79320861 Mark executor jobs as background unless created from a tracked task (#114450)
* Mark executor jobs as background unless created from a tracked task

If the current task is not tracked the executor job should not
be a background task to avoid delaying startup and shutdown.

Currently any executor job created in a untracked task or
background task would end up being tracked and delaying
startup/shutdown

* import exec has the same issue

* Avoid tracking import executor jobs

There is no reason to track these jobs as they are always awaited
and we do not want to support fire and forget import executor jobs

* fix xiaomi_miio

* lots of fire time changed without background await

* revert changes moved to other PR

* more

* more

* more

* m

* m

* p

* fix fire and forget tests

* scrape

* sonos

* system

* more

* capture callback before block

* coverage

* more

* more races

* more races

* more

* missed some

* more fixes

* missed some more

* fix

* remove unneeded

* one more race

* two
2024-03-30 00:16:53 -04:00
Sid
aec7a67a58 Unignore Ruff PLE, PLW in tests (#114406)
* Unignore Ruff PLE, PLW in tests

* fix tests
2024-03-29 23:58:30 +01:00
J. Nick Koston
969b027a46 Avoid tracking import executor jobs (#114453) 2024-03-29 22:18:21 +01:00
Paul Bottein
3b4958d972 Update frontend to 20240329.1 (#114459) 2024-03-29 22:13:31 +01:00
Tereza Tomcova
0554ac18b8 Address late code review comment of Prusa MK3 support (#114455)
Address code review comment from #114210 (Prusa MK3 support)
2024-03-29 21:57:08 +01:00
Paul Bottein
0f710f9fe0 Update frontend to 20240329.0 (#114452) 2024-03-29 19:34:16 +01:00
Alexey ALERT Rubashёff
6c6d1fb71d Add overkiz water targets temperature numbers for Atlantic water heater (#114185)
* Adds water targets temperature numbers for Atlantic water heater

* Update homeassistant/components/overkiz/number.py

Co-authored-by: Mick Vleeshouwer <mick@imick.nl>

* Update homeassistant/components/overkiz/number.py

Co-authored-by: Mick Vleeshouwer <mick@imick.nl>

* ruff formatting reverted

* Update homeassistant/components/overkiz/number.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

* Update homeassistant/components/overkiz/number.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

* changed command hardcode to a constant

---------

Co-authored-by: Mick Vleeshouwer <mick@imick.nl>
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-03-29 19:33:13 +01:00
Joost Lekkerkerker
1c151d78a4 Don't store analytics insights info on entry level (#114429) 2024-03-29 19:29:09 +01:00
Steven Looman
eb0aa6bb82 Bump async-upnp-client to 0.38.3 (#114447) 2024-03-29 19:08:07 +01:00
Mick Vleeshouwer
87f4b1414f Bump pyoverkiz to 1.13.9 (#114442) 2024-03-29 17:46:21 +01:00
epenet
60d545e5f9 Log warnings in Renault initialisation (#114445) 2024-03-29 16:20:43 +01:00
J. Nick Koston
63ccdcb786 Avoid concurrent radio operations with powerview hubs (#114399)
Co-authored-by: kingy444 <toddlesking4@hotmail.com>
2024-03-29 16:20:26 +01:00
Jan Bouwhuis
5e3ce80488 Remove stale test for mqtt climate (#114443) 2024-03-29 16:01:50 +01:00
Luca Angemi
54c5f18aac Add uid attribute to imap_content event data (#114432)
* Add uid to imap event

* Add ´uid´ to tests

* Update test_init.py
2024-03-29 15:04:24 +01:00
Jeremy TRUFIER
5b4452a579 Follow real AtlanticPassAPCZoneControlZone physical mode on Overkiz (HEAT, COOL or HEAT_COOL) (#111830)
* Support HEAT_COOL when mode is Auto on overkiz AtlanticPassAPCZoneControlZone

* Refactor ZoneControlZone to simplify usic by only using a single hvac mode

* Fix linting issues

* Makes more sense to use halves there

* Fix PR feedback
2024-03-29 14:51:44 +01:00
Sid
dc557fca1e Refactor conversation mock_agent (#114428)
* Refactor conversation mock_agent

* Address review comments
2024-03-29 14:38:58 +01:00
Jan-Philipp Benecke
8d6d70d6b5 Use setup_test_component_platform helper for select entity component tests instead of hass.components (#114412)
* Use `setup_test_component_platform` helper for select entity component tests instead of `hass.components`

* Use _values instead of _attr_current_option

* Clean up

* Set default current_option for second mock entity

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-29 14:36:33 +01:00
Alexey ALERT Rubashёff
3381469076 Add overkiz heating status, absence mode, and boost mode binary sensors for Atlantic Water Heater (#114184)
* Adds heating status, absense mode, and boost mode binary sensors for Atlantic water heater

* Renamed absence mode and boost mode binary sensors

* Update homeassistant/components/overkiz/binary_sensor.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

* Update homeassistant/components/overkiz/binary_sensor.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

* Update homeassistant/components/overkiz/binary_sensor.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-03-29 14:07:22 +01:00
Alexey ALERT Rubashёff
8ed03112f0 Add overkiz bottom tank water temperature and core control water temperature for Atlantic Water Heater (#114186)
* Adds bottom tank water temperature and core conrol water temperature sensors for Atlantic water heater

* Update homeassistant/components/overkiz/sensor.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

* Update homeassistant/components/overkiz/sensor.py

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-03-29 14:05:18 +01:00
Mischa Siekmann
6d54f686a6 Add Integration for Energenie Power-Sockets (#113097)
* Integration for Energenie Power-Strips (EGPS)

* cleanups reocommended by reviewer

* Adds missing exception handling when trying to send a command to an unreachable device.

* fix: incorrect handling of already opened devices in pyegps api. bump to pyegps=0.2.4

* Add blank line after file docstring, and other cosmetics

* change asyncio.to_thread to async_add_executer_job

* raises HomeAssistantError EgpsException in switch services.

* switch test parameterized by entity name

* reoved unused device registry

* add translation_key and update_before_add

* bump pyegps dependency to version to 0.2.5

* combined get_device patches and put into conftest.py

* changed switch entity to use _attr_is_on and cleanups

* further cleanup

* Apply suggestions from code review

* refactor: rename egps to energenie_power_sockets

* updated test snapshot

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-03-29 13:29:14 +01:00
Steven B
72614c86c2 Bump python-ring-doorbell to 0.8.8 (#114431)
* Bump ring_doorbell to 0.8.8

* Fix intercom history test for new library version

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-03-29 12:47:21 +01:00
Joost Lekkerkerker
ed7e5c4de6 Add single config entry to Mullvad (#114426)
* Add single config entry to Mullvad

* Add single config entry to Mullvad

* Add single config entry to Mullvad

* Fix
2024-03-29 11:04:37 +01:00
Jan-Philipp Benecke
247ee6e4f0 Address late review comments for fan entity component test (#114425)
* Address late review comments for fan entity component test

* Update tests/components/fan/common.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-29 10:18:57 +01:00
Jan-Philipp Benecke
045dc3f1fb Use setup_test_component_platform helper for datetime entity component tests instead of hass.components (#114415) 2024-03-29 07:51:10 +01:00
Jan-Philipp Benecke
74d614243b Use setup_test_component_platform helper for date entity component tests instead of hass.components (#114413)
* Use `setup_test_component_platform` helper for date entity component tests instead of `hass.components`

* Remove missing
2024-03-29 07:43:19 +01:00
J. Nick Koston
61982acb17 Cleanup some plex tasks that delayed startup (#114418) 2024-03-28 20:36:33 -10:00
Jan-Philipp Benecke
a102230498 Use setup_test_component_platform helper for time entity component tests instead of hass.components (#114411) 2024-03-29 07:34:00 +01:00
Jan-Philipp Benecke
ae635a5586 Use setup_test_component_platform helper for fan entity component tests instead of hass.components (#114409) 2024-03-29 07:32:41 +01:00
Sid
a5b609f081 Enable ruff TRY401 (#114395)
* Enable ruff TRY401

* fix tests
2024-03-29 07:20:36 +01:00
Jan-Philipp Benecke
530552b4f5 Use mock_platform for device_tracker entity component tests instead of hass.components (#114398)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2024-03-28 15:23:21 -10:00
Lennard Beers
282cbfc048 Add eq3btsmart integration (#109291)
Co-authored-by: Sid <27780930+autinerd@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2024-03-28 15:20:56 -10:00
Jan-Philipp Benecke
4adbf7c730 Migrate nina to use single_config_entry (#114408) 2024-03-28 23:05:47 +01:00
Jan-Philipp Benecke
7d0437808a Migrate moon to use single_config_entry (#114404) 2024-03-28 21:28:02 +01:00
Jan-Philipp Benecke
3fd24989c6 Use setup_test_component_platform helper for text entity component tests instead of hass.components (#114400) 2024-03-28 21:08:25 +01:00
Paul Bottein
dbbc6914c4 Update frontend to 20240328.0 (#114396) 2024-03-28 20:38:12 +01:00
Scott K Logan
78c1efa7d4 Bump aioraven to 0.5.3 (#114397) 2024-03-28 18:52:17 +01:00
Christopher Bailey
435781be45 Bump pyunifiprotect to 5.1.2 (#114348) 2024-03-28 07:48:51 -10:00
Sid
5523cb6be8 Set ruff requires-version to 0.3.4 (#114388) 2024-03-28 18:45:07 +01:00
Marc Mueller
443bfee16d Replace partial annotations (#114177) 2024-03-28 18:33:39 +01:00
Michael Hansen
6fafb9c9b4 Filter preferred TTS format options if not supported (#114392)
Filter preferred format options if not supported
2024-03-28 11:09:15 -05:00
Franck Nijhof
3df03f5be5 Fix area search for entities of devices (#114394) 2024-03-28 16:57:29 +01:00
Franck Nijhof
192fad040a Fix hassfest service icons check for custom integrations (#114389) 2024-03-28 16:20:20 +01:00
Martin Hjelmare
f9aa7d34f8 Use fallback voice for selected language in cloud (#114246)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2024-03-28 15:44:50 +01:00
Martin Hjelmare
52ca14de48 Add matter zeroconf (#114385)
* Add matter zeroconf

* Clean up
2024-03-28 14:57:18 +01:00
Mark Adkins
2511a9a087 Add SharkIQ room targeting (#89350)
* SharkIQ Dep & Codeowner Update

* Update code owners

* SharkIQ Room-Targeting Support

* Add Tests for New Service

* Remove unreachable code

* Refine tests to reflect unreachable code changes

* Updates based on PR comments

* Updates based on PR review comments

* Address issues found in PR Review

* Update Exception type, add excption message to strings.  Do not save room list in state history.

* Update message to be more clear that only one faild room is listed

* couple more updates based on comments

---------

Co-authored-by: jrlambs <jrlambs@gmail.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2024-03-28 14:19:25 +01:00
Marc Mueller
b90542077c Update boto3 to 1.34.51 and aiobotocore to 2.12.1 (#114379) 2024-03-28 14:18:44 +01:00
Jan-Philipp Benecke
71a0a7fe00 Use setup_test_component_platform helper for switch entity component tests instead of hass.components (#114305)
* Use `setup_test_component_platform` helper for switch entity component tests instead of `hass.components`

* Do not import fixtures

* Re-add switch.py to testing_config as stub

* Rename to mock_toggle_entities
2024-03-28 13:56:23 +01:00
Marc Mueller
a3f251674a Update romy to 0.0.9 (#114360) 2024-03-28 13:56:08 +01:00
Lucas Mindêllo de Andrade
5fb12c93aa SunWEG reauth flow (#105861)
* feat(sunweg): reauth flow

* fix(sunweg): autentication as sunweg 2.1.0

* fix: configflowresult

* chore(sunweg): dedupe code

* chore(sunweg): using entry_id instead of unique_id

* test(sunweg): added test launch reauth flow

* chore(sunweg): moved test_reauth_started test

* chore(sunweg): formatting

* chore(sunweg): formating

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2024-03-28 13:53:32 +01:00
Øyvind Matheson Wergeland
596436d679 Avoid changing local time on Nobø Ecohub (#114332)
nobo_hub: Pass timezone to avoid changing local time on Nobø Ecohub in handshake
2024-03-28 13:31:55 +01:00
Marc Mueller
f80e319a4d Update pytest-xdist to 3.4.0 (#114377) 2024-03-28 13:29:43 +01:00
Maciej Bieniek
c9c0625fa5 Adapt Tractive integration the latest API changes (#114380)
Co-authored-by: Maciej Bieniek <478555+bieniu@users.noreply.github.com>
2024-03-28 13:25:01 +01:00
Erik Montnemery
5b98a8458f Improve device class of utility meter (#114368) 2024-03-28 13:24:44 +01:00
Marc Mueller
68d6f96a9d Update boschshcpy to 0.2.91 (#114366) 2024-03-28 12:41:30 +01:00
Marc Mueller
62816e2041 Update aiogithubapi to 23.11.0 (#114362) 2024-03-28 12:41:08 +01:00
Jan-Philipp Benecke
22b14d83e8 Use setup_test_component_platform helper for sensor entity component tests instead of hass.components (#114316)
* Use `setup_test_component_platform` helper for sensor entity component tests instead of `hass.components`

* Missing file

* Fix import

* Remove invalid device class
2024-03-28 12:07:55 +01:00
Marc Mueller
41bd3d0853 Update pytile to 2023.12.0 (#114370) 2024-03-28 11:37:57 +01:00
Marc Mueller
d2b5769123 Update ovoenergy to 1.3.1 (#114367) 2024-03-28 11:29:31 +01:00
Marc Mueller
f0eca8233e Update aprslib to 0.7.2 (#114365) 2024-03-28 11:28:28 +01:00
Joost Lekkerkerker
795cc361ee Fix Lupusec feedback (#114374) 2024-03-28 11:12:02 +01:00
Joost Lekkerkerker
e1bff6dac4 Fix Swiss public transport feedback (#114373) 2024-03-28 11:11:28 +01:00
Joost Lekkerkerker
fc672be0ca Fix Suez water feedback (#114372) 2024-03-28 11:10:46 +01:00
Joost Lekkerkerker
72cfeff5b2 Fix streamlabswater feedback (#114371) 2024-03-28 11:09:59 +01:00
Marc Mueller
fa72d70726 Update aioazuredevops to 1.4.3 (#114361) 2024-03-28 11:08:38 +01:00
Marc Mueller
4d4d2850be Update pyudev to 0.24.1 (#114359) 2024-03-28 11:01:12 +01:00
Robert Resch
4a9c592f3c Mark core as codeowner for some folders (#114357) 2024-03-28 10:54:10 +01:00
G Johansson
fc4d960d17 Add translation support to Config Entry errors (#106305)
* Config Entry error translation

* split key and placeholders

* Fix config entries tests

* translation optional

* Mods
2024-03-28 10:52:21 +01:00
Erik Montnemery
aa9d58df67 Improve utility meter restore state tests (#114356) 2024-03-28 10:42:52 +01:00
Marc Mueller
a29dc86f62 Fix ruff error (#114364) 2024-03-28 10:31:42 +01:00
Erwin Douna
393dc289c4 Set fastdotcom to gold quality (#105598)
Gold code quality application
2024-03-28 10:24:55 +01:00
Sid
f7b7f74d10 Enable Ruff TRY201 (#114269)
* Enable Ruff TRY201

* remove redundant rules
2024-03-28 10:18:07 +01:00
Yuxin Wang
071c3abb69 Define PARALLEL_UPDATES for APCUPSD (#114134) 2024-03-28 10:17:12 +01:00
Robert Resch
ed90df309c Fix script for checking on existing translations (#114354) 2024-03-28 09:11:02 +01:00
J. Nick Koston
a07dc85bf4 Revert velocity change in powerview (#114337) 2024-03-28 07:58:07 +01:00
J. Nick Koston
bec45dacf0 Add additional coverage to the ESPHome manager (#114265) 2024-03-27 20:52:45 -10:00
Joakim Plate
ae0b41f7a7 Bump fjaraskupan to 2.3.0 (#114344)
Update fjarakupen to 2.3.0

- Support delayed disconnection
- Speed up on/off transitions
2024-03-28 06:57:02 +01:00
J. Nick Koston
f4922edb4b Fix empty delays in script helper (#114346)
fixes
```
Logger: homeassistant.components.automation.kamermaster_knop_4_acties_licht
Bron: components/automation/__init__.py:726
integratie: Automatisering (documentatie, problemen)
Eerst voorgekomen: 22:17:29 (5 gebeurtenissen)
Laatst gelogd: 22:59:24

While executing automation automation.kamermaster_knop_4_acties_licht
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/automation/__init__.py", line 726, in async_trigger
    return await self.action_script.async_run(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1645, in async_run
    return await asyncio.shield(create_eager_task(run.async_run()))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 454, in async_run
    await self._async_step(log_exceptions=False)
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 506, in _async_step
    self._handle_exception(
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 536, in _handle_exception
    raise exception
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 504, in _async_step
    await getattr(self, handler)()
  File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 626, in _async_delay_step
    if timeout_future.done():
       ^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'done'
```
2024-03-28 00:29:43 -04:00
Erik Montnemery
4d7a434254 Don't access States.last_reported_ts before it's added (#114333) 2024-03-28 00:44:01 +01:00
Maikel Punie
4ea8185d4d Bump pyduotecno to 2024.3.2 (#114320) 2024-03-28 00:43:34 +01:00
Michael Hansen
b8e9a78d6f Add more Ollama models (#114339)
Add more models
2024-03-27 18:19:34 -04:00
Robert Resch
acb9eb4818 Download translations only once in the build pipeline (#114335) 2024-03-27 22:52:02 +01:00
Arie Catsman
afcc4b58f4 Remove suggested_uom from frequency in Enphase (#114340)
remove suggested_uom from frequency
2024-03-27 22:49:34 +01:00
Marcel van der Veldt
0e12fea0cb Fix Matter airconditioner discovery of climate platform (#114326)
* Discover Thermostat platform for Room Airconditioner device

* add test

* Adjust docstring

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2024-03-27 22:35:08 +01:00
Robert Resch
d6ac8ba5c8 Remove checked in translations (#114336) 2024-03-27 22:33:06 +01:00
Franck Nijhof
3d4733a026 Bump version to 2024.5.0dev0 (#114324) 2024-03-27 19:43:38 +01:00
Marc Mueller
1120745d4e Update SignalType imports (#114287) 2024-03-27 19:41:11 +01:00
TheJulianJES
1a46158a1d Bump zha-quirks to 0.0.113 (#114311) 2024-03-27 13:53:18 -04:00
5612 changed files with 223685 additions and 78110 deletions

View File

@@ -137,6 +137,7 @@ tests: &tests
- tests/syrupy.py
- tests/test_util/**
- tests/testing_config/**
- tests/typing.py
- tests/util/**
other: &other

View File

@@ -1,12 +1,17 @@
# Sorted by hassfest.
#
# To sort, run python3 -m script.hassfest -p coverage
[run]
source = homeassistant
omit =
homeassistant/__main__.py
homeassistant/helpers/backports/aiohttp_resolver.py
homeassistant/helpers/signal.py
homeassistant/scripts/__init__.py
homeassistant/scripts/benchmark/__init__.py
homeassistant/scripts/check_config.py
homeassistant/scripts/ensure_config.py
homeassistant/scripts/benchmark/__init__.py
homeassistant/scripts/macos/__init__.py
# omit pieces of code that rely on external devices being present
@@ -53,13 +58,18 @@ omit =
homeassistant/components/airvisual/sensor.py
homeassistant/components/airvisual_pro/__init__.py
homeassistant/components/airvisual_pro/sensor.py
homeassistant/components/aladdin_connect/__init__.py
homeassistant/components/aladdin_connect/api.py
homeassistant/components/aladdin_connect/application_credentials.py
homeassistant/components/aladdin_connect/cover.py
homeassistant/components/aladdin_connect/sensor.py
homeassistant/components/alarmdecoder/__init__.py
homeassistant/components/alarmdecoder/alarm_control_panel.py
homeassistant/components/alarmdecoder/binary_sensor.py
homeassistant/components/alarmdecoder/entity.py
homeassistant/components/alarmdecoder/sensor.py
homeassistant/components/alpha_vantage/sensor.py
homeassistant/components/amazon_polly/*
homeassistant/components/ambiclimate/climate.py
homeassistant/components/ambient_station/__init__.py
homeassistant/components/ambient_station/binary_sensor.py
homeassistant/components/ambient_station/entity.py
@@ -77,6 +87,9 @@ omit =
homeassistant/components/aprilaire/climate.py
homeassistant/components/aprilaire/coordinator.py
homeassistant/components/aprilaire/entity.py
homeassistant/components/apsystems/__init__.py
homeassistant/components/apsystems/coordinator.py
homeassistant/components/apsystems/sensor.py
homeassistant/components/aqualogic/*
homeassistant/components/aquostv/media_player.py
homeassistant/components/arcam_fmj/__init__.py
@@ -103,10 +116,8 @@ omit =
homeassistant/components/aurora/sensor.py
homeassistant/components/avea/light.py
homeassistant/components/avion/light.py
homeassistant/components/azure_devops/__init__.py
homeassistant/components/azure_devops/sensor.py
homeassistant/components/azure_service_bus/*
homeassistant/components/awair/coordinator.py
homeassistant/components/azure_service_bus/*
homeassistant/components/baf/__init__.py
homeassistant/components/baf/climate.py
homeassistant/components/baf/entity.py
@@ -117,7 +128,6 @@ omit =
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
@@ -189,9 +199,8 @@ omit =
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/cover.py
homeassistant/components/comelit/humidifier.py
homeassistant/components/comelit/light.py
homeassistant/components/comelit/sensor.py
@@ -239,8 +248,8 @@ omit =
homeassistant/components/dominos/*
homeassistant/components/doods/*
homeassistant/components/doorbird/__init__.py
homeassistant/components/doorbird/camera.py
homeassistant/components/doorbird/button.py
homeassistant/components/doorbird/camera.py
homeassistant/components/doorbird/device.py
homeassistant/components/doorbird/entity.py
homeassistant/components/doorbird/util.py
@@ -252,21 +261,17 @@ omit =
homeassistant/components/dormakaba_dkey/sensor.py
homeassistant/components/dovado/*
homeassistant/components/downloader/__init__.py
homeassistant/components/dsmr_reader/__init__.py
homeassistant/components/dsmr_reader/definitions.py
homeassistant/components/dsmr_reader/sensor.py
homeassistant/components/dte_energy_bridge/sensor.py
homeassistant/components/dublin_bus_transport/sensor.py
homeassistant/components/dunehd/__init__.py
homeassistant/components/dunehd/media_player.py
homeassistant/components/duotecno/__init__.py
homeassistant/components/duotecno/entity.py
homeassistant/components/duotecno/switch.py
homeassistant/components/duotecno/cover.py
homeassistant/components/duotecno/light.py
homeassistant/components/duotecno/climate.py
homeassistant/components/duotecno/binary_sensor.py
homeassistant/components/dwd_weather_warnings/const.py
homeassistant/components/duotecno/climate.py
homeassistant/components/duotecno/cover.py
homeassistant/components/duotecno/entity.py
homeassistant/components/duotecno/light.py
homeassistant/components/duotecno/switch.py
homeassistant/components/dwd_weather_warnings/coordinator.py
homeassistant/components/dwd_weather_warnings/sensor.py
homeassistant/components/dweet/*
@@ -305,10 +310,12 @@ omit =
homeassistant/components/edl21/__init__.py
homeassistant/components/edl21/sensor.py
homeassistant/components/egardia/*
homeassistant/components/electrasmart/__init__.py
homeassistant/components/electrasmart/climate.py
homeassistant/components/electric_kiwi/__init__.py
homeassistant/components/electric_kiwi/api.py
homeassistant/components/electric_kiwi/oauth2.py
homeassistant/components/electric_kiwi/coordinator.py
homeassistant/components/electric_kiwi/oauth2.py
homeassistant/components/electric_kiwi/select.py
homeassistant/components/eliqonline/sensor.py
homeassistant/components/elkm1/__init__.py
@@ -321,8 +328,7 @@ omit =
homeassistant/components/elmax/__init__.py
homeassistant/components/elmax/alarm_control_panel.py
homeassistant/components/elmax/binary_sensor.py
homeassistant/components/elmax/common.py
homeassistant/components/elmax/const.py
homeassistant/components/elmax/coordinator.py
homeassistant/components/elmax/cover.py
homeassistant/components/elmax/switch.py
homeassistant/components/elv/*
@@ -356,12 +362,17 @@ omit =
homeassistant/components/environment_canada/weather.py
homeassistant/components/envisalink/*
homeassistant/components/ephember/climate.py
homeassistant/components/epic_games_store/__init__.py
homeassistant/components/epic_games_store/coordinator.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/eq3btsmart/__init__.py
homeassistant/components/eq3btsmart/climate.py
homeassistant/components/eq3btsmart/entity.py
homeassistant/components/eq3btsmart/models.py
homeassistant/components/escea/__init__.py
homeassistant/components/escea/climate.py
homeassistant/components/escea/discovery.py
@@ -376,11 +387,11 @@ omit =
homeassistant/components/ezviz/binary_sensor.py
homeassistant/components/ezviz/button.py
homeassistant/components/ezviz/camera.py
homeassistant/components/ezviz/coordinator.py
homeassistant/components/ezviz/entity.py
homeassistant/components/ezviz/image.py
homeassistant/components/ezviz/light.py
homeassistant/components/ezviz/coordinator.py
homeassistant/components/ezviz/number.py
homeassistant/components/ezviz/entity.py
homeassistant/components/ezviz/select.py
homeassistant/components/ezviz/sensor.py
homeassistant/components/ezviz/siren.py
@@ -451,8 +462,8 @@ omit =
homeassistant/components/freebox/camera.py
homeassistant/components/freebox/home_base.py
homeassistant/components/freebox/switch.py
homeassistant/components/fritz/common.py
homeassistant/components/fritz/device_tracker.py
homeassistant/components/fritz/coordinator.py
homeassistant/components/fritz/entity.py
homeassistant/components/fritz/services.py
homeassistant/components/fritz/switch.py
homeassistant/components/fritzbox_callmonitor/__init__.py
@@ -462,10 +473,6 @@ omit =
homeassistant/components/frontier_silicon/browse_media.py
homeassistant/components/frontier_silicon/media_player.py
homeassistant/components/futurenow/light.py
homeassistant/components/fyta/__init__.py
homeassistant/components/fyta/coordinator.py
homeassistant/components/fyta/entity.py
homeassistant/components/fyta/sensor.py
homeassistant/components/garadget/cover.py
homeassistant/components/garages_amsterdam/__init__.py
homeassistant/components/garages_amsterdam/binary_sensor.py
@@ -494,7 +501,6 @@ omit =
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
@@ -508,6 +514,7 @@ omit =
homeassistant/components/guardian/util.py
homeassistant/components/guardian/valve.py
homeassistant/components/habitica/__init__.py
homeassistant/components/habitica/coordinator.py
homeassistant/components/habitica/sensor.py
homeassistant/components/harman_kardon_avr/media_player.py
homeassistant/components/harmony/data.py
@@ -529,16 +536,13 @@ omit =
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/hko/weather.py
homeassistant/components/hlk_sw16/__init__.py
homeassistant/components/hlk_sw16/switch.py
homeassistant/components/home_connect/__init__.py
homeassistant/components/home_connect/api.py
homeassistant/components/home_connect/binary_sensor.py
homeassistant/components/home_connect/entity.py
homeassistant/components/home_connect/light.py
homeassistant/components/home_connect/sensor.py
homeassistant/components/home_connect/switch.py
homeassistant/components/homematic/__init__.py
homeassistant/components/homematic/binary_sensor.py
@@ -568,9 +572,9 @@ omit =
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/__init__.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/ialarm/alarm_control_panel.py
@@ -663,9 +667,9 @@ omit =
homeassistant/components/keyboard/*
homeassistant/components/keyboard_remote/*
homeassistant/components/keymitt_ble/__init__.py
homeassistant/components/keymitt_ble/coordinator.py
homeassistant/components/keymitt_ble/entity.py
homeassistant/components/keymitt_ble/switch.py
homeassistant/components/keymitt_ble/coordinator.py
homeassistant/components/kitchen_sink/weather.py
homeassistant/components/kiwi/lock.py
homeassistant/components/kodi/__init__.py
@@ -676,6 +680,7 @@ omit =
homeassistant/components/konnected/panel.py
homeassistant/components/konnected/switch.py
homeassistant/components/kostal_plenticore/__init__.py
homeassistant/components/kostal_plenticore/coordinator.py
homeassistant/components/kostal_plenticore/helper.py
homeassistant/components/kostal_plenticore/select.py
homeassistant/components/kostal_plenticore/sensor.py
@@ -723,7 +728,6 @@ omit =
homeassistant/components/lookin/sensor.py
homeassistant/components/loqed/sensor.py
homeassistant/components/luci/device_tracker.py
homeassistant/components/luftdaten/sensor.py
homeassistant/components/lupusec/__init__.py
homeassistant/components/lupusec/alarm_control_panel.py
homeassistant/components/lupusec/binary_sensor.py
@@ -733,6 +737,7 @@ omit =
homeassistant/components/lutron/binary_sensor.py
homeassistant/components/lutron/cover.py
homeassistant/components/lutron/entity.py
homeassistant/components/lutron/event.py
homeassistant/components/lutron/fan.py
homeassistant/components/lutron/light.py
homeassistant/components/lutron/switch.py
@@ -752,6 +757,7 @@ omit =
homeassistant/components/matrix/__init__.py
homeassistant/components/matrix/notify.py
homeassistant/components/matter/__init__.py
homeassistant/components/matter/fan.py
homeassistant/components/meater/__init__.py
homeassistant/components/meater/sensor.py
homeassistant/components/medcom_ble/__init__.py
@@ -778,7 +784,7 @@ omit =
homeassistant/components/microbees/application_credentials.py
homeassistant/components/microbees/binary_sensor.py
homeassistant/components/microbees/button.py
homeassistant/components/microbees/const.py
homeassistant/components/microbees/climate.py
homeassistant/components/microbees/coordinator.py
homeassistant/components/microbees/cover.py
homeassistant/components/microbees/entity.py
@@ -786,7 +792,7 @@ omit =
homeassistant/components/microbees/sensor.py
homeassistant/components/microbees/switch.py
homeassistant/components/microsoft/tts.py
homeassistant/components/mikrotik/hub.py
homeassistant/components/mikrotik/coordinator.py
homeassistant/components/mill/climate.py
homeassistant/components/mill/sensor.py
homeassistant/components/minio/minio_helper.py
@@ -797,10 +803,10 @@ omit =
homeassistant/components/mochad/switch.py
homeassistant/components/modem_callerid/button.py
homeassistant/components/modem_callerid/sensor.py
homeassistant/components/moehlenhoff_alpha2/__init__.py
homeassistant/components/moehlenhoff_alpha2/binary_sensor.py
homeassistant/components/moehlenhoff_alpha2/climate.py
homeassistant/components/moehlenhoff_alpha2/sensor.py
homeassistant/components/moehlenhoff_alpha2/coordinator.py
homeassistant/components/monzo/__init__.py
homeassistant/components/monzo/api.py
homeassistant/components/motion_blinds/__init__.py
homeassistant/components/motion_blinds/coordinator.py
homeassistant/components/motion_blinds/cover.py
@@ -836,8 +842,15 @@ omit =
homeassistant/components/mysensors/switch.py
homeassistant/components/mystrom/binary_sensor.py
homeassistant/components/mystrom/light.py
homeassistant/components/mystrom/switch.py
homeassistant/components/mystrom/sensor.py
homeassistant/components/mystrom/switch.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
homeassistant/components/nad/media_player.py
homeassistant/components/nanoleaf/__init__.py
homeassistant/components/nanoleaf/button.py
@@ -845,13 +858,13 @@ omit =
homeassistant/components/nanoleaf/light.py
homeassistant/components/neato/__init__.py
homeassistant/components/neato/api.py
homeassistant/components/neato/button.py
homeassistant/components/neato/camera.py
homeassistant/components/neato/entity.py
homeassistant/components/neato/hub.py
homeassistant/components/neato/sensor.py
homeassistant/components/neato/switch.py
homeassistant/components/neato/vacuum.py
homeassistant/components/neato/button.py
homeassistant/components/nederlandse_spoorwegen/sensor.py
homeassistant/components/netdata/sensor.py
homeassistant/components/netgear/__init__.py
@@ -903,9 +916,8 @@ omit =
homeassistant/components/notion/util.py
homeassistant/components/nsw_fuel_station/sensor.py
homeassistant/components/nuki/__init__.py
homeassistant/components/nuki/binary_sensor.py
homeassistant/components/nuki/coordinator.py
homeassistant/components/nuki/lock.py
homeassistant/components/nuki/sensor.py
homeassistant/components/nx584/alarm_control_panel.py
homeassistant/components/oasa_telematics/sensor.py
homeassistant/components/obihai/__init__.py
@@ -918,11 +930,12 @@ omit =
homeassistant/components/ohmconnect/sensor.py
homeassistant/components/ombi/*
homeassistant/components/omnilogic/__init__.py
homeassistant/components/omnilogic/common.py
homeassistant/components/omnilogic/coordinator.py
homeassistant/components/omnilogic/sensor.py
homeassistant/components/omnilogic/switch.py
homeassistant/components/ondilo_ico/__init__.py
homeassistant/components/ondilo_ico/api.py
homeassistant/components/ondilo_ico/coordinator.py
homeassistant/components/ondilo_ico/sensor.py
homeassistant/components/onkyo/media_player.py
homeassistant/components/onvif/__init__.py
@@ -945,7 +958,6 @@ omit =
homeassistant/components/opengarage/sensor.py
homeassistant/components/openhardwaremonitor/sensor.py
homeassistant/components/openhome/__init__.py
homeassistant/components/openhome/const.py
homeassistant/components/openhome/media_player.py
homeassistant/components/opensensemap/air_quality.py
homeassistant/components/opentherm_gw/__init__.py
@@ -957,19 +969,21 @@ omit =
homeassistant/components/openuv/coordinator.py
homeassistant/components/openuv/sensor.py
homeassistant/components/openweathermap/__init__.py
homeassistant/components/openweathermap/coordinator.py
homeassistant/components/openweathermap/repairs.py
homeassistant/components/openweathermap/sensor.py
homeassistant/components/openweathermap/weather.py
homeassistant/components/openweathermap/weather_update_coordinator.py
homeassistant/components/opnsense/__init__.py
homeassistant/components/opnsense/device_tracker.py
homeassistant/components/opower/__init__.py
homeassistant/components/opower/coordinator.py
homeassistant/components/opower/sensor.py
homeassistant/components/opnsense/device_tracker.py
homeassistant/components/opple/light.py
homeassistant/components/oru/*
homeassistant/components/orvibo/switch.py
homeassistant/components/osoenergy/__init__.py
homeassistant/components/osoenergy/const.py
homeassistant/components/osoenergy/binary_sensor.py
homeassistant/components/osoenergy/sensor.py
homeassistant/components/osoenergy/water_heater.py
homeassistant/components/osramlightify/light.py
homeassistant/components/otp/sensor.py
@@ -1005,6 +1019,7 @@ omit =
homeassistant/components/permobil/entity.py
homeassistant/components/permobil/sensor.py
homeassistant/components/philips_js/__init__.py
homeassistant/components/philips_js/coordinator.py
homeassistant/components/philips_js/light.py
homeassistant/components/philips_js/media_player.py
homeassistant/components/philips_js/remote.py
@@ -1013,7 +1028,6 @@ omit =
homeassistant/components/picotts/tts.py
homeassistant/components/pilight/base_class.py
homeassistant/components/pilight/binary_sensor.py
homeassistant/components/pilight/const.py
homeassistant/components/pilight/light.py
homeassistant/components/pilight/switch.py
homeassistant/components/ping/__init__.py
@@ -1032,11 +1046,6 @@ omit =
homeassistant/components/point/alarm_control_panel.py
homeassistant/components/point/binary_sensor.py
homeassistant/components/point/sensor.py
homeassistant/components/poolsense/__init__.py
homeassistant/components/poolsense/binary_sensor.py
homeassistant/components/poolsense/coordinator.py
homeassistant/components/poolsense/entity.py
homeassistant/components/poolsense/sensor.py
homeassistant/components/powerwall/__init__.py
homeassistant/components/progettihwsw/__init__.py
homeassistant/components/progettihwsw/binary_sensor.py
@@ -1063,7 +1072,6 @@ omit =
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
@@ -1086,22 +1094,12 @@ omit =
homeassistant/components/rainmachine/__init__.py
homeassistant/components/rainmachine/binary_sensor.py
homeassistant/components/rainmachine/button.py
homeassistant/components/rainmachine/coordinator.py
homeassistant/components/rainmachine/select.py
homeassistant/components/rainmachine/sensor.py
homeassistant/components/rainmachine/switch.py
homeassistant/components/rainmachine/update.py
homeassistant/components/rainmachine/util.py
homeassistant/components/renson/__init__.py
homeassistant/components/renson/const.py
homeassistant/components/renson/coordinator.py
homeassistant/components/renson/entity.py
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
@@ -1116,6 +1114,16 @@ omit =
homeassistant/components/rejseplanen/sensor.py
homeassistant/components/remember_the_milk/__init__.py
homeassistant/components/remote_rpi_gpio/*
homeassistant/components/renson/__init__.py
homeassistant/components/renson/binary_sensor.py
homeassistant/components/renson/button.py
homeassistant/components/renson/coordinator.py
homeassistant/components/renson/entity.py
homeassistant/components/renson/fan.py
homeassistant/components/renson/number.py
homeassistant/components/renson/sensor.py
homeassistant/components/renson/switch.py
homeassistant/components/renson/time.py
homeassistant/components/reolink/binary_sensor.py
homeassistant/components/reolink/button.py
homeassistant/components/reolink/camera.py
@@ -1141,8 +1149,10 @@ omit =
homeassistant/components/roborock/coordinator.py
homeassistant/components/rocketchat/notify.py
homeassistant/components/romy/__init__.py
homeassistant/components/romy/binary_sensor.py
homeassistant/components/romy/coordinator.py
homeassistant/components/romy/entity.py
homeassistant/components/romy/sensor.py
homeassistant/components/romy/vacuum.py
homeassistant/components/roomba/__init__.py
homeassistant/components/roomba/binary_sensor.py
@@ -1159,15 +1169,16 @@ omit =
homeassistant/components/route53/*
homeassistant/components/rpi_camera/*
homeassistant/components/rtorrent/sensor.py
homeassistant/components/russound_rio/media_player.py
homeassistant/components/russound_rnet/media_player.py
homeassistant/components/ruuvi_gateway/__init__.py
homeassistant/components/ruuvi_gateway/bluetooth.py
homeassistant/components/ruuvi_gateway/coordinator.py
homeassistant/components/russound_rio/media_player.py
homeassistant/components/russound_rnet/media_player.py
homeassistant/components/rympro/__init__.py
homeassistant/components/rympro/coordinator.py
homeassistant/components/rympro/sensor.py
homeassistant/components/sabnzbd/__init__.py
homeassistant/components/sabnzbd/coordinator.py
homeassistant/components/sabnzbd/sensor.py
homeassistant/components/saj/sensor.py
homeassistant/components/satel_integra/*
@@ -1175,12 +1186,10 @@ omit =
homeassistant/components/screenlogic/binary_sensor.py
homeassistant/components/screenlogic/climate.py
homeassistant/components/screenlogic/coordinator.py
homeassistant/components/screenlogic/const.py
homeassistant/components/screenlogic/entity.py
homeassistant/components/screenlogic/light.py
homeassistant/components/screenlogic/number.py
homeassistant/components/screenlogic/sensor.py
homeassistant/components/screenlogic/services.py
homeassistant/components/screenlogic/switch.py
homeassistant/components/scsgate/*
homeassistant/components/sendgrid/notify.py
@@ -1233,7 +1242,6 @@ omit =
homeassistant/components/smappee/switch.py
homeassistant/components/smarty/*
homeassistant/components/sms/__init__.py
homeassistant/components/sms/const.py
homeassistant/components/sms/coordinator.py
homeassistant/components/sms/gateway.py
homeassistant/components/sms/notify.py
@@ -1250,8 +1258,8 @@ omit =
homeassistant/components/solaredge/coordinator.py
homeassistant/components/solaredge_local/sensor.py
homeassistant/components/solarlog/__init__.py
homeassistant/components/solarlog/sensor.py
homeassistant/components/solarlog/coordinator.py
homeassistant/components/solarlog/sensor.py
homeassistant/components/solax/__init__.py
homeassistant/components/solax/sensor.py
homeassistant/components/soma/__init__.py
@@ -1288,14 +1296,6 @@ omit =
homeassistant/components/squeezebox/__init__.py
homeassistant/components/squeezebox/browse_media.py
homeassistant/components/squeezebox/media_player.py
homeassistant/components/starlink/__init__.py
homeassistant/components/starlink/binary_sensor.py
homeassistant/components/starlink/button.py
homeassistant/components/starlink/coordinator.py
homeassistant/components/starlink/device_tracker.py
homeassistant/components/starlink/sensor.py
homeassistant/components/starlink/switch.py
homeassistant/components/starlink/time.py
homeassistant/components/starline/__init__.py
homeassistant/components/starline/account.py
homeassistant/components/starline/binary_sensor.py
@@ -1306,6 +1306,14 @@ omit =
homeassistant/components/starline/sensor.py
homeassistant/components/starline/switch.py
homeassistant/components/starlingbank/sensor.py
homeassistant/components/starlink/__init__.py
homeassistant/components/starlink/binary_sensor.py
homeassistant/components/starlink/button.py
homeassistant/components/starlink/coordinator.py
homeassistant/components/starlink/device_tracker.py
homeassistant/components/starlink/sensor.py
homeassistant/components/starlink/switch.py
homeassistant/components/starlink/time.py
homeassistant/components/steam_online/sensor.py
homeassistant/components/stiebel_eltron/*
homeassistant/components/stookalert/__init__.py
@@ -1327,6 +1335,7 @@ omit =
homeassistant/components/supla/*
homeassistant/components/surepetcare/__init__.py
homeassistant/components/surepetcare/binary_sensor.py
homeassistant/components/surepetcare/coordinator.py
homeassistant/components/surepetcare/entity.py
homeassistant/components/surepetcare/sensor.py
homeassistant/components/swiss_hydrological_data/sensor.py
@@ -1349,12 +1358,13 @@ omit =
homeassistant/components/switchbot/entity.py
homeassistant/components/switchbot/humidifier.py
homeassistant/components/switchbot/light.py
homeassistant/components/switchbot/lock.py
homeassistant/components/switchbot/sensor.py
homeassistant/components/switchbot/switch.py
homeassistant/components/switchbot/lock.py
homeassistant/components/switchbot_cloud/climate.py
homeassistant/components/switchbot_cloud/coordinator.py
homeassistant/components/switchbot_cloud/entity.py
homeassistant/components/switchbot_cloud/sensor.py
homeassistant/components/switchbot_cloud/switch.py
homeassistant/components/switchmate/switch.py
homeassistant/components/syncthing/__init__.py
@@ -1391,11 +1401,6 @@ omit =
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
homeassistant/components/tankerkoenig/coordinator.py
homeassistant/components/tankerkoenig/entity.py
homeassistant/components/tankerkoenig/sensor.py
homeassistant/components/tapsaff/binary_sensor.py
homeassistant/components/tautulli/__init__.py
homeassistant/components/tautulli/coordinator.py
@@ -1418,12 +1423,11 @@ omit =
homeassistant/components/tensorflow/image_processing.py
homeassistant/components/tfiac/climate.py
homeassistant/components/thermoworks_smoke/sensor.py
homeassistant/components/thethingsnetwork/*
homeassistant/components/thingspeak/*
homeassistant/components/thinkingcleaner/*
homeassistant/components/thomson/device_tracker.py
homeassistant/components/tibber/__init__.py
homeassistant/components/tibber/notify.py
homeassistant/components/tibber/coordinator.py
homeassistant/components/tibber/sensor.py
homeassistant/components/tikteck/light.py
homeassistant/components/tile/__init__.py
@@ -1464,6 +1468,7 @@ omit =
homeassistant/components/traccar_server/device_tracker.py
homeassistant/components/traccar_server/entity.py
homeassistant/components/traccar_server/helpers.py
homeassistant/components/traccar_server/sensor.py
homeassistant/components/tractive/__init__.py
homeassistant/components/tractive/binary_sensor.py
homeassistant/components/tractive/device_tracker.py
@@ -1511,9 +1516,9 @@ omit =
homeassistant/components/ue_smart_radio/media_player.py
homeassistant/components/ukraine_alarm/__init__.py
homeassistant/components/ukraine_alarm/binary_sensor.py
homeassistant/components/unifiled/*
homeassistant/components/unifi_direct/__init__.py
homeassistant/components/unifi_direct/device_tracker.py
homeassistant/components/unifiled/*
homeassistant/components/upb/__init__.py
homeassistant/components/upb/light.py
homeassistant/components/upc_connect/*
@@ -1523,14 +1528,15 @@ omit =
homeassistant/components/upnp/__init__.py
homeassistant/components/upnp/device.py
homeassistant/components/upnp/sensor.py
homeassistant/components/vasttrafik/sensor.py
homeassistant/components/v2c/__init__.py
homeassistant/components/v2c/binary_sensor.py
homeassistant/components/v2c/coordinator.py
homeassistant/components/v2c/entity.py
homeassistant/components/v2c/number.py
homeassistant/components/v2c/sensor.py
homeassistant/components/v2c/switch.py
homeassistant/components/vallox/__init__.py
homeassistant/components/vallox/coordinator.py
homeassistant/components/vasttrafik/sensor.py
homeassistant/components/velbus/__init__.py
homeassistant/components/velbus/binary_sensor.py
homeassistant/components/velbus/button.py
@@ -1538,15 +1544,14 @@ omit =
homeassistant/components/velbus/cover.py
homeassistant/components/velbus/entity.py
homeassistant/components/velbus/light.py
homeassistant/components/velbus/sensor.py
homeassistant/components/velbus/select.py
homeassistant/components/velbus/sensor.py
homeassistant/components/velbus/switch.py
homeassistant/components/velux/__init__.py
homeassistant/components/velux/cover.py
homeassistant/components/velux/light.py
homeassistant/components/venstar/__init__.py
homeassistant/components/venstar/binary_sensor.py
homeassistant/components/venstar/climate.py
homeassistant/components/venstar/coordinator.py
homeassistant/components/venstar/sensor.py
homeassistant/components/verisure/__init__.py
homeassistant/components/verisure/alarm_control_panel.py
@@ -1579,7 +1584,6 @@ omit =
homeassistant/components/vlc_telnet/media_player.py
homeassistant/components/vodafone_station/__init__.py
homeassistant/components/vodafone_station/button.py
homeassistant/components/vodafone_station/const.py
homeassistant/components/vodafone_station/coordinator.py
homeassistant/components/vodafone_station/device_tracker.py
homeassistant/components/vodafone_station/sensor.py
@@ -1604,10 +1608,8 @@ omit =
homeassistant/components/watttime/__init__.py
homeassistant/components/watttime/sensor.py
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/wiffi/__init__.py
@@ -1625,6 +1627,7 @@ omit =
homeassistant/components/xbox/base_sensor.py
homeassistant/components/xbox/binary_sensor.py
homeassistant/components/xbox/browse_media.py
homeassistant/components/xbox/coordinator.py
homeassistant/components/xbox/media_player.py
homeassistant/components/xbox/remote.py
homeassistant/components/xbox/sensor.py
@@ -1657,10 +1660,7 @@ omit =
homeassistant/components/xs1/*
homeassistant/components/yale_smart_alarm/__init__.py
homeassistant/components/yale_smart_alarm/alarm_control_panel.py
homeassistant/components/yale_smart_alarm/binary_sensor.py
homeassistant/components/yale_smart_alarm/button.py
homeassistant/components/yale_smart_alarm/entity.py
homeassistant/components/yale_smart_alarm/lock.py
homeassistant/components/yalexs_ble/__init__.py
homeassistant/components/yalexs_ble/binary_sensor.py
homeassistant/components/yalexs_ble/entity.py
@@ -1701,16 +1701,12 @@ omit =
homeassistant/components/zeroconf/models.py
homeassistant/components/zeroconf/usage.py
homeassistant/components/zestimate/sensor.py
homeassistant/components/zeversolar/__init__.py
homeassistant/components/zeversolar/coordinator.py
homeassistant/components/zeversolar/entity.py
homeassistant/components/zeversolar/sensor.py
homeassistant/components/zha/websocket_api.py
homeassistant/components/zha/core/cluster_handlers/*
homeassistant/components/zha/core/device.py
homeassistant/components/zha/core/gateway.py
homeassistant/components/zha/core/helpers.py
homeassistant/components/zha/light.py
homeassistant/components/zha/websocket_api.py
homeassistant/components/zhong_hong/climate.py
homeassistant/components/ziggo_mediabox_xl/media_player.py
homeassistant/components/zoneminder/*
@@ -1727,15 +1723,6 @@ omit =
homeassistant/components/zwave_me/sensor.py
homeassistant/components/zwave_me/siren.py
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]

View File

@@ -4,7 +4,12 @@
"dockerFile": "../Dockerfile.dev",
"postCreateCommand": "script/setup",
"postStartCommand": "script/bootstrap",
"containerEnv": { "DEVCONTAINER": "1" },
"containerEnv": {
"PYTHONASYNCIODEBUG": "1"
},
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {}
},
// Port 5683 udp is used by Shelly integration
"appPort": ["8123:8123", "5683:5683/udp"],
"runArgs": ["-e", "GIT_EDITOR=code --wait"],
@@ -17,12 +22,15 @@
"visualstudioexptteam.vscodeintellicode",
"redhat.vscode-yaml",
"esbenp.prettier-vscode",
"GitHub.vscode-pull-request-github"
"GitHub.vscode-pull-request-github",
"GitHub.copilot"
],
// Please keep this file in sync with settings in home-assistant/.vscode/settings.default.json
"settings": {
"python.experiments.optOutFrom": ["pythonTestAdapter"],
"python.pythonPath": "/usr/local/bin/python",
"python.defaultInterpreterPath": "/home/vscode/.local/ha-venv/bin/python",
"python.pythonPath": "/home/vscode/.local/ha-venv/bin/python",
"python.terminal.activateEnvInCurrentTerminal": true,
"python.testing.pytestArgs": ["--no-cov"],
"editor.formatOnPaste": false,
"editor.formatOnSave": true,

View File

@@ -27,7 +27,7 @@ jobs:
publish: ${{ steps.version.outputs.publish }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
with:
fetch-depth: 0
@@ -69,7 +69,7 @@ jobs:
run: find ./homeassistant/components/*/translations -name "*.json" | tar zcvf translations.tar.gz -T -
- name: Upload translations
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: translations
path: translations.tar.gz
@@ -90,7 +90,7 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
@@ -174,17 +174,8 @@ 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
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
name: translations
@@ -199,7 +190,7 @@ jobs:
echo "${{ github.sha }};${{ github.ref }};${{ github.event_name }};${{ github.actor }}" > rootfs/OFFICIAL_IMAGE
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -251,7 +242,7 @@ jobs:
- green
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set build additional args
run: |
@@ -265,7 +256,7 @@ jobs:
fi
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -288,7 +279,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Initialize git
uses: home-assistant/actions/helpers/git-init@master
@@ -329,23 +320,23 @@ jobs:
registry: ["ghcr.io/home-assistant", "docker.io/homeassistant"]
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Install Cosign
uses: sigstore/cosign-installer@v3.4.0
uses: sigstore/cosign-installer@v3.5.0
with:
cosign-release: "v2.2.3"
- name: Login to DockerHub
if: matrix.registry == 'docker.io/homeassistant'
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.2.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
if: matrix.registry == 'ghcr.io/home-assistant'
uses: docker/login-action@v3.1.0
uses: docker/login-action@v3.2.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -459,7 +450,7 @@ jobs:
if: github.repository_owner == 'home-assistant' && needs.init.outputs.publish == 'true'
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.1.0
@@ -467,7 +458,7 @@ jobs:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Download translations
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
name: translations

View File

@@ -33,10 +33,10 @@ on:
type: boolean
env:
CACHE_VERSION: 5
CACHE_VERSION: 8
UV_CACHE_VERSION: 1
MYPY_CACHE_VERSION: 8
HA_SHORT_VERSION: "2024.4"
HA_SHORT_VERSION: "2024.6"
DEFAULT_PYTHON: "3.12"
ALL_PYTHON_VERSIONS: "['3.12']"
# 10.3 is the oldest supported version
@@ -89,14 +89,18 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Generate partial Python venv restore key
id: generate_python_cache_key
run: >-
echo "key=venv-${{ env.CACHE_VERSION }}-${{
hashFiles('requirements_test.txt') }}-${{
run: |
# Include HA_SHORT_VERSION to force the immediate creation
# of a new uv cache entry after a version bump.
echo "key=venv-${{ env.CACHE_VERSION }}-${{ env.HA_SHORT_VERSION }}-${{
hashFiles('requirements_test.txt', 'requirements_test_pre_commit.txt') }}-${{
hashFiles('requirements.txt') }}-${{
hashFiles('requirements_all.txt') }}-${{
hashFiles('homeassistant/package_constraints.txt') }}" >> $GITHUB_OUTPUT
hashFiles('homeassistant/package_constraints.txt') }}-${{
hashFiles('script/gen_requirements_all.py') }}" >> $GITHUB_OUTPUT
- name: Generate partial pre-commit restore key
id: generate_pre-commit_cache_key
run: >-
@@ -222,7 +226,7 @@ jobs:
- info
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
@@ -268,7 +272,7 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.1.0
id: python
@@ -308,7 +312,7 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.1.0
id: python
@@ -347,7 +351,7 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.1.0
id: python
@@ -441,7 +445,7 @@ jobs:
python-version: ${{ fromJSON(needs.info.outputs.python_versions) }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.1.0
@@ -450,8 +454,10 @@ jobs:
check-latest: true
- name: Generate partial uv restore key
id: generate-uv-key
run: >-
echo "key=uv-${{ env.UV_CACHE_VERSION }}-${{
run: |
uv_version=$(cat requirements_test.txt | grep uv | cut -d '=' -f 3)
echo "version=${uv_version}" >> $GITHUB_OUTPUT
echo "key=uv-${{ env.UV_CACHE_VERSION }}-${uv_version}-${{
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
- name: Restore base Python virtual environment
id: cache-venv
@@ -471,10 +477,13 @@ jobs:
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-uv-key.outputs.key }}
restore-keys: |
${{ runner.os }}-${{ steps.python.outputs.python-version }}-uv-${{ env.UV_CACHE_VERSION }}-${{ env.HA_SHORT_VERSION }}-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-uv-${{
env.UV_CACHE_VERSION }}-${{ steps.generate-uv-key.outputs.version }}-${{
env.HA_SHORT_VERSION }}-
- name: Install additional OS dependencies
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get -y install \
bluez \
@@ -484,6 +493,7 @@ jobs:
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libgammu-dev \
libswresample-dev \
libswscale-dev \
libudev-dev
@@ -495,7 +505,9 @@ jobs:
python --version
pip install "$(grep '^uv' < requirements_test.txt)"
uv pip install -U "pip>=21.3.1" setuptools wheel
uv pip install -r requirements_all.txt
uv pip install -r requirements.txt
python -m script.gen_requirements_all ci
uv pip install -r requirements_all_pytest.txt
uv pip install -r requirements_test.txt
uv pip install -e . --config-settings editable_mode=compat
@@ -510,7 +522,7 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
@@ -542,7 +554,7 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
@@ -575,7 +587,7 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
@@ -599,14 +611,14 @@ jobs:
run: |
. venv/bin/activate
python --version
pylint --ignore-missing-annotations=y --ignore-wrong-coordinator-module=y homeassistant
pylint --ignore-missing-annotations=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 --ignore-wrong-coordinator-module=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
pylint --ignore-missing-annotations=y homeassistant/components/${{ needs.info.outputs.integrations_glob }}
mypy:
name: Check mypy
@@ -619,7 +631,7 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
@@ -670,14 +682,63 @@ jobs:
python --version
mypy homeassistant/components/${{ needs.info.outputs.integrations_glob }}
pytest:
prepare-pytest-full:
runs-on: ubuntu-22.04
if: |
(github.event_name != 'push' || github.event.repository.full_name == 'home-assistant/core')
&& github.event.inputs.lint-only != 'true'
&& github.event.inputs.pylint-only != 'true'
&& github.event.inputs.mypy-only != 'true'
&& (needs.info.outputs.test_full_suite == 'true' || needs.info.outputs.tests_glob)
&& needs.info.outputs.test_full_suite == 'true'
needs:
- info
- base
name: Split tests for full run
steps:
- name: Install additional OS dependencies
run: |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg \
libgammu-dev
- name: Check out code from GitHub
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Restore base Python virtual environment
id: cache-venv
uses: actions/cache/restore@v4.0.2
with:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Run split_tests.py
run: |
. venv/bin/activate
python -m script.split_tests ${{ needs.info.outputs.test_group_count }} tests
- name: Upload pytest_buckets
uses: actions/upload-artifact@v4.3.3
with:
name: pytest_buckets
path: pytest_buckets.txt
overwrite: true
pytest-full:
runs-on: ubuntu-22.04
if: |
(github.event_name != 'push' || github.event.repository.full_name == 'home-assistant/core')
&& github.event.inputs.lint-only != 'true'
&& github.event.inputs.pylint-only != 'true'
&& github.event.inputs.mypy-only != 'true'
&& needs.info.outputs.test_full_suite == 'true'
needs:
- info
- base
@@ -686,6 +747,7 @@ jobs:
- lint-other
- lint-ruff
- mypy
- prepare-pytest-full
strategy:
fail-fast: false
matrix:
@@ -696,12 +758,14 @@ jobs:
steps:
- name: Install additional OS dependencies
run: |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg
ffmpeg \
libgammu-dev
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.1.0
@@ -722,12 +786,15 @@ jobs:
- name: Register pytest slow test problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/pytest-slow.json"
- name: Download pytest_buckets
uses: actions/download-artifact@v4.1.7
with:
name: pytest_buckets
- name: Compile English translations
run: |
. venv/bin/activate
python3 -m script.translations develop --all
- name: Run pytest (fully)
if: needs.info.outputs.test_full_suite == 'true'
- name: Run pytest
timeout-minutes: 60
id: pytest-full
env:
@@ -748,62 +815,27 @@ jobs:
--durations=10 \
-n auto \
--dist=loadfile \
--test-group-count ${{ needs.info.outputs.test_group_count }} \
--test-group=${{ matrix.group }} \
${cov_params[@]} \
-o console_output_style=count \
-p no:sugar \
tests \
2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt
- name: Run pytest (partially)
if: needs.info.outputs.test_full_suite == 'false'
timeout-minutes: 10
id: pytest-partial
shell: bash
env:
PYTHONDONTWRITEBYTECODE: 1
run: |
. venv/bin/activate
python --version
set -o pipefail
if [[ ! -f "tests/components/${{ matrix.group }}/__init__.py" ]]; then
echo "::error:: missing file tests/components/${{ matrix.group }}/__init__.py"
exit 1
fi
cov_params=()
if [[ "${{ needs.info.outputs.skip_coverage }}" != "true" ]]; then
cov_params+=(--cov="homeassistant.components.${{ matrix.group }}")
cov_params+=(--cov-report=xml)
cov_params+=(--cov-report=term-missing)
fi
python3 -b -X dev -m pytest \
-qq \
--timeout=9 \
-n auto \
${cov_params[@]} \
-o console_output_style=count \
--durations=0 \
--durations-min=1 \
-p no:sugar \
tests/components/${{ matrix.group }} \
$(sed -n "${{ matrix.group }},1p" pytest_buckets.txt) \
2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt
- name: Upload pytest output
if: success() || failure() && (steps.pytest-full.conclusion == 'failure' || steps.pytest-partial.conclusion == 'failure')
uses: actions/upload-artifact@v4.3.1
if: success() || failure() && steps.pytest-full.conclusion == 'failure'
uses: actions/upload-artifact@v4.3.3
with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.group }}
path: pytest-*.txt
overwrite: true
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
overwrite: true
- name: Remove pytest_buckets
run: rm pytest_buckets.txt
- name: Check dirty
run: |
./script/check_dirty
@@ -842,13 +874,14 @@ jobs:
steps:
- name: Install additional OS dependencies
run: |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg \
libmariadb-dev-compat
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.1.0
@@ -912,7 +945,7 @@ jobs:
2>&1 | tee pytest-${{ matrix.python-version }}-${mariadb}.txt
- name: Upload pytest output
if: success() || failure() && steps.pytest-partial.conclusion == 'failure'
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.mariadb }}
@@ -920,7 +953,7 @@ jobs:
overwrite: true
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.mariadb }}
@@ -964,13 +997,14 @@ jobs:
steps:
- name: Install additional OS dependencies
run: |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg \
postgresql-server-dev-14
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.1.0
@@ -1035,7 +1069,7 @@ jobs:
2>&1 | tee pytest-${{ matrix.python-version }}-${postgresql}.txt
- name: Upload pytest output
if: success() || failure() && steps.pytest-partial.conclusion == 'failure'
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.postgresql }}
@@ -1043,7 +1077,7 @@ jobs:
overwrite: true
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.postgresql }}
@@ -1053,39 +1087,160 @@ jobs:
run: |
./script/check_dirty
coverage:
name: Upload test coverage to Codecov
coverage-full:
name: Upload test coverage to Codecov (full suite)
if: needs.info.outputs.skip_coverage != 'true'
runs-on: ubuntu-22.04
needs:
- info
- pytest
- pytest-full
- pytest-postgres
- pytest-mariadb
timeout-minutes: 10
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Download all coverage artifacts
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
pattern: coverage-*
- name: Upload coverage to Codecov (full coverage)
- name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'true'
uses: Wandalen/wretry.action@v2.1.0
uses: codecov/codecov-action@v4.4.1
with:
action: codecov/codecov-action@v3.1.3
with: |
fail_ci_if_error: true
flags: full-suite
token: ${{ env.CODECOV_TOKEN }}
attempt_limit: 5
attempt_delay: 30000
- name: Upload coverage to Codecov (partial coverage)
fail_ci_if_error: true
flags: full-suite
token: ${{ secrets.CODECOV_TOKEN }}
pytest-partial:
runs-on: ubuntu-22.04
if: |
(github.event_name != 'push' || github.event.repository.full_name == 'home-assistant/core')
&& github.event.inputs.lint-only != 'true'
&& github.event.inputs.pylint-only != 'true'
&& github.event.inputs.mypy-only != 'true'
&& needs.info.outputs.tests_glob
&& needs.info.outputs.test_full_suite == 'false'
needs:
- info
- base
- gen-requirements-all
- hassfest
- lint-other
- lint-ruff
- mypy
strategy:
fail-fast: false
matrix:
group: ${{ fromJson(needs.info.outputs.test_groups) }}
python-version: ${{ fromJson(needs.info.outputs.python_versions) }}
name: >-
Run tests Python ${{ matrix.python-version }} (${{ matrix.group }})
steps:
- name: Install additional OS dependencies
run: |
sudo rm /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get update
sudo apt-get -y install \
bluez \
ffmpeg \
libgammu-dev
- name: Check out code from GitHub
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Restore full Python ${{ matrix.python-version }} virtual environment
id: cache-venv
uses: actions/cache/restore@v4.0.2
with:
path: venv
fail-on-cache-miss: true
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register Python problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/python.json"
- name: Register pytest slow test problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/pytest-slow.json"
- name: Compile English translations
run: |
. venv/bin/activate
python3 -m script.translations develop --all
- name: Run pytest
timeout-minutes: 10
id: pytest-partial
shell: bash
env:
PYTHONDONTWRITEBYTECODE: 1
run: |
. venv/bin/activate
python --version
set -o pipefail
if [[ ! -f "tests/components/${{ matrix.group }}/__init__.py" ]]; then
echo "::error:: missing file tests/components/${{ matrix.group }}/__init__.py"
exit 1
fi
cov_params=()
if [[ "${{ needs.info.outputs.skip_coverage }}" != "true" ]]; then
cov_params+=(--cov="homeassistant.components.${{ matrix.group }}")
cov_params+=(--cov-report=xml)
cov_params+=(--cov-report=term-missing)
fi
python3 -b -X dev -m pytest \
-qq \
--timeout=9 \
-n auto \
${cov_params[@]} \
-o console_output_style=count \
--durations=0 \
--durations-min=1 \
-p no:sugar \
tests/components/${{ matrix.group }} \
2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt
- name: Upload pytest output
if: success() || failure() && steps.pytest-partial.conclusion == 'failure'
uses: actions/upload-artifact@v4.3.3
with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.group }}
path: pytest-*.txt
overwrite: true
- name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.3.3
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
overwrite: true
- name: Check dirty
run: |
./script/check_dirty
coverage-partial:
name: Upload test coverage to Codecov (partial suite)
if: needs.info.outputs.skip_coverage != 'true'
runs-on: ubuntu-22.04
needs:
- info
- pytest-partial
timeout-minutes: 10
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.6
- name: Download all coverage artifacts
uses: actions/download-artifact@v4.1.7
with:
pattern: coverage-*
- name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'false'
uses: Wandalen/wretry.action@v2.1.0
uses: codecov/codecov-action@v4.4.1
with:
action: codecov/codecov-action@v3.1.3
with: |
fail_ci_if_error: true
token: ${{ env.CODECOV_TOKEN }}
attempt_limit: 5
attempt_delay: 30000
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}

View File

@@ -21,14 +21,14 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Initialize CodeQL
uses: github/codeql-action/init@v3.24.9
uses: github/codeql-action/init@v3.25.6
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3.24.9
uses: github/codeql-action/analyze@v3.25.6
with:
category: "/language:python"

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.1.0

View File

@@ -14,6 +14,10 @@ on:
- "homeassistant/package_constraints.txt"
- "requirements_all.txt"
- "requirements.txt"
- "script/gen_requirements_all.py"
env:
DEFAULT_PYTHON: "3.12"
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name}}
@@ -28,7 +32,22 @@ jobs:
architectures: ${{ steps.info.outputs.architectures }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.1.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Create Python virtual environment
run: |
python -m venv venv
. venv/bin/activate
python --version
pip install "$(grep '^uv' < requirements_test.txt)"
uv pip install -r requirements.txt
- name: Get information
id: info
@@ -63,19 +82,30 @@ jobs:
) > .env_file
- name: Upload env_file
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: env_file
path: ./.env_file
overwrite: true
- name: Upload requirements_diff
uses: actions/upload-artifact@v4.3.1
uses: actions/upload-artifact@v4.3.3
with:
name: requirements_diff
path: ./requirements_diff.txt
overwrite: true
- name: Generate requirements
run: |
. venv/bin/activate
python -m script.gen_requirements_all ci
- name: Upload requirements_all_wheels
uses: actions/upload-artifact@v4.3.3
with:
name: requirements_all_wheels
path: ./requirements_all_wheels_*.txt
core:
name: Build Core wheels ${{ matrix.abi }} for ${{ matrix.arch }} (musllinux_1_2)
if: github.repository_owner == 'home-assistant'
@@ -88,15 +118,15 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Download env_file
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
name: env_file
- name: Download requirements_diff
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
name: requirements_diff
@@ -126,57 +156,30 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.2
uses: actions/checkout@v4.1.6
- name: Download env_file
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
name: env_file
- name: Download requirements_diff
uses: actions/download-artifact@v4.1.4
uses: actions/download-artifact@v4.1.7
with:
name: requirements_diff
- name: (Un)comment packages
run: |
requirement_files="requirements_all.txt requirements_diff.txt"
for requirement_file in ${requirement_files}; do
sed -i "s|# fritzconnection|fritzconnection|g" ${requirement_file}
sed -i "s|# pyuserinput|pyuserinput|g" ${requirement_file}
sed -i "s|# evdev|evdev|g" ${requirement_file}
sed -i "s|# pycups|pycups|g" ${requirement_file}
sed -i "s|# homekit|homekit|g" ${requirement_file}
sed -i "s|# decora-wifi|decora-wifi|g" ${requirement_file}
sed -i "s|# python-gammu|python-gammu|g" ${requirement_file}
# Some packages are not buildable on armhf anymore
if [ "${{ matrix.arch }}" = "armhf" ]; then
# Pandas has issues building on armhf, it is expected they
# will drop the platform in the near future (they consider it
# "flimsy" on 386). The following packages depend on pandas,
# so we comment them out.
sed -i "s|env-canada|# env-canada|g" ${requirement_file}
sed -i "s|noaa-coops|# noaa-coops|g" ${requirement_file}
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: Download requirements_all_wheels
uses: actions/download-artifact@v4.1.7
with:
name: requirements_all_wheels
- name: Split requirements all
run: |
# We split requirements all into two different files.
# We split requirements all into multiple files.
# This is to prevent the build from running out of memory when
# resolving packages on 32-bits systems (like armhf, armv7).
split -l $(expr $(expr $(cat requirements_all.txt | wc -l) + 1) / 3) requirements_all.txt requirements_all.txt
split -l $(expr $(expr $(cat requirements_all.txt | wc -l) + 1) / 3) requirements_all_wheels_${{ matrix.arch }}.txt requirements_all.txt
- name: Create requirements for cython<3
run: |
@@ -208,7 +211,7 @@ jobs:
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"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf;pydantic
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_old-cython.txt"
@@ -223,7 +226,7 @@ jobs:
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;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf;pydantic
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtaa"
@@ -237,7 +240,7 @@ jobs:
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;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf;pydantic
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtab"
@@ -251,7 +254,7 @@ jobs:
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;nasm"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf;pydantic
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_all.txtac"

4
.gitignore vendored
View File

@@ -34,6 +34,7 @@ Icon
# GITHUB Proposed Python stuff:
*.py[cod]
__pycache__
# C extensions
*.so
@@ -132,3 +133,6 @@ tmp_cache
# python-language-server / Rope
.ropeproject
# Will be created from script/split_tests.py
pytest_buckets.txt

View File

@@ -1,21 +1,21 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.3.4
rev: v0.4.6
hooks:
- id: ruff
args:
- --fix
- id: ruff-format
files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.py$
files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.(py|pyi)$
- repo: https://github.com/codespell-project/codespell
rev: v2.2.6
rev: v2.3.0
hooks:
- id: codespell
args:
- --ignore-words-list=additionals,alle,alot,astroid,bund,caf,convencional,currenty,datas,farenheit,falsy,fo,frequence,haa,hass,iif,incomfort,ines,ist,nam,nd,pres,pullrequests,resset,rime,ser,serie,te,technik,ue,unsecure,vor,withing,zar
- --ignore-words-list=astroid,checkin,currenty,hass,iif,incomfort,lookin,nam,NotIn,pres,ser,ue
- --skip="./.*,*.csv,*.json,*.ambr"
- --quiet-level=2
exclude_types: [csv, json]
exclude_types: [csv, json, html]
exclude: ^tests/fixtures/|homeassistant/generated/|tests/components/.*/snapshots/
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
@@ -61,15 +61,15 @@ repos:
name: mypy
entry: script/run-in-env.sh mypy
language: script
types: [python]
types_or: [python, pyi]
require_serial: true
files: ^(homeassistant|pylint)/.+\.py$
files: ^(homeassistant|pylint)/.+\.(py|pyi)$
- id: pylint
name: pylint
entry: script/run-in-env.sh pylint -j 0 --ignore-missing-annotations=y
language: script
types: [python]
files: ^homeassistant/.+\.py$
types_or: [python, pyi]
files: ^homeassistant/.+\.(py|pyi)$
- id: gen_requirements_all
name: gen_requirements_all
entry: script/run-in-env.sh python3 -m script.gen_requirements_all
@@ -83,7 +83,7 @@ repos:
pass_filenames: false
language: script
types: [text]
files: ^(homeassistant/.+/(icons|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|requirements_test.txt)$
- id: hassfest-metadata
name: hassfest-metadata
entry: script/run-in-env.sh python3 -m script.hassfest -p metadata

View File

@@ -48,6 +48,7 @@ homeassistant.components.adax.*
homeassistant.components.adguard.*
homeassistant.components.aftership.*
homeassistant.components.air_quality.*
homeassistant.components.airgradient.*
homeassistant.components.airly.*
homeassistant.components.airnow.*
homeassistant.components.airq.*
@@ -65,7 +66,7 @@ homeassistant.components.alexa.*
homeassistant.components.alpha_vantage.*
homeassistant.components.amazon_polly.*
homeassistant.components.amberelectric.*
homeassistant.components.ambiclimate.*
homeassistant.components.ambient_network.*
homeassistant.components.ambient_station.*
homeassistant.components.amcrest.*
homeassistant.components.ampio.*
@@ -83,6 +84,7 @@ homeassistant.components.api.*
homeassistant.components.apple_tv.*
homeassistant.components.apprise.*
homeassistant.components.aprs.*
homeassistant.components.apsystems.*
homeassistant.components.aqualogic.*
homeassistant.components.aquostv.*
homeassistant.components.aranet.*
@@ -166,10 +168,12 @@ homeassistant.components.electric_kiwi.*
homeassistant.components.elgato.*
homeassistant.components.elkm1.*
homeassistant.components.emulated_hue.*
homeassistant.components.energenie_power_sockets.*
homeassistant.components.energy.*
homeassistant.components.energyzero.*
homeassistant.components.enigma2.*
homeassistant.components.enphase_envoy.*
homeassistant.components.eq3btsmart.*
homeassistant.components.esphome.*
homeassistant.components.event.*
homeassistant.components.evil_genius_labs.*
@@ -232,6 +236,7 @@ homeassistant.components.homeworks.*
homeassistant.components.http.*
homeassistant.components.huawei_lte.*
homeassistant.components.humidifier.*
homeassistant.components.husqvarna_automower.*
homeassistant.components.hydrawise.*
homeassistant.components.hyperion.*
homeassistant.components.ibeacon.*
@@ -240,6 +245,7 @@ homeassistant.components.image.*
homeassistant.components.image_processing.*
homeassistant.components.image_upload.*
homeassistant.components.imap.*
homeassistant.components.imgw_pib.*
homeassistant.components.input_button.*
homeassistant.components.input_select.*
homeassistant.components.input_text.*
@@ -296,6 +302,7 @@ homeassistant.components.minecraft_server.*
homeassistant.components.mjpeg.*
homeassistant.components.modbus.*
homeassistant.components.modem_callerid.*
homeassistant.components.monzo.*
homeassistant.components.moon.*
homeassistant.components.mopeka.*
homeassistant.components.motionmount.*
@@ -334,7 +341,6 @@ homeassistant.components.persistent_notification.*
homeassistant.components.pi_hole.*
homeassistant.components.ping.*
homeassistant.components.plugwise.*
homeassistant.components.poolsense.*
homeassistant.components.powerwall.*
homeassistant.components.private_ble_device.*
homeassistant.components.prometheus.*
@@ -361,6 +367,7 @@ homeassistant.components.rest_command.*
homeassistant.components.rfxtrx.*
homeassistant.components.rhasspy.*
homeassistant.components.ridwell.*
homeassistant.components.ring.*
homeassistant.components.rituals_perfume_genie.*
homeassistant.components.roku.*
homeassistant.components.romy.*
@@ -421,6 +428,7 @@ homeassistant.components.tcp.*
homeassistant.components.technove.*
homeassistant.components.tedee.*
homeassistant.components.text.*
homeassistant.components.thethingsnetwork.*
homeassistant.components.threshold.*
homeassistant.components.tibber.*
homeassistant.components.tile.*

4
.vscode/tasks.json vendored
View File

@@ -103,7 +103,7 @@
{
"label": "Install all Requirements",
"type": "shell",
"command": "pip3 install -r requirements_all.txt",
"command": "uv pip install -r requirements_all.txt",
"group": {
"kind": "build",
"isDefault": true
@@ -117,7 +117,7 @@
{
"label": "Install all Test Requirements",
"type": "shell",
"command": "pip3 install -r requirements_test_all.txt",
"command": "uv pip install -r requirements_test_all.txt",
"group": {
"kind": "build",
"isDefault": true

View File

@@ -5,13 +5,30 @@
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# Home Assistant Core
setup.cfg @home-assistant/core
.core_files.yaml @home-assistant/core
.git-blame-ignore-revs @home-assistant/core
.gitattributes @home-assistant/core
.gitignore @home-assistant/core
.hadolint.yaml @home-assistant/core
.pre-commit-config.yaml @home-assistant/core
.prettierignore @home-assistant/core
.yamllint @home-assistant/core
pyproject.toml @home-assistant/core
requirements_test.txt @home-assistant/core
/.devcontainer/ @home-assistant/core
/.github/ @home-assistant/core
/.vscode/ @home-assistant/core
/homeassistant/*.py @home-assistant/core
/homeassistant/auth/ @home-assistant/core
/homeassistant/backports/ @home-assistant/core
/homeassistant/helpers/ @home-assistant/core
/homeassistant/scripts/ @home-assistant/core
/homeassistant/util/ @home-assistant/core
/pylint/ @home-assistant/core
/script/ @home-assistant/core
# Home Assistant Supervisor
.dockerignore @home-assistant/supervisor
build.json @home-assistant/supervisor
/machine/ @home-assistant/supervisor
/rootfs/ @home-assistant/supervisor
@@ -39,6 +56,8 @@ build.json @home-assistant/supervisor
/tests/components/agent_dvr/ @ispysoftware
/homeassistant/components/air_quality/ @home-assistant/core
/tests/components/air_quality/ @home-assistant/core
/homeassistant/components/airgradient/ @airgradienthq @joostlek
/tests/components/airgradient/ @airgradienthq @joostlek
/homeassistant/components/airly/ @bieniu
/tests/components/airly/ @bieniu
/homeassistant/components/airnow/ @asymworks
@@ -61,8 +80,8 @@ build.json @home-assistant/supervisor
/tests/components/airzone/ @Noltari
/homeassistant/components/airzone_cloud/ @Noltari
/tests/components/airzone_cloud/ @Noltari
/homeassistant/components/aladdin_connect/ @mkmer
/tests/components/aladdin_connect/ @mkmer
/homeassistant/components/aladdin_connect/ @swcloudgenie
/tests/components/aladdin_connect/ @swcloudgenie
/homeassistant/components/alarm_control_panel/ @home-assistant/core
/tests/components/alarm_control_panel/ @home-assistant/core
/homeassistant/components/alert/ @home-assistant/core @frenck
@@ -71,8 +90,8 @@ build.json @home-assistant/supervisor
/tests/components/alexa/ @home-assistant/cloud @ochlocracy @jbouwh
/homeassistant/components/amberelectric/ @madpilot
/tests/components/amberelectric/ @madpilot
/homeassistant/components/ambiclimate/ @danielhiversen
/tests/components/ambiclimate/ @danielhiversen
/homeassistant/components/ambient_network/ @thomaskistler
/tests/components/ambient_network/ @thomaskistler
/homeassistant/components/ambient_station/ @bachya
/tests/components/ambient_station/ @bachya
/homeassistant/components/amcrest/ @flacjacket
@@ -108,11 +127,15 @@ build.json @home-assistant/supervisor
/tests/components/aprilaire/ @chamberlain2007
/homeassistant/components/aprs/ @PhilRW
/tests/components/aprs/ @PhilRW
/homeassistant/components/aranet/ @aschmitz @thecode
/tests/components/aranet/ @aschmitz @thecode
/homeassistant/components/apsystems/ @mawoka-myblock @SonnenladenGmbH
/tests/components/apsystems/ @mawoka-myblock @SonnenladenGmbH
/homeassistant/components/aranet/ @aschmitz @thecode @anrijs
/tests/components/aranet/ @aschmitz @thecode @anrijs
/homeassistant/components/arcam_fmj/ @elupus
/tests/components/arcam_fmj/ @elupus
/homeassistant/components/arris_tg2492lg/ @vanbalken
/homeassistant/components/arve/ @ikalnyi
/tests/components/arve/ @ikalnyi
/homeassistant/components/aseko_pool_live/ @milanmeu
/tests/components/aseko_pool_live/ @milanmeu
/homeassistant/components/assist_pipeline/ @balloob @synesthesiam
@@ -140,6 +163,8 @@ build.json @home-assistant/supervisor
/tests/components/awair/ @ahayworth @danielsjf
/homeassistant/components/axis/ @Kane610
/tests/components/axis/ @Kane610
/homeassistant/components/azure_data_explorer/ @kaareseras
/tests/components/azure_data_explorer/ @kaareseras
/homeassistant/components/azure_devops/ @timmo001
/tests/components/azure_devops/ @timmo001
/homeassistant/components/azure_event_hub/ @eavanvalkenburg
@@ -299,8 +324,8 @@ build.json @home-assistant/supervisor
/tests/components/discovergy/ @jpbede
/homeassistant/components/dlink/ @tkdrob
/tests/components/dlink/ @tkdrob
/homeassistant/components/dlna_dmr/ @StevenLooman @chishm
/tests/components/dlna_dmr/ @StevenLooman @chishm
/homeassistant/components/dlna_dmr/ @chishm
/tests/components/dlna_dmr/ @chishm
/homeassistant/components/dlna_dms/ @chishm
/tests/components/dlna_dms/ @chishm
/homeassistant/components/dnsip/ @gjohansson-ST
@@ -317,8 +342,8 @@ build.json @home-assistant/supervisor
/tests/components/drop_connect/ @ChandlerSystems @pfrazer
/homeassistant/components/dsmr/ @Robbie1221 @frenck
/tests/components/dsmr/ @Robbie1221 @frenck
/homeassistant/components/dsmr_reader/ @sorted-bits @glodenox
/tests/components/dsmr_reader/ @sorted-bits @glodenox
/homeassistant/components/dsmr_reader/ @sorted-bits @glodenox @erwindouna
/tests/components/dsmr_reader/ @sorted-bits @glodenox @erwindouna
/homeassistant/components/duotecno/ @cereal2nd
/tests/components/duotecno/ @cereal2nd
/homeassistant/components/dwd_weather_warnings/ @runningman84 @stephan192 @andarotajo
@@ -361,11 +386,14 @@ build.json @home-assistant/supervisor
/tests/components/emulated_hue/ @bdraco @Tho85
/homeassistant/components/emulated_kasa/ @kbickar
/tests/components/emulated_kasa/ @kbickar
/homeassistant/components/energenie_power_sockets/ @gnumpi
/tests/components/energenie_power_sockets/ @gnumpi
/homeassistant/components/energy/ @home-assistant/core
/tests/components/energy/ @home-assistant/core
/homeassistant/components/energyzero/ @klaasnicolaas
/tests/components/energyzero/ @klaasnicolaas
/homeassistant/components/enigma2/ @autinerd
/tests/components/enigma2/ @autinerd
/homeassistant/components/enocean/ @bdurrer
/tests/components/enocean/ @bdurrer
/homeassistant/components/enphase_envoy/ @bdraco @cgarwood @dgomes @joostlek @catsmanac
@@ -374,11 +402,14 @@ build.json @home-assistant/supervisor
/homeassistant/components/environment_canada/ @gwww @michaeldavie
/tests/components/environment_canada/ @gwww @michaeldavie
/homeassistant/components/ephember/ @ttroy50
/homeassistant/components/epic_games_store/ @hacf-fr @Quentame
/tests/components/epic_games_store/ @hacf-fr @Quentame
/homeassistant/components/epion/ @lhgravendeel
/tests/components/epion/ @lhgravendeel
/homeassistant/components/epson/ @pszafer
/tests/components/epson/ @pszafer
/homeassistant/components/epsonworkforce/ @ThaStealth
/homeassistant/components/eq3btsmart/ @eulemitkeule @dbuezas
/tests/components/eq3btsmart/ @eulemitkeule @dbuezas
/homeassistant/components/escea/ @lazdavila
/tests/components/escea/ @lazdavila
/homeassistant/components/esphome/ @OttoWinter @jesserockz @kbx81 @bdraco
@@ -435,8 +466,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/forked_daapd/ @uvjustin
/tests/components/forked_daapd/ @uvjustin
/homeassistant/components/fortios/ @kimfrellsen
/homeassistant/components/foscam/ @skgsergio @krmarien
/tests/components/foscam/ @skgsergio @krmarien
/homeassistant/components/foscam/ @krmarien
/tests/components/foscam/ @krmarien
/homeassistant/components/freebox/ @hacf-fr @Quentame
/tests/components/freebox/ @hacf-fr @Quentame
/homeassistant/components/freedompro/ @stefano055415
@@ -523,14 +554,14 @@ build.json @home-assistant/supervisor
/tests/components/group/ @home-assistant/core
/homeassistant/components/guardian/ @bachya
/tests/components/guardian/ @bachya
/homeassistant/components/habitica/ @ASMfreaK @leikoilja
/tests/components/habitica/ @ASMfreaK @leikoilja
/homeassistant/components/habitica/ @ASMfreaK @leikoilja @tr4nt0r
/tests/components/habitica/ @ASMfreaK @leikoilja @tr4nt0r
/homeassistant/components/hardkernel/ @home-assistant/core
/tests/components/hardkernel/ @home-assistant/core
/homeassistant/components/hardware/ @home-assistant/core
/tests/components/hardware/ @home-assistant/core
/homeassistant/components/harmony/ @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan
/tests/components/harmony/ @ehendrix23 @bramkragten @bdraco @mkeesey @Aohzan
/homeassistant/components/harmony/ @ehendrix23 @bdraco @mkeesey @Aohzan
/tests/components/harmony/ @ehendrix23 @bdraco @mkeesey @Aohzan
/homeassistant/components/hassio/ @home-assistant/supervisor
/tests/components/hassio/ @home-assistant/supervisor
/homeassistant/components/hdmi_cec/ @inytar
@@ -574,6 +605,8 @@ build.json @home-assistant/supervisor
/tests/components/homekit_controller/ @Jc2k @bdraco
/homeassistant/components/homematic/ @pvizeli
/tests/components/homematic/ @pvizeli
/homeassistant/components/homematicip_cloud/ @hahn-th
/tests/components/homematicip_cloud/ @hahn-th
/homeassistant/components/homewizard/ @DCSBL
/tests/components/homewizard/ @DCSBL
/homeassistant/components/honeywell/ @rdfurman @mkmer
@@ -621,6 +654,8 @@ build.json @home-assistant/supervisor
/tests/components/image_upload/ @home-assistant/core
/homeassistant/components/imap/ @jbouwh
/tests/components/imap/ @jbouwh
/homeassistant/components/imgw_pib/ @bieniu
/tests/components/imgw_pib/ @bieniu
/homeassistant/components/improv_ble/ @emontnemery
/tests/components/improv_ble/ @emontnemery
/homeassistant/components/incomfort/ @zxdavb
@@ -661,8 +696,10 @@ build.json @home-assistant/supervisor
/homeassistant/components/iqvia/ @bachya
/tests/components/iqvia/ @bachya
/homeassistant/components/irish_rail_transport/ @ttroy50
/homeassistant/components/islamic_prayer_times/ @engrbm87
/tests/components/islamic_prayer_times/ @engrbm87
/homeassistant/components/isal/ @bdraco
/tests/components/isal/ @bdraco
/homeassistant/components/islamic_prayer_times/ @engrbm87 @cpfair
/tests/components/islamic_prayer_times/ @engrbm87 @cpfair
/homeassistant/components/iss/ @DurgNomis-drol
/tests/components/iss/ @DurgNomis-drol
/homeassistant/components/isy994/ @bdraco @shbatm
@@ -731,7 +768,8 @@ build.json @home-assistant/supervisor
/tests/components/leaone/ @bdraco
/homeassistant/components/led_ble/ @bdraco
/tests/components/led_ble/ @bdraco
/homeassistant/components/lg_netcast/ @Drafteed
/homeassistant/components/lg_netcast/ @Drafteed @splinter98
/tests/components/lg_netcast/ @Drafteed @splinter98
/homeassistant/components/lidarr/ @tkdrob
/tests/components/lidarr/ @tkdrob
/homeassistant/components/light/ @home-assistant/core
@@ -835,6 +873,8 @@ build.json @home-assistant/supervisor
/tests/components/moehlenhoff_alpha2/ @j-a-n
/homeassistant/components/monoprice/ @etsinko @OnFreund
/tests/components/monoprice/ @etsinko @OnFreund
/homeassistant/components/monzo/ @jakemartin-icl
/tests/components/monzo/ @jakemartin-icl
/homeassistant/components/moon/ @fabaff @frenck
/tests/components/moon/ @fabaff @frenck
/homeassistant/components/mopeka/ @bdraco
@@ -847,8 +887,8 @@ build.json @home-assistant/supervisor
/tests/components/motioneye/ @dermotduffy
/homeassistant/components/motionmount/ @RJPoelstra
/tests/components/motionmount/ @RJPoelstra
/homeassistant/components/mqtt/ @emontnemery @jbouwh
/tests/components/mqtt/ @emontnemery @jbouwh
/homeassistant/components/mqtt/ @emontnemery @jbouwh @bdraco
/tests/components/mqtt/ @emontnemery @jbouwh @bdraco
/homeassistant/components/msteams/ @peroyvind
/homeassistant/components/mullvad/ @meichthys
/tests/components/mullvad/ @meichthys
@@ -1001,8 +1041,8 @@ build.json @home-assistant/supervisor
/tests/components/persistent_notification/ @home-assistant/core
/homeassistant/components/philips_js/ @elupus
/tests/components/philips_js/ @elupus
/homeassistant/components/pi_hole/ @johnluetke @shenxn
/tests/components/pi_hole/ @johnluetke @shenxn
/homeassistant/components/pi_hole/ @shenxn
/tests/components/pi_hole/ @shenxn
/homeassistant/components/picnic/ @corneyl
/tests/components/picnic/ @corneyl
/homeassistant/components/pilight/ @trekky12
@@ -1056,8 +1096,8 @@ build.json @home-assistant/supervisor
/tests/components/pvpc_hourly_pricing/ @azogue
/homeassistant/components/qbittorrent/ @geoffreylagaisse @finder39
/tests/components/qbittorrent/ @geoffreylagaisse @finder39
/homeassistant/components/qingping/ @bdraco @skgsergio
/tests/components/qingping/ @bdraco @skgsergio
/homeassistant/components/qingping/ @bdraco
/tests/components/qingping/ @bdraco
/homeassistant/components/qld_bushfire/ @exxamalte
/tests/components/qld_bushfire/ @exxamalte
/homeassistant/components/qnap/ @disforw
@@ -1156,11 +1196,13 @@ build.json @home-assistant/supervisor
/tests/components/ruuvitag_ble/ @akx
/homeassistant/components/rympro/ @OnFreund @elad-bar @maorcc
/tests/components/rympro/ @OnFreund @elad-bar @maorcc
/homeassistant/components/sabnzbd/ @shaiu
/tests/components/sabnzbd/ @shaiu
/homeassistant/components/sabnzbd/ @shaiu @jpbede
/tests/components/sabnzbd/ @shaiu @jpbede
/homeassistant/components/saj/ @fredericvl
/homeassistant/components/samsungtv/ @chemelli74 @epenet
/tests/components/samsungtv/ @chemelli74 @epenet
/homeassistant/components/sanix/ @tomaszsluszniak
/tests/components/sanix/ @tomaszsluszniak
/homeassistant/components/scene/ @home-assistant/core
/tests/components/scene/ @home-assistant/core
/homeassistant/components/schedule/ @home-assistant/core
@@ -1239,22 +1281,21 @@ build.json @home-assistant/supervisor
/tests/components/smappee/ @bsmappee
/homeassistant/components/smart_meter_texas/ @grahamwetzler
/tests/components/smart_meter_texas/ @grahamwetzler
/homeassistant/components/smartthings/ @andrewsayre
/tests/components/smartthings/ @andrewsayre
/homeassistant/components/smarttub/ @mdz
/tests/components/smarttub/ @mdz
/homeassistant/components/smarty/ @z0mbieprocess
/homeassistant/components/smhi/ @gjohansson-ST
/tests/components/smhi/ @gjohansson-ST
/homeassistant/components/sms/ @ocalvo
/tests/components/sms/ @ocalvo
/homeassistant/components/snapcast/ @luar123
/tests/components/snapcast/ @luar123
/homeassistant/components/snmp/ @nmaggioni
/tests/components/snmp/ @nmaggioni
/homeassistant/components/snooz/ @AustinBrunkhorst
/tests/components/snooz/ @AustinBrunkhorst
/homeassistant/components/solaredge/ @frenck
/tests/components/solaredge/ @frenck
/homeassistant/components/solaredge/ @frenck @bdraco
/tests/components/solaredge/ @frenck @bdraco
/homeassistant/components/solaredge_local/ @drobtravels @scheric
/homeassistant/components/solarlog/ @Ernst79
/tests/components/solarlog/ @Ernst79
@@ -1266,8 +1307,8 @@ build.json @home-assistant/supervisor
/tests/components/sonarr/ @ctalkington
/homeassistant/components/songpal/ @rytilahti @shenxn
/tests/components/songpal/ @rytilahti @shenxn
/homeassistant/components/sonos/ @jjlawren
/tests/components/sonos/ @jjlawren
/homeassistant/components/sonos/ @jjlawren @peterager
/tests/components/sonos/ @jjlawren @peterager
/homeassistant/components/soundtouch/ @kroimon
/tests/components/soundtouch/ @kroimon
/homeassistant/components/spaceapi/ @fabaff
@@ -1326,8 +1367,8 @@ build.json @home-assistant/supervisor
/tests/components/switchbee/ @jafar-atili
/homeassistant/components/switchbot/ @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
/tests/components/switchbot/ @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
/homeassistant/components/switchbot_cloud/ @SeraphicRav
/tests/components/switchbot_cloud/ @SeraphicRav
/homeassistant/components/switchbot_cloud/ @SeraphicRav @laurence-presland
/tests/components/switchbot_cloud/ @SeraphicRav @laurence-presland
/homeassistant/components/switcher_kis/ @thecode
/tests/components/switcher_kis/ @thecode
/homeassistant/components/switchmate/ @danielhiversen @qiz-li
@@ -1380,7 +1421,8 @@ build.json @home-assistant/supervisor
/tests/components/thermobeacon/ @bdraco
/homeassistant/components/thermopro/ @bdraco @h3ss
/tests/components/thermopro/ @bdraco @h3ss
/homeassistant/components/thethingsnetwork/ @fabaff
/homeassistant/components/thethingsnetwork/ @angelnu
/tests/components/thethingsnetwork/ @angelnu
/homeassistant/components/thread/ @home-assistant/core
/tests/components/thread/ @home-assistant/core
/homeassistant/components/tibber/ @danielhiversen
@@ -1444,8 +1486,8 @@ build.json @home-assistant/supervisor
/tests/components/unifi/ @Kane610
/homeassistant/components/unifi_direct/ @tofuSCHNITZEL
/homeassistant/components/unifiled/ @florisvdk
/homeassistant/components/unifiprotect/ @AngellusMortis @bdraco
/tests/components/unifiprotect/ @AngellusMortis @bdraco
/homeassistant/components/unifiprotect/ @bdraco
/tests/components/unifiprotect/ @bdraco
/homeassistant/components/upb/ @gwww
/tests/components/upb/ @gwww
/homeassistant/components/upc_connect/ @pvizeli @fabaff
@@ -1551,8 +1593,8 @@ build.json @home-assistant/supervisor
/tests/components/wiz/ @sbidy
/homeassistant/components/wled/ @frenck
/tests/components/wled/ @frenck
/homeassistant/components/wolflink/ @adamkrol93
/tests/components/wolflink/ @adamkrol93
/homeassistant/components/wolflink/ @adamkrol93 @mtielen
/tests/components/wolflink/ @adamkrol93 @mtielen
/homeassistant/components/workday/ @fabaff @gjohansson-ST
/tests/components/workday/ @fabaff @gjohansson-ST
/homeassistant/components/worldclock/ @fabaff

View File

@@ -5,7 +5,7 @@
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
identity and expression, level of experience, education, socioeconomic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

View File

@@ -12,7 +12,7 @@ ENV \
ARG QEMU_CPU
# Install uv
RUN pip3 install uv==0.1.24
RUN pip3 install uv==0.1.43
WORKDIR /usr/src
@@ -30,14 +30,10 @@ RUN \
uv pip install homeassistant/home_assistant_*.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 uv pip install \
--no-build \
-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" \
uv pip install \
--no-build \
-r homeassistant/requirements_all.txt; \

View File

@@ -22,6 +22,7 @@ RUN \
libavcodec-dev \
libavdevice-dev \
libavutil-dev \
libgammu-dev \
libswscale-dev \
libswresample-dev \
libavfilter-dev \
@@ -34,21 +35,30 @@ RUN \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install uv
RUN pip3 install uv
WORKDIR /usr/src
# Setup hass-release
RUN git clone --depth 1 https://github.com/home-assistant/hass-release \
&& pip3 install -e hass-release/
&& uv pip install --system -e hass-release/
WORKDIR /workspaces
USER vscode
ENV VIRTUAL_ENV="/home/vscode/.local/ha-venv"
RUN uv venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
WORKDIR /tmp
# Install Python dependencies from requirements
COPY requirements.txt ./
COPY homeassistant/package_constraints.txt homeassistant/package_constraints.txt
RUN pip3 install -r requirements.txt
RUN uv pip install -r requirements.txt
COPY requirements_test.txt requirements_test_pre_commit.txt ./
RUN pip3 install -r requirements_test.txt
RUN rm -rf requirements.txt requirements_test.txt requirements_test_pre_commit.txt homeassistant/
RUN uv pip install -r requirements_test.txt
WORKDIR /workspaces
# Set the default shell to bash instead of sh
ENV SHELL /bin/bash

View File

@@ -7,6 +7,8 @@ Check out `home-assistant.io <https://home-assistant.io>`__ for `a
demo <https://demo.home-assistant.io>`__, `installation instructions <https://home-assistant.io/getting-started/>`__,
`tutorials <https://home-assistant.io/getting-started/automation/>`__ and `documentation <https://home-assistant.io/docs/>`__.
This is a project of the `Open Home Foundation <https://www.openhomefoundation.org/>`__.
|screenshot-states|
Featured integrations
@@ -25,4 +27,4 @@ of a component, check the `Home Assistant help section <https://home-assistant.i
.. |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/.github/assets/screenshot-integrations.png
:target: https://home-assistant.io/integrations/
:target: https://home-assistant.io/integrations/

View File

@@ -3,6 +3,7 @@
from __future__ import annotations
import argparse
from contextlib import suppress
import faulthandler
import os
import sys
@@ -146,9 +147,7 @@ def get_arguments() -> argparse.Namespace:
help="Skips validation of operating system",
)
arguments = parser.parse_args()
return arguments
return parser.parse_args()
def check_threads() -> None:
@@ -210,8 +209,10 @@ def main() -> int:
exit_code = runner.run(runtime_conf)
faulthandler.disable()
if os.path.getsize(fault_file_name) == 0:
os.remove(fault_file_name)
# It's possible for the fault file to disappear, so suppress obvious errors
with suppress(FileNotFoundError):
if os.path.getsize(fault_file_name) == 0:
os.remove(fault_file_name)
check_threads()

View File

@@ -33,9 +33,9 @@ EVENT_USER_ADDED = "user_added"
EVENT_USER_UPDATED = "user_updated"
EVENT_USER_REMOVED = "user_removed"
_MfaModuleDict = dict[str, MultiFactorAuthModule]
_ProviderKey = tuple[str, str | None]
_ProviderDict = dict[_ProviderKey, AuthProvider]
type _MfaModuleDict = dict[str, MultiFactorAuthModule]
type _ProviderKey = tuple[str, str | None]
type _ProviderDict = dict[_ProviderKey, AuthProvider]
class InvalidAuthError(Exception):
@@ -85,7 +85,7 @@ async def auth_manager_from_config(
module_hash[module.id] = module
manager = AuthManager(hass, store, provider_hash, module_hash)
manager.async_setup()
await manager.async_setup()
return manager
@@ -181,8 +181,7 @@ class AuthManager:
self._async_remove_expired_refresh_tokens, job_type=HassJobType.Callback
)
@callback
def async_setup(self) -> None:
async def async_setup(self) -> None:
"""Set up the auth manager."""
hass = self.hass
hass.async_add_shutdown_job(
@@ -517,6 +516,13 @@ class AuthManager:
for revoke_callback in callbacks:
revoke_callback()
@callback
def async_set_expiry(
self, refresh_token: models.RefreshToken, *, enable_expiry: bool
) -> None:
"""Enable or disable expiry of a refresh token."""
self._store.async_set_expiry(refresh_token, enable_expiry=enable_expiry)
@callback
def _async_remove_expired_refresh_tokens(self, _: datetime | None = None) -> None:
"""Remove expired refresh tokens."""

View File

@@ -62,6 +62,7 @@ class AuthStore:
self._store = Store[dict[str, list[dict[str, Any]]]](
hass, STORAGE_VERSION, STORAGE_KEY, private=True, atomic_writes=True
)
self._token_id_to_user_id: dict[str, str] = {}
async def async_get_groups(self) -> list[models.Group]:
"""Retrieve all users."""
@@ -135,7 +136,10 @@ class AuthStore:
async def async_remove_user(self, user: models.User) -> None:
"""Remove a user."""
self._users.pop(user.id)
user = self._users.pop(user.id)
for refresh_token_id in user.refresh_tokens:
del self._token_id_to_user_id[refresh_token_id]
user.refresh_tokens.clear()
self._async_schedule_save()
async def async_update_user(
@@ -218,7 +222,9 @@ class AuthStore:
kwargs["client_icon"] = client_icon
refresh_token = models.RefreshToken(**kwargs)
user.refresh_tokens[refresh_token.id] = refresh_token
token_id = refresh_token.id
user.refresh_tokens[token_id] = refresh_token
self._token_id_to_user_id[token_id] = user.id
self._async_schedule_save()
return refresh_token
@@ -226,19 +232,17 @@ class AuthStore:
@callback
def async_remove_refresh_token(self, refresh_token: models.RefreshToken) -> None:
"""Remove a refresh token."""
for user in self._users.values():
if user.refresh_tokens.pop(refresh_token.id, None):
self._async_schedule_save()
break
refresh_token_id = refresh_token.id
if user_id := self._token_id_to_user_id.get(refresh_token_id):
del self._users[user_id].refresh_tokens[refresh_token_id]
del self._token_id_to_user_id[refresh_token_id]
self._async_schedule_save()
@callback
def async_get_refresh_token(self, token_id: str) -> models.RefreshToken | None:
"""Get refresh token by id."""
for user in self._users.values():
refresh_token = user.refresh_tokens.get(token_id)
if refresh_token is not None:
return refresh_token
if user_id := self._token_id_to_user_id.get(token_id):
return self._users[user_id].refresh_tokens.get(token_id)
return None
@callback
@@ -277,6 +281,21 @@ class AuthStore:
)
self._async_schedule_save()
@callback
def async_set_expiry(
self, refresh_token: models.RefreshToken, *, enable_expiry: bool
) -> None:
"""Enable or disable expiry of a refresh token."""
if enable_expiry:
if refresh_token.expire_at is None:
refresh_token.expire_at = (
refresh_token.last_used_at or dt_util.utcnow()
).timestamp() + REFRESH_TOKEN_EXPIRATION
self._async_schedule_save()
else:
refresh_token.expire_at = None
self._async_schedule_save()
async def async_load(self) -> None: # noqa: C901
"""Load the users."""
if self._loaded:
@@ -290,8 +309,6 @@ class AuthStore:
perm_lookup = PermissionLookup(ent_reg, dev_reg)
self._perm_lookup = perm_lookup
now_ts = dt_util.utcnow().timestamp()
if data is None or not isinstance(data, dict):
self._set_defaults()
return
@@ -445,14 +462,6 @@ 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"]],
@@ -469,7 +478,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,
expire_at=rt_dict.get("expire_at"),
version=rt_dict.get("version"),
)
if "credential_id" in rt_dict:
@@ -478,9 +487,18 @@ class AuthStore:
self._groups = groups
self._users = users
self._build_token_id_to_user_id()
self._async_schedule_save(INITIAL_LOAD_SAVE_DELAY)
@callback
def _build_token_id_to_user_id(self) -> None:
"""Build a map of token id to user id."""
self._token_id_to_user_id = {
token_id: user_id
for user_id, user in self._users.items()
for token_id in user.refresh_tokens
}
@callback
def _async_schedule_save(self, delay: float = DEFAULT_SAVE_DELAY) -> None:
"""Save users."""
@@ -574,6 +592,7 @@ class AuthStore:
read_only_group = _system_read_only_group()
groups[read_only_group.id] = read_only_group
self._groups = groups
self._build_token_id_to_user_id()
def _system_admin_group() -> models.Group:

View File

@@ -78,7 +78,7 @@ class _PyJWTWithVerify(PyJWT):
key: str,
algorithms: list[str],
issuer: str | None = None,
leeway: int | float | timedelta = 0,
leeway: float | timedelta = 0,
options: dict[str, Any] | None = None,
) -> dict[str, Any]:
"""Verify a JWT's signature and claims."""

View File

@@ -16,6 +16,7 @@ from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.importlib import async_import_module
from homeassistant.util.decorator import Registry
from homeassistant.util.hass_dict import HassKey
MULTI_FACTOR_AUTH_MODULES: Registry[str, type[MultiFactorAuthModule]] = Registry()
@@ -29,7 +30,7 @@ MULTI_FACTOR_AUTH_MODULE_SCHEMA = vol.Schema(
extra=vol.ALLOW_EXTRA,
)
DATA_REQS = "mfa_auth_module_reqs_processed"
DATA_REQS: HassKey[set[str]] = HassKey("mfa_auth_module_reqs_processed")
_LOGGER = logging.getLogger(__name__)

View File

@@ -88,7 +88,7 @@ class NotifySetting:
target: str | None = attr.ib(default=None)
_UsersDict = dict[str, NotifySetting]
type _UsersDict = dict[str, NotifySetting]
@MULTI_FACTOR_AUTH_MODULES.register("notify")

View File

@@ -3,8 +3,9 @@
from __future__ import annotations
from datetime import datetime, timedelta
from functools import cached_property
import secrets
from typing import TYPE_CHECKING, Any, NamedTuple
from typing import Any, NamedTuple
import uuid
import attr
@@ -18,12 +19,6 @@ 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"
@@ -91,11 +86,7 @@ class User:
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
self.__dict__.pop(attr_to_invalidate, None)
@attr.s(slots=True)

View File

@@ -3,7 +3,6 @@
from __future__ import annotations
from collections.abc import Callable
from typing import Any
import voluptuous as vol
@@ -64,7 +63,7 @@ class PolicyPermissions(AbstractPermissions):
"""Return a function that can test entity access."""
return compile_entities(self._policy.get(CAT_ENTITIES), self._perm_lookup)
def __eq__(self, other: Any) -> bool:
def __eq__(self, other: object) -> bool:
"""Equals check."""
return isinstance(other, PolicyPermissions) and other._policy == self._policy

View File

@@ -2,7 +2,7 @@
from __future__ import annotations
from typing import Final
from typing import Any, Final
from homeassistant.const import (
EVENT_COMPONENT_LOADED,
@@ -21,10 +21,11 @@ from homeassistant.helpers.area_registry import EVENT_AREA_REGISTRY_UPDATED
from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
from homeassistant.helpers.entity_registry import EVENT_ENTITY_REGISTRY_UPDATED
from homeassistant.helpers.issue_registry import EVENT_REPAIRS_ISSUE_REGISTRY_UPDATED
from homeassistant.util.event_type import EventType
# These are events that do not contain any sensitive data
# Except for state_changed, which is handled accordingly.
SUBSCRIBE_ALLOWLIST: Final[set[str]] = {
SUBSCRIBE_ALLOWLIST: Final[set[EventType[Any] | str]] = {
EVENT_AREA_REGISTRY_UPDATED,
EVENT_COMPONENT_LOADED,
EVENT_CORE_CONFIG_UPDATE,

View File

@@ -4,17 +4,17 @@ from collections.abc import Mapping
# MyPy doesn't support recursion yet. So writing it out as far as we need.
ValueType = (
type ValueType = (
# Example: entities.all = { read: true, control: true }
Mapping[str, bool] | bool | None
)
# Example: entities.domains = { light: … }
SubCategoryDict = Mapping[str, ValueType]
type SubCategoryDict = Mapping[str, ValueType]
SubCategoryType = SubCategoryDict | bool | None
type SubCategoryType = SubCategoryDict | bool | None
CategoryType = (
type CategoryType = (
# Example: entities.domains
Mapping[str, SubCategoryType]
# Example: entities.all
@@ -24,4 +24,4 @@ CategoryType = (
)
# Example: { entities: … }
PolicyType = Mapping[str, CategoryType]
type PolicyType = Mapping[str, CategoryType]

View File

@@ -10,8 +10,8 @@ from .const import SUBCAT_ALL
from .models import PermissionLookup
from .types import CategoryType, SubCategoryDict, ValueType
LookupFunc = Callable[[PermissionLookup, SubCategoryDict, str], ValueType | None]
SubCatLookupType = dict[str, LookupFunc]
type LookupFunc = Callable[[PermissionLookup, SubCategoryDict, str], ValueType | None]
type SubCatLookupType = dict[str, LookupFunc]
def lookup_all(

View File

@@ -17,13 +17,14 @@ from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.importlib import async_import_module
from homeassistant.util import dt as dt_util
from homeassistant.util.decorator import Registry
from homeassistant.util.hass_dict import HassKey
from ..auth_store import AuthStore
from ..const import MFA_SESSION_EXPIRATION
from ..models import AuthFlowResult, Credentials, RefreshToken, User, UserMeta
_LOGGER = logging.getLogger(__name__)
DATA_REQS = "auth_prov_reqs_processed"
DATA_REQS: HassKey[set[str]] = HassKey("auth_prov_reqs_processed")
AUTH_PROVIDERS: Registry[str, type[AuthProvider]] = Registry()

View File

@@ -28,8 +28,8 @@ from .. import InvalidAuthError
from ..models import AuthFlowResult, Credentials, RefreshToken, UserMeta
from . import AUTH_PROVIDER_SCHEMA, AUTH_PROVIDERS, AuthProvider, LoginFlow
IPAddress = IPv4Address | IPv6Address
IPNetwork = IPv4Network | IPv6Network
type IPAddress = IPv4Address | IPv6Address
type IPNetwork = IPv4Network | IPv6Network
CONF_TRUSTED_NETWORKS = "trusted_networks"
CONF_TRUSTED_USERS = "trusted_users"

View File

@@ -9,8 +9,21 @@ import it.
from __future__ import annotations
from enum import StrEnum
from enum import StrEnum as _StrEnum
from functools import partial
__all__ = [
"StrEnum",
]
from homeassistant.helpers.deprecation import (
DeprecatedAlias,
all_with_deprecated_constants,
check_if_deprecated_constant,
dir_with_deprecated_constants,
)
# StrEnum deprecated as of 2024.5 use enum.StrEnum instead.
_DEPRECATED_StrEnum = DeprecatedAlias(_StrEnum, "enum.StrEnum", "2025.5")
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View File

@@ -1,79 +1,30 @@
"""Functools backports from standard lib."""
"""Functools backports from standard lib.
# This file contains parts of Python's module wrapper
# for the _functools C module
# to allow utilities written in Python to be added
# to the functools module.
# Written by Nick Coghlan <ncoghlan at gmail.com>,
# Raymond Hettinger <python at rcn.com>,
# and Łukasz Langa <lukasz at langa.pl>.
# Copyright © 2001-2023 Python Software Foundation; All Rights Reserved
This file contained the backport of the cached_property implementation of Python 3.12.
Since we have dropped support for Python 3.11, we can remove this backport.
This file is kept for now to avoid breaking custom components that might
import it.
"""
from __future__ import annotations
from collections.abc import Callable
from types import GenericAlias
from typing import Any, Generic, Self, TypeVar, overload
from functools import cached_property as _cached_property, partial
_T = TypeVar("_T")
from homeassistant.helpers.deprecation import (
DeprecatedAlias,
all_with_deprecated_constants,
check_if_deprecated_constant,
dir_with_deprecated_constants,
)
# cached_property deprecated as of 2024.5 use functools.cached_property instead.
_DEPRECATED_cached_property = DeprecatedAlias(
_cached_property, "functools.cached_property", "2025.5"
)
class cached_property(Generic[_T]):
"""Backport of Python 3.12's cached_property.
Includes https://github.com/python/cpython/pull/101890/files
"""
def __init__(self, func: Callable[[Any], _T]) -> None:
"""Initialize."""
self.func: Callable[[Any], _T] = func
self.attrname: str | None = None
self.__doc__ = func.__doc__
def __set_name__(self, owner: type[Any], name: str) -> None:
"""Set name."""
if self.attrname is None:
self.attrname = name
elif name != self.attrname:
raise TypeError(
"Cannot assign the same cached_property to two different names "
f"({self.attrname!r} and {name!r})."
)
@overload
def __get__(self, instance: None, owner: type[Any] | None = None) -> Self: ...
@overload
def __get__(self, instance: Any, owner: type[Any] | None = None) -> _T: ...
def __get__(
self, instance: Any | None, owner: type[Any] | None = None
) -> _T | Self:
"""Get."""
if instance is None:
return self
if self.attrname is None:
raise TypeError(
"Cannot use cached_property instance without calling __set_name__ on it."
)
try:
cache = instance.__dict__
# not all objects have __dict__ (e.g. class defines slots)
except AttributeError:
msg = (
f"No '__dict__' attribute on {type(instance).__name__!r} "
f"instance to cache {self.attrname!r} property."
)
raise TypeError(msg) from None
val = self.func(instance)
try:
cache[self.attrname] = val
except TypeError:
msg = (
f"The '__dict__' attribute on {type(instance).__name__!r} instance "
f"does not support item assignment for caching {self.attrname!r} property."
)
raise TypeError(msg) from None
return val
__class_getitem__ = classmethod(GenericAlias) # type: ignore[var-annotated]
__getattr__ = partial(check_if_deprecated_constant, module_globals=globals())
__dir__ = partial(
dir_with_deprecated_constants, module_globals_keys=[*globals().keys()]
)
__all__ = all_with_deprecated_constants(globals())

View File

@@ -1,21 +1,80 @@
"""Block blocking calls being done in asyncio."""
import builtins
from contextlib import suppress
from http.client import HTTPConnection
import importlib
import sys
import threading
import time
from typing import Any
from .util.async_ import protect_loop
from .helpers.frame import get_current_frame
from .util.loop import protect_loop
_IN_TESTS = "unittest" in sys.modules
ALLOWED_FILE_PREFIXES = ("/proc",)
def _check_import_call_allowed(mapped_args: dict[str, Any]) -> bool:
# If the module is already imported, we can ignore it.
return bool((args := mapped_args.get("args")) and args[0] in sys.modules)
def _check_file_allowed(mapped_args: dict[str, Any]) -> bool:
# If the file is in /proc we can ignore it.
args = mapped_args["args"]
path = args[0] if type(args[0]) is str else str(args[0]) # noqa: E721
return path.startswith(ALLOWED_FILE_PREFIXES)
def _check_sleep_call_allowed(mapped_args: dict[str, Any]) -> bool:
#
# Avoid extracting the stack unless we need to since it
# will have to access the linecache which can do blocking
# I/O and we are trying to avoid blocking calls.
#
# frame[0] is us
# frame[1] is raise_for_blocking_call
# frame[2] is protected_loop_func
# frame[3] is the offender
with suppress(ValueError):
return get_current_frame(4).f_code.co_filename.endswith("pydevd.py")
return False
def enable() -> None:
"""Enable the detection of blocking calls in the event loop."""
loop_thread_id = threading.get_ident()
# Prevent urllib3 and requests doing I/O in event loop
HTTPConnection.putrequest = protect_loop( # type: ignore[method-assign]
HTTPConnection.putrequest
HTTPConnection.putrequest, loop_thread_id=loop_thread_id
)
# Prevent sleeping in event loop. Non-strict since 2022.02
time.sleep = protect_loop(time.sleep, strict=False)
time.sleep = protect_loop(
time.sleep,
strict=False,
check_allowed=_check_sleep_call_allowed,
loop_thread_id=loop_thread_id,
)
# Currently disabled. pytz doing I/O when getting timezone.
# Prevent files being opened inside the event loop
# builtins.open = protect_loop(builtins.open)
if not _IN_TESTS:
# Prevent files being opened inside the event loop
builtins.open = protect_loop( # type: ignore[assignment]
builtins.open,
strict_core=False,
strict=False,
check_allowed=_check_file_allowed,
loop_thread_id=loop_thread_id,
)
# unittest uses `importlib.import_module` to do mocking
# so we cannot protect it if we are running tests
importlib.import_module = protect_loop(
importlib.import_module,
strict_core=False,
strict=False,
check_allowed=_check_import_call_allowed,
loop_thread_id=loop_thread_id,
)

View File

@@ -9,6 +9,7 @@ from functools import partial
from itertools import chain
import logging
import logging.handlers
import mimetypes
from operator import contains, itemgetter
import os
import platform
@@ -23,7 +24,14 @@ import cryptography.hazmat.backends.openssl.backend # noqa: F401
import voluptuous as vol
import yarl
from . import config as conf_util, config_entries, core, loader, requirements
from . import (
block_async_io,
config as conf_util,
config_entries,
core,
loader,
requirements,
)
# Pre-import frontend deps which have no requirements here to avoid
# loading them at run time and blocking the event loop. We do this ahead
@@ -55,6 +63,7 @@ from .components import (
)
from .components.sensor import recorder as sensor_recorder # noqa: F401
from .const import (
BASE_PLATFORMS,
FORMAT_DATETIME,
KEY_DATA_LOGGING as DATA_LOGGING,
REQUIRED_NEXT_PYTHON_HA_RELEASE,
@@ -77,19 +86,23 @@ from .helpers import (
template,
translation,
)
from .helpers.dispatcher import async_dispatcher_send
from .helpers.dispatcher import async_dispatcher_send_internal
from .helpers.storage import get_internal_store_manager
from .helpers.system_info import async_get_system_info
from .helpers.typing import ConfigType
from .setup import (
BASE_PLATFORMS,
DATA_SETUP_STARTED,
# _setup_started is marked as protected to make it clear
# that it is not part of the public API and should not be used
# by integrations. It is only used for internal tracking of
# which integrations are being set up.
_setup_started,
async_get_setup_timings,
async_notify_setup_error,
async_set_domains_to_be_loaded,
async_setup_component,
)
from .util.async_ import create_eager_task
from .util.hass_dict import HassKey
from .util.logging import async_activate_log_queue_handler
from .util.package import async_get_user_site, is_virtual_env
@@ -109,7 +122,7 @@ SETUP_ORDER_SORT_KEY = partial(contains, BASE_PLATFORMS)
ERROR_LOG_FILENAME = "home-assistant.log"
# hass.data key for logging information.
DATA_REGISTRIES_LOADED = "bootstrap_registries_loaded"
DATA_REGISTRIES_LOADED: HassKey[None] = HassKey("bootstrap_registries_loaded")
LOG_SLOW_STARTUP_INTERVAL = 60
SLOW_STARTUP_CHECK_INTERVAL = 1
@@ -216,6 +229,7 @@ SETUP_ORDER = (
# If they do not exist they will not be loaded
#
PRELOAD_STORAGE = [
"core.logger",
"core.network",
"http.auth",
"image",
@@ -245,6 +259,9 @@ async def async_setup_hass(
runtime_config.log_no_color,
)
if runtime_config.debug or hass.loop.get_debug():
hass.config.debug = True
hass.config.safe_mode = runtime_config.safe_mode
hass.config.skip_pip = runtime_config.skip_pip
hass.config.skip_pip_packages = runtime_config.skip_pip_packages
@@ -260,6 +277,8 @@ async def async_setup_hass(
_LOGGER.info("Config directory: %s", runtime_config.config_dir)
loader.async_setup(hass)
block_async_io.enable()
config_dict = None
basic_setup_success = False
@@ -306,6 +325,7 @@ async def async_setup_hass(
hass = core.HomeAssistant(old_config.config_dir)
if old_logging:
hass.data[DATA_LOGGING] = old_logging
hass.config.debug = old_config.debug
hass.config.skip_pip = old_config.skip_pip
hass.config.skip_pip_packages = old_config.skip_pip_packages
hass.config.internal_url = old_config.internal_url
@@ -352,23 +372,24 @@ def open_hass_ui(hass: core.HomeAssistant) -> None:
)
def _init_blocking_io_modules_in_executor() -> None:
"""Initialize modules that do blocking I/O in executor."""
# Cache the result of platform.uname().processor in the executor.
# Multiple modules call this function at startup which
# executes a blocking subprocess call. This is a problem for the
# asyncio event loop. By priming the cache of uname we can
# avoid the blocking call in the event loop.
_ = platform.uname().processor
# Initialize the mimetypes module to avoid blocking calls
# to the filesystem to load the mime.types file.
mimetypes.init()
async def async_load_base_functionality(hass: core.HomeAssistant) -> None:
"""Load the registries and cache the result of platform.uname().processor."""
"""Load the registries and modules that will do blocking I/O."""
if DATA_REGISTRIES_LOADED in hass.data:
return
hass.data[DATA_REGISTRIES_LOADED] = None
def _cache_uname_processor() -> None:
"""Cache the result of platform.uname().processor in the executor.
Multiple modules call this function at startup which
executes a blocking subprocess call. This is a problem for the
asyncio event loop. By primeing the cache of uname we can
avoid the blocking call in the event loop.
"""
_ = platform.uname().processor
# Load the registries and cache the result of platform.uname().processor
translation.async_setup(hass)
entity.async_setup(hass)
template.async_setup(hass)
@@ -381,7 +402,7 @@ async def async_load_base_functionality(hass: core.HomeAssistant) -> None:
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),
hass.async_add_executor_job(_init_blocking_io_modules_in_executor),
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()),
@@ -400,6 +421,9 @@ async def async_from_config_dict(
start = monotonic()
hass.config_entries = config_entries.ConfigEntries(hass, config)
# Prime custom component cache early so we know if registry entries are tied
# to a custom integration
await loader.async_get_custom_components(hass)
await async_load_base_functionality(hass)
# Set up core.
@@ -408,7 +432,11 @@ async def async_from_config_dict(
if not all(
await asyncio.gather(
*(
create_eager_task(async_setup_component(hass, domain, config))
create_eager_task(
async_setup_component(hass, domain, config),
name=f"bootstrap setup {domain}",
loop=hass.loop,
)
for domain in CORE_INTEGRATIONS
)
)
@@ -564,7 +592,7 @@ def async_enable_logging(
err_log_path, when="midnight", backupCount=log_rotate_days
)
else:
err_handler = logging.handlers.RotatingFileHandler(
err_handler = _RotatingFileHandlerWithoutShouldRollOver(
err_log_path, backupCount=1
)
@@ -588,6 +616,19 @@ def async_enable_logging(
async_activate_log_queue_handler(hass)
class _RotatingFileHandlerWithoutShouldRollOver(logging.handlers.RotatingFileHandler):
"""RotatingFileHandler that does not check if it should roll over on every log."""
def shouldRollover(self, record: logging.LogRecord) -> bool:
"""Never roll over.
The shouldRollover check is expensive because it has to stat
the log file for every log record. Since we do not set maxBytes
the result of this check is always False.
"""
return False
async def async_mount_local_lib_path(config_dir: str) -> str:
"""Add local library to Python Path.
@@ -649,7 +690,7 @@ class _WatchPendingSetups:
if remaining_with_setup_started:
_LOGGER.debug("Integration remaining: %s", remaining_with_setup_started)
elif waiting_tasks := self._hass._active_tasks: # pylint: disable=protected-access
elif waiting_tasks := self._hass._active_tasks: # noqa: SLF001
_LOGGER.debug("Waiting on tasks: %s", waiting_tasks)
self._async_dispatch(remaining_with_setup_started)
if (
@@ -669,7 +710,7 @@ class _WatchPendingSetups:
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(
async_dispatcher_send_internal(
self._hass, SIGNAL_BOOTSTRAP_INTEGRATIONS, remaining_with_setup_started
)
self._previous_was_empty = not remaining_with_setup_started
@@ -704,7 +745,7 @@ async def async_setup_multi_components(
# to wait to be imported, and the sooner we can get the base platforms
# loaded the sooner we can start loading the rest of the integrations.
futures = {
domain: hass.async_create_task(
domain: hass.async_create_task_internal(
async_setup_component(hass, domain, config),
f"setup component {domain}",
eager_start=True,
@@ -886,9 +927,7 @@ async def _async_set_up_integrations(
hass: core.HomeAssistant, config: dict[str, Any]
) -> None:
"""Set up all the integrations."""
setup_started: dict[tuple[str, str | None], float] = {}
hass.data[DATA_SETUP_STARTED] = setup_started
watcher = _WatchPendingSetups(hass, setup_started)
watcher = _WatchPendingSetups(hass, _setup_started(hass))
watcher.async_start()
domains_to_setup, integration_cache = await _async_resolve_domains_to_setup(
@@ -955,7 +994,7 @@ async def _async_set_up_integrations(
except TimeoutError:
_LOGGER.warning(
"Setup timed out for stage 1 waiting on %s - moving forward",
hass._active_tasks, # pylint: disable=protected-access
hass._active_tasks, # noqa: SLF001
)
# Add after dependencies when setting up stage 2 domains
@@ -971,7 +1010,7 @@ async def _async_set_up_integrations(
except TimeoutError:
_LOGGER.warning(
"Setup timed out for stage 2 waiting on %s - moving forward",
hass._active_tasks, # pylint: disable=protected-access
hass._active_tasks, # noqa: SLF001
)
# Wrap up startup
@@ -982,7 +1021,7 @@ async def _async_set_up_integrations(
except TimeoutError:
_LOGGER.warning(
"Setup timed out for bootstrap waiting on %s - moving forward",
hass._active_tasks, # pylint: disable=protected-access
hass._active_tasks, # noqa: SLF001
)
watcher.async_stop()

View File

@@ -1,5 +0,0 @@
{
"domain": "epson",
"name": "Epson",
"integrations": ["epson", "epsonworkforce"]
}

View File

@@ -1,5 +1,5 @@
{
"domain": "eq3",
"name": "eQ-3",
"integrations": ["maxcube"]
"integrations": ["maxcube", "eq3btsmart"]
}

View File

@@ -5,9 +5,7 @@ from __future__ import annotations
from dataclasses import dataclass, field
from functools import partial
from jaraco.abode.automation import Automation as AbodeAuto
from jaraco.abode.client import Client as Abode
from jaraco.abode.devices.base import Device as AbodeDev
from jaraco.abode.exceptions import (
AuthenticationException as AbodeAuthenticationException,
Exception as AbodeException,
@@ -29,11 +27,11 @@ from homeassistant.const import (
)
from homeassistant.core import CALLBACK_TYPE, Event, HomeAssistant, ServiceCall
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv, entity
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.dispatcher import dispatcher_send
from homeassistant.helpers.typing import ConfigType
from .const import ATTRIBUTION, CONF_POLLING, DOMAIN, LOGGER
from .const import CONF_POLLING, DOMAIN, LOGGER
SERVICE_SETTINGS = "change_setting"
SERVICE_CAPTURE_IMAGE = "capture_image"
@@ -83,6 +81,12 @@ class AbodeSystem:
logout_listener: CALLBACK_TYPE | None = None
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Abode component."""
setup_hass_services(hass)
return True
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Abode integration from a config entry."""
username = entry.data[CONF_USERNAME]
@@ -111,7 +115,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
await setup_hass_events(hass)
await hass.async_add_executor_job(setup_hass_services, hass)
await hass.async_add_executor_job(setup_abode_events, hass)
return True
@@ -119,10 +122,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
hass.services.async_remove(DOMAIN, SERVICE_SETTINGS)
hass.services.async_remove(DOMAIN, SERVICE_CAPTURE_IMAGE)
hass.services.async_remove(DOMAIN, SERVICE_TRIGGER_AUTOMATION)
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
await hass.async_add_executor_job(hass.data[DOMAIN].abode.events.stop)
@@ -175,15 +174,15 @@ def setup_hass_services(hass: HomeAssistant) -> None:
signal = f"abode_trigger_automation_{entity_id}"
dispatcher_send(hass, signal)
hass.services.register(
hass.services.async_register(
DOMAIN, SERVICE_SETTINGS, change_setting, schema=CHANGE_SETTING_SCHEMA
)
hass.services.register(
hass.services.async_register(
DOMAIN, SERVICE_CAPTURE_IMAGE, capture_image, schema=CAPTURE_IMAGE_SCHEMA
)
hass.services.register(
hass.services.async_register(
DOMAIN, SERVICE_TRIGGER_AUTOMATION, trigger_automation, schema=AUTOMATION_SCHEMA
)
@@ -247,108 +246,3 @@ def setup_abode_events(hass: HomeAssistant) -> None:
hass.data[DOMAIN].abode.events.add_event_callback(
event, partial(event_callback, event)
)
class AbodeEntity(entity.Entity):
"""Representation of an Abode entity."""
_attr_attribution = ATTRIBUTION
_attr_has_entity_name = True
def __init__(self, data: AbodeSystem) -> None:
"""Initialize Abode entity."""
self._data = data
self._attr_should_poll = data.polling
async def async_added_to_hass(self) -> None:
"""Subscribe to Abode connection status updates."""
await self.hass.async_add_executor_job(
self._data.abode.events.add_connection_status_callback,
self.unique_id,
self._update_connection_status,
)
self.hass.data[DOMAIN].entity_ids.add(self.entity_id)
async def async_will_remove_from_hass(self) -> None:
"""Unsubscribe from Abode connection status updates."""
await self.hass.async_add_executor_job(
self._data.abode.events.remove_connection_status_callback, self.unique_id
)
def _update_connection_status(self) -> None:
"""Update the entity available property."""
self._attr_available = self._data.abode.events.connected
self.schedule_update_ha_state()
class AbodeDevice(AbodeEntity):
"""Representation of an Abode device."""
def __init__(self, data: AbodeSystem, device: AbodeDev) -> None:
"""Initialize Abode device."""
super().__init__(data)
self._device = device
self._attr_unique_id = device.uuid
async def async_added_to_hass(self) -> None:
"""Subscribe to device events."""
await super().async_added_to_hass()
await self.hass.async_add_executor_job(
self._data.abode.events.add_device_callback,
self._device.id,
self._update_callback,
)
async def async_will_remove_from_hass(self) -> None:
"""Unsubscribe from device events."""
await super().async_will_remove_from_hass()
await self.hass.async_add_executor_job(
self._data.abode.events.remove_all_device_callbacks, self._device.id
)
def update(self) -> None:
"""Update device state."""
self._device.refresh()
@property
def extra_state_attributes(self) -> dict[str, str]:
"""Return the state attributes."""
return {
"device_id": self._device.id,
"battery_low": self._device.battery_low,
"no_response": self._device.no_response,
"device_type": self._device.type,
}
@property
def device_info(self) -> DeviceInfo:
"""Return device registry information for this entity."""
return DeviceInfo(
identifiers={(DOMAIN, self._device.id)},
manufacturer="Abode",
model=self._device.type,
name=self._device.name,
)
def _update_callback(self, device: AbodeDev) -> None:
"""Update the device state."""
self.schedule_update_ha_state()
class AbodeAutomation(AbodeEntity):
"""Representation of an Abode automation."""
def __init__(self, data: AbodeSystem, automation: AbodeAuto) -> None:
"""Initialize for Abode automation."""
super().__init__(data)
self._automation = automation
self._attr_name = automation.name
self._attr_unique_id = automation.automation_id
self._attr_extra_state_attributes = {
"type": "CUE automation",
}
def update(self) -> None:
"""Update automation state."""
self._automation.refresh()

View File

@@ -17,8 +17,9 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeDevice
async def async_setup_entry(

View File

@@ -22,8 +22,9 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util.enum import try_parse_enum
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeDevice
async def async_setup_entry(

View File

@@ -19,8 +19,9 @@ from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import Throttle
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN, LOGGER
from .entity import AbodeDevice
MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=90)

View File

@@ -10,8 +10,9 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeDevice
async def async_setup_entry(

View File

@@ -0,0 +1,115 @@
"""Support for Abode Security System entities."""
from jaraco.abode.automation import Automation as AbodeAuto
from jaraco.abode.devices.base import Device as AbodeDev
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import Entity
from . import AbodeSystem
from .const import ATTRIBUTION, DOMAIN
class AbodeEntity(Entity):
"""Representation of an Abode entity."""
_attr_attribution = ATTRIBUTION
_attr_has_entity_name = True
def __init__(self, data: AbodeSystem) -> None:
"""Initialize Abode entity."""
self._data = data
self._attr_should_poll = data.polling
async def async_added_to_hass(self) -> None:
"""Subscribe to Abode connection status updates."""
await self.hass.async_add_executor_job(
self._data.abode.events.add_connection_status_callback,
self.unique_id,
self._update_connection_status,
)
self.hass.data[DOMAIN].entity_ids.add(self.entity_id)
async def async_will_remove_from_hass(self) -> None:
"""Unsubscribe from Abode connection status updates."""
await self.hass.async_add_executor_job(
self._data.abode.events.remove_connection_status_callback, self.unique_id
)
def _update_connection_status(self) -> None:
"""Update the entity available property."""
self._attr_available = self._data.abode.events.connected
self.schedule_update_ha_state()
class AbodeDevice(AbodeEntity):
"""Representation of an Abode device."""
def __init__(self, data: AbodeSystem, device: AbodeDev) -> None:
"""Initialize Abode device."""
super().__init__(data)
self._device = device
self._attr_unique_id = device.uuid
async def async_added_to_hass(self) -> None:
"""Subscribe to device events."""
await super().async_added_to_hass()
await self.hass.async_add_executor_job(
self._data.abode.events.add_device_callback,
self._device.id,
self._update_callback,
)
async def async_will_remove_from_hass(self) -> None:
"""Unsubscribe from device events."""
await super().async_will_remove_from_hass()
await self.hass.async_add_executor_job(
self._data.abode.events.remove_all_device_callbacks, self._device.id
)
def update(self) -> None:
"""Update device state."""
self._device.refresh()
@property
def extra_state_attributes(self) -> dict[str, str]:
"""Return the state attributes."""
return {
"device_id": self._device.id,
"battery_low": self._device.battery_low,
"no_response": self._device.no_response,
"device_type": self._device.type,
}
@property
def device_info(self) -> DeviceInfo:
"""Return device registry information for this entity."""
return DeviceInfo(
identifiers={(DOMAIN, self._device.id)},
manufacturer="Abode",
model=self._device.type,
name=self._device.name,
)
def _update_callback(self, device: AbodeDev) -> None:
"""Update the device state."""
self.schedule_update_ha_state()
class AbodeAutomation(AbodeEntity):
"""Representation of an Abode automation."""
def __init__(self, data: AbodeSystem, automation: AbodeAuto) -> None:
"""Initialize for Abode automation."""
super().__init__(data)
self._automation = automation
self._attr_name = automation.name
self._attr_unique_id = automation.automation_id
self._attr_extra_state_attributes = {
"type": "CUE automation",
}
def update(self) -> None:
"""Update automation state."""
self._automation.refresh()

View File

@@ -23,8 +23,9 @@ from homeassistant.util.color import (
color_temperature_mired_to_kelvin,
)
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeDevice
async def async_setup_entry(

View File

@@ -10,8 +10,9 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeDevice
async def async_setup_entry(

View File

@@ -27,8 +27,9 @@ from homeassistant.const import LIGHT_LUX, PERCENTAGE, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeDevice
ABODE_TEMPERATURE_UNIT_HA_UNIT = {
UNIT_FAHRENHEIT: UnitOfTemperature.FAHRENHEIT,

View File

@@ -13,8 +13,9 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AbodeAutomation, AbodeDevice, AbodeSystem
from . import AbodeSystem
from .const import DOMAIN
from .entity import AbodeAutomation, AbodeDevice
DEVICE_TYPES = [TYPE_SWITCH, TYPE_VALVE]

View File

@@ -2,14 +2,10 @@
from __future__ import annotations
from asyncio import timeout
from datetime import timedelta
from dataclasses import dataclass
import logging
from typing import Any
from accuweather import AccuWeather, ApiError, InvalidApiKeyError, RequestsExceededError
from aiohttp import ClientSession
from aiohttp.client_exceptions import ClientConnectorError
from accuweather import AccuWeather
from homeassistant.components.sensor import DOMAIN as SENSOR_PLATFORM
from homeassistant.config_entries import ConfigEntry
@@ -17,43 +13,71 @@ from homeassistant.const import CONF_API_KEY, CONF_NAME, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import ATTR_FORECAST, CONF_FORECAST, DOMAIN, MANUFACTURER
from .const import DOMAIN, UPDATE_INTERVAL_DAILY_FORECAST, UPDATE_INTERVAL_OBSERVATION
from .coordinator import (
AccuWeatherDailyForecastDataUpdateCoordinator,
AccuWeatherObservationDataUpdateCoordinator,
)
_LOGGER = logging.getLogger(__name__)
PLATFORMS = [Platform.SENSOR, Platform.WEATHER]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
@dataclass
class AccuWeatherData:
"""Data for AccuWeather integration."""
coordinator_observation: AccuWeatherObservationDataUpdateCoordinator
coordinator_daily_forecast: AccuWeatherDailyForecastDataUpdateCoordinator
type AccuWeatherConfigEntry = ConfigEntry[AccuWeatherData]
async def async_setup_entry(hass: HomeAssistant, entry: AccuWeatherConfigEntry) -> bool:
"""Set up AccuWeather as config entry."""
api_key: str = entry.data[CONF_API_KEY]
name: str = entry.data[CONF_NAME]
assert entry.unique_id is not None
location_key = entry.unique_id
forecast: bool = entry.options.get(CONF_FORECAST, False)
_LOGGER.debug("Using location_key: %s, get forecast: %s", location_key, forecast)
location_key = entry.unique_id
_LOGGER.debug("Using location_key: %s", location_key)
websession = async_get_clientsession(hass)
accuweather = AccuWeather(api_key, websession, location_key=location_key)
coordinator = AccuWeatherDataUpdateCoordinator(
hass, websession, api_key, location_key, forecast, name
coordinator_observation = AccuWeatherObservationDataUpdateCoordinator(
hass,
accuweather,
name,
"observation",
UPDATE_INTERVAL_OBSERVATION,
)
await coordinator.async_config_entry_first_refresh()
entry.async_on_unload(entry.add_update_listener(update_listener))
coordinator_daily_forecast = AccuWeatherDailyForecastDataUpdateCoordinator(
hass,
accuweather,
name,
"daily forecast",
UPDATE_INTERVAL_DAILY_FORECAST,
)
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = coordinator
await coordinator_observation.async_config_entry_first_refresh()
await coordinator_daily_forecast.async_config_entry_first_refresh()
entry.runtime_data = AccuWeatherData(
coordinator_observation=coordinator_observation,
coordinator_daily_forecast=coordinator_daily_forecast,
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
# Remove ozone sensors from registry if they exist
ent_reg = er.async_get(hass)
for day in range(5):
unique_id = f"{coordinator.location_key}-ozone-{day}"
unique_id = f"{location_key}-ozone-{day}"
if entity_id := ent_reg.async_get_entity_id(SENSOR_PLATFORM, DOMAIN, unique_id):
_LOGGER.debug("Removing ozone sensor entity %s", entity_id)
ent_reg.async_remove(entity_id)
@@ -61,78 +85,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, entry: AccuWeatherConfigEntry
) -> bool:
"""Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Update listener."""
await hass.config_entries.async_reload(entry.entry_id)
class AccuWeatherDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]): # pylint: disable=hass-enforce-coordinator-module
"""Class to manage fetching AccuWeather data API."""
def __init__(
self,
hass: HomeAssistant,
session: ClientSession,
api_key: str,
location_key: str,
forecast: bool,
name: str,
) -> None:
"""Initialize."""
self.location_key = location_key
self.forecast = forecast
self.accuweather = AccuWeather(api_key, session, location_key=location_key)
self.device_info = DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, location_key)},
manufacturer=MANUFACTURER,
name=name,
# You don't need to provide specific details for the URL,
# so passing in _ characters is fine if the location key
# is correct
configuration_url=(
"http://accuweather.com/en/"
f"_/_/{location_key}/"
f"weather-forecast/{location_key}/"
),
)
# Enabling the forecast download increases the number of requests per data
# update, we use 40 minutes for current condition only and 80 minutes for
# current condition and forecast as update interval to not exceed allowed number
# of requests. We have 50 requests allowed per day, so we use 36 and leave 14 as
# a reserve for restarting HA.
update_interval = timedelta(minutes=40)
if self.forecast:
update_interval *= 2
_LOGGER.debug("Data will be update every %s", update_interval)
super().__init__(hass, _LOGGER, name=DOMAIN, update_interval=update_interval)
async def _async_update_data(self) -> dict[str, Any]:
"""Update data via library."""
forecast: list[dict[str, Any]] = []
try:
async with timeout(10):
current = await self.accuweather.async_get_current_conditions()
if self.forecast:
forecast = await self.accuweather.async_get_daily_forecast()
except (
ApiError,
ClientConnectorError,
InvalidApiKeyError,
RequestsExceededError,
) as error:
raise UpdateFailed(error) from error
_LOGGER.debug("Requests remaining: %d", self.accuweather.requests_remaining)
return {**current, ATTR_FORECAST: forecast}
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@@ -10,26 +10,12 @@ from aiohttp import ClientError
from aiohttp.client_exceptions import ClientConnectorError
import voluptuous as vol
from homeassistant.config_entries import ConfigEntry, ConfigFlow, ConfigFlowResult
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.core import callback
from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.schema_config_entry_flow import (
SchemaFlowFormStep,
SchemaOptionsFlowHandler,
)
from .const import CONF_FORECAST, DOMAIN
OPTIONS_SCHEMA = vol.Schema(
{
vol.Optional(CONF_FORECAST, default=False): bool,
}
)
OPTIONS_FLOW = {
"init": SchemaFlowFormStep(OPTIONS_SCHEMA),
}
from .const import DOMAIN
class AccuWeatherFlowHandler(ConfigFlow, domain=DOMAIN):
@@ -87,9 +73,3 @@ class AccuWeatherFlowHandler(ConfigFlow, domain=DOMAIN):
),
errors=errors,
)
@staticmethod
@callback
def async_get_options_flow(config_entry: ConfigEntry) -> SchemaOptionsFlowHandler:
"""Options callback for AccuWeather."""
return SchemaOptionsFlowHandler(config_entry, OPTIONS_FLOW)

View File

@@ -2,6 +2,7 @@
from __future__ import annotations
from datetime import timedelta
from typing import Final
from homeassistant.components.weather import (
@@ -27,10 +28,8 @@ ATTR_CATEGORY: Final = "Category"
ATTR_DIRECTION: Final = "Direction"
ATTR_ENGLISH: Final = "English"
ATTR_LEVEL: Final = "level"
ATTR_FORECAST: Final = "forecast"
ATTR_SPEED: Final = "Speed"
ATTR_VALUE: Final = "Value"
CONF_FORECAST: Final = "forecast"
DOMAIN: Final = "accuweather"
MANUFACTURER: Final = "AccuWeather, Inc."
MAX_FORECAST_DAYS: Final = 4
@@ -56,3 +55,5 @@ CONDITION_MAP = {
for cond_ha, cond_codes in CONDITION_CLASSES.items()
for cond_code in cond_codes
}
UPDATE_INTERVAL_OBSERVATION = timedelta(minutes=40)
UPDATE_INTERVAL_DAILY_FORECAST = timedelta(hours=6)

View File

@@ -0,0 +1,124 @@
"""The AccuWeather coordinator."""
from asyncio import timeout
from datetime import timedelta
import logging
from typing import TYPE_CHECKING, Any
from accuweather import AccuWeather, ApiError, InvalidApiKeyError, RequestsExceededError
from aiohttp.client_exceptions import ClientConnectorError
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.update_coordinator import (
DataUpdateCoordinator,
TimestampDataUpdateCoordinator,
UpdateFailed,
)
from .const import DOMAIN, MANUFACTURER
EXCEPTIONS = (ApiError, ClientConnectorError, InvalidApiKeyError, RequestsExceededError)
_LOGGER = logging.getLogger(__name__)
class AccuWeatherObservationDataUpdateCoordinator(
DataUpdateCoordinator[dict[str, Any]]
):
"""Class to manage fetching AccuWeather data API."""
def __init__(
self,
hass: HomeAssistant,
accuweather: AccuWeather,
name: str,
coordinator_type: str,
update_interval: timedelta,
) -> None:
"""Initialize."""
self.accuweather = accuweather
self.location_key = accuweather.location_key
if TYPE_CHECKING:
assert self.location_key is not None
self.device_info = _get_device_info(self.location_key, name)
super().__init__(
hass,
_LOGGER,
name=f"{name} ({coordinator_type})",
update_interval=update_interval,
)
async def _async_update_data(self) -> dict[str, Any]:
"""Update data via library."""
try:
async with timeout(10):
result = await self.accuweather.async_get_current_conditions()
except EXCEPTIONS as error:
raise UpdateFailed(error) from error
_LOGGER.debug("Requests remaining: %d", self.accuweather.requests_remaining)
return result
class AccuWeatherDailyForecastDataUpdateCoordinator(
TimestampDataUpdateCoordinator[list[dict[str, Any]]]
):
"""Class to manage fetching AccuWeather data API."""
def __init__(
self,
hass: HomeAssistant,
accuweather: AccuWeather,
name: str,
coordinator_type: str,
update_interval: timedelta,
) -> None:
"""Initialize."""
self.accuweather = accuweather
self.location_key = accuweather.location_key
if TYPE_CHECKING:
assert self.location_key is not None
self.device_info = _get_device_info(self.location_key, name)
super().__init__(
hass,
_LOGGER,
name=f"{name} ({coordinator_type})",
update_interval=update_interval,
)
async def _async_update_data(self) -> list[dict[str, Any]]:
"""Update data via library."""
try:
async with timeout(10):
result = await self.accuweather.async_get_daily_forecast()
except EXCEPTIONS as error:
raise UpdateFailed(error) from error
_LOGGER.debug("Requests remaining: %d", self.accuweather.requests_remaining)
return result
def _get_device_info(location_key: str, name: str) -> DeviceInfo:
"""Get device info."""
return DeviceInfo(
entry_type=DeviceEntryType.SERVICE,
identifiers={(DOMAIN, location_key)},
manufacturer=MANUFACTURER,
name=name,
# You don't need to provide specific details for the URL,
# so passing in _ characters is fine if the location key
# is correct
configuration_url=(
"http://accuweather.com/en/"
f"_/_/{location_key}/weather-forecast/{location_key}/"
),
)

View File

@@ -5,27 +5,21 @@ from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE
from homeassistant.core import HomeAssistant
from . import AccuWeatherDataUpdateCoordinator
from .const import DOMAIN
from . import AccuWeatherConfigEntry, AccuWeatherData
TO_REDACT = {CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
hass: HomeAssistant, config_entry: AccuWeatherConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][
config_entry.entry_id
]
accuweather_data: AccuWeatherData = config_entry.runtime_data
diagnostics_data = {
return {
"config_entry_data": async_redact_data(dict(config_entry.data), TO_REDACT),
"coordinator_data": coordinator.data,
"observation_data": accuweather_data.coordinator_observation.data,
}
return diagnostics_data

View File

@@ -8,6 +8,6 @@
"iot_class": "cloud_polling",
"loggers": ["accuweather"],
"quality_scale": "platinum",
"requirements": ["accuweather==2.1.1"],
"requirements": ["accuweather==3.0.0"],
"single_config_entry": true
}

View File

@@ -12,7 +12,6 @@ from homeassistant.components.sensor import (
SensorEntityDescription,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONCENTRATION_PARTS_PER_CUBIC_METER,
PERCENTAGE,
@@ -28,20 +27,22 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from . import AccuWeatherDataUpdateCoordinator
from . import AccuWeatherConfigEntry
from .const import (
API_METRIC,
ATTR_CATEGORY,
ATTR_DIRECTION,
ATTR_ENGLISH,
ATTR_FORECAST,
ATTR_LEVEL,
ATTR_SPEED,
ATTR_VALUE,
ATTRIBUTION,
DOMAIN,
MAX_FORECAST_DAYS,
)
from .coordinator import (
AccuWeatherDailyForecastDataUpdateCoordinator,
AccuWeatherObservationDataUpdateCoordinator,
)
PARALLEL_UPDATES = 1
@@ -52,12 +53,18 @@ class AccuWeatherSensorDescription(SensorEntityDescription):
value_fn: Callable[[dict[str, Any]], str | int | float | None]
attr_fn: Callable[[dict[str, Any]], dict[str, Any]] = lambda _: {}
day: int | None = None
FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
@dataclass(frozen=True, kw_only=True)
class AccuWeatherForecastSensorDescription(AccuWeatherSensorDescription):
"""Class describing AccuWeather sensor entities."""
day: int
FORECAST_SENSOR_TYPES: tuple[AccuWeatherForecastSensorDescription, ...] = (
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="AirQuality",
icon="mdi:air-filter",
value_fn=lambda data: cast(str, data[ATTR_CATEGORY]),
@@ -69,7 +76,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="CloudCoverDay",
icon="mdi:weather-cloudy",
entity_registry_enabled_default=False,
@@ -81,7 +88,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="CloudCoverNight",
icon="mdi:weather-cloudy",
entity_registry_enabled_default=False,
@@ -93,7 +100,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="Grass",
icon="mdi:grass",
entity_registry_enabled_default=False,
@@ -106,7 +113,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="HoursOfSun",
icon="mdi:weather-partly-cloudy",
native_unit_of_measurement=UnitOfTime.HOURS,
@@ -117,7 +124,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="LongPhraseDay",
value_fn=lambda data: cast(str, data),
translation_key=f"condition_day_{day}d",
@@ -126,7 +133,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="LongPhraseNight",
value_fn=lambda data: cast(str, data),
translation_key=f"condition_night_{day}d",
@@ -135,7 +142,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="Mold",
icon="mdi:blur",
entity_registry_enabled_default=False,
@@ -148,7 +155,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="Ragweed",
icon="mdi:sprout",
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
@@ -161,7 +168,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="RealFeelTemperatureMax",
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
@@ -172,7 +179,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="RealFeelTemperatureMin",
device_class=SensorDeviceClass.TEMPERATURE,
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
@@ -183,7 +190,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="RealFeelTemperatureShadeMax",
device_class=SensorDeviceClass.TEMPERATURE,
entity_registry_enabled_default=False,
@@ -195,7 +202,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="RealFeelTemperatureShadeMin",
device_class=SensorDeviceClass.TEMPERATURE,
entity_registry_enabled_default=False,
@@ -207,7 +214,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="SolarIrradianceDay",
icon="mdi:weather-sunny",
entity_registry_enabled_default=False,
@@ -219,7 +226,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="SolarIrradianceNight",
icon="mdi:weather-sunny",
entity_registry_enabled_default=False,
@@ -231,7 +238,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="ThunderstormProbabilityDay",
icon="mdi:weather-lightning",
native_unit_of_measurement=PERCENTAGE,
@@ -242,7 +249,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="ThunderstormProbabilityNight",
icon="mdi:weather-lightning",
native_unit_of_measurement=PERCENTAGE,
@@ -253,7 +260,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="Tree",
icon="mdi:tree-outline",
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
@@ -266,7 +273,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="UVIndex",
icon="mdi:weather-sunny",
native_unit_of_measurement=UV_INDEX,
@@ -278,7 +285,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="WindGustDay",
device_class=SensorDeviceClass.WIND_SPEED,
entity_registry_enabled_default=False,
@@ -291,7 +298,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="WindGustNight",
device_class=SensorDeviceClass.WIND_SPEED,
entity_registry_enabled_default=False,
@@ -304,7 +311,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="WindDay",
device_class=SensorDeviceClass.WIND_SPEED,
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
@@ -316,7 +323,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
for day in range(MAX_FORECAST_DAYS + 1)
),
*(
AccuWeatherSensorDescription(
AccuWeatherForecastSensorDescription(
key="WindNight",
device_class=SensorDeviceClass.WIND_SPEED,
native_unit_of_measurement=UnitOfSpeed.KILOMETERS_PER_HOUR,
@@ -449,29 +456,36 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: AccuWeatherConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Add AccuWeather entities from a config_entry."""
observation_coordinator: AccuWeatherObservationDataUpdateCoordinator = (
entry.runtime_data.coordinator_observation
)
forecast_daily_coordinator: AccuWeatherDailyForecastDataUpdateCoordinator = (
entry.runtime_data.coordinator_daily_forecast
)
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
sensors = [
AccuWeatherSensor(coordinator, description) for description in SENSOR_TYPES
sensors: list[AccuWeatherSensor | AccuWeatherForecastSensor] = [
AccuWeatherSensor(observation_coordinator, description)
for description in SENSOR_TYPES
]
if coordinator.forecast:
for description in FORECAST_SENSOR_TYPES:
# Some air quality/allergy sensors are only available for certain
# locations.
if description.key not in coordinator.data[ATTR_FORECAST][description.day]:
continue
sensors.append(AccuWeatherSensor(coordinator, description))
sensors.extend(
[
AccuWeatherForecastSensor(forecast_daily_coordinator, description)
for description in FORECAST_SENSOR_TYPES
if description.key in forecast_daily_coordinator.data[description.day]
]
)
async_add_entities(sensors)
class AccuWeatherSensor(
CoordinatorEntity[AccuWeatherDataUpdateCoordinator], SensorEntity
CoordinatorEntity[AccuWeatherObservationDataUpdateCoordinator], SensorEntity
):
"""Define an AccuWeather entity."""
@@ -481,22 +495,15 @@ class AccuWeatherSensor(
def __init__(
self,
coordinator: AccuWeatherDataUpdateCoordinator,
coordinator: AccuWeatherObservationDataUpdateCoordinator,
description: AccuWeatherSensorDescription,
) -> None:
"""Initialize."""
super().__init__(coordinator)
self.forecast_day = description.day
self.entity_description = description
self._sensor_data = _get_sensor_data(
coordinator.data, description.key, self.forecast_day
)
if self.forecast_day is not None:
self._attr_unique_id = f"{coordinator.location_key}-{description.key}-{self.forecast_day}".lower()
else:
self._attr_unique_id = (
f"{coordinator.location_key}-{description.key}".lower()
)
self._sensor_data = self._get_sensor_data(coordinator.data, description.key)
self._attr_unique_id = f"{coordinator.location_key}-{description.key}".lower()
self._attr_device_info = coordinator.device_info
@property
@@ -507,30 +514,78 @@ class AccuWeatherSensor(
@property
def extra_state_attributes(self) -> dict[str, Any]:
"""Return the state attributes."""
if self.forecast_day is not None:
return self.entity_description.attr_fn(self._sensor_data)
return self.entity_description.attr_fn(self.coordinator.data)
@callback
def _handle_coordinator_update(self) -> None:
"""Handle data update."""
self._sensor_data = _get_sensor_data(
self._sensor_data = self._get_sensor_data(
self.coordinator.data, self.entity_description.key
)
self.async_write_ha_state()
@staticmethod
def _get_sensor_data(
sensors: dict[str, Any],
kind: str,
) -> Any:
"""Get sensor data."""
if kind == "Precipitation":
return sensors["PrecipitationSummary"]["PastHour"]
return sensors[kind]
class AccuWeatherForecastSensor(
CoordinatorEntity[AccuWeatherDailyForecastDataUpdateCoordinator], SensorEntity
):
"""Define an AccuWeather entity."""
_attr_attribution = ATTRIBUTION
_attr_has_entity_name = True
entity_description: AccuWeatherForecastSensorDescription
def __init__(
self,
coordinator: AccuWeatherDailyForecastDataUpdateCoordinator,
description: AccuWeatherForecastSensorDescription,
) -> None:
"""Initialize."""
super().__init__(coordinator)
self.forecast_day = description.day
self.entity_description = description
self._sensor_data = self._get_sensor_data(
coordinator.data, description.key, self.forecast_day
)
self._attr_unique_id = (
f"{coordinator.location_key}-{description.key}-{self.forecast_day}".lower()
)
self._attr_device_info = coordinator.device_info
@property
def native_value(self) -> str | int | float | None:
"""Return the state."""
return self.entity_description.value_fn(self._sensor_data)
@property
def extra_state_attributes(self) -> dict[str, Any]:
"""Return the state attributes."""
return self.entity_description.attr_fn(self._sensor_data)
@callback
def _handle_coordinator_update(self) -> None:
"""Handle data update."""
self._sensor_data = self._get_sensor_data(
self.coordinator.data, self.entity_description.key, self.forecast_day
)
self.async_write_ha_state()
def _get_sensor_data(
sensors: dict[str, Any],
kind: str,
forecast_day: int | None = None,
) -> Any:
"""Get sensor data."""
if forecast_day is not None:
return sensors[ATTR_FORECAST][forecast_day][kind]
if kind == "Precipitation":
return sensors["PrecipitationSummary"]["PastHour"]
return sensors[kind]
@staticmethod
def _get_sensor_data(
sensors: list[dict[str, Any]],
kind: str,
forecast_day: int,
) -> Any:
"""Get sensor data."""
return sensors[forecast_day][kind]

View File

@@ -11,7 +11,7 @@
}
},
"create_entry": {
"default": "Some sensors are not enabled by default. You can enable them in the entity registry after the integration configuration.\nWeather forecast is not enabled by default. You can enable it in the integration options."
"default": "Some sensors are not enabled by default. You can enable them in the entity registry after the integration configuration."
},
"error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
@@ -790,16 +790,6 @@
}
}
},
"options": {
"step": {
"init": {
"description": "Due to the limitations of the free version of the AccuWeather API key, when you enable weather forecast, data updates will be performed every 80 minutes instead of every 40 minutes.",
"data": {
"forecast": "Weather forecast"
}
}
}
},
"system_health": {
"info": {
"can_reach_server": "Reach AccuWeather server",

View File

@@ -9,6 +9,7 @@ from accuweather.const import ENDPOINT
from homeassistant.components import system_health
from homeassistant.core import HomeAssistant, callback
from . import AccuWeatherConfigEntry
from .const import DOMAIN
@@ -22,9 +23,11 @@ def async_register(
async def system_health_info(hass: HomeAssistant) -> dict[str, Any]:
"""Get info for the info page."""
remaining_requests = list(hass.data[DOMAIN].values())[
0
].accuweather.requests_remaining
config_entry: AccuWeatherConfigEntry = hass.config_entries.async_entries(DOMAIN)[0]
remaining_requests = (
config_entry.runtime_data.coordinator_observation.accuweather.requests_remaining
)
return {
"can_reach_server": system_health.async_check_can_reach_url(hass, ENDPOINT),

View File

@@ -17,11 +17,10 @@ from homeassistant.components.weather import (
ATTR_FORECAST_TIME,
ATTR_FORECAST_UV_INDEX,
ATTR_FORECAST_WIND_BEARING,
CoordinatorWeatherEntity,
Forecast,
SingleCoordinatorWeatherEntity,
WeatherEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
UnitOfLength,
UnitOfPrecipitationDepth,
@@ -33,125 +32,153 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util.dt import utc_from_timestamp
from . import AccuWeatherDataUpdateCoordinator
from . import AccuWeatherConfigEntry, AccuWeatherData
from .const import (
API_METRIC,
ATTR_DIRECTION,
ATTR_FORECAST,
ATTR_SPEED,
ATTR_VALUE,
ATTRIBUTION,
CONDITION_MAP,
DOMAIN,
)
from .coordinator import (
AccuWeatherDailyForecastDataUpdateCoordinator,
AccuWeatherObservationDataUpdateCoordinator,
)
PARALLEL_UPDATES = 1
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
hass: HomeAssistant,
entry: AccuWeatherConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Add a AccuWeather weather entity from a config_entry."""
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
async_add_entities([AccuWeatherEntity(coordinator)])
async_add_entities([AccuWeatherEntity(entry.runtime_data)])
class AccuWeatherEntity(
SingleCoordinatorWeatherEntity[AccuWeatherDataUpdateCoordinator]
CoordinatorWeatherEntity[
AccuWeatherObservationDataUpdateCoordinator,
AccuWeatherDailyForecastDataUpdateCoordinator,
]
):
"""Define an AccuWeather entity."""
_attr_has_entity_name = True
_attr_name = None
def __init__(self, coordinator: AccuWeatherDataUpdateCoordinator) -> None:
def __init__(self, accuweather_data: AccuWeatherData) -> None:
"""Initialize."""
super().__init__(coordinator)
super().__init__(
observation_coordinator=accuweather_data.coordinator_observation,
daily_coordinator=accuweather_data.coordinator_daily_forecast,
)
self._attr_native_precipitation_unit = UnitOfPrecipitationDepth.MILLIMETERS
self._attr_native_pressure_unit = UnitOfPressure.HPA
self._attr_native_temperature_unit = UnitOfTemperature.CELSIUS
self._attr_native_visibility_unit = UnitOfLength.KILOMETERS
self._attr_native_wind_speed_unit = UnitOfSpeed.KILOMETERS_PER_HOUR
self._attr_unique_id = coordinator.location_key
self._attr_unique_id = accuweather_data.coordinator_observation.location_key
self._attr_attribution = ATTRIBUTION
self._attr_device_info = coordinator.device_info
if self.coordinator.forecast:
self._attr_supported_features = WeatherEntityFeature.FORECAST_DAILY
self._attr_device_info = accuweather_data.coordinator_observation.device_info
self._attr_supported_features = WeatherEntityFeature.FORECAST_DAILY
self.observation_coordinator = accuweather_data.coordinator_observation
self.daily_coordinator = accuweather_data.coordinator_daily_forecast
@property
def condition(self) -> str | None:
"""Return the current condition."""
return CONDITION_MAP.get(self.coordinator.data["WeatherIcon"])
return CONDITION_MAP.get(self.observation_coordinator.data["WeatherIcon"])
@property
def cloud_coverage(self) -> float:
"""Return the Cloud coverage in %."""
return cast(float, self.coordinator.data["CloudCover"])
return cast(float, self.observation_coordinator.data["CloudCover"])
@property
def native_apparent_temperature(self) -> float:
"""Return the apparent temperature."""
return cast(
float, self.coordinator.data["ApparentTemperature"][API_METRIC][ATTR_VALUE]
float,
self.observation_coordinator.data["ApparentTemperature"][API_METRIC][
ATTR_VALUE
],
)
@property
def native_temperature(self) -> float:
"""Return the temperature."""
return cast(float, self.coordinator.data["Temperature"][API_METRIC][ATTR_VALUE])
return cast(
float,
self.observation_coordinator.data["Temperature"][API_METRIC][ATTR_VALUE],
)
@property
def native_pressure(self) -> float:
"""Return the pressure."""
return cast(float, self.coordinator.data["Pressure"][API_METRIC][ATTR_VALUE])
return cast(
float, self.observation_coordinator.data["Pressure"][API_METRIC][ATTR_VALUE]
)
@property
def native_dew_point(self) -> float:
"""Return the dew point."""
return cast(float, self.coordinator.data["DewPoint"][API_METRIC][ATTR_VALUE])
return cast(
float, self.observation_coordinator.data["DewPoint"][API_METRIC][ATTR_VALUE]
)
@property
def humidity(self) -> int:
"""Return the humidity."""
return cast(int, self.coordinator.data["RelativeHumidity"])
return cast(int, self.observation_coordinator.data["RelativeHumidity"])
@property
def native_wind_gust_speed(self) -> float:
"""Return the wind gust speed."""
return cast(
float, self.coordinator.data["WindGust"][ATTR_SPEED][API_METRIC][ATTR_VALUE]
float,
self.observation_coordinator.data["WindGust"][ATTR_SPEED][API_METRIC][
ATTR_VALUE
],
)
@property
def native_wind_speed(self) -> float:
"""Return the wind speed."""
return cast(
float, self.coordinator.data["Wind"][ATTR_SPEED][API_METRIC][ATTR_VALUE]
float,
self.observation_coordinator.data["Wind"][ATTR_SPEED][API_METRIC][
ATTR_VALUE
],
)
@property
def wind_bearing(self) -> int:
"""Return the wind bearing."""
return cast(int, self.coordinator.data["Wind"][ATTR_DIRECTION]["Degrees"])
return cast(
int, self.observation_coordinator.data["Wind"][ATTR_DIRECTION]["Degrees"]
)
@property
def native_visibility(self) -> float:
"""Return the visibility."""
return cast(float, self.coordinator.data["Visibility"][API_METRIC][ATTR_VALUE])
return cast(
float,
self.observation_coordinator.data["Visibility"][API_METRIC][ATTR_VALUE],
)
@property
def uv_index(self) -> float:
"""Return the UV index."""
return cast(float, self.coordinator.data["UVIndex"])
return cast(float, self.observation_coordinator.data["UVIndex"])
@callback
def _async_forecast_daily(self) -> list[Forecast] | None:
"""Return the daily forecast in native units."""
if not self.coordinator.forecast:
return None
# remap keys from library to keys understood by the weather component
return [
{
ATTR_FORECAST_TIME: utc_from_timestamp(item["EpochDate"]).isoformat(),
@@ -175,5 +202,5 @@ class AccuWeatherEntity(
ATTR_FORECAST_WIND_BEARING: item["WindDay"][ATTR_DIRECTION]["Degrees"],
ATTR_FORECAST_CONDITION: CONDITION_MAP.get(item["IconDay"]),
}
for item in self.coordinator.data[ATTR_FORECAST]
for item in self.daily_coordinator.data
]

View File

@@ -4,30 +4,35 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from .const import DOMAIN
from .hub import PulseHub
CONF_HUBS = "hubs"
PLATFORMS = [Platform.COVER, Platform.SENSOR]
type AcmedaConfigEntry = ConfigEntry[PulseHub]
async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_setup_entry(
hass: HomeAssistant, config_entry: AcmedaConfigEntry
) -> bool:
"""Set up Rollease Acmeda Automate hub from a config entry."""
hub = PulseHub(hass, config_entry)
if not await hub.async_setup():
return False
hass.data.setdefault(DOMAIN, {})[config_entry.entry_id] = hub
config_entry.runtime_data = hub
await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, config_entry: AcmedaConfigEntry
) -> bool:
"""Unload a config entry."""
hub = hass.data[DOMAIN][config_entry.entry_id]
hub = config_entry.runtime_data
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
@@ -36,7 +41,4 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
if not await hub.async_reset():
return False
if unload_ok:
hass.data[DOMAIN].pop(config_entry.entry_id)
return unload_ok

View File

@@ -9,24 +9,23 @@ from homeassistant.components.cover import (
CoverEntity,
CoverEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AcmedaConfigEntry
from .base import AcmedaBase
from .const import ACMEDA_HUB_UPDATE, DOMAIN
from .const import ACMEDA_HUB_UPDATE
from .helpers import async_add_acmeda_entities
from .hub import PulseHub
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AcmedaConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Acmeda Rollers from a config entry."""
hub: PulseHub = hass.data[DOMAIN][config_entry.entry_id]
hub = config_entry.runtime_data
current: set[int] = set()

View File

@@ -2,6 +2,8 @@
from __future__ import annotations
from typing import TYPE_CHECKING
from aiopulse import Roller
from homeassistant.config_entries import ConfigEntry
@@ -11,17 +13,20 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN, LOGGER
if TYPE_CHECKING:
from . import AcmedaConfigEntry
@callback
def async_add_acmeda_entities(
hass: HomeAssistant,
entity_class: type,
config_entry: ConfigEntry,
config_entry: AcmedaConfigEntry,
current: set[int],
async_add_entities: AddEntitiesCallback,
) -> None:
"""Add any new entities."""
hub = hass.data[DOMAIN][config_entry.entry_id]
hub = config_entry.runtime_data
LOGGER.debug("Looking for new %s on: %s", entity_class.__name__, hub.host)
api = hub.api.rollers

View File

@@ -3,25 +3,24 @@
from __future__ import annotations
from homeassistant.components.sensor import SensorDeviceClass, SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AcmedaConfigEntry
from .base import AcmedaBase
from .const import ACMEDA_HUB_UPDATE, DOMAIN
from .const import ACMEDA_HUB_UPDATE
from .helpers import async_add_acmeda_entities
from .hub import PulseHub
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AcmedaConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Acmeda Rollers from a config entry."""
hub: PulseHub = hass.data[DOMAIN][config_entry.entry_id]
hub = config_entry.runtime_data
current: set[int] = set()

View File

@@ -135,11 +135,15 @@ class AdaxDevice(ClimateEntity):
class LocalAdaxDevice(ClimateEntity):
"""Representation of a heater."""
_attr_hvac_modes = [HVACMode.HEAT]
_attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
_attr_hvac_mode = HVACMode.HEAT
_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
@@ -152,6 +156,14 @@ class LocalAdaxDevice(ClimateEntity):
manufacturer="Adax",
)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set hvac mode."""
if hvac_mode == HVACMode.HEAT:
temperature = self._attr_target_temperature or self._attr_min_temp
await self._adax_data_handler.set_target_temperature(temperature)
elif hvac_mode == HVACMode.OFF:
await self._adax_data_handler.set_target_temperature(0)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperature."""
if (temperature := kwargs.get(ATTR_TEMPERATURE)) is None:
@@ -161,6 +173,14 @@ class LocalAdaxDevice(ClimateEntity):
async def async_update(self) -> None:
"""Get the latest data."""
data = await self._adax_data_handler.get_status()
self._attr_target_temperature = data["target_temperature"]
self._attr_current_temperature = data["current_temperature"]
self._attr_available = self._attr_current_temperature is not None
if (target_temp := data["target_temperature"]) == 0:
self._attr_hvac_mode = HVACMode.OFF
self._attr_icon = "mdi:radiator-off"
if target_temp == 0:
self._attr_target_temperature = self._attr_min_temp
else:
self._attr_hvac_mode = HVACMode.HEAT
self._attr_icon = "mdi:radiator"
self._attr_target_temperature = target_temp

View File

@@ -2,10 +2,12 @@
from __future__ import annotations
from dataclasses import dataclass
from adguardhome import AdGuardHome, AdGuardHomeConnectionError
import voluptuous as vol
from homeassistant.config_entries import ConfigEntry
from homeassistant.config_entries import ConfigEntry, ConfigEntryState
from homeassistant.const import (
CONF_HOST,
CONF_NAME,
@@ -24,7 +26,6 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import (
CONF_FORCE,
DATA_ADGUARD_CLIENT,
DOMAIN,
SERVICE_ADD_URL,
SERVICE_DISABLE_URL,
@@ -42,9 +43,18 @@ SERVICE_REFRESH_SCHEMA = vol.Schema(
)
PLATFORMS = [Platform.SENSOR, Platform.SWITCH]
type AdGuardConfigEntry = ConfigEntry[AdGuardData]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
@dataclass
class AdGuardData:
"""Adguard data type."""
client: AdGuardHome
version: str
async def async_setup_entry(hass: HomeAssistant, entry: AdGuardConfigEntry) -> bool:
"""Set up AdGuard Home from a config entry."""
session = async_get_clientsession(hass, entry.data[CONF_VERIFY_SSL])
adguard = AdGuardHome(
@@ -57,13 +67,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
session=session,
)
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {DATA_ADGUARD_CLIENT: adguard}
try:
await adguard.version()
version = await adguard.version()
except AdGuardHomeConnectionError as exception:
raise ConfigEntryNotReady from exception
entry.runtime_data = AdGuardData(adguard, version)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
async def add_url(call: ServiceCall) -> None:
@@ -107,17 +117,20 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: AdGuardConfigEntry) -> bool:
"""Unload AdGuard Home config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
if not hass.data[DOMAIN]:
loaded_entries = [
entry
for entry in hass.config_entries.async_entries(DOMAIN)
if entry.state == ConfigEntryState.LOADED
]
if len(loaded_entries) == 1:
# This is the last loaded instance of AdGuard, deregister any services
hass.services.async_remove(DOMAIN, SERVICE_ADD_URL)
hass.services.async_remove(DOMAIN, SERVICE_REMOVE_URL)
hass.services.async_remove(DOMAIN, SERVICE_ENABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_DISABLE_URL)
hass.services.async_remove(DOMAIN, SERVICE_REFRESH)
del hass.data[DOMAIN]
return unload_ok

View File

@@ -6,9 +6,6 @@ DOMAIN = "adguard"
LOGGER = logging.getLogger(__package__)
DATA_ADGUARD_CLIENT = "adguard_client"
DATA_ADGUARD_VERSION = "adguard_version"
CONF_FORCE = "force"
SERVICE_ADD_URL = "add_url"

View File

@@ -2,13 +2,14 @@
from __future__ import annotations
from adguardhome import AdGuardHome, AdGuardHomeError
from adguardhome import AdGuardHomeError
from homeassistant.config_entries import SOURCE_HASSIO, ConfigEntry
from homeassistant.config_entries import SOURCE_HASSIO
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.entity import Entity
from .const import DATA_ADGUARD_VERSION, DOMAIN, LOGGER
from . import AdGuardConfigEntry, AdGuardData
from .const import DOMAIN, LOGGER
class AdGuardHomeEntity(Entity):
@@ -19,12 +20,13 @@ class AdGuardHomeEntity(Entity):
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
data: AdGuardData,
entry: AdGuardConfigEntry,
) -> None:
"""Initialize the AdGuard Home entity."""
self._entry = entry
self.adguard = adguard
self.data = data
self.adguard = data.client
async def async_update(self) -> None:
"""Update AdGuard Home entity."""
@@ -68,8 +70,6 @@ class AdGuardHomeEntity(Entity):
},
manufacturer="AdGuard Team",
name="AdGuard Home",
sw_version=self.hass.data[DOMAIN][self._entry.entry_id].get(
DATA_ADGUARD_VERSION
),
sw_version=self.data.version,
configuration_url=config_url,
)

View File

@@ -7,16 +7,15 @@ from dataclasses import dataclass
from datetime import timedelta
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError
from adguardhome import AdGuardHome
from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, UnitOfTime
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN
from . import AdGuardConfigEntry, AdGuardData
from .const import DOMAIN
from .entity import AdGuardHomeEntity
SCAN_INTERVAL = timedelta(seconds=300)
@@ -85,21 +84,14 @@ SENSORS: tuple[AdGuardHomeEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: AdGuardConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdGuard Home sensor based on a config entry."""
adguard = hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_CLIENT]
try:
version = await adguard.version()
except AdGuardHomeConnectionError as exception:
raise PlatformNotReady from exception
hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_VERSION] = version
data = entry.runtime_data
async_add_entities(
[AdGuardHomeSensor(adguard, entry, description) for description in SENSORS],
[AdGuardHomeSensor(data, entry, description) for description in SENSORS],
True,
)
@@ -111,18 +103,18 @@ class AdGuardHomeSensor(AdGuardHomeEntity, SensorEntity):
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
data: AdGuardData,
entry: AdGuardConfigEntry,
description: AdGuardHomeEntityDescription,
) -> None:
"""Initialize AdGuard Home sensor."""
super().__init__(adguard, entry)
super().__init__(data, entry)
self.entity_description = description
self._attr_unique_id = "_".join(
[
DOMAIN,
adguard.host,
str(adguard.port),
self.adguard.host,
str(self.adguard.port),
"sensor",
description.key,
]

View File

@@ -7,15 +7,14 @@ from dataclasses import dataclass
from datetime import timedelta
from typing import Any
from adguardhome import AdGuardHome, AdGuardHomeConnectionError, AdGuardHomeError
from adguardhome import AdGuardHome, AdGuardHomeError
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import PlatformNotReady
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DATA_ADGUARD_CLIENT, DATA_ADGUARD_VERSION, DOMAIN, LOGGER
from . import AdGuardConfigEntry, AdGuardData
from .const import DOMAIN, LOGGER
from .entity import AdGuardHomeEntity
SCAN_INTERVAL = timedelta(seconds=10)
@@ -79,21 +78,14 @@ SWITCHES: tuple[AdGuardHomeSwitchEntityDescription, ...] = (
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: AdGuardConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdGuard Home switch based on a config entry."""
adguard = hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_CLIENT]
try:
version = await adguard.version()
except AdGuardHomeConnectionError as exception:
raise PlatformNotReady from exception
hass.data[DOMAIN][entry.entry_id][DATA_ADGUARD_VERSION] = version
data = entry.runtime_data
async_add_entities(
[AdGuardHomeSwitch(adguard, entry, description) for description in SWITCHES],
[AdGuardHomeSwitch(data, entry, description) for description in SWITCHES],
True,
)
@@ -105,15 +97,21 @@ class AdGuardHomeSwitch(AdGuardHomeEntity, SwitchEntity):
def __init__(
self,
adguard: AdGuardHome,
entry: ConfigEntry,
data: AdGuardData,
entry: AdGuardConfigEntry,
description: AdGuardHomeSwitchEntityDescription,
) -> None:
"""Initialize AdGuard Home switch."""
super().__init__(adguard, entry)
super().__init__(data, entry)
self.entity_description = description
self._attr_unique_id = "_".join(
[DOMAIN, adguard.host, str(adguard.port), "switch", description.key]
[
DOMAIN,
self.adguard.host,
str(self.adguard.port),
"switch",
description.key,
]
)
async def async_turn_off(self, **kwargs: Any) -> None:

View File

@@ -5,5 +5,5 @@
"documentation": "https://www.home-assistant.io/integrations/ads",
"iot_class": "local_push",
"loggers": ["pyads"],
"requirements": ["pyads==3.2.2"]
"requirements": ["pyads==3.4.0"]
}

View File

@@ -12,9 +12,11 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.debounce import Debouncer
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import ADVANTAGE_AIR_RETRY, DOMAIN
from .const import ADVANTAGE_AIR_RETRY
from .models import AdvantageAirData
type AdvantageAirDataConfigEntry = ConfigEntry[AdvantageAirData]
ADVANTAGE_AIR_SYNC_INTERVAL = 15
PLATFORMS = [
Platform.BINARY_SENSOR,
@@ -31,7 +33,9 @@ _LOGGER = logging.getLogger(__name__)
REQUEST_REFRESH_DELAY = 0.5
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(
hass: HomeAssistant, entry: AdvantageAirDataConfigEntry
) -> bool:
"""Set up Advantage Air config."""
ip_address = entry.data[CONF_IP_ADDRESS]
port = entry.data[CONF_PORT]
@@ -61,19 +65,15 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = AdvantageAirData(coordinator, api)
entry.runtime_data = AdvantageAirData(coordinator, api)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, entry: AdvantageAirDataConfigEntry
) -> bool:
"""Unload Advantage Air Config."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@@ -6,12 +6,11 @@ from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass,
BinarySensorEntity,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from . import AdvantageAirDataConfigEntry
from .entity import AdvantageAirAcEntity, AdvantageAirZoneEntity
from .models import AdvantageAirData
@@ -20,12 +19,12 @@ PARALLEL_UPDATES = 0
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir Binary Sensor platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
entities: list[BinarySensorEntity] = []
if aircons := instance.coordinator.data.get("aircons"):

View File

@@ -16,19 +16,18 @@ from homeassistant.components.climate import (
ClimateEntityFeature,
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, UnitOfTemperature
from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import ServiceValidationError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AdvantageAirDataConfigEntry
from .const import (
ADVANTAGE_AIR_AUTOFAN_ENABLED,
ADVANTAGE_AIR_STATE_CLOSE,
ADVANTAGE_AIR_STATE_OFF,
ADVANTAGE_AIR_STATE_ON,
ADVANTAGE_AIR_STATE_OPEN,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
)
from .entity import AdvantageAirAcEntity, AdvantageAirZoneEntity
from .models import AdvantageAirData
@@ -76,12 +75,12 @@ _LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir climate platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
entities: list[ClimateEntity] = []
if aircons := instance.coordinator.data.get("aircons"):

View File

@@ -8,15 +8,11 @@ from homeassistant.components.cover import (
CoverEntity,
CoverEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
ADVANTAGE_AIR_STATE_CLOSE,
ADVANTAGE_AIR_STATE_OPEN,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
)
from . import AdvantageAirDataConfigEntry
from .const import ADVANTAGE_AIR_STATE_CLOSE, ADVANTAGE_AIR_STATE_OPEN
from .entity import AdvantageAirThingEntity, AdvantageAirZoneEntity
from .models import AdvantageAirData
@@ -25,12 +21,12 @@ PARALLEL_UPDATES = 0
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir cover platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
entities: list[CoverEntity] = []
if aircons := instance.coordinator.data.get("aircons"):

View File

@@ -5,10 +5,9 @@ from __future__ import annotations
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from . import AdvantageAirDataConfigEntry
TO_REDACT = [
"dealerPhoneNumber",
@@ -25,10 +24,10 @@ TO_REDACT = [
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
hass: HomeAssistant, config_entry: AdvantageAirDataConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
data = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id].coordinator.data
data = config_entry.runtime_data.coordinator.data
# Return only the relevant children
return {

View File

@@ -3,11 +3,11 @@
from typing import Any
from homeassistant.components.light import ATTR_BRIGHTNESS, ColorMode, LightEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AdvantageAirDataConfigEntry
from .const import ADVANTAGE_AIR_STATE_ON, DOMAIN as ADVANTAGE_AIR_DOMAIN
from .entity import AdvantageAirEntity, AdvantageAirThingEntity
from .models import AdvantageAirData
@@ -15,12 +15,12 @@ from .models import AdvantageAirData
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir light platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
entities: list[LightEntity] = []
if my_lights := instance.coordinator.data.get("myLights"):

View File

@@ -1,11 +1,10 @@
"""Select platform for Advantage Air integration."""
from homeassistant.components.select import SelectEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from . import AdvantageAirDataConfigEntry
from .entity import AdvantageAirAcEntity
from .models import AdvantageAirData
@@ -14,12 +13,12 @@ ADVANTAGE_AIR_INACTIVE = "Inactive"
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir select platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
if aircons := instance.coordinator.data.get("aircons"):
async_add_entities(AdvantageAirMyZone(instance, ac_key) for ac_key in aircons)

View File

@@ -12,13 +12,13 @@ from homeassistant.components.sensor import (
SensorEntity,
SensorStateClass,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import PERCENTAGE, EntityCategory, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv, entity_platform
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import ADVANTAGE_AIR_STATE_OPEN, DOMAIN as ADVANTAGE_AIR_DOMAIN
from . import AdvantageAirDataConfigEntry
from .const import ADVANTAGE_AIR_STATE_OPEN
from .entity import AdvantageAirAcEntity, AdvantageAirZoneEntity
from .models import AdvantageAirData
@@ -31,12 +31,12 @@ PARALLEL_UPDATES = 0
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir sensor platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
entities: list[SensorEntity] = []
if aircons := instance.coordinator.data.get("aircons"):

View File

@@ -3,15 +3,14 @@
from typing import Any
from homeassistant.components.switch import SwitchDeviceClass, SwitchEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AdvantageAirDataConfigEntry
from .const import (
ADVANTAGE_AIR_AUTOFAN_ENABLED,
ADVANTAGE_AIR_STATE_OFF,
ADVANTAGE_AIR_STATE_ON,
DOMAIN as ADVANTAGE_AIR_DOMAIN,
)
from .entity import AdvantageAirAcEntity, AdvantageAirThingEntity
from .models import AdvantageAirData
@@ -19,12 +18,12 @@ from .models import AdvantageAirData
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir switch platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
entities: list[SwitchEntity] = []
if aircons := instance.coordinator.data.get("aircons"):

View File

@@ -1,11 +1,11 @@
"""Advantage Air Update platform."""
from homeassistant.components.update import UpdateEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AdvantageAirDataConfigEntry
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from .entity import AdvantageAirEntity
from .models import AdvantageAirData
@@ -13,12 +13,12 @@ from .models import AdvantageAirData
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AdvantageAirDataConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AdvantageAir update platform."""
instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]
instance = config_entry.runtime_data
async_add_entities([AdvantageAirApp(instance)])

View File

@@ -1,5 +1,6 @@
"""The AEMET OpenData component."""
from dataclasses import dataclass
import logging
from aemet_opendata.exceptions import AemetError, TownNotFound
@@ -11,19 +12,23 @@ from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import aiohttp_client
from .const import (
CONF_STATION_UPDATES,
DOMAIN,
ENTRY_NAME,
ENTRY_WEATHER_COORDINATOR,
PLATFORMS,
)
from .const import CONF_STATION_UPDATES, PLATFORMS
from .coordinator import WeatherUpdateCoordinator
_LOGGER = logging.getLogger(__name__)
type AemetConfigEntry = ConfigEntry[AemetData]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
@dataclass
class AemetData:
"""Aemet runtime data."""
name: str
coordinator: WeatherUpdateCoordinator
async def async_setup_entry(hass: HomeAssistant, entry: AemetConfigEntry) -> bool:
"""Set up AEMET OpenData as config entry."""
name = entry.data[CONF_NAME]
api_key = entry.data[CONF_API_KEY]
@@ -44,11 +49,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
weather_coordinator = WeatherUpdateCoordinator(hass, aemet)
await weather_coordinator.async_config_entry_first_refresh()
hass.data.setdefault(DOMAIN, {})
hass.data[DOMAIN][entry.entry_id] = {
ENTRY_NAME: name,
ENTRY_WEATHER_COORDINATOR: weather_coordinator,
}
entry.runtime_data = AemetData(name=name, coordinator=weather_coordinator)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@@ -64,9 +65,4 @@ async def async_update_options(hass: HomeAssistant, entry: ConfigEntry) -> None:
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@@ -55,8 +55,6 @@ CONF_STATION_UPDATES = "station_updates"
PLATFORMS = [Platform.SENSOR, Platform.WEATHER]
DEFAULT_NAME = "AEMET"
DOMAIN = "aemet"
ENTRY_NAME = "name"
ENTRY_WEATHER_COORDINATOR = "weather_coordinator"
ATTR_API_CONDITION = "condition"
ATTR_API_FORECAST_CONDITION = "condition"

View File

@@ -7,7 +7,6 @@ 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,
@@ -16,8 +15,7 @@ from homeassistant.const import (
)
from homeassistant.core import HomeAssistant
from .const import DOMAIN, ENTRY_WEATHER_COORDINATOR
from .coordinator import WeatherUpdateCoordinator
from . import AemetConfigEntry
TO_REDACT_CONFIG = [
CONF_API_KEY,
@@ -32,11 +30,10 @@ TO_REDACT_COORD = [
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
hass: HomeAssistant, config_entry: AemetConfigEntry
) -> 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]
coordinator = config_entry.runtime_data.coordinator
return {
"api_data": coordinator.aemet.raw_data(),

View File

@@ -56,6 +56,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import dt as dt_util
from . import AemetConfigEntry
from .const import (
ATTR_API_CONDITION,
ATTR_API_FORECAST_CONDITION,
@@ -87,9 +88,6 @@ from .const import (
ATTR_API_WIND_SPEED,
ATTRIBUTION,
CONDITIONS_MAP,
DOMAIN,
ENTRY_NAME,
ENTRY_WEATHER_COORDINATOR,
)
from .coordinator import WeatherUpdateCoordinator
from .entity import AemetEntity
@@ -360,13 +358,13 @@ WEATHER_SENSORS: Final[tuple[AemetSensorEntityDescription, ...]] = (
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AemetConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AEMET OpenData sensor entities based on a config entry."""
domain_data = hass.data[DOMAIN][config_entry.entry_id]
name: str = domain_data[ENTRY_NAME]
coordinator: WeatherUpdateCoordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
domain_data = config_entry.runtime_data
name = domain_data.name
coordinator = domain_data.coordinator
async_add_entities(
AemetSensor(

View File

@@ -18,7 +18,6 @@ from homeassistant.components.weather import (
SingleCoordinatorWeatherEntity,
WeatherEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
UnitOfPrecipitationDepth,
UnitOfPressure,
@@ -28,32 +27,24 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import (
ATTRIBUTION,
CONDITIONS_MAP,
DOMAIN,
ENTRY_NAME,
ENTRY_WEATHER_COORDINATOR,
)
from . import AemetConfigEntry
from .const import ATTRIBUTION, CONDITIONS_MAP
from .coordinator import WeatherUpdateCoordinator
from .entity import AemetEntity
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AemetConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AEMET OpenData weather entity based on a config entry."""
domain_data = hass.data[DOMAIN][config_entry.entry_id]
weather_coordinator = domain_data[ENTRY_WEATHER_COORDINATOR]
domain_data = config_entry.runtime_data
name = domain_data.name
weather_coordinator = domain_data.coordinator
async_add_entities(
[
AemetWeather(
domain_data[ENTRY_NAME], config_entry.unique_id, weather_coordinator
)
],
[AemetWeather(name, config_entry.unique_id, weather_coordinator)],
False,
)

View File

@@ -10,16 +10,14 @@ from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
PLATFORMS: list[Platform] = [Platform.SENSOR]
type AfterShipConfigEntry = ConfigEntry[AfterShip]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: AfterShipConfigEntry) -> bool:
"""Set up AfterShip from a config entry."""
hass.data.setdefault(DOMAIN, {})
session = async_get_clientsession(hass)
aftership = AfterShip(api_key=entry.data[CONF_API_KEY], session=session)
@@ -28,7 +26,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except AfterShipException as err:
raise ConfigEntryNotReady from err
hass.data[DOMAIN][entry.entry_id] = aftership
entry.runtime_data = aftership
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@@ -37,7 +35,4 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
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):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@@ -8,7 +8,6 @@ from typing import Any, Final
from pyaftership import AfterShip, AfterShipException
from homeassistant.components.sensor import SensorEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant, ServiceCall
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import (
@@ -18,6 +17,7 @@ from homeassistant.helpers.dispatcher import (
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import Throttle
from . import AfterShipConfigEntry
from .const import (
ADD_TRACKING_SERVICE_SCHEMA,
ATTR_TRACKINGS,
@@ -41,11 +41,11 @@ PLATFORM_SCHEMA: Final = cv.removed(DOMAIN, raise_if_present=False)
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AfterShipConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up AfterShip sensor entities based on a config entry."""
aftership: AfterShip = hass.data[DOMAIN][config_entry.entry_id]
aftership = config_entry.runtime_data
async_add_entities([AfterShipSensor(aftership, config_entry.title)], True)

View File

@@ -10,18 +10,20 @@ from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import CONNECTION, DOMAIN as AGENT_DOMAIN, SERVER_URL
from .const import DOMAIN as AGENT_DOMAIN, SERVER_URL
ATTRIBUTION = "ispyconnect.com"
DEFAULT_BRAND = "Agent DVR by ispyconnect.com"
PLATFORMS = [Platform.ALARM_CONTROL_PANEL, Platform.CAMERA]
AgentDVRConfigEntry = ConfigEntry[Agent]
async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_setup_entry(
hass: HomeAssistant, config_entry: AgentDVRConfigEntry
) -> bool:
"""Set up the Agent component."""
hass.data.setdefault(AGENT_DOMAIN, {})
server_origin = config_entry.data[SERVER_URL]
agent_client = Agent(server_origin, async_get_clientsession(hass))
@@ -34,9 +36,11 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
if not agent_client.is_available:
raise ConfigEntryNotReady
config_entry.async_on_unload(agent_client.close)
await agent_client.get_devices()
hass.data[AGENT_DOMAIN][config_entry.entry_id] = {CONNECTION: agent_client}
config_entry.runtime_data = agent_client
device_registry = dr.async_get(hass)
@@ -54,15 +58,8 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> b
return True
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, config_entry: AgentDVRConfigEntry
) -> bool:
"""Unload a config entry."""
unload_ok = await hass.config_entries.async_unload_platforms(
config_entry, PLATFORMS
)
await hass.data[AGENT_DOMAIN][config_entry.entry_id][CONNECTION].close()
if unload_ok:
hass.data[AGENT_DOMAIN].pop(config_entry.entry_id)
return unload_ok
return await hass.config_entries.async_unload_platforms(config_entry, PLATFORMS)

View File

@@ -6,7 +6,6 @@ from homeassistant.components.alarm_control_panel import (
AlarmControlPanelEntity,
AlarmControlPanelEntityFeature,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
STATE_ALARM_ARMED_AWAY,
STATE_ALARM_ARMED_HOME,
@@ -17,7 +16,8 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import CONNECTION, DOMAIN as AGENT_DOMAIN
from . import AgentDVRConfigEntry
from .const import DOMAIN as AGENT_DOMAIN
CONF_HOME_MODE_NAME = "home"
CONF_AWAY_MODE_NAME = "away"
@@ -28,13 +28,11 @@ CONST_ALARM_CONTROL_PANEL_NAME = "Alarm Panel"
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AgentDVRConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Agent DVR Alarm Control Panels."""
async_add_entities(
[AgentBaseStation(hass.data[AGENT_DOMAIN][config_entry.entry_id][CONNECTION])]
)
async_add_entities([AgentBaseStation(config_entry.runtime_data)])
class AgentBaseStation(AlarmControlPanelEntity):

View File

@@ -7,7 +7,6 @@ from agent import AgentError
from homeassistant.components.camera import CameraEntityFeature
from homeassistant.components.mjpeg import MjpegCamera, filter_urllib3_logging
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import (
@@ -15,12 +14,8 @@ from homeassistant.helpers.entity_platform import (
async_get_current_platform,
)
from .const import (
ATTRIBUTION,
CAMERA_SCAN_INTERVAL_SECS,
CONNECTION,
DOMAIN as AGENT_DOMAIN,
)
from . import AgentDVRConfigEntry
from .const import ATTRIBUTION, CAMERA_SCAN_INTERVAL_SECS, DOMAIN as AGENT_DOMAIN
SCAN_INTERVAL = timedelta(seconds=CAMERA_SCAN_INTERVAL_SECS)
@@ -43,14 +38,14 @@ CAMERA_SERVICES = {
async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
config_entry: AgentDVRConfigEntry,
async_add_entities: AddEntitiesCallback,
) -> None:
"""Set up the Agent cameras."""
filter_urllib3_logging()
cameras = []
server = hass.data[AGENT_DOMAIN][config_entry.entry_id][CONNECTION]
server = config_entry.runtime_data
if not server.devices:
_LOGGER.warning("Could not fetch cameras from Agent server")
return
@@ -80,11 +75,11 @@ class AgentCamera(MjpegCamera):
"""Initialize as a subclass of MjpegCamera."""
self.device = device
self._removed = False
self._attr_unique_id = f"{device._client.unique}_{device.typeID}_{device.id}"
self._attr_unique_id = f"{device.client.unique}_{device.typeID}_{device.id}"
super().__init__(
name=device.name,
mjpeg_url=f"{device.client._server_url}{device.mjpeg_image_url}&size={device.mjpegStreamWidth}x{device.mjpegStreamHeight}",
still_image_url=f"{device.client._server_url}{device.still_image_url}&size={device.mjpegStreamWidth}x{device.mjpegStreamHeight}",
mjpeg_url=f"{device.client._server_url}{device.mjpeg_image_url}&size={device.mjpegStreamWidth}x{device.mjpegStreamHeight}", # noqa: SLF001
still_image_url=f"{device.client._server_url}{device.still_image_url}&size={device.mjpegStreamWidth}x{device.mjpegStreamHeight}", # noqa: SLF001
)
self._attr_device_info = DeviceInfo(
identifiers={(AGENT_DOMAIN, self.unique_id)},

View File

@@ -9,4 +9,3 @@ SERVICE_UPDATE = "update"
SIGNAL_UPDATE_AGENT = "agent_update"
ATTRIBUTION = "Data provided by ispyconnect.com"
SERVER_URL = "server_url"
CONNECTION = "connection"

View File

@@ -18,6 +18,7 @@ from homeassistant.helpers.entity_component import EntityComponent
from homeassistant.helpers.typing import ConfigType, StateType
from . import group as group_pre_import # noqa: F401
from .const import DOMAIN
_LOGGER: Final = logging.getLogger(__name__)
@@ -33,8 +34,6 @@ ATTR_PM_10: Final = "particulate_matter_10"
ATTR_PM_2_5: Final = "particulate_matter_2_5"
ATTR_SO2: Final = "sulphur_dioxide"
DOMAIN: Final = "air_quality"
ENTITY_ID_FORMAT: Final = DOMAIN + ".{}"
SCAN_INTERVAL: Final = timedelta(seconds=30)

View File

@@ -0,0 +1,5 @@
"""Constants for the air_quality entity platform."""
from typing import Final
DOMAIN: Final = "air_quality"

View File

@@ -1,5 +1,7 @@
"""Describe group states."""
from __future__ import annotations
from typing import TYPE_CHECKING
from homeassistant.core import HomeAssistant, callback
@@ -7,10 +9,12 @@ from homeassistant.core import HomeAssistant, callback
if TYPE_CHECKING:
from homeassistant.components.group import GroupIntegrationRegistry
from .const import DOMAIN
@callback
def async_describe_on_off_states(
hass: HomeAssistant, registry: "GroupIntegrationRegistry"
hass: HomeAssistant, registry: GroupIntegrationRegistry
) -> None:
"""Describe group on off states."""
registry.exclude_domain()
registry.exclude_domain(DOMAIN)

View File

@@ -0,0 +1,57 @@
"""The Airgradient integration."""
from __future__ import annotations
from airgradient import AirGradientClient
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
from .coordinator import AirGradientConfigCoordinator, AirGradientMeasurementCoordinator
PLATFORMS: list[Platform] = [Platform.SELECT, Platform.SENSOR]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Airgradient from a config entry."""
client = AirGradientClient(
entry.data[CONF_HOST], session=async_get_clientsession(hass)
)
measurement_coordinator = AirGradientMeasurementCoordinator(hass, client)
config_coordinator = AirGradientConfigCoordinator(hass, client)
await measurement_coordinator.async_config_entry_first_refresh()
await config_coordinator.async_config_entry_first_refresh()
device_registry = dr.async_get(hass)
device_registry.async_get_or_create(
config_entry_id=entry.entry_id,
identifiers={(DOMAIN, measurement_coordinator.serial_number)},
manufacturer="AirGradient",
model=measurement_coordinator.data.model,
serial_number=measurement_coordinator.data.serial_number,
sw_version=measurement_coordinator.data.firmware_version,
)
hass.data.setdefault(DOMAIN, {})[entry.entry_id] = {
"measurement": measurement_coordinator,
"config": config_coordinator,
}
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):
hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok

View File

@@ -0,0 +1,102 @@
"""Config flow for Airgradient."""
from typing import Any
from airgradient import AirGradientClient, AirGradientError, ConfigurationControl
from awesomeversion import AwesomeVersion
from mashumaro import MissingField
import voluptuous as vol
from homeassistant.components import zeroconf
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_HOST, CONF_MODEL
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN
MIN_VERSION = AwesomeVersion("3.1.1")
class AirGradientConfigFlow(ConfigFlow, domain=DOMAIN):
"""AirGradient config flow."""
def __init__(self) -> None:
"""Initialize the config flow."""
self.data: dict[str, Any] = {}
self.client: AirGradientClient | None = None
async def set_configuration_source(self) -> None:
"""Set configuration source to local if it hasn't been set yet."""
assert self.client
config = await self.client.get_config()
if config.configuration_control is ConfigurationControl.NOT_INITIALIZED:
await self.client.set_configuration_control(ConfigurationControl.LOCAL)
async def async_step_zeroconf(
self, discovery_info: zeroconf.ZeroconfServiceInfo
) -> ConfigFlowResult:
"""Handle zeroconf discovery."""
self.data[CONF_HOST] = host = discovery_info.host
self.data[CONF_MODEL] = discovery_info.properties["model"]
await self.async_set_unique_id(discovery_info.properties["serialno"])
self._abort_if_unique_id_configured(updates={CONF_HOST: host})
if AwesomeVersion(discovery_info.properties["fw_ver"]) < MIN_VERSION:
return self.async_abort(reason="invalid_version")
session = async_get_clientsession(self.hass)
self.client = AirGradientClient(host, session=session)
await self.client.get_current_measures()
self.context["title_placeholders"] = {
"model": self.data[CONF_MODEL],
}
return await self.async_step_discovery_confirm()
async def async_step_discovery_confirm(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Confirm discovery."""
if user_input is not None:
await self.set_configuration_source()
return self.async_create_entry(
title=self.data[CONF_MODEL],
data={CONF_HOST: self.data[CONF_HOST]},
)
self._set_confirm_only()
return self.async_show_form(
step_id="discovery_confirm",
description_placeholders={
"model": self.data[CONF_MODEL],
},
)
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle a flow initialized by the user."""
errors: dict[str, str] = {}
if user_input:
session = async_get_clientsession(self.hass)
self.client = AirGradientClient(user_input[CONF_HOST], session=session)
try:
current_measures = await self.client.get_current_measures()
except AirGradientError:
errors["base"] = "cannot_connect"
except MissingField:
return self.async_abort(reason="invalid_version")
else:
await self.async_set_unique_id(current_measures.serial_number)
self._abort_if_unique_id_configured()
await self.set_configuration_source()
return self.async_create_entry(
title=current_measures.model,
data={CONF_HOST: user_input[CONF_HOST]},
)
return self.async_show_form(
step_id="user",
data_schema=vol.Schema({vol.Required(CONF_HOST): str}),
errors=errors,
)

View File

@@ -0,0 +1,7 @@
"""Constants for the Airgradient integration."""
import logging
DOMAIN = "airgradient"
LOGGER = logging.getLogger(__package__)

View File

@@ -0,0 +1,57 @@
"""Define an object to manage fetching AirGradient data."""
from datetime import timedelta
from airgradient import AirGradientClient, AirGradientError, Config, Measures
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import LOGGER
class AirGradientCoordinator[_DataT](DataUpdateCoordinator[_DataT]):
"""Class to manage fetching AirGradient data."""
_update_interval: timedelta
config_entry: ConfigEntry
def __init__(self, hass: HomeAssistant, client: AirGradientClient) -> None:
"""Initialize coordinator."""
super().__init__(
hass,
logger=LOGGER,
name=f"AirGradient {client.host}",
update_interval=self._update_interval,
)
self.client = client
assert self.config_entry.unique_id
self.serial_number = self.config_entry.unique_id
async def _async_update_data(self) -> _DataT:
try:
return await self._update_data()
except AirGradientError as error:
raise UpdateFailed(error) from error
async def _update_data(self) -> _DataT:
raise NotImplementedError
class AirGradientMeasurementCoordinator(AirGradientCoordinator[Measures]):
"""Class to manage fetching AirGradient data."""
_update_interval = timedelta(minutes=1)
async def _update_data(self) -> Measures:
return await self.client.get_current_measures()
class AirGradientConfigCoordinator(AirGradientCoordinator[Config]):
"""Class to manage fetching AirGradient data."""
_update_interval = timedelta(minutes=5)
async def _update_data(self) -> Config:
return await self.client.get_config()

View File

@@ -0,0 +1,20 @@
"""Base class for AirGradient entities."""
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import AirGradientCoordinator
class AirGradientEntity(CoordinatorEntity[AirGradientCoordinator]):
"""Defines a base AirGradient entity."""
_attr_has_entity_name = True
def __init__(self, coordinator: AirGradientCoordinator) -> None:
"""Initialize airgradient entity."""
super().__init__(coordinator)
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, coordinator.serial_number)},
)

View File

@@ -0,0 +1,15 @@
{
"entity": {
"sensor": {
"total_volatile_organic_component_index": {
"default": "mdi:molecule"
},
"nitrogen_index": {
"default": "mdi:molecule"
},
"pm003_count": {
"default": "mdi:blur"
}
}
}
}

View File

@@ -0,0 +1,11 @@
{
"domain": "airgradient",
"name": "Airgradient",
"codeowners": ["@airgradienthq", "@joostlek"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airgradient",
"integration_type": "device",
"iot_class": "local_polling",
"requirements": ["airgradient==0.4.3"],
"zeroconf": ["_airgradient._tcp.local."]
}

View File

@@ -0,0 +1,124 @@
"""Support for AirGradient select entities."""
from collections.abc import Awaitable, Callable
from dataclasses import dataclass
from airgradient import AirGradientClient, Config
from airgradient.models import ConfigurationControl, TemperatureUnit
from homeassistant.components.select import SelectEntity, SelectEntityDescription
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ServiceValidationError
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from .coordinator import AirGradientConfigCoordinator, AirGradientMeasurementCoordinator
from .entity import AirGradientEntity
@dataclass(frozen=True, kw_only=True)
class AirGradientSelectEntityDescription(SelectEntityDescription):
"""Describes AirGradient select entity."""
value_fn: Callable[[Config], str | None]
set_value_fn: Callable[[AirGradientClient, str], Awaitable[None]]
requires_display: bool = False
CONFIG_CONTROL_ENTITY = AirGradientSelectEntityDescription(
key="configuration_control",
translation_key="configuration_control",
options=[ConfigurationControl.CLOUD.value, ConfigurationControl.LOCAL.value],
entity_category=EntityCategory.CONFIG,
value_fn=lambda config: config.configuration_control
if config.configuration_control is not ConfigurationControl.NOT_INITIALIZED
else None,
set_value_fn=lambda client, value: client.set_configuration_control(
ConfigurationControl(value)
),
)
PROTECTED_SELECT_TYPES: tuple[AirGradientSelectEntityDescription, ...] = (
AirGradientSelectEntityDescription(
key="display_temperature_unit",
translation_key="display_temperature_unit",
options=[x.value for x in TemperatureUnit],
entity_category=EntityCategory.CONFIG,
value_fn=lambda config: config.temperature_unit,
set_value_fn=lambda client, value: client.set_temperature_unit(
TemperatureUnit(value)
),
requires_display=True,
),
)
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up AirGradient select entities based on a config entry."""
config_coordinator: AirGradientConfigCoordinator = hass.data[DOMAIN][
entry.entry_id
]["config"]
measurement_coordinator: AirGradientMeasurementCoordinator = hass.data[DOMAIN][
entry.entry_id
]["measurement"]
entities = [AirGradientSelect(config_coordinator, CONFIG_CONTROL_ENTITY)]
entities.extend(
AirGradientProtectedSelect(config_coordinator, description)
for description in PROTECTED_SELECT_TYPES
if (
description.requires_display
and measurement_coordinator.data.model.startswith("I")
)
)
async_add_entities(entities)
class AirGradientSelect(AirGradientEntity, SelectEntity):
"""Defines an AirGradient select entity."""
entity_description: AirGradientSelectEntityDescription
coordinator: AirGradientConfigCoordinator
def __init__(
self,
coordinator: AirGradientConfigCoordinator,
description: AirGradientSelectEntityDescription,
) -> None:
"""Initialize AirGradient select."""
super().__init__(coordinator)
self.entity_description = description
self._attr_unique_id = f"{coordinator.serial_number}-{description.key}"
@property
def current_option(self) -> str | None:
"""Return the state of the select."""
return self.entity_description.value_fn(self.coordinator.data)
async def async_select_option(self, option: str) -> None:
"""Change the selected option."""
await self.entity_description.set_value_fn(self.coordinator.client, option)
await self.coordinator.async_request_refresh()
class AirGradientProtectedSelect(AirGradientSelect):
"""Defines a protected AirGradient select entity."""
async def async_select_option(self, option: str) -> None:
"""Change the selected option."""
if (
self.coordinator.data.configuration_control
is not ConfigurationControl.LOCAL
):
raise ServiceValidationError(
translation_domain=DOMAIN,
translation_key="no_local_configuration",
)
await super().async_select_option(option)

Some files were not shown because too many files have changed in this diff Show More