Compare commits

...

1402 Commits

Author SHA1 Message Date
mib1185
40fa4721ed improve backup filenames 2025-02-04 19:56:23 +00:00
Michael
0895ac6a82 Improve backup file naming in Synology DSM backup agent (#137278)
* improve backup file naming

* use built-in suggested_filename
2025-02-04 18:20:54 +01:00
Glenn Waters
f19404991c Bump upb-lib to 0.6.0 (#137339) 2025-02-04 11:20:05 -06:00
kurens
0c56791d94 Added support for One Time Charge Status to Vicare (#135984)
Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
Co-authored-by: kurens <migrzyb@users.noreply.github.com>
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
Co-authored-by: Christopher Fenner <Christopher.Fenner@me.com>
2025-02-04 17:16:59 +00:00
Josef Zweck
5dd03c037e Bump onedrive-personal-sdk to 0.0.4 (#137330) 2025-02-04 11:11:55 -06:00
Jan Bouwhuis
1f7d620d6b Don't show active user initiated data entry config flows (#137334)
Do not show active user initiated  data entry config flows
2025-02-04 17:54:05 +01:00
Abílio Costa
9a9374bf45 Add view to download support package to Cloud component (#135856) 2025-02-04 16:52:40 +00:00
Steven B.
2f5816c5b6 Add exception translations to ring integration (#136468)
* Add exception translations to ring integration

* Do not include exception details in exception translations

* Don't check last_update_success for auth errors and update tests

* Do not log errors twice

* Update post review
2025-02-04 09:14:48 -06:00
Erik Montnemery
5629b995ce Include extra metadata in backup WS API (#137296)
* Include extra metadata in backup WS API

* Update onboarding backup view

* Update google_drive tests
2025-02-04 15:57:30 +01:00
Erik Montnemery
345cbc62a7 Minor adjustments of hassio backup tests (#137324) 2025-02-04 14:19:48 +01:00
Glenn Vandeuren (aka Iondependent)
a4f0194786 Convert Niko home control to async (#137174) 2025-02-04 14:10:27 +01:00
Erik Montnemery
ffc6aa0035 Report progress while restoring supervisor backup (#137313) 2025-02-04 12:55:36 +00:00
Joakim Sørensen
3e45af9995 Bump hass-nabucasa from 0.88.1 to 0.89.0 (#137321) 2025-02-04 13:54:50 +01:00
Marc Mueller
cd028f8d21 Update types packages (#137317) 2025-02-04 13:37:38 +01:00
Joakim Sørensen
dd1def3c5d Add default voice for languages in cloud TTS (#137300)
* Add default voice for languages in cloud TTS

* Add test

* use defined voice

* Add test to ensure all default voices are valid
2025-02-04 13:32:33 +01:00
Marc Mueller
0a32a9d6db Update attrs to 25.1.0 (#137316) 2025-02-04 12:59:53 +01:00
Duco Sebel
d1d498e27d Remove v2 API support for HomeWizard P1 Meter (#137261) 2025-02-04 12:47:50 +01:00
Indu Prakash
9a565885cb Humidifier turn display off for sleep mode (#137133) 2025-02-04 12:46:14 +01:00
Josef Zweck
7f69c689bf Bump onedrive-personal-sdk to 0.0.3 (#137309) 2025-02-04 12:39:00 +01:00
Jan Bouwhuis
efc515ff4e Remove legacy color_mode support for legacy mqtt json light (#136996) 2025-02-04 12:34:36 +01:00
Marc Mueller
64a40a3396 Improve frontier_silicon media_player typing (#137080) 2025-02-04 12:25:09 +01:00
Erik Montnemery
ca53d97a6d Improve shutdown of _CipherBackupStreamer (#137257)
* Improve shutdown of _CipherBackupStreamer

* Catch the right exception
2025-02-04 12:24:30 +01:00
Norbert Rittel
e18062bce4 Improve descriptions of Bluesound actions (#137156) 2025-02-04 12:17:49 +01:00
Marc Mueller
30c0a1492c Update codespell to 2.4.1 (#137312) 2025-02-04 12:16:24 +01:00
Marc Mueller
43b034b8bb Update pyoverkiz to 1.16.0 (#137310) 2025-02-04 12:03:10 +01:00
Marc Mueller
b98b38b3f0 Update pytest-aiohttp to 1.1.0 (#137311) 2025-02-04 12:01:09 +01:00
epenet
09cea6ce96 Cleanup runtime warnings in async unit tests (#137308) 2025-02-04 11:44:17 +01:00
Erik Montnemery
650351a7f3 Report progress while creating supervisor backup (#137301)
* Report progress while creating supervisor backup

* Use enum util
2025-02-04 11:36:03 +01:00
epenet
c3b40e681d Fix data update coordinator garbage collection (#137299) 2025-02-04 11:20:06 +01:00
Sid
4ce3fa8813 Allow integrations with digits in hassfest QS runtime_data (#136479) 2025-02-04 10:57:02 +01:00
Robert Resch
ea3ccc02d7 Bump uv to 0.5.27 (#137297) 2025-02-04 09:20:28 +01:00
epenet
0c55538370 Use runtime_data in faa_delays (#137292) 2025-02-04 09:02:50 +01:00
Brett Adams
6bd3792e9f Bump tesla-fleet-api to 0.9.2 (#137295) 2025-02-04 08:51:13 +01:00
epenet
5e0312ca60 Use HassKey in file_upload (#137294) 2025-02-04 08:45:41 +01:00
epenet
0f57347797 Use runtime_data in fastdotcom (#137293) 2025-02-04 08:44:24 +01:00
Daniel Hjelseth Høyer
82369535c4 Bump pymill to 0.12.3 (#137264)
Mill lib 0.12.3

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-02-04 08:25:18 +01:00
Michael
f9cc3361e3 Don't blow up when a backup doesn't exist on Synology DSM (#136913)
* don't raise while delte not existing backup

* only raise when error ne 408
2025-02-03 17:42:30 -05:00
Jan Stienstra
42cab208d0 Update Jellyfin codeowner (#137270) 2025-02-03 17:38:01 -05:00
Ernst Klamer
7fe89ea329 Add channel sensor to bthome (#137072) 2025-02-03 22:21:58 +00:00
Simone Chemelli
1654c28d74 Pass config_entry as param to Shelly coordinator (#137276)
* Pass config_entry as param

* diff approach
2025-02-03 22:58:50 +01:00
Wouter
6fa87da5bd Add Shelly script events entities (#135979)
* When an event is received from a script component on a shelly device, this event is send to the hass event bus

* Event emitted from a script will be send to the corresponding event entity

* Added tests for the shelly script event

* The event entity for script are now hidden by default

* Forgot to enable script event entities by default for the test

* Made serveral improvement for the shelly script event entity
- Added device name to event entity
- The event entity is now only created when a script has any event types
- The test for this entity now uses snapshots

* Shelly script event entities will not be create for the BLE scanning script and will now be automatically removed when the script no longer exsists

* Changed variable name to avoid confusion with _id

* Removed old const from first implementation and removed _script_event_listeners and used _event_listeners instead to listen for script events
2025-02-03 22:41:39 +02:00
Paulus Schoutsen
649319f4ee Introduce async_add_assistant_content to conversation chat log (#137273)
introduce async_add_assistant_content_without_tools to conversation chat log
2025-02-03 14:27:55 -06:00
Abílio Costa
282560acf8 Allow ignored idasen_desk devices to be set up from the user flow (#137253) 2025-02-03 13:54:09 -06:00
Simone Chemelli
1680adf158 Add device cleanup to Vodafone Station (#116024)
* add device cleanup

* apply review comments

* fix description

* make cleanup automatic

* .

* rework approach based on IQS021 rule

* add initial devices list from registry

* use connections instead of identifiers

* apply review comment

* add some coordinator tests

* one more test

* cleanup tests

* allign tests

* apply review comment

* removed sensor test

* cleanup test

* align test to latest code

* typo

* fix after rebase

* introduce generic helper

* apply some review comments

* add comments to clarify design

* apply latest review comment

* ruff

* improved coverage

* more coverage

* 100% helpers.py test coverage

* improve test

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-02-03 20:48:50 +01:00
Marc Mueller
5a14409dda Update tqdm to 4.67.1 (#137241) 2025-02-03 19:37:38 +01:00
Bram Kragten
3bfc1a87c8 Update frontend to 20250203.0 (#137263) 2025-02-03 19:37:12 +01:00
Michael Hansen
28edbdc107 Clear extra system prompt on start_conversation error (#137254)
* Clear extra system prompt on start_conversation error

* Update homeassistant/components/assist_satellite/entity.py

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

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-02-03 12:07:45 -05:00
Erik Montnemery
58b7be7c2f Check for errors when creating backups using supervisor (#137220)
* Check for errors when creating backups using supervisor

* Improve error reporting when there's no backup reference
2025-02-03 17:33:03 +01:00
Josef Zweck
a41566611e Bump onedrive-personal-sdk to 0.0.2 (#137252) 2025-02-03 17:30:27 +01:00
Martin Hjelmare
b660703117 Fix eheimdigital sw_version mock (#137255) 2025-02-03 17:28:54 +01:00
starkillerOG
c5e60045b4 Add Smart Rollos virtual motionblinds integration (#137190) 2025-02-03 17:21:28 +01:00
starkillerOG
ce5be8686a Add Heicko virtual motionblinds integration (#137191) 2025-02-03 17:18:30 +01:00
starkillerOG
94daeffe44 Add Ublockout virtual integration of MotionBlinds (#137179) 2025-02-03 17:10:39 +01:00
Aaron Godfrey
9856340a33 Bump todist-api-python to 2.1.7 (#136549)
Co-authored-by: Allen Porter <allen@thebends.org>
Co-authored-by: J. Diego Rodríguez Royo <jdrr1998@hotmail.com>
2025-02-03 17:06:21 +01:00
Jan Bouwhuis
30af9057d1 Ensure random temp dir is used during MQTT CI tests (#137221) 2025-02-03 16:06:02 +00:00
Regev Brody
a5eda3faf1 Bump python-roborock to 2.11.1 (#137244) 2025-02-03 17:00:36 +01:00
Shay Levy
2682f4a323 Add tests for Shelly Flood gen4 (#137246) 2025-02-03 17:34:02 +02:00
Josef Zweck
628e1ffb84 Migrate OneDrive to onedrive_personal_sdk library (#137064) 2025-02-03 16:25:58 +01:00
Paulus Schoutsen
05ca80f4ba Assist Pipeline to use ChatSession for conversation ID (#137143)
* Assist Pipeline to use ChatSession for conversation ID

* Adjust to latest changes
2025-02-03 09:18:15 -06:00
Paulus Schoutsen
8acab6c646 Assist Satellite to use ChatSession for conversation ID (#137142)
* Assist Satellite to use ChatSession for conversation ID

* Adjust for changes main branch

* Ensure the initial message is in the chat log
2025-02-03 09:13:09 -06:00
Joost Lekkerkerker
4531a46557 Bump python-homeassistant-analytics to 0.9.0 (#137240) 2025-02-03 16:03:13 +01:00
cdnninja
37461d727a Migrate unique ID in vesync switches (#137099) 2025-02-03 15:44:49 +01:00
Marc Mueller
b5662ded2c Update pylint-per-file-ignores to 1.4.0 (#137242) 2025-02-03 15:42:21 +01:00
Richard Kroegel
71e28a4af3 Add service to retrieve schedule configuration (#121904) 2025-02-03 14:41:25 +00:00
Marc Mueller
dba4637aa9 Update pytest-github-actions-annotate-failures to 0.3.0 (#137243) 2025-02-03 15:40:38 +01:00
Marc Mueller
e24564147d Update pytest-asyncio to 0.25.3 (#137231) 2025-02-03 14:52:56 +01:00
Marc Mueller
9bc110104d Update pyOpenSSL to 25.0.0 (#137236) 2025-02-03 14:46:49 +01:00
Marc Mueller
c903658aa8 Update syrupy to 4.8.1 (#137235) 2025-02-03 14:46:22 +01:00
Conor Eager
34a229af52 Add Starlink connectivity binary sensor (#133184)
Co-authored-by: David Rapan <david@rapan.cz>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-02-03 14:34:25 +01:00
Marc Mueller
8579456895 Update pytest-picked to 0.5.1 (#137233) 2025-02-03 14:25:06 +01:00
Marc Mueller
1d7e485aa3 Update pytest-freezer to 0.4.9 (#137232) 2025-02-03 14:11:03 +01:00
TimL
0e73363d04 Bump pysmlight to v0.2.2 (#137218) 2025-02-03 14:06:27 +01:00
Markus Adrario
48184e742a Fix minor issues in Homee (#137239) 2025-02-03 14:05:51 +01:00
RJPoelstra
0034055ac8 Fix retrieving PIN when no pin is set on mount in motionmount integration (#137230) 2025-02-03 14:05:11 +01:00
Marc Mueller
52d7cfbe32 Update coverage to 7.6.10 (#137229) 2025-02-03 14:03:41 +01:00
Marc Mueller
a9e73d9253 Update pylint to 3.3.4 (#137227) 2025-02-03 14:01:20 +01:00
Marc Mueller
a5c01a4d4f Update pipdeptree to 2.25.0 (#137228) 2025-02-03 14:01:04 +01:00
Marc Mueller
6d31530811 Update license-expression to 30.4.1 (#137226) 2025-02-03 14:00:16 +01:00
Markus Jacobsen
c950c69cb3 Add parallel updates setting to Bang & Olufsen Event platform (#135850) 2025-02-03 13:42:47 +01:00
Norbert Rittel
c2f94542aa Fix uppercase / lowercase setup strings in Generic Camera (#137219) 2025-02-03 12:38:38 +00:00
Simone Chemelli
cce6c735ad Add support for Shelly Flood gen4 (#136981) 2025-02-03 13:04:14 +01:00
Erik Montnemery
9cfe109210 Check for errors when restoring backups using supervisor (#137217)
* Check for errors when restoring backups using supervisor

* Break long line in test

* Improve comments
2025-02-03 11:51:29 +01:00
Norbert Rittel
0b2b222fca Fixes in user-facing strings of Tado integration (#137158) 2025-02-03 10:54:32 +01:00
Norbert Rittel
d2092315f5 Fix spelling of "SharkClean" and sentence-casing of some words (#137183) 2025-02-03 09:06:51 +01:00
cdnninja
d18fb4e6f9 Vesync bump pyvesync library (#137208) 2025-02-03 08:58:33 +01:00
Andre Lengwenus
00e0a5bc10 Bump pypck to 0.8.5 (#137176) 2025-02-03 08:26:08 +01:00
Paulus Schoutsen
9679fc7878 Chat session rev2 (#137209)
* Chat Session rev 2

* Rename session to chat_log

* Simplify typing

* Typing

* Address comments

* Fix anthropic and ollama
2025-02-03 00:05:20 -05:00
J. Nick Koston
ce93cb9467 Bump dbus-fast to 2.23.0 (#137205)
changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v2.31.0...v2.32.0
2025-02-02 21:22:58 -05:00
J. Nick Koston
1860794cac Bump bleak-esphome to 2.7.0 (#137199)
changelog: https://github.com/Bluetooth-Devices/bleak-esphome/compare/v2.6.0...v2.7.0
2025-02-02 21:22:49 -05:00
TimL
f846aa4705 Simplify config entry title for SMLIGHT (#137206) 2025-02-02 17:46:27 -06:00
TimL
0f641fcb74 Switch to using IP Addresses for connecting to smlight devices (#137204) 2025-02-02 17:08:32 -06:00
Denis Shulyaka
0f36759a38 Add support for OpenAI reasoning models (#137139)
* Add support for OpenAI reasoning models

* Apply suggestions from code review

* Remove o1-mini* and o1-preview* model support

* List unsupported models

* Reenable audio models (they also support text)
2025-02-02 16:55:16 -05:00
starkillerOG
a6781107df Add Linx virtual motionblinds integration (#137184) 2025-02-02 21:22:04 +01:00
J. Nick Koston
6afaeee0fd Bump aiodhcpwatcher to 1.0.3 (#137188)
changelog: https://github.com/bdraco/aiodhcpwatcher/compare/v1.0.2...v1.0.3
2025-02-02 21:17:58 +02:00
J. Nick Koston
1a394876b1 Bump dbus-fast to 2.31.0 (#137180)
changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v2.30.4...v2.31.0
2025-02-02 12:10:24 -05:00
TimL
a98109614e Allow manual smlight user setup to override discovery (#137136)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-02-02 10:37:08 -06:00
J. Nick Koston
a3d0ec4e6e Bump bluetooth-data-tools to 1.23.3 (#137147) 2025-02-02 10:25:59 -06:00
Jan Bouwhuis
839e2881e0 Fix mqtt reconfigure does not use broker entry password when it is not changed (#137169) 2025-02-02 16:21:40 +01:00
Steven B.
cb3ed506ad Bump python-kasa to 0.10.1 (#137173) 2025-02-02 17:19:31 +02:00
Brett Adams
9d808a7b5a Bump teslemetry-stream to 0.6.10 (#137159)
* bump

* v0.6.10
2025-02-02 14:29:33 +01:00
Jeef
b8237eaa55 Bump monarchmoney to 0.4.4 (#137168)
feat: update to backing lib to update backing lib
2025-02-02 14:11:44 +01:00
starkillerOG
9c747113a2 Reolink styling using walrus operator (#137069) 2025-02-02 13:18:36 +01:00
Indu Prakash
634e1dd9eb fix: sort available modes (#137134) 2025-02-02 10:11:40 +02:00
J. Nick Koston
9fcaf32c9c Bump dbus-fast to 2.30.4 (#137151)
changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v2.30.2...v2.30.4
2025-02-02 10:09:52 +02:00
Manu
d55a6de01b Bump habiticalib to v0.3.4 (#137148)
Bump habiticalib to version 0.3.4
2025-02-02 10:08:14 +02:00
Paulus Schoutsen
dd9bd8ef73 Make get_chat_session a callback context manager (#137146) 2025-02-01 23:37:24 -05:00
Martin Hjelmare
2ce585463c Fix home connect manifest logger (#137138) 2025-02-01 21:03:54 -05:00
Robert Resch
f9df5b413b Bump deebot-client to 12.0.0b0 (#137137) 2025-02-01 21:02:34 -05:00
J. Nick Koston
39a575dd29 Add missing brackets to ESPHome configuration URLs with IPv6 addresses (#137132)
fixes #137125
2025-02-01 21:02:10 -05:00
Denis Shulyaka
27f89f7710 Bump openai to 1.61.0 (#137130) 2025-02-01 21:01:41 -05:00
Paulus Schoutsen
2f6640707b Extract conversation ID generation to helper (#137062)
* Extract conversation ID generation to helper

* Allow nested get_chat_log calls
2025-02-01 20:54:00 -05:00
J. Diego Rodríguez Royo
30314ca32b Add and delete Home Connect devices on CONNECTED/PAIRED and DEPAIRED events (#136952)
* Add and delete devices on CONNECT/PAIRED and DEPAIRED events

* Simplify device depairing

* small fixes

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

* Add always the devices

* kind of revert changes

to simplify the entity fetch and removing on connected/paired and depaired

* cache `ha_id`

* Fix typo

* Remove unnecessary device info at HomeConnectEntity

* Move common code of each platform to `common.py`

* Added docstring to clarify usage

* Apply suggestions

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-02-02 02:02:45 +01:00
J. Diego Rodríguez Royo
147b5f549f Fetch current active and selected programs at Home Connect (#136948)
* Fetch current active and selected programs

* Intialize HomeConnectEntity first at SelectProgramEntity

* Use the right exception

* Use active/selected program from `get_all_programs`

This will allow us to reduce the number of requests that we need to perform to get all the data ready (only one requests vs. three requests)

* Remove no longer required mocks

* Fix
2025-02-02 00:12:26 +01:00
Allen Porter
bf6f790d09 Remove entity state from mcp-server prompt (#137126)
* Create a stateless assist API for MCP server

* Update stateless API

* Fix areas in exposed entity fields

* Add tests that verify areas are returned

* Revert the getstate intent

* Revert whitespace change

* Revert whitespace change

* Revert method name changes to avoid breaking openai and google tests
2025-02-01 14:26:52 -08:00
J. Nick Koston
2c99e3778e Bump habluetooth to 3.21.0 (#137129) 2025-02-01 15:56:28 -06:00
Alex Thompson
51c16cc808 Allow ignored tilt_ble devices to be set up from user flow (#137123)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-02-01 15:09:49 -06:00
Markus Adrario
f5fd49d8cb Small additions for Homee (#137000)
* fix entity set value error handling

* Translation for node_state sensor

* add entrance gate operator to covers

* fix review comments

* Update tests/components/homee/test_cover.py

* Delete Logging statement

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-02-01 14:11:53 -06:00
Shay Levy
ba427a1054 Allow ignored Aranet devices to be set up from the user flow (#137121) 2025-02-01 14:03:19 -06:00
Marc Mueller
95bcbd2c4f Improve fully_kiosk sensor typing (#137079) 2025-02-01 14:00:00 -06:00
Martin Hjelmare
c35cd6fb76 Bump aiohomeconnect to 0.12.3 (#137085) 2025-02-01 21:22:57 +02:00
J. Nick Koston
3b69a2bbd1 Allow ignored airthings_ble devices to be set up from the user flow (#137102)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for airthings
2025-02-01 21:22:13 +02:00
J. Nick Koston
d402166d1d Allow ignored yale_ble devices to be set up from the user flow (#137103)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for yalexs_ble
2025-02-01 21:21:53 +02:00
J. Nick Koston
9f85756785 Allow ignored thermopro devices to be set up from the user flow (#137104)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for thermopro
2025-02-01 21:21:43 +02:00
J. Nick Koston
d28a4258a3 Allow ignored inkbird devices to be set up from the user flow (#137106)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for inkbird
2025-02-01 21:21:21 +02:00
J. Nick Koston
caaa7def2f Allow ignored mopeka devices to be set up from the user flow (#137107)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for mopeka
2025-02-01 21:21:09 +02:00
J. Nick Koston
bfb9de46fe Allow ignored oralb devices to be set up from the user flow (#137109)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for oralb
2025-02-01 21:20:52 +02:00
J. Nick Koston
ced52f64b4 Allow ignored qingping devices to be set up from the user flow (#137111)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for qingping
2025-02-01 13:19:44 -06:00
J. Nick Koston
5967957e0b Allow ignored sensorpush devices to be set up from the user flow (#137113)
Every few days we get an issue report about a device a user ignored and forgot about, and than can no longer get set up. Sometimes its a govee device, sometimes its a switchbot device, but the pattern is consistent.

Allow ignored devices to be selected in the user step and replace the ignored entry.

Same as #137056 and #137052 but for sensorpush
2025-02-01 21:19:42 +02:00
J. Nick Koston
2888c64da9 Allow ignored xiaomi_ble devices to be set up from the user flow (#137115) 2025-02-01 13:16:39 -06:00
Ілля Піскурьов
4cab773bab Enable Modbus Climate / HVAC on/off to use the coil instead of the register(s) (#135657) 2025-02-01 13:15:20 -06:00
J. Nick Koston
d3da3b3470 Allow ignored bthome devices to be set up from the user flow (#137105) 2025-02-01 13:08:24 -06:00
Assaf Inbal
9c4940e915 Fix Homekit camera profiles schema (#137110) 2025-02-01 12:49:09 -06:00
J. Nick Koston
d43083e2f9 Set via_device for remote Bluetooth adapters to link to the parent device (#137091) 2025-02-01 12:10:59 -06:00
Marc Mueller
1157a08f72 Improve isy994 sensor typing (#137077) 2025-02-01 16:48:09 +01:00
IceBotYT
278c35f830 Bump lacrosse-view to 1.0.4 (#137058) 2025-02-01 09:16:10 -06:00
Marc Mueller
f29b4134d2 Update RestrictedPython to 8.0 (#137075) 2025-02-01 09:15:55 -06:00
Marc Mueller
da7ba85ee6 Improve sonos alarms typing (#137078) 2025-02-01 14:48:46 +01:00
J. Nick Koston
37daa57818 Bump habluetooth to 3.20.1 (#137063) 2025-02-01 07:26:31 -06:00
Nathan Spencer
ee37bc476f Raise HomeAssistantError from camera snapshot service (#137051)
* Raise HomeAssistantError from camera snapshot service

* Improve error message

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-02-01 13:53:04 +01:00
tronikos
d4586fb2e4 Test config_entry_oauth2_flow.async_get_redirect_uri (#136976)
* Test config_entry_oauth2_flow.async_get_redirect_uri

* review
2025-02-01 12:49:18 +01:00
J. Diego Rodríguez Royo
63ab13681a Home Connect entities availability based on the connected state of the appliance (#136951)
* Base the entity availability on the connected state of the appliance

* cache `ha_id`

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

* Inlcude coordinator `available` property at entity

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-02-01 12:46:49 +01:00
J. Diego Rodríguez Royo
efcfd97d1b Filter programs by execution type at select program entities at Home Connect (#136950)
* Filter programs by execution type at select program entities

* Suggestions and improvements

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

* Use function and translation key at select program entity description

* Fix select entity description docstring

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-02-01 12:06:39 +01:00
Jan-Philipp Benecke
889fe05a48 Load hassio before backup at frontend stage (#137067) 2025-02-01 11:43:45 +01:00
Norbert Rittel
123cd92986 Replace keys with translatable friendly names in Statistics helper (#136936) 2025-02-01 10:48:05 +01:00
J. Diego Rodríguez Royo
285a0a6c81 Fix Home Connect actions keys (#137027)
* Fix actions

* Use coerce

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-02-01 10:47:27 +01:00
Joris Pelgröm
012f7112d7 Add switch platform to LetPot integration (#136383)
* Add switch platform to LetPot integration

* deviceclient -> device_client

* Remove coordinator data None check

* Add exception handling + test
2025-02-01 08:15:36 +01:00
tronikos
bb61e31298 For consistency use suggested_filename in Google Drive (#137061)
Use  suggested_filename in Google Drive
2025-01-31 21:40:52 -08:00
TimL
9453b925cd Bump pysmlight to v0.2.1 (#137053) 2025-01-31 20:39:28 -06:00
J. Nick Koston
64d2f84c0d Allow ignored switchbot devices to be set up from the user flow (#137056) 2025-01-31 20:25:16 -06:00
J. Nick Koston
84e15e10ef Allow ignored govee-ble devices to be set up from the user flow (#137052)
* Allow ignored govee-ble devices to be setup up from the user flow

Every few days we get an issue report about a device
a user ignored and forgot about, and than can no longer
get set up. Allow ignored devices to be selected in
the user step and replace the ignored entry.

* Add the ability to skip ignored config entries when calling _abort_if_unique_id_configured

see https://github.com/home-assistant/core/pull/137052

* coverage

* revert
2025-01-31 21:24:01 -05:00
Abílio Costa
5da9bfe0e3 Add dev docs and frontend PR links to PR template (#137034) 2025-01-31 20:03:20 -05:00
Jan Bouwhuis
e56772d37b Bump aioimaplib to version 2.0.1 (#137049) 2025-01-31 18:38:11 -06:00
J. Nick Koston
c35e7715b7 Bump habluetooth to 3.17.1 (#137045) 2025-01-31 18:13:27 -06:00
Norbert Rittel
7040614433 Fix one occurrence of "api" to match all other in sensibo and HA (#137037) 2025-02-01 00:56:45 +02:00
J. Nick Koston
5fa5bd1302 Bump aiohttp-asyncmdnsresolver to 0.0.3 (#137040) 2025-01-31 16:30:20 -06:00
J. Nick Koston
dc7f445356 Bump bthome-ble to 3.12.3 (#137036) 2025-01-31 15:18:19 -06:00
J. Nick Koston
7a0400154e Bump zeroconf to 0.143.0 (#137035) 2025-01-31 15:00:39 -06:00
Joost Lekkerkerker
d51e72cd95 Update Overseerr string to mention CSRF (#137001)
* Update Overseerr string to mention CSRF

* Update homeassistant/components/overseerr/strings.json

* Update homeassistant/components/overseerr/strings.json

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2025-01-31 22:29:31 +02:00
Joris Pelgröm
7103ea7e8f Add exception handling for updating LetPot time entities (#137033)
* Handle exceptions for entity edits for LetPot

* Set exception-translations: done
2025-01-31 22:28:23 +02:00
Ernst Klamer
164d38ac0d Bump bthome-ble to 3.11.0 (#137032)
bump bthome-ble to 3.11.0
2025-01-31 22:03:17 +02:00
Josef Zweck
4a2e9db9fe Use readable backup names for onedrive (#137031)
* Use readable names for onedrive

* ensure filename is fixed

* fix import
2025-01-31 20:59:34 +01:00
Robert Resch
df166d178c Bump deebot-client to 11.1.0b2 (#137030) 2025-01-31 14:17:14 -05:00
J. Nick Koston
f75a61ac90 Bump SQLAlchemy to 2.0.37 (#137028)
changelog: https://docs.sqlalchemy.org/en/20/changelog/changelog_20.html#change-2.0.37

There is a bug fix that likely affects us that could lead to corrupted queries
https://docs.sqlalchemy.org/en/20/changelog/changelog_20.html#change-e4d04d8eb1bccee16b74f5662aff8edd
2025-01-31 13:52:38 -05:00
starkillerOG
92dd18a9be Ensure Reolink can start when privacy mode is enabled (#136514)
* Allow startup when privacy mode is enabled

* Add tests

* remove duplicate privacy_mode

* fix tests

* Apply suggestions from code review

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

* Store in subfolder and cleanup when removed

* Add tests and fixes

* fix styling

* rename CONF_PRIVACY to CONF_SUPPORTS_PRIVACY_MODE

* use helper store

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-31 13:48:47 -05:00
Allen Porter
df59b1d4fa Persist roborock maps to disk only on shutdown (#136889)
* Persist roborock maps to disk only on shutdown

* Rename on_unload to on_stop

* Spawn 1 executor thread and block writes to disk

* Update tests/components/roborock/test_image.py

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

* Use config entry setup instead of component setup

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-31 13:45:01 -05:00
Martin Hjelmare
9bc3c417ae Add codeowner to Home Connect (#137029) 2025-01-31 12:36:40 -06:00
Erik Montnemery
065cdf421f Delete old addon update backups when updating addon (#136977)
* Delete old addon update backups when updating addon

* Address review comments

* Add tests
2025-01-31 13:33:48 -05:00
Bram Kragten
256157d413 Update frontend to 20250131.0 (#137024) 2025-01-31 19:25:24 +01:00
J. Nick Koston
f8f12957b5 Bump bleak-esphome to 2.6.0 (#137025) 2025-01-31 12:15:31 -06:00
J. Nick Koston
c4cb94bddd Bump habluetooth to 3.17.0 (#137022) 2025-01-31 11:29:44 -06:00
Erik Montnemery
64f679ba8f Make supervisor backup file names more user friendly (#137020) 2025-01-31 18:20:30 +01:00
Duco Sebel
e0bf248867 Bumb python-homewizard-energy to 8.3.2 (#136995) 2025-01-31 10:49:25 -06:00
Nathan Spencer
b1c3d0857a Add pets to litterrobot integration (#136865) 2025-01-31 17:35:08 +01:00
Erik Montnemery
e18dc063ba Make backup file names more user friendly (#136928)
* Make backup file names more user friendly

* Strip backup name

* Strip backup name

* Underscores
2025-01-31 17:33:30 +01:00
Joris Pelgröm
b85b834bdc Bump letpot to 0.4.0 (#137007)
* Bump letpot to 0.4.0

* Fix test item
2025-01-31 10:31:31 -06:00
RJPoelstra
f5924146c1 Add data_description's to motionmount integration (#137014)
* Add data_description's

* Use more common terminology
2025-01-31 10:29:59 -06:00
Norbert Rittel
fafeedd01b Revert previous PR and remove URL from error message instead (#137018) 2025-01-31 10:26:43 -06:00
Erik Montnemery
64814e086f Make sure we load the backup integration before frontend (#137010) 2025-01-31 15:50:30 +00:00
Joost Lekkerkerker
6f1539f60d Use device name as entity name in Eheim digital climate (#136997) 2025-01-31 15:32:11 +00:00
Jakob Schlyter
84ae476b67 Energy distance units (#136933)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-01-31 14:22:25 +00:00
Josef Zweck
21ffcf853b Call backup listener during setup in onedrive (#136990) 2025-01-31 13:39:59 +01:00
RJPoelstra
d4a355e684 Bump python-MotionMount to 2.3.0 (#136985) 2025-01-31 13:29:07 +01:00
Manu
0773e37dab Create/delete lists at runtime in Bring integration (#130098) 2025-01-31 13:23:44 +01:00
Cyrill Raccaud
8eb9cc0e8e Remove the unparsed config flow error from Swiss public transport (#136998) 2025-01-31 13:19:04 +01:00
RJPoelstra
b702d88ab7 Use runtime_data in motionmount integration (#136999) 2025-01-31 13:17:22 +01:00
starkillerOG
66f048f49f Make Reolink reboot button always available (#136667) 2025-01-31 13:15:22 +01:00
Steven B.
c7041a97be Do not duplicate device class translations in ring integration (#136868) 2025-01-31 13:03:13 +01:00
Josef Zweck
f21ab24b8b Add sensors for drink stats per key to lamarzocco (#136582)
* Add sensors for drink stats per key to lamarzocco

* Add icon

* Use UOM translations

* fix tests

* remove translation key

* Update sensor.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-31 12:55:51 +01:00
Sid
cde59613a5 Refactor eheimdigital platform async_setup_entry (#136745) 2025-01-31 12:52:17 +01:00
Christopher Fenner
d83c335ed6 Add support for standby quickmode to ViCare integration (#133156) 2025-01-31 12:45:58 +01:00
Andrew Jackson
50f3d79fb2 Add post action to mastodon (#134788)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-31 12:29:23 +01:00
Jan Stienstra
a7903d344f Bump jellyfin-apiclient-python to 1.10.0 (#136872) 2025-01-31 12:29:00 +01:00
Gerben Jongerius
010cad08c0 Add tariff sensor and peak sensors (#136919) 2025-01-31 12:12:07 +01:00
Cyrill Raccaud
e512ad7a81 Fix missing duration translation for Swiss public transport integration (#136982) 2025-01-31 12:10:44 +01:00
Markus Adrario
e578327054 Add more Homee cover tests (#136568) 2025-01-31 11:46:12 +01:00
Josef Zweck
230e101ee4 Retry backup uploads in onedrive (#136980)
* Retry backup uploads in onedrive

* no exponential backup on timeout
2025-01-31 11:23:33 +01:00
Abílio Costa
3fb70316da Fix error messaging for cascading service calls (#136966) 2025-01-31 11:10:57 +01:00
Avi Miller
ab5583ed40 Suppress color_temp warning if color_temp_kelvin is provided (#136884) 2025-01-31 10:55:42 +01:00
Norbert Rittel
f1c720606f Fixes to the user-facing strings of energenie_power_sockets (#136844) 2025-01-31 10:38:30 +01:00
Austin Mroczek
270108e8e4 Bump total-connect-client to 2025.1.4 (#136793) 2025-01-31 10:36:06 +01:00
J. Nick Koston
fc979cd564 Bump habluetooth to 3.15.0 (#136973) 2025-01-31 08:34:39 +01:00
tronikos
99e307fe5a Bump opower to 0.8.9 (#136911)
* Bump opower to 0.8.9

* mypy
2025-01-30 23:33:58 -08:00
J. Diego Rodríguez Royo
4d4e11a0eb Fetch all programs instead of only the available ones at Home Connect (#136949)
Fetch all programs instead of only the available ones
2025-01-31 08:26:57 +01:00
Shay Levy
4613087e86 Add serial number to LG webOS TV device info (#136968) 2025-01-31 08:23:03 +01:00
tronikos
6c93d6a2d0 Include the redirect URL in the Google Drive instructions (#136906)
* Include the redirect URL in the Google Drive instructions

* Apply suggestions from code review

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-01-30 22:59:03 -08:00
Norbert Rittel
f93b1cc950 Make assist_satellite action descriptions consistent (#136955)
- use third-person singular for descriptive language, following HA standards
- use "a satellite" in both descriptions to match
- use sentence-casing for "Start conversation" action name
2025-01-30 16:03:56 -06:00
Michael Hansen
00f8afe332 Consume extra system prompt in first pipeline (#136958) 2025-01-30 17:01:24 -05:00
Matthias Alphart
ea496290c2 Update knx-frontend to 2025.1.30.194235 (#136954) 2025-01-30 21:59:00 +01:00
epenet
acb3f4ed78 Add software version to onewire device info (#136934) 2025-01-30 21:03:47 +01:00
J. Nick Koston
b12598d963 Bump aiohttp-asyncmdnsresolver to 0.0.2 (#136942) 2025-01-30 20:38:27 +01:00
J. Nick Koston
cf737356fd Bump zeroconf to 0.142.0 (#136940)
changelog: https://github.com/python-zeroconf/python-zeroconf/compare/0.141.0...0.142.0
2025-01-30 12:55:14 -06:00
Bram Kragten
6858f2a3d2 Update frontend to 20250130.0 (#136937) 2025-01-30 18:38:11 +01:00
Joost Lekkerkerker
c3b0bc3e0d Show name of the backup agents in issue (#136925)
* Show name of the backup agents in issue

* Show name of the backup agents in issue

* Update homeassistant/components/backup/manager.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-01-30 18:15:54 +01:00
tronikos
3dc52774fc Don't log errors when raising a backup exception in Google Drive (#136916) 2025-01-30 18:15:13 +01:00
Maciej Bieniek
f501b55aed Fix KeyError for Shelly virtual number component (#136932) 2025-01-30 18:43:48 +02:00
moritzthecat
eca93f1f4e Add DS2450 to onewire integration (#136882)
* add DS2450 to onewire integration

* added tests for DS2450 in const.py

* Update homeassistant/components/onewire/sensor.py

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

* spelling change voltage -> Voltage

* use translation key

* tests run after en.json edited

* Update homeassistant/components/onewire/strings.json

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

* naming convention adapted

* Update homeassistant/components/onewire/sensor.py

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

* adatpt owfs namings to HA namings. volt -> voltage

* Apply suggestions from code review

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-01-30 17:33:41 +01:00
Erik Montnemery
ec53b08e09 Don't blow up when a backup doesn't exist on supervisor (#136907) 2025-01-30 17:32:01 +01:00
Josef Zweck
63af407f8f Pick onedrive owner from a more reliable source (#136929)
* Pick onedrive owner from a more reliable source

* fix
2025-01-30 17:08:35 +01:00
Michael
6dd2d46328 Fix backup related translations in Synology DSM (#136931)
refernce backup related strings in option-flow strings
2025-01-30 16:59:39 +01:00
Jan Bouwhuis
8db6a6cf17 Shorten the integration name for incomfort (#136930) 2025-01-30 17:47:09 +02:00
Josef Zweck
d148bd9b0c Fix onedrive does not fail on delete not found (#136910)
* Fix onedrive does not fail on delete not found

* Fix onedrive does not fail on delete not found
2025-01-30 16:33:59 +01:00
Joost Lekkerkerker
773375e7b0 Fix Sonos importing deprecating constant (#136926) 2025-01-30 16:16:39 +01:00
Joost Lekkerkerker
232e99b62e Create Xbox signed session in executor (#136927) 2025-01-30 16:16:22 +01:00
Erik Montnemery
bab616fa61 Fix handling of renamed backup files in the core writer (#136898)
* Fix handling of renamed backup files in the core writer

* Adjust mocking

* Raise BackupAgentError instead of KeyError in get_backup_path

* Add specific error indicating backup not found

* Fix tests

* Ensure backups are loaded

* Fix tests
2025-01-30 15:25:16 +01:00
Maciej Bieniek
1c4ddb36d5 Convert valve position to int for Shelly BLU TRV (#136912) 2025-01-30 15:16:51 +02:00
Duco Sebel
76570b5144 Remove stale translation string in HomeWizard (#136917)
Remove stale translation in HomeWizard
2025-01-30 14:47:33 +02:00
epenet
5dd147e83b Add missing discovery string from onewire (#136892) 2025-01-30 11:46:27 +01:00
TimL
9eb383f314 Bump Pysmlight to v0.2.0 (#136886)
* Bump pysmlight to v0.2.0

* Update info.json fixture with radios list

* Update diagnostics snapshot
2025-01-30 12:11:40 +02:00
Erik Montnemery
52feeedd2b Poll supervisor job state when creating or restoring a backup (#136891)
* Poll supervisor job state when creating or restoring a backup

* Update tests

* Add tests for create and restore jobs finishing early
2025-01-30 11:09:31 +01:00
Erik Montnemery
1b5316b269 Ignore dangling symlinks when restoring backup (#136893) 2025-01-30 11:09:07 +01:00
Allen Porter
708ae09c7a Bump nest to 7.1.1 (#136888) 2025-01-30 11:07:55 +02:00
Arie Catsman
97fcbed6e0 Add error handling to enphase_envoy switch platform action (#136837)
* Add error handling to enphase_envoy switch platform action

* Use decorators for exception handling
2025-01-30 11:07:10 +02:00
dependabot[bot]
a8175b785f Bump github/codeql-action from 3.28.6 to 3.28.8 (#136890)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.6 to 3.28.8.
- [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.28.6...v3.28.8)

---
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>
2025-01-30 08:42:23 +01:00
TheJulianJES
64b056fbe9 Bump ZHA to 0.0.47 (#136883) 2025-01-29 20:57:36 -06:00
Paulus Schoutsen
427c437a68 Add start_conversation service to Assist Satellite (#134921)
* Add start_conversation service to Assist Satellite

* Fix tests

* Implement start_conversation in voip

* Update homeassistant/components/assist_satellite/entity.py

---------

Co-authored-by: Michael Hansen <mike@rhasspy.org>
2025-01-29 21:32:10 -05:00
J. Diego Rodríguez Royo
b637129208 Migrate from homeconnect dependency to aiohomeconnect (#136116)
* Migrate from homeconnect dependency to aiohomeconnect

* Reload the integration if there is an API error on event stream

* fix typos at coordinator tests

* Setup config entry at coordinator tests

* fix ruff

* Bump aiohomeconnect to version 0.11.4

* Fix set program options

* Use context based updates at coordinator

* Improved how `context_callbacks` cache is invalidated

* fix

* fixes and improvements at coordinator

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

* Remove stale Entity inheritance

* Small improvement for light subscriptions

* Remove non-needed function

It had its purpose before some refactoring before the firs commit, no is no needed as is only used at HomeConnectEntity constructor

* Static methods and variables at conftest

* Refresh the data after an event stream interruption

* Cleaned debug logs

* Fetch programs at coordinator

* Improvements

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

* Simplify obtaining power settings from coordinator data

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

* Remove unnecessary statement

* use `is UNDEFINED` instead of `isinstance`

* Request power setting only when it is strictly necessary

* Bump aiohomeconnect to 0.12.1

* use raw keys for diagnostics

* Use keyword arguments where needed

* Remove unnecessary statements

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-01-30 02:42:41 +01:00
TimL
4e3e1e91b7 Fix loading of SMLIGHT integration when no internet is available (#136497)
* Don't fail to load integration if internet unavailable

* Add test case for no internet

* Also test we recover after internet returns
2025-01-30 01:01:39 +00:00
Artur Pragacz
4066289662 Update quality scale in Onkyo (#136710) 2025-01-29 22:32:16 +00:00
Erik Montnemery
aca9607e2f Bump backup store to version 1.3 (#136870)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-01-29 14:58:06 -06:00
J. Nick Koston
edabf0f8dd Fix incorrect Bluetooth source address when restoring data from D-Bus (#136862) 2025-01-29 13:09:00 -06:00
Erik Montnemery
5286bd8f0c Persist hassio backup restore status after core restart (#136857)
* Persist hassio backup restore status after core restart

* Remove useless condition
2025-01-29 13:55:02 -05:00
Michael Hansen
d206553a0d Cancel call if user does not pick up (#136858) 2025-01-29 13:52:32 -05:00
Abílio Costa
b500fde468 Handle locked account error in Whirlpool (#136861) 2025-01-29 13:51:09 -05:00
Bram Kragten
46cef2986c Bump version to 2025.3.0 (#136859) 2025-01-29 19:32:36 +01:00
Erik Montnemery
823df4242d Add support for per-backup agent encryption flag to hassio (#136828)
* Add support for per-backup agent encryption flag to hassio

* Improve comment

* Set password to None when supervisor should not encrypt
2025-01-29 18:23:25 +01:00
Abílio Costa
6a8e45c51e Update whirlpool-sixth-sense to 0.18.12 (#136851) 2025-01-29 18:20:14 +01:00
Luke Lashley
4ce891512e Add ability to cache Roborock maps instead of always reloading (#112047)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Allen Porter <allen@thebends.org>
Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-29 18:16:28 +01:00
Abílio Costa
a61399f189 Simplify Whirlpool auth flows (#136856) 2025-01-29 17:09:44 +00:00
epenet
89e6791fee Use runtime_data in control4 (#136403) 2025-01-29 17:50:36 +01:00
Erik Montnemery
660653e226 Interrupt _CipherBackupStreamer workers (#136845)
* Interrupt _CipherBackupStreamer workers

* Fix cleanup

* Only abort live threads
2025-01-29 17:44:29 +01:00
Tomer
3118831557 Ease understanding of integration failures (#134475)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
Co-authored-by: David Bonnes <zxdavb@bonnes.me>
2025-01-29 17:43:25 +01:00
Marcel van der Veldt
72caf9d5a2 Tweak Matter discovery to ignore empty lists (#136854) 2025-01-29 17:41:28 +01:00
Bram Kragten
acbf40c384 Update frontend to 20250129.0 (#136852) 2025-01-29 17:33:31 +01:00
Norbert Rittel
63f34e346a Fix spelling of "API" for consistency in Home Assistant UI (#136843) 2025-01-29 11:28:32 -05:00
Nathan Spencer
35e3952770 Add DHCP discovery to balboa (#136762) 2025-01-29 17:28:09 +01:00
Lars
fa6df1cc25 Check for fullcolorsupport in fritzbox light (#136850) 2025-01-29 17:15:54 +01:00
Erik Montnemery
b2ec72d75f Persist backup restore status after core restart (#136838)
* Persist backup restore status after core restart

* Don't blow up if restore result file can't be removed

* Update tests
2025-01-29 16:58:33 +01:00
Paulus Schoutsen
8ab6bec746 Migrate Google Gen AI to ChatSession (#136779)
* Migrate Google Gen AI to ChatSession

* Remove unused method
2025-01-29 10:42:39 -05:00
epenet
83b34c6faf Adjust deprecation in water heater (#136577) 2025-01-29 16:15:20 +01:00
Teemu R.
653ff47171 Add cleaning statistics for tplink (#135784)
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com>
2025-01-29 08:56:47 -06:00
Teemu R.
c7176f6849 Add consumables for tplink tapo vacuums (#136510)
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-29 08:23:54 -06:00
Norbert Rittel
6d91f8d86c Fix spelling of "API" for consistency in Home Assistant UI (#136842) 2025-01-29 14:36:05 +01:00
Simon Lamon
d9deba3916 Take exclude vias in unique ids for nmbs (#136590) 2025-01-29 14:25:28 +01:00
Ludovic BOUÉ
32829596eb Add select platform discovery schemas for the Matter LaundryWasherControls cluster (#136261) 2025-01-29 14:17:00 +01:00
Erik Montnemery
9a687e7f94 Add support for per-backup agent encryption flag (#136622)
* Add support for per-backup agent encryption flag

* Adjust

* Don't attempt decrypting an unprotected backup

* Address review comments

* Add some tests

* Add fixture

* Rename fixture

* Correct condition for when we should encrypt or decrypt

* Update tests in integrations

* Improve test coverage

* Fix onedrive tests

* Add test

* Improve cipher worker shutdown

* Improve test coverage

* Fix google_drive tests

* Move inner class _CipherBackupStreamer._WorkerStatus to module scope
2025-01-29 14:04:17 +01:00
Tom
3e513dda62 IQS completion of documentation for Plugwise (#134051) 2025-01-29 13:40:05 +01:00
epenet
20ab6e2279 Standardize remaining homeassistant imports (#136836) 2025-01-29 13:39:31 +01:00
Christopher Fenner
b6cc5090e4 Update photovoltaic related labels in ViCare (#136430) 2025-01-29 13:39:05 +01:00
Thomas D
40f92b7b6b Bump qbusmqttapi to 1.2.4 (#136835) 2025-01-29 13:02:20 +01:00
Michael
c974251faa Fix command latency in AVM Fritz!SmartHome (#136739) 2025-01-29 12:55:59 +01:00
Duco Sebel
bc2976904e Rename HomeWizard last restart sensor to Uptime (#136829) 2025-01-29 12:54:08 +01:00
Erik Montnemery
7249c02655 Add backup endpoints to the onboarding integration (#136051)
* Add backup endpoints to the onboarding integration

* Add backup as after dependency of onboarding

* Add test snapshots

* Fix stale docstrings

* Add utility function for getting the backup manager instance

* Return backup_id when uploading backup

* Change /api/onboarding/backup/restore to accept a JSON body

* Fix with_backup_manager
2025-01-29 12:32:18 +01:00
epenet
706a01837c Standardize homeassistant imports in component (v-z) (#136834) 2025-01-29 12:25:04 +01:00
epenet
844259bd6c Standardize homeassistant imports in component (s) (#136832) 2025-01-29 12:24:31 +01:00
epenet
1ef809c716 Standardize homeassistant imports in component (q-r) (#136831) 2025-01-29 12:24:09 +01:00
epenet
ebda2f9994 Standardize homeassistant imports in component (n-p) (#136830) 2025-01-29 12:23:49 +01:00
dontinelli
c486cc8cbb Add image entity for fyta (#135105) 2025-01-29 12:14:39 +01:00
epenet
95c632e283 Standardize homeassistant imports in component (t-u) (#136833) 2025-01-29 12:14:21 +01:00
Nathan Spencer
ddb71a85b3 Update quality scale for litterrobot (#136764) 2025-01-29 11:58:14 +01:00
epenet
b594c29171 Standardize homeassistant imports in component (g-h) (#136825) 2025-01-29 11:57:01 +01:00
epenet
9046ab0250 Standardize homeassistant imports in component (i-k) (#136826) 2025-01-29 11:56:50 +01:00
epenet
ccdcba97b5 Standardize homeassistant imports in component (l-m) (#136827) 2025-01-29 11:56:40 +01:00
Brett Adams
ea62da553e Correct the behavior of the Charge switch in Tessie/Teslemetry/Tesla Fleet (#136562) 2025-01-29 11:41:33 +01:00
epenet
aa6ffb3da5 Improve type hints in environment_canada camera and weather (#136819) 2025-01-29 11:39:40 +01:00
epenet
3472e0e370 Standardize homeassistant imports in component (a-b) (#136821) 2025-01-29 11:37:48 +01:00
epenet
4f6a5bb65b Standardize homeassistant imports in component (c-d) (#136823) 2025-01-29 11:37:16 +01:00
epenet
a9433ca697 Standardize homeassistant imports in component (e-f) (#136824) 2025-01-29 11:36:22 +01:00
epenet
bfa7eaa221 Improve type hints in environment_canada sensors (#136813)
* Use TypeVar

* Use bound for TypeVar

* Remove PEP 695 syntax

* Add type alias to use new TypeVar syntax

---------

Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2025-01-29 11:31:54 +01:00
Robert Resch
5e6f4a374e Bump deebot-client to 11.1.0b1 (#136818) 2025-01-29 11:13:55 +01:00
David Knowles
b73203fdf6 Use the new hybrid Hydrawise client (#136522)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-29 11:06:59 +01:00
Cyrill Raccaud
04d1d80917 Add diagnostics for Cookidoo integration (#136770)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-29 11:06:39 +01:00
cdnninja
ce432555f0 Add binary sensor platform to VeSync (#134221)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-29 10:59:34 +01:00
Andrew Onyshchuk
e27a980742 vesync: report current humidity (#136799) 2025-01-29 10:57:49 +01:00
Iskra kranj
c312796aae Bump pyiskra to 0.1.15 (#136810) 2025-01-29 10:57:22 +01:00
Steven B.
6b4ec3f3f4 Use translations for fan_speed in tplink vacuum entity (#136718) 2025-01-29 10:55:19 +01:00
Duco Sebel
60b6a11d4e Add last restart sensor to HomeWizard (#136763) 2025-01-29 10:51:58 +01:00
Robert Resch
fe31dc936c Stop building wheels for 3.12 (#136811) 2025-01-29 10:49:49 +01:00
Erik Montnemery
646e0d4626 Bump aiohasupervisor to version 0.2.2b6 (#136814) 2025-01-29 10:42:30 +01:00
epenet
a6d132a337 Simplify device_info access in environment_canada (#136816)
* Simplify device_info access in environment_canada

* Update homeassistant/components/environment_canada/coordinator.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-29 10:41:33 +01:00
G Johansson
b93c2382ce Add config flow to filter helper (#121522)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-29 10:35:01 +01:00
epenet
417003ad35 Rename environment_canada entities (#136817) 2025-01-29 10:23:37 +01:00
epenet
7b1b229718 Standardize homeassistant imports in component tests (a-l) (#136806) 2025-01-29 10:00:45 +01:00
Michael
9169d55cf6 Use ConfigEntry.runtime_data in AVM Fritz!Box tools (#136386)
* implement FritzConfigEntry with runtime_data

* use HassKey for platform global data

* update quality scale

* fix after rebase

* use FritzConfigEntry everywhere possible

* fix import of FritzConfigEntry in services.py

* pass the config_entry explicitly in coordinator init

* improve typing of FritzData

* use FritzConfigEntry in config_flow.py
2025-01-29 09:49:02 +01:00
epenet
11671e1875 Use runtime_data in energenie_power_sockets (#136801)
* Use runtime_data in energenie_power_sockets

* Fix  tests
2025-01-29 09:36:53 +01:00
Marcel van der Veldt
609eb00a26 Add remaining Matter Operational State sensor discovery schemas (#136741) 2025-01-29 09:16:30 +01:00
Brett Adams
447096b295 Fix percentage_charged in Teslemetry (#136798)
Fix percentage_charged
2025-01-29 10:12:36 +02:00
epenet
0c6c9e0ae6 Use runtime_data in elmax (#136803) 2025-01-29 09:04:24 +01:00
epenet
5038847d67 Use runtime_data in environment_canada (#136805) 2025-01-29 09:03:25 +01:00
epenet
d0a188b86d Standardize homeassistant imports in component tests (m-z) (#136807) 2025-01-29 08:57:57 +01:00
Andrew Sayre
a135b4bb43 Enable strict typing for HEOS (#136797) 2025-01-29 07:28:13 +01:00
tronikos
a2b5a96bc9 Add Google Drive integration for backup (#134576)
* Add Google Drive integration for backup

* Add test_config_flow

* Stop using aiogoogle

* address a few comments

* Check folder exists in setup

* fix test

* address comments

* fix

* fix

* Use ChunkAsyncStreamIterator in helpers

* repair-issues: todo

* Remove check if folder exists in the reatuh flow. This is done in setup.

* single_config_entry": true

* Add test_init.py

* Store into backups.json to avoid 124 bytes per property limit

* Address comments

* autouse=True on setup_credentials

* Store metadata in description and remove backups.json

* improvements

* timeout downloads

* library

* fixes

* strings

* review

* ruff

* fix test

* Set unique_id

* Use slugify in homeassistant.util

* Fix

* Remove RefreshError

* review

* push more fields to the test constant

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-28 21:43:30 -08:00
Teemu R.
94e4863cbe Add power protection entities for tplink (#132267)
Co-authored-by: Steven B <51370195+sdb9696@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-28 19:34:26 -10:00
Michael Hansen
48dfa037bd Bump intents to 2025.1.28 (#136782)
* Bump intents to 2025.1.28

* Fix snapshots
2025-01-28 22:25:35 -06:00
Petro31
d06b0fe340 Reload template blueprints when reloading templates (#136794) 2025-01-28 22:48:38 -05:00
Duco Sebel
f909b54811 Redact stored authentication token in HomeWizard diagnostics (#136766) 2025-01-28 22:46:52 -05:00
Matthias Alphart
688a1f1d52 Add UI to create KNX BinarySensor entities (#136786)
Update knx-frontend to 2025.1.28.225404
2025-01-28 22:46:26 -05:00
Andrew Sayre
bc7c5fbc86 Fix typing errors in HEOS tests (#136795)
* Correct typing errors of mocked heos

* Fix player related typing issues

* Sort mocks
2025-01-28 22:44:57 -05:00
J. Nick Koston
9f586ea547 Bump habluetooth to 3.14.0 (#136791) 2025-01-29 02:10:33 +01:00
Michael Hansen
64cda8cdb8 Add VoIP announce (#136781)
* Implement async_announce for VoIP

* Add tests

* Add network to voip dependencies
2025-01-28 19:32:08 -05:00
Michael
7256575c09 Explicitly pass in the config_entry in Nextcloud coordinator init (#136774) 2025-01-29 01:26:20 +01:00
Michael
3638eb1d34 Explicitly pass in the config_entry in Synology DSM coordinator init (#136772) 2025-01-29 01:25:34 +01:00
Teemu R.
c2cbbf1e1c Add more vacuum features for tplink (#136580) 2025-01-29 01:23:29 +01:00
Michael
e07e8b8706 Explicitly pass in the config_entry in Proximity coordinator init (#136775) 2025-01-29 01:19:16 +01:00
Michael
01b278c547 Explicitly pass in the config_entry in Tankerkoenig coordinator init (#136780) 2025-01-29 01:18:21 +01:00
IceBotYT
ba2d1e698d Bump peco to 0.1.2 (#136732) 2025-01-29 01:15:06 +01:00
Michael
f98dc160f3 Explicitly pass in the config_entry in AVM Fritz!SmartHome coordinator init (#136769) 2025-01-29 01:13:49 +01:00
Michael
032e17720c Explicitly pass in the config_entry in PEGELONLINE coordinator init (#136773) 2025-01-29 01:11:54 +01:00
Michael
177bb29f69 Explicitly pass in the config_entry in Feedreader coordinator init (#136777) 2025-01-29 01:08:27 +01:00
TheJulianJES
fa2aeae30f Bump ZHA to 0.0.46 (#136785) 2025-01-29 01:05:32 +01:00
Shay Levy
898d12aa21 Bump aiowebostv to 0.6.1 (#136784) 2025-01-29 01:05:05 +01:00
Duco Sebel
7d0e314c35 Bumb python-homewizard-energy to 8.3.0 (#136765) 2025-01-29 01:00:46 +01:00
Michael Hansen
eb4a05e365 Bump hassil to 2.2.0 (#136787) 2025-01-28 18:58:53 -05:00
J. Nick Koston
68dbe34b89 Add Bluetooth WebSocket API to subscribe to scanner details (#136750) 2025-01-28 13:06:24 -10:00
hahn-th
29a3f0a271 Bump homematicip to 1.1.7 (#136767) 2025-01-29 01:06:19 +02:00
J. Nick Koston
c55caabbff Abort Bluetooth options flow if local adapters do not support passive scans (#136748) 2025-01-28 13:05:53 -10:00
Paul Bottein
cc4abcadcd Add translations for ZHA pilot wire mode and device mode (#136753) 2025-01-28 23:32:13 +01:00
Richard Polzer
77d9309b81 Add swing support for KNX climate entities (#136752)
* added swing to knx climate

* added tests for climate swing

* removed type ignores

* removed unreachable code
2025-01-28 22:52:39 +01:00
mkmer
814e98f66a Bump AIOSomecomfort to 0.0.32 (#136751) 2025-01-28 21:50:01 +00:00
Abílio Costa
c46258fbf7 Add volt/power/power_factor strings and state attrs for ZHA 3 phase meters (#133969) 2025-01-28 22:39:33 +01:00
Richard Polzer
51ce6f0933 Update xknx to 3.5.0 (#136759)
Dependency Bump 3.5.0
2025-01-28 22:24:47 +01:00
J. Nick Koston
1face8df56 Bump habluetooth to 3.13.0 (#136749) 2025-01-28 20:43:00 +01:00
Norbert Rittel
ee1d76de9f Capitalize "Velbus", replace "service calls" with "actions" (#136744) 2025-01-28 19:37:01 +00:00
Shay Levy
55fc01be8e Fix LG webOS TV actions not returning responses (#136743) 2025-01-28 20:55:06 +02:00
J. Nick Koston
bae9516fc2 Bump yeelight to 0.7.16 (#136679) 2025-01-28 08:44:25 -10:00
Nathan Spencer
404ca283c6 Let platforms decide entity creation in litterrobot (#136738) 2025-01-28 19:28:01 +01:00
Teemu R.
37b23a9691 Add pair/unpair buttons for tplink (#135847) 2025-01-28 19:17:34 +01:00
epenet
b7a344fd65 Standardize homeassistant imports in core and base platforms (#136730)
Standardize homeassistant imports in core
2025-01-28 13:11:48 -05:00
epenet
d5568ff955 Standardize homeassistant imports in full-CI components (#136731)
Standardize homeassistant imports in components
2025-01-28 13:11:19 -05:00
epenet
0e263aa427 Standardize homeassistant imports in full-CI tests (#136735) 2025-01-28 13:10:20 -05:00
Joost Lekkerkerker
cb407bdfc6 Add support for HomeWizard Plug-In Battery and v2 API (#136733) 2025-01-28 19:09:49 +01:00
Michael
a8c382566c Register service actions in async_setup of AVM Fritz!Box tools (#136380)
* move service setup into integrations async_setup

* move back to own module

* add service test

* remove unneccessary CONFIG_SCHEMA

* remove unused constant FRITZ_SERVICES

* Revert "remove unneccessary CONFIG_SCHEMA"

This reverts commit cce1ba76a0.

* remove useless CONFIG_SCHEMA from services.py

* move logic of `service_fritzbox` into services.py

* add more service tests

* simplify logic, use ServiceValidationError
2025-01-28 17:57:02 +01:00
Steven B.
c3db493f34 Mark tplink quality_scale platinum (#136456) 2025-01-28 17:50:06 +01:00
Brett Adams
77d42f6c57 Add streaming to Teslemetry lock platform (#136037) 2025-01-28 17:44:05 +01:00
Brett Adams
941461b427 Add streaming to Teslemetry number platform (#136048) 2025-01-28 17:43:41 +01:00
Joris Pelgröm
3eb1b182f5 Add config entry load/unload tests for LetPot (#136736) 2025-01-28 17:42:26 +01:00
Indu Prakash
9b598ed69c Add more tests to vesync (#135681) 2025-01-28 17:38:53 +01:00
Sid
3680e39c43 Add climate platform to eheimdigital (#135878) 2025-01-28 17:38:28 +01:00
cdnninja
661bacda10 Add SmartTowerFan to VeSync Integration (#136596) 2025-01-28 17:34:25 +01:00
Allen Porter
e9ef82f898 Bump python-roborock to 2.9.7 (#136727) 2025-01-28 17:32:09 +01:00
Norbert Rittel
7cbc6f35d2 Fix all occurrences of "PIN" in MotionMount user strings (#136734) 2025-01-28 17:08:55 +01:00
Arie Catsman
ae157e8592 Parameterize enphase_envoy number tests. (#136631) 2025-01-28 16:56:14 +01:00
Roman Sivriver
52dc124cfe Fix Telegram webhook registration if deregistration previously failed (#133398) 2025-01-28 16:46:08 +01:00
RJPoelstra
b16c3a55a5 Add authentication support to MotionMount integration (#126487) 2025-01-28 16:45:19 +01:00
Ludovic BOUÉ
3f013ab620 Add sensor for Matter OperationalState cluster / CurrentPhase attribute (#129757) 2025-01-28 16:39:41 +01:00
Christopher Fenner
01f63cfefd Add SPF sensor for heat pumps in ViCare integration (#136233)
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
2025-01-28 16:34:08 +01:00
Josef Zweck
5695582387 Add OneDrive as backup provider (#135121)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-01-28 14:57:46 +00:00
J. Nick Koston
3d7e3590d4 Migrate usb to use aiousbwatcher (#136676)
* Migrate usb to use aiousbwatcher

aiousbwatcher uses inotify on /dev/bus/usb to look for devices
added and being removed which works on a lot more systems

* bump asyncinotify

* bump aiousbwatcher to 1.1.1

* tweaks

* tweaks

* tweaks

* fixes

* debugging

* Update homeassistant/components/usb/__init__.py

* Update homeassistant/components/usb/__init__.py

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-01-28 09:57:11 -05:00
epenet
a05ac6255c Standardize util imports (#136723) 2025-01-28 15:54:06 +01:00
Marcel van der Veldt
22e72953e5 Adjust Matter discovery logic to disallow the primary value(s) to be None (#136712) 2025-01-28 15:24:15 +01:00
epenet
259f57b3aa Use runtime_data in devialet (#136432) 2025-01-28 15:19:54 +01:00
Shay Levy
58f7dd5dcc Fix LG webOS TV external arc volume set action (#136717) 2025-01-28 09:18:37 -05:00
Matthias Alphart
658d3cf06e Add support for KNX UI to create BinarySensor entities (#136703) 2025-01-28 09:16:58 -05:00
Dan Raper
139061afa3 Bump ohmepy to 1.2.8 (#136719) 2025-01-28 15:14:43 +01:00
Erik Montnemery
abb58ec785 Include error reason in backup events (#136697)
* Include error reason in backup events

* Update hassio backup tests

* Sort code

* Remove catching BackupError in async_receive_backup
2025-01-28 14:44:09 +01:00
Franck Nijhof
9a4b73a834 Merge branch 'master' into dev 2025-01-28 13:31:50 +00:00
epenet
9897e4d3e4 Use runtime_data in drop_connect (#136442) 2025-01-28 14:10:09 +01:00
Josef Zweck
2c3cd6e119 Fix total coffees sensor for lamarzocco (#135283) 2025-01-28 14:09:22 +01:00
Andrew Sayre
c4f8de8fd9 Raise exceptions in HEOS custom actions (#136546) 2025-01-28 14:08:40 +01:00
Norbert Rittel
79de8114d3 Fix spelling errors in user-facing strings of OctoPrint integration (#136644) 2025-01-28 14:07:49 +01:00
Norbert Rittel
5053b203a5 Fix spelling of "Ring" and sentence-casing of "integration" (#136652) 2025-01-28 14:06:59 +01:00
epenet
3dbcdf933e Cleanup ecobee YAML configuration import (#136633) 2025-01-28 14:04:09 +01:00
Andrew Sayre
c2da844f76 Add HEOS diagnostics (#136663) 2025-01-28 14:02:15 +01:00
epenet
6278d36981 Use HassKey in diagnostics (#136627) 2025-01-28 13:49:49 +01:00
Åke Strandberg
5a52c77523 Add test for myuplink DeviceInfo (#136360) 2025-01-28 13:48:58 +01:00
Erik Montnemery
e120a7b59c Fix deadlock in WS command backup/can_decrypt_on_download (#136707) 2025-01-28 13:48:42 +01:00
Erik Montnemery
b1abf50a31 Tag backups created when updating addon with supervisor.addon_update (#136690) 2025-01-28 13:48:28 +01:00
Artur Pragacz
be7a7c94f6 Remove unused function in hassio/update (#136701) 2025-01-28 13:43:31 +01:00
IceBotYT
1b78bbaaab Bump nice-go to 1.0.1 (#136649) 2025-01-28 13:25:54 +01:00
Manu
fa4b93da2b Bump bring-api to 1.0.0 (#136657) 2025-01-28 13:24:44 +01:00
Steven B.
7f3e56eb58 Update tplink coordinators to update hub-attached children (#135586) 2025-01-28 13:17:35 +01:00
dependabot[bot]
7db6f44f2d Bump github/codeql-action from 3.28.5 to 3.28.6 (#136686)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-28 13:15:41 +01:00
Teemu R.
82ee47ef77 Initial implementation for tplink tapo vacuums (#131965)
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-28 12:44:46 +01:00
epenet
1f35451863 Use runtime_data in epic_games_store (#136709) 2025-01-28 12:24:03 +01:00
Michael
8300fd2de8 Introduce unique_id to BackupAgent (#136651)
* add unique_id to BackupAgent

* adjust tests
2025-01-28 12:06:03 +01:00
epenet
91ff31a3be Use runtime_data in epion (#136708) 2025-01-28 12:01:19 +01:00
epenet
933aec1027 Use runtime_data in epson (#136706) 2025-01-28 11:57:12 +01:00
Christopher Fenner
f14f7936eb Support integrated ventilation on heating devices in ViCare integration (#130356) 2025-01-28 11:55:40 +01:00
Allen Porter
3ac062453f Update nest config flow to create pub/sub topics (#136609)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-28 11:53:57 +01:00
epenet
cd9abacdb2 Use runtime_data in eufylife_ble (#136705) 2025-01-28 11:52:10 +01:00
Christopher Fenner
8b738c919c Correct labels in EnOcean config flow (#136338) 2025-01-28 11:51:07 +01:00
epenet
7fc5a2294d Use runtime_data in evil_genius_labs (#136704) 2025-01-28 11:50:11 +01:00
epenet
f1305cd5a3 Improve type hints in econet (#136693)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2025-01-28 11:45:24 +01:00
epenet
d9d6308b78 Cleanup use of hass.data in edl21 (#136694) 2025-01-28 11:43:59 +01:00
epenet
c7c234c5dd Use runtime_data in electric_kiwi (#136699) 2025-01-28 11:34:57 +01:00
Gerben Jongerius
164078ac69 Add translations for youless sensors (#136349) 2025-01-28 11:29:29 +01:00
epenet
edac4b83d9 Use runtime_data in ezviz (#136702) 2025-01-28 11:29:26 +01:00
dependabot[bot]
6ad4dfc070 Bump actions/setup-python from 5.3.0 to 5.4.0 (#136685) 2025-01-28 11:28:21 +01:00
epenet
ff73545a86 Use runtime_data in econet (#136691) 2025-01-28 11:25:27 +01:00
Nathan Spencer
b1a4ba7b7c Update config flow tests for litterrobot (#136658)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-28 11:21:46 +01:00
epenet
5d55dcf392 Use runtime_data in electrasmart (#136696) 2025-01-28 11:58:10 +02:00
Allen Porter
b1fec51e2f Update roborock tests to patch client before test setup (#136587) 2025-01-28 10:54:36 +01:00
epenet
1ad2598c6f Use runtime_data in ecoforest (#136689) 2025-01-28 08:48:59 +01:00
epenet
b43379be7d Standardize helpers.xxx_registry imports (#136688)
Standardize registry imports
2025-01-28 08:48:34 +01:00
Artem Sorokin
0cd7aff6ea Add power/energy sensor for Matter draft electrical measurement cluster (#132920) 2025-01-28 08:37:39 +01:00
Paulus Schoutsen
5690516852 ChatSession: Split native content out of message class (#136668)
Split native content out of message class
2025-01-27 21:12:42 -08:00
J. Nick Koston
48a91540e1 Bump aioesphomeapi to 29.0.0 and bleak-esphome to 2.2.0 (#136684) 2025-01-27 19:04:46 -10:00
IceBotYT
517d258fb4 Increase LaCrosse View polling interval to 60 seconds (#136680) 2025-01-27 21:59:40 -05:00
Abílio Costa
5a53ed9e5b Merge Whirlpool tests into a parameterized test (#136490)
* Use fixtures in config flow tests for Whirlpool

* Keep old tests; new one will go to separate PR

* Merge Whirlpool tests into a parameterized test

* Address review comments

* Remove uneeded block wait calls
2025-01-28 00:51:40 +01:00
J. Nick Koston
e0ea5bfc51 Add Bluetooth WebSocket API to subscribe to connection allocations (#136215) 2025-01-27 11:49:49 -10:00
Marc Mueller
0b17d11683 Update flux-led to 1.1.3 (#136666) 2025-01-27 22:28:55 +01:00
Michael
50b0abbd7b Bump pyfritzhome to 0.6.14 (#136661)
bump pyfritzhome to 0.6.14
2025-01-27 23:24:14 +02:00
J. Nick Koston
7cf20c95c2 Log the error when the WebSocket receives a error message (#136492)
* Log the error when the WebSocket receives a non-text message

related issue #126754

Right now we only log that it was a non-Text message
and silently swallow the exception

* coverage
2025-01-27 15:38:18 -05:00
Steven B.
c12fa34e33 Add support for tplink siren turn on parameters (#136642)
Add support for tplink siren parameters - Allow passing tone, volume, and duration for siren's play action.

---------

Co-authored-by: Teemu Rytilahti <tpr@iki.fi>
2025-01-27 21:27:29 +01:00
J. Nick Koston
b79221e666 Make static modbus entity values classvar defaults (#136488) 2025-01-27 21:25:20 +01:00
Michael Hansen
b633a0424a Add HassClimateSetTemperature (#136484)
* Add HassClimateSetTemperature

* Use single target constraint
2025-01-27 14:18:31 -06:00
Allen Porter
58b4556a1d Add the Model Context Protocol integration (#135058)
* Add the Model Context Protocol integration

* Improvements to mcp integration

* Move the API prompt constant

* Update config flow error handling

* Update test descriptions

* Update tests/components/mcp/test_config_flow.py

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

* Update tests/components/mcp/test_config_flow.py

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

* Address PR feedback

* Update homeassistant/components/mcp/coordinator.py

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

* Move tool parsing to the coordinator

* Update session handling not to use a context manager

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2025-01-27 14:38:52 -05:00
Denis Shulyaka
85540cea3f Add LLM ActionTool (#136591)
Add ActionTool
2025-01-27 14:21:27 -05:00
Michael Hansen
7497beefed Add single target constraint to async_match_targets (#136643)
Add single target constraint
2025-01-27 14:06:21 -05:00
Marcel van der Veldt
557b9d88b5 Catch and convert MatterError when sending device commands (#136635) 2025-01-27 19:36:16 +01:00
Michael Hansen
3984565084 Bump voip-utils to 0.3.0 (#136648) 2025-01-27 11:42:00 -06:00
Maciej Bieniek
ea92523af4 Bump aioshelly to 12.3.2 (#136486)
* Bump aioshelly

* Add timeout parameter for call_rpc

* Increase timeout for BLU TRV

* Log timeout

* Update test

* Use const in test

* Coverage
2025-01-27 18:06:03 +01:00
Norbert Rittel
6bbb857d0f Fix spelling of "Pi-hole" and "API" in user-facing strings (#136645) 2025-01-27 17:59:21 +01:00
Erik Montnemery
d2138fe45b Bump securetar to 2025.1.4 (#136639) 2025-01-27 17:28:45 +01:00
Norbert Rittel
5faf2fd66c Replace "bosch_shc" with friendly name of integration (#136410) 2025-01-27 16:15:05 +00:00
Splint77
7c87bb2ffb Twinkly RGBW color fixed (#136593) 2025-01-27 15:53:26 +00:00
Steven B.
a2830e7ebb Add config flow data descriptions to ring integration (#136464)
* Add config flow data descriptions to ring integration

* Change Ring cloud to Ring account

* Revert config_flow change
2025-01-27 09:46:32 -06:00
Norbert Rittel
fc75d939eb Fix spelling of "Hub" and sentence-casing of "options" (#136573)
* Fix spelling of "Hub" and sentence-casing of "options"

* Change "the change channel command" to "a …"

Co-authored-by: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>

---------

Co-authored-by: Andrew Sayre <6730289+andrewsayre@users.noreply.github.com>
2025-01-27 09:43:02 -06:00
Marcel van der Veldt
b9c3548b5a Change discovery schema for Matter Identify button to ignore type of None (#136621) 2025-01-27 16:42:22 +01:00
Arie Catsman
679b7f4032 Fix test logic flaw in enphase_envoy test_select (#136570)
* Fix test logic flaw in enphase_envoy test_select

* Replace test loops by test parameters

* Implement review feedback to Improve use of parametrize parameters
2025-01-27 09:40:39 -06:00
Steven B.
84561b7446 Use typed ConfigEntry in ring coordinator (#136457)
* Use typed ConfigEntry in ring coordinator

* Make config_entry a positional argument for coordinator
2025-01-27 08:56:04 -06:00
epenet
037a0f25a4 Cleanup hass.data[DOMAIN] in application_credentials (#136625) 2025-01-27 15:06:03 +01:00
epenet
e1607344f0 Cleanup unnecessary type hint in assist_satellite (#136626) 2025-01-27 15:05:42 +01:00
epenet
7dc2b92452 Use typed coordinator and runtime_data in eafm (#136629)
* Move coordinator and use runtime_data in eafm

* Add type hints
2025-01-27 15:05:20 +01:00
dependabot[bot]
2878ba601b Bump github/codeql-action from 3.28.4 to 3.28.5 (#136613) 2025-01-27 14:28:04 +01:00
dependabot[bot]
ba070b34c8 Bump docker/build-push-action from 6.12.0 to 6.13.0 (#136612) 2025-01-27 14:27:41 +01:00
dependabot[bot]
f87d952816 Bump codecov/codecov-action from 5.3.0 to 5.3.1 (#136614) 2025-01-27 14:09:04 +01:00
epenet
55278ebfc8 Use runtime_data in ecobee (#136632) 2025-01-27 13:31:47 +01:00
Avi Miller
6c9ff41b0b Add product IDs for new LIFX Ceiling lights (#136619) 2025-01-27 13:06:01 +01:00
David Rapan
4e29ac8e1b Starlink's energy consumption & usage cumulation fix (#135889)
* refactor: history_stats result indexing

* fix: Energy consumption & Usage cumulation

* fix: typo

* fix: mypy error: Call to untyped function

* refactor: Use generic tuple instead of typing's Tuple

* fix: tuple

* fix: just syntax test

* fix: AttributeError: 'NoneType' object has no attribute 'usage'

* refactor: Return type

* refactor: Merge into single method

* refactor: Complex unpack test
2025-01-27 12:44:59 +01:00
epenet
111906f54e Add missing exclude_integrations in lovelace compatibility code (#136618)
Add missing exclude_integrations in lovelace
2025-01-27 12:41:25 +01:00
Ludovic BOUÉ
6015c936b0 Add a Matter temperature sensor based on Thermostat device LocalTemperature attribute (#133888) 2025-01-27 11:35:33 +01:00
starkillerOG
f1dfae6937 Ask for permission to disable Reolink privacy mode during config flow (#136511) 2025-01-27 10:52:48 +01:00
epenet
439a393816 Use runtime_data in deconz (#136412)
* Use runtime_data in deconz

* Adjust master logic

* Simplify

* Move DeconzConfigEntry definition

* More TYPE_CHECKING

* Apply suggestions from code review
2025-01-27 10:16:57 +01:00
epenet
acb9d68706 Use runtime_data in dynalite (#136448)
* Use runtime_data in dynalite

* Delay listener
2025-01-27 10:16:33 +01:00
epenet
1e0165c5f7 Add lovelace compatiblity code (#136617)
* Add lovelace compatiblity code

* Docstring

* Add tests
2025-01-27 10:16:13 +01:00
epenet
ffdb686363 Use runtime_data in crownstone (#136406)
* Use runtime_data in crownstone

* Move some logic into __init__

* Remove underscore in async_update_listener
2025-01-27 10:15:53 +01:00
Allen Porter
385a078675 Bump nest to python-nest-sdm to 7.1.0 (#136611) 2025-01-27 11:04:27 +02:00
Cyrill Raccaud
33a23ad1c6 Add diagnostic sensors for the active subscription of Cookidoo (#136485)
* add diagnostics for the active subcription

* fix mapping between api and ha states for subscription

* multiline lambda
2025-01-27 08:43:30 +01:00
Erik Montnemery
245ee2498e Update hassio to use the backup integration to make backups before update (#136235)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-01-27 08:25:22 +01:00
Allen Porter
69938545df Push more of the LLM conversation agent loop into ChatSession (#136602)
* Push more of the LLM conversation agent loop into ChatSession

* Revert unnecessary changes

* Revert changes to agent id filtering
2025-01-26 22:16:19 -05:00
Andrew Sayre
dfbb48552c Bump pyheos to v1.0.1 (#136604) 2025-01-26 20:49:55 -06:00
Marc Mueller
107184b55f Update mypy-dev to 1.16.0a1 (#136544)
* Update mypy-dev to 1.16.0a1

* Fix

* Use type ignore until fixed upstream
2025-01-26 17:41:05 -06:00
Arie Catsman
642a06b0f0 Optimize enphase_envoy test integration setup. (#136572) 2025-01-26 17:38:45 -06:00
Pete Sage
3582d9b4da Bump SoCo to 0.30.8 - Sonos (#136601)
update soco to 0.30.8
2025-01-26 17:34:16 -06:00
starkillerOG
17e12e6671 Prevent errors when Reolink privacy mode is turned on (#136506) 2025-01-26 22:44:15 +01:00
Jan Bouwhuis
3e0f6562c7 Cleanup stale devices on incomfort integration startup (#136566) 2025-01-26 14:57:32 -06:00
Steven B.
7133eec185 Bump python-kasa to 0.10.0 (#136586)
Bump python-kasa to 0.10.0

Release notes: https://github.com/python-kasa/python-kasa/releases/tag/0.10.0
2025-01-26 21:43:31 +01:00
starkillerOG
40127a5ca4 Add Reolink privacy switch entity (#136521) 2025-01-26 20:03:13 +01:00
Joris Pelgröm
db2fed2034 Fix LetPot reauthentication flow tests setting up config entry (#136589)
Fix LetPot reauth tests setting up config entry
2025-01-26 09:42:44 -08:00
Joost Lekkerkerker
647a7ae8e0 Bump yt-dlp to 2025.01.26 (#136581) 2025-01-26 17:46:26 +01:00
epenet
feb65c7e9f Fix optional argument in deconz test type definition (#136411) 2025-01-26 17:42:10 +01:00
Norbert Rittel
909af0db82 Fix sentence-casing in action names, spelling of "IDs" (#136576) 2025-01-26 17:33:33 +01:00
Norbert Rittel
363ecde41b Fix spelling of "Home Assistant" and "IDs" in xiaomi_aqara (#136578) 2025-01-26 17:32:09 +01:00
Andrew Sayre
b27ee261bb Fix HEOS play media type playlist (#136585) 2025-01-26 17:25:30 +01:00
Andrew Sayre
6a877ec77d Don't cast type in HEOS services (#136583) 2025-01-26 16:53:10 +01:00
Andrew Sayre
a2bc260dc1 Bump HEOS quality scale to silver (#136533)
bump heos quality scale
2025-01-26 09:51:29 -06:00
Andrew Sayre
b467bb2813 Use typed ConfigEntry throughout HEOS (#136569) 2025-01-26 16:41:04 +01:00
Norbert Rittel
c9218b91c1 Make casing of "server" and action descriptions consistent (#136561) 2025-01-26 16:33:43 +01:00
Markus Adrario
a9f14ce174 Bump pyHomee to 1.2.5 (#136567) 2025-01-26 07:48:35 -06:00
Dan Raper
7044771876 Add select platform to Ohme (#136536)
* Add select platform

* Formatting

* Add parallel updates to select

* Remove comments
2025-01-26 13:52:01 +01:00
Markus Adrario
93a231fb19 Homee cover-test (#136563)
initial cover-test
2025-01-26 13:49:28 +01:00
tronikos
3adbf75154 Bump opower to 0.8.8 (#136555) 2025-01-26 12:06:05 +01:00
Andrew Sayre
f8013655be Move action implementation out of HEOS Coordinator (#136539)
* Move play_source

* Update property docstring

* Correct import location
2025-01-26 11:20:37 +01:00
Dan Raper
ee07f1f290 Bump ohmepy version to 1.2.6 (#136547) 2025-01-25 19:05:20 -06:00
Martin Hjelmare
1a57992e78 Add restore backup tests (#136538)
* Test restore backup with busy manager

* Test restore backup with agent error

* Test restore backup with file error
2025-01-25 18:20:41 -06:00
Norbert Rittel
733e1feba3 Fix wrong plural on tado.add_meter_reading action (#136524)
As this action can only take a single argument the plural introduced in the descriptions is misleading.

This also makes the friendly name of the action consistent with its key name.
2025-01-25 18:20:05 -06:00
Robin Wohlers-Reichel
cffb0a03d2 Add Darsstar as codeowner for solax integration (#136528)
* Add Darsstar as codeowner for solax integration

* Update manifest.json
2025-01-25 18:18:20 -06:00
Michael
cf8409dcd2 Add backup agent to Synology DSM (#135227)
* pre-alpha state

* small type

* use ChunkAsyncStreamIterator from aiohttp_client helper

* create parent folders during upload if none exists

* check file station permissionsduring setup

* ensure backup-agents are reloaded

* adjust config flow

* fix check for availability of file station

* fix possible unbound

* add config flow tests

* fix existing tests

* add backup tests

* backup listeners are not async

* some more tests

* migrate existing config entries

* fix migration

* notify backup listeners only when needed during setup

* add backup settings to options flow

* switch back to the listener approach from the dev docs example

* add negative tests

* fix tests

* use HassKey

* fix tests

* Revert "use HassKey"

This reverts commit 71c5a4d6fa9c04b4907ff5f8df6ef7bd1737aa85.

* use hass loop call_soon instead of non-eager-start tasks

* use HassKey for backup-agent-listeners

* delete empty backup-agent-listener list from hass.data

* don't handle single file download errors

* Apply suggestions from code review

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

* add more tests

* we don't have entities related to file_station api

* add more backup tests

* test unload backup agent

* revert sorting of properties

* additional use hass config location for default backup path

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-25 22:31:30 +01:00
Christopher Fenner
5e6f624938 Add heat pump heating rod sensors in ViCare integration (#136467)
* add heating rod sensors

* add labels

* update snapshot
2025-01-25 21:42:49 +01:00
Keith
34e8595d19 Updated igloohome-api dependency to 0.1.0 (#136516)
- Updated igloohome-api to 0.1.0
2025-01-25 21:38:27 +01:00
J. Nick Koston
412636a198 Remove unneeded call active check in modbus (#136487)
We have an asyncio.Lock in place to prevent polling collisions
now so this is no longer needed

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-01-25 19:31:49 +02:00
Indu Prakash
1bf97e3f45 Bump pyvesync to 2.1.16 (#136493)
Update use pyvesync 2.1.16

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-01-25 19:31:16 +02:00
Abílio Costa
42f7bd0a8f Reuse fixtures in config flow tests for Whirlpool (#136489)
* Use fixtures in config flow tests for Whirlpool

* Keep old tests; new one will go to separate PR
2025-01-25 19:30:52 +02:00
mkmer
821abc8c53 Bump AIOSomeComfort to 0.0.30 in Honeywell (#136523) 2025-01-25 19:22:03 +02:00
J. Nick Koston
772f61cf77 Reduce boilerplate code to setup modbus platform entities (#136491) 2025-01-25 07:14:06 -10:00
Andrew Sayre
2fb85aab8e Incorporate GroupManager into HEOS Coordinator (#136462)
* Incorporate GroupManager

* Update quality scale

* Fix group params

* Revert quality scale change

* Rename varaible

* Move group action implementaton out of coordinator

* Fix get_group_members hass access

* entity -> entity_id
2025-01-25 18:04:33 +01:00
Joost Lekkerkerker
2db301fab9 Fix Spotify flaky test (#136529) 2025-01-25 18:53:27 +02:00
TimL
05bdfe7aa6 Abort config flow is device is unsupported (#136505)
* Abort config flow if device is not yet supported

* Abort on user step for unsupported device

* Add string for unsupported device

* fix tests due to extra get_info calls

* add tests for unsupported devices to abort flow
2025-01-25 13:17:38 +01:00
Ludovic BOUÉ
71d63bac8d Add TemperatureLevel feature from Matter TemperatureControl cluster (#134532) 2025-01-25 12:22:45 +01:00
starkillerOG
8b24bac1d1 Bump reolink_aio to 0.11.8 (#136504) 2025-01-25 11:28:52 +01:00
Joost Lekkerkerker
fb04c256a8 Refactor EZVIZ config flow tests (#136434) 2025-01-25 10:43:22 +01:00
Steven B.
28951096a8 Update tplink climate platform to use thermostat module (#136166) 2025-01-25 10:38:06 +01:00
TimL
b25b97b6b6 Bump pysmlight to v0.1.6 (#136496) 2025-01-25 09:22:26 +01:00
J. Nick Koston
d84fa1fcfb Fix httpx late import of trio doing blocking I/O in the event loop (#136409)
httpx 0.28.1 moved the trio import to happen a bit later

```
2025-01-23 19:53:12.370 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to open with args (/lib/c, rb) inside the event loop by integration rest at homeassistant/components/rest/data.py, line 88: self._async_client = create_async_httpx_client( (offender: /usr/local/lib/python3.13/ctypes/util.py, line 285: 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+rest%22
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#open
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 227, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 213, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 154, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 707, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 678, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2033, in _run_once
    handle._run()
  File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2360, in _async_forward_entry_setup
    result = await async_setup_component(
  File "/usr/src/homeassistant/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
  File "/usr/src/homeassistant/homeassistant/setup.py", line 420, in _async_setup_component
    result = await task
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 90, in async_setup
    await component.async_setup(config)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 146, in async_setup
    self.hass.async_create_task_internal(
  File "/usr/src/homeassistant/homeassistant/core.py", line 832, in async_create_task_internal
    task = create_eager_task(target, name=name, loop=self.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 307, in async_setup_platform
    await self._platforms[key].async_setup(platform_config, discovery_info)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 303, in async_setup
    await self._async_setup_platform(async_create_setup_awaitable)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 363, in _async_setup_platform
    awaitable = create_eager_task(awaitable, loop=hass.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/components/rest/sensor.py", line 85, in async_setup_platform
    await rest.async_update(log_errors=False)
  File "/usr/src/homeassistant/homeassistant/components/rest/data.py", line 88, in async_update
    self._async_client = create_async_httpx_client(

2025-01-23 19:53:12.371 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to glob with args (/lib/libc.so,) inside the event loop by integration rest at homeassistant/components/rest/data.py, line 88: self._async_client = create_async_httpx_client( (offender: /usr/local/lib/python3.13/ctypes/util.py, line 311: for f in glob({0}{1}.format(prefix, suffix)):), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+rest%22
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#glob
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 227, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 213, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 154, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 707, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 678, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2033, in _run_once
    handle._run()
  File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2360, in _async_forward_entry_setup
    result = await async_setup_component(
  File "/usr/src/homeassistant/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
  File "/usr/src/homeassistant/homeassistant/setup.py", line 420, in _async_setup_component
    result = await task
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 90, in async_setup
    await component.async_setup(config)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 146, in async_setup
    self.hass.async_create_task_internal(
  File "/usr/src/homeassistant/homeassistant/core.py", line 832, in async_create_task_internal
    task = create_eager_task(target, name=name, loop=self.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 307, in async_setup_platform
    await self._platforms[key].async_setup(platform_config, discovery_info)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 303, in async_setup
    await self._async_setup_platform(async_create_setup_awaitable)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 363, in _async_setup_platform
    awaitable = create_eager_task(awaitable, loop=hass.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/components/rest/sensor.py", line 85, in async_setup_platform
    await rest.async_update(log_errors=False)
  File "/usr/src/homeassistant/homeassistant/components/rest/data.py", line 88, in async_update
    self._async_client = create_async_httpx_client(

2025-01-23 19:53:12.372 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to iglob with args (/lib/libc.so,) inside the event loop by integration rest at homeassistant/components/rest/data.py, line 88: self._async_client = create_async_httpx_client( (offender: /usr/local/lib/python3.13/glob.py, line 31: return list(iglob(pathname, root_dir=root_dir, dir_fd=dir_fd, recursive=recursive,), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+rest%22
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#iglob
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 227, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 213, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 154, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 707, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 678, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2033, in _run_once
    handle._run()
  File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2360, in _async_forward_entry_setup
    result = await async_setup_component(
  File "/usr/src/homeassistant/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
  File "/usr/src/homeassistant/homeassistant/setup.py", line 420, in _async_setup_component
    result = await task
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 90, in async_setup
    await component.async_setup(config)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 146, in async_setup
    self.hass.async_create_task_internal(
  File "/usr/src/homeassistant/homeassistant/core.py", line 832, in async_create_task_internal
    task = create_eager_task(target, name=name, loop=self.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 307, in async_setup_platform
    await self._platforms[key].async_setup(platform_config, discovery_info)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 303, in async_setup
    await self._async_setup_platform(async_create_setup_awaitable)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 363, in _async_setup_platform
    awaitable = create_eager_task(awaitable, loop=hass.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/components/rest/sensor.py", line 85, in async_setup_platform
    await rest.async_update(log_errors=False)
  File "/usr/src/homeassistant/homeassistant/components/rest/data.py", line 88, in async_update
    self._async_client = create_async_httpx_client(

2025-01-23 19:53:12.374 WARNING (MainThread) [homeassistant.util.loop] Detected blocking call to scandir with args (/lib,) inside the event loop by integration rest at homeassistant/components/rest/data.py, line 88: self._async_client = create_async_httpx_client( (offender: /usr/local/lib/python3.13/glob.py, line 170: with os.scandir(arg) as it:), please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+rest%22
For developers, please see https://developers.home-assistant.io/docs/asyncio_blocking_operations/#scandir
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 227, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 213, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 154, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 707, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 678, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2033, in _run_once
    handle._run()
  File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run
    self._context.run(self._callback, *self._args)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2360, in _async_forward_entry_setup
    result = await async_setup_component(
  File "/usr/src/homeassistant/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
  File "/usr/src/homeassistant/homeassistant/setup.py", line 420, in _async_setup_component
    result = await task
  File "/usr/src/homeassistant/homeassistant/components/sensor/__init__.py", line 90, in async_setup
    await component.async_setup(config)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 146, in async_setup
    self.hass.async_create_task_internal(
  File "/usr/src/homeassistant/homeassistant/core.py", line 832, in async_create_task_internal
    task = create_eager_task(target, name=name, loop=self.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 307, in async_setup_platform
    await self._platforms[key].async_setup(platform_config, discovery_info)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 303, in async_setup
    await self._async_setup_platform(async_create_setup_awaitable)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 363, in _async_setup_platform
    awaitable = create_eager_task(awaitable, loop=hass.loop)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 45, in create_eager_task
    return Task(coro, loop=loop, name=name, eager_start=True)
  File "/usr/src/homeassistant/homeassistant/components/rest/sensor.py", line 85, in async_setup_platform
    await rest.async_update(log_errors=False)
  File "/usr/src/homeassistant/homeassistant/components/rest/data.py", line 88, in async_update
    self._async_client = create_async_httpx_client(
```
2025-01-25 09:15:05 +01:00
epenet
ddf071c80e Move deconz function to util.py (#136414) 2025-01-25 08:41:54 +01:00
epenet
829fab5371 Cleanup update_listener in deconz (#136416) 2025-01-25 08:40:22 +01:00
J. Nick Koston
891485f306 Bump pydantic to 2.10.6 (#136483) 2025-01-24 12:17:52 -10:00
Steven Looman
8622beb8a7 Bump async-upnp-client to 0.43.0 (#136481) 2025-01-24 12:05:31 -10:00
Christian
9993a68a55 Powerwall: Reuse authentication cookie (#136147)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-24 11:52:24 -10:00
Joost Lekkerkerker
f5fc46a7be Make Spotify polling interval dynamic (#136461) 2025-01-24 22:03:46 +01:00
Norbert Rittel
7363413d3d Fix sentence-casing in strings of Vizio integration (#136465) 2025-01-24 22:00:46 +02:00
Raphael Hehl
c25ffd3e66 Bump uiprotect to version 7.5.0 (#136475) 2025-01-24 13:57:19 -06:00
Steven B.
1697e24068 Add PARALLEL_UPDATES constant to ring integration platforms (#136470) 2025-01-24 20:48:55 +01:00
Josef Zweck
b0188772bc Bump aioacaia to 0.1.14 (#136453) 2025-01-24 17:01:44 +01:00
Markus Adrario
a56c37a508 Add more sensors to homee (#136445) 2025-01-24 16:02:14 +01:00
epenet
728d381eb3 Move dynalite service definitions to separate module (#136446) 2025-01-24 15:55:53 +01:00
Artur Pragacz
fc9ad40ac8 Reorganize input sources in Onkyo options (#133511) 2025-01-24 15:45:53 +01:00
epenet
51bc56929b Use runtime_data in dunehd (#136443) 2025-01-24 15:45:34 +01:00
J. Nick Koston
98e59f01b7 Bump aioharmony to 0.4.1 (#136413)
changelog: https://github.com/Harmony-Libs/aioharmony/compare/v0.4.0...v0.4.1
2025-01-24 16:23:22 +02:00
epenet
4dc873416f Use runtime_data in dexcom (#136441) 2025-01-24 15:14:05 +01:00
epenet
f3e13f4662 Use runtime_data in duotecno (#136444) 2025-01-24 15:13:53 +01:00
epenet
2e78ab620f Use runtime_data in dormakaba_dkey (#136440) 2025-01-24 14:52:22 +01:00
epenet
f6b1786b13 Move dexcom coordinator to separate module (#136433) 2025-01-24 14:20:23 +01:00
epenet
384c173ab3 Use runtime_data in directv (#136435) 2025-01-24 14:14:42 +01:00
epenet
c991d4dac5 Move dormakaba_dkey coordinator to separate module (#136437) 2025-01-24 14:14:03 +01:00
David Knowles
7050dbb66d Refactor the Hydrawise config flow (#135886)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-24 14:13:54 +01:00
Shay Levy
47efb68780 Add missing translations for LG webOS TV and fix names (#136438) 2025-01-24 14:13:10 +01:00
Erwin Douna
5d353a9833 Tado change to async and add Data Update Coordinator (#134175)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-24 13:05:54 +01:00
Jan Bouwhuis
09559a43ad Rename incomfort exceptions classes to fix typo and assign correct translation domain (#136426) 2025-01-24 12:17:23 +01:00
Andrew Sayre
a3ba3bbb1d Incorporate SourceManager into HEOS Coordinator (#136377)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-24 11:56:41 +01:00
Indu Prakash
50cf94ca9b Fix humidifier mode for Vesync (#135746)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-24 11:50:23 +01:00
Glenn Vandeuren (aka Iondependent)
72d1ac9f92 Bump nhc to 0.3.9 (#136418) 2025-01-24 11:44:15 +01:00
epenet
c2fe7230b5 Use runtime_data in denonavr (#136424) 2025-01-24 11:38:24 +01:00
Franck Nijhof
20e936c7b9 Omit Peblar update entities for most white label devices (#136374) 2025-01-24 11:33:25 +01:00
epenet
4e89c2322b Simplify update listener in denonavr (#136422) 2025-01-24 11:26:09 +01:00
epenet
6fde10ef9e Move denonavr shared constants to central location (#136421) 2025-01-24 11:23:23 +01:00
J. Nick Koston
0abdda7abb Bump WSDiscovery to 2.1.2 (#136363) 2025-01-23 23:30:49 -10:00
Franck Nijhof
6145ea2323 2025.1.4 (#136407)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Matt Doran <mattdoran76@gmail.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Makrit <sinticlee@gmail.com>
Co-authored-by: Claudio Ruggeri - CR-Tech <41435902+crug80@users.noreply.github.com>
Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>
Co-authored-by: Yuxin Wang <yuxinwang.dev@gmail.com>
Co-authored-by: Åke Strandberg <ake@strandberg.eu>
Co-authored-by: Paul Bottein <paul.bottein@gmail.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Klaas Schoute <klaas_schoute@hotmail.com>
Fix slave id equal to 0 (#136263)
2025-01-24 09:50:20 +01:00
Thomas55555
5a30156372 Bump aioautomower to 2025.1.1 (#136365) 2025-01-23 22:38:38 -10:00
J. Nick Koston
f3074dc218 Bump aioharmony to 0.4.0 (#136398) 2025-01-23 22:24:12 -10:00
Franck Nijhof
223b437cb9 Bump version to 2025.1.4 2025-01-24 08:02:10 +00:00
Klaas Schoute
b9443fa204 Bump powerfox to v1.2.1 (#136366) 2025-01-24 08:01:52 +00:00
Joost Lekkerkerker
acbbb19788 Bump aiowithings to 3.1.5 (#136350) 2025-01-24 08:01:49 +00:00
Paul Bottein
7590a868b9 Update frontend to 20250109.2 (#136348) 2025-01-24 08:01:45 +00:00
Paul Bottein
4b13c20e74 Update frontend to 20250109.1 (#136339) 2025-01-24 08:01:42 +00:00
Åke Strandberg
4cf1b1a707 Avoid keyerror on incomplete api data in myuplink (#136333)
* Avoid keyerror

* Inject erroneous value in device point fixture

* Update diagnostics snapshot
2025-01-24 08:01:39 +00:00
Franck Nijhof
1f8129f4b8 Update peblar to v0.4.0 (#136329)
* Update peblar to v0.4.0

* Update snapshots
2025-01-24 08:01:35 +00:00
Yuxin Wang
2e4a19b058 Fallback to None for literal "Blank" serial number for APCUPSD integration (#136297)
* Fallback to None for Blank serial number

* Fix comments
2025-01-24 08:01:32 +00:00
Simon Lamon
0caa1ed825 Handle LinkPlay devices with no mac (#136272)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-24 08:01:28 +00:00
Claudio Ruggeri - CR-Tech
e7a4f5fd27 Fix slave id equal to 0 (#136263)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-24 08:00:49 +00:00
epenet
8b08cb9bc1 Use runtime_data in coolmaster (#136405)
* Use runtime_data in coolmaster

* Adjust test
2025-01-24 08:58:35 +01:00
Makrit
0512fc5e0c Handle width and height placeholders in the thumbnail URL (#136227) 2025-01-24 07:52:29 +00:00
G Johansson
8440a27152 Bump holidays to 0.65 (#136122) 2025-01-24 07:52:26 +00:00
Matt Doran
7af7219b01 Update Hydrawise maximum watering duration to meet the app limits (#136050)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-24 07:52:22 +00:00
Makrit
6a1279611d Handle width and height placeholders in the thumbnail URL (#136227) 2025-01-24 08:49:33 +01:00
G Johansson
e44cfa00af Remove deprecated 17track package sensor (#136389) 2025-01-24 08:43:18 +01:00
dependabot[bot]
90d95d935e Bump codecov/codecov-action from 5.2.0 to 5.3.0 (#136402)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-24 08:42:58 +01:00
dependabot[bot]
6854feeb40 Bump github/codeql-action from 3.28.3 to 3.28.4 (#136401)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-24 08:34:48 +01:00
Shay Levy
fe67069c91 Add translated action exceptions to LG webOS TV (#136397)
* Add translated action exceptions to LG webOS TV

* Apply suggestions from code review

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-24 02:07:24 +02:00
epenet
3bbcd37ec8 Use runtime_data in ccm15 (#136378) 2025-01-24 02:02:38 +02:00
epenet
c691f8cc1e Use runtime_data in comelit (#136384) 2025-01-24 01:50:36 +02:00
epenet
1593b40f52 Use runtime_data in daikin (#136376) 2025-01-24 01:49:31 +02:00
epenet
a70a9d2f76 Use runtime_data in coinbase (#136381) 2025-01-24 00:12:08 +01:00
Paulus Schoutsen
005ae3ace6 Allow LLMs to get calendar events from exposed calendars (#136304) 2025-01-23 17:54:04 -05:00
Michael Hansen
414fa4125e Don't translate state names in default agent responses (#136382)
Don't translate state names in responses
2025-01-23 16:03:48 -06:00
J. Nick Koston
a12255ea5d Migrate modbus to use HassKey (#136379) 2025-01-23 22:56:31 +01:00
Claudio Ruggeri - CR-Tech
5e34babc39 Fix slave id equal to 0 (#136263)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-23 11:12:02 -10:00
Hervé Cauwelier
0cd87cf3e9 holiday: asynchronously generate the entity name (#136354)
Asking the country translation was trigerring Babel to open a file, and
thus a blocking I/O.
2025-01-23 21:51:01 +01:00
Klaas Schoute
cd16a57e04 Bump powerfox to v1.2.1 (#136366) 2025-01-23 20:52:54 +01:00
Simon Lamon
b682495fda Handle LinkPlay devices with no mac (#136272)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-23 20:36:59 +01:00
Markus Lanthaler
2617575e18 Set Netgear device entities to unavailable when the device is not connected (#135362) 2025-01-23 20:23:03 +01:00
Andrew Sayre
507239c661 Incorporate ControllerManager into HEOS Coordinator (#136302)
* Integrate ControllerManager

* Test for uncovered

* Correct test docstring

* Cast entry before graph access

* Assert config_entry state in reauth

* Use implicit casting
2025-01-23 12:52:56 -06:00
J. Nick Koston
9d83bbfec6 Refactor modbus polling to prevent dupe updates and memory leak (#136211) 2025-01-23 19:52:40 +01:00
Steven B.
2466df2b78 Fix tplink deprecated entity cleanup (#136160) 2025-01-23 19:51:56 +01:00
Matt Doran
b2624e6274 Update Hydrawise maximum watering duration to meet the app limits (#136050)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-23 19:50:56 +01:00
Jan Bouwhuis
59d677ba3e Enable strict typing for incomfort integration (#136291)
* Enable strict typing for incomfort integration

* Comply to strict typing

* Wrap in bool
2025-01-23 19:21:39 +01:00
Chris
ac7b9d7639 Properly parse AirNow API data in coordinator (#136198) 2025-01-23 19:09:03 +01:00
Arie Catsman
c98df36b75 Bump pyenphase to 1.23.1 (#136200) 2025-01-23 19:05:57 +01:00
epenet
5803d44443 Cleanup hass.data in cloudflare (#136358) 2025-01-23 19:04:10 +01:00
Norbert Rittel
61694648fc Several fixes in user-facing strings of Renson integration actions (#136279) 2025-01-23 18:56:08 +01:00
epenet
21a83c4875 Use runtime_data in canary (#136357) 2025-01-23 18:53:04 +01:00
epenet
29c528ee54 Use runtime_data in bosch_shc (#136356) 2025-01-23 18:52:10 +01:00
epenet
8dba4affa9 Move single-use lovelace function (#136336) 2025-01-23 18:48:48 +01:00
Norbert Rittel
dae4b53cb7 Fix sentence-casing in isy994 integration strings, reword "lock user code" (#136316) 2025-01-23 18:38:56 +01:00
epenet
83e826219a Enable strict-typing in lovelace (#136327) 2025-01-23 18:37:58 +01:00
Jan Bouwhuis
33ce795695 Improve error handling for incomfort gateway (#136317) 2025-01-23 18:26:28 +01:00
Åke Strandberg
3da9c599dc Avoid keyerror on incomplete api data in myuplink (#136333)
* Avoid keyerror

* Inject erroneous value in device point fixture

* Update diagnostics snapshot
2025-01-23 19:04:00 +02:00
Åke Strandberg
025f70445b Bump myuplink lib to 0.7.0 (#136343) 2025-01-23 19:01:50 +02:00
Paul Bottein
d29572f3d0 Update frontend to 20250109.2 (#136348) 2025-01-23 17:18:00 +01:00
Joost Lekkerkerker
d8223a1771 Bump aiowithings to 3.1.5 (#136350) 2025-01-23 17:17:07 +01:00
Joost Lekkerkerker
132f418f92 Add reconfigure flow to Airgradient (#136324)
* Add reconfigure flow to Airgradient

* Update homeassistant/components/airgradient/strings.json

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-23 16:53:31 +02:00
Paul Bottein
093c41cd83 Update frontend to 20250109.1 (#136339) 2025-01-23 15:49:18 +01:00
Martin Hjelmare
dabcc6d55a Clean up remaining backup manager tests (#136335) 2025-01-23 15:23:44 +01:00
Norbert Rittel
5dfafd9f2e Replace key names with translatable friendly names in zwave_js (#136318)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-01-23 15:15:08 +01:00
Franck Nijhof
f6a040d598 Update peblar to v0.4.0 (#136329)
* Update peblar to v0.4.0

* Update snapshots
2025-01-23 15:02:30 +02:00
Shay Levy
66f945e852 Bump aiowebostv to 0.6.0 (#136206) 2025-01-23 13:51:24 +01:00
Joost Lekkerkerker
40ed0562bc Add translated action exceptions to Airgradient (#136322)
* Add translated action exceptions to Airgradient

* Add translated action exceptions to Airgradient
2025-01-23 14:48:46 +02:00
Gerben Jongerius
d6f6961674 Restructure the youless integration internals (#135842) 2025-01-23 13:35:21 +01:00
Joost Lekkerkerker
e57dafee6c Add parallel updates to Airgradient (#136323) 2025-01-23 13:35:53 +02:00
Abílio Costa
75738f2105 Add system_health the to Network component (#135514) 2025-01-23 12:30:46 +01:00
epenet
73bd21e0ab Use HassKey in lovelace (#136313)
* Use HassKey in lovelace

* Improve type hints

* docstring

* Rename constant
2025-01-23 11:26:18 +01:00
Joost Lekkerkerker
ae65a81188 Update Overseerr quality scale (#136260)
* Update Overseerr quality scale

* Update Overseerr quality scale

* Update Overseerr quality scale
2025-01-23 10:24:26 +01:00
epenet
10cfef1f3e Cleanup map references in lovelace (#136314)
* Cleanup map references in lovelace

* Cleanup fixtures
2025-01-23 10:10:37 +01:00
Fábio Domingues
8172afd9f4 Auto select thermostat preset when selecting temperature (#134146) 2025-01-23 09:41:29 +01:00
Christopher Fenner
40348890da Add heat pump supply pressure sensor in ViCare integration (#136265) 2025-01-23 09:15:24 +01:00
J. Nick Koston
b839a2e2bd Fix handling of non-supported devices in led-ble (#136300) 2025-01-23 09:09:11 +01:00
dependabot[bot]
f5542450c4 Bump codecov/codecov-action from 5.1.2 to 5.2.0 (#136306)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-23 09:06:13 +01:00
dependabot[bot]
be0a344642 Bump actions/attest-build-provenance from 2.1.0 to 2.2.0 (#136307)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-23 09:05:32 +01:00
dependabot[bot]
df036d3091 Bump dawidd6/action-download-artifact from 7 to 8 (#136309)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-23 09:05:10 +01:00
dependabot[bot]
9fc21c389a Bump github/codeql-action from 3.28.2 to 3.28.3 (#136308)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-23 09:01:39 +01:00
Norbert Rittel
595a7fbcd7 Fix grammar of OSO auth and action descriptions (#136312) 2025-01-23 08:58:33 +01:00
Dan Raper
95b49fd2bc Add time platform to ohme (#136289) 2025-01-23 08:20:03 +01:00
Nathan Spencer
90bd783fff Standardize DOMAIN usage in litterrobot tests (#136290)
* Standardize DOMAIN usage in litterrobot tests

* Fix additional DOMAIN references in tests

* Make platform domain usage more clear in tests
2025-01-23 08:17:59 +01:00
J. Nick Koston
75bdcee3e4 Bump led-ble to 1.1.4 (#136301) 2025-01-22 18:45:44 -10:00
J. Nick Koston
29ce89ee4f Bump zeroconf to 0.141.0 (#136292)
changelog: https://github.com/python-zeroconf/python-zeroconf/compare/0.140.1...0.141.0
2025-01-22 22:25:03 -06:00
J. Nick Koston
7afd1f8cf8 Avoid useless data conversion in sonos config flow (#136294)
We would convert the zeroconf data to a dict and pass
it to async_step_discovery which does nothing with it
2025-01-22 22:24:12 -06:00
J. Nick Koston
ce792f6fe9 Bump onvif-zeep-async to 3.2.5 (#136299) 2025-01-22 18:19:56 -10:00
Jeff Terrace
68b6a7c987 Add TP-Link Tapo pet detection to onvif parsers (#136303) 2025-01-22 18:19:09 -10:00
Yuxin Wang
43d8c0bb6e Fallback to None for literal "Blank" serial number for APCUPSD integration (#136297)
* Fallback to None for Blank serial number

* Fix comments
2025-01-22 22:10:52 -06:00
rwalker777
6fa4cbd3e1 Revert "Add Tuya based bluetooth lights" (#133386)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-22 18:04:39 -10:00
Jan Bouwhuis
ff7601e676 Bump incomfort-client to v0.6.7 (#136285)
* Bump incomfort-client to v0.6.7

* Fix mypy
2025-01-22 23:30:10 +01:00
Nathan Spencer
544c4a0583 Cleanup litterrobot sensor entity (#136287) 2025-01-22 23:03:50 +01:00
Petro31
4a7e009f27 Allow time triggers with offsets to use input_datetimes (#131550) 2025-01-22 21:57:13 +00:00
Thomas Lake
cad49453eb ping: Suppress ProcessLookupError on timeout (#134281) 2025-01-22 22:30:04 +01:00
epenet
3a493bb6c0 Improve type hints in benchmark script (#136259) 2025-01-22 22:29:00 +01:00
Nathan Spencer
33f966a12e Convert LitterRobotHub to a DataUpdateCoordinator (#136283) 2025-01-22 22:20:13 +01:00
Dan Raper
e3c836aa7d Add number platform to ohme (#136271)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-01-22 22:19:54 +01:00
Andrew Sayre
52f77626f7 Implement Coordinator for HEOS (initial plumbing) (#136205) 2025-01-22 22:12:05 +01:00
Nathan Spencer
dc24f83407 Cleanup litterrobot select entity (#136282) 2025-01-22 21:27:28 +01:00
J. Nick Koston
f8dc3d6624 Bump habluetooth to 3.12.0 (#136281) 2025-01-22 10:14:19 -10:00
Markus Adrario
ea1cec2525 Bump pyHomee to 1.2.3 (#136213)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-22 20:55:52 +01:00
Nathan Spencer
208805a930 Move brightness icon map to icons.json (#136201) 2025-01-22 20:49:11 +01:00
J. Nick Koston
66115ce695 Remove myself from ibeacon codeowners (#136280) 2025-01-22 09:37:07 -10:00
J. Nick Koston
dcb17d03af Bump bleak-esphome to 2.1.1 (#136277) 2025-01-22 20:36:31 +01:00
Simon Lamon
4203345550 Bump python-linkplay to v0.1.3 (#136267) 2025-01-22 09:02:01 -10:00
Maciej Bieniek
5f67461c26 Provide beta release note for Shelly RPC devices (#136154)
* Return beta release note for Shelly RPC devices

* Cleaning

* Fix test

* Move release note check
2025-01-22 21:00:42 +02:00
Arie Catsman
8c0515aff2 Set enphase_envoy CT Status flags entity_category to diagnostics. (#136241) 2025-01-22 21:00:12 +02:00
Joost Lekkerkerker
9f2a6af1ec Only add Overseerr event if we are push based (#136258) 2025-01-22 20:58:48 +02:00
Dan Raper
ad205aeea3 Bump ohmepy to 1.2.4 (#136270) 2025-01-22 19:29:08 +01:00
Erik Montnemery
ea9be01c7c Indicate in WS API when scheduling additional automatic backup (#136155) 2025-01-22 18:01:46 +00:00
Álvaro Fernández Rojas
4e494aa393 Allow multiple Airzone entries with different System IDs (#135397)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-22 17:41:58 +00:00
epenet
3bbd7daa7f Improve type hints in template helper (#136253) 2025-01-22 15:27:01 +00:00
Joost Lekkerkerker
7a78f87fa6 Clean up attributes of Overseerr event entity (#136251) 2025-01-22 15:17:57 +01:00
Joost Lekkerkerker
eb20a00aa2 Add reconfigure flow to Overseerr (#136248) 2025-01-22 14:55:17 +01:00
Huyuwei
4c8b4b36e5 Record IQS for Switchbot (#136058)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-22 14:27:13 +01:00
Joost Lekkerkerker
194d59df03 Add reauth flow to Overseerr (#136247) 2025-01-22 14:23:00 +01:00
Christopher Fenner
b90e3917a3 Bump PyViCare to 2.41.0 (#136231) 2025-01-22 07:08:32 -06:00
Norbert Rittel
06dc88f7b5 Replace field keys in descriptions with translatable friendly names (#136230)
Replace field keys in description with translatable names
2025-01-22 07:05:55 -06:00
Joost Lekkerkerker
5e63e02ebc Handle invalid auth in Overseerr (#136243) 2025-01-22 13:47:13 +01:00
Nathan Spencer
0b7ed7dcbd Add quality_scale file to litterrobot (#135904) 2025-01-22 13:17:59 +01:00
J. Nick Koston
a150e39922 Bump httpx to 0.28.1, httpcore to 1.0.7 along with required deps (#133840) 2025-01-22 12:50:00 +01:00
Shay Levy
2ca4c8aacf Update LG webOS TV IQS (#135509) 2025-01-22 12:42:18 +01:00
Thijs W.
99d1c51a3b Fix passing value to pymodbus low level function (#135108) 2025-01-22 12:33:21 +01:00
Ludovic BOUÉ
1ea6cba1f5 Handle empty string BatReplacementDescription from Matter attribute value (#134457) 2025-01-22 12:28:18 +01:00
Andrew Sayre
f4d6cb45e5 Add repeat feature to HEOS media player (#136180) 2025-01-22 12:25:56 +01:00
Norbert Rittel
a3cc68754f Make description of hdmi_cec.select_device action consistent (#136228)
The hdmi_cec.select_device action has an inconsistent description that causes wrong (machine) translations.

This commit brings it in line with all other actions in the integration.
2025-01-22 10:18:41 +01:00
Nathan Spencer
67ca9e45b5 Use kw_only attribute for remaining entity descriptions in litterrobot (#136202)
* Use kw_only attribute for binary sensor descriptions in litterrobot

* Update time.py with kw_only for litterrobot

* Wrap multiline lambda
2025-01-22 10:14:48 +01:00
J. Nick Koston
29f9c88041 Bump habluetooth to 3.11.2 (#136221) 2025-01-22 09:59:15 +01:00
J. Nick Koston
6ee4eb2280 Bump bluetooth-adapters to 0.21.1 (#136220) 2025-01-22 09:56:41 +01:00
Arie Catsman
03be8a039c Use icon translations for enphase_envoy. (#136190) 2025-01-22 09:54:45 +01:00
Jan Bouwhuis
b8632063f5 Add dhcp discovery to incomfort integration (#136027)
* Add dhcp discovery to incomfort integration

* Remove duplicate code

* Ensure confirmation when discovered via DHCP

* Validate hostname is not changed

* Fix test

* Create gateway device with unique_id

* Add tests for assertion on via device

* Add registered devices to allow dhcp updates

* Migrate existing entry with host match

* Always load gatewate device an check if exising entry is loaded

* Make isolated flow step for dhcp auth

* Suggestions from code review
2025-01-22 07:55:55 +01:00
dependabot[bot]
a511610f24 Bump github/codeql-action from 3.28.1 to 3.28.2 (#136225) 2025-01-22 07:53:32 +01:00
Marc Mueller
f822fd82bb Fix recorder fixture typing (#136174) 2025-01-21 18:18:05 -10:00
krakonos1602
ffcb4d676b Add Eve Thermo TRV Matter features (#135635)
* Add Eve Thermo Matter features

* Update homeassistant/components/matter/switch.py

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

* Update homeassistant/components/matter/switch.py

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

* Update homeassistant/components/matter/switch.py

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

* Add Eve Thermo Child lock test

* Update homeassistant/components/matter/switch.py

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

* Update homeassistant/components/matter/switch.py

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

* Implement thorough Child lock testing

* Apply suggestions from code review

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
2025-01-22 03:42:07 +01:00
J. Nick Koston
18ab882536 Bump bleak-esphome to 2.1.0 (#136214) 2025-01-21 14:58:20 -10:00
J. Diego Rodríguez Royo
386357d9bd Bump ollama to 0.4.7 (#136212) 2025-01-21 14:16:26 -10:00
J. Nick Koston
561e027dee Bump habluetooth to 3.10.0 (#136210) 2025-01-21 13:27:09 -10:00
Nathan Spencer
e7345dd44a Remove extra_state_attributes from Litter-Robot vacuum entities (#136196) 2025-01-22 00:49:43 +02:00
Norbert Rittel
940a0f85e9 Remove excessive newline codes from strings of nissan_leaf (#136197)
Just three occurrences of `\n." to remove.
2025-01-21 15:37:02 -06:00
Norbert Rittel
6130c2f676 Remove excessive newlines from envisalink strings (#136194)
Remove excessive newline codes from user-facing strings

Delete two occurrences of `\n.` from the strings.json file.
2025-01-21 15:35:45 -06:00
Nathan Spencer
b9537466fd Add button to reset Litter-Robot 4 (#136191) 2025-01-21 15:31:59 -06:00
J. Nick Koston
3bcef79562 Bump bleak-retry-connector to 3.8.0 (#136203) 2025-01-21 11:28:11 -10:00
Nathan Spencer
69900ed8cb Cleanup litterrobot switch entity (#136199) 2025-01-21 11:12:15 -10:00
Norbert Rittel
f274a3eb37 Fix sentence-casing in user-facing strings of nmap_tracker (#136195) 2025-01-21 21:33:11 +01:00
Abílio Costa
baf5061fba Add strings and state attrs for ZHA 3 Phase current (#132871)
* Add strings and state attrs for ZHA 3 Phase current

* Use lower case
2025-01-21 14:04:41 -05:00
Norbert Rittel
e4d19a41fd Fix casing and spelling in user-facing strings of homematicip_cloud (#136188)
- change all occurrences of "HomematicIP" to "Homematic IP" for consistency
- use sentence-casing for "access point" and "configuration"
- write all occurrences of "access point" in two words
- change "id" to uppercase "ID"
- Change abbreviation "hap" to "HAP" (Homematic access point)
- make one action description consistent with HA standard
- Reword config_output_path description to avoid starting with brackets
- change one occurrence of "home-assistant" to "Home Assistant"
2025-01-21 11:36:23 -06:00
Paulus Schoutsen
22e0b0e9a7 Voip migrate entities (#136140)
* Migrate VoIP entities

* Revert device name to host again
2025-01-21 11:12:30 -06:00
Andrew Sayre
dd31c2c832 Set PARALLEL_UPDATES for HEOS media_player (#136178)
Set PARALLEL_UPDATES
2025-01-21 16:18:34 +01:00
Andrew Sayre
9bf2996ea0 Update HEOS tests to not interact directly with integration internals (#136177) 2025-01-21 16:00:34 +01:00
epenet
b11b36b523 Add more util aliases to import conventions (#136153) 2025-01-21 15:58:23 +01:00
Erik Montnemery
3b79ded0b0 Use HassKey for hassio component data (#136172) 2025-01-21 15:52:46 +01:00
Duco Sebel
380c2ac600 Bumb python-homewizard-energy to 8.1.1 (#136170) 2025-01-21 08:47:42 -06:00
Huyuwei
b93907ab02 Add data_description to switchbot translations (#136148)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-21 15:12:09 +01:00
Markus Adrario
fb96ef99d0 Homee sensor (#135447)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-21 15:02:42 +01:00
Erik Montnemery
032940f1a9 Gate update.install backup parameter by supported feature (#136169) 2025-01-21 14:41:37 +01:00
Erik Montnemery
a2cbaef264 Prepare backup store to read version 2 (#136149) 2025-01-21 14:37:44 +01:00
Paulus Schoutsen
5b49ba563e Satellite announcement to track original media id (#136141) 2025-01-21 14:33:37 +01:00
Erik Montnemery
a60d2b69e3 Add service backup.create_automatic (#136152) 2025-01-21 12:40:54 +00:00
Mick Montorier-Aberman
33a2fa2c85 Add support for Bot in SwitchBot Cloud (#135606) 2025-01-21 12:08:38 +00:00
Arie Catsman
e822f5de6e Fix typo in enphase_envoy data description (#136164) 2025-01-21 12:43:17 +01:00
Norbert Rittel
e4219b617c Capitalize "Homematic" brand name and 2 more user string fixes (#136113)
Capitalize "Homematic" brand name and more user string fixes
2025-01-21 12:28:00 +02:00
Ville Skyttä
40eb8b91cc Adjust to recommended propcache.api import paths (#136150) 2025-01-21 10:58:22 +01:00
Maciej Bieniek
57b17472d7 Clean up entity registry imports in Shelly tests (#136159) 2025-01-21 11:47:15 +02:00
Franck Nijhof
6e4a21987b Merge branch 'master' into dev 2025-01-21 09:41:47 +00:00
Marcel van der Veldt
f422ad22c4 Add value is not to Matter discovery schema logic (#136157) 2025-01-21 10:15:32 +01:00
epenet
364556a7dd Prefer from...import...as over import...as in core tests (#136146) 2025-01-21 09:28:17 +01:00
fwestenberg
0254be78d6 Bump Devialet to 1.5.7 (#136114) 2025-01-21 08:46:32 +01:00
Erik Montnemery
fb4df00e3c Add support for custom weekly backup schedule (#136079)
* Add support for custom weekly backup schedule

* Rename the new flag to custom_days

* Make the store change backwards compatible

* Improve comments
2025-01-21 08:27:41 +01:00
Andrew Sayre
79a43b8a50 Update HEOS tests to not patch internals (#136136) 2025-01-21 08:26:34 +01:00
Brett Adams
f6b444b24b Fix buttons in Teslemetry (#136142) 2025-01-21 08:06:18 +01:00
dependabot[bot]
a73ab4145a Bump actions/stale from 9.0.0 to 9.1.0 (#136145) 2025-01-21 08:02:31 +01:00
cdnninja
ac59203279 Remove not needed warning in Z-Wave (#136006)
* Remove unneeded logging

* ruff correction
2025-01-21 02:25:53 +01:00
Arie Catsman
24e6441806 Add data descriptions for enphase_envoy config flows. (#136120) 2025-01-20 18:47:33 -06:00
Allen Porter
0035c7b1fe Add myself to Roborock codeowners (#136134) 2025-01-21 01:22:50 +01:00
Joris Pelgröm
09ef4d9b05 Bump letpot to 0.3.0 (#136133) 2025-01-21 00:52:21 +01:00
G Johansson
b8ed80328a Bump holidays to 0.65 (#136122) 2025-01-20 16:59:12 -06:00
Arie Catsman
ba2c8646e9 Add scheduled envoy firmware checks to enphase_envoy coordinator (#136102)
* Add scheduled envoy firmware checks to enphase_envoy coordinator

* Set firmware scantime to 4 hours and split test in 2
2025-01-20 16:58:10 -06:00
Maciej Bieniek
11d44e608b Add additional entities for Shelly BLU TRV (#135244)
* Add valve position sensor

* Add valve position and external sensor temperature numbers

* Fix method name

* Better name

* Add remove condition

* Add calibration binary sensor

* Add battery and signal strength sensors

* Remove condition from ShellyRpcEntity

* Typo

* Add get_entity_class helper

* Add tests

* Use snapshots in tests
2025-01-21 00:11:20 +02:00
Andrew Sayre
d7ec99de7d Remove yaml config fixture from HEOS tests (#136123) 2025-01-20 22:18:46 +01:00
Sid
24610e4b9f Enable Ruff B035 (#135883) 2025-01-20 21:09:28 +01:00
Andrew Sayre
dde6dc0421 Raise exceptions in HEOS service actions (#136049)
* Raise errors instead of log

* Correct docstring typo
2025-01-20 13:29:57 -06:00
Joost Lekkerkerker
a4d2fe2d89 Bump python-overseerr to 0.6.0 (#136104) 2025-01-20 13:17:03 -06:00
Shay Levy
ad6d54dfd2 Bump ayla-iot-unofficial to 1.4.5 (#136099) 2025-01-20 13:13:32 -06:00
Joost Lekkerkerker
d404d619d0 Add icon to overseerr (#136110) 2025-01-20 13:00:59 -06:00
Sid
4c008a5cb5 Fix upload service response for google_photos (#136106) 2025-01-20 13:00:02 -06:00
Jan Bouwhuis
e7a635abc8 Fix index in incomfort diagnostics generator (#136108) 2025-01-20 19:53:04 +01:00
Andrew Sayre
45e00eb13d Add integration_type to HEOS (#136105) 2025-01-20 19:51:26 +01:00
Shay Levy
8d99a54656 Bump aiowebostv to 0.5.0 (#136097) 2025-01-20 08:31:45 -10:00
Steven B.
a84335ae6d Enable dynamic child devices for tplink module entities (#135822)
Add dynamic child device handling to tplink integration for module based entities. For child devices that could be added/removed to hubs.

This address the module based platforms. #135229 addressed feature based platforms.
2025-01-20 19:13:14 +01:00
Maikel Punie
cf33671718 Bump velbusaio to 2025.1.1 (#136089) 2025-01-20 19:41:49 +02:00
Sid
83b0d5a0b9 Enable Ruff B024 (#136088) 2025-01-20 19:14:50 +02:00
Joost Lekkerkerker
3f8f206c53 Add diagnostics to Overseerr (#136094) 2025-01-20 19:13:33 +02:00
Joost Lekkerkerker
63f14b9487 Fix Overseerr event types translations (#136096) 2025-01-20 19:12:13 +02:00
Franck Nijhof
3e1d13b6ad 2025.1.3 (#136092) 2025-01-20 18:04:03 +01:00
Marc Mueller
af02dbf0cb Update pylint to 3.3.3 and astroid to 3.3.8 (#136090) 2025-01-20 06:52:18 -10:00
Robert Resch
05c7cb5f32 Bump uv to 0.5.21 (#136086) 2025-01-20 17:21:17 +01:00
Franck Nijhof
d9e6549ad5 Bump version to 2025.1.3 2025-01-20 16:03:47 +00:00
Erik Montnemery
3c534a73f5 Always include SSL folder in backups (#136080) 2025-01-20 16:03:35 +00:00
Robert Resch
92b786e8cf Bump deebot-client to 11.0.0 (#136073) 2025-01-20 16:03:32 +00:00
Joost Lekkerkerker
4ed027b1cc Bump yt-dlp to 2025.01.15 (#136072) 2025-01-20 16:03:29 +00:00
J. Nick Koston
b9b9322c91 Bump onvif-zeep-async to 3.2.3 (#136022) 2025-01-20 16:03:26 +00:00
Scott K Logan
3922b8eb80 Bump aioraven to 0.7.1 (#136017) 2025-01-20 16:03:23 +00:00
J. Nick Koston
5d1e2d17da Handle invalid datetime in onvif (#136014) 2025-01-20 16:03:20 +00:00
Joakim Plate
b1445e5926 Correct type for off delay in rfxtrx (#135994) 2025-01-20 16:03:17 +00:00
Joost Lekkerkerker
8101fee9bb Fix switchbot cloud library logger (#135987) 2025-01-20 16:03:13 +00:00
J. Nick Koston
670371ff38 Bump aiooui to 0.1.9 (#135956) 2025-01-20 16:02:24 +00:00
J. Nick Koston
f8eb42a094 Bump aiooui to 0.1.8 (#135945) 2025-01-20 16:00:39 +00:00
Matthias Alphart
ca891bfc3e Update knx-frontend to 2025.1.18.164225 (#135941) 2025-01-20 15:58:44 +00:00
Glenn Vandeuren (aka Iondependent)
6da6de6a35 Update NHC lib to v0.3.4 (#135923)
Update NHC to v0.3.4
2025-01-20 15:58:40 +00:00
Glenn Vandeuren (aka Iondependent)
1bf1804492 Round brightness in Niko Home Control (#135920) 2025-01-20 15:58:37 +00:00
J. Nick Koston
11205f1c9d Bump onvif-zeep-async to 3.2.2 (#135898) 2025-01-20 15:58:34 +00:00
J. Nick Koston
84b3db1674 Prevent HomeKit from going unavailable when min/max is reversed (#135892) 2025-01-20 15:58:30 +00:00
Raphael Hehl
a42c2b2986 Remove device_class from NFC and fingerprint event descriptions (#135867) 2025-01-20 15:58:27 +00:00
Álvaro Fernández Rojas
480045887a Update aioairzone to v0.9.9 (#135866)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-20 15:58:23 +00:00
J. Nick Koston
4f5235cbd4 Handle invalid HS color values in HomeKit Bridge (#135739) 2025-01-20 15:58:20 +00:00
Joost Lekkerkerker
83ab6b8ea2 Add reauthentication to SmartThings (#135673)
* Add reauthentication to SmartThings

* Add reauthentication to SmartThings

* Add reauthentication to SmartThings

* Add reauthentication to SmartThings
2025-01-20 15:58:16 +00:00
Jan Bouwhuis
cc0989b50e Fix mqtt number state validation (#135621) 2025-01-20 15:58:12 +00:00
Glenn Waters
44046c5f83 Bump elkm1-lib to 2.2.11 (#135616) 2025-01-20 15:58:09 +00:00
Joost Lekkerkerker
0bd03346e8 Use device supplied ranges in LaMetric (#135590) 2025-01-20 15:58:05 +00:00
Joost Lekkerkerker
c6cde13615 Bump demetriek to 1.2.0 (#135580) 2025-01-20 15:58:02 +00:00
Michael Hansen
0e37e04928 Use STT/TTS languages for LLM fallback (#135533) 2025-01-20 15:57:59 +00:00
Artur Pragacz
bef545259e Fix referenced objects in script sequences (#135499) 2025-01-20 15:57:55 +00:00
Khole
d77ec8ffbe Replace pyhiveapi with pyhive-integration (#135482) 2025-01-20 15:57:52 +00:00
Mick Vleeshouwer
75a1a46a49 Fix incorrect cast in HitachiAirToWaterHeatingZone in Overkiz (#135468) 2025-01-20 15:57:48 +00:00
Ravaka Razafimanantsoa
2b636423d9 Bump switchbot-api to 2.3.1 (#135451) 2025-01-20 15:57:45 +00:00
Norbert Rittel
ed4c54a700 Fix descriptions of send_message action of Bring! integration (#135446)
* Make "Urgent message" selector consistent, use "Bring!" as name

- Replace one occurrence of "bring" with the brand name "Bring!"
- Change description of action to third-person singular for consistency in Home Assistant
- Make all occurrences of the selector "Urgent message" consistent (in sentence case) so they all get consistent translations, too
- Change one related error message to refer to the UI name of the required "Article" field

* Changed ` to '  to avoid Regex problems

* Reverted change to notify_missing_argument_item

Reverted to avoid failing test

* Reverted change to "bring"

* Add "is" to description of "Article"

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

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-01-20 15:57:42 +00:00
Joost Lekkerkerker
1d22fa9b45 Actually use translated entity names in Lametric (#135381) 2025-01-20 15:57:38 +00:00
Quentame
5356ffa539 Bump Freebox to 1.2.2 (#135313) 2025-01-20 15:57:35 +00:00
epenet
0660eae6f4 Fix missing comma in ollama MODEL_NAMES (#135262) 2025-01-20 15:57:32 +00:00
adam-the-hero
56f54cdccf Fix Watergate Power supply mode description and MQTT/Wifi uptimes (#135085) 2025-01-20 15:57:28 +00:00
Brett Adams
48c23c2e79 Bump pyaussiebb to 0.1.5 (#134943)
Bump
2025-01-20 15:57:25 +00:00
Renier Moorcroft
93c5915faa Image entity key error when camera is ignored in EZVIZ (#134343) 2025-01-20 15:57:22 +00:00
dcmeglio
8865fc0c33 Gracefully handle webhook unsubscription if error occurs while contacting Withings (#134271) 2025-01-20 15:57:19 +00:00
Matthew FitzGerald-Chamberlain
9680abf51e Aprilaire - Fix humidifier showing when it is not available (#133984) 2025-01-20 15:57:15 +00:00
Konrad Vité
c687a6f669 Fix DiscoveryFlowHandler when discovery_function returns bool (#133563)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-20 15:57:02 +00:00
Joost Lekkerkerker
3630c8b8ed Set configuration url to overseerr instance (#136085) 2025-01-20 16:25:06 +01:00
Marc Mueller
29b7d5c2e4 Improve conversation typing (#136084) 2025-01-20 15:32:18 +01:00
Erik Montnemery
a7d5e52ffe Always include SSL folder in backups (#136080) 2025-01-20 15:21:34 +01:00
Abílio Costa
3e716a1308 Use fixtures for Network component tests (#135220) 2025-01-20 15:19:17 +01:00
Paul Donohue
63d294e58e Prevent pylint out-of-memory failures (#136020) 2025-01-20 15:00:32 +01:00
Norbert Rittel
9730ac4e72 Replace targets key with UI name 'Targets' in media_player.join action (#136063) 2025-01-20 14:58:53 +01:00
Norbert Rittel
ea82c4974e Fix spelling of "ID" in hyperion user strings (#136082) 2025-01-20 14:53:41 +01:00
epenet
3342904330 Use new ServiceInfo location in core tests (#136067) 2025-01-20 14:04:58 +01:00
Norbert Rittel
077fbb91c0 Improve user interface strings in opentherm_gw (#136078) 2025-01-20 12:28:30 +00:00
epenet
c5efad3a2d Use new ServiceInfo location in component tests (part 4) (#136065) 2025-01-20 13:19:17 +01:00
epenet
af40b6524e Use new ServiceInfo location in component tests (part 3) (#136064) 2025-01-20 13:16:59 +01:00
epenet
fe010289b4 Use new ServiceInfo location in component tests (part 2) (#136062) 2025-01-20 13:13:45 +01:00
epenet
64500e837f Use new ServiceInfo location in component tests (part 1) (#136057) 2025-01-20 13:09:34 +01:00
Erik Montnemery
760168de83 Allow backup writer to update progress during restore (#135975)
* Allow backup writer to update progress during restore

* Clarify comment
2025-01-20 12:58:17 +01:00
Erik Montnemery
43da828a51 Make the time for automated backups configurable (#135825)
* Make the time for automated backups configurable

* Store time as a string, use None to indicate default time

* Don't add jitter if the time is set by user

* Include time of next automatic backup in response to backup/info

* Update tests

* Rename recurrence to state

* Include scheduled backup time in backup/config/info response

* Address review comments

* Update cloud test

* Add test for store migration

* Address review comments
2025-01-20 12:57:46 +01:00
Robert Resch
8020bec47b Bump deebot-client to 11.0.0 (#136073) 2025-01-20 12:55:09 +01:00
Norbert Rittel
9e40b7f7f4 Fix casing of "client" and "ID" in transmission integration (#136071) 2025-01-20 12:50:53 +01:00
Joost Lekkerkerker
e27a259541 Bump yt-dlp to 2025.01.15 (#136072) 2025-01-20 12:50:15 +01:00
epenet
f7f6c1163d Use new SsdpServiceInfo location in remaining components (#136053) 2025-01-20 11:40:00 +01:00
Artur Pragacz
877e44e3c9 Remove redundant device update code (#134100)
Remove redundant device update steps
2025-01-20 09:37:32 +01:00
Manu
ff80a7c5bc Add reconfiguration flow to Habitica (#136038) 2025-01-20 09:25:45 +01:00
Manu
9e37c0dc8f Add diagnostics platform to IronOS integration (#136040) 2025-01-20 08:12:42 +01:00
Paulus Schoutsen
85f10cf60a Use LLM fallback when local matching matches intent but not targets (#136045)
LLM fallback to be used when local matching matches intent but finds no targets
2025-01-20 02:06:06 -05:00
Joost Lekkerkerker
53ad02a1eb Enable RUF032 (#135836) 2025-01-20 08:05:33 +01:00
J. Nick Koston
be2c592b17 Bump habluetooth to 3.9.2 (#136042) 2025-01-20 08:01:44 +01:00
J. Nick Koston
bf56583385 Bump thermopro-ble to 0.10.1 (#136041) 2025-01-19 16:50:30 -10:00
dependabot[bot]
fd0b57a357 Bump docker/build-push-action from 6.11.0 to 6.12.0 (#135749)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-19 22:57:51 +01:00
J. Nick Koston
38c709aa1b Bump onvif-zeep-async to 3.2.3 (#136022) 2025-01-19 11:12:08 -10:00
G Johansson
a98bb96325 Add reconfigure flow to Trafikverket Train (#136000) 2025-01-19 21:33:15 +01:00
G Johansson
2295e3779a Ensure entity platform in cover tests (#135917) 2025-01-19 21:29:28 +01:00
G Johansson
53f80e9759 Ensure entity platform in camera tests (#135918) 2025-01-19 21:28:50 +01:00
Joost Lekkerkerker
f5d35bca72 Implement cloudhooks for Overseerr (#134680) 2025-01-19 21:28:08 +01:00
Norbert Rittel
77221f53b3 Fix sentence-casing in PurpleAir integration strings (#135981) 2025-01-19 21:27:01 +01:00
jsuar
a2d76cac5a Fix Slack file upload (#135818)
* pgrade Slack integration to use AsyncWebClient and support files_upload_v2

- Replaced deprecated WebClient with AsyncWebClient throughout the integration.
- Removed the unsupported `run_async` parameter.
- Added a helper function to resolve channel names to channel IDs.
- Updated `_async_send_local_file_message` and `_async_send_remote_file_message` to handle Slack's new API requirements, including per-channel uploads.
- Updated dependency from slackclient==2.5.0 to slack-sdk>=3.0.0.
- Improved error handling and logging for channel resolution and file uploads.

* Fix test to use AsyncWebClient for Slack authentication flow

* Fix Slack authentication URL by removing the www subdomain

* Refactor Slack file upload functionality and add utility for file uploads
2025-01-19 21:09:04 +01:00
Joakim Plate
a69786f64f Set friendly name for PT2262 sensors to masked name (#135988) 2025-01-19 21:07:05 +01:00
Scott K Logan
2900baac04 Bump aioraven to 0.7.1 (#136017) 2025-01-19 21:05:34 +01:00
Duco Sebel
2092456c7e Bumb python-homewizard-energy to 8.1.0 (#136016) 2025-01-19 21:03:30 +01:00
Joakim Plate
2bedb2cadb Correct translation key for data bits in rfxtrx (#135990) 2025-01-19 20:43:47 +01:00
Marc Mueller
5329356f20 Update numpy to 2.2.2 (#135982) 2025-01-19 20:35:32 +01:00
Paulus Schoutsen
0c68854fdf Migrate tests from OpenAI to conversation integration (#135963) 2025-01-19 20:32:59 +01:00
David Knowles
8777dd9065 Bump pydrawise to 2025.1.0 (#135998) 2025-01-19 20:31:30 +01:00
J. Diego Rodríguez Royo
57294fa461 Do not base power switch state on appliance's operation state at Home Connect (#135932) 2025-01-19 20:24:48 +01:00
J. Nick Koston
3a078d5414 Handle invalid datetime in onvif (#136014) 2025-01-19 20:16:40 +01:00
Joakim Plate
568a27000d Correct type for off delay in rfxtrx (#135994) 2025-01-19 20:09:05 +01:00
Maikel Punie
4612f4da19 Fix velbus via devices (#135986) 2025-01-19 20:07:32 +01:00
Manu
ec45cb4939 Improve exception handling in Habitica integration (#135950) 2025-01-19 19:51:55 +01:00
Jan Bouwhuis
ccd7b1c21a Add incomfort heater serialnr to device info (#136012) 2025-01-19 19:51:04 +01:00
Norbert Rittel
3ee2dc9790 Make strings of create_scene action UI- and translation-friendly (#136004) 2025-01-19 19:43:47 +01:00
Jan Bouwhuis
889f699e5d Disable noisy diagnostic incomfort sensors by default (#135992) 2025-01-19 19:28:19 +01:00
Jan Bouwhuis
5ffae140af Add diagnostics feature to incomfort integration (#136009) 2025-01-19 19:27:36 +01:00
Jan Bouwhuis
04eb86e5a0 Cleanup incomfort translation strings (#135991) 2025-01-19 15:30:03 +01:00
Jan Bouwhuis
3077a4cdee Add re-configure flow incomfort integration (#135887)
* Add re-configure flow incomfort integration

* End with abort flow in reconfigure failure flow

* Apply parenthesis
2025-01-19 15:16:26 +01:00
Joost Lekkerkerker
02bf8447b3 Fix unset coordinator in Switchbot cloud (#135985) 2025-01-19 15:15:32 +01:00
Joost Lekkerkerker
cf29ef91ee Fix switchbot cloud library logger (#135987) 2025-01-19 15:15:21 +01:00
Andrew Sayre
439f22f584 Fix HEOS device information (#135940) 2025-01-19 15:07:00 +01:00
Jan Bouwhuis
b17c36eeff Add re-authentication flow to incomfort integration (#135861) 2025-01-19 14:26:21 +01:00
Mick Montorier-Aberman
41fe863b72 Refactor SwitchBot Cloud make_device_data (#135698) 2025-01-19 14:22:21 +01:00
Norbert Rittel
dfc4cdf785 Improve descriptions in list_notifications action, fix casing (#135838) 2025-01-19 13:43:35 +01:00
Christopher Fenner
654e111c23 Fix fan speed in auto mode in ViCare integration (#134256) 2025-01-19 13:39:38 +01:00
Norbert Rittel
9d5fe77b71 Remove unnecessary "title" keys to use default setup flow instead (#135512) 2025-01-19 13:34:22 +01:00
Manu
958b1e7759 Move integration setup to coordinator _async_setup in Bring (#135711) 2025-01-19 13:29:21 +01:00
Norbert Rittel
2f5545e7b8 Fix name and descriptions of actions in EZVIZ integration etc. (#135858) 2025-01-19 13:28:49 +01:00
Erwin Douna
15d57692d9 SMA add diagnostics (#135852) 2025-01-19 13:28:15 +01:00
Sid
a55bd593af Rework enigma2 tests (#135475) 2025-01-19 13:24:47 +01:00
Manuel Stahl
3978c4cdb3 Add type annotations to stiebel eltron component (#135228) 2025-01-19 13:21:59 +01:00
Norbert Rittel
4690aef8b8 Further clarify the meaning of Sensibo's Climate React mode (#135833)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-01-19 13:21:37 +01:00
Brett Adams
6292d6c0dc Add streaming to device tracker platform in Teslemetry (#135962)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-19 13:20:40 +01:00
Matthias Alphart
af0f416497 Fix KNX default state updater option (#135611) 2025-01-19 12:53:09 +01:00
Manu
acbb15a496 Set dependency-transparency and async-dependency in Habitica IQS (#135902) 2025-01-19 12:51:49 +01:00
Glenn Vandeuren (aka Iondependent)
9f3b39a2d2 Round brightness in Niko Home Control (#135920) 2025-01-19 12:51:05 +01:00
Norbert Rittel
5a91562d1d Fix grammar and plural handling in action descriptions (#135654) 2025-01-19 12:37:28 +01:00
J. Diego Rodríguez Royo
ac58494b55 Improve program related sensors at Home Connect (#135929) 2025-01-19 12:02:23 +01:00
J. Diego Rodríguez Royo
33d552e3f7 Add power switch only if it is available at Home Connect (#135930) 2025-01-19 11:58:38 +01:00
Norbert Rittel
f3222045ae Change 'device_id' to translatable 'device ID', fix typos in LCN (#135978) 2025-01-19 11:56:34 +01:00
J. Nick Koston
0d968267a2 Improve remote Bluetooth scanner manufacturer data (#135961)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-19 11:55:13 +01:00
cdnninja
85bea5b70e Vesync switch humidifier to property (#135949) 2025-01-19 11:43:16 +01:00
Erik Montnemery
02347d5d36 Improve backup store in tests (#135974) 2025-01-19 11:13:37 +01:00
Paulus Schoutsen
754de6f998 Add shared history for conversation agents (#135903)
* Add shared history for conversation agents

* Remove unused code

* Add support for native history items

* Store all assistant responses as assistant in history

* Add history support to DefaultAgent.async_handle_intents

* Make local fallback work

* Add default agent history

* Add history cleanup

* Add tests

* ChatHistory -> ChatSession

* Address comments

* Update snapshots
2025-01-18 22:33:03 -05:00
Norbert Rittel
32d7a23bff Fix duplicated "effect" in Speed field descriptions of flux_led (#135948) 2025-01-18 15:13:28 -10:00
J. Nick Koston
fe4e001fa5 Bump bluetooth-adapters to 0.21.0 (#135957) 2025-01-18 15:10:15 -10:00
J. Nick Koston
725d835fab Bump aiooui to 0.1.9 (#135956) 2025-01-18 15:01:55 -10:00
J. Nick Koston
640da1cc67 Bump aiooui to 0.1.8 (#135945) 2025-01-19 00:53:59 +01:00
Marc Mueller
6690b121c0 Fix unicode chars in zha tests (#135954) 2025-01-18 13:47:30 -10:00
Marc Mueller
8a3ef101e6 Replace additional deprecated USBServiceInfo imports (#135953) 2025-01-18 17:43:07 -06:00
J. Nick Koston
09ae388f4e Bump bleak-retry-connector to 3.7.0 (#135939) 2025-01-18 12:02:18 -10:00
Matthias Alphart
659450dac9 Update knx-frontend to 2025.1.18.164225 (#135941) 2025-01-18 22:33:41 +01:00
Álvaro Fernández Rojas
37c3a9546c Update aioairzone to v0.9.9 (#135866)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-18 10:57:54 -10:00
Norbert Rittel
b32c401c24 Fix inconsistently spelled occurrences of "ID" in telegram_bot integration (#135928)
* Make all occurrences of "ID" in telegram_bot consistent

- change all remaining occurrences of "id" or "Id" to the correct spelling "ID"
- change "chat_id" to the UI-friedly "chat ID"
- use "ID of the chat …" in descriptions, matching "ID of the message …"
- fix the edit_replymarkup action's description to also use "Edits …", matching all other descriptions with "Sends …" or "Edits …"

* Use translatable descriptions for the Timeout fields

Uses the description from the online documentation that can be translated while the current ones use the action name which makes it difficult to handle in other languages.
2025-01-18 14:54:44 -06:00
Marc Mueller
19e5b091c5 Use HassKey for assist_pipeline singleton (#135875) 2025-01-18 09:52:13 -10:00
Marc Mueller
24c50e0988 Fix aiodns DeprecationWarning in tests (#135921) 2025-01-18 08:04:01 -10:00
Joost Lekkerkerker
fe8a93d62f Add reauthentication to SmartThings (#135673)
* Add reauthentication to SmartThings

* Add reauthentication to SmartThings

* Add reauthentication to SmartThings

* Add reauthentication to SmartThings
2025-01-18 18:41:24 +01:00
Glenn Vandeuren (aka Iondependent)
b39c2719d7 Update NHC lib to v0.3.4 (#135923)
Update NHC to v0.3.4
2025-01-18 18:47:20 +02:00
Marc Mueller
0c9fd7c482 Fix DeprecationWarnings in mcp_server (#135927)
* Fix DeprecationWarnings in mcp_server

* Spelling
2025-01-18 18:43:35 +02:00
Marc Mueller
dedcef7230 Fix acmeda pytest usefixtures spelling (#135919) 2025-01-18 17:08:07 +01:00
Manu
595f49ee9f Set strict-typing in Habitica quality scale record (#135899)
* Set strict-typing in Habitica quality scale record

* cast
2025-01-18 16:35:35 +01:00
G Johansson
5a7b6cd7a0 Remove asserting name in tts test (no entity platform) (#135726)
* Ensure entity platform in tts tests

* Correct placement

* Remove name test

* Remove hass
2025-01-18 14:47:53 +01:00
Maciej Bieniek
f0c6b47522 Increase test coverage for IMGW-PIB (#135915) 2025-01-18 13:31:17 +01:00
Joris Pelgröm
d349c47694 Add reauth flow to LetPot integration (#135734) 2025-01-18 06:11:35 -06:00
Josef Zweck
f878465a9a Fix imgw_pib tests (#135913) 2025-01-18 06:07:28 -06:00
Nathan Spencer
81b7d01a7d Bump pylitterbot to 2024.0.0 (#135891) 2025-01-18 13:01:09 +01:00
Manu
f5dd3ef530 Increase test coverage in Habitica integration (#135896)
Add tests to Habitica integration
2025-01-18 12:59:23 +01:00
Brett Adams
88f16807a0 Bump Teslemetry Stream to 0.6.6 (#135905)
bump66
2025-01-18 12:38:20 +01:00
Manu
76d9bcbdfb Set parallel-updates in Habitica quality scale record (#135901) 2025-01-18 11:17:58 +01:00
tronikos
f01598aadd Use runtime_data in Opower (#135910)
* Use runtime_data in Opower

* Fix async_unload_entry

* Fix async_unload_entry

* fix
2025-01-18 11:14:31 +01:00
Josef Zweck
c56eee3639 Fix bmw_connected_drive tests (#135911) 2025-01-18 11:10:52 +01:00
tronikos
06d8bc658f Fix typo in Opower log message (#135909) 2025-01-18 10:39:40 +01:00
Noah Husby
f724ae9a01 Record IQS for Russound RNET (#134692) 2025-01-18 08:33:49 +01:00
J. Nick Koston
bbe897745e Bump onvif-zeep-async to 3.2.2 (#135898) 2025-01-17 19:30:21 -10:00
Ernst Klamer
089c9c41ba Add BThome hold press event (#135871)
* add hold_press

* add hold_press

* add hold_press

* add hold_press
2025-01-18 02:23:25 +02:00
J. Nick Koston
43fe4ebbbe Prevent HomeKit from going unavailable when min/max is reversed (#135892) 2025-01-17 14:08:17 -10:00
J. Nick Koston
fc1b6292cd Bump dbus-fast to 2.30.2 (#135874) 2025-01-17 13:05:18 -10:00
J. Nick Koston
174f3ca755 Bump ulid-transform to 1.2.0 (#135882) 2025-01-17 12:06:28 -10:00
J. Nick Koston
51d277fc0c Bump bluetooth-data-tools to 1.22.0 (#135879) 2025-01-17 12:06:01 -10:00
J. Nick Koston
b98e1a1d2f Bump habluetooth to 3.9.0 (#135877) 2025-01-17 12:05:41 -10:00
J. Nick Koston
a08e42399d Bump fnv-hash-fast to 1.2.2 (#135872) 2025-01-17 12:04:53 -10:00
epenet
2b0e383b2e Use new ServiceInfo location in zha (#135703) 2025-01-17 22:56:59 +01:00
J. Nick Koston
9868138fc4 Bump aioesphomeapi to 28.0.1 (#135869) 2025-01-17 11:53:29 -10:00
epenet
c601170b1d Use new ServiceInfo location in devolo_home_network (#135690) 2025-01-17 21:01:05 +01:00
Raphael Hehl
5ea5413064 Remove device_class from NFC and fingerprint event descriptions (#135867) 2025-01-17 09:49:01 -10:00
Marc Mueller
abc256fb3e Add overload for async singleton call with HassKey (#134059) 2025-01-17 19:22:48 +01:00
G Johansson
2ec971ad9d Remove not needed name from config flow in SMHI (#134841) 2025-01-17 19:21:13 +01:00
Erik Montnemery
235fda55fe Validate config entry when adding or updating entity registry entry (#135067) 2025-01-17 19:18:13 +01:00
epenet
028a0d4eec Remove call to get_serial_by_id in homeassistant_sky_connect (#135751) 2025-01-17 19:10:56 +01:00
epenet
14f3868c26 Fix flaky test in acmeda (#135846) 2025-01-17 19:08:32 +01:00
Indu Prakash
54e4e8a7bb Fix humidifier on off status update (#135743) 2025-01-17 18:49:33 +01:00
Andre Lengwenus
a8cb618f96 Add missing data_descriptions to strings.json for LCN (#135674) 2025-01-17 18:09:19 +01:00
Norbert Rittel
ca5aca4ab9 Fix "set" / "sets" in action names and descriptions, spelling of "dB" (#135659) 2025-01-17 18:08:48 +01:00
Guido Schmitz
ea7e53d10d Add zeroconf dependency to devolo Home Network manifest (#135708) 2025-01-17 18:08:26 +01:00
Norbert Rittel
c7de3112fb Fix several issues in a string of IHC integration (#135618) 2025-01-17 18:02:33 +01:00
hahn-th
4a64c797d4 Add doorbell event to homematicip_cloud (#133269) 2025-01-17 17:54:15 +01:00
Max R
2a514ebc3f Update yolink "play on speaker hub" action to allow optional values (to match YoLink API) (#133099) 2025-01-17 17:43:47 +01:00
jesperraemaekers
44b577cadb Bump Weheat to 2025.1.15 (#135626) 2025-01-17 17:43:15 +01:00
Brett Adams
24bb623567 Add streaming to Teslemetry cover platform (#135660) 2025-01-17 17:38:03 +01:00
tronikos
9e0df89bee Log errors in opower (#135497) 2025-01-17 17:33:48 +01:00
Norbert Rittel
fb309a3f98 Fix description of "x10_all_units_off" action (#135000) 2025-01-17 17:18:38 +01:00
Mick Vleeshouwer
829d3bf621 Add support for EvoHomeController in Overkiz (#133777) 2025-01-17 17:13:25 +01:00
Bouwe Westerdijk
a2afc1b670 Plugwise test-code improvements (#134193) 2025-01-17 17:12:09 +01:00
Norbert Rittel
7b413b5faf Clarify action descriptions regarding Lost device sound and state (#134277) 2025-01-17 16:56:14 +01:00
Markus Adrario
734d1898cf Homee: fix cover if it has no up/down attribute (#135563) 2025-01-17 15:51:18 +01:00
Joost Lekkerkerker
c651e2b3c3 Enable RUF101 (#135835) 2025-01-17 13:01:07 +01:00
Joost Lekkerkerker
ef8b8fbbaa Enable RUF023 (#135830) 2025-01-17 12:28:27 +01:00
Renier Moorcroft
23e04ced9c Image entity key error when camera is ignored in EZVIZ (#134343) 2025-01-17 12:27:44 +01:00
Noah Husby
13a7ad759c Add media position & seek to Russound RIO (#134372) 2025-01-17 12:03:52 +01:00
Andre Lengwenus
99d250f222 Set target value on LCN regulator lock (#133870) 2025-01-17 11:15:42 +01:00
Brett Adams
689d7d3cd9 Add Energy History to Tesla Fleet (#126878)
Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: JEMcats <hurst-status09@icloud.com>
Co-authored-by: JEMcats <jakobmattheis@icloud.com>
2025-01-17 10:34:35 +01:00
Joost Lekkerkerker
b4f4b06f29 Enable RUF021 (#135832) 2025-01-17 10:20:45 +01:00
Simon
85b4be2f16 Add model option to speak action for ElevenLabs (#133902) 2025-01-17 10:18:07 +01:00
dcmeglio
5e0bbf65e4 Gracefully handle webhook unsubscription if error occurs while contacting Withings (#134271) 2025-01-17 10:14:41 +01:00
Richard Kroegel
514b74096a Improve BMW test quality (#133704) 2025-01-17 09:58:46 +01:00
Richard Kroegel
b1d8994751 Add BMW quality scale details (#132017)
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2025-01-17 09:49:58 +01:00
J. Nick Koston
c215aee940 Reduce duplicate code in the Bluetooth WebSocket API (#135808) 2025-01-17 10:30:14 +02:00
Manu
5f9457ab6e Update quality scale docs-installation-parameters rule for IronOS integration (#133318) 2025-01-17 09:23:04 +01:00
Redge
76cdfe861c Add 'silent' to HTML5_SHOWNOTIFICATION_PARAMETERS (#135709) 2025-01-17 09:16:45 +01:00
epenet
bd91cc4bdc Use new ServiceInfo location in bosch_shc (#135689) 2025-01-17 09:15:20 +01:00
G Johansson
cde3ba5504 Ensure entity platform in dsmr_reader tests (#135718) 2025-01-17 09:14:40 +01:00
G Johansson
21256cab85 Ensure entity platform in google_assistant tests (#135719) 2025-01-17 09:14:25 +01:00
G Johansson
d62a66eaf2 Ensure entity platform in google_wifi tests (#135720) 2025-01-17 09:14:08 +01:00
Marc Mueller
46b17b539c Use new syntax for TypeVar defaults (#135780) 2025-01-17 09:12:52 +01:00
G Johansson
6aed2dcc0f Ensure entity platform in homeassistant tests (#135721) 2025-01-17 09:11:07 +01:00
G Johansson
7430238c0a Ensure entity platform in kira tests (#135723) 2025-01-17 09:10:47 +01:00
G Johansson
cd88913daf Ensure entity platform in mochad tests (#135725) 2025-01-17 09:10:29 +01:00
G Johansson
8e39c65759 Ensure entity platform in universal tests (#135727) 2025-01-17 09:10:09 +01:00
G Johansson
0f8785d8bc Ensure entity platform in alert tests (#135714) 2025-01-17 08:44:40 +01:00
Petro31
566f514a75 Allow is_state_attr to check attributes for None (#132879) 2025-01-17 08:41:10 +01:00
G Johansson
f3683f0b5e Ensure entity platform in blackbird tests (#135715) 2025-01-17 08:34:47 +01:00
J. Nick Koston
a39137c3fc Bump zeroconf to 0.140.1 (#135815) 2025-01-17 08:29:44 +01:00
J. Nick Koston
c2b6c4b4fc Small cleanups to lifx services to reduce code (#135817) 2025-01-16 19:39:48 -10:00
J. Nick Koston
daac986e00 Bump dbus-fast to 2.29.0 (#135804) 2025-01-16 15:10:01 -10:00
Avi Miller
02ec1d1b71 New paint_theme service added to the LIFX integration (#135667)
* New paint_theme service added to the LIFX integration

Signed-off-by: Avi Miller <me@dje.li>
Co-authored-by: J. Nick Koston <nick@koston.org>

* Move effect selection into a dispatch table

Signed-off-by: Avi Miller <me@dje.li>

---------

Signed-off-by: Avi Miller <me@dje.li>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-16 14:41:09 -10:00
Erwin Douna
632c166201 SMA update code owners (#135812)
Update code owners
2025-01-16 23:48:40 +01:00
Joost Lekkerkerker
8b12f5270e Enable more RUF rules (#135770)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-01-16 23:43:14 +01:00
Maciej Bieniek
b0d3aa1c34 Bump imgw_pib to version 1.0.9 and remove hydrological detail entities (#134668) 2025-01-16 23:42:03 +01:00
Konrad Vité
e6c696933f Fix DiscoveryFlowHandler when discovery_function returns bool (#133563)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-01-16 12:31:16 -10:00
G Johansson
e5164496cf Ensure entity platform in vacuum tests (#135786) 2025-01-16 23:27:54 +01:00
G Johansson
88c3be4ecf Ensure entity platform in light tests (#135787) 2025-01-16 23:26:50 +01:00
G Johansson
619917c679 Ensure entity platform in media_player tests (#135788) 2025-01-16 23:26:18 +01:00
Norbert Rittel
e433c2250c Several strings fixes in the emoncms integration (#135792) 2025-01-16 23:22:28 +01:00
Erwin Douna
59429dea39 Bump SMA to 0.7.5 (#135799) 2025-01-16 23:20:36 +01:00
Sid
3e4d92f6a7 Bump eheimdigital to 1.0.5 (#135802) 2025-01-16 23:19:41 +01:00
Norbert Rittel
a3d24f2472 Fix spelling of "API" and use consistent term "API token" (#135795) 2025-01-16 23:18:54 +01:00
Erwin Douna
46c5591336 SMA add serial number in DeviceInfo (#135809)
SSIA
2025-01-16 23:17:42 +01:00
Norbert Rittel
99f24ca59c Fix service description to match HA style, fix casing (#135797) 2025-01-16 23:15:07 +01:00
Erik Montnemery
1fee0a5aa2 Improve backup store in tests (#135798) 2025-01-16 23:14:19 +01:00
Shay Levy
ef34a33a7b Remove misleading "Current" in NUT power sensor names (#135800) 2025-01-16 23:07:43 +01:00
G Johansson
bb505baae7 Ensure entity platform in core config tests (#135729) 2025-01-16 12:06:20 -10:00
Jan Bouwhuis
b446eaf2d0 Improve incomfort test coverage (#135806) 2025-01-16 23:04:57 +01:00
Jan Bouwhuis
60d51bf4ad Assign entity_category for incomfort entities (#135807) 2025-01-16 23:03:48 +01:00
puddly
9b66ba61a8 USB device add/remove callbacks (#131224) 2025-01-16 11:53:15 -10:00
J. Nick Koston
eb651a8a71 Bump govee-ble to 0.42.0 (#135801) 2025-01-16 11:37:12 -10:00
Avi Miller
1b520e37e2 Update aiolifx-themes to 0.6.4 (#135805)
* Restore support for Python 3.12

Signed-off-by: Avi Miller <me@dje.li>

* Bump aiolifx-themes to 0.6.4

Signed-off-by: Avi Miller <me@dje.li>

---------

Signed-off-by: Avi Miller <me@dje.li>
2025-01-16 23:33:54 +02:00
puddly
9331b1572c Implement a polling fallback for USB monitor (#130918) 2025-01-16 11:14:53 -10:00
Paulus Schoutsen
762bc7b8d1 Add broadcast intent (#135337) 2025-01-16 14:41:53 -06:00
J. Nick Koston
6e255060c6 Add Bluetooth config entries for remote scanners (#135543) 2025-01-16 09:52:52 -10:00
Steve HOLWEG
93b3d76ee2 Add button to move netatmo cover to preferred position (#134722) 2025-01-16 18:34:30 +00:00
Markus Jacobsen
e188d9a00c Fix Bang & Olufsen event testing (#135707)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-01-16 18:06:18 +00:00
Gerben Jongerius
d908d2ab55 Bump youless-api to 2.2.0 (#135781)
Bump version youless 2.2.0
2025-01-16 17:44:09 +02:00
Duco Sebel
55bde60f1a Move HomeWizard config options to class (#135778) 2025-01-16 15:44:59 +01:00
Jan Bouwhuis
5ca68cb273 Improve incomfort coordinator logging (#135777) 2025-01-16 15:24:40 +01:00
Erik Montnemery
2e189480a5 Improve backup decrypt exceptions (#135765) 2025-01-16 16:07:13 +02:00
Joost Lekkerkerker
eb98f110d3 Fix Vicare patch (#135773) 2025-01-16 15:41:24 +02:00
Paulus Schoutsen
5cf56207fe Add temperature and humidity entities to area registry (#135423)
* Add temperature and humidity entities to area registry

* Fix service test

* Add validation

* ABC

* More ABC

* More ABC 2

* Fix tests

* ABC 3

* ABC 4
2025-01-16 08:25:26 -05:00
Joost Lekkerkerker
9f7a38f189 Enable RUF022 (#135767) 2025-01-16 13:48:24 +01:00
epenet
476935050a Use new ServiceInfo location in dlna_dmr (#135691) 2025-01-16 13:41:09 +01:00
epenet
27c2f2333e Use new ServiceInfo location in esphome (#135692) 2025-01-16 13:40:13 +01:00
Christopher Fenner
40a3e19ce5 Add further ventilation-related sensors to ViCare (#131496) 2025-01-16 13:38:40 +01:00
Matthew FitzGerald-Chamberlain
9d7706c9be Aprilaire - Fix humidifier showing when it is not available (#133984) 2025-01-16 13:37:44 +01:00
Max Cabrajac
a67bc12bb8 Change AdGuard Home URL field validator to accept paths (#127957) 2025-01-16 13:34:30 +01:00
Erik Montnemery
6cbe18ebbd Bump securetar to 2025.1.3 (#135762)
* Bump securetar to 2025.1.3

* Remove outdated fixture
2025-01-16 13:26:52 +01:00
epenet
1cff45b8b7 Use new ServiceInfo location in apple_tv (#135688) 2025-01-16 13:20:46 +01:00
Joost Lekkerkerker
fc39b6792c Enable RUF100 (#135760) 2025-01-16 13:06:33 +01:00
DrDonoso
3638d25f6a Add message_thread_id to telegram_text and telegram_command events (#130738)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-16 13:03:42 +01:00
Martin Hjelmare
421f9aa638 Avoid using the backup manager in restore tests (#135757)
* Fix typing

* Refactor test restore backup

* Refactor test restore backup wrong password

* Refactor test restore backup wrong parameters

* Update manager state after rebase

* Remove not needed patch
2025-01-16 12:49:27 +01:00
Simone Rescio
9a1b965c7f Fix rmtree in translation script on MacOS (#129352) 2025-01-16 12:39:37 +01:00
Erik Montnemery
9db6be11f7 Support decrypting backups when downloading (#135728)
* Support decrypting backups when downloading

* Close stream

* Use test helper

* Wait for worker to finish

* Simplify

* Update backup.json

* Simplify

* Revert change from the future
2025-01-16 12:36:12 +01:00
Tyron
6fdccda225 Return Chat IDs on Telegram Bot (#131274)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-16 12:27:19 +01:00
epenet
1172887c80 Use new ServiceInfo location in zwave_js (#135704) 2025-01-16 10:55:48 +01:00
epenet
f3b7317373 Use new ServiceInfo location in homeassistant_sky_connect (#135693) 2025-01-16 10:55:14 +01:00
puddly
edddd6edfb Reduce USB rescan cooldown from 1 minute to 10 seconds (#135712)
* Reduce USB rescan cooldown from 1 minute to 1 second

* Increase cooldown to 10s as a middle ground
2025-01-16 11:08:38 +02:00
J. Nick Koston
016a274698 Bump govee-ble to 0.41.0 (#135750)
Adds support for the H5130 pressure/presence sensor

changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.40.0...v0.41.0
2025-01-16 10:48:29 +02:00
G Johansson
c89d60fb5d Ensure entity platform in light tests (#135724) 2025-01-16 09:21:49 +01:00
dotvav
b5a7d0258a Palazzetti integration: Update integration quality scale (#135752)
Update integration quality scale
2025-01-16 09:19:37 +01:00
Norbert Rittel
137666982d Reword action descriptions to match Home Assistant style (#135733)
* Reword action descriptions to match Home Assistant style

This commit changes the two action descriptions of the Husqvarna Automower integration to use the descriptive language that is standard in Home Assistant.

This helps in fixing or preventing wrong (machine) translations.

This is done using the wording from the online documentation by using "Lets the mower … ", moving the actual result more into focus.

* Re-add "either" to first description
2025-01-16 09:18:23 +01:00
Martin Hjelmare
77a351f992 Add receive backup tests (#135680)
* Clean up test_receive_backup_busy_manager

* Test receive backup agent error

* Test file write error during backup receive

* Test read tar error during backup receive

* Test non agent upload error during backup receive

* Test file read error during backup receive
2025-01-16 08:41:59 +01:00
G Johansson
a8645ea4ed Ensure entity platform in bluetooth tests (#135716) 2025-01-15 21:24:37 -10:00
Brett Adams
e886c9e054 Slow down polling for Tesla Fleet (#135747)
Slow down polling
2025-01-15 23:28:15 -05:00
Jamin
79ee2e954b Use SIP URI for VoIP device identifier (#135603)
* Use SIP URI for VoIP device identifier

Use the SIP URI instead of just host/IP address to identify VoIP
devices. This will allow calls initiating from Home Assistant to the
device as well as allows devices connecting through a PBX to be uniquely
identified.

* Add tests

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-01-15 20:59:58 -05:00
J. Nick Koston
e736ca72f0 Handle invalid HS color values in HomeKit Bridge (#135739) 2025-01-15 13:33:58 -10:00
epenet
be06ef46c1 Use new ServiceInfo location in wmspro (#135702)
* Use new ServiceInfo location in wmspro

* Fix self.source
2025-01-15 21:22:05 +01:00
Steven B.
51e3bf42f2 Add dynamic child device handling to tplink integration (#135229)
Add dynamic child device handling to tplink integration. For child devices that could be added/removed to hubs.
2025-01-15 20:45:06 +01:00
Ik-12
c6cab3259c Create switches for controlling policy-based routes (#134473)
Create switches for controlling policy-based routes (aka "traffic routes" in the Unifi API).
2025-01-15 20:37:33 +01:00
Sid
146d6bbc68 Bump eheimdigital to 1.0.4 (#135722) 2025-01-15 21:29:29 +02:00
Erik Montnemery
f36a10126c Add WS command backup/can_decrypt_on_download (#135662)
* Add WS command backup/can_decrypt_on_download

* Wrap errors

* Add default messages to exceptions

* Improve test coverage
2025-01-15 19:40:29 +01:00
Steven B.
3622e8331b Update tplink quality_scale.yaml (#135705) 2025-01-15 16:53:57 +01:00
epenet
241fc2af67 Use new ServiceInfo location in insteon (#135694) 2025-01-15 16:35:27 +01:00
epenet
9d7c917771 Use new ServiceInfo location in modem_callerid (#135695) 2025-01-15 16:17:43 +01:00
epenet
d3bedd693a Use new ServiceInfo location in rabbitair (#135696) 2025-01-15 16:17:09 +01:00
epenet
082ef3f85f Use new ServiceInfo location in rainforest_raven (#135697) 2025-01-15 16:15:51 +01:00
epenet
5e648ebb5c Use new ServiceInfo location in tplink (#135700) 2025-01-15 16:14:55 +01:00
epenet
7a442af9fa Use new ServiceInfo location in sonos (#135699) 2025-01-15 16:14:21 +01:00
epenet
406c00997f Use new ServiceInfo location in components (part 3) (#135687) 2025-01-15 15:49:45 +01:00
epenet
19a89ebcf3 Use new ServiceInfo location in components (part 2) (#135685) 2025-01-15 15:49:01 +01:00
epenet
bc8a2b58d3 Use new ServiceInfo location in components (part 1) (#135682) 2025-01-15 15:43:46 +01:00
Mick Montorier-Aberman
6a50648223 Call async_forward_setup_entry after the first refresh in SwitchBot Cloud (#135625) 2025-01-15 14:33:21 +00:00
epenet
e83ee00af8 Move UsbServiceInfo to service_info helpers (#135663)
* Move UsbServiceInfo to service_info helpers

* Adjust components
2025-01-15 15:10:25 +01:00
Robert Resch
8ae02aaba0 Add missing camera functions to pylint type hints plugin (#135676) 2025-01-15 14:53:08 +01:00
puddly
0eea265415 Bump python-otbr-api to 2.7.0 (#135638)
Bump OTBR API to 2.7.0

Bump `python-otbr-api` to 2.7.0 in `thread` as well
2025-01-15 15:04:42 +02:00
epenet
8c13daf6d9 Move SsdpServiceInfo to service_info helpers (#135661)
* Move SsdpServiceInfo to service_info helpers

* docstring

* Move string constants

* Adjust components
2025-01-15 15:00:27 +02:00
Martin Hjelmare
4ccc686295 Improve logging of backup upload errors (#135672)
Improve logging for upload errors
2025-01-15 14:59:42 +02:00
epenet
31c36beb2e Move DhcpServiceInfo to service_info helpers (#135658)
* Move DhcpServiceInfo to service_info helpers

* Fix mypy/pylint
2025-01-15 13:09:18 +01:00
Norbert Rittel
9c5c1a35a4 Fix descriptions of send_command action for consistency (#135670)
Three small fixes for the description keys of the send_command action of the Homeworks integration:
- use third-person singular for descriptive wording
- Change to "the command" to match "the controller" in two strings

Both ensure better and more consistent machine and human translations.
2025-01-15 14:00:40 +02:00
epenet
b046ca9abe Move ZeroconfServiceInfo to service_info helpers (#135653)
* Move ZeroconfServiceInfo to service_info helpers

* Adjust deprecation date

* Fix mypy/pylint

* Fix DeprecatedConstant

* Add deprecation test

* Adjust

* Also deprecate ATTR_PROPERTIES_ID
2025-01-15 12:25:42 +01:00
Avi Miller
650e14379c Bump aiolifx-themes to v0.6.2 (#135645)
* Bump aiolifx-themes to v0.6.1

Signed-off-by: Avi Miller <me@dje.li>

* Bump aiolifx-themes to 0.6.2 to fix deps issue with 0.6.1

Signed-off-by: Avi Miller <me@dje.li>

---------

Signed-off-by: Avi Miller <me@dje.li>
2025-01-15 12:59:15 +02:00
Jan Bouwhuis
1421f4c124 Set MQTT quality scale to platinum (#135612)
* Set MQTT quality scale to platinum

* Add  test for type stub
2025-01-15 10:51:41 +01:00
Jan Bouwhuis
f0257fec88 Fix mqtt number state validation (#135621) 2025-01-15 10:13:27 +01:00
Joost Lekkerkerker
8a35261fd8 Remove unused noqas (#135583) 2025-01-15 10:02:18 +01:00
hahn-th
f57640c2cd Bump homematicip to 1.1.6 (#135649) 2025-01-15 09:31:48 +01:00
TimL
23a2b19ca0 Bump pysmlight v0.1.5 (#135647) 2025-01-15 09:58:38 +02:00
TimL
6cbbfec5f5 Reduce scan interval on SMLIGHT firmware updates (#135650)
Reduce scan interval on firmware updates
2025-01-15 09:56:01 +02:00
Brett Adams
65df8b946f Update buttons in Teslemetry (#135631)
* Update button

* tests
2025-01-15 08:32:46 +01:00
Thomas55555
4b37b367de Dynamic devices for Husqvarna Automower (#133227)
* Dynamic devices for Husqvarna Automower

* callbacks

* add stayout-zones together

* add alltogether on init

* fix stale lock names

* also for workareas

* separate "normal" vs callback entity adding

* mark quality scale

* Apply suggestions from code review

Co-authored-by: Josef Zweck <josef@zweck.dev>

* Apply suggestions from code review

Co-authored-by: Josef Zweck <josef@zweck.dev>

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-01-15 08:31:24 +01:00
Norbert Rittel
c1520a9b20 Fix spelling of EnOcean in strings file of the integration (#135622) 2025-01-15 01:49:10 +01:00
Marc Mueller
239aa94b6f Update Python version for mypy to 3.13 (#135636) 2025-01-15 01:43:13 +01:00
Marc Mueller
c4d8cda92b Update mypy-dev to 1.15.0a2 (#135633) 2025-01-15 00:54:54 +01:00
mkmer
6e88c6570e Return OFF in hvac_action for Honeywell climate (#135620) 2025-01-14 23:15:49 +00:00
Marc Mueller
ecc89fd9a9 Fix spotify typing for Python 3.13 (#135628) 2025-01-15 00:02:22 +01:00
Ville Skyttä
18de735619 More UpCloud config entry refactors (#135548) 2025-01-14 22:49:00 +01:00
Jordan Sitkin
f80f6d9e3d Add PaddleSwitchPico (Pico Paddle Remote) device trigger to Lutron Caseta (#135615) 2025-01-14 10:28:10 -10:00
Erik Montnemery
c408bd6aad Bump securetar to 2025.1.2 (#135614) 2025-01-14 20:39:58 +01:00
Glenn Waters
faf2c64cc4 Bump elkm1-lib to 2.2.11 (#135616) 2025-01-14 09:14:41 -10:00
Franck Nijhof
60bdc13c94 Drop Python 3.12 support (#135589) 2025-01-14 16:23:15 +01:00
epenet
fa96168488 Rename onewire entity classes (#135601) 2025-01-14 15:44:18 +01:00
Manu
526277da0f Add entity pictures to Habitica integration (#134179) 2025-01-14 15:23:22 +01:00
Jan Bouwhuis
934f59449d Make mqtt integration exports explicit (#135595) 2025-01-14 15:17:28 +01:00
adam-the-hero
026df07451 Fix Watergate Power supply mode description and MQTT/Wifi uptimes (#135085) 2025-01-14 14:40:01 +01:00
Indu Prakash
38d008bb66 Add vesync number platform (#135564) 2025-01-14 14:33:48 +01:00
Rob
406c3b5925 Adding support for new Lutron RGB tape light (#130731) 2025-01-14 14:07:20 +01:00
Manu
7cc61d1b86 Skip fetching deactivated shopping lists in Bring integration (#135336)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-14 14:07:07 +01:00
Joost Lekkerkerker
421c4889bf Use device supplied ranges in LaMetric (#135590) 2025-01-14 14:02:17 +01:00
Joost Lekkerkerker
d6ee7a2c1e Add serial number to LaMetric (#135591) 2025-01-14 13:54:08 +01:00
Brett Adams
6a032baa48 Add streaming binary sensors to Teslemetry (#135248)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-14 13:46:10 +01:00
Erik Montnemery
edc7c0ff2f Bump securetar to 2025.1.1 (#135582) 2025-01-14 13:28:43 +01:00
jesperraemaekers
8109efe810 Reverted async-dependency to todo for Weheat (#135588) 2025-01-14 13:27:47 +01:00
Joost Lekkerkerker
5e50b11114 Avoid core documentation url hosted elsewhere (#130513)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-01-14 13:17:25 +01:00
jiriappl
4f796174fd Match the upstream alt id of the new Levoit air purifier (#135426) 2025-01-14 13:17:09 +01:00
Joost Lekkerkerker
5fc3618b4a Bump demetriek to 1.2.0 (#135580) 2025-01-14 12:56:31 +01:00
Steven B.
d970b728ce Update tplink quality_scale.yaml (#135209) 2025-01-14 12:41:48 +01:00
Joost Lekkerkerker
c66176cfa5 Unignore ruff rule ISC001 (#135581) 2025-01-14 12:40:43 +01:00
Indu Prakash
6f138c71b4 Remove incorrect logging about Unknown device (#135585) 2025-01-14 12:38:31 +01:00
Krisjanis Lejejs
6e80ad505b Bump hass-nabucasa from 0.87.0 to 0.88.1 (#135521)
* Bump hass-nabucasa from 0.87.0 to 0.88.0

* Bump hass-nabucasa from 0.88.0 to 0.88.1

* Fix Alexa breaking changes
2025-01-14 12:17:22 +01:00
Joost Lekkerkerker
8db63adc11 Bump ruff to 0.9.1 (#135197) 2025-01-14 11:46:12 +01:00
Jan Bouwhuis
2b51ab1c75 Set MQTT quality scale to gold (#135579) 2025-01-14 11:45:07 +01:00
jesperraemaekers
f4e7c9d6c3 Bump Weheat to 2025.1.14 (#135578) 2025-01-14 11:36:26 +01:00
Josef Zweck
6359a75977 Cleanup tedee callbacks (#135577) 2025-01-14 11:34:37 +01:00
Maikel Punie
096c6b8575 Mark Velbus test coverage as done (#135571) 2025-01-14 11:32:33 +01:00
Maikel Punie
959cea45b8 Migrate Velbus to have Entity name (#135520) 2025-01-14 11:30:10 +01:00
Jan-Philipp Benecke
e3f03c9da1 Set inexogy quality scale to silver (#135547) 2025-01-14 11:20:35 +01:00
Ville Skyttä
1426c421f3 Use percent formatting in logging per guidelines (#135550) 2025-01-14 11:15:38 +01:00
Indu Prakash
58df5f2394 Add iprak to to vesync code owners (#135562) 2025-01-14 10:51:13 +01:00
Erik Montnemery
d333fa320f Fix nmbs sensor unique_id (#135576) 2025-01-14 10:24:48 +01:00
jesperraemaekers
6d7e9f10d9 Set PARALLEL_UPDATES for Weheat (#135574)
Add PARALLEL_UPDATES
2025-01-14 11:19:28 +02:00
Manu
0c144092c6 Bump habiticalib to v.0.3.3 (#135551) 2025-01-14 10:07:23 +01:00
Artur Pragacz
1de4d0efda Fix deprecated enums (#134824) 2025-01-14 10:04:48 +01:00
Erik Montnemery
440cd5bee0 Improve improv via BLE log messages (#135575) 2025-01-14 10:00:21 +01:00
Master-Guy
09e2168f72 Changed json.schemas.url for devcontainers (#135281) 2025-01-13 21:46:32 +01:00
Michael Hansen
b897e6a85f Use STT/TTS languages for LLM fallback (#135533) 2025-01-13 14:17:12 -06:00
Norbert Rittel
3e9b410b7c Fix grammar issue in 'invalid_auth' string (#135546)
Remove that wrong comma and add a "that" to clarify the meaning of the error message.
2025-01-13 20:56:10 +01:00
Jan-Philipp Benecke
3c825bb826 Set PARALLEL_UPDATES for inexogy (#135545) 2025-01-13 20:48:24 +01:00
Jan-Philipp Benecke
e8ad391df2 Add data_descriptions to inexogy config flow (#135536) 2025-01-13 20:31:13 +01:00
JJ
504ed83ffb Add person component to strict type checking (#132754) 2025-01-13 20:11:17 +01:00
Maikel Punie
eaaab4ccfe Velbus add subdevices for din-rail modules (#131371) 2025-01-13 20:10:45 +01:00
jesperraemaekers
4ddb72314d Add quality scale for weheat (#135384) 2025-01-13 20:09:19 +01:00
Maikel Punie
c489f94026 Velbus unsubscribe to the status updates on removal (#135530) 2025-01-13 20:08:04 +01:00
Maikel Punie
38dcc782d1 Velbus update unique-config-entry quality score (#135524) 2025-01-13 20:07:47 +01:00
qbus-iot
2d2f4f5cec Add new integration Qbus (#127280)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Thomas D <11554546+thomasddn@users.noreply.github.com>
2025-01-13 19:06:52 +00:00
Álvaro Fernández Rojas
ca34541b04 Register Airzone WebServer device (#135538) 2025-01-13 20:06:19 +01:00
Jan Bouwhuis
984c380e13 Add option to allow to use setpoint instead of override for legacy incomfort RF gateway (#135143)
* Add option to allow to use setpoint in stead of override for legacy incomfort RF gateway

* Add test to assert state with legacy_setpoint_status option

* Use selector

* Update homeassistant/components/incomfort/strings.json

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

* Follow up on code review

* Rephrase data_description

* Rephrase

* Use async_schedule_reload helper

* Move option flow after config flow

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-13 19:50:06 +01:00
G Johansson
1c053485a9 Bump smhi-pkg to 1.0.19 (#135537) 2025-01-13 20:40:01 +02:00
Steven B.
ab28115d2b Cleanup tplink test framework (#135205) 2025-01-13 19:32:22 +01:00
Indu Prakash
d986fe7a07 Add humidifier entity for Vesync devices (#134333) 2025-01-13 19:26:18 +01:00
Jan Bouwhuis
6fd73730cc Bump aioimaplib to 2.0.0 (#135448) 2025-01-13 19:19:06 +01:00
Jan Bouwhuis
b93aa760c5 Refactor the MQTT option and reconfigure flow (#133342)
* Move entry options to entry.options en remove broker setup from mqtt option flow

* UPdate diagnostics to export both entry data and options

* Parameterize entry options directly not depending on migration

* Update tests to use v2 entry and add separate migration test

* use start_reconfigure_flow helper

* Update quality scale comment

* Do minor entry upgrade, and do not force to upgrade entry

* Ensure options are read from older entries

* Add comment

* Follow up on code review

* Assert config entry version checking the broker connection

* Update comment
2025-01-13 19:00:18 +01:00
epenet
b84a4dc120 Add zeroconf discovery to onewire (#135295) 2025-01-13 17:52:37 +00:00
Manu
cdcc7dbbe8 Deprecate sensors in Habitica integration (#134036)
* Deprecate sensors

* move to setup, remove disabled

* changes

* add breaking version to string

* fixes

* fix entity id in tests
2025-01-13 18:35:14 +01:00
Maikel Punie
8d38279993 Bump velbusaio to 2025.1.0 (#135525) 2025-01-13 17:18:46 +01:00
dotvav
153496b5f4 Palazzetti integration: Add support for additional fans (#135377)
* Add support for second and third fans

* Update test mock and snapshot

* Test coverage and error message

* Rename fans left and right instead of 2 and 3
2025-01-13 17:17:46 +01:00
jesperraemaekers
1fa3d90d73 Removing unused API file form weheat (#135518) 2025-01-13 17:14:10 +01:00
Robert Resch
1e4c7e832d Bump go2rtc recommended version to 1.9.8 (#135523) 2025-01-13 17:02:23 +01:00
Maxim Mikityanskiy
275365a9d3 Expose raw PM2.5 in Airgradient (#135457) 2025-01-13 14:42:53 +00:00
G Johansson
4709a3162c Change Trafikverket Train to use station signatures (#131416)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-13 15:38:02 +01:00
Franck Nijhof
157548609b Revert "Make all three numbered lists consistent, using 1. 1. 1. for the syntax" (#135510) 2025-01-13 14:18:47 +00:00
Manu
fc0a6c2ff3 Refactor number/select to use common method in IronOS (#134173) 2025-01-13 14:50:55 +01:00
Klaas Schoute
0d116ec6a2 Improve tests of energyzero integration (#133452)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-01-13 14:49:01 +01:00
Marc Mueller
6060f637a8 Update getmac to 0.9.5 (#135506) 2025-01-13 14:47:32 +01:00
Shay Levy
ba9ad009e9 Fix LG webOS TV trigger validation (#135312)
* Fix LG webOS TV trigger validation

* Raise if not loaded
2025-01-13 15:37:40 +02:00
Norbert Rittel
ec5759d3b9 Fix typos "Login" > "Log in" and "Setup" > "Set up" (#135306) 2025-01-13 14:16:25 +01:00
Norbert Rittel
c7a5c49a03 Small fixes in the strings file of the azure_data_explorer integration (#135309) 2025-01-13 14:16:00 +01:00
Dave T
9b55faa879 Refactor config flow tests in generic camera (#134385)
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
2025-01-13 14:15:21 +01:00
jesperraemaekers
6fd9476bb9 Refresh token before setting up weheat (#135264) 2025-01-13 14:01:57 +01:00
dotvav
d33ee130bc Bump pypalazzetti to 0.1.19 (#135465) 2025-01-13 13:59:34 +01:00
dotvav
e1ffd9380d Replace climate fan speed 'silent' with a button (#135075) 2025-01-13 13:51:20 +01:00
Norbert Rittel
fc6695b05c Use proper sentence-case for all strings in azure_event_hub (#135328) 2025-01-13 13:47:40 +01:00
Duco Sebel
8f71d7a6f3 Move HomeWizard API initialisation to async_setup_entry (#135315) 2025-01-13 13:35:50 +01:00
Manu
4dbf2b0320 Fix grey dailies with weekly frequency and no weekdays selected in Habitica (#135419) 2025-01-13 13:20:15 +01:00
Austin Mroczek
3aa466806e TotalConnect update quality_scale with documentation updates (#134049) 2025-01-13 13:11:56 +01:00
Lukas Schlötterer
7b63c17101 Add kV and MV unit conversion for voltages (#135396) 2025-01-13 13:00:35 +01:00
Brett Adams
dae87db244 Fix when live status is blank in Telsemetry (#130408) 2025-01-13 12:44:36 +01:00
Norbert Rittel
fba1b4be5b Replace "click" with "select" to fit for mobile app (#135382) 2025-01-13 12:32:07 +01:00
Mick Vleeshouwer
c15073cc27 Fix incorrect cast in HitachiAirToWaterHeatingZone in Overkiz (#135468) 2025-01-13 12:11:01 +01:00
Paul Daumlechner
25041aa02d Add dhcp discovery to velux (#135138)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-13 12:01:04 +01:00
Norbert Rittel
96ad2b6ed8 Replace "Login …" with "Log in …" in two strings of Habitica integration (#135383) 2025-01-13 11:55:55 +01:00
epenet
a649ff4a91 Add hassio discovery to onewire (#135294) 2025-01-13 11:55:18 +01:00
Joost Lekkerkerker
1ceebd92a9 Change icon ID name in Lametric (#135368) 2025-01-13 11:48:00 +01:00
Artur Pragacz
b009f11013 Fix referenced objects in script sequences (#135499) 2025-01-13 11:40:53 +01:00
Maikel Punie
2d67aca550 Rework velbus services to deprecated the interface parameter (#134816)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-13 11:36:20 +01:00
LG-ThinQ-Integration
98ef32c668 Add remain, running, schedule time sensors to LG ThinQ (#131133)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-01-13 11:29:09 +01:00
Erik Montnemery
3a0072d42d Fix typing in zha update entity (#135500) 2025-01-13 11:27:20 +01:00
Maciej Bieniek
86ea68eaec Add missing total active returned energy sensor for Shelly Mini PM Gen3 (#135433)
Add missing total active returned energy sensor for Mini PM Gen3
2025-01-13 11:12:04 +01:00
Michael
e67a131bd9 Bump uv to 0.5.18 (#135454) 2025-01-13 09:11:46 +01:00
dependabot[bot]
c36d73e469 Bump github/codeql-action from 3.28.0 to 3.28.1 (#135492)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-13 08:54:42 +01:00
Khole
ac279d9794 Replace pyhiveapi with pyhive-integration (#135482) 2025-01-13 08:50:25 +01:00
J. Nick Koston
4e5bf5ac22 Ensure ESPHome cleanups Bluetooth scanner data upon removal (#135470)
* Add bluetooth API to remove scanners that are no longer used

- Cleanup the advertisment history right away when a scanner is removed

In the future we will do some additional cleanup

* coverage

* finish tests

* Ensure ESPHome cleanups Bluetooth scanner data upon removal

needs https://github.com/home-assistant/core/pull/135408
2025-01-12 22:41:49 -05:00
J. Nick Koston
2e5e2c50dd Ensure Shelly cleanups Bluetooth scanner data upon removal (#135472)
* Add bluetooth API to remove scanners that are no longer used

- Cleanup the advertisment history right away when a scanner is removed

In the future we will do some additional cleanup

* coverage

* finish tests

* Ensure Shelly cleanups Bluetooth scanner data upon removal

needs https://github.com/home-assistant/core/pull/135408
2025-01-12 22:41:21 -05:00
J. Nick Koston
c9a7afe439 Add bluetooth API to remove scanners that are no longer used (#135408) 2025-01-12 14:03:05 -10:00
Ville Skyttä
0a444de39c Refactor upcloud to use config entry runtime data (#135449) 2025-01-13 01:43:37 +02:00
Ravaka Razafimanantsoa
559c411dd2 Add current and voltage for plugs to switchbot_cloud (#135458)
SwitchBot Cloud: Adding current and voltage for plugs
2025-01-12 18:42:06 +01:00
tronikos
61ea732caa Fix strings for the Google integrations (#135445) 2025-01-12 09:15:33 -08:00
Ravaka Razafimanantsoa
11ebc27bfe Bump switchbot-api to 2.3.1 (#135451) 2025-01-12 17:29:01 +01:00
Manu
ccb94ac6a6 Update translations and error messages in Bring! integration (#135455)
* Update translations and error messages

* use placeholder for field name

* change key for translation string
2025-01-12 16:27:31 +01:00
WaterInTheLake
ab0dfe304c Fix translation string: numbering in list (#135441) 2025-01-12 14:42:45 +01:00
Norbert Rittel
8b0be70fdd Fix descriptions of send_message action of Bring! integration (#135446)
* Make "Urgent message" selector consistent, use "Bring!" as name

- Replace one occurrence of "bring" with the brand name "Bring!"
- Change description of action to third-person singular for consistency in Home Assistant
- Make all occurrences of the selector "Urgent message" consistent (in sentence case) so they all get consistent translations, too
- Change one related error message to refer to the UI name of the required "Article" field

* Changed ` to '  to avoid Regex problems

* Reverted change to notify_missing_argument_item

Reverted to avoid failing test

* Reverted change to "bring"

* Add "is" to description of "Article"

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

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-01-12 14:36:23 +01:00
tronikos
f7df214dd8 Fix config entries typo s/entruis/entries/ (#135431)
Fix typo s/entruis/entries/
2025-01-12 11:07:45 +01:00
Andrew Sayre
11fa6b2e4e Bump pyheos to 1.0.0 (#135415) 2025-01-11 23:06:06 -06:00
Joost Lekkerkerker
52c57eb2e5 Actually use translated entity names in Lametric (#135381) 2025-01-11 23:15:49 +01:00
Manu
0d85f54e76 Add sensors for inventory items to Habitica (#135331)
Add sensors for inventory items
2025-01-11 21:31:36 +01:00
Norbert Rittel
b3af12c9b1 Reword action descriptions for better translations in Teslemetry (#135370)
Slightly reword action descriptions for better translations

Currently only one of the action descriptions in the Teslemetry integration uses the descriptive form of third person plural.

This commit changes the remaining descriptions to adopt the same language and changes "the" to "a" as the actual action target is defined below that in the UI.
2025-01-11 20:15:41 +00:00
Jeff Terrace
6571ebf15b Add additional Tapo ONVIF Person/Vehicle/Line/Tamper/Intrusion events (#135399) 2025-01-11 09:52:46 -10:00
Norbert Rittel
2237ed9af7 Make all three numbered lists consistent, using 1. 1. 1. for the syntax (#135400)
Make all three numbered lists use 1. 1. 1. for the syntax

Currently only two of the setup descriptions of the Nest integration use automatic syntax for a numbered list.

This commit makes the third one consistent, using 1. 1. 1. as well.

This helps translators in Lokalise understand that this is the expected format for all numbered lists in Home Assistant.
2025-01-11 21:44:59 +02:00
YogevBokobza
c442935fdd Switcher runner child lock support (#133270)
* Switcher runner child lock support

* fix based on requested changes

* Update homeassistant/components/switcher_kis/switch.py

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

* Fix

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-11 21:01:10 +02:00
Jeff Terrace
6dc9c6819f Add @jterrace to onvif integration owners (#135398) 2025-01-11 19:30:51 +01:00
Shay Levy
a745e079e9 Add reconfigure to LG webOS TV (#135360)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-11 16:16:35 +01:00
Markus Lanthaler
19f460614e Enable slowly-changing, important diagnostics for connected devices by default (#134776) 2025-01-11 15:29:31 +01:00
Brett Adams
20d6ba4286 Bump Teslemetry Stream (#135344)
bump
2025-01-11 16:09:53 +02:00
dotvav
4cf7a51a05 Palazzetti Quality Scale update after doc improvement (#135277) 2025-01-11 13:24:00 +01:00
Simon Lamon
8e2b284a7f Add more typings to nmbs sensor (#135359) 2025-01-11 13:04:37 +01:00
Erwin Douna
74c3e9629f Fix Tado config flow (#135353) 2025-01-11 12:52:40 +01:00
Norbert Rittel
907f1e062a Fix spelling of "Log in …" and "API key" in LOQED integration (#135347) 2025-01-11 12:51:56 +01:00
Simon Lamon
fd169affd7 Remove code owner for nmbs (#135357) 2025-01-11 12:49:10 +01:00
dependabot[bot]
81c390d3b8 Bump docker/build-push-action from 6.10.0 to 6.11.0 (#135254) 2025-01-11 12:32:30 +01:00
dependabot[bot]
d356d4bb82 Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#135255) 2025-01-11 12:31:46 +01:00
Joost Lekkerkerker
4d93fbcb52 Fix backup formatting (#135350) 2025-01-11 11:15:00 +01:00
Simon Lamon
b9259b6f77 Add config flow to NMBS (#121548)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-01-11 10:31:47 +01:00
Norbert Rittel
22b84450e8 Small fixes in setup flow strings, correct sentence-case (#135349) 2025-01-11 10:10:40 +01:00
Norbert Rittel
9ef93517e7 Fix spelling of "Log in", fix "outdated student" (#135348) 2025-01-11 10:00:59 +01:00
J. Nick Koston
cdc96fdf6f Add bluetooth subscribe_advertisements WebSocket API (#134291) 2025-01-10 16:49:53 -10:00
Paulus Schoutsen
ab8af033c0 Extract resolve announcement media ID for AssistSatelliteEntity (#134917) 2025-01-10 18:33:49 -08:00
J. Nick Koston
619dee5d93 Bump habluetooth to 3.8.0 (#135322)
changelog: https://github.com/Bluetooth-Devices/habluetooth/compare/v3.7.0...v3.8.0
2025-01-10 23:50:03 +02:00
Duco Sebel
00c3b8cc3e Use LOGGER from homewizard.const instead per-file loggers (#135320) 2025-01-10 23:49:36 +02:00
Manu
bf747bb733 Fix Habitica gems/hourglass sensors (#135323) 2025-01-10 23:47:05 +02:00
Robert Resch
560d15effb Don't store uv's lockfile in hassfest image (#135214) 2025-01-10 21:15:44 +01:00
Quentame
39aa0339ac Bump Freebox to 1.2.2 (#135313) 2025-01-10 21:47:48 +02:00
Norbert Rittel
675cc32534 Fix typos, replace duplicated strings with references (#135303) 2025-01-10 18:21:39 +01:00
Norbert Rittel
31b45e6d3f Fix typos and inconsistent spelling of "tedee" brand name (#135305)
- Change "Setup your tedee locks" to "Set up …"
- Remove two excessive commas
- Change one occurrence of "Tedee" to "tedee".
2025-01-10 18:20:50 +01:00
Shay Levy
6fd4d7acaa Use runtime_data in LG webOS TV (#135301) 2025-01-10 19:16:25 +02:00
Maciej Bieniek
c4b4cad335 Bump aioshelly to version 12.3.1 (#135299) 2025-01-10 17:18:00 +01:00
Norbert Rittel
32d3fe714f Grammar and consistency fixes in hdmi_cec strings (#135292) 2025-01-10 16:15:14 +01:00
Manu
6fd0760f25 Add USB-PD Mode select entity to IronOS integration (#134901)
Add USB-PD Mode select entity
2025-01-10 14:07:14 +01:00
Norbert Rittel
59d61104d1 Replace 'entity_id' with UI-friendly, localizable 'entity ID' (#135232)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-10 14:06:58 +01:00
dotvav
028c5349ac Bump pypalazzetti to 0.1.16 (#135269) 2025-01-10 14:06:17 +01:00
Antoine Reversat
9388879b78 Mark FGLAir entities unavailable if they are reporting to be offline (#135202) 2025-01-10 13:24:33 +01:00
Norbert Rittel
246a9f95a3 Smaller grammar fixes, replace 'entity_id' with UI-friendly 'ID' (#135236)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-10 13:23:33 +01:00
Duco Sebel
f31f6d7ed0 Adjust HomeWizard to use updated python-homewizard-energy library (#135046) 2025-01-10 13:19:55 +01:00
Shay Levy
1f0eda8e47 Move LG webOS TV actions to entitiy services (#135285) 2025-01-10 13:02:03 +01:00
cdnninja
bce7e9ba5e Simplify vesync init loading (#135052) 2025-01-10 12:30:29 +01:00
epenet
475a2fb828 Discover new devices at runtime in onewire (#135199) 2025-01-10 11:53:31 +01:00
epenet
24c70caf33 Improve formatting in component files (#135261)
* Improve formatting in component files

* Apply suggestions from code review
2025-01-10 11:46:15 +01:00
Jan Bouwhuis
eba090c9ef Allow to process kelvin as color_temp for mqtt template light (#133957) 2025-01-10 11:43:36 +01:00
epenet
b5971ec55d Add model_id and serial_number to onewire device info (#135279) 2025-01-10 11:18:50 +01:00
epenet
ad84490541 Fix incorrect test in test_core_config (#135260) 2025-01-10 11:10:23 +01:00
Maikel Punie
033064f832 Velbus light platform code cleanup (#134482) 2025-01-10 11:10:09 +01:00
epenet
a2d9920aa9 Fix missing comma in ollama MODEL_NAMES (#135262) 2025-01-10 11:09:49 +01:00
epenet
8386eaa92b Split long strings in stream hls tests (#135271) 2025-01-10 11:09:20 +01:00
epenet
aa741a9207 Combine short strings in components (#135265) 2025-01-10 11:07:51 +01:00
Norbert Rittel
024b9ae414 Change 'entity_id' to UI-friendly 'Entity ID', fix spelling of "setpoint" (#135234)
In addition this makes the description of the first action consistent, using third-person singular like the other two and adhering to the HA standard.
2025-01-10 11:06:08 +01:00
epenet
02956f9a83 Improve formatting in component test files (#135267)
Improve formatting in test files
2025-01-10 10:53:45 +01:00
Shay Levy
9d1989125f Fix LG webOS TV media player test coverage (#135225)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-10 10:44:23 +01:00
epenet
04d5cc8f79 Combine short byte strings in xiaomi_ble tests (#135268) 2025-01-10 10:19:28 +01:00
epenet
e29ead2a36 Split long strings in components (#135263) 2025-01-10 10:13:36 +01:00
epenet
5df7092f41 Improve formatting in core files (#135256)
* Adjust core files formatting

* Adjust translations script
2025-01-10 09:08:37 +01:00
Norbert Rittel
823feae0f9 Make description of alarm_arm_vacation consistent (#135257)
Small fix to also use "Arms …" in the description of the alarm_arm_vacation action, making it consistent with the other two alarm_arm_… actions.
2025-01-10 08:45:06 +01:00
J. Nick Koston
3c6113e37c Remove per engine max bind vars (#135153) 2025-01-09 22:50:13 +00:00
peteS-UK
139b747a70 Expand Squeezebox auth test for config_flow to finish on create_entry (#133612)
Expand auth test to create_entry
2025-01-09 23:47:53 +01:00
Bram Kragten
bceccd85ee 2025.1.2 (#135241) 2025-01-09 23:25:42 +01:00
J. Nick Koston
da30dbcfe4 Bump fnv-hash-fast to 1.1.0 (#135237) 2025-01-09 12:03:08 -10:00
Bram Kragten
0027d907a4 Bump version to 2025.1.2 2025-01-09 22:25:42 +01:00
Bram Kragten
5d201406cb Update frontend to 20250109.0 (#135235) 2025-01-09 22:24:43 +01:00
Brynley McDonald
30924b561a Fix Flick Electric Pricing (#135154) 2025-01-09 22:24:42 +01:00
jb101010-2
1eddb4a21b Bump pysuezV2 to 2.0.3 (#135080) 2025-01-09 22:24:41 +01:00
Erik Montnemery
42cdd25d90 Add jitter to backup start time to avoid thundering herd (#135065) 2025-01-09 22:24:41 +01:00
Bram Kragten
b8b7daff5a Implement upload retry logic in CloudBackupAgent (#135062)
* Implement upload retry logic in CloudBackupAgent

* Update backup.py

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

* nit

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-01-09 22:23:53 +01:00
Simone Chemelli
0deb46295d Refactor Vodafone Station tests (#134956) 2025-01-09 22:22:37 +01:00
Cyrill Raccaud
7f3f550b7b Bump cookidoo-api to 0.12.2 (#135045)
fix cookidoo .co.uk countries and group api endpoint
2025-01-09 22:14:35 +01:00
Thomas55555
3c14e2f0a8 Bump aioautomower to 2025.1.0 (#135039) 2025-01-09 22:14:34 +01:00
starkillerOG
9601455d9f Fix channel retrieval for Reolink DUO V1 connected to a NVR (#135035)
fix channel retrieval for DUO V1 connected to a NVR
2025-01-09 22:14:33 +01:00
Mick Vleeshouwer
902bd57b4b Catch errors in automation (instead of raise unexpected error) in Overkiz (#135026)
Catch errors in automation (instead of raise unexpected error)
2025-01-09 22:14:32 +01:00
puddly
ab071d1c1b Fix ZHA "referencing a non existing via_device" warning (#135008) 2025-01-09 22:14:31 +01:00
Joakim Sørensen
2c02eefa11 Increase cloud backup download timeout (#134961)
Increese download timeout
2025-01-09 22:14:31 +01:00
Quentame
44808c02f9 Fix Météo-France setup in non French cities (because of failed next rain sensor) (#134782) 2025-01-09 22:14:30 +01:00
Bram Kragten
1abcac5fb5 Update frontend to 20250109.0 (#135235) 2025-01-09 22:13:39 +01:00
J. Nick Koston
3b6f47e438 Bump anyio to 4.8.0 (#135224) 2025-01-09 22:12:34 +01:00
Simone Chemelli
6e1a13f878 Add support for Shelly BLU TRV (#128439)
* feat: add support for Shelly BLU TRV

* chore: apply some fixes

* make BLUTRV a separate device

* apply review comment

* review comments and small optimization

* add HVACMode.OFF

* a couple of fixes

* 2 more fixes

* better approach

* cleanup

* small optimization

* remove cooling as not supported by firmware

* tweaks

* humidity and entity name

* fix naming

* allign async_set_hvac_mode

* align settings

* restore temp

* fix

* remove OFF

* cleanup

* hvac_mode

* add tests

* typo

* more tests

* bump aioshelly
2025-01-09 21:28:36 +01:00
epenet
ee865d2f0f Add exception-translations rule to quality_scale pytest validation (#131914)
* Add exception-translations rule to quality_scale pytest validation

* Adjust

* Return empty dict if file is missing

* Fix

* Improve typing

* Address comments

* Update tests/components/conftest.py

* Update tests/components/conftest.py

* Update tests/components/conftest.py

---------

Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-09 21:21:47 +01:00
epenet
dd57c75e64 Use remove-prefix/suffix introduced in Python 3.9 (#135206)
Use removeprefix/removesuffix
2025-01-09 21:15:22 +01:00
J. Nick Koston
0cc586a3ac Bump zeroconf to 0.139.0 (#135213) 2025-01-09 19:01:49 +01:00
Brett Adams
b6c0257c43 Add streaming sensors to Teslemetry (#132783)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-09 18:58:12 +01:00
Jan Bouwhuis
cabdae98e8 Allow to process kelvin as color_temp for mqtt json light (#133955) 2025-01-09 18:34:42 +01:00
Shay Levy
07482de4ab Fix LG webOS TV init test coverage (#135194) 2025-01-09 18:29:17 +01:00
epenet
31719bc84c Refactor onewire hub (#135186)
* Improve type hints in onewire hub

* More cleanups

* Improve

* Get host/port from entry data

* Use DeviceInfo object
2025-01-09 18:17:21 +01:00
Steven B.
1ca5f79708 Use typed config entry in tplink coordinator (#135182) 2025-01-09 17:43:38 +01:00
Ruslan Sayfutdinov
a5f70dec96 Make generated files appear as generated (#134991) 2025-01-09 17:26:46 +01:00
Allen Porter
6e111d18ec Allow unregistering LLM APIs (#135162) 2025-01-09 08:18:25 -08:00
Jan Bouwhuis
ec37e1ff8d Allow to process kelvin as color_temp for mqtt basic light (#133953) 2025-01-09 16:31:09 +01:00
epenet
8705fd8546 Avoid unnecessary executor calls in onewire (#135187) 2025-01-09 16:11:33 +02:00
Norbert Rittel
050a17db4d Use friendly names in add_to_playlist action, fix "ID" (#134978) 2025-01-09 13:45:32 +01:00
Andre Lengwenus
9dc4597f59 Update module properties on module scan for LCN (#135018) 2025-01-09 13:44:57 +01:00
Arie Catsman
9dd7021d63 No need to set unique_id in enphase_envoy reauth step (#133615)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-01-09 13:31:29 +01:00
Franck Nijhof
d59a91a905 2025.1.1 (#134940) 2025-01-07 08:43:32 +01:00
Franck Nijhof
298f059488 Revert "Remove deprecated supported features warning in ..." (multiple) (#134933) 2025-01-07 06:53:14 +00:00
Franck Nijhof
7a5525951d Bump version to 2025.1.1 2025-01-06 23:42:21 +00:00
Artur Pragacz
9a9514d53b Revert "Remove deprecated supported features warning in LightEntity" (#134927) 2025-01-06 23:42:00 +00:00
G Johansson
5337ab2e72 Bump holidays to 0.64 (#134922) 2025-01-06 23:41:55 +00:00
Klaas Schoute
b815899fdc Bump powerfox to v1.2.0 (#134908) 2025-01-06 23:41:51 +00:00
Klaas Schoute
81a669c163 Bump powerfox to v1.1.0 (#134730) 2025-01-06 23:41:45 +00:00
Bram Kragten
188def51c6 Update frontend to 20250106.0 (#134905) 2025-01-06 23:40:07 +00:00
Manu
eb345971b4 Fix wrong power limit decimal place in IronOS (#134902) 2025-01-06 23:40:03 +00:00
Manu
9288dce7ed Add bring_api to loggers in Bring integration (#134897)
Add bring-api to loggers
2025-01-06 23:39:59 +00:00
Steven B.
4867d3a187 Bump python-kasa to 0.9.1 (#134893)
Bump tplink python-kasa dependency to 0.9.1
2025-01-06 23:39:55 +00:00
Norbert Rittel
c40771ba6a Use uppercase for "ID" and sentence-case for "name" / "icon" (#134890) 2025-01-06 23:39:51 +00:00
Luke Lashley
2fc489d17d Add extra failure exceptions during roborock setup (#134889)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-01-06 23:39:47 +00:00
Robin Wohlers-Reichel
279785b22e Bump solax to 3.2.3 (#134876) 2025-01-06 23:39:42 +00:00
Joakim Sørensen
e5c986171b Log cloud backup upload response status (#134871)
Log the status of the upload response
2025-01-06 23:39:38 +00:00
Joakim Sørensen
58805f721c Log upload BackupAgentError (#134865)
* Log out BackupAgentError

* Update homeassistant/components/backup/manager.py

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

* Update homeassistant/components/backup/manager.py

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

* Format

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-01-06 23:39:33 +00:00
Allen Porter
29989e9034 Update Roborock config flow message when an account is already configured (#134854) 2025-01-06 23:39:28 +00:00
Avi Miller
fbd031a03d Bump aiolifx-themes to update colors (#134846) 2025-01-06 23:39:23 +00:00
J. Diego Rodríguez Royo
fe1ce39831 Fix how function arguments are passed on actions at Home Connect (#134845) 2025-01-06 23:39:19 +00:00
J. Nick Koston
914c6459dc Bump habluetooth to 3.7.0 (#134833) 2025-01-06 23:39:14 +00:00
Raphael Hehl
43ffdd0eef Bump uiprotect to version 7.4.1 (#134829) 2025-01-06 23:39:10 +00:00
Norbert Rittel
39d16ed5ce Fix a few typos or grammar issues in asus_wrt (#134813) 2025-01-06 23:39:06 +00:00
Norbert Rittel
07f3d939e3 Replace "id" with "ID" for consistency across HA (#134798) 2025-01-06 23:39:01 +00:00
G Johansson
eda60073ee Raise ImportError in python_script (#134792) 2025-01-06 23:38:57 +00:00
Norbert Rittel
09ffa38ddf Fix missing sentence-casing etc. in several strings (#134775) 2025-01-06 23:38:53 +00:00
jb101010-2
b32a791ea4 Bump pysuezV2 to 2.0.1 (#134769) 2025-01-06 23:38:48 +00:00
Michael
a4ea25631a Register base device entry during coordinator setup in AVM Fritz!Tools integration (#134764)
* register base device entry during coordinator setup

* make mypy happy
2025-01-06 23:38:44 +00:00
Duco Sebel
bd8ea646a9 Bumb python-homewizard-energy to 7.0.1 (#134753) 2025-01-06 23:38:38 +00:00
Norbert Rittel
538a2ea057 Fix swapped letter order in "°F" and "°C" temperature units (#134750)
Fixes the wrong order "F°" and "C°" for the temperature units.
2025-01-06 23:38:34 +00:00
Sid
b461bc2fb5 Bump openwebifpy to 4.3.1 (#134746) 2025-01-06 23:38:29 +00:00
TheJulianJES
103960e0a7 Bump ZHA to 0.0.45 (#134726) 2025-01-06 23:37:24 +00:00
dontinelli
1c4273ce91 Change from host to ip in zeroconf discovery for slide_local (#134709) 2025-01-06 23:34:17 +00:00
J. Diego Rodríguez Royo
0f0209d4bb Iterate over a copy of the list of programs at Home Connect select setup entry (#134684) 2025-01-06 23:34:13 +00:00
Cyrill Raccaud
27b8b8458b Cookidoo exotic domains (#134676) 2025-01-06 23:34:08 +00:00
Franck Nijhof
c022d91baa Update demetriek to 1.1.1 (#134663) 2025-01-06 23:34:02 +00:00
Cyrill Raccaud
0daac09008 Bump cookidoo-api library to 0.11.1 of for Cookidoo (#134661) 2025-01-06 23:33:56 +00:00
Franck Nijhof
ca8416fe50 Update peblar to 0.3.3 (#134658) 2025-01-06 23:33:50 +00:00
starkillerOG
a14f6faaaf Fix Reolink playback of recodings (#134652) 2025-01-06 23:33:45 +00:00
Franck Nijhof
a9a14381d3 Update twentemilieu to 2.2.1 (#134651) 2025-01-06 23:33:39 +00:00
Joost Lekkerkerker
a4d0794fe4 Remove call to remove slide (#134647) 2025-01-06 23:33:33 +00:00
Cyrill Raccaud
9ead6fe362 Set logging in manifest for Cookidoo (#134645) 2025-01-06 23:33:28 +00:00
epenet
017679abe1 Fix hive color tunable light (#134628) 2025-01-06 23:33:23 +00:00
Brynley McDonald
0bd7b793fe Fix Flick Electric authentication (#134611) 2025-01-06 23:33:19 +00:00
Teemu R.
c46a70fdcf Mention case-sensitivity in tplink credentials prompt (#134606) 2025-01-06 23:33:13 +00:00
Raphael Hehl
8c2ec5e7c8 Bump uiprotect to version 7.2.0 (#134587) 2025-01-06 23:33:09 +00:00
J. Nick Koston
3063f0b565 Bump bleak-esphome to 2.0.0 (#134580) 2025-01-06 23:33:04 +00:00
peteS-UK
aafc1ff074 Small fix to allow playing of expandable favorites on Squeezebox (#134572) 2025-01-06 23:33:00 +00:00
Ludovic BOUÉ
45142b0cc0 Matter Battery replacement icon (#134460) 2025-01-06 23:32:54 +00:00
Franck Nijhof
a412acec0e 2025.1.0 (#134529)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: VandeurenGlenn <8685280+VandeurenGlenn@users.noreply.github.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Teemu R. <tpr@iki.fi>
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: OzGav <gavnosp@hotmail.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Simon <80467011+sorgfresser@users.noreply.github.com>
Co-authored-by: Simon Sorg <simon.sorg@student.hpi.de>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Sander Hoentjen <sander@hoentjen.eu>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Richard Kroegel <42204099+rikroe@users.noreply.github.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Álvaro Fernández Rojas <noltari@gmail.com>
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
Co-authored-by: Arie Catsman <120491684+catsmanac@users.noreply.github.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Matthias Alphart <farmio@alphart.net>
Co-authored-by: Tom <CoMPaTech@users.noreply.github.com>
Co-authored-by: Steven B. <51370195+sdb9696@users.noreply.github.com>
Co-authored-by: Glenn Vandeuren (aka Iondependent) <vandeurenglenn@gmail.com>
Co-authored-by: Austin Mroczek <austin@mroczek.org>
Co-authored-by: Mick Vleeshouwer <mick@imick.nl>
Co-authored-by: PierreAronnax <pierre@trionax.com>
Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
Co-authored-by: jesperraemaekers <146726232+jesperraemaekers@users.noreply.github.com>
Co-authored-by: Steven Looman <steven.looman@gmail.com>
Co-authored-by: Barry vd. Heuvel <barry@fruitcake.nl>
Co-authored-by: Raphael Hehl <7577984+RaHehl@users.noreply.github.com>
Co-authored-by: Andre Lengwenus <alengwenus@gmail.com>
Co-authored-by: dontinelli <73341522+dontinelli@users.noreply.github.com>
Co-authored-by: Noah Husby <32528627+noahhusby@users.noreply.github.com>
Co-authored-by: Lucas Gasenzer <lucasgasenzer@mac.com>
Co-authored-by: jb101010-2 <168106462+jb101010-2@users.noreply.github.com>
Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
Co-authored-by: Martin Weinelt <mweinelt@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: jon6fingrs <53415122+jon6fingrs@users.noreply.github.com>
Co-authored-by: mrtlhfr <10065880+mrtlhfr@users.noreply.github.com>
Co-authored-by: Matrix <justin@yosmart.com>
Co-authored-by: Duco Sebel <74970928+DCSBL@users.noreply.github.com>
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: Omni Flux <omni.hyper.flux@gmail.com>
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
Co-authored-by: Thomas55555 <59625598+Thomas55555@users.noreply.github.com>
Co-authored-by: karwosts <32912880+karwosts@users.noreply.github.com>
Co-authored-by: Jordi <Jordi1990@users.noreply.github.com>
Co-authored-by: Martin Mrazik <mmrazik@users.noreply.github.com>
Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
Co-authored-by: G-Two <7310260+G-Two@users.noreply.github.com>
Co-authored-by: Claudio Ruggeri - CR-Tech <41435902+crug80@users.noreply.github.com>
Co-authored-by: Khole <29937485+KJonline@users.noreply.github.com>
Co-authored-by: Philipp Danner <philipp@danner-web.de>
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Cyrill Raccaud <miaucl@users.noreply.github.com>
Co-authored-by: Allen Porter <allen@thebends.org>
Co-authored-by: Aaron Bach <bachya1208@gmail.com>
Co-authored-by: Michael Hansen <mike@rhasspy.org>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Paul Daumlechner <paul.daumlechner@live.de>
Co-authored-by: Adam Goode <agoode@google.com>
Co-authored-by: Alberto Geniola <albertogeniola@users.noreply.github.com>
Co-authored-by: tronikos <tronikos@users.noreply.github.com>
Co-authored-by: Arne Keller <arne.keller@posteo.de>
Co-authored-by: Andrew Jackson <andrew@codechimp.org>
Co-authored-by: Brynley McDonald <brynley+github@zephire.nz>
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
Co-authored-by: Niels Mündler <niels.muendler@inf.ethz.ch>
Co-authored-by: Craig Andrews <candrews@integralblue.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Matthew FitzGerald-Chamberlain <mattfitzgeraldchamberlain@proton.me>
Co-authored-by: Adam Štrauch <cx@initd.cz>
Co-authored-by: cdnninja <jaydenaphillips@gmail.com>
Co-authored-by: Stefan Agner <stefan@agner.ch>
Co-authored-by: Kenny Root <kenny@the-b.org>
Co-authored-by: Krzysztof Dąbrowski <krzysdabro@live.com>
Co-authored-by: Andrea Arcangeli <aagit@users.noreply.github.com>
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
Fix section translations check (#133683)
Fix test coverage in workday (#133616)
Fix spelling of "Gateway PIN" and remove two excessive spaces (#133716)
Fix Peblar current limit user setting value (#133753)
Fix binary_sensor typing in Overkiz (#133782)
Fix errors in HitachiDHW in Overkiz (#133765)
Fix typo in ElevenLabs (#133819)
fixture from LCN tests (#133821)
fix yesterday sensor extra_state invalid typing (#133425)
Fix TypeError in maxcube climate action inference logic (#133853)
Fix tplink camera entity unique id (#133880)
Fix a history stats bug when window and tracked state change simultaneously (#133770)
fixes #133904
Fix duplicate call to async_register_preload_platform (#133909)
Fix missing % in string for generic camera (#133925)
Fix Peblar import in data coordinator (#133926)
Fix reload modbus component issue (#133820)
Fix error when device goes offline (#133848)
fix "Slow" response leads to "Could not find a charging station" #124129 (#133889)
fix #124129
Fix swiss public transport line field none (#133964)
fix #133116
Fix Nord Pool empty response (#134033)
Fix KNX config flow translations and add data descriptions (#134078)
Fix Wake on LAN Port input as Box instead of Slider (#134216)
Fix duplicate sensor disk entities in Systemmonitor (#134139)
Fix Onkyo volume rounding (#134157)
Fix 400 This voice does not support speaking rate or pitch parameters at this time for Google Cloud Journey voices (#134255)
Fix SQL sensor name (#134414)
Fix a few small typos in peblar (#134481)
Fix input_datetime.set_datetime not accepting 0 timestamp value (#134489)
Fix backup dir not existing (#134506)
Fix activating backup retention config on startup (#134523)
fix generic component tests (#134569)
2025-01-03 19:19:01 +01:00
Franck Nijhof
ac4bd32137 Bump version to 2025.1.0 2025-01-03 17:31:21 +00:00
Abílio Costa
7e1e63374f Bump whirlpool-sixth-sense to 0.18.11 (#134562) 2025-01-03 17:31:05 +00:00
Robert Resch
03fd6a901b Cherry pick single file from #134020 to fix generic component tests (#134569) 2025-01-03 18:24:46 +01:00
Franck Nijhof
46b2830699 Bump version to 2025.1.0b9 2025-01-03 15:41:14 +00:00
Bram Kragten
b416ae1387 Update frontend to 20250103.0 (#134561) 2025-01-03 15:41:06 +00:00
Erik Montnemery
962b880146 Log cloud backup agent file list (#134556) 2025-01-03 15:41:03 +00:00
Erik Montnemery
9c98125d20 Avoid early COMPLETED event when restoring backup (#134546) 2025-01-03 15:41:00 +00:00
Joost Lekkerkerker
c9f1fee6bb Set Ituran to silver (#134538) 2025-01-03 15:40:57 +00:00
Erik Montnemery
9b8ed9643f Add backup as after_dependency of frontend (#134534) 2025-01-03 15:40:54 +00:00
Erik Montnemery
7ea7178aa9 Simplify error handling when creating backup (#134528) 2025-01-03 15:40:51 +00:00
starkillerOG
c5746291cc Add Reolink proxy for playback (#133916) 2025-01-03 15:40:46 +00:00
Franck Nijhof
1af384bc0a Bump version to 2025.1.0b8 2025-01-03 09:56:51 +00:00
Franck Nijhof
ea82c1b73e Only load Peblar customization update entity when present (#134526) 2025-01-03 09:56:39 +00:00
Franck Nijhof
96936f5f4a Update peblar to v0.3.2 (#134524) 2025-01-03 09:56:36 +00:00
Erik Montnemery
316f93f208 Fix activating backup retention config on startup (#134523) 2025-01-03 09:56:33 +00:00
Robert Svensson
f719a14537 Handle deCONZ color temp 0 is never used when calculating kelvin CT (#134521) 2025-01-03 09:56:30 +00:00
Erik Montnemery
a830a14342 Improve recorder schema migration error test (#134518) 2025-01-03 09:56:27 +00:00
Erik Montnemery
1b67d51e24 Add error prints for recorder fatal errors (#134517) 2025-01-03 09:56:23 +00:00
Paulus Schoutsen
e1f6475623 Fix backup dir not existing (#134506) 2025-01-03 09:56:20 +00:00
Josef Zweck
59a3fe857b Bump aioacaia to 0.1.13 (#134496) 2025-01-03 09:56:17 +00:00
Franck Nijhof
f364e29148 Fix input_datetime.set_datetime not accepting 0 timestamp value (#134489) 2025-01-03 09:56:13 +00:00
Franck Nijhof
47190e4ac1 Bump version to 2025.1.0b7 2025-01-02 22:23:54 +00:00
Franck Nijhof
7fa1983da0 Update peblar to 0.3.1 (#134486) 2025-01-02 22:21:44 +00:00
Norbert Rittel
9b906e94c7 Fix a few small typos in peblar (#134481) 2025-01-02 22:21:16 +00:00
Robert Resch
5ac4d5bef7 Bump deebot-client to 10.1.0 (#134470) 2025-01-02 21:36:44 +00:00
Erik Montnemery
995e222959 Don't start recorder if a database from the future is used (#134467) 2025-01-02 21:36:41 +00:00
Duco Sebel
61ac8e7e8c Include host in Peblar EV-Charger discovery setup description (#133954)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-01-02 21:36:38 +00:00
Andrea Arcangeli
67ec71031d open_meteo: correct UTC timezone handling in hourly forecast (#129664)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-01-02 21:36:33 +00:00
Franck Nijhof
59f866bcf7 Bump version to 2025.1.0b6 2025-01-02 17:21:58 +00:00
Bram Kragten
d75d970fc7 Update frontend to 20250102.0 (#134462) 2025-01-02 17:21:47 +00:00
Josef Zweck
0a13516ddd Bump aioacaia to 0.1.12 (#134454) 2025-01-02 17:21:43 +00:00
Erik Montnemery
21aca3c146 Initialize AppleTVConfigFlow.identifiers (#134443) 2025-01-02 17:21:40 +00:00
Erik Montnemery
faf9c2ee40 Adjust language in backup integration (#134440)
* Adjust language in backup integration

* Update tests
2025-01-02 17:21:37 +00:00
Erik Montnemery
e89a1da462 Export IncorrectPasswordError from backup integration (#134436) 2025-01-02 17:21:34 +00:00
Erik Montnemery
8ace126d9f Improve hassio backup create and restore parameter checks (#134434) 2025-01-02 17:21:31 +00:00
TheJulianJES
ca6bae6b15 Bump ZHA to 0.0.44 (#134427) 2025-01-02 17:21:28 +00:00
Michael Hansen
c9ba267fec Bump intents to 2025.1.1 (#134424) 2025-01-02 17:21:24 +00:00
G Johansson
0e79c17cb8 Fix SQL sensor name (#134414) 2025-01-02 17:21:21 +00:00
Krzysztof Dąbrowski
4cb413521d Add state attributes translations to GIOS (#134390) 2025-01-02 17:21:18 +00:00
Brett Adams
f97439eaab Check vehicle metadata (#134381) 2025-01-02 17:21:15 +00:00
Kenny Root
568b637dc5 Bump zabbix-utils to 2.0.2 (#134373) 2025-01-02 17:21:12 +00:00
Stefan Agner
3a8f71a64a Improve Supervisor backup error handling (#134346)
* Raise Home Assistant error in case backup restore fails

This change raises a Home Assistant error in case the backup restore
fails. The Supervisor is checking some common issues before starting
the actual restore in background. This early checks raise an exception
(represented by a HTTP 400 error). This change catches such errors and
raises a Home Assistant error with the message from the Supervisor
exception.

* Add test coverage
2025-01-02 17:21:09 +00:00
cdnninja
fea3dfda94 Vesync unload error when not all platforms used (#134166) 2025-01-02 17:21:05 +00:00
Adam Štrauch
554cdd1784 Add new ID LAP-V201S-AEUR for Vital200S AirPurifier in Vesync integration (#133999) 2025-01-02 17:21:02 +00:00
Matthew FitzGerald-Chamberlain
ce7a0650e4 Improve support for Aprilaire S86WMUPR (#133974) 2025-01-02 17:20:59 +00:00
Martin Hjelmare
5895aa4cde Handle backup errors more consistently (#133522)
* Add backup manager and read writer errors

* Clean up not needed default argument

* Clean up todo comment

* Trap agent bugs during upload

* Always release stream

* Clean up leftover

* Update test for backup with automatic settings

* Fix use of vol.Any

* Refactor test helper

* Only update successful timestamp if completed event is sent

* Always delete surplus copies

* Fix after rebase

* Fix after rebase

* Revert "Fix use of vol.Any"

This reverts commit 28fd7a544899bb6ed05f771e9e608bc5b41d2b5e.

* Inherit BackupReaderWriterError in IncorrectPasswordError

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-01-02 17:20:52 +00:00
Craig Andrews
bd5477729a Improve is docker env checks (#132404)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Sander Hoentjen <sander@hoentjen.eu>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Robert Resch <robert@resch.dev>
2025-01-02 17:20:36 +00:00
Paulus Schoutsen
2e21ac7001 Bump version to 2025.1.0b5 2024-12-31 22:10:20 +00:00
Josef Zweck
ab6394b26c Bump pylamarzocco to 1.4.6 (#134367) 2024-12-31 22:10:09 +00:00
Bram Kragten
0ae4a9a911 Update frontend to 20241231.0 (#134363) 2024-12-31 22:10:08 +00:00
Michael Hansen
f709989717 Revert speech seconds to 0.3 (#134360) 2024-12-31 22:10:05 +00:00
Michael Hansen
952363eca3 Bump hassil to 2.1.0 (#134359) 2024-12-31 22:10:05 +00:00
Simone Chemelli
a7995e0093 Bump aioshelly to 12.2.0 (#134352) 2024-12-31 22:10:04 +00:00
Niels Mündler
1064ef9dc6 Bump pysynthru version to 0.8.0 (#134294) 2024-12-31 22:10:03 +00:00
starkillerOG
c2f06fbd47 Bump reolink-aio to 0.11.6 (#134286) 2024-12-31 22:10:02 +00:00
Bram Kragten
a36fd09644 Set backup manager state to completed when restore is finished (#134283) 2024-12-31 22:10:01 +00:00
tronikos
b89995a79f Allow automations to pass any conversation_id for Google Generative AI (#134251) 2024-12-31 22:10:00 +00:00
Brett Adams
c908f823c5 Handle missing application credentials in Tesla Fleet (#134237)
* Handle missing application credentials

* Add tests

* Test reauth starts

* Only catch ValueError
2024-12-31 22:09:59 +00:00
Simone Chemelli
229c32b0da Bump aiocomelit to 0.10.1 (#134214) 2024-12-31 22:09:59 +00:00
Dave T
e303a9a2b5 Add stream preview to options flow in generic camera (#133927)
* Add stream preview to options flow

* Increase test coverage

* Code review: use correct flow handler type in cast

* Restore test coverage to 100%

* Remove error and test that can't be triggered yet
2024-12-31 22:09:58 +00:00
Brynley McDonald
54fa30c2b8 Update Flick Electric API (#133475) 2024-12-31 22:09:57 +00:00
Joost Lekkerkerker
fbd6cf7244 Improve Mealie set mealplan service (#130606)
* Improve Mealie set mealplan service

* Fix

* Fix
2024-12-31 22:09:56 +00:00
Bram Kragten
c10175e25c Bump version to 2025.1.0b4 2024-12-30 20:06:44 +01:00
Bram Kragten
82f0e8cc19 Update frontend to 20241230.0 (#134284) 2024-12-30 20:06:32 +01:00
Andrew Jackson
623e1b08b8 Bump aiomealie to 0.9.5 (#134274) 2024-12-30 20:06:31 +01:00
Norbert Rittel
0c73251004 Remove excessive period at end of action name (#134272) 2024-12-30 20:06:30 +01:00
Arne Keller
d9057fc43e ollama: update to 0.4.5 (#134265) 2024-12-30 20:06:29 +01:00
Josef Zweck
077c9e62b4 Bump pylamarzocco to 1.4.5 (#134259)
* Bump pylamarzocco to 1.4.4

* Bump pylamarzocco to 1.4.5

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2024-12-30 20:06:28 +01:00
tronikos
7456ce1c01 Fix 400 This voice does not support speaking rate or pitch parameters at this time for Google Cloud Journey voices (#134255) 2024-12-30 20:06:28 +01:00
tronikos
a627fa70a7 Avoid KeyError for ignored entries in async_step_zeroconf of Android TV Remote (#134250) 2024-12-30 20:06:27 +01:00
Michael
c402eaec3f Bump aiopegelonline to 0.1.1 (#134230)
bump aiopegelonline to 0.1.1
2024-12-30 20:06:26 +01:00
tronikos
ea51ecd384 Bump opower to 0.8.7 (#134228)
* Bump opower to 0.8.7

* update deps
2024-12-30 20:06:25 +01:00
Artur Pragacz
0873d27d7b Fix Onkyo volume rounding (#134157) 2024-12-30 20:06:23 +01:00
G Johansson
45fd7fb6d5 Fix duplicate sensor disk entities in Systemmonitor (#134139) 2024-12-30 20:06:23 +01:00
Alberto Geniola
e22685640c Bump elmax-api (#133845) 2024-12-30 20:06:22 +01:00
Adam Goode
5756166545 Quickly process unavailable metrics in Prometheus (#133219) 2024-12-30 20:06:21 +01:00
Norbert Rittel
2f8a92c725 Make triggers and condition for monetary sensor consistent (#131184) 2024-12-30 20:06:20 +01:00
Paul Daumlechner
cf9ccc6fb4 Bump pyvlx to 0.2.26 (#115483) 2024-12-30 20:06:19 +01:00
Paulus Schoutsen
b05b9b9a33 Bump version to 2025.1.0b3 2024-12-29 18:37:17 +00:00
Paulus Schoutsen
352d5d14a3 Bump frontend to 20241229.0 (#134225) 2024-12-29 18:37:04 +00:00
Michael Hansen
52e47f55c8 Bump VoIP utils to 0.2.2 (#134219) 2024-12-29 18:37:03 +00:00
Lucas Gasenzer
0470bff9a2 Fix Wake on LAN Port input as Box instead of Slider (#134216) 2024-12-29 18:37:02 +00:00
Michael
a38839b420 Make feedreader recoverable (#134202)
raise ConfigEntryNotReady on connection errors during setup
2024-12-29 18:37:01 +00:00
Michael
394b2be40a Make PEGELONLINE recoverable (#134199) 2024-12-29 18:37:00 +00:00
Matthias Alphart
291dd6dc66 Update knx-frontend to 2024.12.26.233449 (#134184) 2024-12-29 18:36:59 +00:00
G Johansson
ef87366346 Add missing device classes in scrape (#134141) 2024-12-29 18:36:57 +00:00
Joost Lekkerkerker
bd243f68a4 Bump yt-dlp to 2024.12.23 (#134131) 2024-12-29 18:36:57 +00:00
Aaron Bach
951baa3972 Bump pytile to 2024.12.0 (#134103) 2024-12-29 18:36:56 +00:00
Joost Lekkerkerker
1874eec8b3 Bump python-homeassistant-analytics to 0.8.1 (#134101) 2024-12-29 18:36:55 +00:00
Joost Lekkerkerker
3120a90f26 Make elevenlabs recoverable (#134094)
* Make elevenlabs recoverable

* Add tests for entry setup

* Use the same fixtures for setup and config flow

* Update tests/components/elevenlabs/test_setup.py

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

---------

Co-authored-by: Simon Sorg <simon.sorg@student.hpi.de>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Simon <80467011+sorgfresser@users.noreply.github.com>
2024-12-29 18:36:54 +00:00
Joost Lekkerkerker
7032361bf5 Make google tasks recoverable (#134092) 2024-12-29 18:36:53 +00:00
Matthias Alphart
bd786b53ee Fix KNX config flow translations and add data descriptions (#134078)
* Fix KNX config flow translations and add data descriptions

* Update strings.json

* typo
2024-12-29 18:36:53 +00:00
Noah Husby
f6a9cd38c0 Remove timeout from Russound RIO initialization (#134070) 2024-12-29 18:36:51 +00:00
Aaron Bach
1a909d3a8a Change SimpliSafe websocket reconnection log to DEBUG-level (#134063)
* Change SimpliSafe websocket reconnection log to `DEBUG`-level

* revert
2024-12-29 18:36:51 +00:00
Noah Husby
b84ae2abc3 Bump aiorussound to 4.1.1 (#134058)
* Bump aiorussound to 4.1.1

* Trigger Build

* Trigger Build
2024-12-29 18:36:50 +00:00
G Johansson
15b80c59fc Cleanup devices in Nord Pool from reconfiguration (#134043)
* Cleanup devices in Nord Pool from reconfiguration

* Mods

* Mod
2024-12-29 18:36:49 +00:00
G Johansson
c11bdcc949 Fix Nord Pool empty response (#134033)
* Fix Nord Pool empty response

* Mods

* reset validate prices
2024-12-29 18:36:48 +00:00
Allen Porter
1957ab1ccf Improve Google Tasks error messages (#134023) 2024-12-29 18:36:47 +00:00
Josef Zweck
ef2af44795 Bump pylamarzocco to 1.4.3 (#134008) 2024-12-29 18:36:47 +00:00
J. Nick Koston
f0e8360401 Ensure all states have been migrated to use timestamps (#134007) 2024-12-29 18:36:46 +00:00
Cyrill Raccaud
03fb136218 Fix swiss public transport line field none (#133964)
* fix #133116

The line can theoretically be none, when no line info is available (lets say walking sections first?)

* fix line field

* add unit test with missing line field
2024-12-29 18:36:45 +00:00
Bram Kragten
d415b7bc8d Bump version to 2025.1.0b2 2024-12-24 16:42:54 +01:00
Bram Kragten
9242b67e0d Update frontend to 20241224.0 (#133963) 2024-12-24 16:42:36 +01:00
Marc Mueller
6e7d095831 Update Jinja2 to 3.1.5 (#133951) 2024-12-24 16:42:35 +01:00
Joost Lekkerkerker
ef05133a66 Use SignedSession in Xbox (#133938) 2024-12-24 16:42:34 +01:00
Franck Nijhof
7b2fc282e5 Update apprise to v1.9.1 (#133936) 2024-12-24 16:42:33 +01:00
Philipp Danner
4ca17dbb9e fix "Slow" response leads to "Could not find a charging station" #124129 (#133889)
fix #124129
2024-12-24 16:42:32 +01:00
Khole
5d7a22fa76 Hive: Fix error when device goes offline (#133848) 2024-12-24 16:42:31 +01:00
Claudio Ruggeri - CR-Tech
502fbe65ee Fix reload modbus component issue (#133820)
fix issue 116675
2024-12-24 16:42:31 +01:00
Franck Nijhof
ce83071900 Bump version to 2025.1.0b1 2024-12-24 08:24:58 +00:00
G-Two
4f1e9b2338 Stop using shared aiohttp client session for Subaru integration (#133931) 2024-12-24 08:24:37 +00:00
Franck Nijhof
f23bc51b88 Fix Peblar import in data coordinator (#133926) 2024-12-24 08:24:34 +00:00
Dave T
44150e9fd7 Fix missing % in string for generic camera (#133925)
Fix missing % in generic camera string
2024-12-24 08:24:31 +00:00
Brett Adams
cf9686a802 Slow down polling in Teslemetry (#133924) 2024-12-24 08:24:27 +00:00
Abílio Costa
657e5b73b6 Add cronsim to default dependencies (#133913) 2024-12-24 08:24:24 +00:00
J. Nick Koston
d3666ecf8a Fix duplicate call to async_register_preload_platform (#133909) 2024-12-24 08:24:21 +00:00
J. Nick Koston
bed186cce4 Ensure cloud and recorder backup platforms do not have to wait for the import executor (#133907)
* Ensure cloud and recorder backup platforms do not have to wait for the import executor

partially fixes #133904

* backup.backup as well
2024-12-24 08:24:18 +00:00
J. Nick Koston
2b8240746a Sort integration platforms preload list (#133905)
* Sort integration platforms preload list

https://github.com/home-assistant/core/pull/133856#discussion_r1895385026

* sort

* Sort them all

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2024-12-24 08:24:14 +00:00
Martin Mrazik
efabb82cb6 Map RGB+CCT to RGB for WLED (#133900) 2024-12-24 08:24:11 +00:00
Jordi
80955ba821 Add Harvey virtual integration (#133874)
Add harvey virtual integration
2024-12-24 08:24:07 +00:00
karwosts
bb371c87d5 Fix a history stats bug when window and tracked state change simultaneously (#133770) 2024-12-24 08:24:04 +00:00
Thomas55555
7ce563b0b4 Catch ClientConnectorError and TimeOutError in APSystems (#132027) 2024-12-24 08:24:00 +00:00
Franck Nijhof
c2f6e5036e Bump version to 2025.1.0b0 2024-12-23 15:56:12 +00:00
3736 changed files with 107906 additions and 34183 deletions

View File

@@ -62,7 +62,7 @@
"json.schemas": [ "json.schemas": [
{ {
"fileMatch": ["homeassistant/components/*/manifest.json"], "fileMatch": ["homeassistant/components/*/manifest.json"],
"url": "./script/json_schemas/manifest_schema.json" "url": "${containerWorkspaceFolder}/script/json_schemas/manifest_schema.json"
} }
] ]
} }

11
.gitattributes vendored
View File

@@ -11,3 +11,14 @@
*.pcm binary *.pcm binary
Dockerfile.dev linguist-language=Dockerfile Dockerfile.dev linguist-language=Dockerfile
# Generated files
CODEOWNERS linguist-generated=true
Dockerfile linguist-generated=true
homeassistant/generated/*.py linguist-generated=true
mypy.ini linguist-generated=true
requirements.txt linguist-generated=true
requirements_all.txt linguist-generated=true
requirements_test_all.txt linguist-generated=true
requirements_test_pre_commit.txt linguist-generated=true
script/hassfest/docker/Dockerfile linguist-generated=true

View File

@@ -46,6 +46,8 @@
- This PR fixes or closes issue: fixes # - This PR fixes or closes issue: fixes #
- This PR is related to issue: - This PR is related to issue:
- Link to documentation pull request: - Link to documentation pull request:
- Link to developer documentation pull request:
- Link to frontend pull request:
## Checklist ## Checklist
<!-- <!--

View File

@@ -32,7 +32,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
@@ -69,7 +69,7 @@ jobs:
run: find ./homeassistant/components/*/translations -name "*.json" | tar zcvf translations.tar.gz -T - run: find ./homeassistant/components/*/translations -name "*.json" | tar zcvf translations.tar.gz -T -
- name: Upload translations - name: Upload translations
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: translations name: translations
path: translations.tar.gz path: translations.tar.gz
@@ -94,7 +94,7 @@ jobs:
- name: Download nightly wheels of frontend - name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev' if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v7 uses: dawidd6/action-download-artifact@v8
with: with:
github_token: ${{secrets.GITHUB_TOKEN}} github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/frontend repo: home-assistant/frontend
@@ -105,7 +105,7 @@ jobs:
- name: Download nightly wheels of intents - name: Download nightly wheels of intents
if: needs.init.outputs.channel == 'dev' if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v7 uses: dawidd6/action-download-artifact@v8
with: with:
github_token: ${{secrets.GITHUB_TOKEN}} github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/intents-package repo: home-assistant/intents-package
@@ -116,7 +116,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev' if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
@@ -454,7 +454,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
@@ -509,7 +509,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image - name: Build Docker image
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
with: with:
context: . # So action will not pull the repository again context: . # So action will not pull the repository again
file: ./script/hassfest/docker/Dockerfile file: ./script/hassfest/docker/Dockerfile
@@ -522,7 +522,7 @@ jobs:
- name: Push Docker image - name: Push Docker image
if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true' if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true'
id: push id: push
uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 uses: docker/build-push-action@ca877d9245402d1537745e0e356eab47c3520991 # v6.13.0
with: with:
context: . # So action will not pull the repository again context: . # So action will not pull the repository again
file: ./script/hassfest/docker/Dockerfile file: ./script/hassfest/docker/Dockerfile
@@ -531,7 +531,7 @@ jobs:
- name: Generate artifact attestation - name: Generate artifact attestation
if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true' if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true'
uses: actions/attest-build-provenance@7668571508540a607bdfd90a87a560489fe372eb # v2.1.0 uses: actions/attest-build-provenance@520d128f165991a6c774bcb264f323e3d70747f4 # v2.2.0
with: with:
subject-name: ${{ env.HASSFEST_IMAGE_NAME }} subject-name: ${{ env.HASSFEST_IMAGE_NAME }}
subject-digest: ${{ steps.push.outputs.digest }} subject-digest: ${{ steps.push.outputs.digest }}

View File

@@ -40,9 +40,9 @@ env:
CACHE_VERSION: 11 CACHE_VERSION: 11
UV_CACHE_VERSION: 1 UV_CACHE_VERSION: 1
MYPY_CACHE_VERSION: 9 MYPY_CACHE_VERSION: 9
HA_SHORT_VERSION: "2025.2" HA_SHORT_VERSION: "2025.3"
DEFAULT_PYTHON: "3.12" DEFAULT_PYTHON: "3.13"
ALL_PYTHON_VERSIONS: "['3.12', '3.13']" ALL_PYTHON_VERSIONS: "['3.13']"
# 10.3 is the oldest supported version # 10.3 is the oldest supported version
# - 10.3.32 is the version currently shipped with Synology (as of 17 Feb 2022) # - 10.3.32 is the version currently shipped with Synology (as of 17 Feb 2022)
# 10.6 is the current long-term-support # 10.6 is the current long-term-support
@@ -234,7 +234,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -279,7 +279,7 @@ jobs:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
id: python id: python
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
@@ -319,7 +319,7 @@ jobs:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
id: python id: python
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
@@ -359,7 +359,7 @@ jobs:
- name: Check out code from GitHub - name: Check out code from GitHub
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
id: python id: python
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
@@ -469,7 +469,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
@@ -537,7 +537,7 @@ jobs:
python --version python --version
uv pip freeze >> pip_freeze.txt uv pip freeze >> pip_freeze.txt
- name: Upload pip_freeze artifact - name: Upload pip_freeze artifact
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: pip-freeze-${{ matrix.python-version }} name: pip-freeze-${{ matrix.python-version }}
path: pip_freeze.txt path: pip_freeze.txt
@@ -572,7 +572,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -605,7 +605,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -643,7 +643,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
@@ -661,7 +661,7 @@ jobs:
. venv/bin/activate . venv/bin/activate
python -m script.licenses extract --output-file=licenses-${{ matrix.python-version }}.json python -m script.licenses extract --output-file=licenses-${{ matrix.python-version }}.json
- name: Upload licenses - name: Upload licenses
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: licenses-${{ github.run_number }}-${{ matrix.python-version }} name: licenses-${{ github.run_number }}-${{ matrix.python-version }}
path: licenses-${{ matrix.python-version }}.json path: licenses-${{ matrix.python-version }}.json
@@ -686,7 +686,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -733,7 +733,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -778,7 +778,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -859,7 +859,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -877,7 +877,7 @@ jobs:
. venv/bin/activate . venv/bin/activate
python -m script.split_tests ${{ needs.info.outputs.test_group_count }} tests python -m script.split_tests ${{ needs.info.outputs.test_group_count }} tests
- name: Upload pytest_buckets - name: Upload pytest_buckets
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: pytest_buckets name: pytest_buckets
path: pytest_buckets.txt path: pytest_buckets.txt
@@ -923,7 +923,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
@@ -979,14 +979,14 @@ jobs:
2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt 2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt
- name: Upload pytest output - name: Upload pytest output
if: success() || failure() && steps.pytest-full.conclusion == 'failure' if: success() || failure() && steps.pytest-full.conclusion == 'failure'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.group }} name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.group }}
path: pytest-*.txt path: pytest-*.txt
overwrite: true overwrite: true
- name: Upload coverage artifact - name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true' if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }} name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml path: coverage.xml
@@ -1044,7 +1044,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
@@ -1106,7 +1106,7 @@ jobs:
2>&1 | tee pytest-${{ matrix.python-version }}-${mariadb}.txt 2>&1 | tee pytest-${{ matrix.python-version }}-${mariadb}.txt
- name: Upload pytest output - name: Upload pytest output
if: success() || failure() && steps.pytest-partial.conclusion == 'failure' if: success() || failure() && steps.pytest-partial.conclusion == 'failure'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.mariadb }} steps.pytest-partial.outputs.mariadb }}
@@ -1114,7 +1114,7 @@ jobs:
overwrite: true overwrite: true
- name: Upload coverage artifact - name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true' if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: coverage-${{ matrix.python-version }}-${{ name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.mariadb }} steps.pytest-partial.outputs.mariadb }}
@@ -1173,7 +1173,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
@@ -1236,7 +1236,7 @@ jobs:
2>&1 | tee pytest-${{ matrix.python-version }}-${postgresql}.txt 2>&1 | tee pytest-${{ matrix.python-version }}-${postgresql}.txt
- name: Upload pytest output - name: Upload pytest output
if: success() || failure() && steps.pytest-partial.conclusion == 'failure' if: success() || failure() && steps.pytest-partial.conclusion == 'failure'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.postgresql }} steps.pytest-partial.outputs.postgresql }}
@@ -1244,7 +1244,7 @@ jobs:
overwrite: true overwrite: true
- name: Upload coverage artifact - name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true' if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: coverage-${{ matrix.python-version }}-${{ name: coverage-${{ matrix.python-version }}-${{
steps.pytest-partial.outputs.postgresql }} steps.pytest-partial.outputs.postgresql }}
@@ -1273,7 +1273,7 @@ jobs:
pattern: coverage-* pattern: coverage-*
- name: Upload coverage to Codecov - name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'true' if: needs.info.outputs.test_full_suite == 'true'
uses: codecov/codecov-action@v5.1.2 uses: codecov/codecov-action@v5.3.1
with: with:
fail_ci_if_error: true fail_ci_if_error: true
flags: full-suite flags: full-suite
@@ -1319,7 +1319,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }} - name: Set up Python ${{ matrix.python-version }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
@@ -1378,14 +1378,14 @@ jobs:
2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt 2>&1 | tee pytest-${{ matrix.python-version }}-${{ matrix.group }}.txt
- name: Upload pytest output - name: Upload pytest output
if: success() || failure() && steps.pytest-partial.conclusion == 'failure' if: success() || failure() && steps.pytest-partial.conclusion == 'failure'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.group }} name: pytest-${{ github.run_number }}-${{ matrix.python-version }}-${{ matrix.group }}
path: pytest-*.txt path: pytest-*.txt
overwrite: true overwrite: true
- name: Upload coverage artifact - name: Upload coverage artifact
if: needs.info.outputs.skip_coverage != 'true' if: needs.info.outputs.skip_coverage != 'true'
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }} name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml path: coverage.xml
@@ -1411,7 +1411,7 @@ jobs:
pattern: coverage-* pattern: coverage-*
- name: Upload coverage to Codecov - name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'false' if: needs.info.outputs.test_full_suite == 'false'
uses: codecov/codecov-action@v5.1.2 uses: codecov/codecov-action@v5.3.1
with: with:
fail_ci_if_error: true fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }} token: ${{ secrets.CODECOV_TOKEN }}

View File

@@ -24,11 +24,11 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v3.28.0 uses: github/codeql-action/init@v3.28.8
with: with:
languages: python languages: python
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3.28.0 uses: github/codeql-action/analyze@v3.28.8
with: with:
category: "/language:python" category: "/language:python"

View File

@@ -17,7 +17,7 @@ jobs:
# - No PRs marked as no-stale # - No PRs marked as no-stale
# - No issues (-1) # - No issues (-1)
- name: 60 days stale PRs policy - name: 60 days stale PRs policy
uses: actions/stale@v9.0.0 uses: actions/stale@v9.1.0
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 60 days-before-stale: 60
@@ -57,7 +57,7 @@ jobs:
# - No issues marked as no-stale or help-wanted # - No issues marked as no-stale or help-wanted
# - No PRs (-1) # - No PRs (-1)
- name: 90 days stale issues - name: 90 days stale issues
uses: actions/stale@v9.0.0 uses: actions/stale@v9.1.0
with: with:
repo-token: ${{ steps.token.outputs.token }} repo-token: ${{ steps.token.outputs.token }}
days-before-stale: 90 days-before-stale: 90
@@ -87,7 +87,7 @@ jobs:
# - No Issues marked as no-stale or help-wanted # - No Issues marked as no-stale or help-wanted
# - No PRs (-1) # - No PRs (-1)
- name: Needs more information stale issues policy - name: Needs more information stale issues policy
uses: actions/stale@v9.0.0 uses: actions/stale@v9.1.0
with: with:
repo-token: ${{ steps.token.outputs.token }} repo-token: ${{ steps.token.outputs.token }}
only-labels: "needs-more-information" only-labels: "needs-more-information"

View File

@@ -10,7 +10,7 @@ on:
- "**strings.json" - "**strings.json"
env: env:
DEFAULT_PYTHON: "3.12" DEFAULT_PYTHON: "3.13"
jobs: jobs:
upload: upload:
@@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v4.2.2 uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}

View File

@@ -17,7 +17,7 @@ on:
- "script/gen_requirements_all.py" - "script/gen_requirements_all.py"
env: env:
DEFAULT_PYTHON: "3.12" DEFAULT_PYTHON: "3.13"
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.ref_name}} group: ${{ github.workflow }}-${{ github.ref_name}}
@@ -36,7 +36,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }} - name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python id: python
uses: actions/setup-python@v5.3.0 uses: actions/setup-python@v5.4.0
with: with:
python-version: ${{ env.DEFAULT_PYTHON }} python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true check-latest: true
@@ -91,7 +91,7 @@ jobs:
) > build_constraints.txt ) > build_constraints.txt
- name: Upload env_file - name: Upload env_file
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: env_file name: env_file
path: ./.env_file path: ./.env_file
@@ -99,14 +99,14 @@ jobs:
overwrite: true overwrite: true
- name: Upload build_constraints - name: Upload build_constraints
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: build_constraints name: build_constraints
path: ./build_constraints.txt path: ./build_constraints.txt
overwrite: true overwrite: true
- name: Upload requirements_diff - name: Upload requirements_diff
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: requirements_diff name: requirements_diff
path: ./requirements_diff.txt path: ./requirements_diff.txt
@@ -118,7 +118,7 @@ jobs:
python -m script.gen_requirements_all ci python -m script.gen_requirements_all ci
- name: Upload requirements_all_wheels - name: Upload requirements_all_wheels
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: requirements_all_wheels name: requirements_all_wheels
path: ./requirements_all_wheels_*.txt path: ./requirements_all_wheels_*.txt
@@ -131,7 +131,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
abi: ["cp312", "cp313"] abi: ["cp313"]
arch: ${{ fromJson(needs.init.outputs.architectures) }} arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps: steps:
- name: Checkout the repository - name: Checkout the repository
@@ -180,7 +180,7 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
abi: ["cp312", "cp313"] abi: ["cp313"]
arch: ${{ fromJson(needs.init.outputs.architectures) }} arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps: steps:
- name: Checkout the repository - name: Checkout the repository

View File

@@ -1,6 +1,6 @@
repos: repos:
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.6 rev: v0.9.1
hooks: hooks:
- id: ruff - id: ruff
args: args:
@@ -8,7 +8,7 @@ repos:
- id: ruff-format - id: ruff-format
files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.(py|pyi)$ files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.(py|pyi)$
- repo: https://github.com/codespell-project/codespell - repo: https://github.com/codespell-project/codespell
rev: v2.3.0 rev: v2.4.1
hooks: hooks:
- id: codespell - id: codespell
args: args:
@@ -61,13 +61,14 @@ repos:
name: mypy name: mypy
entry: script/run-in-env.sh mypy entry: script/run-in-env.sh mypy
language: script language: script
types_or: [python, pyi]
require_serial: true require_serial: true
types_or: [python, pyi]
files: ^(homeassistant|pylint)/.+\.(py|pyi)$ files: ^(homeassistant|pylint)/.+\.(py|pyi)$
- id: pylint - id: pylint
name: pylint name: pylint
entry: script/run-in-env.sh pylint -j 0 --ignore-missing-annotations=y entry: script/run-in-env.sh pylint --ignore-missing-annotations=y
language: script language: script
require_serial: true
types_or: [python, pyi] types_or: [python, pyi]
files: ^(homeassistant|tests)/.+\.(py|pyi)$ files: ^(homeassistant|tests)/.+\.(py|pyi)$
- id: gen_requirements_all - id: gen_requirements_all

View File

@@ -217,6 +217,7 @@ homeassistant.components.goalzero.*
homeassistant.components.google.* homeassistant.components.google.*
homeassistant.components.google_assistant_sdk.* homeassistant.components.google_assistant_sdk.*
homeassistant.components.google_cloud.* homeassistant.components.google_cloud.*
homeassistant.components.google_drive.*
homeassistant.components.google_photos.* homeassistant.components.google_photos.*
homeassistant.components.google_sheets.* homeassistant.components.google_sheets.*
homeassistant.components.govee_ble.* homeassistant.components.govee_ble.*
@@ -224,8 +225,10 @@ homeassistant.components.gpsd.*
homeassistant.components.greeneye_monitor.* homeassistant.components.greeneye_monitor.*
homeassistant.components.group.* homeassistant.components.group.*
homeassistant.components.guardian.* homeassistant.components.guardian.*
homeassistant.components.habitica.*
homeassistant.components.hardkernel.* homeassistant.components.hardkernel.*
homeassistant.components.hardware.* homeassistant.components.hardware.*
homeassistant.components.heos.*
homeassistant.components.here_travel_time.* homeassistant.components.here_travel_time.*
homeassistant.components.history.* homeassistant.components.history.*
homeassistant.components.history_stats.* homeassistant.components.history_stats.*
@@ -236,6 +239,7 @@ homeassistant.components.homeassistant_green.*
homeassistant.components.homeassistant_hardware.* homeassistant.components.homeassistant_hardware.*
homeassistant.components.homeassistant_sky_connect.* homeassistant.components.homeassistant_sky_connect.*
homeassistant.components.homeassistant_yellow.* homeassistant.components.homeassistant_yellow.*
homeassistant.components.homee.*
homeassistant.components.homekit.* homeassistant.components.homekit.*
homeassistant.components.homekit_controller homeassistant.components.homekit_controller
homeassistant.components.homekit_controller.alarm_control_panel homeassistant.components.homekit_controller.alarm_control_panel
@@ -261,6 +265,7 @@ homeassistant.components.image_processing.*
homeassistant.components.image_upload.* homeassistant.components.image_upload.*
homeassistant.components.imap.* homeassistant.components.imap.*
homeassistant.components.imgw_pib.* homeassistant.components.imgw_pib.*
homeassistant.components.incomfort.*
homeassistant.components.input_button.* homeassistant.components.input_button.*
homeassistant.components.input_select.* homeassistant.components.input_select.*
homeassistant.components.input_text.* homeassistant.components.input_text.*
@@ -306,12 +311,14 @@ homeassistant.components.logbook.*
homeassistant.components.logger.* homeassistant.components.logger.*
homeassistant.components.london_underground.* homeassistant.components.london_underground.*
homeassistant.components.lookin.* homeassistant.components.lookin.*
homeassistant.components.lovelace.*
homeassistant.components.luftdaten.* homeassistant.components.luftdaten.*
homeassistant.components.madvr.* homeassistant.components.madvr.*
homeassistant.components.manual.* homeassistant.components.manual.*
homeassistant.components.mastodon.* homeassistant.components.mastodon.*
homeassistant.components.matrix.* homeassistant.components.matrix.*
homeassistant.components.matter.* homeassistant.components.matter.*
homeassistant.components.mcp.*
homeassistant.components.mcp_server.* homeassistant.components.mcp_server.*
homeassistant.components.mealie.* homeassistant.components.mealie.*
homeassistant.components.media_extractor.* homeassistant.components.media_extractor.*
@@ -354,6 +361,7 @@ homeassistant.components.number.*
homeassistant.components.nut.* homeassistant.components.nut.*
homeassistant.components.onboarding.* homeassistant.components.onboarding.*
homeassistant.components.oncue.* homeassistant.components.oncue.*
homeassistant.components.onedrive.*
homeassistant.components.onewire.* homeassistant.components.onewire.*
homeassistant.components.onkyo.* homeassistant.components.onkyo.*
homeassistant.components.open_meteo.* homeassistant.components.open_meteo.*
@@ -371,6 +379,7 @@ homeassistant.components.panel_custom.*
homeassistant.components.peblar.* homeassistant.components.peblar.*
homeassistant.components.peco.* homeassistant.components.peco.*
homeassistant.components.persistent_notification.* homeassistant.components.persistent_notification.*
homeassistant.components.person.*
homeassistant.components.pi_hole.* homeassistant.components.pi_hole.*
homeassistant.components.ping.* homeassistant.components.ping.*
homeassistant.components.plugwise.* homeassistant.components.plugwise.*
@@ -385,6 +394,7 @@ homeassistant.components.purpleair.*
homeassistant.components.pushbullet.* homeassistant.components.pushbullet.*
homeassistant.components.pvoutput.* homeassistant.components.pvoutput.*
homeassistant.components.python_script.* homeassistant.components.python_script.*
homeassistant.components.qbus.*
homeassistant.components.qnap_qsw.* homeassistant.components.qnap_qsw.*
homeassistant.components.rabbitair.* homeassistant.components.rabbitair.*
homeassistant.components.radarr.* homeassistant.components.radarr.*

View File

@@ -1,5 +1,5 @@
{ {
// Please keep this file in sync with settings in home-assistant/.devcontainer/devcontainer.json // Please keep this file (mostly!) in sync with settings in home-assistant/.devcontainer/devcontainer.json
// Added --no-cov to work around TypeError: message must be set // Added --no-cov to work around TypeError: message must be set
// https://github.com/microsoft/vscode-python/issues/14067 // https://github.com/microsoft/vscode-python/issues/14067
"python.testing.pytestArgs": ["--no-cov"], "python.testing.pytestArgs": ["--no-cov"],
@@ -12,6 +12,7 @@
"fileMatch": [ "fileMatch": [
"homeassistant/components/*/manifest.json" "homeassistant/components/*/manifest.json"
], ],
// This value differs between working with devcontainer and locally, therefor this value should NOT be in sync!
"url": "./script/json_schemas/manifest_schema.json" "url": "./script/json_schemas/manifest_schema.json"
} }
] ]

44
CODEOWNERS generated
View File

@@ -566,6 +566,8 @@ build.json @home-assistant/supervisor
/tests/components/google_assistant_sdk/ @tronikos /tests/components/google_assistant_sdk/ @tronikos
/homeassistant/components/google_cloud/ @lufton @tronikos /homeassistant/components/google_cloud/ @lufton @tronikos
/tests/components/google_cloud/ @lufton @tronikos /tests/components/google_cloud/ @lufton @tronikos
/homeassistant/components/google_drive/ @tronikos
/tests/components/google_drive/ @tronikos
/homeassistant/components/google_generative_ai_conversation/ @tronikos /homeassistant/components/google_generative_ai_conversation/ @tronikos
/tests/components/google_generative_ai_conversation/ @tronikos /tests/components/google_generative_ai_conversation/ @tronikos
/homeassistant/components/google_mail/ @tkdrob /homeassistant/components/google_mail/ @tkdrob
@@ -623,8 +625,8 @@ build.json @home-assistant/supervisor
/tests/components/hlk_sw16/ @jameshilliard /tests/components/hlk_sw16/ @jameshilliard
/homeassistant/components/holiday/ @jrieger @gjohansson-ST /homeassistant/components/holiday/ @jrieger @gjohansson-ST
/tests/components/holiday/ @jrieger @gjohansson-ST /tests/components/holiday/ @jrieger @gjohansson-ST
/homeassistant/components/home_connect/ @DavidMStraub @Diegorro98 /homeassistant/components/home_connect/ @DavidMStraub @Diegorro98 @MartinHjelmare
/tests/components/home_connect/ @DavidMStraub @Diegorro98 /tests/components/home_connect/ @DavidMStraub @Diegorro98 @MartinHjelmare
/homeassistant/components/homeassistant/ @home-assistant/core /homeassistant/components/homeassistant/ @home-assistant/core
/tests/components/homeassistant/ @home-assistant/core /tests/components/homeassistant/ @home-assistant/core
/homeassistant/components/homeassistant_alerts/ @home-assistant/core /homeassistant/components/homeassistant_alerts/ @home-assistant/core
@@ -682,8 +684,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/iammeter/ @lewei50 /homeassistant/components/iammeter/ @lewei50
/homeassistant/components/iaqualink/ @flz /homeassistant/components/iaqualink/ @flz
/tests/components/iaqualink/ @flz /tests/components/iaqualink/ @flz
/homeassistant/components/ibeacon/ @bdraco
/tests/components/ibeacon/ @bdraco
/homeassistant/components/icloud/ @Quentame @nzapponi /homeassistant/components/icloud/ @Quentame @nzapponi
/tests/components/icloud/ @Quentame @nzapponi /tests/components/icloud/ @Quentame @nzapponi
/homeassistant/components/idasen_desk/ @abmantis /homeassistant/components/idasen_desk/ @abmantis
@@ -765,8 +765,8 @@ build.json @home-assistant/supervisor
/tests/components/ituran/ @shmuelzon /tests/components/ituran/ @shmuelzon
/homeassistant/components/izone/ @Swamp-Ig /homeassistant/components/izone/ @Swamp-Ig
/tests/components/izone/ @Swamp-Ig /tests/components/izone/ @Swamp-Ig
/homeassistant/components/jellyfin/ @j-stienstra @ctalkington /homeassistant/components/jellyfin/ @RunC0deRun @ctalkington
/tests/components/jellyfin/ @j-stienstra @ctalkington /tests/components/jellyfin/ @RunC0deRun @ctalkington
/homeassistant/components/jewish_calendar/ @tsvi /homeassistant/components/jewish_calendar/ @tsvi
/tests/components/jewish_calendar/ @tsvi /tests/components/jewish_calendar/ @tsvi
/homeassistant/components/juicenet/ @jesserockz /homeassistant/components/juicenet/ @jesserockz
@@ -893,6 +893,8 @@ build.json @home-assistant/supervisor
/tests/components/matrix/ @PaarthShah /tests/components/matrix/ @PaarthShah
/homeassistant/components/matter/ @home-assistant/matter /homeassistant/components/matter/ @home-assistant/matter
/tests/components/matter/ @home-assistant/matter /tests/components/matter/ @home-assistant/matter
/homeassistant/components/mcp/ @allenporter
/tests/components/mcp/ @allenporter
/homeassistant/components/mcp_server/ @allenporter /homeassistant/components/mcp_server/ @allenporter
/tests/components/mcp_server/ @allenporter /tests/components/mcp_server/ @allenporter
/homeassistant/components/mealie/ @joostlek @andrew-codechimp /homeassistant/components/mealie/ @joostlek @andrew-codechimp
@@ -1024,7 +1026,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/nina/ @DeerMaximum /homeassistant/components/nina/ @DeerMaximum
/tests/components/nina/ @DeerMaximum /tests/components/nina/ @DeerMaximum
/homeassistant/components/nissan_leaf/ @filcole /homeassistant/components/nissan_leaf/ @filcole
/homeassistant/components/nmbs/ @thibmaek
/homeassistant/components/noaa_tides/ @jdelaney72 /homeassistant/components/noaa_tides/ @jdelaney72
/homeassistant/components/nobo_hub/ @echoromeo @oyvindwe /homeassistant/components/nobo_hub/ @echoromeo @oyvindwe
/tests/components/nobo_hub/ @echoromeo @oyvindwe /tests/components/nobo_hub/ @echoromeo @oyvindwe
@@ -1072,12 +1073,14 @@ build.json @home-assistant/supervisor
/tests/components/oncue/ @bdraco @peterager /tests/components/oncue/ @bdraco @peterager
/homeassistant/components/ondilo_ico/ @JeromeHXP /homeassistant/components/ondilo_ico/ @JeromeHXP
/tests/components/ondilo_ico/ @JeromeHXP /tests/components/ondilo_ico/ @JeromeHXP
/homeassistant/components/onedrive/ @zweckj
/tests/components/onedrive/ @zweckj
/homeassistant/components/onewire/ @garbled1 @epenet /homeassistant/components/onewire/ @garbled1 @epenet
/tests/components/onewire/ @garbled1 @epenet /tests/components/onewire/ @garbled1 @epenet
/homeassistant/components/onkyo/ @arturpragacz @eclair4151 /homeassistant/components/onkyo/ @arturpragacz @eclair4151
/tests/components/onkyo/ @arturpragacz @eclair4151 /tests/components/onkyo/ @arturpragacz @eclair4151
/homeassistant/components/onvif/ @hunterjm /homeassistant/components/onvif/ @hunterjm @jterrace
/tests/components/onvif/ @hunterjm /tests/components/onvif/ @hunterjm @jterrace
/homeassistant/components/open_meteo/ @frenck /homeassistant/components/open_meteo/ @frenck
/tests/components/open_meteo/ @frenck /tests/components/open_meteo/ @frenck
/homeassistant/components/openai_conversation/ @balloob /homeassistant/components/openai_conversation/ @balloob
@@ -1192,6 +1195,8 @@ build.json @home-assistant/supervisor
/tests/components/pyload/ @tr4nt0r /tests/components/pyload/ @tr4nt0r
/homeassistant/components/qbittorrent/ @geoffreylagaisse @finder39 /homeassistant/components/qbittorrent/ @geoffreylagaisse @finder39
/tests/components/qbittorrent/ @geoffreylagaisse @finder39 /tests/components/qbittorrent/ @geoffreylagaisse @finder39
/homeassistant/components/qbus/ @Qbus-iot @thomasddn
/tests/components/qbus/ @Qbus-iot @thomasddn
/homeassistant/components/qingping/ @bdraco /homeassistant/components/qingping/ @bdraco
/tests/components/qingping/ @bdraco /tests/components/qingping/ @bdraco
/homeassistant/components/qld_bushfire/ @exxamalte /homeassistant/components/qld_bushfire/ @exxamalte
@@ -1268,8 +1273,8 @@ build.json @home-assistant/supervisor
/tests/components/rituals_perfume_genie/ @milanmeu @frenck /tests/components/rituals_perfume_genie/ @milanmeu @frenck
/homeassistant/components/rmvtransport/ @cgtobi /homeassistant/components/rmvtransport/ @cgtobi
/tests/components/rmvtransport/ @cgtobi /tests/components/rmvtransport/ @cgtobi
/homeassistant/components/roborock/ @Lash-L /homeassistant/components/roborock/ @Lash-L @allenporter
/tests/components/roborock/ @Lash-L /tests/components/roborock/ @Lash-L @allenporter
/homeassistant/components/roku/ @ctalkington /homeassistant/components/roku/ @ctalkington
/tests/components/roku/ @ctalkington /tests/components/roku/ @ctalkington
/homeassistant/components/romy/ @xeniter /homeassistant/components/romy/ @xeniter
@@ -1288,6 +1293,7 @@ build.json @home-assistant/supervisor
/tests/components/ruckus_unleashed/ @lanrat @ms264556 @gabe565 /tests/components/ruckus_unleashed/ @lanrat @ms264556 @gabe565
/homeassistant/components/russound_rio/ @noahhusby /homeassistant/components/russound_rio/ @noahhusby
/tests/components/russound_rio/ @noahhusby /tests/components/russound_rio/ @noahhusby
/homeassistant/components/russound_rnet/ @noahhusby
/homeassistant/components/ruuvi_gateway/ @akx /homeassistant/components/ruuvi_gateway/ @akx
/tests/components/ruuvi_gateway/ @akx /tests/components/ruuvi_gateway/ @akx
/homeassistant/components/ruuvitag_ble/ @akx /homeassistant/components/ruuvitag_ble/ @akx
@@ -1381,8 +1387,8 @@ build.json @home-assistant/supervisor
/tests/components/slide_local/ @dontinelli /tests/components/slide_local/ @dontinelli
/homeassistant/components/slimproto/ @marcelveldt /homeassistant/components/slimproto/ @marcelveldt
/tests/components/slimproto/ @marcelveldt /tests/components/slimproto/ @marcelveldt
/homeassistant/components/sma/ @kellerza @rklomp /homeassistant/components/sma/ @kellerza @rklomp @erwindouna
/tests/components/sma/ @kellerza @rklomp /tests/components/sma/ @kellerza @rklomp @erwindouna
/homeassistant/components/smappee/ @bsmappee /homeassistant/components/smappee/ @bsmappee
/tests/components/smappee/ @bsmappee /tests/components/smappee/ @bsmappee
/homeassistant/components/smart_meter_texas/ @grahamwetzler /homeassistant/components/smart_meter_texas/ @grahamwetzler
@@ -1408,8 +1414,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/solaredge_local/ @drobtravels @scheric /homeassistant/components/solaredge_local/ @drobtravels @scheric
/homeassistant/components/solarlog/ @Ernst79 @dontinelli /homeassistant/components/solarlog/ @Ernst79 @dontinelli
/tests/components/solarlog/ @Ernst79 @dontinelli /tests/components/solarlog/ @Ernst79 @dontinelli
/homeassistant/components/solax/ @squishykid /homeassistant/components/solax/ @squishykid @Darsstar
/tests/components/solax/ @squishykid /tests/components/solax/ @squishykid @Darsstar
/homeassistant/components/soma/ @ratsept @sebfortier2288 /homeassistant/components/soma/ @ratsept @sebfortier2288
/tests/components/soma/ @ratsept @sebfortier2288 /tests/components/soma/ @ratsept @sebfortier2288
/homeassistant/components/sonarr/ @ctalkington /homeassistant/components/sonarr/ @ctalkington
@@ -1628,15 +1634,15 @@ build.json @home-assistant/supervisor
/tests/components/valve/ @home-assistant/core /tests/components/valve/ @home-assistant/core
/homeassistant/components/velbus/ @Cereal2nd @brefra /homeassistant/components/velbus/ @Cereal2nd @brefra
/tests/components/velbus/ @Cereal2nd @brefra /tests/components/velbus/ @Cereal2nd @brefra
/homeassistant/components/velux/ @Julius2342 @DeerMaximum /homeassistant/components/velux/ @Julius2342 @DeerMaximum @pawlizio
/tests/components/velux/ @Julius2342 @DeerMaximum /tests/components/velux/ @Julius2342 @DeerMaximum @pawlizio
/homeassistant/components/venstar/ @garbled1 @jhollowe /homeassistant/components/venstar/ @garbled1 @jhollowe
/tests/components/venstar/ @garbled1 @jhollowe /tests/components/venstar/ @garbled1 @jhollowe
/homeassistant/components/versasense/ @imstevenxyz /homeassistant/components/versasense/ @imstevenxyz
/homeassistant/components/version/ @ludeeus /homeassistant/components/version/ @ludeeus
/tests/components/version/ @ludeeus /tests/components/version/ @ludeeus
/homeassistant/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja /homeassistant/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak
/tests/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja /tests/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak
/homeassistant/components/vicare/ @CFenner /homeassistant/components/vicare/ @CFenner
/tests/components/vicare/ @CFenner /tests/components/vicare/ @CFenner
/homeassistant/components/vilfo/ @ManneW /homeassistant/components/vilfo/ @ManneW

4
Dockerfile generated
View File

@@ -13,7 +13,7 @@ ENV \
ARG QEMU_CPU ARG QEMU_CPU
# Install uv # Install uv
RUN pip3 install uv==0.5.8 RUN pip3 install uv==0.5.27
WORKDIR /usr/src WORKDIR /usr/src
@@ -55,7 +55,7 @@ RUN \
"armv7") go2rtc_suffix='arm' ;; \ "armv7") go2rtc_suffix='arm' ;; \
*) go2rtc_suffix=${BUILD_ARCH} ;; \ *) go2rtc_suffix=${BUILD_ARCH} ;; \
esac \ esac \
&& curl -L https://github.com/AlexxIT/go2rtc/releases/download/v1.9.7/go2rtc_linux_${go2rtc_suffix} --output /bin/go2rtc \ && curl -L https://github.com/AlexxIT/go2rtc/releases/download/v1.9.8/go2rtc_linux_${go2rtc_suffix} --output /bin/go2rtc \
&& chmod +x /bin/go2rtc \ && chmod +x /bin/go2rtc \
# Verify go2rtc can be executed # Verify go2rtc can be executed
&& go2rtc --version && go2rtc --version

View File

@@ -308,7 +308,7 @@ class AuthStore:
credentials.data = data credentials.data = data
self._async_schedule_save() self._async_schedule_save()
async def async_load(self) -> None: # noqa: C901 async def async_load(self) -> None:
"""Load the users.""" """Load the users."""
if self._loaded: if self._loaded:
raise RuntimeError("Auth storage is already loaded") raise RuntimeError("Auth storage is already loaded")

View File

@@ -4,9 +4,8 @@ from __future__ import annotations
import logging import logging
import types import types
from typing import Any, Generic from typing import Any
from typing_extensions import TypeVar
import voluptuous as vol import voluptuous as vol
from voluptuous.humanize import humanize_error from voluptuous.humanize import humanize_error
@@ -35,12 +34,6 @@ DATA_REQS: HassKey[set[str]] = HassKey("mfa_auth_module_reqs_processed")
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
_MultiFactorAuthModuleT = TypeVar(
"_MultiFactorAuthModuleT",
bound="MultiFactorAuthModule",
default="MultiFactorAuthModule",
)
class MultiFactorAuthModule: class MultiFactorAuthModule:
"""Multi-factor Auth Module of validation function.""" """Multi-factor Auth Module of validation function."""
@@ -102,7 +95,9 @@ class MultiFactorAuthModule:
raise NotImplementedError raise NotImplementedError
class SetupFlow(data_entry_flow.FlowHandler, Generic[_MultiFactorAuthModuleT]): class SetupFlow[_MultiFactorAuthModuleT: MultiFactorAuthModule = MultiFactorAuthModule](
data_entry_flow.FlowHandler
):
"""Handler for the setup flow.""" """Handler for the setup flow."""
def __init__( def __init__(

View File

@@ -11,7 +11,7 @@ import uuid
import attr import attr
from attr import Attribute from attr import Attribute
from attr.setters import validate from attr.setters import validate
from propcache import cached_property from propcache.api import cached_property
from homeassistant.const import __version__ from homeassistant.const import __version__
from homeassistant.data_entry_flow import FlowContext, FlowResult from homeassistant.data_entry_flow import FlowContext, FlowResult

View File

@@ -17,12 +17,12 @@ POLICY_SCHEMA = vol.Schema({vol.Optional(CAT_ENTITIES): ENTITY_POLICY_SCHEMA})
__all__ = [ __all__ = [
"POLICY_SCHEMA", "POLICY_SCHEMA",
"merge_policies",
"PermissionLookup",
"PolicyType",
"AbstractPermissions", "AbstractPermissions",
"PolicyPermissions",
"OwnerPermissions", "OwnerPermissions",
"PermissionLookup",
"PolicyPermissions",
"PolicyType",
"merge_policies",
] ]

View File

@@ -5,9 +5,8 @@ from __future__ import annotations
from collections.abc import Mapping from collections.abc import Mapping
import logging import logging
import types import types
from typing import Any, Generic from typing import Any
from typing_extensions import TypeVar
import voluptuous as vol import voluptuous as vol
from voluptuous.humanize import humanize_error from voluptuous.humanize import humanize_error
@@ -47,8 +46,6 @@ AUTH_PROVIDER_SCHEMA = vol.Schema(
extra=vol.ALLOW_EXTRA, extra=vol.ALLOW_EXTRA,
) )
_AuthProviderT = TypeVar("_AuthProviderT", bound="AuthProvider", default="AuthProvider")
class AuthProvider: class AuthProvider:
"""Provider of user authentication.""" """Provider of user authentication."""
@@ -195,9 +192,8 @@ async def load_auth_provider_module(
return module return module
class LoginFlow( class LoginFlow[_AuthProviderT: AuthProvider = AuthProvider](
FlowHandler[AuthFlowContext, AuthFlowResult, tuple[str, str]], FlowHandler[AuthFlowContext, AuthFlowResult, tuple[str, str]],
Generic[_AuthProviderT],
): ):
"""Handler for the login flow.""" """Handler for the login flow."""

View File

@@ -21,7 +21,7 @@ import voluptuous as vol
from homeassistant.core import callback from homeassistant.core import callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.network import is_cloud_connection from homeassistant.helpers.network import is_cloud_connection
from .. import InvalidAuthError from .. import InvalidAuthError

View File

@@ -18,6 +18,7 @@ import securetar
from .const import __version__ as HA_VERSION from .const import __version__ as HA_VERSION
RESTORE_BACKUP_FILE = ".HA_RESTORE" RESTORE_BACKUP_FILE = ".HA_RESTORE"
RESTORE_BACKUP_RESULT_FILE = ".HA_RESTORE_RESULT"
KEEP_BACKUPS = ("backups",) KEEP_BACKUPS = ("backups",)
KEEP_DATABASE = ( KEEP_DATABASE = (
"home-assistant_v2.db", "home-assistant_v2.db",
@@ -62,7 +63,10 @@ def restore_backup_file_content(config_dir: Path) -> RestoreBackupFileContent |
restore_database=instruction_content["restore_database"], restore_database=instruction_content["restore_database"],
restore_homeassistant=instruction_content["restore_homeassistant"], restore_homeassistant=instruction_content["restore_homeassistant"],
) )
except (FileNotFoundError, KeyError, json.JSONDecodeError): except FileNotFoundError:
return None
except (KeyError, json.JSONDecodeError) as err:
_write_restore_result_file(config_dir, False, err)
return None return None
finally: finally:
# Always remove the backup instruction file to prevent a boot loop # Always remove the backup instruction file to prevent a boot loop
@@ -119,7 +123,7 @@ def _extract_backup(
Path( Path(
tempdir, tempdir,
"extracted", "extracted",
f"homeassistant.tar{'.gz' if backup_meta["compressed"] else ''}", f"homeassistant.tar{'.gz' if backup_meta['compressed'] else ''}",
), ),
gzip=backup_meta["compressed"], gzip=backup_meta["compressed"],
key=password_to_key(restore_content.password) key=password_to_key(restore_content.password)
@@ -142,6 +146,7 @@ def _extract_backup(
config_dir, config_dir,
dirs_exist_ok=True, dirs_exist_ok=True,
ignore=shutil.ignore_patterns(*(keep)), ignore=shutil.ignore_patterns(*(keep)),
ignore_dangling_symlinks=True,
) )
elif restore_content.restore_database: elif restore_content.restore_database:
for entry in KEEP_DATABASE: for entry in KEEP_DATABASE:
@@ -159,6 +164,23 @@ def _extract_backup(
) )
def _write_restore_result_file(
config_dir: Path, success: bool, error: Exception | None
) -> None:
"""Write the restore result file."""
result_path = config_dir.joinpath(RESTORE_BACKUP_RESULT_FILE)
result_path.write_text(
json.dumps(
{
"success": success,
"error": str(error) if error else None,
"error_type": str(type(error).__name__) if error else None,
}
),
encoding="utf-8",
)
def restore_backup(config_dir_path: str) -> bool: def restore_backup(config_dir_path: str) -> bool:
"""Restore the backup file if any. """Restore the backup file if any.
@@ -177,7 +199,14 @@ def restore_backup(config_dir_path: str) -> bool:
restore_content=restore_content, restore_content=restore_content,
) )
except FileNotFoundError as err: except FileNotFoundError as err:
raise ValueError(f"Backup file {backup_file_path} does not exist") from err file_not_found = ValueError(f"Backup file {backup_file_path} does not exist")
_write_restore_result_file(config_dir, False, file_not_found)
raise file_not_found from err
except Exception as err:
_write_restore_result_file(config_dir, False, err)
raise
else:
_write_restore_result_file(config_dir, True, None)
if restore_content.remove_after_restore: if restore_content.remove_after_restore:
backup_file_path.unlink(missing_ok=True) backup_file_path.unlink(missing_ok=True)
_LOGGER.info("Restore complete, restarting") _LOGGER.info("Restore complete, restarting")

View File

@@ -31,7 +31,7 @@ def _check_import_call_allowed(mapped_args: dict[str, Any]) -> bool:
def _check_file_allowed(mapped_args: dict[str, Any]) -> bool: def _check_file_allowed(mapped_args: dict[str, Any]) -> bool:
# If the file is in /proc we can ignore it. # If the file is in /proc we can ignore it.
args = mapped_args["args"] args = mapped_args["args"]
path = args[0] if type(args[0]) is str else str(args[0]) # noqa: E721 path = args[0] if type(args[0]) is str else str(args[0])
return path.startswith(ALLOWED_FILE_PREFIXES) return path.startswith(ALLOWED_FILE_PREFIXES)

View File

@@ -112,6 +112,11 @@ with contextlib.suppress(ImportError):
# Ensure anyio backend is imported to avoid it being imported in the event loop # Ensure anyio backend is imported to avoid it being imported in the event loop
from anyio._backends import _asyncio # noqa: F401 from anyio._backends import _asyncio # noqa: F401
with contextlib.suppress(ImportError):
# httpx will import trio if it is installed which does
# blocking I/O in the event loop. We want to avoid that.
import trio # noqa: F401
if TYPE_CHECKING: if TYPE_CHECKING:
from .runner import RuntimeConfig from .runner import RuntimeConfig
@@ -156,6 +161,16 @@ FRONTEND_INTEGRATIONS = {
# integrations can be removed and database migration status is # integrations can be removed and database migration status is
# visible in frontend # visible in frontend
"frontend", "frontend",
# Hassio is an after dependency of backup, after dependencies
# are not promoted from stage 2 to earlier stages, so we need to
# add it here. Hassio needs to be setup before backup, otherwise
# the backup integration will think we are a container/core install
# when using HAOS or Supervised install.
"hassio",
# Backup is an after dependency of frontend, after dependencies
# are not promoted from stage 2 to earlier stages, so we need to
# add it here.
"backup",
} }
RECORDER_INTEGRATIONS = { RECORDER_INTEGRATIONS = {
# Setup after frontend # Setup after frontend

View File

@@ -5,6 +5,7 @@
"google_assistant", "google_assistant",
"google_assistant_sdk", "google_assistant_sdk",
"google_cloud", "google_cloud",
"google_drive",
"google_generative_ai_conversation", "google_generative_ai_conversation",
"google_mail", "google_mail",
"google_maps", "google_maps",

View File

@@ -11,6 +11,7 @@
"microsoft_face", "microsoft_face",
"microsoft", "microsoft",
"msteams", "msteams",
"onedrive",
"xbox" "xbox"
] ]
} }

View File

@@ -26,5 +26,5 @@
"iot_class": "local_push", "iot_class": "local_push",
"loggers": ["aioacaia"], "loggers": ["aioacaia"],
"quality_scale": "platinum", "quality_scale": "platinum",
"requirements": ["aioacaia==0.1.13"] "requirements": ["aioacaia==0.1.14"]
} }

View File

@@ -12,8 +12,8 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from .const import DOMAIN from .const import DOMAIN

View File

@@ -22,7 +22,7 @@ from homeassistant.const import (
STATE_UNKNOWN, STATE_UNKNOWN,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -3,7 +3,7 @@
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform from homeassistant.const import Platform
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.entity_registry as er from homeassistant.helpers import entity_registry as er
from .hub import PulseHub from .hub import PulseHub

View File

@@ -70,7 +70,7 @@ class PulseHub:
async def async_notify_update(self, update_type: aiopulse.UpdateType) -> None: async def async_notify_update(self, update_type: aiopulse.UpdateType) -> None:
"""Evaluate entities when hub reports that update has occurred.""" """Evaluate entities when hub reports that update has occurred."""
LOGGER.debug("Hub {update_type.name} updated") LOGGER.debug("Hub %s updated", update_type.name)
if update_type == aiopulse.UpdateType.rollers: if update_type == aiopulse.UpdateType.rollers:
await update_devices(self.hass, self.config_entry, self.api.rollers) await update_devices(self.hass, self.config_entry, self.api.rollers)

View File

@@ -3,9 +3,9 @@
from __future__ import annotations from __future__ import annotations
import logging import logging
import telnetlib # pylint: disable=deprecated-module
from typing import Final from typing import Final
import telnetlib # pylint: disable=deprecated-module
import voluptuous as vol import voluptuous as vol
from homeassistant.components.device_tracker import ( from homeassistant.components.device_tracker import (
@@ -15,7 +15,7 @@ from homeassistant.components.device_tracker import (
) )
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
from .const import LEASES_REGEX from .const import LEASES_REGEX

View File

@@ -34,9 +34,12 @@ from .const import (
SERVICE_REMOVE_URL, SERVICE_REMOVE_URL,
) )
SERVICE_URL_SCHEMA = vol.Schema({vol.Required(CONF_URL): cv.url}) SERVICE_URL_SCHEMA = vol.Schema({vol.Required(CONF_URL): vol.Any(cv.url, cv.path)})
SERVICE_ADD_URL_SCHEMA = vol.Schema( SERVICE_ADD_URL_SCHEMA = vol.Schema(
{vol.Required(CONF_NAME): cv.string, vol.Required(CONF_URL): cv.url} {
vol.Required(CONF_NAME): cv.string,
vol.Required(CONF_URL): vol.Any(cv.url, cv.path),
}
) )
SERVICE_REFRESH_SCHEMA = vol.Schema( SERVICE_REFRESH_SCHEMA = vol.Schema(
{vol.Optional(CONF_FORCE, default=False): cv.boolean} {vol.Optional(CONF_FORCE, default=False): cv.boolean}

View File

@@ -12,7 +12,7 @@ from homeassistant.const import (
EVENT_HOMEASSISTANT_STOP, EVENT_HOMEASSISTANT_STOP,
) )
from homeassistant.core import HomeAssistant, ServiceCall from homeassistant.core import HomeAssistant, ServiceCall
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
from .const import CONF_ADS_VAR, DATA_ADS, DOMAIN, AdsType from .const import CONF_ADS_VAR, DATA_ADS, DOMAIN, AdsType

View File

@@ -13,7 +13,7 @@ from homeassistant.components.binary_sensor import (
) )
from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -17,7 +17,7 @@ from homeassistant.components.cover import (
) )
from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -15,7 +15,7 @@ from homeassistant.components.light import (
) )
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -11,7 +11,7 @@ from homeassistant.components.select import (
) )
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -15,7 +15,7 @@ from homeassistant.components.sensor import (
) )
from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME, CONF_UNIT_OF_MEASUREMENT from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME, CONF_UNIT_OF_MEASUREMENT
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType

View File

@@ -13,7 +13,7 @@ from homeassistant.components.switch import (
) )
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -14,7 +14,7 @@ from homeassistant.components.valve import (
) )
from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -66,7 +66,7 @@ class AdvantageAirZoneMotion(AdvantageAirZoneEntity, BinarySensorEntity):
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None: def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an Advantage Air Zone Motion sensor.""" """Initialize an Advantage Air Zone Motion sensor."""
super().__init__(instance, ac_key, zone_key) super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} motion' self._attr_name = f"{self._zone['name']} motion"
self._attr_unique_id += "-motion" self._attr_unique_id += "-motion"
@property @property
@@ -84,7 +84,7 @@ class AdvantageAirZoneMyZone(AdvantageAirZoneEntity, BinarySensorEntity):
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None: def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an Advantage Air Zone MyZone sensor.""" """Initialize an Advantage Air Zone MyZone sensor."""
super().__init__(instance, ac_key, zone_key) super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} myZone' self._attr_name = f"{self._zone['name']} myZone"
self._attr_unique_id += "-myzone" self._attr_unique_id += "-myzone"
@property @property

View File

@@ -103,7 +103,7 @@ class AdvantageAirZoneVent(AdvantageAirZoneEntity, SensorEntity):
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None: def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an Advantage Air Zone Vent Sensor.""" """Initialize an Advantage Air Zone Vent Sensor."""
super().__init__(instance, ac_key, zone_key=zone_key) super().__init__(instance, ac_key, zone_key=zone_key)
self._attr_name = f'{self._zone["name"]} vent' self._attr_name = f"{self._zone['name']} vent"
self._attr_unique_id += "-vent" self._attr_unique_id += "-vent"
@property @property
@@ -131,7 +131,7 @@ class AdvantageAirZoneSignal(AdvantageAirZoneEntity, SensorEntity):
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None: def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an Advantage Air Zone wireless signal sensor.""" """Initialize an Advantage Air Zone wireless signal sensor."""
super().__init__(instance, ac_key, zone_key) super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} signal' self._attr_name = f"{self._zone['name']} signal"
self._attr_unique_id += "-signal" self._attr_unique_id += "-signal"
@property @property
@@ -165,7 +165,7 @@ class AdvantageAirZoneTemp(AdvantageAirZoneEntity, SensorEntity):
def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None: def __init__(self, instance: AdvantageAirData, ac_key: str, zone_key: str) -> None:
"""Initialize an Advantage Air Zone Temp Sensor.""" """Initialize an Advantage Air Zone Temp Sensor."""
super().__init__(instance, ac_key, zone_key) super().__init__(instance, ac_key, zone_key)
self._attr_name = f'{self._zone["name"]} temperature' self._attr_name = f"{self._zone['name']} temperature"
self._attr_unique_id += "-temp" self._attr_unique_id += "-temp"
@property @property

View File

@@ -7,7 +7,7 @@ from typing import Final
import voluptuous as vol import voluptuous as vol
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
DOMAIN: Final = "aftership" DOMAIN: Final = "aftership"

View File

@@ -9,7 +9,7 @@ from pyaftership import AfterShip, AfterShipException
from homeassistant.components.sensor import SensorEntity from homeassistant.components.sensor import SensorEntity
from homeassistant.core import HomeAssistant, ServiceCall from homeassistant.core import HomeAssistant, ServiceCall
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.dispatcher import ( from homeassistant.helpers.dispatcher import (
async_dispatcher_connect, async_dispatcher_connect,
async_dispatcher_send, async_dispatcher_send,

View File

@@ -18,7 +18,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirGradientConfigEntry from . import AirGradientConfigEntry
from .const import DOMAIN from .const import DOMAIN
from .coordinator import AirGradientCoordinator from .coordinator import AirGradientCoordinator
from .entity import AirGradientEntity from .entity import AirGradientEntity, exception_handler
PARALLEL_UPDATES = 1
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
@@ -100,6 +102,7 @@ class AirGradientButton(AirGradientEntity, ButtonEntity):
self.entity_description = description self.entity_description = description
self._attr_unique_id = f"{coordinator.serial_number}-{description.key}" self._attr_unique_id = f"{coordinator.serial_number}-{description.key}"
@exception_handler
async def async_press(self) -> None: async def async_press(self) -> None:
"""Press the button.""" """Press the button."""
await self.entity_description.press_fn(self.coordinator.client) await self.entity_description.press_fn(self.coordinator.client)

View File

@@ -1,5 +1,6 @@
"""Config flow for Airgradient.""" """Config flow for Airgradient."""
from collections.abc import Mapping
from typing import Any from typing import Any
from airgradient import ( from airgradient import (
@@ -11,10 +12,15 @@ from airgradient import (
from awesomeversion import AwesomeVersion from awesomeversion import AwesomeVersion
import voluptuous as vol import voluptuous as vol
from homeassistant.components import zeroconf from homeassistant.config_entries import (
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult SOURCE_RECONFIGURE,
SOURCE_USER,
ConfigFlow,
ConfigFlowResult,
)
from homeassistant.const import CONF_HOST, CONF_MODEL from homeassistant.const import CONF_HOST, CONF_MODEL
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
from .const import DOMAIN from .const import DOMAIN
@@ -37,7 +43,7 @@ class AirGradientConfigFlow(ConfigFlow, domain=DOMAIN):
await self.client.set_configuration_control(ConfigurationControl.LOCAL) await self.client.set_configuration_control(ConfigurationControl.LOCAL)
async def async_step_zeroconf( async def async_step_zeroconf(
self, discovery_info: zeroconf.ZeroconfServiceInfo self, discovery_info: ZeroconfServiceInfo
) -> ConfigFlowResult: ) -> ConfigFlowResult:
"""Handle zeroconf discovery.""" """Handle zeroconf discovery."""
self.data[CONF_HOST] = host = discovery_info.host self.data[CONF_HOST] = host = discovery_info.host
@@ -95,10 +101,18 @@ class AirGradientConfigFlow(ConfigFlow, domain=DOMAIN):
await self.async_set_unique_id( await self.async_set_unique_id(
current_measures.serial_number, raise_on_progress=False current_measures.serial_number, raise_on_progress=False
) )
self._abort_if_unique_id_configured() if self.source == SOURCE_USER:
self._abort_if_unique_id_configured()
if self.source == SOURCE_RECONFIGURE:
self._abort_if_unique_id_mismatch()
await self.set_configuration_source() await self.set_configuration_source()
return self.async_create_entry( if self.source == SOURCE_USER:
title=current_measures.model, return self.async_create_entry(
title=current_measures.model,
data={CONF_HOST: user_input[CONF_HOST]},
)
return self.async_update_reload_and_abort(
self._get_reconfigure_entry(),
data={CONF_HOST: user_input[CONF_HOST]}, data={CONF_HOST: user_input[CONF_HOST]},
) )
return self.async_show_form( return self.async_show_form(
@@ -106,3 +120,9 @@ class AirGradientConfigFlow(ConfigFlow, domain=DOMAIN):
data_schema=vol.Schema({vol.Required(CONF_HOST): str}), data_schema=vol.Schema({vol.Required(CONF_HOST): str}),
errors=errors, errors=errors,
) )
async def async_step_reconfigure(
self, user_input: Mapping[str, Any]
) -> ConfigFlowResult:
"""Handle reconfiguration."""
return await self.async_step_user()

View File

@@ -55,7 +55,11 @@ class AirGradientCoordinator(DataUpdateCoordinator[AirGradientData]):
measures = await self.client.get_current_measures() measures = await self.client.get_current_measures()
config = await self.client.get_config() config = await self.client.get_config()
except AirGradientError as error: except AirGradientError as error:
raise UpdateFailed(error) from error raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="update_error",
translation_placeholders={"error": str(error)},
) from error
if measures.firmware_version != self._current_version: if measures.firmware_version != self._current_version:
device_registry = dr.async_get(self.hass) device_registry = dr.async_get(self.hass)
device_entry = device_registry.async_get_device( device_entry = device_registry.async_get_device(

View File

@@ -1,7 +1,11 @@
"""Base class for AirGradient entities.""" """Base class for AirGradient entities."""
from airgradient import get_model_name from collections.abc import Callable, Coroutine
from typing import Any, Concatenate
from airgradient import AirGradientConnectionError, AirGradientError, get_model_name
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity from homeassistant.helpers.update_coordinator import CoordinatorEntity
@@ -26,3 +30,31 @@ class AirGradientEntity(CoordinatorEntity[AirGradientCoordinator]):
serial_number=coordinator.serial_number, serial_number=coordinator.serial_number,
sw_version=measures.firmware_version, sw_version=measures.firmware_version,
) )
def exception_handler[_EntityT: AirGradientEntity, **_P](
func: Callable[Concatenate[_EntityT, _P], Coroutine[Any, Any, Any]],
) -> Callable[Concatenate[_EntityT, _P], Coroutine[Any, Any, None]]:
"""Decorate AirGradient calls to handle exceptions.
A decorator that wraps the passed in function, catches AirGradient errors.
"""
async def handler(self: _EntityT, *args: _P.args, **kwargs: _P.kwargs) -> None:
try:
await func(self, *args, **kwargs)
except AirGradientConnectionError as error:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="communication_error",
translation_placeholders={"error": str(error)},
) from error
except AirGradientError as error:
raise HomeAssistantError(
translation_domain=DOMAIN,
translation_key="unknown_error",
translation_placeholders={"error": str(error)},
) from error
return handler

View File

@@ -19,7 +19,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirGradientConfigEntry from . import AirGradientConfigEntry
from .const import DOMAIN from .const import DOMAIN
from .coordinator import AirGradientCoordinator from .coordinator import AirGradientCoordinator
from .entity import AirGradientEntity from .entity import AirGradientEntity, exception_handler
PARALLEL_UPDATES = 1
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
@@ -121,6 +123,7 @@ class AirGradientNumber(AirGradientEntity, NumberEntity):
"""Return the state of the number.""" """Return the state of the number."""
return self.entity_description.value_fn(self.coordinator.data.config) return self.entity_description.value_fn(self.coordinator.data.config)
@exception_handler
async def async_set_native_value(self, value: float) -> None: async def async_set_native_value(self, value: float) -> None:
"""Set the selected value.""" """Set the selected value."""
await self.entity_description.set_value_fn(self.coordinator.client, int(value)) await self.entity_description.set_value_fn(self.coordinator.client, int(value))

View File

@@ -29,7 +29,7 @@ rules:
unique-config-entry: done unique-config-entry: done
# Silver # Silver
action-exceptions: todo action-exceptions: done
config-entry-unloading: done config-entry-unloading: done
docs-configuration-parameters: docs-configuration-parameters:
status: exempt status: exempt
@@ -38,7 +38,7 @@ rules:
entity-unavailable: done entity-unavailable: done
integration-owner: done integration-owner: done
log-when-unavailable: done log-when-unavailable: done
parallel-updates: todo parallel-updates: done
reauthentication-flow: reauthentication-flow:
status: exempt status: exempt
comment: | comment: |
@@ -68,9 +68,9 @@ rules:
entity-device-class: done entity-device-class: done
entity-disabled-by-default: done entity-disabled-by-default: done
entity-translations: done entity-translations: done
exception-translations: todo exception-translations: done
icon-translations: done icon-translations: done
reconfiguration-flow: todo reconfiguration-flow: done
repair-issues: repair-issues:
status: exempt status: exempt
comment: | comment: |

View File

@@ -19,7 +19,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirGradientConfigEntry from . import AirGradientConfigEntry
from .const import DOMAIN, PM_STANDARD, PM_STANDARD_REVERSE from .const import DOMAIN, PM_STANDARD, PM_STANDARD_REVERSE
from .coordinator import AirGradientCoordinator from .coordinator import AirGradientCoordinator
from .entity import AirGradientEntity from .entity import AirGradientEntity, exception_handler
PARALLEL_UPDATES = 1
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
@@ -216,6 +218,7 @@ class AirGradientSelect(AirGradientEntity, SelectEntity):
"""Return the state of the select.""" """Return the state of the select."""
return self.entity_description.value_fn(self.coordinator.data.config) return self.entity_description.value_fn(self.coordinator.data.config)
@exception_handler
async def async_select_option(self, option: str) -> None: async def async_select_option(self, option: str) -> None:
"""Change the selected option.""" """Change the selected option."""
await self.entity_description.set_value_fn(self.coordinator.client, option) await self.entity_description.set_value_fn(self.coordinator.client, option)

View File

@@ -35,6 +35,8 @@ from .const import PM_STANDARD, PM_STANDARD_REVERSE
from .coordinator import AirGradientCoordinator from .coordinator import AirGradientCoordinator
from .entity import AirGradientEntity from .entity import AirGradientEntity
PARALLEL_UPDATES = 0
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
class AirGradientMeasurementSensorEntityDescription(SensorEntityDescription): class AirGradientMeasurementSensorEntityDescription(SensorEntityDescription):
@@ -137,6 +139,15 @@ MEASUREMENT_SENSOR_TYPES: tuple[AirGradientMeasurementSensorEntityDescription, .
entity_registry_enabled_default=False, entity_registry_enabled_default=False,
value_fn=lambda status: status.raw_total_volatile_organic_component, value_fn=lambda status: status.raw_total_volatile_organic_component,
), ),
AirGradientMeasurementSensorEntityDescription(
key="pm02_raw",
translation_key="raw_pm02",
device_class=SensorDeviceClass.PM25,
native_unit_of_measurement=CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
state_class=SensorStateClass.MEASUREMENT,
entity_registry_enabled_default=False,
value_fn=lambda status: status.raw_pm02,
),
) )
CONFIG_SENSOR_TYPES: tuple[AirGradientConfigSensorEntityDescription, ...] = ( CONFIG_SENSOR_TYPES: tuple[AirGradientConfigSensorEntityDescription, ...] = (

View File

@@ -17,7 +17,9 @@
"abort": { "abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]", "already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]", "already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]",
"invalid_version": "This firmware version is unsupported. Please upgrade the firmware of the device to at least version 3.1.1." "invalid_version": "This firmware version is unsupported. Please upgrade the firmware of the device to at least version 3.1.1.",
"reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]",
"unique_id_mismatch": "Please ensure you reconfigure against the same device."
}, },
"error": { "error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
@@ -119,6 +121,9 @@
"raw_nitrogen": { "raw_nitrogen": {
"name": "Raw NOx" "name": "Raw NOx"
}, },
"raw_pm02": {
"name": "Raw PM2.5"
},
"display_pm_standard": { "display_pm_standard": {
"name": "[%key:component::airgradient::entity::select::display_pm_standard::name%]", "name": "[%key:component::airgradient::entity::select::display_pm_standard::name%]",
"state": { "state": {
@@ -162,5 +167,16 @@
"name": "Post data to Airgradient" "name": "Post data to Airgradient"
} }
} }
},
"exceptions": {
"communication_error": {
"message": "An error occurred while communicating with the Airgradient device: {error}"
},
"unknown_error": {
"message": "An unknown error occurred while communicating with the Airgradient device: {error}"
},
"update_error": {
"message": "An error occurred while communicating with the Airgradient device: {error}"
}
} }
} }

View File

@@ -20,7 +20,9 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirGradientConfigEntry from . import AirGradientConfigEntry
from .const import DOMAIN from .const import DOMAIN
from .coordinator import AirGradientCoordinator from .coordinator import AirGradientCoordinator
from .entity import AirGradientEntity from .entity import AirGradientEntity, exception_handler
PARALLEL_UPDATES = 1
@dataclass(frozen=True, kw_only=True) @dataclass(frozen=True, kw_only=True)
@@ -99,11 +101,13 @@ class AirGradientSwitch(AirGradientEntity, SwitchEntity):
"""Return the state of the switch.""" """Return the state of the switch."""
return self.entity_description.value_fn(self.coordinator.data.config) return self.entity_description.value_fn(self.coordinator.data.config)
@exception_handler
async def async_turn_on(self, **kwargs: Any) -> None: async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn the switch on.""" """Turn the switch on."""
await self.entity_description.set_value_fn(self.coordinator.client, True) await self.entity_description.set_value_fn(self.coordinator.client, True)
await self.coordinator.async_request_refresh() await self.coordinator.async_request_refresh()
@exception_handler
async def async_turn_off(self, **kwargs: Any) -> None: async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn the switch off.""" """Turn the switch off."""
await self.entity_description.set_value_fn(self.coordinator.client, False) await self.entity_description.set_value_fn(self.coordinator.client, False)

View File

@@ -2,7 +2,7 @@
from datetime import timedelta from datetime import timedelta
from propcache import cached_property from propcache.api import cached_property
from homeassistant.components.update import UpdateDeviceClass, UpdateEntity from homeassistant.components.update import UpdateDeviceClass, UpdateEntity
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
@@ -11,6 +11,7 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from . import AirGradientConfigEntry, AirGradientCoordinator from . import AirGradientConfigEntry, AirGradientCoordinator
from .entity import AirGradientEntity from .entity import AirGradientEntity
PARALLEL_UPDATES = 1
SCAN_INTERVAL = timedelta(hours=1) SCAN_INTERVAL = timedelta(hours=1)

View File

@@ -13,8 +13,8 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from .const import CONF_USE_NEAREST, DOMAIN, NO_AIRLY_SENSORS from .const import CONF_USE_NEAREST, DOMAIN, NO_AIRLY_SENSORS

View File

@@ -18,8 +18,8 @@ from homeassistant.config_entries import (
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_RADIUS from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_RADIUS
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from .const import DOMAIN from .const import DOMAIN

View File

@@ -21,7 +21,6 @@ from .const import (
ATTR_API_CAT_DESCRIPTION, ATTR_API_CAT_DESCRIPTION,
ATTR_API_CAT_LEVEL, ATTR_API_CAT_LEVEL,
ATTR_API_CATEGORY, ATTR_API_CATEGORY,
ATTR_API_PM25,
ATTR_API_POLLUTANT, ATTR_API_POLLUTANT,
ATTR_API_REPORT_DATE, ATTR_API_REPORT_DATE,
ATTR_API_REPORT_HOUR, ATTR_API_REPORT_HOUR,
@@ -91,18 +90,16 @@ class AirNowDataUpdateCoordinator(DataUpdateCoordinator[dict[str, Any]]):
max_aqi_desc = obv[ATTR_API_CATEGORY][ATTR_API_CAT_DESCRIPTION] max_aqi_desc = obv[ATTR_API_CATEGORY][ATTR_API_CAT_DESCRIPTION]
max_aqi_poll = pollutant max_aqi_poll = pollutant
# Copy other data from PM2.5 Value # Copy Report Details
if obv[ATTR_API_AQI_PARAM] == ATTR_API_PM25: data[ATTR_API_REPORT_DATE] = obv[ATTR_API_REPORT_DATE]
# Copy Report Details data[ATTR_API_REPORT_HOUR] = obv[ATTR_API_REPORT_HOUR]
data[ATTR_API_REPORT_DATE] = obv[ATTR_API_REPORT_DATE] data[ATTR_API_REPORT_TZ] = obv[ATTR_API_REPORT_TZ]
data[ATTR_API_REPORT_HOUR] = obv[ATTR_API_REPORT_HOUR]
data[ATTR_API_REPORT_TZ] = obv[ATTR_API_REPORT_TZ]
# Copy Station Details # Copy Station Details
data[ATTR_API_STATE] = obv[ATTR_API_STATE] data[ATTR_API_STATE] = obv[ATTR_API_STATE]
data[ATTR_API_STATION] = obv[ATTR_API_STATION] data[ATTR_API_STATION] = obv[ATTR_API_STATION]
data[ATTR_API_STATION_LATITUDE] = obv[ATTR_API_STATION_LATITUDE] data[ATTR_API_STATION_LATITUDE] = obv[ATTR_API_STATION_LATITUDE]
data[ATTR_API_STATION_LONGITUDE] = obv[ATTR_API_STATION_LONGITUDE] data[ATTR_API_STATION_LONGITUDE] = obv[ATTR_API_STATION_LONGITUDE]
# Store Overall AQI # Store Overall AQI
data[ATTR_API_AQI] = max_aqi data[ATTR_API_AQI] = max_aqi

View File

@@ -155,8 +155,7 @@ class AirthingsHeaterEnergySensor(
self._id = airthings_device.device_id self._id = airthings_device.device_id
self._attr_device_info = DeviceInfo( self._attr_device_info = DeviceInfo(
configuration_url=( configuration_url=(
"https://dashboard.airthings.com/devices/" f"https://dashboard.airthings.com/devices/{airthings_device.device_id}"
f"{airthings_device.device_id}"
), ),
identifiers={(DOMAIN, airthings_device.device_id)}, identifiers={(DOMAIN, airthings_device.device_id)},
name=airthings_device.name, name=airthings_device.name,

View File

@@ -144,7 +144,7 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_create_entry(title=discovery.name, data={}) return self.async_create_entry(title=discovery.name, data={})
current_addresses = self._async_current_ids() current_addresses = self._async_current_ids(include_ignore=False)
for discovery_info in async_discovered_service_info(self.hass): for discovery_info in async_discovered_service_info(self.hass):
address = discovery_info.address address = discovery_info.address
if address in current_addresses or address in self._discovered_devices: if address in current_addresses or address in self._discovered_devices:

View File

@@ -50,7 +50,7 @@ SENSOR_DESCRIPTIONS = (
state_class=SensorStateClass.MEASUREMENT, state_class=SensorStateClass.MEASUREMENT,
value_fn=lambda settings, status, measurements, history: int( value_fn=lambda settings, status, measurements, history: int(
history.get( history.get(
f'Outdoor {"AQI(US)" if settings["is_aqi_usa"] else "AQI(CN)"}', -1 f"Outdoor {'AQI(US)' if settings['is_aqi_usa'] else 'AQI(CN)'}", -1
) )
), ),
translation_key="outdoor_air_quality_index", translation_key="outdoor_air_quality_index",

View File

@@ -5,7 +5,14 @@ from __future__ import annotations
import logging import logging
from typing import Any from typing import Any
from aioairzone.const import AZD_MAC, AZD_WEBSERVER, DEFAULT_SYSTEM_ID from aioairzone.const import (
AZD_FIRMWARE,
AZD_FULL_NAME,
AZD_MAC,
AZD_MODEL,
AZD_WEBSERVER,
DEFAULT_SYSTEM_ID,
)
from aioairzone.localapi import AirzoneLocalApi, ConnectionOptions from aioairzone.localapi import AirzoneLocalApi, ConnectionOptions
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
@@ -17,6 +24,7 @@ from homeassistant.helpers import (
entity_registry as er, entity_registry as er,
) )
from .const import DOMAIN, MANUFACTURER
from .coordinator import AirzoneUpdateCoordinator from .coordinator import AirzoneUpdateCoordinator
PLATFORMS: list[Platform] = [ PLATFORMS: list[Platform] = [
@@ -78,7 +86,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> b
options = ConnectionOptions( options = ConnectionOptions(
entry.data[CONF_HOST], entry.data[CONF_HOST],
entry.data[CONF_PORT], entry.data[CONF_PORT],
entry.data.get(CONF_ID, DEFAULT_SYSTEM_ID), entry.data[CONF_ID],
) )
airzone = AirzoneLocalApi(aiohttp_client.async_get_clientsession(hass), options) airzone = AirzoneLocalApi(aiohttp_client.async_get_clientsession(hass), options)
@@ -88,6 +96,22 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> b
entry.runtime_data = coordinator entry.runtime_data = coordinator
device_registry = dr.async_get(hass)
ws_data: dict[str, Any] | None = coordinator.data.get(AZD_WEBSERVER)
if ws_data is not None:
mac = ws_data.get(AZD_MAC, "")
device_registry.async_get_or_create(
config_entry_id=entry.entry_id,
connections={(dr.CONNECTION_NETWORK_MAC, mac)},
identifiers={(DOMAIN, f"{entry.entry_id}_ws")},
manufacturer=MANUFACTURER,
model=ws_data.get(AZD_MODEL),
name=ws_data.get(AZD_FULL_NAME),
sw_version=ws_data.get(AZD_FIRMWARE),
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True return True
@@ -96,3 +120,25 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> b
async def async_unload_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> bool: async def async_unload_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS) return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
async def async_migrate_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> bool:
"""Migrate an old entry."""
if entry.version == 1 and entry.minor_version < 2:
# Add missing CONF_ID
system_id = entry.data.get(CONF_ID, DEFAULT_SYSTEM_ID)
new_data = entry.data.copy()
new_data[CONF_ID] = system_id
hass.config_entries.async_update_entry(
entry,
data=new_data,
minor_version=2,
)
_LOGGER.info(
"Migration to configuration version %s.%s successful",
entry.version,
entry.minor_version,
)
return True

View File

@@ -10,12 +10,12 @@ from aioairzone.exceptions import AirzoneError, InvalidSystem
from aioairzone.localapi import AirzoneLocalApi, ConnectionOptions from aioairzone.localapi import AirzoneLocalApi, ConnectionOptions
import voluptuous as vol import voluptuous as vol
from homeassistant.components import dhcp
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_HOST, CONF_ID, CONF_PORT from homeassistant.const import CONF_HOST, CONF_ID, CONF_PORT
from homeassistant.data_entry_flow import AbortFlow from homeassistant.data_entry_flow import AbortFlow
from homeassistant.helpers import aiohttp_client from homeassistant.helpers import aiohttp_client
from homeassistant.helpers.device_registry import format_mac from homeassistant.helpers.device_registry import format_mac
from homeassistant.helpers.service_info.dhcp import DhcpServiceInfo
from .const import DOMAIN from .const import DOMAIN
@@ -44,6 +44,7 @@ class AirZoneConfigFlow(ConfigFlow, domain=DOMAIN):
_discovered_ip: str | None = None _discovered_ip: str | None = None
_discovered_mac: str | None = None _discovered_mac: str | None = None
MINOR_VERSION = 2
async def async_step_user( async def async_step_user(
self, user_input: dict[str, Any] | None = None self, user_input: dict[str, Any] | None = None
@@ -53,6 +54,9 @@ class AirZoneConfigFlow(ConfigFlow, domain=DOMAIN):
errors = {} errors = {}
if user_input is not None: if user_input is not None:
if CONF_ID not in user_input:
user_input[CONF_ID] = DEFAULT_SYSTEM_ID
self._async_abort_entries_match(user_input) self._async_abort_entries_match(user_input)
airzone = AirzoneLocalApi( airzone = AirzoneLocalApi(
@@ -60,7 +64,7 @@ class AirZoneConfigFlow(ConfigFlow, domain=DOMAIN):
ConnectionOptions( ConnectionOptions(
user_input[CONF_HOST], user_input[CONF_HOST],
user_input[CONF_PORT], user_input[CONF_PORT],
user_input.get(CONF_ID, DEFAULT_SYSTEM_ID), user_input[CONF_ID],
), ),
) )
@@ -84,6 +88,9 @@ class AirZoneConfigFlow(ConfigFlow, domain=DOMAIN):
) )
title = f"Airzone {user_input[CONF_HOST]}:{user_input[CONF_PORT]}" title = f"Airzone {user_input[CONF_HOST]}:{user_input[CONF_PORT]}"
if user_input[CONF_ID] != DEFAULT_SYSTEM_ID:
title += f" #{user_input[CONF_ID]}"
return self.async_create_entry(title=title, data=user_input) return self.async_create_entry(title=title, data=user_input)
return self.async_show_form( return self.async_show_form(
@@ -93,7 +100,7 @@ class AirZoneConfigFlow(ConfigFlow, domain=DOMAIN):
) )
async def async_step_dhcp( async def async_step_dhcp(
self, discovery_info: dhcp.DhcpServiceInfo self, discovery_info: DhcpServiceInfo
) -> ConfigFlowResult: ) -> ConfigFlowResult:
"""Handle DHCP discovery.""" """Handle DHCP discovery."""
self._discovered_ip = discovery_info.ip self._discovered_ip = discovery_info.ip

View File

@@ -68,8 +68,9 @@ class AirzoneSystemEntity(AirzoneEntity):
model=self.get_airzone_value(AZD_MODEL), model=self.get_airzone_value(AZD_MODEL),
name=f"System {self.system_id}", name=f"System {self.system_id}",
sw_version=self.get_airzone_value(AZD_FIRMWARE), sw_version=self.get_airzone_value(AZD_FIRMWARE),
via_device=(DOMAIN, f"{entry.entry_id}_ws"),
) )
if AZD_WEBSERVER in self.coordinator.data:
self._attr_device_info["via_device"] = (DOMAIN, f"{entry.entry_id}_ws")
self._attr_unique_id = entry.unique_id or entry.entry_id self._attr_unique_id = entry.unique_id or entry.entry_id
@property @property
@@ -102,8 +103,9 @@ class AirzoneHotWaterEntity(AirzoneEntity):
manufacturer=MANUFACTURER, manufacturer=MANUFACTURER,
model="DHW", model="DHW",
name=self.get_airzone_value(AZD_NAME), name=self.get_airzone_value(AZD_NAME),
via_device=(DOMAIN, f"{entry.entry_id}_ws"),
) )
if AZD_WEBSERVER in self.coordinator.data:
self._attr_device_info["via_device"] = (DOMAIN, f"{entry.entry_id}_ws")
self._attr_unique_id = entry.unique_id or entry.entry_id self._attr_unique_id = entry.unique_id or entry.entry_id
def get_airzone_value(self, key: str) -> Any: def get_airzone_value(self, key: str) -> Any:

View File

@@ -11,5 +11,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone", "documentation": "https://www.home-assistant.io/integrations/airzone",
"iot_class": "local_polling", "iot_class": "local_polling",
"loggers": ["aioairzone"], "loggers": ["aioairzone"],
"requirements": ["aioairzone==0.9.7"] "requirements": ["aioairzone==0.9.9"]
} }

View File

@@ -7,7 +7,7 @@ from datetime import timedelta
import logging import logging
from typing import TYPE_CHECKING, Any, Final, final from typing import TYPE_CHECKING, Any, Final, final
from propcache import cached_property from propcache.api import cached_property
import voluptuous as vol import voluptuous as vol
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
@@ -24,7 +24,7 @@ from homeassistant.const import (
) )
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import ServiceValidationError from homeassistant.exceptions import ServiceValidationError
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.config_validation import make_entity_service_schema from homeassistant.helpers.config_validation import make_entity_service_schema
from homeassistant.helpers.entity import Entity, EntityDescription from homeassistant.helpers.entity import Entity, EntityDescription
from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity_component import EntityComponent

View File

@@ -23,8 +23,7 @@ from homeassistant.const import (
SERVICE_ALARM_TRIGGER, SERVICE_ALARM_TRIGGER,
) )
from homeassistant.core import Context, HomeAssistant from homeassistant.core import Context, HomeAssistant
from homeassistant.helpers import entity_registry as er from homeassistant.helpers import config_validation as cv, entity_registry as er
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import get_supported_features from homeassistant.helpers.entity import get_supported_features
from homeassistant.helpers.typing import ConfigType, TemplateVarsType from homeassistant.helpers.typing import ConfigType, TemplateVarsType

View File

@@ -12,8 +12,7 @@ from homeassistant.components.alarm_control_panel import (
) )
from homeassistant.const import ATTR_CODE from homeassistant.const import ATTR_CODE
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_platform from homeassistant.helpers import config_validation as cv, entity_platform
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback

View File

@@ -15,7 +15,7 @@ from homeassistant.const import (
STATE_ON, STATE_ON,
) )
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity_component import EntityComponent
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType

View File

@@ -50,8 +50,7 @@ from homeassistant.const import (
UnitOfVolume, UnitOfVolume,
) )
from homeassistant.core import HomeAssistant, State from homeassistant.core import HomeAssistant, State
import homeassistant.util.color as color_util from homeassistant.util import color as color_util, dt as dt_util
import homeassistant.util.dt as dt_util
from .const import ( from .const import (
API_TEMP_UNITS, API_TEMP_UNITS,

View File

@@ -474,25 +474,30 @@ class ClimateCapabilities(AlexaEntity):
# If we support two modes, one being off, we allow turning on too. # If we support two modes, one being off, we allow turning on too.
supported_features = self.entity.attributes.get(ATTR_SUPPORTED_FEATURES, 0) supported_features = self.entity.attributes.get(ATTR_SUPPORTED_FEATURES, 0)
if ( if (
self.entity.domain == climate.DOMAIN (
and climate.HVACMode.OFF self.entity.domain == climate.DOMAIN
in (self.entity.attributes.get(climate.ATTR_HVAC_MODES) or []) and climate.HVACMode.OFF
or self.entity.domain == climate.DOMAIN in (self.entity.attributes.get(climate.ATTR_HVAC_MODES) or [])
and ( )
supported_features or (
& ( self.entity.domain == climate.DOMAIN
climate.ClimateEntityFeature.TURN_ON and (
| climate.ClimateEntityFeature.TURN_OFF supported_features
& (
climate.ClimateEntityFeature.TURN_ON
| climate.ClimateEntityFeature.TURN_OFF
)
) )
) )
or self.entity.domain == water_heater.DOMAIN or (
and (supported_features & water_heater.WaterHeaterEntityFeature.ON_OFF) self.entity.domain == water_heater.DOMAIN
and (supported_features & water_heater.WaterHeaterEntityFeature.ON_OFF)
)
): ):
yield AlexaPowerController(self.entity) yield AlexaPowerController(self.entity)
if ( if self.entity.domain == climate.DOMAIN or (
self.entity.domain == climate.DOMAIN self.entity.domain == water_heater.DOMAIN
or self.entity.domain == water_heater.DOMAIN
and ( and (
supported_features supported_features
& water_heater.WaterHeaterEntityFeature.OPERATION_MODE & water_heater.WaterHeaterEntityFeature.OPERATION_MODE

View File

@@ -12,7 +12,7 @@ from homeassistant.const import CONF_PASSWORD
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import template from homeassistant.helpers import template
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
import homeassistant.util.dt as dt_util from homeassistant.util import dt as dt_util
from .const import ( from .const import (
API_PASSWORD, API_PASSWORD,

View File

@@ -24,7 +24,7 @@ from homeassistant.core import (
) )
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.significant_change import create_checker from homeassistant.helpers.significant_change import create_checker
import homeassistant.util.dt as dt_util from homeassistant.util import dt as dt_util
from homeassistant.util.json import JsonObjectType, json_loads_object from homeassistant.util.json import JsonObjectType, json_loads_object
from .const import ( from .const import (
@@ -317,9 +317,8 @@ async def async_enable_proactive_mode(
if should_doorbell: if should_doorbell:
old_state = data["old_state"] old_state = data["old_state"]
if ( if new_state.domain == event.DOMAIN or (
new_state.domain == event.DOMAIN new_state.state == STATE_ON
or new_state.state == STATE_ON
and (old_state is None or old_state.state != STATE_ON) and (old_state is None or old_state.state != STATE_ON)
): ):
await async_send_doorbell_event_message( await async_send_doorbell_event_message(

View File

@@ -16,7 +16,7 @@ from homeassistant.components.sensor import (
) )
from homeassistant.const import CONF_API_KEY, CONF_CURRENCY, CONF_NAME from homeassistant.const import CONF_API_KEY, CONF_CURRENCY, CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

View File

@@ -22,7 +22,7 @@ from homeassistant.generated.amazon_polly import (
SUPPORTED_REGIONS, SUPPORTED_REGIONS,
SUPPORTED_VOICES, SUPPORTED_VOICES,
) )
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from .const import ( from .const import (

View File

@@ -17,9 +17,8 @@ from homeassistant.const import (
) )
from homeassistant.core import Event, HomeAssistant, callback from homeassistant.core import Event, HomeAssistant, callback
from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.exceptions import ConfigEntryNotReady
import homeassistant.helpers.device_registry as dr from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.dispatcher import async_dispatcher_send from homeassistant.helpers.dispatcher import async_dispatcher_send
import homeassistant.helpers.entity_registry as er
from .const import ( from .const import (
ATTR_LAST_DATA, ATTR_LAST_DATA,

View File

@@ -37,8 +37,7 @@ from homeassistant.const import (
) )
from homeassistant.core import HomeAssistant, ServiceCall, callback from homeassistant.core import HomeAssistant, ServiceCall, callback
from homeassistant.exceptions import Unauthorized, UnknownUser from homeassistant.exceptions import Unauthorized, UnknownUser
from homeassistant.helpers import discovery from homeassistant.helpers import config_validation as cv, discovery
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_send, dispatcher_send from homeassistant.helpers.dispatcher import async_dispatcher_send, dispatcher_send
from homeassistant.helpers.event import async_track_time_interval from homeassistant.helpers.event import async_track_time_interval
from homeassistant.helpers.service import async_extract_entity_ids from homeassistant.helpers.service import async_extract_entity_ids

View File

@@ -14,8 +14,8 @@ from homeassistant.components.air_quality import (
) )
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.util import Throttle from homeassistant.util import Throttle

View File

@@ -7,7 +7,7 @@ import voluptuous as vol
from homeassistant.components import websocket_api from homeassistant.components import websocket_api
from homeassistant.const import EVENT_HOMEASSISTANT_STARTED from homeassistant.const import EVENT_HOMEASSISTANT_STARTED
from homeassistant.core import Event, HassJob, HomeAssistant, callback from homeassistant.core import Event, HassJob, HomeAssistant, callback
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.event import async_call_later, async_track_time_interval from homeassistant.helpers.event import async_call_later, async_track_time_interval
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
from homeassistant.util.hass_dict import HassKey from homeassistant.util.hass_dict import HassKey

View File

@@ -11,6 +11,7 @@ import uuid
import aiohttp import aiohttp
from homeassistant import config as conf_util
from homeassistant.components import hassio from homeassistant.components import hassio
from homeassistant.components.api import ATTR_INSTALLATION_TYPE from homeassistant.components.api import ATTR_INSTALLATION_TYPE
from homeassistant.components.automation import DOMAIN as AUTOMATION_DOMAIN from homeassistant.components.automation import DOMAIN as AUTOMATION_DOMAIN
@@ -22,13 +23,12 @@ from homeassistant.components.recorder import (
DOMAIN as RECORDER_DOMAIN, DOMAIN as RECORDER_DOMAIN,
get_instance as get_recorder_instance, get_instance as get_recorder_instance,
) )
import homeassistant.config as conf_util
from homeassistant.config_entries import SOURCE_IGNORE from homeassistant.config_entries import SOURCE_IGNORE
from homeassistant.const import ATTR_DOMAIN, __version__ as HA_VERSION from homeassistant.const import ATTR_DOMAIN, __version__ as HA_VERSION
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.entity_registry as er
from homeassistant.helpers.hassio import is_hassio from homeassistant.helpers.hassio import is_hassio
from homeassistant.helpers.storage import Store from homeassistant.helpers.storage import Store
from homeassistant.helpers.system_info import async_get_system_info from homeassistant.helpers.system_info import async_get_system_info

View File

@@ -7,6 +7,6 @@
"integration_type": "service", "integration_type": "service",
"iot_class": "cloud_polling", "iot_class": "cloud_polling",
"loggers": ["python_homeassistant_analytics"], "loggers": ["python_homeassistant_analytics"],
"requirements": ["python-homeassistant-analytics==0.8.1"], "requirements": ["python-homeassistant-analytics==0.9.0"],
"single_config_entry": true "single_config_entry": true
} }

View File

@@ -14,7 +14,6 @@ from androidtvremote2 import (
) )
import voluptuous as vol import voluptuous as vol
from homeassistant.components import zeroconf
from homeassistant.config_entries import ( from homeassistant.config_entries import (
SOURCE_REAUTH, SOURCE_REAUTH,
ConfigEntry, ConfigEntry,
@@ -31,6 +30,7 @@ from homeassistant.helpers.selector import (
SelectSelectorConfig, SelectSelectorConfig,
SelectSelectorMode, SelectSelectorMode,
) )
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
from .const import CONF_APP_ICON, CONF_APP_NAME, CONF_APPS, CONF_ENABLE_IME, DOMAIN from .const import CONF_APP_ICON, CONF_APP_NAME, CONF_APPS, CONF_ENABLE_IME, DOMAIN
from .helpers import create_api, get_enable_ime from .helpers import create_api, get_enable_ime
@@ -142,7 +142,7 @@ class AndroidTVRemoteConfigFlow(ConfigFlow, domain=DOMAIN):
) )
async def async_step_zeroconf( async def async_step_zeroconf(
self, discovery_info: zeroconf.ZeroconfServiceInfo self, discovery_info: ZeroconfServiceInfo
) -> ConfigFlowResult: ) -> ConfigFlowResult:
"""Handle zeroconf discovery.""" """Handle zeroconf discovery."""
_LOGGER.debug("Android TV device found via zeroconf: %s", discovery_info) _LOGGER.debug("Android TV device found via zeroconf: %s", discovery_info)

View File

@@ -15,7 +15,7 @@ from homeassistant.components.switch import (
) )
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.util import Throttle from homeassistant.util import Throttle

View File

@@ -12,7 +12,7 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_MODEL, CONF_PORT from homeassistant.const import CONF_HOST, CONF_MAC, CONF_MODEL, CONF_PORT
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.device_registry import format_mac from homeassistant.helpers.device_registry import format_mac
from .const import DEFAULT_NAME, DEFAULT_PORT, DEVICE_TIMEOUT_SECONDS, DOMAIN from .const import DEFAULT_NAME, DEFAULT_PORT, DEVICE_TIMEOUT_SECONDS, DOMAIN

View File

@@ -27,7 +27,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError, TemplateError from homeassistant.exceptions import HomeAssistantError, TemplateError
from homeassistant.helpers import device_registry as dr, intent, llm, template from homeassistant.helpers import device_registry as dr, intent, llm, template
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.util import ulid from homeassistant.util import ulid as ulid_util
from . import AnthropicConfigEntry from . import AnthropicConfigEntry
from .const import ( from .const import (
@@ -164,7 +164,7 @@ class AnthropicConversationEntity(
] ]
if user_input.conversation_id is None: if user_input.conversation_id is None:
conversation_id = ulid.ulid_now() conversation_id = ulid_util.ulid_now()
messages = [] messages = []
elif user_input.conversation_id in self.history: elif user_input.conversation_id in self.history:
@@ -177,8 +177,8 @@ class AnthropicConversationEntity(
# a new conversation was started. If the user picks their own, they # a new conversation was started. If the user picks their own, they
# want to track a conversation and we respect it. # want to track a conversation and we respect it.
try: try:
ulid.ulid_to_bytes(user_input.conversation_id) ulid_util.ulid_to_bytes(user_input.conversation_id)
conversation_id = ulid.ulid_now() conversation_id = ulid_util.ulid_now()
except ValueError: except ValueError:
conversation_id = user_input.conversation_id conversation_id = user_input.conversation_id
@@ -272,6 +272,7 @@ class AnthropicConversationEntity(
continue continue
tool_input = llm.ToolInput( tool_input = llm.ToolInput(
id=tool_call.id,
tool_name=tool_call.name, tool_name=tool_call.name,
tool_args=cast(dict[str, Any], tool_call.input), tool_args=cast(dict[str, Any], tool_call.input),
) )

View File

@@ -8,5 +8,5 @@
"documentation": "https://www.home-assistant.io/integrations/anthropic", "documentation": "https://www.home-assistant.io/integrations/anthropic",
"integration_type": "service", "integration_type": "service",
"iot_class": "cloud_polling", "iot_class": "cloud_polling",
"requirements": ["anthropic==0.31.2"] "requirements": ["anthropic==0.44.0"]
} }

View File

@@ -18,7 +18,7 @@ from homeassistant.const import (
EVENT_STATE_CHANGED, EVENT_STATE_CHANGED,
) )
from homeassistant.core import Event, EventStateChangedData, HomeAssistant from homeassistant.core import Event, EventStateChangedData, HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.entityfilter import FILTER_SCHEMA, EntityFilter from homeassistant.helpers.entityfilter import FILTER_SCHEMA, EntityFilter
from homeassistant.helpers.typing import ConfigType from homeassistant.helpers.typing import ConfigType
from homeassistant.util import ssl as ssl_util from homeassistant.util import ssl as ssl_util

View File

@@ -10,8 +10,7 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_HOST, CONF_PORT from homeassistant.const import CONF_HOST, CONF_PORT
from homeassistant.helpers import selector from homeassistant.helpers import config_validation as cv, selector
import homeassistant.helpers.config_validation as cv
from .const import CONNECTION_TIMEOUT, DOMAIN from .const import CONNECTION_TIMEOUT, DOMAIN
from .coordinator import APCUPSdData from .coordinator import APCUPSdData

View File

@@ -44,7 +44,10 @@ class APCUPSdData(dict[str, str]):
@property @property
def serial_no(self) -> str | None: def serial_no(self) -> str | None:
"""Return the unique serial number of the UPS, if available.""" """Return the unique serial number of the UPS, if available."""
return self.get("SERIALNO") sn = self.get("SERIALNO")
# We had user reports that some UPS models simply return "Blank" as serial number, in
# which case we fall back to `None` to indicate that it is actually not available.
return None if sn == "Blank" else sn
class APCUPSdCoordinator(DataUpdateCoordinator[APCUPSdData]): class APCUPSdCoordinator(DataUpdateCoordinator[APCUPSdData]):

View File

@@ -11,6 +11,7 @@ from aiohttp import web
from aiohttp.web_exceptions import HTTPBadRequest from aiohttp.web_exceptions import HTTPBadRequest
import voluptuous as vol import voluptuous as vol
from homeassistant import core as ha
from homeassistant.auth.models import User from homeassistant.auth.models import User
from homeassistant.auth.permissions.const import POLICY_READ from homeassistant.auth.permissions.const import POLICY_READ
from homeassistant.components.http import ( from homeassistant.components.http import (
@@ -36,7 +37,6 @@ from homeassistant.const import (
URL_API_STREAM, URL_API_STREAM,
URL_API_TEMPLATE, URL_API_TEMPLATE,
) )
import homeassistant.core as ha
from homeassistant.core import Event, EventStateChangedData, HomeAssistant from homeassistant.core import Event, EventStateChangedData, HomeAssistant
from homeassistant.exceptions import ( from homeassistant.exceptions import (
InvalidEntityFormatError, InvalidEntityFormatError,

View File

@@ -34,6 +34,7 @@ from homeassistant.helpers.schema_config_entry_flow import (
SchemaFlowFormStep, SchemaFlowFormStep,
SchemaOptionsFlowHandler, SchemaOptionsFlowHandler,
) )
from homeassistant.helpers.service_info.zeroconf import ZeroconfServiceInfo
from .const import CONF_CREDENTIALS, CONF_IDENTIFIERS, CONF_START_OFF, DOMAIN from .const import CONF_CREDENTIALS, CONF_IDENTIFIERS, CONF_START_OFF, DOMAIN
@@ -133,7 +134,7 @@ class AppleTVConfigFlow(ConfigFlow, domain=DOMAIN):
unique_id for said entry. When a new (zeroconf) service or device is unique_id for said entry. When a new (zeroconf) service or device is
discovered, the identifier is first used to look up if it belongs to an discovered, the identifier is first used to look up if it belongs to an
existing config entry. If that's the case, the unique_id from that entry is existing config entry. If that's the case, the unique_id from that entry is
re-used, otherwise the newly discovered identifier is used instead. reused, otherwise the newly discovered identifier is used instead.
""" """
assert self.atv assert self.atv
all_identifiers = set(self.atv.all_identifiers) all_identifiers = set(self.atv.all_identifiers)
@@ -204,7 +205,7 @@ class AppleTVConfigFlow(ConfigFlow, domain=DOMAIN):
) )
async def async_step_zeroconf( async def async_step_zeroconf(
self, discovery_info: zeroconf.ZeroconfServiceInfo self, discovery_info: ZeroconfServiceInfo
) -> ConfigFlowResult: ) -> ConfigFlowResult:
"""Handle device found via zeroconf.""" """Handle device found via zeroconf."""
if discovery_info.ip_address.version == 6: if discovery_info.ip_address.version == 6:

View File

@@ -40,7 +40,7 @@ from homeassistant.components.media_player import (
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
import homeassistant.util.dt as dt_util from homeassistant.util import dt as dt_util
from . import AppleTvConfigEntry, AppleTVManager from . import AppleTvConfigEntry, AppleTVManager
from .browse_media import build_app_list from .browse_media import build_app_list

View File

@@ -26,8 +26,11 @@ from homeassistant.const import (
) )
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import collection, config_entry_oauth2_flow from homeassistant.helpers import (
import homeassistant.helpers.config_validation as cv collection,
config_entry_oauth2_flow,
config_validation as cv,
)
from homeassistant.helpers.storage import Store from homeassistant.helpers.storage import Store
from homeassistant.helpers.typing import ConfigType, VolDictType from homeassistant.helpers.typing import ConfigType, VolDictType
from homeassistant.loader import ( from homeassistant.loader import (
@@ -38,7 +41,7 @@ from homeassistant.loader import (
from homeassistant.util import slugify from homeassistant.util import slugify
from homeassistant.util.hass_dict import HassKey from homeassistant.util.hass_dict import HassKey
__all__ = ["ClientCredential", "AuthorizationServer", "async_import_client_credential"] __all__ = ["AuthorizationServer", "ClientCredential", "async_import_client_credential"]
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@@ -143,8 +146,6 @@ class ApplicationCredentialsStorageCollection(collection.DictStorageCollection):
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up Application Credentials.""" """Set up Application Credentials."""
hass.data[DOMAIN] = {}
id_manager = collection.IDManager() id_manager = collection.IDManager()
storage_collection = ApplicationCredentialsStorageCollection( storage_collection = ApplicationCredentialsStorageCollection(
Store(hass, STORAGE_VERSION, STORAGE_KEY), Store(hass, STORAGE_VERSION, STORAGE_KEY),

View File

@@ -17,7 +17,7 @@ from homeassistant.components.notify import (
) )
from homeassistant.const import CONF_URL from homeassistant.const import CONF_URL
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)

View File

@@ -10,7 +10,7 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_HOST, CONF_PORT from homeassistant.const import CONF_HOST, CONF_PORT
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.device_registry import format_mac from homeassistant.helpers.device_registry import format_mac
from .const import DOMAIN from .const import DOMAIN

View File

@@ -11,7 +11,7 @@ from pyaprilaire.const import MODELS, Attribute, FunctionalDomain
from homeassistant.config_entries import ConfigEntry from homeassistant.config_entries import ConfigEntry
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
import homeassistant.helpers.device_registry as dr from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.device_registry import DeviceInfo from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import BaseDataUpdateCoordinatorProtocol from homeassistant.helpers.update_coordinator import BaseDataUpdateCoordinatorProtocol

View File

@@ -50,7 +50,7 @@ async def async_setup_entry(
descriptions: list[AprilaireHumidifierDescription] = [] descriptions: list[AprilaireHumidifierDescription] = []
if coordinator.data.get(Attribute.HUMIDIFICATION_AVAILABLE) in (0, 1, 2): if coordinator.data.get(Attribute.HUMIDIFICATION_AVAILABLE) in (1, 2):
descriptions.append( descriptions.append(
AprilaireHumidifierDescription( AprilaireHumidifierDescription(
key="humidifier", key="humidifier",
@@ -67,7 +67,7 @@ async def async_setup_entry(
) )
) )
if coordinator.data.get(Attribute.DEHUMIDIFICATION_AVAILABLE) in (0, 1): if coordinator.data.get(Attribute.DEHUMIDIFICATION_AVAILABLE) == 1:
descriptions.append( descriptions.append(
AprilaireHumidifierDescription( AprilaireHumidifierDescription(
key="dehumidifier", key="dehumidifier",

View File

@@ -26,7 +26,7 @@ from homeassistant.const import (
EVENT_HOMEASSISTANT_STOP, EVENT_HOMEASSISTANT_STOP,
) )
from homeassistant.core import Event, HomeAssistant from homeassistant.core import Event, HomeAssistant
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.util import slugify from homeassistant.util import slugify

View File

@@ -8,8 +8,8 @@ import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_IP_ADDRESS, CONF_PORT from homeassistant.const import CONF_IP_ADDRESS, CONF_PORT
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from .const import DEFAULT_PORT, DOMAIN from .const import DEFAULT_PORT, DOMAIN

View File

@@ -19,7 +19,7 @@ from homeassistant.const import (
UnitOfTemperature, UnitOfTemperature,
) )
from homeassistant.core import HomeAssistant, callback from homeassistant.core import HomeAssistant, callback
import homeassistant.helpers.config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.dispatcher import async_dispatcher_connect from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType

Some files were not shown because too many files have changed in this diff Show More