Compare commits

...

2508 Commits

Author SHA1 Message Date
J. Nick Koston
162c27b92c Merge branch 'dev' into block_pyserial_asyncio 2025-05-26 10:40:34 -05:00
Sören Beye
3dc7b75e4b Allow nested schema validation in event automation trigger (#126771)
* Allow nested schema validation in event automation trigger

* Fix rfxtrx device trigger

* Don't create nested voluptuous schemas

* Fix editing mistake

* Fix format

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-26 17:34:13 +02:00
Florian von Garrel
c14d17f88c Add status sensors to paperless (#145591)
* Add first status sensor and coordinator

* New snapshot

* Add comment

* Add test for forbidden status endpoint

* Changed comment

* Fixed translation

* Minor changes and code optimization

* Add common translation; minor tweaks

* Moved translation from common to integration
2025-05-26 17:24:23 +02:00
Simone Chemelli
b7ce0f63a9 Add notify platform to Amazon Devices (#145589)
* Add notify platform to Amazon Devices

* apply review comment

* leftover

* tests leftovers

* remove sound notification

* missing await
2025-05-26 17:17:32 +02:00
Marcel van der Veldt
c2a5e1aaf9 Prefer source name in Music Assistant integration (#145622)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-26 17:07:05 +02:00
David Poll
13d7234f97 Add apply to make macros/callables useful in filters and tests (#144227) 2025-05-26 17:00:07 +02:00
avee87
ca50fca738 Add twice-daily forecasts to MetOffice (#145472) 2025-05-26 16:56:15 +02:00
epenet
acbfe54c7b Drop obsolete IGNORE_PIN in gen_requirements_all.py (#145487)
Drop IGNORE_PIN in gen_requirements_all.py
2025-05-26 16:49:42 +02:00
Robert Resch
49f9166646 Deprecate cups integration (#145615) 2025-05-26 16:48:41 +02:00
Åke Strandberg
42cacd28e7 Add tests to miele fan entity and api push data pathway (#144481)
* Use device class transation

* WIP

* Test api push

* Use constants

* Use callbacks registered with mock

* Add comment

* Adress review comments

* Empty commit

* Fix tests

* Updates after review
2025-05-26 16:38:41 +02:00
Marcel van der Veldt
6f9a39ab89 Add select source action to Music Assistant (#145619) 2025-05-26 16:28:18 +02:00
starkillerOG
0d81694640 Add event browsing to Reolink recordings (#144259) 2025-05-26 16:20:55 +02:00
epenet
109bcf362a Use shorthand attributes in xiaomi_miio (part 3) (#145617) 2025-05-26 16:16:18 +02:00
Erik Montnemery
0260a03447 Store information about add-ons and folders which could not be backed up (#145367)
* Store information about add-ons and folders which could not be backed up

* Address review comments
2025-05-26 16:07:33 +02:00
Simone Chemelli
0802fc8a21 Add switch platform to Amazon Devices (#145588)
* Add switch platform to Amazon Devices

* apply review comment

* make logic generic

* test cleanup
2025-05-26 16:01:11 +02:00
epenet
c346b932f0 Use shorthand attributes in xiaomi_miio (part 2) (#145616)
* Use shorthand attributes in xiaomi_miio (part 2)

* Brightness

* Is_on
2025-05-26 15:57:01 +02:00
avee87
a14f3ab6b1 Fix clear night weather condition for metoffice (#145470) 2025-05-26 15:43:28 +02:00
dontinelli
14cd00a116 Add user picture to fyta (#140934)
* Add user picture

* FYTA integration: Add separate entities for both default and user plant images (#12)

* Refactor FYTA integration to provide both default and user plant images as separate entities

* Refactor FYTA tests by removing unused CONF_USER_IMAGE option and related test cases

* Update FytaPlantImageEntity to set entity name based on image type

* Refactor FYTA image tests to accommodate separate plant and user image entities, updating assertions and snapshots accordingly.

* Enhance FYTA image handling by introducing FytaImageEntityDescription for better separation of plant and user images, and update image URL retrieval logic. Additionally, add localized strings for image entities in strings.json.

* Correct typo

* Update FYTA image snapshots to reflect changes in translation keys for plant and user images.

* Update homeassistant/components/fyta/image.py

* Update homeassistant/components/fyta/image.py

---------

Co-authored-by: dontinelli <73341522+dontinelli@users.noreply.github.com>

* Update QS + ruff

* Revert MINOR_VERSION increase and remove obsolete migration test

* Update snapshot

* Resolve comments

* Update snapshot

* Fix

---------

Co-authored-by: Alexander <chimera88@gmx.de>
2025-05-26 15:40:15 +02:00
Thomas D
486535c189 Add scene platform to Qbus integration (#144032)
* Add scene platform

* Remove updating last_activated

* Simplify device info

* Move _attr_name to specific classes

* Refactor device info

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-26 15:37:07 +02:00
Abílio Costa
54dce53628 Add sensor tests for device class enums (#145523) 2025-05-26 14:28:30 +01:00
starkillerOG
a3b7cd7b4d Implement NVR download for Reolink recordings (#144121) 2025-05-26 15:23:11 +02:00
Robin Lintermann
dafda420e5 Add smarla integration (#143081)
* Added smarla integration

* Apply suggested changes

* Bump pysmarlaapi version and reevaluate quality scale

* Focus on switch platform

* Bump pysmarlaapi version

* Change default name of device

* Code refactoring

* Removed obsolete reload function

* Code refactoring and clean up

* Bump pysmarlaapi version

* Refactoring and changed access token format

* Fix tests for smarla config_flow

* Update quality_scale

* Major rework of tests and refactoring

* Bump pysmarlaapi version

* Use object equality operator when applicable

* Refactoring

* Patch both connection objects

* Refactor tests

* Fix leaking tests

* Implemented full test coverage

* Bump pysmarlaapi version

* Fix tests

* Improve tests

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-26 15:21:23 +02:00
Yuxin Wang
68a4e1a112 Add reconfigure config flow to APCUPSD (#143801)
* Add reconfigure config flow

* Add reconfigure config flow

* Add more subtests for wrong device

* Reduce the patch scopes

* Address comments

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-26 15:10:30 +02:00
epenet
d3275c3833 Use shorthand attributes in xiaomi_miio (#145614) 2025-05-26 15:07:05 +02:00
Retha Runolfsson
2d5867cab6 Add switchbot air purifier support (#144552)
* add support for air purifier

* add unit tests for air purifier

* fix aqi translation

* fix aqi translation

* add air purifier table

* fix air purifier

* remove init and add options for aqi level
2025-05-26 15:06:33 +02:00
Retha Runolfsson
49cf66269c Set quality scale to 🥇 gold for switchbot integration (#144608)
* update quality scale

* update to gold
2025-05-26 15:06:07 +02:00
G Johansson
5642d6450f Add template to command args in command_line notify (#125170)
* Add template to command args in command_line notify

* coverage

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-05-26 15:05:44 +02:00
Sid
6ddc2193d6 Add exception handler and exception translations to eheimdigital (#145476)
* Add exception handler and exception translations to eheimdigital

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-26 15:05:11 +02:00
Jeef
5202bbb6af Update Weatherflow wind direction icons to use Ranged Icon Translation (#140166)
* feat: Wind direction icons

* optimize funciton

* float to int

* no-verify

* pre-change for icon translation changes

---------

Co-authored-by: Jeff Stein <6491743+jeffor@users.noreply.github.com>
2025-05-26 15:05:00 +02:00
avee87
39906cf65b Add state_class to metoffice sensors (#145496)
* Add state_class to metoffice sensors

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-26 15:04:26 +02:00
peteS-UK
c7745e0d02 Add support for SEARCH_MEDIA feature (#143261)
* initial

* initial

* add tests

* Update for list return

* translate exception

* tests for errors

* review tweaks

* test fix

* force content_type to lowercase

* Allow media_content_type = None

* new test
2025-05-26 15:01:17 +02:00
Simone Chemelli
1c1f5a779b Cleanup non-existing climate and humidifier devices for Comelit (#144624)
* Cleanup non-existing climate and humidifier devices for Comelit

* skip removing main hub device

* add tests

* complete tests

* improve logging

* fix post rebase

* apply  review comments

* typos

* fix identifiers

* fix ruff post merge

* clean post merge
2025-05-26 14:59:01 +02:00
Jan Rieger
ba0f6c3ba2 Add translations to Unifi Protect (#145548)
* Add translations to Unifi Protect

* address comments

* change `CO` to `CO alarm`
2025-05-26 14:56:55 +02:00
Andrea Turri
150110e221 add/fix miele program ids mapping (#145577)
* add/fix miele program ids mapping

* fix mistyped keys and base translations
2025-05-26 14:56:16 +02:00
Sasha Hilton
e95e9e1a33 bump starlink-grpc-core to 1.2.3 due to API change upstream (#145261) 2025-05-26 14:47:00 +02:00
epenet
c68ab714b7 Add init type hints to XiaomiMiioEntity derived entities (#145611) 2025-05-26 14:46:07 +02:00
epenet
2d2e0d0fb9 Add init type hints to XiaomiCoordinatedMiioEntity derived entities (#145612) 2025-05-26 14:45:55 +02:00
G Johansson
970359c6a0 Empty response returns empty list in Nord Pool (#145514) 2025-05-26 14:25:07 +02:00
Markus Adrario
e22fbe553b Add Homee event platform (#145569)
* add event.py

* Add strings and code improvements

* Add tests for event

* last fixes

* fix review comments

* update test snapshot
2025-05-26 14:00:30 +02:00
Petar Petrov
87c3e2c7ce Download backup if restore fails in Z-Wave migration (#145434)
* ZWaveJS migration: Download backup if restore fails

* update test

* PR comment
2025-05-26 13:56:37 +02:00
Petro31
13a6c13b89 Allow base64_encode to support bytes and strings (#145227) 2025-05-26 13:56:11 +02:00
epenet
cc504da03a Improve type hints in XiaomiGatewayDevice derived entities (#145605) 2025-05-26 13:21:00 +02:00
Petro31
25f3ab3640 Add from_hex filter (#145229) 2025-05-26 13:16:56 +02:00
Åke Strandberg
2cf09abb4c Fulfilled quality rules - gold and platinum tiers for Miele integration (#144773)
Fulfilled quality rules - gold and platinum tiers
2025-05-26 11:24:01 +02:00
Maciej Bieniek
c1c74a6f61 Mark Shelly quality as silver (#145610) 2025-05-26 12:22:46 +03:00
Avi Miller
8f9f531dd7 Bump aiolifx to 1.1.5 to improve the identification of LIFX Luna (#145416)
Signed-off-by: Avi Miller <me@dje.li>
2025-05-26 11:22:11 +02:00
Jan Bouwhuis
34d11521c0 Fix reference to "tilt command topic" in MQTT translation strings (#145563)
* Fix reference to "tilt command topic" in MQTT translation strings

* Missed one
2025-05-26 11:13:24 +02:00
Josef Zweck
561be22a60 Disable last cleaning sensor for gs3mp model in lamarzocco (#145576)
* Disable last cleaning sensor for gs3mp model in lamarzocco

* is comparison
2025-05-26 11:13:15 +02:00
Jan Bouwhuis
301d308d5a Add payload ON and OFF options to MQTT switch subentry component (#144627)
* Add payload ON and OFF options to MQTT switch component

* Add `state_on` and `state_off` options
2025-05-26 11:12:42 +02:00
Simone Chemelli
d975135a7c Improve Bluetooth binary_sensor for Amazon Devices (#145600)
Improve blueetooth binary_sensor for Amazon Devices
2025-05-26 11:00:09 +02:00
Simone Chemelli
19ee8886d6 Add more mac-addresses for Amazon Devices autodiscovery (#145598)
* Add more mac-addresses for Amazon Devices autodiscovery

* some more
2025-05-26 10:59:13 +02:00
Maciej Bieniek
7f4cc99a3e Use sub-devices for Shelly multi-channel devices (#144100)
* Shelly RPC sub-devices

* Better varaible name

* Add get_rpc_device_info helper

* Revert channel name changes

* Use get_rpc_device_info

* Add get_rpc_device_info helper

* Use get_block_device_info

* Use helpers in the button platform

* Fix channel name and roller mode for block devices

* Fix EM3 gen1

* Fix channel name for RPC devices

* Revert test changes

* Fix/improve test_block_get_block_channel_name

* Fix test_get_rpc_channel_name_multiple_components

* Fix tests

* Fix tests

* Fix tests

* Use key instead of index to generate sub-device identifier

* Improve logic for Pro RGBWW PM

* Split channels for em1

* Better channel name

* Cleaning

* has_entity_name is True

* Add get_block_sub_device_name() function

* Improve block functions

* Add get_rpc_sub_device_name() function

* Remove _attr_name

* Remove name for button with device class

* Fix names of virtual components

* Better Input name

* Fix get_rpc_channel_name()

* Fix names for Inputs

* get_rpc_channel_name() improvement

* Better variable name

* Clean RPC functions

* Fix input_name type

* Fix test

* Fix entity_ids for Blu Trv

* Fix get_block_channel_name()

* Fix for Blu Trv, once again

* Revert name for reboot button

* Fix button tests

* Fix tests

* Fix coordinator tests

* Fix tests for cover platform

* Fix tests for event platform

* Fix entity_ids in init tests

* Fix get_block_channel_name() for lights

* Fix tests for light platform

* Fix test for logbook

* Update snapshots for number platform

* Fix tests for sensor platform

* Fix tests for switch platform

* Fix tests for utils

* Uncomment

* Fix tests for flood

* Fix Valve entity name

* Fix climate tests

* Fix test for diagnostics

* Fix tests for init

* Remove old snapshots

* Add tests for 2PM Gen3

* Add comment

* More tests

* Cleaning

* Clean fixtures

* Update tests

* Anonymize coordinates in fixtures

* Split Pro 3EM entities into sub-devices

* Make sub-device names more unique

* 3EM (gen1) does not support sub-devices

* Coverage

* Rename "device temperature" sensor to the "relay temperature"

* Update tests after rebase

* Support sub-devices for 3EM (gen1)

* Mark has-entity-name rule as done 🎉

* Rename `relay temperature` to `temperature`
2025-05-26 10:47:22 +02:00
epenet
d4333665fc Add issue trackers to requirements script exceptions (#145608) 2025-05-26 10:21:38 +02:00
TheJulianJES
ba0c03ddbb Bump ZHA to 0.0.59 (#145597) 2025-05-26 06:53:09 +02:00
Ivan Lopez Hernandez
32eb4af6ef Enable message Streaming in the Gemini integration. (#144937)
* Added streaming implementation

* Indicate the entity supports streaming

* Added tests

* Removed unused snapshots

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-05-25 21:50:55 -04:00
Josef Zweck
e4b519d77a Bump pylamarzocco to 2.0.6 (#145595) 2025-05-25 23:59:06 +02:00
Raphael Hehl
14c4cf7b63 Bump uiprotect to version 7.10.0 (#145596) 2025-05-25 23:51:52 +02:00
Paulus Schoutsen
1cc2baa95e Pipeline to stream TTS on tool call (#145477) 2025-05-25 14:59:07 -05:00
Raphael Hehl
f472bf7c87 Bump uiprotect to version 7.9.2 (#145583) 2025-05-25 18:42:02 +02:00
Joost Lekkerkerker
bc9683312e Change cooler name to fridge in SmartThings (#145590) 2025-05-25 18:40:04 +02:00
Joost Lekkerkerker
6634efa3aa Add DHCP discovery to Amazon Devices (#145587)
* Add DHCP discovery to Amazon Devices

* Add DHCP discovery to Amazon Devices

* Add DHCP discovery to Amazon Devices
2025-05-25 18:20:44 +02:00
Simone Chemelli
d0b2331a5f New integration Amazon Devices (#144422)
* New integration Amazon Devices

* apply review comments

* bump aioamazondevices

* Add notify platform

* pylance

* full coverage for coordinator tests

* cleanup imports

* Add switch platform

* update quality scale: docs items

* update quality scale: brands

* apply review comments

* fix new ruff rule

* simplify EntityDescription code

* remove additional platforms for first PR

* apply review comments

* update IQS

* apply last review comments

* snapshot update

* apply review comments

* apply review comments
2025-05-25 17:42:07 +02:00
Maciej Bieniek
46951bf223 Add returned energy sensor for Shelly RPC switch component (#145490)
* Add returned energy sensor for switch component

* Add test

* More tests

* Make returned energy sensor disabled by default
2025-05-25 16:16:55 +02:00
Marc Mueller
565f051ffc Fix aiohttp MockPayloadWriter (#145579) 2025-05-25 14:38:08 +02:00
Florian von Garrel
8c971904ca Add reauth and reconfigure to paperless (#145469)
* Add reauth and reconfigure

* Reauth and reconfigure in different functions

* Add duplicate check

* Add test for reconfigure duplicate

* Removed seconds config entry fixture
2025-05-25 14:03:13 +02:00
Josef Zweck
d0bc71752b Safe get for backflush status in lamarzocco (#145559)
* Safe get for backflush status in lamarzocco

* add correct default
2025-05-25 14:01:15 +02:00
Franck Nijhof
6b1484a7f0 Merge branch 'master' into dev 2025-05-25 10:40:31 +00:00
Joost Lekkerkerker
5eebadc730 Add SmartThings freezer and cooler temperatures (#145468) 2025-05-25 10:38:57 +02:00
tronikos
fa37bc272e Bump opower to 0.12.2 (#145573) 2025-05-25 10:37:50 +02:00
Simone Chemelli
535d128f8a Remove global registry reference in coordinator for UptimeRobot (#142938)
* Remove global registry reference in coordinator for UptimeRobot

* rework current_monitors listing

* fix logic
2025-05-25 02:03:07 +02:00
J. Nick Koston
13d530d110 Bump aiohttp to 3.12.0 (#145570) 2025-05-24 18:10:58 -05:00
Pete Sage
57f754b42b Bump aiokem to 0.5.12 (#145565) 2025-05-24 18:04:26 -05:00
Josef Zweck
1e0a2b704f Bump pylamarzocco to 2.0.5 (#145560) 2025-05-24 23:46:51 +02:00
Simone Chemelli
526a8ee31f Add preset mode to Comelit climate (#145195) 2025-05-25 00:37:21 +03:00
J. Nick Koston
ce02a5544d Bump aiohttp to 3.12.0rc1 (#145562) 2025-05-24 16:12:16 -05:00
Simon Lamon
1044a5341d Bump python-linkplay to v0.2.8 (#145550)
* Bump linkplay to v0.2.7

* Bump linkplay to v0.2.8
2025-05-24 21:53:41 +02:00
Jan Bouwhuis
a707cbc51b Fix translation strings for MQTT subentries (#145529) 2025-05-24 21:26:49 +02:00
tronikos
adf8e50313 Add data descriptions in the Android TV Remote Configure Android apps (#145537)
* Add data descriptions in the Android TV Remote Configure Android apps

* Update homeassistant/components/androidtv_remote/strings.json

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-05-24 21:20:04 +02:00
tronikos
8356bdb506 Bump androidtvremote2 to 0.2.2 (#145542) 2025-05-24 17:41:40 +02:00
Abílio Costa
5c7aa833ec Simplify ZBT-1 setup string (#145532) 2025-05-24 11:41:16 +02:00
Jan Bouwhuis
f92d14d87c Bump incomfort-client to v0.6.9 (#145546) 2025-05-24 10:53:08 +02:00
J. Nick Koston
2d3a6d780c Bump aiohttp to 3.12.0rc0 (#145540)
changelog: https://github.com/aio-libs/aiohttp/compare/v3.12.0b3...v3.12.0rc0
2025-05-24 09:52:48 +02:00
Petro31
c359765a29 Remove inactive codeowner from template integration (#145535) 2025-05-23 23:59:22 +02:00
Michael
d8ed10bcc7 Use _handle_coordinator_update() instead of own callback in Feedreader event entity (#145520)
use _handle_coordinator_update() instead of own callback
2025-05-23 21:10:26 +02:00
karwosts
19259d5cad Add read_only selectors to Statistics Options Flow (#145522) 2025-05-23 17:58:45 +02:00
epenet
102230bf9d Remove repoze.lru from license exceptions (#145519)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-23 17:46:09 +02:00
Jan Bouwhuis
2a38f03ec9 Add MQTT fan as entity platform on MQTT subentries (#144698) 2025-05-23 17:40:54 +02:00
Ludovic BOUÉ
e22ea85e84 Add Matter Pump device type (#145335)
* Pump status

* Pump speed

* PumpStatusRunning

* ControlModeEnum

* Add tests

* Clean code

* Update tests and sensors

* Review fixes

* Add RPM unit

* Fix for unknown value

* Update snapshot

* OperationMode

* Update snapshots

* Update snapshot

* Update tests/components/matter/test_select.py

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

* Handle SupplyFault bit enabled too

* Review fix

* Unmove

* Remove pump_operation_mode

* Update snapshot

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-05-23 17:20:27 +02:00
Michael
ed0ff93d1e Bump py-sucks to 0.9.11 (#145518)
bump py-sucks to 0.9.11
2025-05-23 17:12:43 +02:00
Franck Nijhof
3e6473d130 2025.5.3 (#145516) 2025-05-23 17:09:32 +02:00
karwosts
7af731694f Support readonly selectors in config_flows (#129456)
* Allow disabled selectors in config flows. Show hidden options for history_stats.

* fix tests

* use optional instead of required

* rename flag to readonly

* rename to read_only

* Update to use read_only field as part of selector definition

* lint fix

* Fix test

* All selectors
2025-05-23 17:05:43 +02:00
epenet
83ec45e4fc Use runtime_data in xiaomi_miio (#145517)
* Use runtime_data in xiaomi_miio

* Reduce changes
2025-05-23 17:03:33 +02:00
Michael
086e97821f Add automatic backup event entity to Home Assistant Backup system (#145350)
* add automatic backup event entity

* add tests

* fix test

* Apply suggestions from code review

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

* implement _handle_coordinator_update

* add translations for event attributes

* simplify condition

* Apply suggestions from code review

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

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-23 17:01:57 +02:00
Petro31
5048d1512c Add trigger based template cover (#145455)
* Add trigger based template cover

* address comments

* update position template in test
2025-05-23 16:32:21 +02:00
Denis Shulyaka
199c565bf2 Add Anthropic Claude 4 support (#145505)
Add Claude 4 support

Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-05-23 10:31:44 -04:00
epenet
cbeefdaf26 Mark humidifier methods and properties as mandatory in pylint plugin (#145507) 2025-05-23 16:26:22 +02:00
Michael
4747de4703 Don't manipulate hvac modes based on device active mode in AVM Fritz!SmartHome (#145513) 2025-05-23 16:12:13 +02:00
Franck Nijhof
9a183bc16a Bump version to 2025.5.3 2025-05-23 14:03:47 +00:00
Robert Resch
e540247c14 Bump deebot-client to 13.2.1 (#145492) 2025-05-23 14:03:02 +00:00
rappenze
0aef8b58d8 Bump pyfibaro to 0.8.3 (#145488) 2025-05-23 14:03:01 +00:00
tronikos
f0501f917b Fix strings related to Google search tool in Google AI (#145480) 2025-05-23 14:02:59 +00:00
tronikos
97004e13cb Make Gemma models work in Google AI (#145479)
* Make Gemma models work in Google AI

* move one line to be improve readability
2025-05-23 14:02:58 +00:00
tronikos
f867a0af24 Bump opower to 0.12.1 (#145464) 2025-05-23 14:02:57 +00:00
Joost Lekkerkerker
d3b3839ffa Bump pysmartthings to 3.2.3 (#145444) 2025-05-23 14:02:56 +00:00
starkillerOG
1a227d6a10 Reolink fix device migration (#145443) 2025-05-23 14:02:54 +00:00
Joost Lekkerkerker
fc8c403a3a Bump yt-dlp to 2025.05.22 (#145441) 2025-05-23 14:02:53 +00:00
Josef Zweck
c1bf596eba Mark backflush binary sensor not supported for GS3 MP in lamarzocco (#145406) 2025-05-23 14:02:52 +00:00
Michael
63f69a9e3d Bump py-synologydsm-api to 2.7.2 (#145403)
bump py-synologydsm-api to 2.7.2
2025-05-23 14:02:51 +00:00
Josef Zweck
e13b014b6f Bump pylamarzocco to 2.0.4 (#145402) 2025-05-23 14:02:49 +00:00
c0ffeeca7
be0d4d926c OTBR: remove links to obsolete multiprotocol docs (#145394) 2025-05-23 14:02:48 +00:00
Raj Laud
2403fff81f Bump pysqueezebox to v0.12.1 (#145384) 2025-05-23 14:02:47 +00:00
Andy
8c475787cc Fix: Revert Ecovacs mower total_stats_area unit to square meters (#145380) 2025-05-23 14:02:45 +00:00
peteS-UK
d9fe1edd82 Add initial coordinator refresh for players in Squeezebox (#145347)
* initial

* add test for new player
2025-05-23 14:02:44 +00:00
Michael
f5cf64700a Fix limit of shown backups on Synology DSM location (#145342) 2025-05-23 14:02:43 +00:00
Josef Zweck
777b04d7a5 Handle more exceptions in azure_storage (#145320) 2025-05-23 14:02:41 +00:00
Josef Zweck
9fc78ed4e2 Add cloud as after_dependency to onedrive (#145301) 2025-05-23 14:02:40 +00:00
Matthew FitzGerald-Chamberlain
d03af549d4 Bump pyaprilaire to 0.9.0 (#145260) 2025-05-23 14:02:39 +00:00
G Johansson
d91f01243c Bump holidays to 0.73 (#145238) 2025-05-23 14:02:38 +00:00
Martin Hjelmare
5094208db6 Fix Z-Wave config entry unique id after NVM restore (#145221)
* Fix Z-Wave config entry unique id after NVM restore

* Remove stale comment
2025-05-23 14:01:37 +00:00
Simone Chemelli
006f66a841 Bump aiocomelit to 0.12.3 (#145209) 2025-05-23 14:01:36 +00:00
Maikel Punie
64b7d77840 Bump velbusaio to 2025.5.0 (#145198) 2025-05-23 14:01:35 +00:00
Martin Hjelmare
abf6a809b8 Fix Z-Wave unique id update during controller migration (#145185) 2025-05-23 14:01:33 +00:00
Martin Hjelmare
1b7dd205c7 Improve Z-Wave config flow tests (#144871)
* Improve Z-Wave config flow tests

* Fix test

* Use identify check for result type
2025-05-23 14:01:32 +00:00
Keilin Bickar
3e00366a61 Bump sense-energy to 0.13.8 (#145156) 2025-05-23 13:50:34 +00:00
karwosts
a17275b559 Fix history_stats with sliding window that ends before now (#145117) 2025-05-23 13:50:33 +00:00
Jan-Philipp Benecke
9534a919ce Add missing device condition translations to lock component (#145104) 2025-05-23 13:45:44 +00:00
Joost Lekkerkerker
422dbfef88 Map auto to heat_cool for thermostat in SmartThings (#145098) 2025-05-23 13:45:43 +00:00
Robert Resch
8e44684a61 Fix proberly Ecovacs mower area sensors (#145078) 2025-05-23 13:45:41 +00:00
Manu
642e7fd487 Bump aiontfy to 0.5.2 (#145044) 2025-05-23 13:45:40 +00:00
peteS-UK
9bb9132e7b Fix album and artist returning "None" rather than None for Squeezebox media player. (#144971)
* fix

* snapshot update

* cast type
2025-05-23 13:45:39 +00:00
J. Nick Koston
41be82f167 Bump ESPHome stable BLE version to 2025.5.0 (#144857) 2025-05-23 13:45:37 +00:00
Marc Hörsken
47140e14d9 Postpone update in WMSPro after service call (#144836)
* Reduce stress on WMS WebControl pro with higher scan interval

Avoid delays and connection issues due to overloaded hub.
Fixes #133832 and #134413

* Schedule an entity state update after performing an action

Avoid delaying immediate status updates, e.g. on/off changes.

* Replace scheduled state updates with delayed action completion

Suggested-by: joostlek
2025-05-23 13:45:36 +00:00
TheOneValen
926502b0f1 Allow image send with read-only access (matrix notify) (#144819) 2025-05-23 13:45:35 +00:00
disforw
78351ff7a7 Fix QNAP fail to load (#144675)
* Update coordinator.py

* Update coordinator.py

@peternash

* Update coordinator.py

* Update coordinator.py

* Update coordinator.py

* Update coordinator.py
2025-05-23 13:45:33 +00:00
wuede
c333726867 Netatmo: do not fail on schedule updates (#142933)
* do not fail on schedule updates

* add test to check that the store data remains unchanged
2025-05-23 13:45:32 +00:00
starkillerOG
fc2fe32f34 Reolink fix device migration (#145443) 2025-05-23 15:33:03 +02:00
epenet
528a509479 Mark light methods and properties as mandatory in pylint plugin (#145510) 2025-05-23 14:28:41 +01:00
Franck Nijhof
bca4793c69 Add concentration conversion support for mg/m³ (#145325) 2025-05-23 14:24:18 +01:00
Josef Zweck
0c9b1b5c58 Add cloud as after_dependency to onedrive (#145301) 2025-05-23 15:07:06 +02:00
Robert Resch
7bf4239789 Bump deebot-client to 13.2.1 (#145492) 2025-05-23 14:54:18 +02:00
epenet
71ac2d3d75 Improve type hints in xiaomi_miio humidifier (#145506) 2025-05-23 14:54:09 +02:00
Denis Shulyaka
f019e8a36c Bump Anthropic library to 0.52.0 (#145494) 2025-05-23 14:48:54 +02:00
J. Nick Koston
44560dd298 Bump aiohttp to 3.12.0b3 (#145358) 2025-05-23 14:44:47 +02:00
Jan Bouwhuis
e8ea5c9d62 Add MQTT cover as entity platform on MQTT subentries (#144381)
* Add MQTT cover as entity platform on MQTT subentries

* Revert change vol.Coerce wrappers on cover schema

* Fix template validator and cleanup redundant validators

* Cleanup more redundant validators
2025-05-23 14:25:00 +02:00
Jan Bouwhuis
17297ab929 Improve mqtt subentry selector validation and remove redundant validators (#145499) 2025-05-23 13:23:36 +02:00
rappenze
041c09380b Bump pyfibaro to 0.8.3 (#145488) 2025-05-23 12:05:13 +02:00
Markus Lanthaler
553d420db9 Add support for Tuya Wireless Switch entity (#123284)
Add support for Tuya Wireless Switch entity
2025-05-23 08:42:09 +02:00
Joost Lekkerkerker
3f99a0bb65 Add diagnostics to Paperless-ngx (#145465)
* Add diagnostics to Paperless-ngx

* Add diagnostics to Paperless-ngx
2025-05-23 08:09:54 +02:00
Joost Lekkerkerker
c3d318ff51 Add paperless-ngx to strict typing (#145466) 2025-05-23 08:08:44 +02:00
Erik Montnemery
19345b0e18 Prefer to create backups in local storage if selected (#145331) 2025-05-23 08:00:35 +02:00
tronikos
e13abf2034 Make Gemma models work in Google AI (#145479)
* Make Gemma models work in Google AI

* move one line to be improve readability
2025-05-22 22:02:30 -07:00
tronikos
61248c561d Fix strings related to Google search tool in Google AI (#145480) 2025-05-22 22:01:48 -07:00
epenet
8561721faf Add pytest/codecov to forbidden runtime dependencies (#145447)
Add pytest/codecov to forbidden runtime packages
2025-05-22 23:15:21 +02:00
Manu
2f318927bc Add pending damage and pending quest items sensors (#145449)
Add pending damage and quest items sensors
2025-05-22 23:10:49 +02:00
tronikos
a15572bb8c Bump opower to 0.12.1 (#145464) 2025-05-22 22:22:20 +02:00
Bonne Eggleston
b532776d78 Make Powerwall energy sensors TOTAL_INCREASING to fix hardware swaps (#145165) 2025-05-22 14:49:39 -05:00
Abílio Costa
4ad34c57b5 Replace empty mock in GoalZero tests (#145463) 2025-05-22 20:22:09 +01:00
Abílio Costa
228beacca8 Add default sensor data for Tesla Wall Connector tests (#145462) 2025-05-22 21:20:57 +02:00
Norbert Rittel
c130a9f31c Fix typo in reauth_confirm description of metoffice (#145458) 2025-05-22 21:12:37 +02:00
Michael
622ab922b5 Add configuration url to Immich device info (#145456)
add configuration url to device info
2025-05-22 21:09:28 +02:00
epenet
6de2258325 Mark device_tracker methods and properties as mandatory in pylint plugin (#145309) 2025-05-22 19:15:00 +01:00
jz-v
d8e0be69d1 Add HomeKit thermostat fan state mapping for preheating, defrosting (#145353)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-22 11:57:01 -05:00
Petro31
4ee9fdc9fb Add AbstractTemplateVacuum to prepare for trigger based template vacuums (#144990)
* Add AbstractTemplateVacuum

* fix typo from copypaste

* update after rebase
2025-05-22 17:50:26 +02:00
Petro31
a8823cc1d1 Add AbstractTempleAlarmControlPanel class to prepare for trigger based template alarm control panels (#144974)
* Add AbstractTempleAlarmControlPanel class

* update after rebase

* remove unused list
2025-05-22 17:50:15 +02:00
Petro31
83ee9e9540 Add AbstractTemplate cover to prepare for trigger based template covers (#144907)
* Add AbstractTemplate cover to prepare for trigger based template covers

* add reflection and improve test coverage

* update class after rebase

* remove test
2025-05-22 17:49:50 +02:00
Petro31
9a74390143 Add AbstractTemplateLock to prepare for trigger based template locks (#144978)
* Add AbstractTemplateLock

* update after rebase
2025-05-22 17:33:57 +02:00
Joost Lekkerkerker
64d6552890 Bump pysmartthings to 3.2.3 (#145444) 2025-05-22 17:26:59 +02:00
Joost Lekkerkerker
65ebdb4292 Bump yt-dlp to 2025.05.22 (#145441) 2025-05-22 17:26:04 +02:00
Petro31
7a55abaa42 Add AbstractTemplateFan class in preparation for trigger based entity (#144968)
* Add AbstractTemplateFan class in preparation for trigger based entity

* update after rebase
2025-05-22 17:18:48 +02:00
dalan
8f05a639f3 HomeKit Bridge integration: Adding h264_qsv as valid VIDEO_CODEC option (#145448) 2025-05-22 09:52:58 -05:00
TimL
917b467b85 Add SMLIGHT button entities for second radio (#141463)
* Add button entities for second radio

* Update tests for second router reconnect button
2025-05-22 14:50:22 +02:00
J. Diego Rodríguez Royo
a938001805 Don't add dynamically Home Connect event sensors and disable them by default (#144757)
* Don't add dynamically Home Connect sensors and disable them by default

* Fix test

* Check for None

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-22 12:55:11 +02:00
Ludovic BOUÉ
9e6de48a22 Matter Device Energy Management cluster ESAState attribute (#144430)
* ESAState

* Update strings.json

* Add test
2025-05-22 12:53:08 +02:00
jvmahon
569aeff054 Add matter attributes (#140843)
* Add Matter attributes

* Add Matter attributes

* Add Matter attributes

* Add Matter attributes

* Update strings.json

* Update homeassistant/components/matter/select.py

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>

* Update select.py

Deleted items to be added as switch entities instead.

* Update strings.json

* Update select.py

* Update strings.json

* Fix

* Update strings.json

* Update strings.json

* Fix

* Update select.py

---------

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-22 12:42:05 +02:00
Joost Lekkerkerker
c86ba49a79 Add Matter test to select attribute (#145440) 2025-05-22 12:40:56 +02:00
epenet
3b4004607d Mark image_processing methods and properties as mandatory in pylint plugin (#145435) 2025-05-22 12:19:22 +02:00
Gigatrappeur
c68e663a1c Add webhook in switchbot cloud integration (#132882)
* add webhook in switchbot cloud integration

* Rename _need_initialized to _is_initialized and reduce nb line in async_setup_entry

* Add unit tests

* Enhance poll management

* fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-22 12:19:08 +02:00
Tamer Wahba
d870410413 Quantum Gateway device tracker tests (#145161)
* move constants to central const file

* add none return type to device scanner constructor

* add quantum gateway device tracker tests

* fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-22 12:18:56 +02:00
Florian von Garrel
9a8c29e05d Add paperless integration (#145239)
* add paperless integration - config flow and initialisation

* Add first sensors - documents, inbox, storage total and available

* Add status sensors with error attributes

* add status coordinator and organized code

* Fixed None error

* Organized code and moved requests to coordinator

* Organized code

* optimized code

* Add statustype state strings

* Error handling

* Organized code

* Add update sensor and one coordinator for integration

* add sanity sensor and timer for version request

* Add sensors and icons.json. better errorhandling

* Add tests and error handling

* FIxed tests

* Add tests for coverage

* Quality scale

* Stuff

* Improved code structure

* Removed sensor platform and reauth / reconfigure flow

* bump pypaperless to 4.1.0

* Optimized tests; update sensor as update platform; little optimizations

* Code optimizations with update platform

* Add sensor platform

* Removed update platform

* quality scale

* removed unused const

* Removed update snapshot; better code

* Changed name of entry

* Fixed bugs

* Minor changes

* Minor changed and renamed sensors

* Sensors to measurement

* Fixed snapshot; test data to json; minor changes

* removed mypy errors

* Changed translation

* minor changes

* Update homeassistant/components/paperless_ngx/strings.json

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-22 12:17:38 +02:00
epenet
a54c8a88ff Improve type hints in microsoft_face_detect (#145421)
* Improve type hints in microsoft_face_detect

* Improve
2025-05-22 11:52:26 +02:00
Manuel Rüger
ca914d8e4f switchbot_cloud: Add Smart Lock door and calibration state (#143695)
* switchbot_cloud: Add Smart Lock door and calibration state

* Incorporate review
2025-05-22 11:51:28 +02:00
epenet
687bedd251 Improve type hints in sighthound (#145432)
* Improve type hints in sighthound

* More
2025-05-22 11:35:06 +02:00
Franck Nijhof
5ddadcbd65 Add range support to icon translations (#145340) 2025-05-22 11:32:33 +02:00
epenet
981842ee87 Improve type hints in seven_segments (#145431)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-22 11:31:17 +02:00
epenet
ab69223d75 Improve type hints in openalpr_cloud (#145429)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-22 11:30:53 +02:00
epenet
69f0f38a09 Improve type hints in qrcode (#145430)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-22 11:30:38 +02:00
epenet
40267760fd Improve type hints in tensorflow (#145433)
* Improve type hints in tensorflow

* Use ANTIALIAS again

* Use Image.Resampling.LANCZOS
2025-05-22 11:23:33 +02:00
marc7s
6e74b56649 Catch invalid settings error in geocaching (#139944)
Refactoring and preparation for other sensor types
2025-05-22 11:22:33 +02:00
epenet
d35802a996 Improve type hints in microsoft_face (#145417)
* Improve type hints in microsoft_face

* Remove hass from init
2025-05-22 11:21:45 +02:00
Martin Hjelmare
c007286fd6 Improve Z-Wave config flow test typing (#145438) 2025-05-22 11:11:38 +02:00
Joost Lekkerkerker
b5a3cedacd Move to explicit exports in test helpers (#145392) 2025-05-22 10:44:31 +02:00
epenet
3d53bdc6c5 Improve type hints in dlib_face_identify (#145423) 2025-05-22 10:37:44 +02:00
epenet
a7f6a6f22c Improve type hints in dlib_face_detect (#145422) 2025-05-22 10:37:03 +02:00
epenet
7893eaa389 Improve type hints in microsoft_face_identify (#145419) 2025-05-22 10:36:12 +02:00
Lektri.co
e410977e64 Add new button to the Lektrico integration (#145420) 2025-05-22 10:34:14 +02:00
peteS-UK
d48ca1d858 Hotfix for incorrect bracket in messages for Squeezebox (#145418)
hotfix for wrong bracket
2025-05-22 10:07:10 +02:00
epenet
8758a086c1 Improve type hints in doods (#145426) 2025-05-22 09:18:28 +02:00
Pete Sage
1db5c514e6 Add binary_sensor platform to Rehlko (#145391)
* feat: add binary_sensor platform to Rehlko

* feat: add binary sensor platform

* fix: simplify availability logic

* fix: simplify availability logic

* fix: simplify

* fix: rename sensor

* fix: rename sensor

* fix: rename sensor

* fix: remove unneeded type

* fix: rename sensor to 'Auto run'

* fix: use device_class name
2025-05-22 09:07:38 +02:00
Joost Lekkerkerker
613aa9b2cf Add climate entity for heatpump zones in SmartThings (#144991)
* Add climate entity for heatpump zones in SmartThings

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix

* Sync SmartThings EHS fixture
2025-05-22 08:27:01 +02:00
Joost Lekkerkerker
4c6e854cad Add valve position capability to SmartThings (#144923)
* Add another EHS SmartThings fixture

* Add another EHS

* Add valve position capability to SmartThings

* Fix

* Fix
2025-05-22 08:25:41 +02:00
Michael
66a6e55310 Centralise MockStreamReaderChunked helper (#145404)
centralize MockStreamReaderChunked helper
2025-05-22 08:22:02 +02:00
Pete Sage
bffbd5607b Remove unneeded parenthesis in comparison for Sonos (#145413)
fix: remove unneeded paren
2025-05-22 08:17:31 +02:00
Ludovic BOUÉ
12b5dbdd83 Add CancelBoost for Matter Water heater (#145316)
* Update water_heater.py

Add CancelBoost

* Add test for CancelBoost

* Update water_heater.py
2025-05-22 08:01:42 +02:00
epenet
9e7ae1daa4 Catch blocking version pinning in dependencies early (#145364)
* Catch upper bindings in dependencies early

* One more

* Apply suggestions from code review
2025-05-22 07:56:18 +02:00
Petro31
f36ee88a87 Clean up AbstractTemplateEntity (#145409)
Clean up abstract templates
2025-05-22 07:23:44 +02:00
Manu
8b3bad1f54 Bump habiticalib to v.0.4.0 (#145414)
Bump habiticalib to v0.4.0
2025-05-22 07:22:50 +02:00
epenet
b407792bd1 Mark geo_location methods and properties as mandatory in pylint plugin (#145313) 2025-05-22 01:57:39 +03:00
Paulus Schoutsen
12376a2338 Mark LLMs that support streaming as such (#145405) 2025-05-22 01:54:29 +03:00
epenet
088cfc3576 Mark fan methods and properties as mandatory in pylint plugin (#145311) 2025-05-21 23:29:33 +02:00
epenet
01b8f97201 Mark cover methods and properties as mandatory in pylint plugin (#145308) 2025-05-21 22:27:53 +01:00
Lektri.co
195e34cc09 Bump lektricowifi to 0.1 (#145393)
Use lektricowifi 0.1: add a new command
2025-05-21 22:43:42 +02:00
peteS-UK
fbab6741af Update exception handling for initialization for Squeezebox (#144674)
* initial

* tests

* translate exceptions

* updates

* tests updates

* remove bare exception

* merge fix
2025-05-21 22:37:07 +02:00
J. Nick Koston
e2b9e21c6a Bump ESPHome stable BLE version to 2025.5.0 (#144857) 2025-05-21 16:23:04 -04:00
Michael
4a26352c50 Bump py-synologydsm-api to 2.7.2 (#145403)
bump py-synologydsm-api to 2.7.2
2025-05-21 22:22:33 +02:00
Josef Zweck
d43371ed2f Bump pylamarzocco to 2.0.4 (#145402) 2025-05-21 22:02:14 +02:00
avee87
4f24d63de1 Update metoffice to use DataHub API (#131425)
* Update metoffice to use DataHub API

* Reauth test

* Updated to datapoint 0.11.0

* Less hacky check for day/night in twice-daily forecasts

* Updated to datapoint 0.12.1, added daily forecast

* addressed review comments

* one more nit

* validate credewntials in reauth flow

* Addressed review comments

* Attempt to improve coverage

* Addressed comments

* Reverted unnecessary reordering

* Update homeassistant/components/metoffice/sensor.py

* Update tests/components/metoffice/test_sensor.py

* Update homeassistant/components/metoffice/sensor.py

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-21 21:56:32 +02:00
Joost Lekkerkerker
cd9339903f Add thermostat fixture to SmartThings (#145407) 2025-05-21 21:17:03 +02:00
Josef Zweck
ca01bdc481 Mark backflush binary sensor not supported for GS3 MP in lamarzocco (#145406) 2025-05-21 21:12:43 +02:00
Joost Lekkerkerker
39a5341ab8 Add SmartThings capability for Washer soil level (#145041) 2025-05-21 20:27:38 +02:00
c0ffeeca7
3c93f6e3f9 ZHA repairs: remove links to obsolete docs (#145398) 2025-05-21 20:23:05 +02:00
Tsvi Mostovicz
13ce4322ac Reword sunset event exception (#145400) 2025-05-21 20:21:06 +02:00
Jeremiah Paige
b3ba506e6c wsdot component adopts wsdot package (#144914)
* wsdot component adopts wsdot package

* update generated files

* format code

* move wsdot to async_setup_platform

* Fix tests

* cast wsdot travel id

* bump wsdot to 0.0.1

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-21 20:15:26 +02:00
Joost Lekkerkerker
ea9fc6052d Add power cool and power freeze to SmartThings (#145102) 2025-05-21 20:14:13 +02:00
Joost Lekkerkerker
c8ceea4be8 Add SmartThings capability for Washer spin level (#145039) 2025-05-21 20:01:12 +02:00
Marc Mueller
3df993b9a4 Update igloohome-api to 0.1.1 (#145401) 2025-05-21 19:42:13 +02:00
Marc Mueller
980f19173f Update sensorpro-ble to 0.7.1 (#145397) 2025-05-21 18:40:32 +02:00
Marc Mueller
b1da600269 Update inkbird-ble to 0.16.2 (#145396) 2025-05-21 18:40:24 +02:00
Marc Mueller
34c5f79983 Update bluetooth-auto-recovery to 1.5.2 (#145395) 2025-05-21 18:40:18 +02:00
Joost Lekkerkerker
4cd3527761 Enable B009 (#144192) 2025-05-21 16:37:51 +01:00
TheOneValen
1dbe1955eb Allow image send with read-only access (matrix notify) (#144819) 2025-05-21 17:18:34 +02:00
c0ffeeca7
743abadfcf OTBR: remove links to obsolete multiprotocol docs (#145394) 2025-05-21 17:11:19 +02:00
Tsvi Mostovicz
bbd223af1f Jewish Calendar: Make exception translatable (#145376) 2025-05-21 17:07:36 +02:00
Martin Hjelmare
cb717c0ec6 Improve Z-Wave config flow test fixtures (#145378) 2025-05-21 17:06:36 +02:00
Martin Hjelmare
4956cf3727 Fix Z-Wave installation type string (#145390) 2025-05-21 17:04:48 +02:00
epenet
f76165e761 Prevent types-*/setuptools/wheel runtime requirements in dependencies (#145381)
Prevent setuptools/wheel runtime requirements in dependencies
2025-05-21 16:17:24 +02:00
Erik Montnemery
dd00d0daad Improve failing backup repair messages (#145388) 2025-05-21 16:16:50 +02:00
Andre Lengwenus
77ec87d0ac Bump lcn-frontend to 0.2.5 (#144983) 2025-05-21 16:10:25 +02:00
Raj Laud
2209f0b884 Bump pysqueezebox to v0.12.1 (#145384) 2025-05-21 15:17:51 +02:00
Andy
61fd073a5c Fix: Revert Ecovacs mower total_stats_area unit to square meters (#145380) 2025-05-21 14:19:37 +02:00
Petar Petrov
efa7fe0dc9 Recommended installation option for Z-Wave (#145327)
Recommended installation option for ZWave
2025-05-21 13:30:59 +02:00
Erik Montnemery
00a1d9d1b0 Improve comment explaining planned backup store version bump (#145368) 2025-05-21 13:22:05 +02:00
Retha Runolfsson
630c438834 Add lock ultra and lock lite for switchbot integration (#145373) 2025-05-21 12:37:47 +02:00
Sid
3ada93b293 Bump eheimdigital to 1.2.0 (#145372) 2025-05-21 12:35:10 +02:00
c0ffeeca7
291499d5e1 Update links to user docs: Connect-ZBT-1, Green, Yellow (#145374) 2025-05-21 10:57:20 +01:00
Retha Runolfsson
08c453581c Add hub3 support for switchbot integration (#145371)
add support for hub3
2025-05-21 11:12:08 +02:00
Michael
5e25bbba2d Fix limit of shown backups on Synology DSM location (#145342) 2025-05-21 10:22:47 +02:00
Erik Montnemery
eb85185072 Minor code deduplication in backup manager (#145366) 2025-05-21 10:19:53 +02:00
Retha Runolfsson
3f72030d5f Bump pyswitchbot to 0.64.1 (#145360) 2025-05-21 10:08:32 +02:00
peteS-UK
69a4d2107f Add initial coordinator refresh for players in Squeezebox (#145347)
* initial

* add test for new player
2025-05-20 23:29:55 +02:00
Joris Drenth
46fe132e83 Add sensors to Wallbox (#145247) 2025-05-20 22:02:07 +01:00
Ernst Klamer
c60f19b35b Bump xiaomi-ble to 0.39.0 (#145348) 2025-05-20 22:37:27 +02:00
Petar Petrov
ba44986524 Remove the old ZWave controller from the list of migration targets (#145281)
* Remove the old ZWave controller from the list of migration targets

* ensure addon device path is serial/by_id

* Use executor

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-20 22:11:03 +02:00
Pete Sage
73811eac0a Add support for music library folder to Sonos (#139554)
* initial prototype

* use constants

* make playing work

* remove unneeded code

* remove unneeded code

* fix regressions issues

* refactor add_to_queue

* refactor add_to_queue

* refactor add_to_queue

* simplify

* add tests

* remove bad test

* rename constants

* comments

* comments

* comments

* use snapshot

* refactor to use add_to_queue

* refactor to use add_to_queue

* add comments, redo snapshots

* update comment

* merge formatting

* code review changes

* fix: merge issue

* fix: update snapshot to include new can_search field
2025-05-20 21:48:33 +02:00
Pete Sage
3ff3cb975b Add date sensors to Rehlko (#145314)
* feat: add datetime sensors

* fix: constants

* fix: constants

* fix: move tz conversion to api

* fix: update typing
2025-05-20 21:47:45 +02:00
Lode Smets
8ec5472b79 Added support for shared spaces in Synology DSM (Photo Station) (#144044)
* Added shared space to the list of all the albums

* Added tests

* added more tests

* Apply suggestions from code review

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2025-05-20 21:17:43 +02:00
Michael
b0415588d7 Add support for videos in Immich media source (#145254)
add support for videos
2025-05-20 20:40:22 +02:00
Paulus Schoutsen
abcf925b79 Assist Pipeline stream TTS when supported and long response (#145264)
* Assist Pipeline stream TTS when supported and long response

* Indicate in run-start if streaming supported

* Simplify a little bit

* Trigger streaming based on characters

* 60
2025-05-20 13:00:27 -05:00
Josef Zweck
37e13505cf Handle more exceptions in azure_storage (#145320) 2025-05-20 19:42:10 +02:00
Pete Sage
5d76d92bcf bump aiokem to 0.5.11 (#145332)
fix: bump aiokem
2025-05-20 19:13:40 +02:00
Tsvi Mostovicz
b71870aba3 Jewish calendar: move value calculation to entity description (1/3) (#144272)
* Move make_zmanim() method to entity

* Move enum values to setup

* Create a Jewish Calendar Sensor Description

* Hold a single variable for the runtime data in the entity

* Move value calculation to sensor description

* Use a base class to keep timestamp sensor inheritance

* Move attr to entity description as well

* Move options to entity description as well

* Fix tests after merge

* Put multiline in parentheses

* Fix diagnostics tests
2025-05-20 19:01:24 +02:00
Michael
734d6cd247 bump aioimmich to 0.6.0 (#145334) 2025-05-20 18:52:52 +02:00
Tsvi Mostovicz
40faa156e2 Jewish calendar : icon translations (#145329)
* Move icons to icons.json

* Fix tests
2025-05-20 17:35:24 +02:00
jb101010-2
4737091722 Suez water: fetch historical data in statistics (#131166)
* Suez water: fetch historical data in statistics

* test review

* wip: fix few things

* Python is smarter than me

* use snapshots for statistics and add hard limit for historical stats

* refactor refresh + handle missing price

* No more auth error raised

* fix after rebase

* Review - much cleaner <3

* fix changes

* test without snapshots

* fix imports
2025-05-20 16:22:35 +02:00
Bram Kragten
4160ed190c Add Albanian (Shqip) language (#145324) 2025-05-20 16:20:06 +02:00
Erik Montnemery
8e74f63d47 Create repair issue if not all add-ons or folders were backed up (#144999)
* Create repair issue if not all add-ons or folders were backed up

* Fix spelling

* Fix _collect_errors

* Make time patching by freezegun work with mashumaro

* Addd test to hassio

* Add fixture

* Fix generating list of folders

* Add issue creation tests

* Include name of failing add-on in message

* Improve code formatting

* Rename AddonError to AddonErrorData
2025-05-20 15:23:52 +02:00
Joris Drenth
fc62bc5fc1 Add solar charging options to Wallbox integration (#139286)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-05-20 14:19:48 +01:00
G Johansson
010b4f6b15 Remove deprecated aux heat from Climate Entity component (#145151) 2025-05-20 14:48:33 +02:00
Norbert Rittel
b16d4dd94b Use preferred spelling of "setpoint" in smartthings (#145319)
* Use preferred spelling of "setpoint" in `smartthings`

Change three occurrences of "set point" to "setpoint" to match the preferred spelling in Home Assistant.

* Update test_sensor.ambr

* Update test_sensor.ambr (2)
2025-05-20 14:31:51 +02:00
Sanjay Govind
0813adc327 Update binary sensor translations for bosch_alarm (#145315)
update binary sensor translations
2025-05-20 14:19:51 +02:00
Norbert Rittel
e68cf80531 Make spelling of "setpoint" consistent in opentherm_gw (#145318) 2025-05-20 15:07:57 +03:00
epenet
258c91d483 Mark climate methods and properties as mandatory in pylint plugin (#145280)
* Mark climate methods and properties as mandatory in pylint plugin

* One more
2025-05-20 13:40:17 +02:00
epenet
64d6101fb7 Mark camera methods and properties as mandatory in pylint plugin (#145272) 2025-05-20 12:30:22 +01:00
Franck Nijhof
fb0cb7cad6 Add Wh/km unit for energy distance (#145243) 2025-05-20 12:16:27 +01:00
Brett Adams
a3c0b83dee Bump teslemetry_stream to 0.7.9 in Teslemetry (#145303)
Bump stream to 0.7.9
2025-05-20 12:33:49 +02:00
Sanjay Govind
1ff5dd8ef5 Fix issues with bosch alarm dhcp discovery (#145034)
* fix issues with checking mac address for panels added manually

* add test

* don't allow discovery to pick up a host twice

* make sure we validate tests without a mac address

* check entry is loaded

* Update config_flow.py

* apply changes from review

* assert unique id

* assert unique id
2025-05-20 12:26:41 +02:00
epenet
f3f5fca0b9 Mark turn_on/turn_off/toggle as mandatory in pylint plugin (#145249)
* Mark turn_on/turn_off/toggle as mandatory in pylint plugin

* Fixes
2025-05-20 12:00:10 +02:00
Sanjay Govind
d15a1a6711 Tidy up service call for bosch_alarm (#145306)
tidy up service call for bosch_alarm
2025-05-20 11:56:53 +02:00
epenet
e39c8e350c Add class init type hint to xiaomi_aqara (#145255) 2025-05-20 11:56:17 +02:00
epenet
c1da554eb1 Mark calendar methods and properties as mandatory in pylint plugin (#145271) 2025-05-20 11:50:31 +02:00
epenet
1f1fd8de87 Mark alarm_control_panel methods and properties as mandatory in pylint plugin (#145270) 2025-05-20 11:50:22 +02:00
Norbert Rittel
cf6cb0bd39 Fix typos in user-facing strings of zha (#145305) 2025-05-20 11:49:50 +02:00
epenet
a8264ae8ae Mark button methods and properties as mandatory in pylint plugin (#145269) 2025-05-20 11:48:33 +02:00
epenet
642dc5b49c Use shorthand attributes in rpi_camera camera (#145274)
* Use shorthand attributes in rpi_camera camera

* Improve
2025-05-20 11:47:49 +02:00
epenet
43ae0f2541 Use shorthand attributes in xiaomi_aqara (#145253)
* Use shorthand attributes for is_on/is_locked in xiaomi_aqara

* Use _attr_changed_by

* Use _attr_device_class

* Remove unused class variable

* More
2025-05-20 11:47:26 +02:00
epenet
f2233b3034 Refactor set_temperature in venstar climate (#145297)
Clarify logic in venstar climate set_temperature
2025-05-20 11:46:53 +02:00
Sanjay Govind
c3fe5f012e add date and time service to bosch_alarm (#142243)
* add date and time service

* update quality scale

* add changes from review

* fix issues after merge

* fix icons

* apply changes from review

* remove list from service schema

* update quality scale

* update strings

* Update homeassistant/components/bosch_alarm/services.py

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

* apply changes from review

* apply changes from review

* Update tests/components/bosch_alarm/test_services.py

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

* validate exception messages

* use schema to validate service call

* update docstring

* update error message

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-20 11:09:46 +02:00
epenet
7f9b454922 Improve type hints in xs1 entities (#145299) 2025-05-20 10:44:34 +02:00
epenet
15915680b5 Use shorthand attributes in xs1 climate (#145298)
* Use shorthand attributes in xs1 climate

* Improve
2025-05-20 10:42:41 +02:00
epenet
2e4226d7d3 Use shorthand attributes in venstar climate (#145294) 2025-05-20 10:25:22 +02:00
epenet
0cd93e7e65 Use shorthand attributes in vivotek camera (#145275) 2025-05-20 10:15:04 +02:00
epenet
611d5be40a Use shorthand attributes in touchline climate (#145292) 2025-05-20 10:12:20 +02:00
epenet
072bf75d71 Improve type hints in homematic climate (#145283) 2025-05-20 10:11:23 +02:00
epenet
f9000ae08c Use shorthand attributes in push camera (#145273)
* Use shorthand attributes in push camera

* Improve
2025-05-20 10:10:42 +02:00
epenet
c8183bd35a Use shorthand attributes in intesishome climate (#145285) 2025-05-20 10:10:24 +02:00
epenet
99f91003d8 Use shorthand attributes in melissa climate (#145286) 2025-05-20 10:10:12 +02:00
epenet
ed2024e67a Drop useless unit conversion in smarttub (#145287) 2025-05-20 10:09:47 +02:00
epenet
cd91aca3b5 Use shorthand attributes in tfiac climate (#145289) 2025-05-20 10:09:25 +02:00
Matthew FitzGerald-Chamberlain
77ea654a1f Bump pyaprilaire to 0.9.0 (#145260) 2025-05-20 09:51:29 +02:00
Manu
ef6d3a5236 Bump aiontfy to 0.5.3 (#145263) 2025-05-20 09:49:27 +02:00
epenet
502574e86f Use shorthand attributes in yi camera (#145276) 2025-05-20 09:32:50 +02:00
epenet
fd1ddbd93d Improve type hints in blebox climate (#145282) 2025-05-20 09:31:42 +02:00
epenet
a12bc70543 Use runtime_data in smarttub (#145279) 2025-05-20 09:15:26 +02:00
Petar Petrov
b84e93f462 Sort usb ports in Z-Wave flow so unknown devices are last (#145211)
* Sort usb ports in Z-Wave flow so unknown devices are last

* tweak

* Apply suggestions from code review

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-20 08:25:44 +03:00
epenet
f4b0baecd3 Improve type hints in omnilogic (#145259) 2025-05-20 00:21:44 +02:00
epenet
f700a1faa3 Use shorthand attributes in raspyrfm (#145250) 2025-05-20 00:11:52 +02:00
epenet
eb90f5a581 Improve type hints in xiaomi_aqara light turn_on (#145257) 2025-05-20 00:11:34 +02:00
Jordan Harvey
20ce879471 Add new Probe Plus integration (#143424)
* Add probe_plus integration

* Changes for quality scale

* sentence-casing

* Update homeassistant/components/probe_plus/config_flow.py

Co-authored-by: Erwin Douna <e.douna@gmail.com>

* Update homeassistant/components/probe_plus/config_flow.py

Co-authored-by: Erwin Douna <e.douna@gmail.com>

* Update tests/components/probe_plus/test_config_flow.py

Co-authored-by: Erwin Douna <e.douna@gmail.com>

* Update tests/components/probe_plus/test_config_flow.py

Co-authored-by: Erwin Douna <e.douna@gmail.com>

* remove version from configflow

* remove address var from async_step_bluetooth_confirm

* move timedelta to SCAN_INTERVAL in coordinator

* update tests

* updates from review

* add voltage device class

* remove unused logger

* remove names

* update tests

* Update config flow tests

* Update unit tests

* Reorder successful tests

* Update config entry typing

* Remove icons

* ruff

* Update async_add_entities logic

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

* sensor platform formatting

---------

Co-authored-by: Erwin Douna <e.douna@gmail.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-19 22:50:09 +02:00
epenet
df3688ef08 Mark entity methods and properties as mandatory in pylint plugin (#145210)
* Mark entity methods and properties as mandatory in pylint plugin

* Fixes
2025-05-19 22:47:24 +02:00
Michael
e76bd1bbb9 Add media_source platform to Immich integration (#145159)
* add media_source platform

* fix error messages

* use mime-type from asset info, instead of guessing it

* add dependency for http

* add tests

* use direct imports and set can_play=False for images

* fix tests
2025-05-19 22:39:04 +02:00
Nick Kuiper
d580f8a8a2 Updated code owners for the blue current integration. (#144962)
Changed code owners for the blue current integration.
2025-05-19 22:21:06 +02:00
Brett Adams
ffb485aa87 Fix streaming window cover entity in Teslemetry (#145012) 2025-05-19 22:13:15 +02:00
Paulus Schoutsen
741cb23776 Only pass serializable data to media player intent (#145244) 2025-05-19 15:03:21 -05:00
Tsvi Mostovicz
6afb60d31b Jewish Calendar - quality scale - use specific config flow (#144408) 2025-05-19 21:52:06 +02:00
disforw
761bb65ac6 Fix QNAP fail to load (#144675)
* Update coordinator.py

* Update coordinator.py

@peternash

* Update coordinator.py

* Update coordinator.py

* Update coordinator.py

* Update coordinator.py
2025-05-19 21:47:01 +02:00
Tsvi Mostovicz
7464e3944e Jewish calendar: set parallel updates to 0 (#144986)
* Set all Jewish calendar parallel updates to 0

* Update homeassistant/components/jewish_calendar/service.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-19 21:44:28 +02:00
Tsvi Mostovicz
e2f2c13e5e Jewish calendar - quality scale - fix missing translations (#144410) 2025-05-19 21:44:13 +02:00
Åke Strandberg
0ee0b2fcba Add missing Miele tumble dryer program codes (#145236) 2025-05-19 21:34:36 +02:00
G Johansson
1e9c585e8b Bump holidays to 0.73 (#145238) 2025-05-19 21:12:51 +02:00
Paulus Schoutsen
e78f4d2a29 TTS to only use stream entity method when streaming request comes in (#145167)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-05-19 20:54:21 +02:00
Tsvi Mostovicz
1f6faaacab Jewish Calendar: Implement diagnostics (#145180)
* Implement diagnostics

* Add testing

* Remove implicitly tested code
2025-05-19 20:41:00 +02:00
karwosts
7e895f7d10 Fix history_stats with sliding window that ends before now (#145117) 2025-05-19 20:03:59 +02:00
Norbert Rittel
5031ffe767 Fix wording of "Estimated power production" sensors in forecast_solar (#145201) 2025-05-19 20:02:37 +02:00
Paulus Schoutsen
37fe25cfdc Add support_streaming to ConversationEntity (#144998)
* Add support_streaming to ConversationEntity

* pipeline tests
2025-05-19 13:43:06 -04:00
epenet
cff7aa229e Add missing type hint in plex (#145217) 2025-05-19 19:18:22 +02:00
Paulus Schoutsen
e09dde2ea9 Allow TTS streams to generate temporary media source IDs (#145080)
* Allow TTS streams to generate temporary media source IDs

* Update tests/components/tts/test_media_source.py

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update assist snapshots

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-19 12:04:19 -04:00
epenet
cadbe885d1 Add missing type hint in homematic (#145214) 2025-05-19 17:52:35 +02:00
epenet
366f592a8a Fix invalid type hints in netgear switch (#145226)
* Fix invalid type hints in netgear switch

* Adjust
2025-05-19 17:52:23 +02:00
epenet
e491629143 Split update method in pioneer media player (#145212)
Split method in pioneer media player
2025-05-19 17:40:12 +02:00
Simone Chemelli
f44cb9b03e Add action exceptions to Comelit integration (#143581)
* Add action exceptions to Comelit integration

* missing decorator

* update quality scale
2025-05-19 17:30:34 +02:00
Petro31
752c73a2ed Add trigger_variables to template trigger 'for' field (#136672)
* Add trigger_variables to template trigger for

* address comments
2025-05-19 17:26:42 +02:00
Simone Chemelli
a8ecdb3bff Finish reconfigure test for Vodafone Station (#145230) 2025-05-19 16:34:41 +02:00
Simone Chemelli
9c798cbb5d Add device reconfigure to Comelit config flow (#142866)
* Add device reconfigure to Comelit config flow

* tweak

* tweak

* update quality scale

* apply review comment

* apply review comment

* review comment

* complete test
2025-05-19 16:12:27 +02:00
Erik Montnemery
8938c109c2 Improve entity registry restore test (#145220) 2025-05-19 16:09:23 +02:00
Martin Hjelmare
85448ea903 Fix Z-Wave config entry unique id after NVM restore (#145221)
* Fix Z-Wave config entry unique id after NVM restore

* Remove stale comment
2025-05-19 17:05:48 +03:00
epenet
e3d2f917e2 Use shorthand attributes in yandex transport sensor (#145225) 2025-05-19 15:58:34 +02:00
epenet
05795d0ad8 Use _attr_native_value in repetier (#145219) 2025-05-19 15:56:27 +02:00
epenet
a38e033e13 Improve type hints in rtorrent (#145222) 2025-05-19 15:53:41 +02:00
epenet
8df447091d Add missing type hint in vlc (#145223) 2025-05-19 15:52:40 +02:00
Simone Chemelli
760f2d1959 Remove pylance warnings for Comelit tests (#145199) 2025-05-19 15:27:41 +02:00
Simone Chemelli
e64f76bebe Add full test coverage for Comelit cover (#144761) 2025-05-19 15:01:41 +02:00
epenet
7c5090d627 Add missing type hint in zestimate (#145218) 2025-05-19 14:55:48 +02:00
Robert Resch
f6a0d630c3 Fix typo in Ecovacs get_supported_entities (#145215) 2025-05-19 14:45:30 +02:00
markhannon
880f5faeec Add cover entity to Zimi integration (#144330) 2025-05-19 14:24:25 +02:00
Retha Runolfsson
0cf503d871 Add exception translation for switchbot device initialization (#144828) 2025-05-19 14:22:10 +02:00
epenet
9d050360c8 Prevent import from syrupy.SnapshotAssertion (#145208) 2025-05-19 14:18:35 +02:00
Simone Chemelli
0c0c61f9e0 Bump aiocomelit to 0.12.3 (#145209) 2025-05-19 14:16:12 +02:00
Erik Montnemery
e868b3e8ff Sort and simplify DeletedRegistryEntry (#145207) 2025-05-19 14:13:57 +02:00
Simone Chemelli
555215a848 Update quality_scale rules status for Comelit (#143592) 2025-05-19 14:05:08 +02:00
Simone Chemelli
484a547758 Fix pylance warning on SnapshotAssertion import (#145206) 2025-05-19 13:55:48 +02:00
wuede
7d25f68fa5 update pyatmo to version 9.2.0 (#145203) 2025-05-19 13:21:19 +02:00
Maikel Punie
8b22ab93c1 Bump velbusaio to 2025.5.0 (#145198) 2025-05-19 13:20:02 +02:00
epenet
78e3a2d0c6 Mark all _CLASS_MATCH as mandatory in pylint plugin (#145200) 2025-05-19 12:12:17 +01:00
Robert Resch
241c89e885 Bump go2rtc-client to 0.1.3b0 (#145192) 2025-05-19 12:11:07 +01:00
Marc Mueller
7d96a2a620 [ci] Skip step if coverage is skipped (#145202) 2025-05-19 12:46:38 +02:00
Martin Hjelmare
08104eec56 Fix Z-Wave unique id update during controller migration (#145185) 2025-05-19 13:43:06 +03:00
Michael
0fc81d6b33 Add diagnostics platform to Immich integration (#145162)
* add diagnostics platform

* also redact host
2025-05-19 12:23:04 +02:00
Joost Lekkerkerker
cb84e55c34 Map auto to heat_cool for thermostat in SmartThings (#145098) 2025-05-19 12:09:27 +02:00
Joost Lekkerkerker
68c3d5a159 Add lamp capability for hood component in SmartThings (#145036) 2025-05-19 12:07:50 +02:00
epenet
77bab39ed0 Move downloader service to separate module (#145183) 2025-05-19 12:05:33 +02:00
Maciej Bieniek
92e570ffc1 Revert "Link Shelly device entry with Shelly BT scanner entry (#144626)" (#145177)
This reverts commit b15c9ad130.
2025-05-19 13:01:54 +03:00
Paulus Schoutsen
919684e20a Minor cleanup for pipeline tts stream test (#145146) 2025-05-19 11:58:58 +02:00
G Johansson
a1d6df6ce9 Remove deprecated aux heat from ephember (#145152) 2025-05-19 11:58:35 +02:00
epenet
07c3c3bba8 Mark type hint as compulsory for entity.assumed_state property (#145187) 2025-05-19 11:56:05 +02:00
epenet
f11e040662 Mark all _FUNCTION_MATCH as mandatory in pylint plugin (#145194) 2025-05-19 11:55:15 +02:00
epenet
8d83341308 Mark type hint as compulsory for entity.available property (#145189) 2025-05-19 11:50:41 +02:00
Erik Montnemery
f27b2c4df1 Improve device registry restore tests (#145186) 2025-05-19 11:06:16 +02:00
Matrix
717b84bab9 Add battery entity for LockV2 in yolink (#145169)
Add battery entity for LockV2
2025-05-19 11:01:30 +02:00
epenet
a34bce6202 Fix runtime_data in iqvia (#145181) 2025-05-19 10:59:46 +02:00
epenet
bd190b9b4c Use runtime_data in icloud (#145179) 2025-05-19 10:59:06 +02:00
epenet
da6c6c5201 Use runtime_data in ialarm (#145178) 2025-05-19 10:58:34 +02:00
epenet
f50afae1c3 Use runtime_data in hvv_departures (#144951) 2025-05-19 10:58:01 +02:00
epenet
177afea5ad Use runtime_data in huisbaasje (#144953) 2025-05-19 10:57:22 +02:00
Joost Lekkerkerker
a3aae68229 Add athmospheric pressure capability to SmartThings (#145103) 2025-05-19 10:41:22 +02:00
Robert Resch
9ff9d9230e Fix test results parsing error (#145077) 2025-05-19 10:40:03 +02:00
epenet
2bb0843c30 Add ability to mark type hints as compulsory on specific functions (#139730) 2025-05-19 10:27:07 +02:00
Joakim Sørensen
5f2425f421 Bump hass-nabucasa from 0.100.0 to 0.101.0 (#145172) 2025-05-19 10:24:08 +02:00
J. Nick Koston
e46ca41697 Bump aioesphomeapi to 31.1.0 (#145170) 2025-05-19 10:22:47 +02:00
dependabot[bot]
fa5a7aea7e Bump github/codeql-action from 3.28.17 to 3.28.18 (#145173)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-19 10:14:37 +02:00
Tsvi Mostovicz
030681a443 Jewish calendar: use const in action code (#145007)
* Use const defines in code

* Added exception raises

* Revert "Added exception raises"

This reverts commit e8849e586c.
2025-05-19 10:14:22 +02:00
epenet
aa3cbf2473 Cleanup unused string in samsungtv (#145174) 2025-05-19 09:10:01 +02:00
Erik Montnemery
ce71f6444c Sort and simplify DeletedDeviceEntry (#145171)
* Sort and simplify DeletedDeviceEntry

* Fix sort

* Fix sort
2025-05-19 08:40:22 +02:00
J. Nick Koston
eb4d561b96 Bump grpcio to 1.72.0 and protobuf to 6.30.2 (#143633) 2025-05-18 20:10:38 -04:00
peteS-UK
075a41c69a Fix album and artist returning "None" rather than None for Squeezebox media player. (#144971)
* fix

* snapshot update

* cast type
2025-05-18 23:37:06 +02:00
G Johansson
2ba2248f67 Remove deprecated aux heat from econet (#145149) 2025-05-18 23:03:13 +02:00
starkillerOG
ff5ed82de8 Add Kaiser Nienhaus virtual motionblinds integration (#145096)
* Add Kaiser Nienhaus virtual motionblinds integration

* fix typo
2025-05-18 23:01:02 +02:00
wuede
541b969d3b Netatmo: do not fail on schedule updates (#142933)
* do not fail on schedule updates

* add test to check that the store data remains unchanged
2025-05-18 23:00:36 +02:00
javicalle
3d83c6299b Enable RFDEBUG on RFLink "Enable debug logging" (#138571)
* Enable RFDEBUG on "Enable debug logging"

* fix checks

* fix checks

* one more lap

* fix test

* wait to init rflink 

In my dev env this is not needed

* use hass.async_create_task(handle_logging_changed())

instead async_at_started(hass, handle_logging_changed)

* revert unneeded async_block_till_done

* Remove the startup management

There's a race condition at startup that can't be managed nicely
2025-05-18 22:51:42 +02:00
generically-named
3ecde49dca Add energy/water forecast for Miele integration (#144822)
* Add energy/water forecast & fix drying_step error

Adding the energy forecast and water forecast entities that are present in the HACS version of this integration but absent in the HA Core implantation. 

Also fixed the state_drying_step sensor which wasn't handling casting of the API value to an int correctly due to the API sometimes giving a None value.

* Fix formatting issues from previous commit

* Fix missing translation_key line 202

* Remove icon entries

* Update icons.json

* Update strings.json

* Update strings.json (correcting mixed up energy/water forecast names)

* Update homeassistant/components/miele/strings.json

Co-authored-by: Åke Strandberg <ake@strandberg.eu>

* Update homeassistant/components/miele/strings.json

Co-authored-by: Åke Strandberg <ake@strandberg.eu>

* Fix tests

---------

Co-authored-by: Åke Strandberg <ake@strandberg.eu>
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-18 22:33:27 +02:00
Nils Müller
c1fcd8ea7f Fix Nanoleaf light state propagation after change from home asisstant (#144291)
* Fix Nanoleaf light state propagation after change from home asisstant

* Add tests to check if nanoleaf light is triggering async_write_ha_state

* Fix pylint for test case

* Fix use coordinator.async_refresh instead of async_write_ha_state

* Fix tests

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-18 22:26:02 +02:00
G Johansson
78ac8ba841 Remove deprecated aux heat from Nexia (#145147) 2025-05-18 16:14:22 -04:00
Keilin Bickar
d9cfab4c8e Bump sense-energy to 0.13.8 (#145156) 2025-05-18 21:45:11 +02:00
Oliver
4c10502b0e Update denonavr to 1.1.1 (#145155) 2025-05-18 21:44:53 +02:00
Michael
a576f7baf3 Add Immich integration (#145125)
* add immich integration

* bump aioimmich==0.3.1

* rework to require an url as input and pare it afterwards

* fix doc strings

* remove name attribute from deviceinfo as it is default behaviour

* add translated uom for count sensors

* explicitly pass in the config_entry in coordinator

* fix url in strings to uppercase

* use data_updates attribute instead of data

* remove left over

* match entries only by host

* remove quotes

* import SOURCE_USER directly, instead of config_entries

* split happy and sad flow tests

* remove unneccessary async_block_till_done() calls

* replace url example by "full URL"

* bump aioimmich==0.4.0

* bump aioimmich==0.5.0

* allow multiple users for same immich instance

* Fix tests

* limit entities when user has no admin rights

* Fix tests

* Fix tests

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-18 21:28:15 +02:00
G Johansson
520c964656 Remove deprecated aux heat from elkm1 (#145148) 2025-05-18 20:50:33 +02:00
Matrix
3f59b1c376 Add YoLink new device types support 5009 & 5029 (#144323)
* Leak Stop

* Fix as suggested.
2025-05-18 19:59:19 +02:00
Markus Adrario
3ff095cc51 Add Homee alarm-control-panel platform (#140041)
* Add alarm control panel

* Add alarm control panel tests

* add disarm function

* reuse state setting code

* change sleeping to night

* review change 1

* fix review comments

* fix review comments
2025-05-18 17:25:09 +02:00
Marc Hörsken
aa4c41abe8 Postpone update in WMSPro after service call (#144836)
* Reduce stress on WMS WebControl pro with higher scan interval

Avoid delays and connection issues due to overloaded hub.
Fixes #133832 and #134413

* Schedule an entity state update after performing an action

Avoid delaying immediate status updates, e.g. on/off changes.

* Replace scheduled state updates with delayed action completion

Suggested-by: joostlek
2025-05-18 17:23:21 +02:00
Sid
906b3901fb Add select platform to eheimdigital (#145031)
* Add select platform to eheimdigital

* Review

* Review

* Fix tests
2025-05-18 16:52:27 +02:00
Andre Lengwenus
2aba4f261f Add has_entity_name attribute to LCN entities (#145045)
* Add _attr_has_entity_name

* Fix tests
2025-05-18 16:48:44 +02:00
elmurato
3eb0c8ddff Add Pterodactyl binary sensor tests (#142401)
* Add binary sensor tests

* Wait for background tasks as well in test_binary_sensor_update_failure

* Fix module docstring

* Use snapshot_platform, move constants to const.py, do not use snapshot for testing state updates

* Use JSON fixtures

* Use helper for loading JSON fixtures, remove unneeded mock in setup_integration

* Move mocks to pytest markers where possible
2025-05-18 16:46:11 +02:00
Andrea Turri
705a987547 Fix enum values for program phases by appliance type on Miele appliances (#144916) 2025-05-18 11:00:21 +02:00
J. Nick Koston
888f17c504 Bump google-maps-routing to 0.6.15 (#145130) 2025-05-18 09:11:13 +02:00
markhannon
2f4d0ede0f Bump zcc-helper to 3.5.2 (#144926) 2025-05-18 07:13:23 +02:00
Paulus Schoutsen
6fd9857666 OpenAI Conversation split out chat log processing (#145129) 2025-05-17 22:00:24 -07:00
XiaoXianNv-boot
f07265ece4 Set the default upgrade icon for the MQTT device to the default icon for Home Assistant instead of the icon for the MQTT integration (#144295)
* Set the default upgrade icon for the MQTT device to the default icon for Home Assistant instead of the icon for the MQTT integration

* Set the default upgrade icon for the MQTT device to the default icon for Home Assistant instead of the icon for the MQTT integration

* Set the default upgrade icon for the MQTT device to the default icon for Home Assistant instead of the icon for the MQTT integration

* Set the default upgrade icon for the MQTT device to the default icon for Home Assistant instead of the icon for the MQTT integration

* Fix failed tests

* Fix failed tests

* Cleanup unused helper option

* ruff

---------

Co-authored-by: jbouwh <jan@jbsoft.nl>
2025-05-18 01:30:04 +02:00
J. Nick Koston
a169d6ca97 Bump cryptography to 45.0.1 and pyopenssl to 25.1.0 (#145121) 2025-05-17 23:57:28 +02:00
Joost Lekkerkerker
ebed38c1dc Add Steam closet sanitize to SmartThings (#145110) 2025-05-17 21:03:24 +02:00
Joost Lekkerkerker
5619042fe7 Add Steam closet auto cycle link to SmartThings (#145111) 2025-05-17 20:39:17 +02:00
Joost Lekkerkerker
67b3428b07 Add Steam closet keep fresh mode to SmartThings (#145107) 2025-05-17 20:19:31 +02:00
Jan-Philipp Benecke
2302a3bb33 Add missing device condition translations to lock component (#145104) 2025-05-17 20:18:14 +02:00
Åke Strandberg
a83eafd949 Fix mapping from program_phase to vacuum_activity for Miele integration (#145115) 2025-05-17 20:17:15 +02:00
Paulus Schoutsen
2956f4fea1 Ensure that OpenAI tool call deltas have a role (#145085) 2025-05-17 09:36:14 -07:00
Robert Resch
180e1f462c Fix proberly Ecovacs mower area sensors (#145078) 2025-05-17 16:44:53 +02:00
cdnninja
2dc63eb8c5 Refactor fan in vesync (#135744)
* Refactor Fan

* Add tower fan tests and mode

* Schedule update after turn off

* Adjust updates to refresh library

* correct off command

* Revert changes

* Merge corrections

* Remove unused code to increase test coverage

* Ruff

* Tests

* Test for preset mode

* Adjust to increase coverage

* Test Corrections

* tests to match other PR

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-17 15:57:55 +02:00
Manu
4c40ec4948 Bump aiontfy to 0.5.2 (#145044) 2025-05-17 13:06:02 +02:00
starkillerOG
56b3dc02a7 Bump motionblinds to 0.6.27 (#145094) 2025-05-17 12:45:18 +02:00
Franck Nijhof
f66feabaaf 2025.5.2 (#145072)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
Co-authored-by: Allen Porter <allen.porter@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: TimL <tl@smlight.tech>
Co-authored-by: Seweryn Zeman <seweryn.zeman@jazzy.pro>
Co-authored-by: hahn-th <15319212+hahn-th@users.noreply.github.com>
Co-authored-by: Luke Lashley <conway220@gmail.com>
Co-authored-by: starkillerOG <starkiller.og@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Arie Catsman <120491684+catsmanac@users.noreply.github.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>
Co-authored-by: Ruben van Dijk <15885455+RubenNL@users.noreply.github.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
Co-authored-by: Thomas55555 <59625598+Thomas55555@users.noreply.github.com>
Co-authored-by: Øyvind Matheson Wergeland <oyvind@wergeland.org>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
Co-authored-by: Brett Adams <Bre77@users.noreply.github.com>
Co-authored-by: rjblake <richard.blake@gmail.com>
Co-authored-by: Daniel Hjelseth Høyer <github@dahoiv.net>
Co-authored-by: Matthias Alphart <farmio@alphart.net>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Odd Stråbø <oddstr13@openshell.no>
Co-authored-by: puddly <32534428+puddly@users.noreply.github.com>
Co-authored-by: Bram Kragten <mail@bramkragten.nl>
fix privacy mode availability for NVR IPC cams (#144569)
fix enphase_envoy diagnostics home endpoint name (#144634)
Close Octoprint aiohttp session on unload (#144670)
Fix strings typo for Comelit (#144672)
Fix wrong state in Husqvarna Automower (#144684)
Fix Netgear handeling of missing MAC in device registry (#144722)
Fix blocking call in azure storage (#144803)
Fix Z-Wave unique id after controller reset (#144813)
Fix blocking call in azure_storage config flow (#144818)
Fix wall connector states in Teslemetry (#144855)
Fix Reolink setup when ONVIF push is unsupported (#144869)
Fix some Home Connect translation strings (#144905)
Fix unknown Pure AQI in Sensibo (#144924)
Fix Home Assistant Yellow config entry data (#144948)
Fix ESPHome entities unavailable if deep sleep enabled after entry setup (#144970)
fix from ZHA event `unique_id` (#145006)
Fix climate idle state for Comelit (#145059)
Fix fan AC mode in SmartThings AC (#145064)
Fix Ecovacs mower area sensors (#145071)
2025-05-16 23:08:52 +02:00
Franck Nijhof
0ef098a9f3 Pin rpds-py to 0.24.0 (#145074) 2025-05-16 20:40:02 +00:00
Franck Nijhof
db5bcd9fc4 Pin rpds-py to 0.24.0 (#145074) 2025-05-16 22:39:05 +02:00
jb101010-2
c845f4e9b2 Bump pysuezV2 to 2.0.5 (#145047) 2025-05-16 22:33:14 +02:00
Joost Lekkerkerker
5aff3499a0 Add number entities for freezer setpoint in SmartThings (#145069) 2025-05-16 22:29:00 +02:00
Andre Lengwenus
a501451038 Remove address parameter from services.yaml (#145052) 2025-05-16 22:27:09 +02:00
Paulus Schoutsen
0deed82bea OpenAI prompt is optional (#145065) 2025-05-16 22:22:46 +02:00
starkillerOG
f9231de824 Add additional explanation for Reolink password requirements (#145000) 2025-05-16 22:12:59 +02:00
Joost Lekkerkerker
757c66613d Deprecate SmartThings water heater sensors (#145060) 2025-05-16 21:59:12 +02:00
epenet
9d2302f2f5 Use runtime_data in homeworks (#144944) 2025-05-16 21:57:36 +02:00
epenet
0bbbd2cd54 Use runtime_data in hydrawise (#144950) 2025-05-16 21:45:11 +02:00
Franck Nijhof
02b028add3 Bump version to 2025.5.2 2025-05-16 19:31:36 +00:00
Robert Resch
34455f9743 Fix Ecovacs mower area sensors (#145071) 2025-05-16 19:31:15 +00:00
Joost Lekkerkerker
8c4eec231f Don't create entities for Smartthings smarttags (#145066) 2025-05-16 19:31:14 +00:00
Joost Lekkerkerker
621a14d7cc Fix fan AC mode in SmartThings AC (#145064) 2025-05-16 19:31:12 +00:00
Joost Lekkerkerker
4906e78a5c Only set suggested area for new SmartThings devices (#145063) 2025-05-16 19:31:11 +00:00
Bram Kragten
146e440d59 Update frontend to 20250516.0 (#145062) 2025-05-16 19:31:10 +00:00
Joost Lekkerkerker
e2ede3ed19 Map SmartThings auto mode correctly (#145061) 2025-05-16 19:31:09 +00:00
Simone Chemelli
b76ac68fb1 Fix climate idle state for Comelit (#145059) 2025-05-16 19:31:07 +00:00
Joost Lekkerkerker
0691ad9362 Set SmartThings oven setpoint to unknown if its 1 Fahrenheit (#145038) 2025-05-16 19:31:06 +00:00
Joost Lekkerkerker
715f116954 Bump pySmartThings to 3.2.2 (#145033) 2025-05-16 19:31:05 +00:00
puddly
9f0db98745 Strip _CLIENT suffix from ZHA event unique_id (#145006) 2025-05-16 19:31:03 +00:00
Odd Stråbø
0ba55c31e8 Fix ESPHome entities unavailable if deep sleep enabled after entry setup (#144970) 2025-05-16 19:31:02 +00:00
Robert Resch
19b7cfbd4a Bump deebot-client to 13.2.0 (#144957) 2025-05-16 19:31:01 +00:00
Erik Montnemery
a9520888cf Fix Home Assistant Yellow config entry data (#144948) 2025-05-16 19:31:00 +00:00
Matthias Alphart
f086f4a955 Ignore Fronius Gen24 firmware 1.35.4-1 SSL verification issue for new setups (#144940) 2025-05-16 19:30:59 +00:00
G Johansson
a657964c25 Fix unknown Pure AQI in Sensibo (#144924)
* Fix unknown Pure AQI in Sensibo

* Fix mypy
2025-05-16 19:30:57 +00:00
Daniel Hjelseth Høyer
543104b36c Update mill library 0.12.5 (#144911)
* Update mill library 0.12.5

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

* Update mill library 0.12.5

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

---------

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-05-16 19:30:56 +00:00
Daniel Hjelseth Høyer
bf1d2069e4 Update Tibber lib 0.31.2 (#144908)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-05-16 19:30:55 +00:00
rjblake
e5e1c9fb05 Fix some Home Connect translation strings (#144905)
* Update strings.json

Corrected program names:
changed "Pre_rinse" to "Pre-Rinse"
changed "Kurz 60°C" to "Speed 60°C"

Both match the Home Connect app; although the UK documentation refers to "Speed 60°C" as "Quick 60°C"

* Adjust casing

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-16 19:30:53 +00:00
starkillerOG
4c4be88323 Fix Reolink setup when ONVIF push is unsupported (#144869)
* Fix setup when ONVIF push is not supported

* fix styling
2025-05-16 19:30:52 +00:00
Brett Adams
5a83627dc5 Fix wall connector states in Teslemetry (#144855)
* Fix wall connector

* Update snapshot
2025-05-16 19:30:51 +00:00
Allen Porter
3123a7b168 Bump ical to 9.2.4 (#144852) 2025-05-16 19:30:50 +00:00
Luke Lashley
8161ce6ea8 Bump python-snoo to 0.6.6 (#144849) 2025-05-16 19:30:49 +00:00
Josef Zweck
d9cbd1b65f Bump pylamarzocco to 2.0.3 (#144825) 2025-05-16 19:30:47 +00:00
Josef Zweck
b7c07209b8 Fix blocking call in azure_storage config flow (#144818)
* Fix blocking call in azure_storage config flow

* Fix blocking call in azure_storage config_flow as well

* move session getting to event flow
2025-05-16 19:30:46 +00:00
Martin Hjelmare
6c3a4f17f0 Fix Z-Wave unique id after controller reset (#144813) 2025-05-16 19:30:45 +00:00
Josef Zweck
d82feb807f Fix blocking call in azure storage (#144803) 2025-05-16 19:30:43 +00:00
Jan Bouwhuis
c373fa9296 Do not show an empty component name on MQTT device subentries not as None if it is not set (#144792) 2025-05-16 19:30:42 +00:00
starkillerOG
139b48440f Cleanup wrongly combined Reolink devices (#144771) 2025-05-16 19:30:41 +00:00
Joost Lekkerkerker
9de1d3b143 Fill in Plaato URL via placeholders (#144754) 2025-05-16 19:29:35 +00:00
Martin Hjelmare
b69ebdaecb Repair Z-Wave unknown controller (#144738)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-05-16 19:23:25 +00:00
starkillerOG
f25e50b017 Fix Netgear handeling of missing MAC in device registry (#144722) 2025-05-16 19:23:24 +00:00
Simone Chemelli
a4a7601f9f Bump aiocomelit to 0.12.1 (#144720) 2025-05-16 19:23:22 +00:00
Øyvind Matheson Wergeland
41a503f76f Bump gcal-sync to 7.0.1 (#144718)
Co-authored-by: Allen Porter <allen.porter@gmail.com>
2025-05-16 19:23:21 +00:00
Allen Porter
f1a3d62db2 Bump ical to 9.2.2 (#144713) 2025-05-16 19:23:20 +00:00
Allen Porter
e465276464 Bump voluptuous-openapi to 0.1.0 (#144703) 2025-05-16 19:23:18 +00:00
Robert Resch
dbc15a2dda Fix Ecovacs mower area sensors (#145071) 2025-05-16 21:22:43 +02:00
Thomas55555
47b45444eb Fix wrong state in Husqvarna Automower (#144684) 2025-05-16 19:22:02 +00:00
Simone Chemelli
cf0911cc56 Avoid closing shared session for Comelit (#144682) 2025-05-16 19:22:00 +00:00
Simone Chemelli
da79d5b2e3 Fix strings typo for Comelit (#144672) 2025-05-16 19:21:59 +00:00
G Johansson
358b0c1c17 Bump holidays to 0.72 (#144671) 2025-05-16 19:21:58 +00:00
Ruben van Dijk
543348fe58 Close Octoprint aiohttp session on unload (#144670) 2025-05-16 19:21:57 +00:00
Simon Lamon
0635856761 Bump python-linkplay to v0.2.5 (#144666)
Bump linkplay to 0.2.5
2025-05-16 19:21:55 +00:00
Allen Porter
081afe6034 Bump ical to 9.2.1 (#144642) 2025-05-16 19:21:54 +00:00
Arie Catsman
ca14322227 bump pyenphase to 1.26.1 (#144641) 2025-05-16 19:21:53 +00:00
Josef Zweck
a54816a6e5 Bump pylamarzocco to 2.0.2 (#144635)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-05-16 19:21:51 +00:00
Arie Catsman
27db4e90b5 fix enphase_envoy diagnostics home endpoint name (#144634) 2025-05-16 19:21:50 +00:00
J. Nick Koston
e9cc624d93 Mark inkbird coordinator as not needing connectable (#144584) 2025-05-16 19:19:59 +00:00
starkillerOG
5a95f43992 Bump reolink_aio to 0.13.3 (#144583) 2025-05-16 19:19:58 +00:00
J. Nick Koston
36a35132c0 Bump aiodiscover to 2.7.0 (#144571) 2025-05-16 19:19:57 +00:00
starkillerOG
2fbc75f89b Reolink fix privacy mode availability for NVR IPC cams (#144569)
* Correct "available" for IPC cams

* Check privacy mode when updating
2025-05-16 19:19:56 +00:00
Luke Lashley
48aa6be889 Don't scale Roborock mop Path (#144421)
don't scale mop path
2025-05-16 19:19:55 +00:00
hahn-th
bde04bc47b Doorbell Event is fired just once in homematicip_cloud (#144357)
* fire event if event type if correct

* Fix requested changes
2025-05-16 19:19:53 +00:00
Seweryn Zeman
7d163aa659 Removed unused file_id param from open_ai_conversation request (#143878) 2025-05-16 19:19:52 +00:00
TimL
010b044379 Allow dns hostnames to be retained for SMLIGHT user flow. (#142514)
* Dont overwrite host with local IP

* adjust test for user flow change
2025-05-16 19:19:50 +00:00
Joost Lekkerkerker
7fefd58b84 Don't create entities for Smartthings smarttags (#145066) 2025-05-16 21:17:07 +02:00
Joost Lekkerkerker
87b60967a6 Map SmartThings auto mode correctly (#145061) 2025-05-16 20:14:41 +02:00
Joost Lekkerkerker
e80069545f Only set suggested area for new SmartThings devices (#145063) 2025-05-16 19:53:46 +02:00
Joost Lekkerkerker
be5685695e Fix fan AC mode in SmartThings AC (#145064) 2025-05-16 19:38:18 +02:00
Bram Kragten
6b769ac263 Update frontend to 20250516.0 (#145062) 2025-05-16 19:37:22 +02:00
Simone Chemelli
9114816384 Fix climate idle state for Comelit (#145059) 2025-05-16 18:51:30 +02:00
Ludovic BOUÉ
db3e596e48 Update Matter MicrowaveOven fixture (#145057)
Update microwave_oven.json

PowerInWatts feature
2025-05-16 18:19:36 +02:00
Joost Lekkerkerker
bdc21da076 Sync SmartThings EHS fixture (#145042) 2025-05-16 15:08:24 +02:00
epenet
a500eeb831 Use runtime_data in hue (#144946)
* Use runtime_data in hue

* More

* Tests
2025-05-16 08:35:46 -04:00
Joost Lekkerkerker
119d0c576a Add hood fan speed capability to SmartThings (#144919) 2025-05-16 13:39:03 +02:00
Bouwe Westerdijk
38cee53999 Small code optimization for Plugwise (#145037) 2025-05-16 13:28:31 +02:00
Joost Lekkerkerker
2ca9d4689e Set SmartThings oven setpoint to unknown if its 1 Fahrenheit (#145038) 2025-05-16 13:17:56 +02:00
Joost Lekkerkerker
8a32ffc7b9 Bump pySmartThings to 3.2.2 (#145033) 2025-05-16 13:10:58 +02:00
Matthias Alphart
6475b1a446 Ignore Fronius Gen24 firmware 1.35.4-1 SSL verification issue for new setups (#144940) 2025-05-16 12:58:59 +02:00
starkillerOG
07db244f91 Cleanup wrongly combined Reolink devices (#144771) 2025-05-16 12:58:28 +02:00
Joost Lekkerkerker
ff4aed1f6e Fix errors in strings in SmartThings (#145030) 2025-05-16 12:22:17 +02:00
Joost Lekkerkerker
3208815e10 Fix non-DHW heat pump in SmartThings (#145008) 2025-05-16 12:08:32 +02:00
epenet
b4a1bdcb83 Move huisbaasje coordinator to separate module (#144955) 2025-05-16 12:07:19 +02:00
epenet
97869636f8 Use typed config entry in Habitica coordinator (#144956) 2025-05-16 11:59:11 +02:00
epenet
cbb092f792 Move icloud services to separate module (#144980) 2025-05-16 11:56:07 +02:00
Sanjay Govind
0c5ee37721 Update bosch_alarm door switch strings so they are more user friendly (#144607)
* Update door switch strings so they are more user friendly

* Update door switch strings so they are more user friendly

* Update door switch strings so they are more user friendly

* update strings

* update strings
2025-05-16 11:43:31 +02:00
epenet
e74aeeab1a Use runtime_data in iaqualink (#144988) 2025-05-16 11:41:16 +02:00
Sanjay Govind
b8df9c7e97 Set parallel_updates for bosch_alarm (#145028) 2025-05-16 11:26:22 +02:00
epenet
82a9e67b7e Use generic in iaqualink entity (#144989) 2025-05-16 10:53:24 +02:00
Joost Lekkerkerker
7410b8778a Deprecate DHW switch for SmartThings (#145011) 2025-05-16 10:47:23 +02:00
epenet
3e92f23680 Cleanup huisbaasje tests (#144954) 2025-05-16 10:38:17 +02:00
rjblake
3942e6a841 Fix some Home Connect translation strings (#144905)
* Update strings.json

Corrected program names:
changed "Pre_rinse" to "Pre-Rinse"
changed "Kurz 60°C" to "Speed 60°C"

Both match the Home Connect app; although the UK documentation refers to "Speed 60°C" as "Quick 60°C"

* Adjust casing

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-16 10:37:11 +02:00
Joost Lekkerkerker
e76b483067 Add lamp capability to SmartThings (#144918) 2025-05-16 10:36:58 +02:00
Retha Runolfsson
3de740ed1e Bump PySwitchbot to 0.62.2 (#145018) 2025-05-16 10:30:30 +02:00
Bouwe Westerdijk
bbe975baef Bump plugwise to v1.7.4 (#145021) 2025-05-16 10:28:57 +02:00
Sid
6dff975711 Initialize select _attr_current_option with None (#145026) 2025-05-16 10:27:59 +02:00
Jan Bouwhuis
71108d9ca0 Do not show an empty component name on MQTT device subentries not as None if it is not set (#144792) 2025-05-16 10:26:00 +02:00
puddly
053e5417a7 Strip _CLIENT suffix from ZHA event unique_id (#145006) 2025-05-16 10:25:24 +02:00
Sanjay Govind
9bbc49e842 Add DHCP discovery flow to bosch_alarm (#142250)
* Add dhcp discovery

* Update homeassistant/components/bosch_alarm/config_flow.py

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

* put mac address in entry instead of unique id

* Update host and mac via dhcp discovery

* add mac to connections

* Abort dhcp flow if there is already an ongoing flow

* apply changes from review

* apply change from review

* remove outdated test

* fix snapshots

* apply change from review

* clean definition for connections

* update quality scale

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-16 10:21:41 +02:00
dependabot[bot]
270780ef5f Bump docker/build-push-action from 6.16.0 to 6.17.0 (#145022)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 09:42:24 +02:00
dependabot[bot]
e15963b422 Bump codecov/codecov-action from 5.4.2 to 5.4.3 (#145023)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-16 08:54:13 +02:00
starkillerOG
52e8196d0a Mark Reolink doorbell visitor sensor as always available (#145002)
Mark doorbell visitor sensor as always available
2025-05-15 20:34:55 -04:00
Odd Stråbø
cc62943835 Fix ESPHome entities unavailable if deep sleep enabled after entry setup (#144970) 2025-05-15 18:57:16 -05:00
epenet
d195726ed2 Use runtime_data in isy994 (#144961) 2025-05-15 13:50:48 -05:00
epenet
50e6c83dd8 Fix missing mock in hue v2 bridge tests (#144947) 2025-05-15 13:53:12 -04:00
alorente
3a58d97496 Fix wrong UNIT_CLASS for reactive energy converter (#144982) 2025-05-15 18:27:16 +01:00
epenet
ace12958d1 Use runtime_data in iqvia (#144984) 2025-05-15 17:48:02 +02:00
Joost Lekkerkerker
d33a0f75fd Add water heater support to SmartThings (#144927)
* Add another EHS SmartThings fixture

* Add another EHS

* Add water heater support to SmartThings

* Add water heater support to SmartThings

* Add water heater support to SmartThings

* Add water heater support to SmartThings

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix

* Add more tests

* Make target temp setting conditional

* Make target temp setting conditional

* Finish tests

* Fix
2025-05-15 17:42:38 +02:00
Erik Montnemery
d24a60777b Fix Home Assistant Yellow config entry data (#144948) 2025-05-15 10:07:53 -04:00
epenet
f2a3a5cbbd Move iqvia coordinator to separate module (#144969)
* Move iqvia coordinator to separate module

* Adjust
2025-05-15 15:50:46 +02:00
Petro31
3bf9908789 Add template vacuum modern style (#144843)
* Add template vacuum modern style

* address comments and add tests for coverage

* address comments

* update vacuum and sort domains
2025-05-15 15:46:00 +02:00
epenet
912798ee34 Use runtime_data in intellifire (#144979) 2025-05-15 14:57:26 +02:00
epenet
28990e1db5 Use runtime_data in ipma (#144972)
* Use runtime_data in ipma

* Cleanup const
2025-05-15 14:43:58 +02:00
epenet
e8281bb009 Use runtime_data in iotawatt (#144977) 2025-05-15 14:43:35 +02:00
Robert Resch
334f9deaec Bump deebot-client to 13.2.0 (#144957) 2025-05-15 13:46:15 +02:00
alorente
1d47dc41c9 Add reactive energy device class and units (#143941) 2025-05-15 12:05:46 +01:00
Petro31
66ecc4d69d Add modern configuration for template alarm control panel (#144834)
* Add modern configuration for template alarm control panel

* address comments and add tests for coverage

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-05-15 11:46:57 +02:00
starkillerOG
fa3edb5c01 Fix Netgear handeling of missing MAC in device registry (#144722) 2025-05-15 10:56:54 +02:00
Petro31
ea046f32be Add modern style template lock (#144756)
* Add modern style lock

* add tests

* Add tests and address comments

* Update homeassistant/components/template/lock.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-05-15 10:43:56 +02:00
markhannon
fd09476b28 Add sensor entity to Zimi integration (#144329)
* Import sensor.py

* Light design alignment

* Fix merge error

* Refactor with extend

* Update homeassistant/components/zimi/sensor.py

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

* value_fn and inline refactoring

* strings.json and translation_key

* Add sensor_name

* Revert "Add sensor_name"

This reverts commit ad3da048e9.

* Default naming for sensors

* Remove uneeded 'garage' and use default battery name

* Bump to zcc-helper 3.5.2 which maps "Garage Controller" tp "Garage" in device.name

* Update homeassistant/components/zimi/sensor.py

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

* Update homeassistant/components/zimi/sensor.py

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

* Update strings.json

* Revert "Bump to zcc-helper 3.5.2 which maps "Garage Controller" tp "Garage" in device.name"

This reverts commit 345ef8a485.

* Update homeassistant/components/zimi/sensor.py

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-05-15 10:12:18 +02:00
Alexandre CUER
7c306acd5d Emoncms remove useless var in tests (#144942) 2025-05-15 09:48:01 +02:00
G Johansson
9c4733595a Fix unknown Pure AQI in Sensibo (#144924)
* Fix unknown Pure AQI in Sensibo

* Fix mypy
2025-05-15 10:27:48 +03:00
Petro31
c7cf9585ae Add modern style configuration for template fan (#144751)
* add modern template fan

* address comments and add tests for coverage
2025-05-15 08:18:37 +02:00
J. Nick Koston
301ca88f41 Bump aioesphomeapi to 31.0.1 (#144939) 2025-05-14 22:27:25 -05:00
peteS-UK
9a0fed89bd Translate raised exceptions for Squeezebox (#144842)
* initial

* tweak

* review updates
2025-05-14 19:39:00 -04:00
Joost Lekkerkerker
2050b0b375 Add another EHS SmartThings fixture (#144920)
* Add another EHS SmartThings fixture

* Add another EHS
2025-05-14 23:23:18 +02:00
epenet
34c7c3f384 Use runtime_data in homematicip_cloud (#144892) 2025-05-14 23:14:02 +02:00
epenet
3b9d8e00bc Use runtime_data and HassKey in geofency (#144886) 2025-05-14 23:13:37 +02:00
Abílio Costa
6b35b069b2 Remove duplicated code in unit conversion util (#144912) 2025-05-14 22:05:29 +01:00
Paulus Schoutsen
9428127021 Add media search and play intent (#144269)
* Add media search intent

* Add PLAY_MEDIA as required feature and remove explicit responses

---------

Co-authored-by: Michael Hansen <mike@rhasspy.org>
2025-05-14 15:45:40 -04:00
Sanjay Govind
1e8843947c Add sensor for alarm status in bosch_alarm (#142564)
* Add sensor for alarm status

* style fixes

* fix icons

* style fixes

* update tests

* apply change from code review

* add alarm to alarm sensor state

* Apply changes from review
2025-05-14 21:00:41 +02:00
Sanjay Govind
dbdffbba23 Add binary sensors to bosch_alarm (#142147)
* Add binary sensors to bosch_alarm

* make one device per sensor, remove device class guessing

* fix tests

* update tests

* Apply suggested changes

* add binary sensors

* make fault sensors diagnostic

* update tests

* update binary sensors to use base entity

* fix strings

* fix icons

* add state translations for area ready sensors

* use constants in tests

* apply changes from review

* remove fault prefix, use default translation for battery low

* update tests
2025-05-14 20:56:08 +02:00
Daniel Hjelseth Høyer
460f02ede5 Update mill library 0.12.5 (#144911)
* Update mill library 0.12.5

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

* Update mill library 0.12.5

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

---------

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-05-14 20:46:28 +02:00
Sid
0eb6c88bc5 Add system LED brightness to eheimdigital (#144915) 2025-05-14 20:45:58 +02:00
Nick Kuiper
4b7650f2d2 Add buttons to Blue current integration (#143964)
* Add buttons to Blue current integration

* Apply feedback

* Changed configEntry to use the BlueCurrentConfigEntry.

The connector is now accessed via the entry instead of hass.data.

* Changed test_buttons_created test to use the snapshot_platform function.

Also removed the entry.unique_id check in the test_charge_point_buttons function because this is not needed anymore, according to https://github.com/home-assistant/core/pull/114000#discussion_r1627201872

* Applied requested changes.

Changes requested by joostlek.

* Moved has_value from BlueCurrentEntity to class level.

This value was still inside the __init__ function, so the value was not overwritten by the ChargePointButton.

---------

Co-authored-by: Floris272 <florispuijk@outlook.com>
2025-05-14 19:37:16 +02:00
Daniel Hjelseth Høyer
8004c6605b Update Tibber lib 0.31.2 (#144908)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-05-14 19:25:01 +02:00
Marc Hörsken
9d451b6358 Add support for identify buttons to WMS WebControl pro (#143339)
* Remove _attr_name = None from generic base class

* Add support for identify buttons to WMS WebControl pro

* Fix PERF401 as suggested by joostlek

* Fix fixture name after rebase

* Split test

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-14 18:06:21 +02:00
LG-ThinQ-Integration
7963665c40 Add fan for ventilator (#142444)
Add ventilator device

Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-05-14 17:58:25 +02:00
Erik Montnemery
d44a34ce1e Refactor DeviceAutomationTriggerProtocol (#144888) 2025-05-14 17:24:19 +02:00
Joost Lekkerkerker
49b7559b1f Fix snapshots in APC (#144901) 2025-05-14 17:14:57 +02:00
Glenn Vandeuren (aka Iondependent)
43b1dd64a7 Handle unit conversion in lib for niko_home_control (#141837)
* handle unit conversion in lib

* bump lib

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-14 17:13:06 +02:00
Matthias Alphart
2d0c1fac24 Fix "tunneling" spelling in KNX (#144895) 2025-05-14 17:05:45 +02:00
Andre Lengwenus
a0f35a84ae Positioning for LCN covers (#143588)
* Fix motor control function names

* Add position logic for BS4

* Use helper methods from pypck

* Add motor positioning to domain_data schema

* Fix tests

* Add motor positioning via module

* Invert motor cover positions

* Merge relay cover classes back into one class

* Update snapshot for covers

* Revert bump lcn-frontend to 0.2.4
2025-05-14 16:49:30 +02:00
epenet
4bc5987f36 Use runtime_data in rachio (#144896) 2025-05-14 16:46:36 +02:00
Yuxin Wang
11644d48ee Use snapshot testing for APCUPSD integration (#130770)
* First try to use snapshot testing for sensors

* Use snapshot testing

* Add ambr files

* Update comment

* Address review comments

* Remove duplicate async init integration call

* Add device test for cases w/o SERIALNO

* Use friendlier snapshot names

* Use * to mandate keyed argument for async_init_integration

* Always pass mock config entry ID

* Fix incorrect ID
2025-05-14 16:04:07 +02:00
Petro31
d273a92a19 Refactor template optional configuration attributes (#144887) 2025-05-14 15:54:40 +02:00
Brian Rogers
b0ff4b5841 Add flow detection to Rachio hose timer (#144075)
* flow binary sensor

* rename property

* Move const and update coordinator reference

* update controller descriptions

* Address review comments

* Use lookup for rain sensor

* Update online binary sensor

* make it a bit more readable

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-14 15:01:01 +02:00
epenet
ef99658919 Use runtime_data in gpslogger (#144884) 2025-05-14 14:59:10 +02:00
epenet
a9238c7577 Use entry.async_on_unload in gpslogger (#144883) 2025-05-14 14:31:50 +02:00
Brett Adams
993e98a43f Fix pin strings in Teslemetry (#144873)
pinstring
2025-05-14 14:31:41 +02:00
epenet
10dd11f257 Use HassKey in greeneye_monitor (#144878) 2025-05-14 14:30:45 +02:00
epenet
fb9be3da79 Use entry.async_on_unload in geofency (#144882) 2025-05-14 14:30:02 +02:00
Åke Strandberg
3b1a33d606 Fix substitutions in strings.json in Miele integration (#144881)
Fix substitutions in strings.json
2025-05-14 14:14:48 +02:00
epenet
710e18f399 Use runtime_data in gree (#144880) 2025-05-14 14:06:40 +02:00
Maximilian Arzberger
67b9904740 Add Kostal plenticore Installer login support (#133773)
* feat: Add Installer login, Add ManualCharge Switch

* remove unnecessary field

* replace strings with consts

* change to CONF and camel_case

* Improve existing code

* Add translation string

* format code

* add service code test

* format code

* format code

* remove manual charge switch

* add reconfigure config flow

* fix flow

* add return type

* add reconfigure strings

* adjust tests

* change string

* simlify tests

* add reconfigure test

* add more tests

* Fix

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-14 14:05:23 +02:00
Robert Resch
e413e9b93b Add mac address to airgradient devices (#144876) 2025-05-14 13:40:38 +02:00
Matthias Alphart
5c86042b31 Add Fronius current and voltage for up to 4 MPP trackers (#140120)
Support current and voltage of up to 4 MPP trackers
2025-05-14 13:37:02 +02:00
Martin Hjelmare
e89333811e Improve Z-Wave config flow tests (#144871)
* Improve Z-Wave config flow tests

* Fix test

* Use identify check for result type
2025-05-14 13:08:26 +02:00
Dmytro Tkach
4f723232e3 Add modbus light brightness and color temperature (#139703)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-05-14 12:07:19 +01:00
Åke Strandberg
48520d90ef Add plate sensors for Miele hobs (#144400)
* Add plate sensors for miele hobs

* Address review comments

* Update snapshot
2025-05-14 13:02:05 +02:00
Jeremiah Paige
2fdda91cb8 Fix pandora.media_player to not sleep during event loop (#141957)
* Fix pandora.media_player to not sleep during event loop

* factor out pianobar spawn

* linting cleanup

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-14 12:34:40 +02:00
Sören Beye
c023f610dd Introduce recorder.get_statistics service (#142602)
Co-authored-by: abmantis <amfcalt@gmail.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-05-14 11:28:32 +01:00
epenet
161b62d8fa Drop alias from local DOMAIN import (#144867) 2025-05-14 12:24:46 +02:00
Brett Adams
8ccedd4064 Add credit balance sensor to Teslemetry (#144365)
* Add credits

* Credits string and icon

* Add test

* tests and fixes

* Add units

* Update homeassistant/components/teslemetry/sensor.py

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

* Update snapshot with unit

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-14 12:21:45 +02:00
Rob Bierbooms
9a06584a1d Bump influxdb-client to 1.48.0 (#144845)
* Bump influxdb-client to 1.48.0

* Adjust typing, fix mypy

* Update homeassistant/components/influxdb/__init__.py

* Update homeassistant/components/influxdb/__init__.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-14 12:21:26 +02:00
Daniël van den Berg
a21e586140 Show Sonos playlists under favorites (#142357)
* Update media_browser.py

* Update favorites.py

* Update media_player.py

* Update media_browser.py

* Update media_player.py

* Update favorites.py

* Update media_browser.py

* Update media_player.py

* Update favorites.py

* Added/fixed testing for showing sonos native playlists in the media browser

* Create a DidlFavorite to wrap playlists.

* Processed PR feedback
2025-05-14 12:14:20 +02:00
epenet
91f01d660f Move ps4 services to separate module (#144870) 2025-05-14 12:04:43 +02:00
peteS-UK
1748dbd60f Add parallel_updates to new updates platform for Squeezebox (#144864)
initial
2025-05-14 11:59:28 +02:00
starkillerOG
5acae7f86d Fix Reolink setup when ONVIF push is unsupported (#144869)
* Fix setup when ONVIF push is not supported

* fix styling
2025-05-14 11:58:29 +02:00
epenet
30ecba9944 Finish cleaning up SamsungTV init tests (#144865)
FInish cleaning up SamsungTV init tests
2025-05-14 11:58:01 +02:00
epenet
4287df5f3d Use HassKey in ps4 (#144868) 2025-05-14 11:51:32 +02:00
hahn-th
063deab3cb Doorbell Event is fired just once in homematicip_cloud (#144357)
* fire event if event type if correct

* Fix requested changes
2025-05-14 11:44:59 +02:00
dependabot[bot]
27798a6004 Bump actions/dependency-review-action from 4.7.0 to 4.7.1 (#144856)
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.7.0 to 4.7.1.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v4.7.0...v4.7.1)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-version: 4.7.1
  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-05-14 11:43:14 +02:00
Luke Lashley
577ddd9021 Bump python-snoo to 0.6.6 (#144849) 2025-05-14 11:42:43 +02:00
Allen Porter
34663e160d Bump ical to 9.2.4 (#144852) 2025-05-14 11:42:22 +02:00
Norbert Rittel
ac54b81289 Fix spelling of "IP address" in plugwise (#144861) 2025-05-14 11:01:14 +03:00
Penny Wood
67174fb07e Remove myself as code owner of sun component (#144854)
* Remove myself as code owner

I'm haven't actively been working on this for some time. Have removed myself as a code owner.

* cleanup

* cleanup

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-14 09:37:51 +03:00
Brett Adams
d2a692393f Fix wall connector states in Teslemetry (#144855)
* Fix wall connector

* Update snapshot
2025-05-14 08:08:24 +02:00
Åke Strandberg
9aa2664188 Change unknown to unknown_code for missing Miele codes to avoid confusion (#144699)
* Change unknown to unknown_code

* Update snapshot

* Automatically replace missing codes with None

* Update snapshot
2025-05-14 08:07:38 +02:00
David Rapan
ab5d60e33d Make DHCP discovery aware of the network integration (#144767)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-14 00:59:48 -05:00
epenet
31847d8cfb Adjust handling of SamsungTV misaligned MAC (#144810)
* Cleanup SamsungTV misaligned MAC formatting

* Simplify

* One more

* Revert and add comment

* Adjust comment

* One more
2025-05-14 07:57:33 +02:00
John Hillery
9729f1f38b Provide ability to select nexia RoomIQ sensors (#144278)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-05-13 23:16:05 -05:00
peteS-UK
6bc6733c40 Add config flow data descriptions to Squeezebox (#144619)
* add data_descriptions

* tweaks

* review updates
2025-05-13 21:10:47 -07:00
Tsvi Mostovicz
b1ffcb4245 Jewish calendar - Fix Parasha values (#144646)
* Fix Parasha values

* Fix test

* Update sensor.py
2025-05-13 21:08:47 -07:00
Josef Zweck
f0c5fbfb8a Bump pylamarzocco to 2.0.3 (#144825) 2025-05-13 21:04:38 -07:00
J. Nick Koston
c76239806d Bump aioesphomeapi to 31.0.0 (#144778)
* aioesphomeapi update

* Bump aioesphomeapi to 31.0.0

There are some breaking changes with the protobuf naming and types
required some refactoring

changelog: https://github.com/esphome/aioesphomeapi/compare/v30.2.0...v31.0.0

* actually include the commit to bump the lib
2025-05-13 20:39:53 -04:00
Abílio Costa
6d809b0b5a Add service response support to admin services (#144837) 2025-05-13 21:57:15 +01:00
Norbert Rittel
de2cbb7f5c Improve user-facing strings of incomfort (#144844)
* Improvements in user-facing strings of `incomfort`

Fix spelling of "IP address" and "timeout"

Remove "temperature" from "Shortcut outside sensor temperature" as this makes no sense and leads to completely wrong translations. This is to indicate an electrical shortcut on the sensor so this should be the last word.

This also matches the naming in the user manual.

* Suggestion from review

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

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-05-13 22:47:21 +02:00
Erik Montnemery
cd61f37df7 Remove support for condition platforms defining only a CONDITION_SCHEMA (#144832) 2025-05-13 20:53:08 +02:00
epenet
26796f87cd Add device registry snapshots to samsungtv tests (#144804)
* Add device registry snapshots to samsungtv tests

* Simplify

* Adjust

* Reduce
2025-05-13 18:20:43 +02:00
Åke Strandberg
e2dd897ac7 Bump dependency pymiele -> 0.5.2 (#144758) 2025-05-13 18:19:49 +02:00
Retha Runolfsson
3bbe4baaf7 Update codeowner for switchbot Integration (#144829)
update codeowners
2025-05-13 18:16:05 +02:00
Alistair Francis
d409b86217 Bump automower-ble to 0.2.1 (#144817) 2025-05-13 14:21:56 +01:00
Josef Zweck
7928c15849 Fix blocking call in azure_storage config flow (#144818)
* Fix blocking call in azure_storage config flow

* Fix blocking call in azure_storage config_flow as well

* move session getting to event flow
2025-05-13 14:23:41 +02:00
epenet
d197debbc0 Improve SamsungTV config flow type hints (#144820) 2025-05-13 14:02:07 +02:00
Martin Hjelmare
55b9dee448 Fix Z-Wave unique id after controller reset (#144813) 2025-05-13 14:12:00 +03:00
epenet
5c6984d326 Do not abort on invalid host in SamsungTV user flow (#144794) 2025-05-13 10:47:26 +02:00
Josef Zweck
a7787d6080 Fix blocking call in azure storage (#144803) 2025-05-13 10:46:46 +02:00
Jeremiah Paige
2db60340c2 Add typing to wsdot (#143117)
* increase wsdot typing

* remove Final types

* help out mypy

* simplify wsdot types

* minor wsdot type changes

* type wsdot state
2025-05-13 10:43:03 +02:00
Mick Vleeshouwer
c121631fef Refactor config flow tests to improve result variable usage in Overkiz (#143374)
* Refactor test setup for unique ID migration in Overkiz integration

* Refactor test cases to unify result variable usage in Overkiz config flow tests (resultn -> result)

* Revert change in test_init
2025-05-13 10:35:32 +02:00
epenet
b0fb16d48d Remove obsolete compatibility code from SamsungTV (#144800) 2025-05-13 09:54:26 +02:00
Franck Nijhof
3e07f6543e Update debugpy to v1.8.14 (#144755) 2025-05-13 08:14:55 +02:00
Brett Adams
d4c2356c70 Create stream on demand in Teslemetry (#144777)
Create stream on demand
2025-05-13 08:05:33 +02:00
epenet
eec617b391 Add comments to samsungtv config flow tests (#144787) 2025-05-13 07:54:37 +02:00
Maciej Bieniek
b15c9ad130 Link Shelly device entry with Shelly BT scanner entry (#144626)
* Add BT address to DeviceInfo.connections

* Cleaning

* Use bluetooth_source property

* Add test

* Add connections property
2025-05-13 07:19:07 +02:00
Erik Montnemery
0128d85999 Move sun conditions to the sun integration (#144742) 2025-05-12 23:03:37 +01:00
David Rapan
e69ca0cf80 Bump aiodhcpwatcher to 1.2.0 (#144769) 2025-05-12 17:00:17 -05:00
Åke Strandberg
0719753be3 Set PARALLEL_UPDATES and update quality_scale for Miele integration (#144770)
Set PARALLEL_UPDATES and update quality_scale
2025-05-12 23:53:54 +02:00
Franck Nijhof
ba3181d4e7 Update pipdeptree to 2.26.1 (#144775) 2025-05-12 23:52:27 +02:00
Guido Schmitz
e58750555e Rework platform setup tests for devolo Home Network (#143114)
* Rework platform setup tests for devolo Home Network

* Fix sensor test

* Remove unload
2025-05-12 23:21:14 +02:00
Guido Schmitz
026687299d Assert resulting data in devolo Home Network test_form_reauth (#144760) 2025-05-12 21:28:40 +02:00
Martin Hjelmare
3eed552c56 Repair Z-Wave unknown controller (#144738)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-05-12 21:18:55 +02:00
J. Diego Rodríguez Royo
15a4514c7d Add MAC connection through DHCP discovery to Home Connect devices (#144611)
* Add MAC connection through DHCP discovery to Home Connect devices

* Update snapshots
2025-05-12 21:11:12 +02:00
Joakim Sørensen
b5445c0061 Allow subscription_expired repair issue in cloud (#144316)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-12 19:48:20 +02:00
Øyvind Matheson Wergeland
1d0584a90d Bump gcal-sync to 7.0.1 (#144718)
Co-authored-by: Allen Porter <allen.porter@gmail.com>
2025-05-12 19:45:34 +02:00
Matthias Alphart
158b795c70 Update xknx to 3.8.0 (#144753) 2025-05-12 19:45:02 +02:00
Paulus Schoutsen
4994229215 Track if TTS entity supports streaming input (#144697)
* Track if entity supports streaming

* Make class method
2025-05-12 13:44:39 -04:00
Andre Lengwenus
c022c32d2f Simplify unique config_entry check for LCN (#135756)
* Simplify check for unique config_entry

* Fix tests

* Fix reconfigure flow

* Add check for unchanging IP/port combination

* Remove explicit check for unchanged IP/port combination
2025-05-12 19:44:24 +02:00
Joost Lekkerkerker
d2ef3ca100 Fill in Plaato URL via placeholders (#144754) 2025-05-12 19:37:45 +02:00
Manu
00faadcfea Improve config flow description in ntfy integration (#144581) 2025-05-12 19:36:53 +02:00
Norbert Rittel
a6ff52b300 Fix outdated help center URL in plaato (#144748)
* Fix outdated help center URL in `plaato`

* Remove excessive space character
2025-05-12 19:12:49 +02:00
Joakim Sørensen
da0d65ca5b Log instead of ValueError for missing cloud translation key (#144732)
* Log instead of ValueError for missing translation key

* Update homeassistant/components/cloud/client.py
2025-05-12 18:59:38 +02:00
Paulus Schoutsen
2266e97417 Add a test for Assist Pipeline streaming deltas to TTS (#144711)
* Add a test for Assist Pipeline streaming deltas to TTS

* Adjust tests to new TTS engine
2025-05-12 12:15:05 -04:00
Norbert Rittel
d471de5645 Spelling fixes in user-facing strings of fronius (#144744) 2025-05-12 16:54:22 +02:00
Norbert Rittel
38674f0dc2 Add missing hyphen to "password-protected" in Shelly (#144746) 2025-05-12 17:47:14 +03:00
Erik Montnemery
b192ca4bad Make it possible to subscribe to frontend user store (#144724) 2025-05-12 16:01:42 +02:00
epenet
73a59523f5 Merge websocket test constants in samsungtv tests (#144741) 2025-05-12 15:51:21 +02:00
Erik Montnemery
05324dedd0 Deduplicate condition schemas (#144739) 2025-05-12 15:38:31 +02:00
Norbert Rittel
f1e5f73d7e Improve user-facing strings of velbus (#144716)
- add the missing hyphen to "password-protected"
- resolve missing genitive in `sync_clock` action description
- resolve singular/plural mismatch in `set_memo_text` action description
2025-05-12 16:35:06 +03:00
Robert Resch
7b23f21712 Remove deprecated camera async_handle_web_rtc_offer function (#144561) 2025-05-12 14:47:49 +02:00
epenet
4dde314338 Remove obsolete tests in SamsungTV (#144735) 2025-05-12 13:45:20 +02:00
Erik Montnemery
cba12fb598 Refactor frontend user store (#144723)
* Refactor frontend user store

* Address review comments
2025-05-12 12:00:32 +02:00
epenet
63e38b4d8d Rename samsung encrypted websocket test fixtures and constants (#144726)
* Rename samsung encrypted websocket test fixtures and constants

* More

* More
2025-05-12 11:36:22 +02:00
Simone Chemelli
7eded95315 Bump aiocomelit to 0.12.1 (#144720) 2025-05-12 11:23:44 +02:00
epenet
e493fe1105 Rename samsung websocket test fixtures and constants (#144719) 2025-05-12 10:27:29 +02:00
Åke Strandberg
646c230940 Add target temp sensor to Miele washing machines (#144507) 2025-05-12 09:42:27 +02:00
Thomas55555
5276a3688e Fix wrong state in Husqvarna Automower (#144684) 2025-05-12 09:39:30 +02:00
Allen Porter
0616bf16f4 Bump ical to 9.2.2 (#144713) 2025-05-12 09:37:57 +02:00
epenet
fbe1811e2b Improve SamsungTV test coverage (#144717) 2025-05-12 09:23:55 +02:00
epenet
2333c10915 Rename samsung legacy test fixtures and constants (#144715)
* Rename samsung legacy test fixtures and constants

* More
2025-05-12 09:13:23 +02:00
Manu
77e9142722 Increase test coverage for ntfy integration (#144701)
Increase test coverage
2025-05-11 22:25:43 -07:00
Allen Porter
943998e57e Bump voluptuous-openapi to 0.1.0 (#144703) 2025-05-11 21:01:20 -04:00
starkillerOG
58802b71c4 Bump reolink_aio to 0.13.3 (#144583) 2025-05-11 23:15:30 +01:00
Manu
ca89aa7a94 Sort list items alphabetically in Bring integration (#144700) 2025-05-11 22:42:02 +02:00
Paulus Schoutsen
4faa920318 Move Assist Pipeline tests to right file (#144696) 2025-05-11 21:38:21 +02:00
peteS-UK
b394c07a3d Override available property in button platform for Squeezebox (#144693) 2025-05-11 21:15:12 +02:00
Ruben van Dijk
554cb27703 Close Octoprint aiohttp session on unload (#144670) 2025-05-11 21:06:04 +02:00
Åke Strandberg
80a04314fc Add program phases for Miele washer-dryer (#144664) 2025-05-11 21:05:43 +02:00
Simone Chemelli
6516cd388f Avoid closing shared session for Comelit (#144682) 2025-05-11 21:00:21 +02:00
Åke Strandberg
4f6141581e Bump dependency pymiele to 0.5.1 (#144688) 2025-05-11 20:59:23 +02:00
Norbert Rittel
597c386bc2 Fix missing sentence-casing in alarmdecoder (#144690) 2025-05-11 20:58:13 +02:00
Seweryn Zeman
494c7aa3da Removed unused file_id param from open_ai_conversation request (#143878) 2025-05-11 20:33:17 +02:00
Norbert Rittel
8840970d64 Add missing hyphen to "WebSocket-based" in mqtt (#144686)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-05-11 20:30:19 +02:00
Simone Chemelli
867624fc59 Take into account coordinator availability for SamsungTV (#144545) 2025-05-11 19:38:53 +02:00
Norbert Rittel
ea4120a7d4 Add missing hyphens to "condition-based" and "pre-entry" in bmw_connected_drive (#144685) 2025-05-11 17:44:27 +02:00
Erik Montnemery
158bbf1f52 Remove unused constant from entity_platform tests (#144601) 2025-05-11 17:33:09 +02:00
Andrea Turri
61f8970aca Fix typos in Miele device names to match enum (#144609) 2025-05-11 17:26:02 +02:00
peteS-UK
6f41fbeb22 Add PARALLEL_UPDATES to Squeezebox (#144618) 2025-05-11 17:21:01 +02:00
Josef Zweck
a540c62594 Bump pylamarzocco to 2.0.2 (#144635)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-05-11 17:07:33 +02:00
Simone Chemelli
3e6a216806 Fix strings typo for Comelit (#144672) 2025-05-11 17:01:51 +02:00
G Johansson
85535b2cbd Bump holidays to 0.72 (#144671) 2025-05-11 17:00:44 +02:00
Norbert Rittel
05796dcd51 Fix grammar in description of unifi.remove_clients action (#144632) 2025-05-11 14:53:42 +03:00
Norbert Rittel
40e2c7b9b7 Improve user-facing strings of plaato (#144633)
- make all references to "auth token" consistent, using sentence-casing
- remove "Paste … here" so the description correctly refers to the field name 'Auth token'
- make the clickable URL text longer by using "these instructions" instead of just "these"
- slightly reword using "If you prefer to …"
- add the missing hyphen to "built-in"
2025-05-11 14:53:21 +03:00
Arie Catsman
d0fe7de501 bump pyenphase to 1.26.1 (#144641) 2025-05-11 14:07:35 +03:00
Norbert Rittel
0dadd31221 Add missing hyphen to "volume-weighted" in kraken (#144636)
Also fix sentence-casing in one string.
2025-05-11 13:58:55 +03:00
Norbert Rittel
09515bf174 Add missing hyphen to "time-weighted" in derivative (#144637) 2025-05-11 13:58:04 +03:00
Norbert Rittel
773a2a9db6 Add missing hyphen to "time-based" in integration (#144638) 2025-05-11 13:57:44 +03:00
Norbert Rittel
31a576b206 Add missing hyphen to "time-based" in filter (#144639)
Fix spelling of "time-based" in `filter`

Also sentence-case the complete string.
2025-05-11 13:57:28 +03:00
Simon Lamon
58161b5fa2 Bump python-linkplay to v0.2.5 (#144666)
Bump linkplay to 0.2.5
2025-05-11 12:56:40 +02:00
Norbert Rittel
ebb61caa53 Add missing hyphen to "file-based" in file (#144640) 2025-05-11 13:20:30 +03:00
Manu
54a7691a80 Fix typo in ntfy integration (#144650)
fix typo in ntfy integratrion
2025-05-11 11:14:10 +03:00
Norbert Rittel
996839cb67 Fix sentence-casing and spelling of "SIA-based" in sia (#144659)
Fix sentence-casing and spelling of `SIA-based` in `sia`
2025-05-11 11:12:35 +03:00
Marc Mueller
e065f1e097 Update pylint to 3.3.7 + astroid to 3.3.10 (#144630)
* Update pylint to 3.3.7 + astroid to 3.3.10

* Remove unnecessary pylint disable comment
2025-05-11 07:06:42 +02:00
Allen Porter
882565a8e5 Bump ical to 9.2.1 (#144642) 2025-05-10 23:59:01 -04:00
Marc Mueller
4501303beb Fix licenses check for jaraco.itertools (#144631) 2025-05-10 22:11:32 +02:00
Arie Catsman
1416580f8b fix enphase_envoy diagnostics home endpoint name (#144634) 2025-05-10 13:23:52 -05:00
wittypluck
5e58032745 Add Codeowner to OpenWeatherMap (#144605) 2025-05-10 10:54:11 +02:00
J. Diego Rodríguez Royo
86cf01a901 Delete deprecated program switches from Home Connect (#144606) 2025-05-10 10:53:16 +02:00
Erik Montnemery
45c0a19a68 Fix squeezebox test serializing mocks (#144600) 2025-05-10 09:44:55 +02:00
Ludovic BOUÉ
35ab2a21d6 Matter Oven fixture (#144603)
* Create cooktop.json

* Update conftest.py

* Fix format

* Add snapshots

* Add snapshots

* Oven fixture

* Oven fixture

* Add snapshot
2025-05-10 09:43:40 +02:00
Retha Runolfsson
977d2fe8b3 Add switchbot vacuum support (#144550)
* add support for vacuum

* add vacuum unit test
2025-05-10 09:34:51 +02:00
Peter Åslund
626f8a9166 Add codeowner to Adax (#144587)
* Add codeowner to Adax

* Reformatted manifest file
2025-05-10 00:54:36 +02:00
tdfountain
1654249dab Use strict typing for ConfigEntry on remove in NUT (#144588) 2025-05-09 17:20:03 -05:00
J. Nick Koston
5fadc56475 Mark inkbird coordinator as not needing connectable (#144584) 2025-05-09 17:19:00 -05:00
Erwin Douna
2bce697aa7 SMA add snapshots & tests (#144555)
* Refactor the sensor test to use snapshots

* Review feedback

* Remove leftover
2025-05-09 22:55:08 +02:00
Norbert Rittel
970edbed40 Sentence-case names and remove "True/False" in emulated_roku setup (#144579)
Sentence-case names and remove "True/False" in `emulated_roku`setup

As a binary field is shown as an on/off toggle in the UI there is no need to  include "(True/False)" in the field label.
2025-05-09 22:06:07 +03:00
Norbert Rittel
131ba3cdef Fix sentence-casing in config fields of aurora_abb_powerone (#144577)
* Fix sentence-casing in data field names of `aurora_abb_powerone`

* Add suggestion from review.

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 20:12:32 +02:00
Åke Strandberg
85f1c89808 Fix sensor setup during dynamic addition of Miele devices (#144551)
Fix sensors when dynamic addition of devices
2025-05-09 20:07:23 +02:00
J. Nick Koston
2940cb0fa0 Bump aiodiscover to 2.7.0 (#144571) 2025-05-09 11:59:38 -05:00
Markus Adrario
ba8d40f7d3 Add homee fan platform (#143524)
* Initial fan

* add more tests

* add last fan tests and small fixes

* fix tests after latest change

* another small correction

* use common strings

* add snapshot test

* fix review comments

* fix typing

* remove uneeded None

* remove unwanted file

* fix turn_on function

* typo

* Use constants for preset modes.

* fix  review notes.
2025-05-09 18:51:57 +02:00
Luke Lashley
cac0e0f6e8 Don't scale Roborock mop Path (#144421)
don't scale mop path
2025-05-09 18:50:55 +02:00
Ståle Storø Hauknes
ad7cfe49c8 Airthings DHCP discovery (#144280)
* Add DHCP to Airthings manifest

* Update manifest

* Update manifest

* Add tests

* Fix pr comments

* fix naming for all tests

* Fix pr comment
2025-05-09 18:49:22 +02:00
wittypluck
e29fc37bb1 Use device and entity name for OpenWeather map entities (#144513)
* Use entity name

* Update snapshot with expected chnages
2025-05-09 18:47:18 +02:00
starkillerOG
e892744328 Reolink fix privacy mode availability for NVR IPC cams (#144569)
* Correct "available" for IPC cams

* Check privacy mode when updating
2025-05-09 18:46:32 +02:00
Matrix
356775c19b Add water flowing status for YoLink water meter(YS5018). (#144535)
* Add water flowing status for YoLink water meter(YS5018).

* Fixes
2025-05-09 18:44:43 +02:00
Ludovic BOUÉ
87bd6e3ca0 Matter pump fixture (#144572)
* Create pump.json

* Add pump fixture

* Add snapshots
2025-05-09 18:40:56 +02:00
TimL
ad6f66c945 Allow dns hostnames to be retained for SMLIGHT user flow. (#142514)
* Dont overwrite host with local IP

* adjust test for user flow change
2025-05-09 18:31:00 +02:00
Ted van den Brink
9537229c92 Add status to whois (#141051)
* Add status to whois component

* Fix tests

* Added translations for statuses

* Convert status to enum

* Fix tests, add test for status sensor
2025-05-09 18:23:50 +02:00
Sanjay Govind
c18b6d736a Add switch platform to bosch alarm (#142157)
* add switch platform to bosch alarm

* fix tests

* one device per output

* add switch for door

* add switch entities for door

* fix switch devices

* apply changes from review

* update identifiers

* add missing entity

* use base entity for switch

* rename var

* fix icons

* give user a nice error if they try to lock or secure a door that is in the process of being cycled

* fix test

* Update homeassistant/components/bosch_alarm/switch.py

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

* Update homeassistant/components/bosch_alarm/switch.py

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

* use service constants

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 18:17:26 +02:00
wittypluck
a7afeb078c Avoid split of unique id to build OpenWeatherMap sensors (#144546)
* Avoid split of unique id

* Assert that unique_id is not None
2025-05-09 17:14:02 +02:00
Franck Nijhof
00627b82e0 2025.5.1 (#144564) 2025-05-09 17:03:40 +02:00
Manu
9a2f17c2b2 Refactor Bring! integration to poll activity data at a slower interval (#142621)
* Refactor Bring integration to poll activity with slower interval

* add test
2025-05-09 16:42:22 +02:00
Louis Christ
4cecb6c851 Replace custom actions for sleep timer with buttons in bluesound integration (#133604)
* Use entity services

* Add buttons for sleep timer

* Fix merge

* Replace hass.data with runtime_data from config_entries

* Disable button by default

* Remove duplicate dispatchers

* Add tests for buttons

* Fix merge commit

* Fix merge commit

* Update deprecation version

* Remove update_before_add

* Use entity_registry_enabled_by_default

* Use EnitiyDescriptions for buttons

* Update version for deprecate

* Use tranlation_key; Move default disable to EntityDescription

* Fix merge commit

* Fix callback type; fix breaks version

* Use normal issue

* Apply suggestions from code review

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 16:15:52 +02:00
Andre Lengwenus
b6c4b06fc7 Skip check for entry updated by current flow in _async_abort_entries_match (#141003)
* Ignore entries with source reconfigure in _async_abort_entries_match

* Exclude reconfigure and reauth entry from match check

* Add tests

* Fix tests for other components

* Revert unrelated changes

* Update docstring

* Make test more realistic

* Change name and docstring for sabnzbd test

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 16:15:17 +02:00
ichbinsteffen
3e0e807c96 Add control bus mode selector to Cambridge Audio (#139131)
* [CambridgeAudio Integration] Add switch to enable Control Bus Mode

* remove load_fn

* Add import for ControlBusMode

* Add strings for control_bus_mode

* Add icons for control_bus_mode

* Add test case for the select ControlBusMode.Amplifier

* Change the set of icons

* Fix the usage of the wrong property name

* Fix test

* Fix test 2

* add new snapshot

* fix test name

* Fix

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 15:53:37 +02:00
Renier Moorcroft
7dad6ebe67 Switch to PyEzvizApi (#135926)
* Update library

* update library

* Bump api to pin mqtt to compatable version

* fix after rebase

* Update code owners

* codeowners
2025-05-09 15:45:18 +02:00
Markus Adrario
75b8cb19cf Deprecate Homee valve sensor (#139578)
* remove valve sensor

* deprecate valve sensor

* fix

* Add deprecation issue test

* Add test for deleting disabled deprecated entities

* parametrize issue test

* eliminate one if iteration

* review change 1

* review change 2

* add info where to find valve

* Update homeassistant/components/homee/sensor.py

---------

Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 15:37:23 +02:00
Phill (pssc)
bd28452807 Add Squeezebox service update entities (#125764)
* first cut at update entties

* remove sensors for now

* make update vserion less wordy

* fix re escape

* Use name

* use Caps

* fix translation

* move all data manipulation to data prepare fn, refine regexes and provide as much info as possible

* fix formatting

* update return type

* fix class inherit

* Fix ruff

* update tests

* fix spelling

* ruff

* Update homeassistant/components/squeezebox/update.py

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>

* Update tests/components/squeezebox/test_update.py

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>

* Update tests/components/squeezebox/test_update.py

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>

* Update tests/components/squeezebox/test_update.py

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>

* Update tests/components/squeezebox/test_update.py

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>

* Update tests/components/squeezebox/test_update.py

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>

* fix tests

* ruff

* update text based on feedback from docs

* make the plugin update entity smarter

* update plugin updater tests

* define attr

* Callable type

* callable guard

* ruff

* add local release info page

* fix typing

* refactor use release notes for LMS update

* Make update simple and produce a release summary instead

* Update tests

* Fix tests

* Tighten english

* test for restart fail

* be more explicit with coordinator error

* remove unused regex

* revert error msg unrealted

* Fix newline

* Fix socket usage during tests

* Simplify based on new lib version

* CI Fixes

* fix typing

* fix enitiy call back

* fix enitiy call back types

* remove some unrelated titdying

---------

Co-authored-by: Raj Laud <50647620+rajlaud@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-05-09 15:35:10 +02:00
Guido Schmitz
ed6cfa42f0 Make all devolo Home Network conflig flow tests end correctly (#144378) 2025-05-09 15:33:13 +02:00
Franck Nijhof
13aba6201e Bump version to 2025.5.1 2025-05-09 13:29:29 +00:00
starkillerOG
f392e0c1c7 Prevent errors during cleaning of connections/identifiers in device registry (#144558) 2025-05-09 13:28:33 +00:00
starkillerOG
181eca6c82 Reolink clean device registry mac (#144554) 2025-05-09 13:28:32 +00:00
Bram Kragten
196d923ac6 Update frontend to 20250509.0 (#144549) 2025-05-09 13:28:30 +00:00
Josef Zweck
4ad387c967 Fix statistics coordinator subscription for lamarzocco (#144541) 2025-05-09 13:28:29 +00:00
J. Nick Koston
cb475bf153 Bump aiodns to 3.4.0 (#144511) 2025-05-09 13:28:28 +00:00
Michael
47acceea08 Fix removing of smarthome templates on startup of AVM Fritz!SmartHome integration (#144506) 2025-05-09 13:28:26 +00:00
J. Nick Koston
fd6fb7e3bc Bump forecast-solar to 4.2.0 (#144502) 2025-05-09 13:28:25 +00:00
Erik Montnemery
30f7e9b441 Don't encrypt or decrypt unknown files in backup archives (#144495) 2025-05-09 13:28:24 +00:00
Matthias Alphart
a8beec2691 Ignore Fronius Gen24 firmware 1.35.4-1 SSL verification issue (#144463) 2025-05-09 13:28:23 +00:00
Fredrik Erlandsson
23244fb79f Fix point import error (#144462)
* fix import error

* fix failing tests

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 13:28:22 +00:00
Martin Hjelmare
e5c56629e2 Fix Z-Wave reset accumulated values button entity category (#144459) 2025-05-09 13:28:20 +00:00
Josef Zweck
a793503c8a Bump pylamarzocco to 2.0.1 (#144454) 2025-05-09 13:28:19 +00:00
DukeChocula
054c7a0adc Add LAP-V102S-AUSR to VeSync (#144437)
Update const.py

Added LAP-V102S-AUSR to Vital 100S
2025-05-09 13:28:18 +00:00
Tamer Wahba
6eb2d1aa7c fix homekit air purifier temperature sensor to convert unit (#144435) 2025-05-09 13:28:16 +00:00
Martin Hjelmare
619fdea5df Fix Z-Wave restore nvm command to wait for driver ready (#144413) 2025-05-09 13:28:15 +00:00
Robert Resch
763f2bcfcc Remove deprecated address argument in all lcn services (#144557) 2025-05-09 15:15:09 +02:00
agorecki
9e3684b001 Add Lux sensor to Airthings Cloud (#141035)
* change light to lux for airthings cloud

* Add back light sensor for airthings

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-09 15:11:22 +02:00
starkillerOG
93fd82d1fa Prevent errors during cleaning of connections/identifiers in device registry (#144558) 2025-05-09 14:50:00 +02:00
starkillerOG
9757009d8f Reolink clean device registry mac (#144554) 2025-05-09 14:47:38 +02:00
Robert Resch
920d281d45 Remove deprecated core set_time_zone function (#144559) 2025-05-09 14:40:23 +02:00
Robert Resch
d2bdc85a7b Remove deprecated async_forward_entry_setup function (#144560) 2025-05-09 14:34:55 +02:00
Robert Resch
1f84c5e1f1 Remove deprecated legacy WebRTC provider (#144547) 2025-05-09 13:50:38 +02:00
Åke Strandberg
a93bf3c150 Add vacuum platform to miele (#143757)
* Add vacuum platform

* Add comments

* Update snapshot

* Use class defined in pymiele

* Use device class transation

* Fix typo

* Cleanup consts

* Clean up activity property

* Address review comments

* Address review comments
2025-05-09 13:17:37 +02:00
Brett Adams
7bad07ac10 Add left & right temp request entities to Teslemetry (#144364)
Add left right
2025-05-09 13:16:54 +02:00
Simone Chemelli
af019144e5 Exempt entity categories for Comelit (#142858)
* Add entity categories to Comelit

* update snapshots

* revert EntityCategory changes

* update quality scale

* update tests
2025-05-09 13:15:35 +02:00
markhannon
e69b3ebf1e Add fan entity to Zimi integration (#144327)
* Import fan.py

* Align to light design

* Consistency for debug message

* ruff (post merge)

* Fixed stale docstring

* refactor init

* Combine aysnc_add_entities
Use _attr_speed_range instead of property

* Remove unused self._speed (and useless init)

* Refactor self._device to device in Entity init
2025-05-09 13:10:28 +02:00
Retha Runolfsson
4271d3f32f Add exception-translations for switchbot integration (#143444)
* add exception handler

* add unit test

* test exception per platform

* optimize unit tests

* update quality scale
2025-05-09 13:09:18 +02:00
Bram Kragten
d6e5fdceb7 Update frontend to 20250509.0 (#144549) 2025-05-09 13:09:05 +02:00
Robert Resch
c4ceb4759a Remove deprecated camera frontend_stream_type (#144539) 2025-05-09 13:08:34 +02:00
wittypluck
6350ed3415 Add snapshot tests for OpenWeatherMap sensors (#139657)
* Add snapshot tests for sensors

* Code cleanup

* Patch during async_setup only

* Use snapshot_platform, split platforms for snapshot tests

* Make mock_config_entry and mode fixtures

* Update snapshots with  latest device and state class changes

* Move setup_platform to __init__.py and patch HA object instead of library

* Remove if statements in tests

* Add client mock fixture to patch get_weather instead of internal call

* Code cleanup

* Test explicit list of modes

* Fix

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-09 13:06:38 +02:00
wittypluck
031b25cd1e Remove redundant coordinator reference in OpenWeatherMap sensor (#144548)
Remove redundant coordinator reference
2025-05-09 12:44:36 +02:00
Erwin Douna
47455fee41 SMA add re-authentication flow (#144538)
* Add reauth flow

* Small adjustment

* Update homeassistant/components/sma/config_flow.py

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

* Review feedback

* Update tests/components/sma/test_config_flow.py

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

* Update tests/components/sma/test_config_flow.py

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

* Feedback

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-09 12:16:49 +02:00
Åke Strandberg
9abb4ffc97 Add drying step sensor for Miele tumble dryers (#144515)
Add drying step sensor for tumple dryers
2025-05-09 11:52:30 +02:00
DukeChocula
90a7ecdce3 Add LAP-V102S-AUSR to VeSync (#144437)
Update const.py

Added LAP-V102S-AUSR to Vital 100S
2025-05-09 11:49:26 +02:00
Matthias Alphart
a84b8b49f3 Update knx-frontend to 2025.4.1.91934 - Enable UI to create KNX Cover entities (#141993)
Update knx-frontend to 2025.4.1.91934
2025-05-09 11:43:05 +02:00
Ludovic BOUÉ
ff6f213664 Matter refrigerator fixture (#144491)
* Add files via upload

* Add snapshots
2025-05-09 11:41:52 +02:00
Retha Runolfsson
e4b686bc43 Bump PySwitchbot to 0.62.0 (#144527)
bump pyswitchbot to 0.62.0
2025-05-09 11:40:56 +02:00
Matthias Alphart
307bb05653 Add support to create KNX Cover entities from UI (#141944)
* Add UI to create KNX Cover entities

* Use common constants source for UI and YAML config keys
2025-05-09 11:28:25 +02:00
epenet
b4ae08f83d Move hardware initialisation to package module (#144540) 2025-05-09 10:55:41 +02:00
Matthias Alphart
21e2bbd066 Ignore Fronius Gen24 firmware 1.35.4-1 SSL verification issue (#144463) 2025-05-09 10:39:00 +02:00
Josef Zweck
0d85cec770 Fix statistics coordinator subscription for lamarzocco (#144541) 2025-05-09 10:37:48 +02:00
Brett Adams
a1e6f596d7 Add common translation section to Teslemetry (#144361) 2025-05-09 10:04:43 +02:00
epenet
eab1d5717f Use HassKey in hardware (#144337) 2025-05-09 10:04:11 +02:00
Erik Montnemery
19b1dc8d65 Add backup tests showing that unknown files are not ciphered (#144529) 2025-05-09 09:56:07 +02:00
Erik Montnemery
2c8e33558e Catch and log unexpected backup ciphering errors (#144531) 2025-05-09 09:55:32 +02:00
dependabot[bot]
7287f302f6 Bump actions/dependency-review-action from 4.6.0 to 4.7.0 (#144532)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-09 09:51:56 +02:00
Åke Strandberg
1342dc142c Update test fixture for Miele dishwasher (#144537) 2025-05-09 09:50:32 +02:00
Tamer Wahba
96a8902365 fix homekit air purifier temperature sensor to convert unit (#144435) 2025-05-08 17:41:14 -05:00
Marc Mueller
d1b85cd452 Fix voip test RuntimeWarning (#144519) 2025-05-09 00:26:43 +02:00
Franck Nijhof
8977458e48 Merge branch 'master' into dev 2025-05-08 22:07:36 +00:00
Tsvi Mostovicz
a37f8b1f4e Jewish calendar entity translations (#144414)
* Move strings from entity descriptions to strings.json

* Use the original name values

* Fix casing

* Use "real" english names as well as transliterated names
2025-05-09 00:00:28 +02:00
Jesse Hills
bdf4a21976 Use async_release_notes in ESPHome update entity (#144440) 2025-05-08 23:52:43 +02:00
epenet
1322d54371 Use runtime_data in hive (#144367) 2025-05-08 23:47:24 +02:00
epenet
fbe63e8d03 Use runtime_data in hlk_sw16 (#144370) 2025-05-08 23:44:44 +02:00
epenet
6b2a4c975c Cleanup unused CONF_IP_ADDRESS from SamsungTV tests (#144379) 2025-05-08 23:44:06 +02:00
J. Nick Koston
b1392e1fc8 Bump aiodns to 3.4.0 (#144511) 2025-05-08 22:43:45 +02:00
Thomas55555
7100481abc Improve Husqvarna Automower tests (#143113) 2025-05-08 22:38:26 +02:00
DeerMaximum
4c43640d0d Bump pynina to 0.3.6 (#144494) 2025-05-08 22:36:22 +02:00
Erik Montnemery
42f53ff917 Don't encrypt or decrypt unknown files in backup archives (#144495) 2025-05-08 22:30:35 +02:00
Petar Petrov
e0fb612e82 Show warning message for Z-Wave devices in interview stage (#144483)
* Show warning message for devices in interview stage

* remove debug code
2025-05-08 16:21:43 -04:00
wittypluck
d13f9be9d8 Remove unused OpenWeatherMap const values (#144510) 2025-05-08 21:57:20 +02:00
J. Nick Koston
2396b1e73c Bump forecast-solar to 4.2.0 (#144502) 2025-05-08 21:55:03 +02:00
Michael
374b3ac6c6 Fix removing of smarthome templates on startup of AVM Fritz!SmartHome integration (#144506) 2025-05-08 21:54:49 +02:00
Norbert Rittel
5df09c4f13 Add missing hyphen to "single-board computers" in homekit (#144505) 2025-05-08 21:54:09 +02:00
Åke Strandberg
337c64d69d Add miele devices dynamically (#144216)
* Use device class transation

* WIP Cleanup tests

* First 3

* First 3

* Button

* Climate

* Light

* Switch

* New and cleaner variant

* Update homeassistant/components/miele/entity.py

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-05-08 21:20:02 +02:00
Joost Lekkerkerker
34dbd1fb10 Add hob support to SmartThings (#144493)
* Add hob support to SmartThings

* Add hob support to SmartThings

* Add hob support to SmartThings

* Fix

* Update homeassistant/components/smartthings/icons.json
2025-05-08 21:03:41 +02:00
Joost Lekkerkerker
7ee9f0af2d Add cooktop operating state to SmartThings (#144500) 2025-05-08 20:41:04 +02:00
Joost Lekkerkerker
cb6847b64c Remove deprecated services in SABnzbd (#144405)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-05-08 20:02:24 +02:00
Norbert Rittel
04867f6ecc Fix capitalization and grammar in simplefin (#144246) 2025-05-08 19:16:37 +02:00
Robert Resch
9e94e94075 Remove RTSPtoWebRTC (#144328) 2025-05-08 17:38:13 +02:00
Martin Hjelmare
014c5dc764 Set Z-Wave platforms fixture in config flow tests (#144470) 2025-05-08 17:46:41 +03:00
Martin Hjelmare
a1599d5f7d Set Z-Wave platforms fixture in helpers tests (#144472) 2025-05-08 17:46:00 +03:00
Martin Hjelmare
2fd678bb59 Set Z-Wave platforms fixture in light tests (#144473) 2025-05-08 17:45:26 +03:00
Fredrik Erlandsson
3c4c3dc08e Fix point import error (#144462)
* fix import error

* fix failing tests

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-05-08 14:28:56 +02:00
Martin Hjelmare
bbc3862fec Fix Z-Wave reset accumulated values button entity category (#144459) 2025-05-08 11:59:20 +02:00
Josef Zweck
678e25d0b1 Bump pylamarzocco to 2.0.1 (#144454) 2025-05-08 11:13:42 +03:00
Norbert Rittel
a6f91177b6 Small fixes in user-facing strings of nest (#144444)
- add the missing hyphen to "one-time setup fee"
- capitalize one occurrence of "Cloud Project" (treated as name in all other strings)
- sentence-case "name" as this can be translated
2025-05-08 11:13:00 +03:00
starkillerOG
ff637ef046 Include channel in Reolink device URL (#144456)
Include channel in device URL
2025-05-08 11:12:22 +03:00
Norbert Rittel
1cb813e0c5 Fix sentence-casing and missing hyphen in electrasmart (#144443) 2025-05-08 11:01:14 +03:00
J. Nick Koston
ce4e51078f Add test coverage for inkbird IBS-P02B (#144433)
Was reported not working in https://github.com/Bluetooth-Devices/inkbird-ble/issues/95#issuecomment-2860473798
but cannot reproduce the issue. The tests are still useful
2025-05-08 11:00:32 +03:00
Norbert Rittel
066d0f4143 Add missing hyphen to "two-factor authentication" in subaru (#144446) 2025-05-08 10:59:58 +03:00
Norbert Rittel
1294918f5b Add missing hyphen to "two-factor authentication" in august (#144447) 2025-05-08 10:58:30 +03:00
Norbert Rittel
4a556f89aa Add missing hyphen to "two-factor authentication" in nextcloud (#144448) 2025-05-08 10:58:16 +03:00
Norbert Rittel
e74a29c87a Sentence-case "multi-factor authentication" in sense (#144450) 2025-05-08 10:58:07 +03:00
Marc Mueller
50d57852a6 Include runner arch in CI cache key (#144038) 2025-05-08 09:27:17 +02:00
Ludovic BOUÉ
744d5f7bd4 Matter Mounted dimmable load control fixture (#144097)
* Create mounted_dimmable_load_control_fixture.json

* Add fixture

* Add snapshots
2025-05-08 09:10:30 +02:00
Norbert Rittel
0b0a239ed4 Fix sentence-casing in user-facing strings of isy994 (#144428) 2025-05-07 23:28:08 +03:00
Josef Zweck
4cc538b5ae Add sensor for brew start time to lamarzocco (#144423)
* Add sensor for brew start time to lamarzocco

* pytestmark
2025-05-07 22:48:52 +03:00
Norbert Rittel
f5c67e2fd1 Fix user-facing strings in totalconnect (#144411)
- replace two inconsistent occurrences of camel-cased "TotalConnect" with "Total Connect"
- apply sentence-casing to all strings
- add a missing hyphen to "4-digit numer"
2025-05-07 22:48:40 +03:00
Norbert Rittel
9ec5d90f4d Add missing hyphen to "6-digit … codes" in opower (#144417) 2025-05-07 12:21:43 -07:00
Norbert Rittel
e1344fca6c Fix spelling of "HomeKit" and "Gateway" in tradfri (#144420) 2025-05-07 20:11:41 +02:00
Franck Nijhof
e8bdc7286e 2025.5.0 (#144406) 2025-05-07 19:13:53 +02:00
Norbert Rittel
e290829bc0 Add missing hyphen to "eight-digit HomeKit pairing code" (#144416) 2025-05-07 11:53:38 -05:00
Martin Hjelmare
dc0998d95d Fix Z-Wave restore nvm command to wait for driver ready (#144413) 2025-05-07 19:50:45 +03:00
Norbert Rittel
5456cd0ac1 Fix spelling in user-facing strings of auth component (#144412) 2025-05-07 17:06:46 +01:00
Franck Nijhof
18f2b120ef Bump version to 2025.5.0 2025-05-07 14:31:26 +00:00
Michael Hansen
43d8345821 Bump intents to 2025.5.7 (#144404) 2025-05-07 14:30:48 +00:00
Michael Hansen
1ce44800ab Bump intents to 2025.5.7 (#144404) 2025-05-07 09:05:08 -05:00
Ludovic BOUÉ
c26b3f519a Add discovery schema for Matter CumulativeEnergyExported (#144061)
* Update sensor.py to add CumulativeEnergyExported attribute

* Report exported energy as positive value

* Add snapshot

* Add translation key
2025-05-07 15:25:18 +02:00
Franck Nijhof
999e930fc8 Bump version to 2025.5.0b10 2025-05-07 13:04:15 +00:00
Petar Petrov
d4e99efc46 Add more missing device_class translations for template helper (#144399) 2025-05-07 13:04:08 +00:00
Bram Kragten
fb01a0a9f1 Update frontend to 20250507.0 (#144398) 2025-05-07 13:04:07 +00:00
Robert Resch
9556285c59 Bump deebot-client to 13.1.0 (#144397) 2025-05-07 13:04:06 +00:00
Guido Schmitz
2d40b1ec75 Bump devolo_home_control_api to 0.19.0 (#144374) 2025-05-07 13:04:04 +00:00
Thomas55555
7eb690b125 Improve activity logic in Husqvarna Automower (#144057)
* Improve activity logic in Husqvarna Automower

* add test
2025-05-07 13:04:03 +00:00
Thomas55555
a23644debc Fix test in Husqvarna Automower (#144055) 2025-05-07 13:04:02 +00:00
epenet
2f7fcb4f5e Do not duplicate model and model_id in SamsungTV device info (#144402) 2025-05-07 14:50:18 +02:00
Robert Resch
c4e4c52c6c Bump deebot-client to 13.1.0 (#144397) 2025-05-07 14:36:28 +02:00
Bram Kragten
e6912b94df Update frontend to 20250507.0 (#144398) 2025-05-07 14:14:39 +02:00
epenet
704e4221f7 Improve SamsungTV ssdp test fixtures (#144376)
* Improve SamsungTV ssdp fixtures

* More

* More

* More

* More

* Improve
2025-05-07 14:13:38 +02:00
Petar Petrov
48a2dde16b Add more missing device_class translations for template helper (#144399) 2025-05-07 15:08:17 +03:00
Thomas55555
293e01f2e9 Improve activity logic in Husqvarna Automower (#144057)
* Improve activity logic in Husqvarna Automower

* add test
2025-05-07 13:12:10 +02:00
Guido Schmitz
e2820787bf Bump devolo_home_control_api to 0.19.0 (#144374) 2025-05-07 13:09:43 +02:00
Franck Nijhof
c98ba7f6ba Bump version to 2025.5.0b9 2025-05-07 11:09:32 +00:00
Joost Lekkerkerker
aa2b61f133 Fix variables in MELCloud (#144396) 2025-05-07 11:09:07 +00:00
Joost Lekkerkerker
f85d4afe45 Set SmartThings power energy state class to Total (#144395) 2025-05-07 11:09:06 +00:00
Joost Lekkerkerker
b4ab9177b8 Bump pySmartThings to 3.2.1 (#144393) 2025-05-07 11:09:05 +00:00
Petar Petrov
e7c310ca58 Add missing device_class translations for template helper (#144392) 2025-05-07 11:09:04 +00:00
Joost Lekkerkerker
85a83f2553 Fix SmartThings machine operating state with no options (#144390) 2025-05-07 11:09:02 +00:00
Martin Hjelmare
d2e7baeb38 Fix Z-Wave controller hard reset (#144389) 2025-05-07 11:09:01 +00:00
Barry vd. Heuvel
07b2ce28b1 Bump wh-python to 2025.4.29 for Weheat integration (#144384) 2025-05-07 11:09:00 +00:00
Joost Lekkerkerker
ed1eea9b50 Set SmartThings power energy state class to Total (#144395) 2025-05-07 13:06:53 +02:00
Wilbert
f7d8e4e7b9 Add typing to smartthings climate target_temperature_low (#143713)
Fix climate target_temperature_low
2025-05-07 13:06:07 +02:00
Joakim Sørensen
a2ab28286f Bump hass-nabucasa from 0.96.0 to 0.100.0 (#144341)
* Bump hass-nabucasa from 0.96.0 to 0.98.0

* Bump hass-nabucasa from 0.98.0 to 0.99.0

* Bump hass-nabucasa from 0.99.0 to 0.100.0
2025-05-07 13:05:56 +02:00
Barry vd. Heuvel
99f55665a5 Bump wh-python to 2025.4.29 for Weheat integration (#144384) 2025-05-07 13:04:46 +02:00
Joost Lekkerkerker
0aa817e300 Bump pySmartThings to 3.2.1 (#144393) 2025-05-07 13:00:19 +02:00
Petar Petrov
4cdb7a9887 Add missing device_class translations for template helper (#144392) 2025-05-07 12:55:43 +02:00
Joost Lekkerkerker
92a19357d3 Fix variables in MELCloud (#144396) 2025-05-07 12:55:28 +02:00
epenet
dded1305ec Cleanup old config flow IMPORT constants in samsungtv tests (#144394) 2025-05-07 12:40:01 +02:00
Joost Lekkerkerker
d6e85eef48 Fix SmartThings machine operating state with no options (#144390) 2025-05-07 12:37:53 +02:00
Martin Hjelmare
0b1875de14 Fix Z-Wave controller hard reset (#144389) 2025-05-07 13:32:27 +03:00
Joakim Sørensen
c5ef8659a7 Allow no_subscription repair issue in cloud (#144380) 2025-05-07 11:07:15 +02:00
epenet
9a332f19c2 Use runtime_data in hko (#144368) 2025-05-07 10:47:36 +02:00
Franck Nijhof
35c90d9bde Bump version to 2025.5.0b8 2025-05-07 07:38:18 +00:00
Raphael Hehl
a9632bd0ff Bump uiprotect to version 7.6.0 (#144369) 2025-05-07 07:38:12 +00:00
epenet
983e134ae9 Bump renault-api to 0.3.1 (#144366)
* Bump renault-api to 0.3.1

* Adjust tests
2025-05-07 07:38:10 +00:00
Jan Bouwhuis
e217532f9e Fix field validation for mqtt subentry options in sections (#144355) 2025-05-07 07:38:09 +00:00
Erik Montnemery
65ad39f5be Modify require_admin decorator to take parameters for Unauthorized (#144346) 2025-05-07 09:30:40 +02:00
Jan Bouwhuis
358d904c2c Fix field validation for mqtt subentry options in sections (#144355) 2025-05-07 09:24:51 +02:00
epenet
65278100a0 Remove entity name input from Samsung TV config flow (#144372) 2025-05-07 09:13:14 +02:00
Raphael Hehl
dbffd8c0ff Bump uiprotect to version 7.6.0 (#144369) 2025-05-07 09:11:31 +02:00
epenet
2a25dcd44e Bump renault-api to 0.3.1 (#144366)
* Bump renault-api to 0.3.1

* Adjust tests
2025-05-07 09:44:55 +03:00
markhannon
6e7f57383a Add switch entity to Zimi integration (#144236)
* Import switch.py

* Alignment to light.py

* Use default switch attributes

* Update homeassistant/components/zimi/switch.py

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-05-07 08:34:32 +02:00
John Hillery
946172d530 Bump nexia to 2.10.0 (#144363) 2025-05-06 23:23:06 -05:00
Brett Adams
2791329460 Use config location for Homelink in Teslemetry (#144171) 2025-05-06 23:45:07 +02:00
Franck Nijhof
1eeab28eec Bump version to 2025.5.0b7 2025-05-06 19:30:08 +00:00
Bram Kragten
2a3bd45901 Update frontend to 20250506.0 (#144354) 2025-05-06 19:29:59 +00:00
Paulus Schoutsen
d16453a465 Remove some media player intent checks for when paused (#144351) 2025-05-06 19:29:59 +00:00
Jan Bouwhuis
de63dddc96 Ensure all default MQTT subentry option values are saved (#144347)
* Ensure all default MQTT subentry option values are saved

* Apply correct filter
2025-05-06 19:29:58 +00:00
J. Nick Koston
ccffe19611 Bump bluemaestro-ble to 0.4.1 (#144345)
changelog: https://github.com/Bluetooth-Devices/bluemaestro-ble/compare/v0.4.0...v0.4.1

fixes #https://github.com/home-assistant/core/issues/144339
2025-05-06 19:29:57 +00:00
Martin Hjelmare
806bcf47d9 Fix Z-Wave migration flow to unload config entry before unplugging controller (#144343)
* Fix Z-Wave migration unload config entry before unplugging controller

* Remove typo
2025-05-06 19:29:56 +00:00
Paulus Schoutsen
320df710a4 Remove some media player intent checks for when paused (#144351) 2025-05-06 21:24:32 +02:00
Bram Kragten
76df7de0cf Update frontend to 20250506.0 (#144354) 2025-05-06 21:24:09 +02:00
Jan Bouwhuis
da7e9f3ab6 Ensure all default MQTT subentry option values are saved (#144347)
* Ensure all default MQTT subentry option values are saved

* Apply correct filter
2025-05-06 19:30:48 +02:00
epenet
a673bd7a91 Use runtime_data in here_travel_time (#144340) 2025-05-06 19:16:14 +02:00
J. Nick Koston
121e9e4e7f Bump aioesphomeapi to 30.2.0 (#144348) 2025-05-06 19:13:51 +02:00
J. Nick Koston
452e946509 Bump bluemaestro-ble to 0.4.1 (#144345)
changelog: https://github.com/Bluetooth-Devices/bluemaestro-ble/compare/v0.4.0...v0.4.1

fixes #https://github.com/home-assistant/core/issues/144339
2025-05-06 18:32:35 +03:00
Martin Hjelmare
c3ce82d874 Fix Z-Wave migration flow to unload config entry before unplugging controller (#144343)
* Fix Z-Wave migration unload config entry before unplugging controller

* Remove typo
2025-05-06 17:57:11 +03:00
epenet
253217958b Use runtime_data in google (#144331)
* Use runtime_data in google

* Quality scale
2025-05-06 07:55:04 -07:00
epenet
1447392847 Use runtime_data in guardian (#144344)
* Use runtime_data in guardian

* Adjust tests
2025-05-06 16:16:16 +02:00
epenet
32a6b8a0f8 Use runtime_data in goodwe (#144325) 2025-05-06 16:04:12 +02:00
Franck Nijhof
5ed3f18d70 Bump version to 2025.5.0b6 2025-05-06 13:57:05 +00:00
Martin Hjelmare
7cc142dd59 Fix Z-Wave to reload config entry after migration nvm restore (#144338) 2025-05-06 13:56:58 +00:00
Robert Resch
9150c78901 Add endpoint validation for AWS S3 (#144334) 2025-05-06 13:56:56 +00:00
Stefan Agner
4b7c337dc9 Update Home Assistant base image to 2025.05.0 (#144333) 2025-05-06 13:56:55 +00:00
Robert Resch
1aa79c71cc Rename S3 to AWS_S3 (#144324) 2025-05-06 13:56:54 +00:00
Robert Resch
5f70140e72 Revert "Disable S3 checksums" (#144092) (#144318) 2025-05-06 13:56:52 +00:00
Martin Hjelmare
58f7a8a51e Fix Z-Wave USB discovery to use serial by id path (#144314) 2025-05-06 13:56:51 +00:00
Ivan Lopez Hernandez
a91ae71139 Fixes #140182 by checking file status before sending the prompt. (#144131)
* Added unit tests

* Addressed review comments

* Fixed tests

* PR comments
2025-05-06 13:56:50 +00:00
Cerallin
576b4ef60d Bump xiaomi-ble to 0.38.0 (#143885) 2025-05-06 13:56:48 +00:00
Robert Resch
0ec7dc5654 Add endpoint validation for AWS S3 (#144334) 2025-05-06 15:54:42 +02:00
epenet
bdf6f7f590 Use config entry title to name SamsungTV entities (#144254) 2025-05-06 15:52:33 +02:00
epenet
fbae79fab2 Use runtime_data in google_assistant_sdk (#144335) 2025-05-06 15:52:00 +02:00
epenet
2c34712069 Move service definitions to separate module in guardian (#144306)
* Move service definitions to separate module in guardian

* docstring
2025-05-06 15:37:10 +02:00
Martin Hjelmare
40e3038775 Fix Z-Wave to reload config entry after migration nvm restore (#144338) 2025-05-06 15:26:45 +02:00
epenet
e2c02706a0 Use runtime_data in google_assistant (#144332) 2025-05-06 15:20:18 +02:00
Stefan Agner
313be7b30a Update Home Assistant base image to 2025.05.0 (#144333) 2025-05-06 14:49:47 +02:00
Jan Bouwhuis
d0ed8b67c4 Add MQTT button as entity platform on MQTT subentries (#144204) 2025-05-06 13:57:27 +02:00
epenet
deaaf2f082 Drop alias from local const DOMAIN import (#144312) 2025-05-06 13:35:27 +02:00
Robert Resch
ce95876d03 Rename S3 to AWS_S3 (#144324) 2025-05-06 13:29:37 +02:00
epenet
5475d7ef58 Use runtime_data in freebox (#144326) 2025-05-06 13:09:56 +02:00
epenet
687c74ee4c Remove deprecated freebox reboot service (#144303) 2025-05-06 12:21:48 +02:00
Simone Chemelli
c9a9488ff5 Manage unsupported sources on Samsung TV (#144221) 2025-05-06 12:20:04 +02:00
epenet
57217b46ed Use runtime_data in gogogate2 (#144322) 2025-05-06 12:14:46 +02:00
epenet
5a01521ff8 Use runtime_data in geonetnz_volcano (#144320) 2025-05-06 12:06:00 +02:00
Robert Resch
19a0a16915 Revert "Disable S3 checksums" (#144092) (#144318) 2025-05-06 12:01:27 +02:00
epenet
62877c2c58 Use runtime_data in geonetnz_quakes (#144319) 2025-05-06 11:58:25 +02:00
Joakim Sørensen
9479874bb4 Remove ThingTalk server configuration and related websocket command from cloud integration (#144301) 2025-05-06 11:49:44 +02:00
epenet
241b6a0170 Improve type hints in gc100 (#144308) 2025-05-06 11:01:46 +02:00
Arnie97
babc183834 Allow liter for gas sensor device class (#141518) 2025-05-06 10:59:09 +02:00
Joakim Sørensen
f3371bcf39 Add async_delete_repair_issue method to CloudClient (#144302) 2025-05-06 10:57:56 +02:00
epenet
33da5465bd Use runtime_data in gdacs (#144309) 2025-05-06 10:44:16 +02:00
epenet
5df3a9d76d Use runtime_data in geocaching (#144310) 2025-05-06 10:41:56 +02:00
Martin Hjelmare
ec4f4a4a1f Fix Z-Wave USB discovery to use serial by id path (#144314) 2025-05-06 11:33:58 +03:00
Jan Bouwhuis
46df29b390 Add MQTT binary_sensor as entity platform on MQTT subentries (#144142)
Add MQTT binary_sensor subentry support
2025-05-06 10:23:19 +02:00
epenet
60846434d3 Invert DOMAIN alias in telegram (#144313) 2025-05-06 10:05:12 +02:00
epenet
66c86c0461 Drop alias from local DOMAIN import (#144311) 2025-05-06 09:55:57 +02:00
Cerallin
73996fb916 Bump xiaomi-ble to 0.38.0 (#143885) 2025-05-06 09:55:43 +02:00
Ivan Lopez Hernandez
0edfbded23 Fixes #140182 by checking file status before sending the prompt. (#144131)
* Added unit tests

* Addressed review comments

* Fixed tests

* PR comments
2025-05-05 23:45:39 -07:00
Norbert Rittel
212c3ddcca Use international English spelling for "authorization" in reolink (#144305)
Use international English for "authorization" in `reolink`
2025-05-06 08:34:40 +02:00
Paulus Schoutsen
918499a85c Bump version to 2025.5.0b5 2025-05-06 02:54:14 +00:00
Jamin
46ef578986 Bump VoIP utils to 0.3.2 (#144298) 2025-05-06 02:54:01 +00:00
Pete Sage
86162eb660 Rehlko adjust timeouts for coordinator polls (#144297) 2025-05-06 02:54:00 +00:00
Jan Bouwhuis
7f7a33b027 Fix mqtt subentry device name is not required but should be (#144289)
Fix mqtt subentry device name is not required
2025-05-06 02:53:59 +00:00
Michael
867df99353 Fix un-/re-load of Feedreader integration (#144285)
fix unload platforms call
2025-05-06 02:53:58 +00:00
Martin Hjelmare
283e9d073b Fix Z-Wave config flow forms (#144279) 2025-05-06 02:53:57 +00:00
Jan Bouwhuis
38f26376a1 Fix default entity name not the device default entity when no name set on MQTT subentry entity (#144263) 2025-05-06 02:53:56 +00:00
Jamin
0322dd0e0f Improve Voip pipeline stability (#137620)
* Improve Voip pipeline stability

It appears the pipeline is being unexpectedly cancelled in some
instances. In order to mitigate this issue hang ups will be detected
using a separate task rather than relying on timeouts in the STT read
method. Also reading STT events will be retried once if it is cancelled.
The pipeline will also catch and log any CancelledErrors to help with
further debugging.

* Update Voip tests

* Remove unnecessary changes

Remove unnecessary logging and cancelled error handling in wyoming STT.

* Remove comment about clearing system prompt

The test no longer checks for clearing the system prompt. Since that
logic exists completely in the assist_satellite component I think it is
reasonable to only test that logic in the unit tests for that component.

* Re-raise cancellation

Re-raise CancelledError if the current task is cancelling in the check hangup task

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

* Re-raise CancelledError in pipeline as well

* Fix formatting issue

* Remove unnecessary logging

* Add MockResultStream import to tests

This was presumably missed while merging

* Cancel check hangup task on disconnect

* Add myself as codeowner for VoIP

* Update CODEOWNERS

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-05-06 02:53:55 +00:00
Jamin
edcb090209 Bump VoIP utils to 0.3.2 (#144298) 2025-05-05 22:50:46 -04:00
Michael
92010e1fca Fix un-/re-load of Feedreader integration (#144285)
fix unload platforms call
2025-05-05 22:39:25 -04:00
Jan Bouwhuis
12f9a11716 Fix mqtt subentry device name is not required but should be (#144289)
Fix mqtt subentry device name is not required
2025-05-05 22:39:03 -04:00
Pete Sage
0dd21f4c89 Rehlko adjust timeouts for coordinator polls (#144297) 2025-05-05 21:37:54 -05:00
Jamin
14f967cdd0 Improve Voip pipeline stability (#137620)
* Improve Voip pipeline stability

It appears the pipeline is being unexpectedly cancelled in some
instances. In order to mitigate this issue hang ups will be detected
using a separate task rather than relying on timeouts in the STT read
method. Also reading STT events will be retried once if it is cancelled.
The pipeline will also catch and log any CancelledErrors to help with
further debugging.

* Update Voip tests

* Remove unnecessary changes

Remove unnecessary logging and cancelled error handling in wyoming STT.

* Remove comment about clearing system prompt

The test no longer checks for clearing the system prompt. Since that
logic exists completely in the assist_satellite component I think it is
reasonable to only test that logic in the unit tests for that component.

* Re-raise cancellation

Re-raise CancelledError if the current task is cancelling in the check hangup task

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

* Re-raise CancelledError in pipeline as well

* Fix formatting issue

* Remove unnecessary logging

* Add MockResultStream import to tests

This was presumably missed while merging

* Cancel check hangup task on disconnect

* Add myself as codeowner for VoIP

* Update CODEOWNERS

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-05-05 20:25:52 -04:00
Norbert Rittel
f3b23afc92 Change "recognized" to international English spelling in hive (#144284)
Change "recognized" to international English in `hive`
2025-05-06 00:15:24 +03:00
Jan Bouwhuis
0bf807b96e Fix default entity name not the device default entity when no name set on MQTT subentry entity (#144263) 2025-05-05 21:26:56 +02:00
Martin Hjelmare
1879b8c27f Fix Z-Wave config flow forms (#144279) 2025-05-05 15:02:20 -04:00
Paulus Schoutsen
3798802557 Bump version to 2025.5.0b4 2025-05-05 14:51:20 -04:00
Paul Bottein
f7833bdbd4 Update frontend to 20250502.1 (#144276) 2025-05-05 14:51:14 -04:00
Josef Zweck
e3a156c9b7 Bump pylamarzocco to 2.0.0 (#144275) 2025-05-05 14:51:13 -04:00
Luke Lashley
6247ec73a3 Bump Roborock Map Parser to 0.1.4 (#144260)
Bump to 0.1.4
2025-05-05 14:51:12 -04:00
Luke Lashley
3feda06e60 Bump python-roborock to 2.18.2 (#144235) 2025-05-05 14:51:11 -04:00
Åke Strandberg
56e895fdd4 Remove program phase sensor from miele vacuum robot (#144257)
* Use device class transation

* Remove program pghses sensor from robot vacuum cleaner
2025-05-05 14:49:10 -04:00
tronikos
541506cbdb Fix Invalid statistic_id for Opower: National Grid (#144243)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-05-05 14:49:09 -04:00
Allen Porter
1f4cda6282 Bump ical to 9.2.0 (#144240) 2025-05-05 14:49:08 -04:00
Allen Porter
6f77d0b0d5 Update local calendar to process calendar events in the executor (#144233) 2025-05-05 14:49:07 -04:00
Allen Porter
7976e1b104 Update remote calendar to do all event handling in an executor (#144232) 2025-05-05 14:49:05 -04:00
Eliz
1c260cfb00 Fix missing head forwarding in ingress (#144231)
* Add support for connect, head and trace in ingress

* added tests

* update the testutil

* fix

* fix empty space

* removed connect

* remove trace
2025-05-05 14:49:04 -04:00
Allen Porter
8424f179e4 Fix Office 365 calendars to be compatible with rfc5545 (#144230) 2025-05-05 14:49:03 -04:00
Pete Sage
00a14a0824 bump aiokem to 0.5.10 (#144203) 2025-05-05 14:49:02 -04:00
Pete Sage
34bec1c50f Avoid delaying HA startup in Rehlko (#144202) 2025-05-05 14:49:01 -04:00
tronikos
1d0c520f64 Use names instead of statistic IDs in the Opower repair issue (#144018)
* Use names instead of statistic IDs in the Opower repair issue

* target_ids
2025-05-05 14:49:00 -04:00
Luca De Petrillo
d51eda40b3 Fix message corruption in picotts component (#141182) 2025-05-05 14:48:59 -04:00
Paul Bottein
e3ed9fac78 Update frontend to 20250502.1 (#144276) 2025-05-05 14:47:15 -04:00
Josef Zweck
b98a27d3d0 Bump pylamarzocco to 2.0.0 (#144275) 2025-05-05 20:43:51 +02:00
Eliz
c73383ded3 Fix missing head forwarding in ingress (#144231)
* Add support for connect, head and trace in ingress

* added tests

* update the testutil

* fix

* fix empty space

* removed connect

* remove trace
2025-05-05 19:11:41 +02:00
Erik Montnemery
36a08d04c5 Fail tests which JSON serialize mocks (#144261)
* Fail tests which JSON serialize mocks

* Patch JSON helper earlier

* Check type instead of attribute
2025-05-05 19:06:54 +02:00
Åke Strandberg
8a95fffbab Remove program phase sensor from miele vacuum robot (#144257)
* Use device class transation

* Remove program pghses sensor from robot vacuum cleaner
2025-05-05 18:41:45 +02:00
Erik Montnemery
633c770a48 Fix matter mocks (#144271) 2025-05-05 17:59:57 +02:00
Erik Montnemery
826d28974b Fix fibaro mocks (#144270) 2025-05-05 17:59:50 +02:00
Erik Montnemery
135df5a24e Fix palazzetti mocks (#144268) 2025-05-05 17:59:17 +02:00
Erik Montnemery
2e8e13bffb Fix velbus mocks (#144267) 2025-05-05 17:59:08 +02:00
Erik Montnemery
5e8def837e Fix imeon_inverter mocks (#144266) 2025-05-05 17:58:58 +02:00
Erik Montnemery
14735cce26 Fix deako mocks (#144265) 2025-05-05 17:58:48 +02:00
Erik Montnemery
d775e443f8 Fix balboa mocks (#144264) 2025-05-05 17:58:39 +02:00
Luke Lashley
aa8dfa760d Bump Roborock Map Parser to 0.1.4 (#144260)
Bump to 0.1.4
2025-05-05 07:40:48 -07:00
tronikos
0043b18135 Use names instead of statistic IDs in the Opower repair issue (#144018)
* Use names instead of statistic IDs in the Opower repair issue

* target_ids
2025-05-05 08:36:58 -04:00
Luca De Petrillo
c14ddedfae Fix message corruption in picotts component (#141182) 2025-05-05 14:30:36 +02:00
Markus Jacobsen
a073a6b01e Fix hassfest expecting strings file for custom components (#135789)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Robert Resch <robert@resch.dev>
2025-05-05 14:23:02 +02:00
epenet
0713ac4977 Cleanup invalid CONF_ID from samsungtv tests (#144252) 2025-05-05 13:47:07 +02:00
Allen Porter
3390dc0dbb Fix Office 365 calendars to be compatible with rfc5545 (#144230) 2025-05-05 13:13:08 +02:00
dependabot[bot]
445b38f25d Bump github/codeql-action from 3.28.16 to 3.28.17 (#144245)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.16 to 3.28.17.
- [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.16...v3.28.17)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.17
  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-05-05 12:51:19 +02:00
John Hillery
9e4a20c267 Bump nexia to 2.9.0 (#144153)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Robert Resch <robert@resch.dev>
2025-05-05 11:40:37 +01:00
epenet
d88cd72d13 Move more SamsungTV test constants to fixture files (#144249)
* Add SSDP fixtures to SamsungTV

* Adjust

* Improve

* Improve
2025-05-05 11:58:24 +02:00
tronikos
66b2e06cd3 Fix Invalid statistic_id for Opower: National Grid (#144243)
Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-05-05 11:35:32 +02:00
Michael
58906008b9 Add last attempted automatic backup sensor (#144194)
add last_attempted_automatic_backup sensor
2025-05-05 10:39:06 +02:00
Ville Skyttä
aa062515b8 Remove unused huawei_lte YAML schemas, error out on YAML config (#144217) 2025-05-05 10:46:30 +03:00
Norbert Rittel
65da1e79b9 Change some strings to international English in fronius (#144244)
Change to international English in `fronius`
2025-05-05 10:39:23 +03:00
Brett Adams
41ecb24135 Set api type more specifically in Teslemetry (#144178)
* Set api type more specifically

* remove extra spacing

* Fix class after rebase

---------

Co-authored-by: Allen Porter <allen@thebends.org>
2025-05-04 21:54:00 -07:00
Brett Adams
e3b3c32751 Add valet switch to Teslemetry (#144167)
* Add valet switch

* Add snapshot
2025-05-05 06:28:01 +02:00
Allen Porter
e2a8137140 Bump ical to 9.2.0 (#144240) 2025-05-04 23:40:49 -04:00
Allen Porter
fa6a2f08ab Update remote calendar to do all event handling in an executor (#144232) 2025-05-04 23:07:02 -04:00
Allen Porter
68d62ab58e Update local calendar to process calendar events in the executor (#144233) 2025-05-04 23:06:27 -04:00
Allen Porter
c6b9a40234 Increase the local calendar update interval to avoid re-parsing the calendar state unnecessarily (#144234) 2025-05-04 23:05:33 -04:00
Luke Lashley
e0916fdd26 Change roborock to use home_data_v3 (#144238) 2025-05-04 20:02:32 -07:00
Luke Lashley
cad2d72ed9 Bump python-roborock to 2.18.2 (#144235) 2025-05-04 16:59:49 -07:00
Norbert Rittel
8eaddbf2b2 Replace "log-in" with "log in" in zwave_me (#144223) 2025-05-04 21:56:33 +03:00
Norbert Rittel
9b30f32cad Replace "Sign-in …" with "Sign in …" in ring (#144222)
The config flow titles in Home Assistant use verbs by default ("Set up …" / "Configure …" / "Select …" etc.

Therefore "Sign-in …" (noun) for the initial setup in `ring` is replaced with "Sign in …" (verb).
2025-05-04 21:12:01 +03:00
Norbert Rittel
c2a69bcb20 Improve user-facing strings of blink (#144219)
- treat "sign in" as verb for consistency, removing the hyphen
- fix sentence-casing of two strings
2025-05-04 20:36:57 +03:00
Norbert Rittel
2e7b60c3ca Fix spelling of "sign in" and "setup" in verisure (#144214)
- use "sign in" for the verb
- use "setup" for the noun
- fix sentence-casing of "Verification code"
2025-05-04 20:36:24 +03:00
Norbert Rittel
eca811d0d4 Fix sentence-casing in user-facing strings of tami4 (#144212)
Fix sentence-casing in user-facing string of `tami4`
2025-05-04 20:35:59 +03:00
Norbert Rittel
8e202bc202 Improve the user-facing strings of heos (#144218) 2025-05-04 12:13:53 -05:00
J. Nick Koston
429682cecd Remove unnecessary intermediate functions in entry_data for ESPHome (#144173) 2025-05-04 11:42:07 -05:00
Pete Sage
9cd2080de2 Avoid delaying HA startup in Rehlko (#144202) 2025-05-04 11:41:39 -05:00
Pete Sage
2960271b81 bump aiokem to 0.5.10 (#144203) 2025-05-04 11:15:01 -05:00
Paulus Schoutsen
2d3259413a Bump version to 2025.5.0b3 2025-05-04 16:11:29 +00:00
Paulus Schoutsen
7a7bd9c621 Fix intent TurnOn creating stack trace for buttons (#144205) 2025-05-04 16:11:22 +00:00
Maciej Bieniek
8ce0b6b4b3 Add missing pollen category to AccuWeather (#144185)
* Add extreme level to pollen map

* Sort

* Sort
2025-05-04 16:11:21 +00:00
hahn-th
63679333cc Bump homematicip to 2.0.1.1 (#144182)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-05-04 16:11:20 +00:00
Marc Mueller
5b12bdca00 Fix licenses check for setuptools (#144181) 2025-05-04 16:11:18 +00:00
Åke Strandberg
99e13278e3 Bump pymiele to 0.4.3 (#144176)
* Use device class transation

* Bump pymiele to 0.4.3

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-05-04 16:11:17 +00:00
Paulus Schoutsen
07a03ee10d Point thumbnail TTS media source to right logo (#144162) 2025-05-04 16:11:16 +00:00
J. Nick Koston
fb9f8e3581 Bump zeroconf to 0.147.0 (#144158) 2025-05-04 16:11:15 +00:00
J. Nick Koston
ee125cd9a4 Bump habluetooth to 3.48.2 (#144157) 2025-05-04 16:11:14 +00:00
Josef Zweck
35a1429e2b Switch to common clientsession for lamarzocco (#144137) 2025-05-04 16:11:13 +00:00
J. Nick Koston
89916b38e9 Add tests to ensure ESPHome entity_ids are preserved on upgrade (#144116) 2025-05-04 16:11:10 +00:00
tronikos
c560439545 Skip the update right after the migration in Opower (#144088)
* Wait for the migration to finish in Opower

* Don't call async_block_till_done since this can timeout and seems to meant for tests

* Don't call async_block_till_done since this can timeout and seems to meant for tests
2025-05-04 16:11:10 +00:00
Charlie Rusbridger
7322be2006 Use kodi posters, fall back to thumbnails if unavailable. (#144066) 2025-05-04 16:11:08 +00:00
Florian Sabonchi
e95ed12ba1 Fix check for locked device in AVM Fritz!SmartHome (#141697)
* feat: raise execption on hvac mode while device is locked

* fix: test for setting hvac mode while device is locked.

* feat: update translation

* feat: add separate translations for HVAC and temperature

* fix: test cases

* fix: test cases for test_set_preset_mode_boost

* rev: code review

* rev: exception string

* feat: updated  error message and added helper function

* Update homeassistant/components/fritzbox/strings.json

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

* fix: translation key

* remove check_active_or_lock_mode from async_set_preset_mode

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2025-05-04 16:11:07 +00:00
Paulus Schoutsen
8048d2bfb8 Fix intent TurnOn creating stack trace for buttons (#144205) 2025-05-04 09:00:40 -07:00
Norbert Rittel
490bb46a82 Make spelling of "Auto-charge" switch consistent in TechnoVE (#144206)
* Make spelling of "Auto-charge" switch consistent in TechnoVE

Also fix sentence-casing in "Charging enabled" switch.

* Update test_switch.ambr
2025-05-04 18:56:25 +03:00
Norbert Rittel
1199353204 Fix sentence-casing of "Phone number" in peco (#144208) 2025-05-04 18:55:58 +03:00
Oliver
2c368c79d1 Update denonavr to 1.1.0 (#144199) 2025-05-04 16:41:44 +02:00
Michael Hannon
095318114b Add Zimi Cloud Connect Integration (#129876)
* Give entry unique id with MAC, strings.json tweaks

* Update codeowners

* Add config_flow tests

* Update requirements

* Update homeassistant/components/zimi/__init__.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Store controller reference in entry.runtime_data instead of hass.data

* Add typing

* Removed hass data pop on unload.  (No longer needed when hass data moved for runtime_data)

* Refactor config_flow based on feedback from @zweckj with inline validation, simpler defaults, better description data

* Add Michael to codeowners

* Remove manual debug override in entity

* Populate via_device

* remove empty keys from manifest.json

* Refactor with DataUpdateCoordinator
Device Entities use existing push update method

* set via_device to match zcc identifier

* Changed logger to use debug level

* Define the zimi constants

* Move extraaneous code out from try

* Move __del__ to async_wil_remove_from_hass

* Use zcc device for name

* Print debug if mac mismatch
Add final exception if api is not ready after connect

* Re-work configuration flow:
1. Remove unused CONF_TIMEOUT, CONF_VERBOSITY and CONF_WATCHDOG
2. Move connect() logic out of ZimiCoordinator
3. Add fast connect check during ConfigFlow to check mac matches
4. Use zcc version 3.2.3 with default watchdog time value (and remove this from HA)

* Add error detail to mac mismatch

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/const.py

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

* Update homeassistant/components/zimi/coordinator.py

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

* Update homeassistant/components/zimi/coordinator.py

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

* Update homeassistant/components/zimi/light.py

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

* Remove coordinator and move setup to __init__

* Set name in _attr_name

* Use _light directly for status etc; Remove _state and _brightness; SImplify update()

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* No need to delete device, fix return

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

* Remove non-failing items from try
Abort duplicate configurations

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

* Move attr change to notify

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

* Update homeassistant/components/zimi/__init__.py

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

* Remove superflous defalt

* Update homeassistant/components/zimi/light.py

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

* Update homeassistant/components/zimi/light.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Move aysnc_connect_to_controller to helpers.py

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

* Invert if api

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

* Update homeassistant/components/zimi/config_flow.py

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

* Added ZimiConfigEntry to type runtime_data correctly.
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

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

* Invert error logic for cleaner flow
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>

* Add ZimiDimmer class

* Set colour_mode only in ZimiDimmer

* Use device name instead of entity name
Update deviceinfo for zcc
Update deviceinfo for lights
More ZimiDimmer and ZimiLight cleanup

* Update homeassistant/components/zimi/__init__.py

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

* Update homeassistant/components/zimi/__init__.py

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

* Add missing import for CONNECTION_NETWORK_MAC

* @mhannon11 Fixed some minor style changes BUT these tests need re-working now that the config_flow has a second call to the zcc helper to check the API.   The tests as written now fail with connect_fail

* Remove some code from try

* Moved static items from initialiser

* Remove superflous assert when unloading entry

* refactor - move title out of data

* One call to async_add_entities
Update ZimiDimmer to initialise color_modes after calling super()

* Create ZimiEntity base class
(as ToggleEntity)

* Updated test of config_flow

* Move api_mock parameters to test cases

* Much improved tests

* Test for input value mismatch and then recovery of flow

* Import FlowResultType

* Implement Entities event setup correctly

* Initial quality_scale.yml

* Update homeassistant/components/zimi/quality_scale.yml

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

* Update homeassistant/components/zimi/manifest.json

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

* Add link to zcc repo

* Update homeassistant/components/zimi/entity.py

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

* Update homeassistant/components/zimi/entity.py

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

* Removed unecessary f-strings

* Filled in all of the quality scale

* Updated in line with latest documentation improvements

* FIx missing import for Entity

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/strings.json

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

* Simplify logger and throw

* Update homeassistant/components/zimi/helpers.py

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

* Re-factor config_flow with multi-stage steps

* Add comments to notify

* Don't set hw_version

* Update homeassistant/components/zimi/light.py

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

* Update homeassistant/components/zimi/light.py

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

* Update homeassistant/components/zimi/quality_scale.yml

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

* mark docs-troubleshooting done

* Update with zcc-helper version supporting PEP 625 sdist rules on PyPi

* Comment re characteristic ID

* Pulls in latest zcc that closes UDP listening port correctly after discovery timeout

* Re-factored config_flow

1. Try discovery and auto-populate
2. Try manual configuration (with optional values for port and mac)

In most cases, auto-discovery does it all.

Discovery will only fail if UDP broadcast is not possible to/from zcc.

* Do not show error message if discovery fails

* Refactor with self.data and async_show_step_finish()

* Update homeassistant/components/zimi/light.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/quality_scale.yml

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

* Update homeassistant/components/zimi/quality_scale.yml

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

* Update homeassistant/components/zimi/entity.py

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

* Update homeassistant/components/zimi/light.py

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

* refactor import to use ConfigFlow

* Change status for discovery

* Add dynamic title to config flow

* string

* Revert title from form but add IP:port to static title

* Automatically finish configuration if possible, if not show form

* Use StrEnum instead of Exception class

* Remove MAC from user forms

* Disconnect api before form completion

* Assign to self.mac instead of returning as detail

* Updated test suite

* Update test status

* mark action exemptions todo

* Remove mac related error cases from flow completely

* Remove unused MAC error strings

* Moved error details to logs
Removed _error_tuple
Removed error details

* Update homeassistant/components/zimi/config_flow.py

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

* rename check_errors

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update zcc-helper and support HA devices via zcc manufacter_info fields

* Partial implementation - Use updated zcc-helper to discover multiple controllers

* Config_flow with support for auto-discovery of one or more zcc or fallback to manual configuration.

* Don't re-connect to api if validate_connection already did

* Make fast=False is used for creation

* Pull in improved zcc_helper version to address data completeness after machine_info implementation

* Update homeassistant/components/zimi/config_flow.py

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

* Import and use ConfigFlowResult

* Latest zcc to fix discovers() return value bug

* Update config_flow.py

* Update homeassistant/components/zimi/manifest.json

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

* Use latest release version of 3.3 (no changes to rc4)

* Improved sentence casing

* Update strings.json

* Update homeassistant/components/zimi/entity.py

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

* Remove superflous logging
Use Zimi network_name as ZCC name
Cleanup device info inputs

* Remove __del__

* Rename arguments

* Update homeassistant/components/zimi/config_flow.py

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

* Move PLATFORMS to init

* Update homeassistant/components/zimi/light.py

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

* Remove debug at init

* Update homeassistant/components/zimi/helpers.py

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

* Remove _attr_has_entity = False

* More naming changes

* Revised config_flow to use zcc-helper for validation using new zcc-helper version

* Update homeassistant/components/zimi/__init__.py

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

* Update homeassistant/components/zimi/__init__.py

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

* Removed commented enum

* s/_entity/_device/g

* Update homeassistant/components/zimi/entity.py

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

* Update homeassistant/components/zimi/helpers.py

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

* Don't log error when raising exception

* Updated tests for new config_flow

* Refactor with new zcc that uses Exception classes to pass errors

* Updated tests for config_flow to use Exceptions

* Device name is based on model

* Device name is None

Maps better to ZCC concept where devices do not have a name but the individual entities have names.

* Fix quality filename

* Bump zcc-helper to 3.4 release version

* Remove name override

* Bump zcc-helper to 3.4.1 with new device_name attribute used to populate devinfo

* Update homeassistant/components/zimi/light.py

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

* Add missing transalation picked up by CI

* Update homeassistant/components/zimi/light.py

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

* Bump zcc-helper to only classify light and dimmer controlPointType as lights

* Bump to non dev version of zcc-helper

* Ruff fixes

* Add missing data description for pytest

* Remove confusing comment

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/const.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/config_flow.py

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

* Update homeassistant/components/zimi/const.py

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

* Update homeassistant/components/zimi/const.py

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

* Update homeassistant/components/zimi/strings.json

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

* Update homeassistant/components/zimi/strings.json

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

* Update tests/components/zimi/test_config_flow.py

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

* Update homeassistant/components/zimi/light.py

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

* f-strings

* Update tests/components/zimi/test_config_flow.py

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

* Update tests/components/zimi/test_config_flow.py

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

* Assert result type, step and errors between each step

* test for duplicate entry

* Update tests/components/zimi/test_config_flow.py

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

* Update tests/components/zimi/test_config_flow.py

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

* Update tests/components/zimi/test_config_flow.py

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

* Update tests/components/zimi/test_config_flow.py

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

* Update tests/components/zimi/test_config_flow.py

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

* Remove duplicate test for discovery failure

* Calculate brightness

* Don't re-raise Exception in helper

* Fix ruff and mypi errors

* Add tests for missing connection exceptions

* Added standard invalid_host and timeout strings

* Explain limitations in discovery.

* Update quality_scale.yaml

* Update quality_scale.yaml

* Removed duplicate strings with reference

---------

Co-authored-by: markhannon <mark.hannon@gmail.com>
Co-authored-by: Josef Zweck <24647999+zweckj@users.noreply.github.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-05-04 15:58:32 +02:00
Norbert Rittel
9e388f5b13 Fix spelling of "comma-separated (network addresses)" in nmap_tracker (#144197) 2025-05-04 15:21:06 +03:00
Brett Adams
87fab1fa14 Rename classes in Teslemetry (#144179) 2025-05-04 14:18:39 +02:00
Brett Adams
8046684179 Update models const in Teslemetry (#144175) 2025-05-04 13:44:56 +02:00
Brett Adams
5a475ec7ea Improve typing of binary sensors in Teslemetry (#144169) 2025-05-04 13:42:25 +02:00
Brett Adams
8c6edd8b81 Add better typing to Teslemetry switch platform (#144168) 2025-05-04 13:41:45 +02:00
Brett Adams
de496c693e Add hazard lights binary sensor to Teslemetry (#144166) 2025-05-04 13:36:13 +02:00
Norbert Rittel
cb37d4d36a Fix spelling of "comma-separated (list / event name)" in doorbird (#144190) 2025-05-04 13:09:31 +03:00
Norbert Rittel
2aa82da615 Fix spelling of "comma-separated (list)" in huawei_lte (#144189) 2025-05-04 13:09:09 +03:00
Maciej Bieniek
04982f5e12 Add missing pollen category to AccuWeather (#144185)
* Add extreme level to pollen map

* Sort

* Sort
2025-05-04 13:08:07 +03:00
Norbert Rittel
b9e11b0f45 Fix spelling of "comma-separated" and "IP address" in cast (#144188) 2025-05-04 13:07:30 +03:00
hahn-th
1e0d1c46ab Bump homematicip to 2.0.1.1 (#144182)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-05-04 12:07:18 +02:00
Norbert Rittel
b5d499dda8 Fix spelling of "comma-separated (list)" in fritzbox_callmonitor (#144191)
Also fix one missing sentence-casing in corresponding "title" string.
2025-05-04 13:06:46 +03:00
Åke Strandberg
d1615f9a6e Bump pymiele to 0.4.3 (#144176)
* Use device class transation

* Bump pymiele to 0.4.3

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-05-04 11:30:37 +02:00
Marc Mueller
516a3c0504 Fix licenses check for setuptools (#144181) 2025-05-04 11:02:11 +03:00
J. Nick Koston
2a5c0d9b88 Add support for updating ESPHome deep sleep devices (#144161)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2025-05-03 20:50:17 -05:00
J. Nick Koston
a15a3c12d5 Pass requestor_uuid to bond API calls (#144128) 2025-05-03 20:40:28 -04:00
J. Nick Koston
a6131b3ebf Bump habluetooth to 3.48.2 (#144157) 2025-05-03 18:22:48 -05:00
Paulus Schoutsen
b9aadb252f Point thumbnail TTS media source to right logo (#144162) 2025-05-03 17:21:22 -04:00
J. Nick Koston
1264c2cbfa Bump zeroconf to 0.147.0 (#144158) 2025-05-03 14:21:03 -05:00
tronikos
716b559e5d Skip the update right after the migration in Opower (#144088)
* Wait for the migration to finish in Opower

* Don't call async_block_till_done since this can timeout and seems to meant for tests

* Don't call async_block_till_done since this can timeout and seems to meant for tests
2025-05-03 15:12:01 -04:00
Charlie Rusbridger
30e4264aa9 Use kodi posters, fall back to thumbnails if unavailable. (#144066) 2025-05-03 15:10:33 -04:00
Michael
fb94f8ea18 Make the network device tracking feature optional in AVM Fritz!Tools (#144149)
* make the network device tracking feature optional

* fix doc strings

* Apply suggestions from code review

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

---------

Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-05-03 21:04:59 +02:00
Florian Sabonchi
aea5760424 Fix check for locked device in AVM Fritz!SmartHome (#141697)
* feat: raise execption on hvac mode while device is locked

* fix: test for setting hvac mode while device is locked.

* feat: update translation

* feat: add separate translations for HVAC and temperature

* fix: test cases

* fix: test cases for test_set_preset_mode_boost

* rev: code review

* rev: exception string

* feat: updated  error message and added helper function

* Update homeassistant/components/fritzbox/strings.json

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

* fix: translation key

* remove check_active_or_lock_mode from async_set_preset_mode

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2025-05-03 20:25:27 +02:00
Jan Bouwhuis
debec3bfbc Improve supported color modes description (#144144) 2025-05-03 17:13:43 +01:00
J. Diego Rodríguez Royo
4122f94fb6 Add DHCP discovery to Home Connect (#144095)
* Add DHCP discovery to Home Connect

* Added tests

* Use enums

* Use more enums
2025-05-03 17:16:02 +02:00
J. Nick Koston
b48a2cf2b5 Add tests to ensure ESPHome entity_ids are preserved on upgrade (#144116) 2025-05-03 10:12:37 -05:00
Shay Levy
0ca9ad1cc0 Mark Shelly docs-data-update as done (#144151) 2025-05-03 16:17:37 +02:00
Shay Levy
ee555a3700 Mark Shelly icon-translations as done (#144148) 2025-05-03 17:08:34 +03:00
Josef Zweck
a2bc3e3908 Switch to common clientsession for lamarzocco (#144137) 2025-05-03 14:44:18 +02:00
Thomas55555
64b7f2c285 Improve select platform in Husqvarna Automower (#144117) 2025-05-03 15:39:46 +03:00
Marc Mueller
db2435dc36 Fix litterrobot entity typing (#144147) 2025-05-03 14:35:17 +02:00
Marc Mueller
1d500fda67 Fix fritz coordinator typing (#144146) 2025-05-03 14:35:04 +02:00
Paulus Schoutsen
16f36912db Bump version to 2025.5.0b2 2025-05-03 08:06:31 -04:00
J. Nick Koston
2a5f031ba5 Bump Bluetooth deps to improve auto recovery process (#144133) 2025-05-03 08:06:23 -04:00
J. Nick Koston
71bb8ae529 Bump bleak-esphome to 2.15.1 (#144129) 2025-05-03 08:06:22 -04:00
J. Nick Koston
f6a94d0661 Bump PyISY to 3.4.1 (#144127) 2025-05-03 08:06:21 -04:00
Marc Hörsken
c2575735ff Update pywmspro to 0.2.2 to make error handling more robust (#144124) 2025-05-03 08:06:20 -04:00
Josef Zweck
7eee5ecd9a Fix intermittent unavailability for lamarzocco brew active sensor (#144120)
* Fix brew active intermittent unavailability for lamarzocco

* Whitespaces
2025-05-03 08:06:19 -04:00
Thomas55555
db0cf9fbf4 Bump aioautomower to 2025.5.1 (#144118) 2025-05-03 08:06:18 -04:00
J. Nick Koston
aded44ee0f Bump aiodns to 3.3.0 (#144115) 2025-05-03 08:06:17 -04:00
Bram Kragten
901926e8e6 Update frontend to 20250502.0 (#144114) 2025-05-03 08:06:16 -04:00
Pete Sage
2e336626ac bump aiokem to 0.5.9 (#144098)
fix: bump aiokem to 0.5.9
2025-05-03 08:06:15 -04:00
Tomáš Bedřich
3ea3d77f4d Disable S3 checksums (#144092)
Disable S3 checksums (#143995)
2025-05-03 08:06:14 -04:00
Jan Bouwhuis
fe8e7b73bf Fix small issues with mqtt translations and improve readability (#144091) 2025-05-03 08:06:13 -04:00
J. Nick Koston
a34065ee2f Only create a single resolver object if there are multiple aiohttp sessions (#144090) 2025-05-03 08:06:12 -04:00
Brett Adams
e1a908c8ac Bump teslemetry-stream to 0.7.7 (#144085) 2025-05-03 08:06:11 -04:00
Ian
628d99886a Bump py-nextbusnext to 2.1.2 (#144081)r
Bump py-nextbusnext version

Fixes #144059
2025-05-03 08:06:09 -04:00
Åke Strandberg
6b10710484 Improve naming of miele freezers and fridges (#144062)
* Use device class transation

* Improve naming of miele freezers and fridges

* Address review

* Address review comment

* Simplify
2025-05-03 08:06:08 -04:00
Andreas Kölsch
8a4f28fa94 Fix brightness calculation when using brightness_step_pct (#143786) 2025-05-03 08:06:07 -04:00
Jan Bouwhuis
558b0ec3b1 Fix small issues with mqtt translations and improve readability (#144091) 2025-05-03 11:51:26 +02:00
J. Nick Koston
9780db1c22 Bump Bluetooth deps to improve auto recovery process (#144133) 2025-05-03 10:09:28 +02:00
J. Nick Koston
5e39fb6da1 Bump bleak-esphome to 2.15.1 (#144129) 2025-05-03 10:08:56 +02:00
J. Nick Koston
4450f919c3 Bump PyISY to 3.4.1 (#144127) 2025-05-02 17:46:59 -05:00
Marc Hörsken
3183bb78ff Update pywmspro to 0.2.2 to make error handling more robust (#144124) 2025-05-03 00:16:49 +02:00
J. Nick Koston
e74f918382 Bump aiodns to 3.3.0 (#144115) 2025-05-02 15:53:19 -05:00
Thomas55555
247d2e7efd Bump aioautomower to 2025.5.1 (#144118) 2025-05-02 22:35:34 +02:00
Bram Kragten
32b7edb608 Update frontend to 20250502.0 (#144114) 2025-05-02 22:33:39 +02:00
Josef Zweck
df4297be62 Fix intermittent unavailability for lamarzocco brew active sensor (#144120)
* Fix brew active intermittent unavailability for lamarzocco

* Whitespaces
2025-05-02 22:29:54 +02:00
Brett Adams
4c2e9fc759 Bump teslemetry-stream to 0.7.7 (#144085) 2025-05-02 21:13:12 +02:00
J. Nick Koston
2890fc7dd2 Only create a single resolver object if there are multiple aiohttp sessions (#144090) 2025-05-02 13:43:06 -05:00
Ian
97be2c4ac9 Bump py-nextbusnext to 2.1.2 (#144081)r
Bump py-nextbusnext version

Fixes #144059
2025-05-02 20:17:58 +02:00
Åke Strandberg
762d284102 Improve naming of miele freezers and fridges (#144062)
* Use device class transation

* Improve naming of miele freezers and fridges

* Address review

* Address review comment

* Simplify
2025-05-02 19:31:56 +02:00
Joost Lekkerkerker
4967c287f8 Add DHCP discovery to Knocki (#144048)
* Add DHCP discovery to Knocki

* Update homeassistant/components/knocki/quality_scale.yaml

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

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-05-02 18:34:09 +02:00
Pete Sage
5e463d6af4 bump aiokem to 0.5.9 (#144098)
fix: bump aiokem to 0.5.9
2025-05-02 17:34:58 +02:00
Åke Strandberg
cbf4676ae4 Improve handling of missing miele program codes (#144093)
* Use device class transation

* Improve handling of unknown program codes

* Address review comment
2025-05-02 17:31:11 +02:00
Tomáš Bedřich
81444c8f4a Disable S3 checksums (#144092)
Disable S3 checksums (#143995)
2025-05-02 13:49:33 +02:00
J. Nick Koston
9861bd88b9 Avoid working out suggested id in entity_platform when already registered (#144079)
If the entity is already registered, avoid trying to work
out the suggested_entity_id and suggested_object_id as
async_get_or_create will discard them anyways.
2025-05-02 11:44:38 +02:00
Simone Chemelli
b0f1c71129 Handle missing action exceptions in SamsungTV (#143630)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-05-02 11:39:28 +02:00
Shay Levy
86b845f04a Mark exception-translations done in Shelly (#144073) 2025-05-02 12:32:41 +03:00
J. Diego Rodríguez Royo
3af0d6e484 Use is instead of == on check against enum value at Home Connect (#144083)
* Use `is` instead of `==` on check against enum value at Home Connect

* Revert HTTP status checks
2025-05-02 10:08:46 +02:00
epenet
fca62f1ae8 Move SamsungTV test constants to fixture files (#144086) 2025-05-02 08:32:44 +02:00
Andreas Kölsch
4e8d68a2ef Fix brightness calculation when using brightness_step_pct (#143786) 2025-05-01 23:07:52 +01:00
Paulus Schoutsen
e7331633c7 Bump version to 2025.5.0b1 2025-05-01 21:42:07 +00:00
J. Nick Koston
934be08a59 Bump inkbird-ble to 0.16.1 (#144074)
I made a mistake in one of the data lengths as I forgot to add
the length of the id which is 2 bytes. I really wish vendors
would stop putting raw data in this field.

changelog: https://github.com/Bluetooth-Devices/inkbird-ble/compare/v0.16.0...v0.16.1
2025-05-01 21:41:39 +00:00
J. Nick Koston
485522fd76 Avoid DomainData lookup in ESPHome update platform (#144072)
We can get this from entry.runtime_data
2025-05-01 21:41:38 +00:00
J. Nick Koston
eba0daa2e9 Avoid validation of ESPHome MAC when discovered entry is ignored or unchanged (#144071)
fixes #144033
fixes #143991
2025-05-01 21:41:37 +00:00
Åke Strandberg
851779e7ad Use device class transation for door in miele (#144053) 2025-05-01 21:41:36 +00:00
Åke Strandberg
ea9a0f4bf5 Use action property defined in MieleEntity (#144052) 2025-05-01 21:41:35 +00:00
Josef Zweck
1143468eb5 Handle TimeoutError for lamarzocco (#144042) 2025-05-01 21:41:35 +00:00
OzGav
52b0b1e2ab Media Player strings adjust grammar (#144030) 2025-05-01 21:41:34 +00:00
Andrea Turri
23ba652b83 Fix state of fan entity for Miele hobs with extractor when turned off (#144025) 2025-05-01 21:41:33 +00:00
tronikos
43b737c4a2 Pass empty set instead of empty dict to get_last_statistics (#144022) 2025-05-01 21:41:33 +00:00
Josef Zweck
3fbd23b98d Add bluetooth connection availability to diagnostics for lamarzocco (#144012)
* Add bluetooth connection availability to diagnostics for lamarzocco

* make even more detailed
2025-05-01 21:41:32 +00:00
Josef Zweck
0cbeeebd0b Add connect/disconnect callbacks to lamarzocco (#144011) 2025-05-01 21:41:31 +00:00
Jan-Philipp Benecke
99a0679ee9 Default backup encryption to true when updating only location retention (#143997) 2025-05-01 21:41:30 +00:00
Norbert Rittel
e82713b68c Add translations for "energy_distance" and "wind_direction" in random (#143994)
* Add translations for "energy_distance" and "wind_direction" in `random`

* Comma
2025-05-01 21:41:30 +00:00
Paulus Schoutsen
9293afd95a Ensure legacy TTS providers are hidden if entity exists (#143992) 2025-05-01 21:41:29 +00:00
Josef Zweck
9ea3e786f6 Bump pylamarzocco to 2.0.0b7 (#143989) 2025-05-01 21:41:28 +00:00
J. Diego Rodríguez Royo
a8169d2056 Add units of measurement for Home Connect counter entities (#143982) 2025-05-01 21:41:27 +00:00
Megamind
1cd94affd1 Bump pushover-complete to 1.2.0 (#143966)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-05-01 21:41:26 +00:00
J. Diego Rodríguez Royo
883ab44437 Move Home Connect entry state assertion at tests (#144027) 2025-05-01 23:04:03 +02:00
tronikos
abd17d9af9 Pass empty set instead of empty dict to get_last_statistics (#144022) 2025-05-01 16:47:48 -04:00
J. Nick Koston
a906a1754e Avoid DomainData lookup in ESPHome update platform (#144072)
We can get this from entry.runtime_data
2025-05-01 16:45:44 -04:00
Josef Zweck
255beafe08 Add connect/disconnect callbacks to lamarzocco (#144011) 2025-05-01 16:29:44 -04:00
Josef Zweck
e2679004a1 Add bluetooth connection availability to diagnostics for lamarzocco (#144012)
* Add bluetooth connection availability to diagnostics for lamarzocco

* make even more detailed
2025-05-01 16:26:50 -04:00
J. Nick Koston
06bb692522 Bump inkbird-ble to 0.16.1 (#144074)
I made a mistake in one of the data lengths as I forgot to add
the length of the id which is 2 bytes. I really wish vendors
would stop putting raw data in this field.

changelog: https://github.com/Bluetooth-Devices/inkbird-ble/compare/v0.16.0...v0.16.1
2025-05-01 23:23:56 +03:00
Shay Levy
71599b8e75 Set Shelly PARALLEL_UPDATES (#144070) 2025-05-01 21:20:50 +02:00
J. Nick Koston
79f8bea48d Avoid validation of ESPHome MAC when discovered entry is ignored or unchanged (#144071)
fixes #144033
fixes #143991
2025-05-01 14:51:38 -04:00
Åke Strandberg
82b335a2c1 Flag strict typing for miele (#144060) 2025-05-01 19:10:24 +02:00
Thomas55555
361d93eb96 Remove deprecated binary sensor in Husqvarna Automower (#144064)
* Remove deprecated binary sensor in Husqvarna Automower

* snapshot
2025-05-01 18:35:48 +02:00
Ludovic BOUÉ
bab699eb0c Matter Solar power fixture (#144058) 2025-05-01 17:06:08 +02:00
Thomas55555
b8881ed85b Fix test in Husqvarna Automower (#144055) 2025-05-01 16:36:05 +02:00
Åke Strandberg
4013b418dd Use device class transation for door in miele (#144053) 2025-05-01 16:33:30 +02:00
Åke Strandberg
80d714b865 Use action property defined in MieleEntity (#144052) 2025-05-01 16:06:49 +02:00
Åke Strandberg
7fcad580cb Update miele program codes and strings (#144049) 2025-05-01 15:14:11 +02:00
Ludovic BOUÉ
60b6ff4064 Matter Laundry Dryer fixture (#144043)
* Create laundry_dryer.json

* Add snapshots

* Format fixture

* Set CurrentPhase attribute

* Set OperationalState attribute

* Update snapshot
2025-05-01 14:52:32 +02:00
Josef Zweck
24252edf38 Handle TimeoutError for lamarzocco (#144042) 2025-05-01 14:02:39 +02:00
J. Diego Rodríguez Royo
79aa7aacec Sort Home Connect test params (#144035) 2025-05-01 12:04:25 +02:00
OzGav
92944fa509 Media Player strings adjust grammar (#144030) 2025-05-01 11:40:04 +02:00
J. Diego Rodríguez Royo
c0f0a4a1ac Listen for an event just once at Home Connect test (#144031) 2025-05-01 11:24:29 +02:00
J. Diego Rodríguez Royo
a084b9fdde Set autouse to setup_credentials Home Connect fixture (#144028) 2025-05-01 11:24:05 +02:00
Andrea Turri
83b9b8b032 Fix state of fan entity for Miele hobs with extractor when turned off (#144025) 2025-05-01 10:42:27 +02:00
J. Diego Rodríguez Royo
bc47049d42 Remove non required Home Connect tests (#144024) 2025-05-01 10:18:32 +02:00
J. Diego Rodríguez Royo
17360ede28 Use common percentage const at Home Connect (#144021) 2025-05-01 09:57:42 +02:00
J. Diego Rodríguez Royo
f441f4d7c0 Remove translation key for battery level in Home Connect sensor (#144020) 2025-05-01 09:57:30 +02:00
J. Diego Rodríguez Royo
5ddc449247 Remove default brightness values from Home Connect light entities (#144019) 2025-05-01 09:57:17 +02:00
J. Diego Rodríguez Royo
dd8d714c94 Remove _attr_should_poll from Home Connect base entity (#144016) 2025-05-01 09:49:49 +02:00
J. Diego Rodríguez Royo
c2079ddf6f Remove unused client param at Home Connect diagnostics (#144017) 2025-05-01 09:49:25 +02:00
Manu
5250590b17 Remove deprecated action api_call from Habitica integration (#143978) 2025-05-01 09:28:25 +02:00
Jan-Philipp Benecke
93f4f14b2a Default backup encryption to true when updating only location retention (#143997) 2025-04-30 22:45:41 +01:00
Ville Skyttä
ba712ed514 Move huawei_lte sensor icons to icons.json where applicable (#143999) 2025-04-30 23:26:10 +02:00
Norbert Rittel
6e76ca0fb3 Add translations for "energy_distance" and "wind_direction" in random (#143994)
* Add translations for "energy_distance" and "wind_direction" in `random`

* Comma
2025-05-01 00:13:04 +03:00
Megamind
b0345cce68 Bump pushover-complete to 1.2.0 (#143966)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-30 23:04:56 +02:00
Paulus Schoutsen
c4eddc8d11 Ensure legacy TTS providers are hidden if entity exists (#143992) 2025-04-30 16:57:02 -04:00
Josef Zweck
7d89804a87 Bump pylamarzocco to 2.0.0b7 (#143989) 2025-04-30 22:56:04 +02:00
Ludovic BOUÉ
b92f718e08 Matter Cooktop fixture (#143984) 2025-04-30 22:09:29 +02:00
Franck Nijhof
ad0209a4a0 Bump version to 2025.6.0dev0 (#143983) 2025-04-30 21:44:19 +02:00
J. Diego Rodríguez Royo
d23d25c6b7 Add units of measurement for Home Connect counter entities (#143982) 2025-04-30 21:03:17 +02:00
Franck Nijhof
724825d34c Bump version to 2025.5.0b0 2025-04-30 18:59:18 +00:00
Marc Hörsken
c3abf5a190 Add support for WMS roller shutters and blinds (#132645)
* Add support for WMS roller shutters and blinds

* Add test variants for WMS device types and their diagnostics

* Add test variants for cover movement of WMS device types

* Move device entry tests to test_init and avoid snapshot list

Suggested-by: joostlek
2025-04-30 20:51:10 +02:00
Norbert Rittel
621cf6ce58 Fix broken references in teslemetry (#143981)
* Fix broken references in `teslemetry`

* Fix full strings

* Add just "name:" to references

* Add missing colons

* Fix

* Add "entity::" to all strings
2025-04-30 20:48:14 +02:00
Guido Schmitz
83e0ed7b05 Improve config flow of devolo Home Network (#131911)
* Improve config flow of devolo Home Network

* Apply feedback

* Use references
2025-04-30 20:47:26 +02:00
tdfountain
0752807aaf Improve device action config entry lookup in NUT (#142133)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-30 20:46:02 +02:00
Timothy
53df69ee6e Encourage to use UID instead of name for update and delete todos (#143556) 2025-04-30 20:45:26 +02:00
Sid
dbc38cdc6b Add switch platform to eheimdigital (#142412)
* Add switch platform to eheimdigital

* docstring fixes

* Review

* Review

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-30 20:42:00 +02:00
yohaybn
102d55ec57 Jewish Calendar - support omer count after sunset (#143332)
Co-authored-by: Tsvi Mostovicz <ttmost@gmail.com>
2025-04-30 20:41:03 +02:00
Norbert Rittel
3f7cae8583 Spelling fixes to user-facing strings of tplink (#143649)
* Fixes to user-facing strings of `tplink`

- add missing hyphen to "auto-off" and "auto-update"
- sentence-case one overlooked word

* Update test_sensor.ambr

* Update test_switch.ambr
2025-04-30 20:39:40 +02:00
Peter Åslund
a3a1d424c6 Implement data coordinator for Adax-integration (#139514)
* Implemented coordinator (for Cloud integration)

* Optimized coordinator updates

* Finalizing

* Running ruff and ruff format

* Raise error if trying to instantiate coordinator for a AdaxLocal config

* Re-added data-handler for AdaxLocal integrations

* Added a coordinator for Local integrations

* mypy warnings

* Update homeassistant/components/adax/manifest.json

Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>

* Resolve mypy issues

* PR comments

- Explicit passing of config_entry to Coordinator base type
- Avoid duplicate storing of Coordinator data. Instead use self.data
- Remove try-catch and wrapping to UpdateFailed in _async_update_data
- Custom ConfigEntry type for passing coordinator via entry.runtime_data

* When changing HVAC_MODE update data via Coordinator to optimize

* Apply already loaded data for Climate entity directly in __init__

* Moved SCAN_INTERVAL into const.py

* Removed logging statements

* Remove unnecessary get_rooms() / get_status() functions

* Resolvning mypy issues

* Adding tests for coordinators

* Resolving review comments by joostlek

* Setup of Cloud devices with device_id

* Implement Climate tests for Adax

* Implementing assertions of UNAVAILABLE state

* Removed no longer needed method

* Apply suggestions from code review

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

* Mock Adax class instead of individual methods

* Mock config entry via fixture

* Load config entry data from .json fixture

* Hard code config_entry_data instead of .json file

* Removed obsolete .json-files

* Fix

* Fix

---------

Co-authored-by: Daniel Hjelseth Høyer <mail@dahoiv.net>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-30 20:33:46 +02:00
Shay Levy
2cede8fec6 Record Switcher quality scale (#141065)
* Record Switcher quality scale

* Update entity-device-class status to todo
2025-04-30 20:33:12 +02:00
Arjan
5816d495e3 Linkplay: add entity_picture attribute (media image url) for media player, works for WiiM (#143328)
Add media image url to show as entity_picture
2025-04-30 19:59:25 +02:00
Wilbert
24803b1e75 Add SmartThings water consumption sensor (#142765)
* Add SmartThings water consumption sensor

* Update water consumption sensor

* Partly revert changes UnitOfVolume

* Fix

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-30 19:58:39 +02:00
Retha Runolfsson
9732b8c0dd Add switchbot circulator fan support (#142980)
* add support for circulator fan

* add fan unin tests

* optimize unit tests

* add fan mode translation and icon

* optimize fan unit test
2025-04-30 19:58:33 +02:00
hahn-th
1626b3b7c9 Add absolute humidity sensor to homematicip_cloud (#143709)
* add absolute humidity sensor

* drop unused tests; rename test

* Fix docstrings
2025-04-30 19:51:43 +02:00
puddly
8760a82dfa Bump ZHA to 0.0.57 (#143963)
* Use new (internal) cluster handler IDs in unit tests

* Always add a profile_id to created endpoints

* Use new library decimal formatting

* Implement the ENUM device class for sensors

* Use the suggested display precision hint

* Revert "Implement the ENUM device class for sensors"

This reverts commit d11ab268121b7ffe67c81e45fdc46004fb57a22a.

* Bump ZHA to 0.0.57

* Add strings for v2 quirk entities

* Use ZHA library diagnostics

* Update snapshot

* Revert ZHA change that reports a cover state of `open` if either lift or tilt axes are `open`

This is an interim change to address issues with some cover 'relay' type devices which falsely report support for both lift and tilt. In reality these only support one axes or the other, with users using yaml overrides to restrict functionality in HA.

Devices that genuinely support both movement axes will behave the same as they did prior to https://github.com/zigpy/zha/pull/376
https://github.com/home-assistant/core/pull/141447

A subsequent PR will be made to allow users to override the covering type in a way that allows the entity handler to be aware of the configuration, calculating the state accordingly.

* Spelling mistake

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
Co-authored-by: Jack <46714706+jeverley@users.noreply.github.com>
2025-04-30 19:43:38 +02:00
Parker Brown
0f5d5ab0a2 Add return energy and compensation to Opower (#135258)
* Add return energy statistics to Opower coordinator

* Add consumption and return cost statistics to Opower coordinator

* Rename return cost to compensation for clarity and consistency

* Use original cost stats for consumption cost

* Rename return cost to compensation

* Remove comment

* Raise issue for negative consumption/cost values in Opower statistics

* Migrate existing statistics and raise an issue

* Update strings.json

---------

Co-authored-by: tronikos <tronikos@users.noreply.github.com>
2025-04-30 19:42:36 +02:00
Justin Bull
e05f7a9633 Expose LitterHopper status for LR4 (#143684)
* Expose LitterHopper status for LR4

* Proper naming and icons

* Add simple tests

* fix test: lowercase enabled

* over-torque, not OT

* Don't use icon_fn for simple state map

* short not Short

* Better state names
2025-04-30 19:41:05 +02:00
Jozef Kruszynski
30656a4e72 Add mediabrowser search to music assistant (#143851)
* add search to music assistant

* fix: copy paste error

* refactor: remove unnecessary hasattr condition checks

* refactor: clean up type hinting for mypy
2025-04-30 19:40:41 +02:00
Manuel Rüger
5ccb9486e0 switchbot_cloud: Add battery sensor for Bot and Smart Locks (#143689) 2025-04-30 19:32:02 +02:00
Brett Adams
a6d5891e8a Add more sensors to Teslemetry (#143386)
* Add more sensors

* first batch

* first batch finished

* Sensors

* Clean up

* Remove comment

* Updates

* Fix translation

* Other small fixes

* [%key:common::state::enabled%]

* enabled

* More translation improvements

* Small tweaks

* reconnect

* Add Icons

* fault

* faults

* Fix bad merge

* review feedback

* uom fixes

* Translate units
2025-04-30 19:19:34 +02:00
Abílio Costa
fc440f310b Add door binary sensor to Whirlpool (#143947) 2025-04-30 19:15:19 +02:00
Joost Lekkerkerker
4d9ab42ab5 Add detergent select entities to smartthings (#143666)
* Add detergent select entities to smartthings

* Add detergent select entities to smartthings

* Add detergent select entities to smartthings

* Update homeassistant/components/smartthings/select.py

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

* Fix

* Fix

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-30 19:14:48 +02:00
Michael
e53f380710 Migrate climate attributes to own entities in AVM Fritz!SmartHome (#143394)
* migrate climate attributes to own entities

* add a comment to make it searchable

* Apply suggestions from code review

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

* Apply suggestions from code review

* update snapshots

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-30 18:37:58 +02:00
Paul Bottein
6a514ac2de Update frontend to 20250430.2 (#143974)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-30 18:24:15 +02:00
Kevin Stillhammer
02bd8d67c8 Use google-maps-routing in google_travel_time (#140691)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-30 18:22:15 +02:00
andreimoraru
2c118d4850 Bump yt-dlp to 2025.03.31 (#143733)
* Update manifest.json: bump yt-dlp to 2025.03.31

* Update requirements_all.txt: bump yt-dlp to 2025.03.31

* Update requirements_test_all.txt: bump yt-dlp to 2025.03.31

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-04-30 18:15:46 +02:00
Denis Shulyaka
949225ffeb Bump openai to 1.76.2 (#143902)
* Bump openai to 1.76.1

* Fix mypy

* Fix coverage

* 1.76.2

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-04-30 12:07:55 -04:00
tronikos
1ef04a8dde Add National Grid US virtual integration (#143756) 2025-04-30 18:06:54 +02:00
tronikos
5c58f97e57 Add Google Gemini virtual integration (#143753) 2025-04-30 18:04:25 +02:00
Stefan Agner
f1b8c8855e Push country config to Supervisor (#143871) 2025-04-30 18:02:18 +02:00
Jan Bouwhuis
daf143f66e Fix broken URL in MQTT translation strings (#143973) 2025-04-30 18:01:51 +02:00
Michael Hansen
6c0e46f050 Bump intents to 2025.4.30 (#143969)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-04-30 18:01:17 +02:00
epenet
70133da025 Use freezer.tick once more in SamsungTV (#143970) 2025-04-30 17:50:13 +02:00
Paul Bottein
837592381a Update frontend to 20250430.1 (#143965) 2025-04-30 18:22:05 +03:00
Timothy
101b073793 Use Lokalise references to remove duplicates in todo component (#143967) 2025-04-30 15:57:26 +01:00
epenet
df5f150531 Cleanup samsungtv coordinator (#143949) 2025-04-30 16:25:45 +02:00
J. Diego Rodríguez Royo
4061314cd2 Allow multiple config entries in Home Connect (#143935)
* Allow multiple config entries in Home Connect

* Config entry migration

* Create new entry if reauth flow is completed with other account

* Abort if different account on reauth
2025-04-30 16:22:18 +02:00
Robert Resch
819be719ef Bump uv to 0.7.1 (#143957)
* Bump uv to 0.6.17

* Bump uv to 0.7.1
2025-04-30 16:16:55 +02:00
Martin Hjelmare
80e4f19172 Fix Z-Wave USB flow test warning (#143956) 2025-04-30 16:14:44 +02:00
Jan Bouwhuis
5b0ea21607 Add light as entity platform on MQTT subentries (#141345)
* Add light as entity platform on MQTT subentries

* Improve translation strings

* Rename to separate brightness

* Remove option to use mireds for color temperature

* Fix tests

* Add translation reference

* Correct reference

* Add flash and transition feature switches

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-04-30 15:57:51 +02:00
Norbert Rittel
84634ce288 Improve Error message states in fronius (#143958) 2025-04-30 15:56:22 +02:00
Maciej Bieniek
fa1dc75517 Add repair flow for Shelly BLE scanner with unsupported firmware (#143850) 2025-04-30 15:43:07 +02:00
J. Diego Rodríguez Royo
d8122d149b Add zeroconf to Home Connect (#143952) 2025-04-30 15:42:06 +02:00
Joost Lekkerkerker
923300f4e7 Add Sabbath mode to SmartThings (#141072) 2025-04-30 15:39:23 +02:00
epenet
af66d0b647 Delay register callback in SamsungTV (#143950) 2025-04-30 15:38:40 +02:00
epenet
8b9c4dadd0 Use freezer.tick in SamsungTV tests (#143954) 2025-04-30 15:38:00 +02:00
Sid
857db679ae Add time platform to eheimdigital (#143168) 2025-04-30 15:34:28 +02:00
J. Nick Koston
03ecd7f06c Remove icon from rehlko power_source (#143955) 2025-04-30 15:33:14 +02:00
epenet
c6bdee8dd8 Various minor tweaks in samsungtv tests (#143951) 2025-04-30 15:26:39 +02:00
epenet
800f403643 Adjust unique_id in SamsungTV tests (#143959) 2025-04-30 15:25:50 +02:00
Robert Resch
9b1c6b07f5 Bump deebot-client to 13.0.0 (#143823) 2025-04-30 15:24:54 +02:00
Brian Choromanski
f7c1a0c5e6 Add tests for parse_time_expression (#143912) 2025-04-30 13:58:17 +01:00
Pete Sage
57a7c26c64 Add generator status sensors for Rehlko (#143948) 2025-04-30 14:55:12 +02:00
Norbert Rittel
d606e86b47 Fix spelling of "Overtorque fault" in litterrobot (#143953) 2025-04-30 14:53:03 +02:00
Erik Montnemery
f7a9319122 Don't attempt to garbage collect objects leaked by previous modules (#143944) 2025-04-30 14:52:50 +02:00
Allen Porter
b16151ac6d Add an LLM tool for fetching todo list items (#143777)
* Add a tool for fetching todo list items

* Simplify the todo list interface by adding an "all" status

* Update prompt to improve performance on smaller models
2025-04-30 08:49:33 -04:00
Manuel Rüger
bdd9099294 switchbot_cloud: Add firmware information (#143693) 2025-04-30 14:48:18 +02:00
Allen Porter
d924f0b1d6 Improve the live context tool prompt with additional instructions (#143746)
* Improve the live context tool prompt with additional instructions

* Fix vertical whitespace
2025-04-30 08:47:54 -04:00
Paulus Schoutsen
5dab9ba01b Allow streaming text into TTS ResultStream objects (#143745)
Allow streaming messages into TTS ResultStream
2025-04-30 08:21:19 -04:00
J. Nick Koston
ae118da5a1 Bump orjson to 3.10.18 (#143943) 2025-04-30 14:03:38 +02:00
epenet
e24082be9a Fix incorrect return types in samsungtv tests (#143937) 2025-04-30 13:31:21 +02:00
Manu
8fafbfaf82 Change function alias to proxy in ista EcoTrend (#143911)
Change function alias
2025-04-30 13:07:51 +02:00
Joost Lekkerkerker
6168fe006e Remove Oncue integration (#143945) 2025-04-30 12:50:28 +02:00
Pete Sage
6c633668f6 Add Rehlko (formerly Kohler Energy Management) Integration (#143602)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-30 12:44:16 +02:00
epenet
73a1dbffeb Fix invalid-else in samsungtv (#143942) 2025-04-30 12:34:36 +02:00
Erik Montnemery
40217e764d Allow overriding blueprinted templates (#143874)
* Allow overriding blueprinted templates

* Remove duplicated line
2025-04-30 12:14:28 +02:00
Petar Petrov
a7af0eaccd Add retry restore step to ZWave-JS migration (#143934)
* Add retry restore step to ZWave-JS migration

* improve test
2025-04-30 11:54:50 +02:00
epenet
4ac29c6aef Remove redundant turn_on/turn_off methods in samsungtv (#143939) 2025-04-30 11:47:39 +02:00
epenet
ef023f084b Ensure port is stored and used in SamsungTV legacy bridge (#143940)
* Ensure port is stored and used in SamsungTV legacy bridge

* Tweak
2025-04-30 11:47:28 +02:00
Simone Chemelli
441bca5bda Use CONF_PIN in SamsungTv config flow (#143621)
* Use CONF_PIN in SamsunTv config flow

* Adjust tests

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-04-30 11:26:20 +02:00
Robert Resch
a8bee20aa3 Add Nuki brand with Matter support (#143904) 2025-04-30 11:14:19 +02:00
Martin Hjelmare
04bea9c732 Handle Z-Wave migration low SDK version (#143936) 2025-04-30 11:43:05 +03:00
epenet
98cbc2a182 Add extra logging in samsungtv (#143933)
* Cache and reuse REST client in samsungtv

* Add logging
2025-04-30 10:22:36 +02:00
epenet
09518b1a71 Remove redundant Renault test fixtures (#143929)
Remove redundant Renault fixtures
2025-04-30 10:05:29 +02:00
epenet
42d22bb1a3 Use unique registration number in renault tests (#143926) 2025-04-30 10:05:00 +02:00
tmenguy
69c387a360 Improve Renault plug status binary sensor (#143931)
improve binary plug sensor
2025-04-30 10:03:01 +02:00
J. Nick Koston
4b6fa12925 Make name a top-level key for SSDP discovery WebSocket API (#143923) 2025-04-30 09:40:15 +02:00
epenet
c562cba030 Use unique VIN in renault tests (#143925) 2025-04-30 08:48:49 +02:00
epenet
40764b6995 Cleanup renault test constants (#143924)
* More

* tweak

* Adjust

* docstring

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-30 08:32:07 +02:00
J. Nick Koston
4ee3290929 Improve ESPHome dashboard diagnostics (#143914) 2025-04-30 08:19:16 +02:00
epenet
dc02c37413 Use snapshot_platform in renault tests (#143864)
* Use snapshot_platform in renault tests

* More

* tweak

* Improve
2025-04-30 08:08:24 +02:00
Manu
34becb541a add verify_ssl config flow option to ntfy integration (#143731)
* add verfy_ssl option

* changes
2025-04-30 08:07:58 +02:00
Martin Hjelmare
eabf88e3c9 Fix Z-Wave USB discovery already configured (#143907)
Fix zwave usb discovery already configured
2025-04-30 07:40:18 +02:00
J. Nick Koston
c3dac50f21 Bump bluemaestro-ble to 0.4.0 (#143922) 2025-04-30 07:39:04 +02:00
J. Nick Koston
f7240b52c5 Bump leaone-ble to 0.3.0 (#143921) 2025-04-30 07:38:51 +02:00
J. Nick Koston
2112b5a763 Bump thermopro-ble to 0.13.0 (#143920) 2025-04-30 07:38:34 +02:00
J. Nick Koston
03b10b45c4 Bump sensorpro-ble to 0.7.0 (#143919) 2025-04-30 07:38:13 +02:00
J. Nick Koston
62361230f3 Bump thermobeacon-ble to 0.10.0 (#143918) 2025-04-30 07:37:50 +02:00
J. Nick Koston
653306eb91 Bump sensorpush-ble to 1.9.0 (#143917) 2025-04-30 07:37:37 +02:00
J. Nick Koston
07e2cfb736 Bump inkbird-ble to 0.15.0 (#143916) 2025-04-30 07:36:48 +02:00
Paulus Schoutsen
f980434046 Clean up Text-to-Speech (#143744) 2025-04-30 04:29:35 +02:00
Marc Mueller
97084e9382 Remove redundant typing cast in miele (#143913) 2025-04-30 03:13:23 +02:00
J. Nick Koston
9db34fe232 Bump habluetooth to 3.45.0 (#143909) 2025-04-30 00:05:33 +02:00
Åke Strandberg
c4f0b4ab23 Bump pymiele to 0.4.1 (#143903) 2025-04-30 00:55:23 +03:00
Brian Choromanski
1647afc58a Improve parse_time_expression list comprehension to get interval values (#143488) 2025-04-29 22:20:05 +01:00
Martin Hjelmare
53ea8422f8 Improve Z-Wave hassio confirm form text (#143908) 2025-04-29 22:57:30 +02:00
Jan Bouwhuis
0b988b3fac Bump incomfort-client to v0.6.8 (#143895)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-29 22:05:52 +02:00
Thomas55555
5a4abe3ec1 Bump apsystems-ez1 to 2.6.0 (#143897)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-04-29 21:36:13 +02:00
J. Nick Koston
89abc5ac69 Add WebSocket API to ssdp to observe discovery (#143862) 2025-04-29 21:03:53 +02:00
Norbert Rittel
08fe6653bb Add missing hyphen to "self-test" in weheat (#143899) 2025-04-29 22:02:24 +03:00
Norbert Rittel
9aa18c7157 Add missing hyphen to "self-check" in incomfort (#143900) 2025-04-29 20:59:15 +02:00
Retha Runolfsson
cc7929f8fb Add log when device is online and unavailable (#143648) 2025-04-29 20:52:12 +02:00
Josef Zweck
d657298791 Add statistic entities to lamarzocco (#143415)
* Bump pylamarzocco to 2.0.0b2

* Add statistic entities to lamarzocco

* add icons

* Update coordinator.py

* update uom

* Update homeassistant/components/lamarzocco/sensor.py

Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>

* revert cups

* remove unnecessary call (for now)

---------

Co-authored-by: Simon Lamon <32477463+silamon@users.noreply.github.com>
2025-04-29 20:49:26 +02:00
Jan Bouwhuis
05f393560f Fix mcp_server CI test (#143898) 2025-04-29 20:40:50 +02:00
Abílio Costa
92da640d4c Rename const maps in Whirlpool (#143409) 2025-04-29 20:39:29 +02:00
Manu
ad3fd151aa Add reconfiguration flow to ista EcoTrend integration (#143457) 2025-04-29 20:37:04 +02:00
Simon Lamon
cd104dc08c LinkPlay group members should return the entity ids (#141791) 2025-04-29 20:28:08 +02:00
Norbert Rittel
d3745d2519 Add missing hyphens to "self-…" in imeon_inverter (#143888)
* Add missing hyphens to "self-…" in `imeon_inverter`

* Update test_sensor.ambr
2025-04-29 21:01:49 +03:00
Norbert Rittel
931f3fa41a Fix spelling of "self-consumption" in tessie/tesla_fleet/teslemetry (#143890)
* Fix spelling of "self-consumption" in `tessie`

* Fix spelling of "self-consumption" in `tesla_fleet`

* Fix spelling of "self-consumption" in `teslemetry`
2025-04-29 21:01:41 +03:00
Norbert Rittel
87b5a91212 Add missing hyphen to "self-clean" in roborock (#143893)
Fix four states that contain "self-clean" by adding the missing hyphen.
2025-04-29 21:01:35 +03:00
Norbert Rittel
3b8da62d84 Make spelling of "self-consumption" consistent in growatt_server (#143886)
Also fix one overlooked sentence-casing.
2025-04-29 21:01:08 +03:00
Norbert Rittel
86a48294f4 Change all imap action descriptions to match HA style (#143894)
Change all `imap` action description to match HA style

Change all four descriptions to use third-person singular to ensure proper (machine) translations.
2025-04-29 20:59:06 +03:00
Ville Skyttä
a03884981f Prefer huawei_lte SSDP model name over friendly name (#143725) 2025-04-29 19:25:32 +02:00
Ville Skyttä
ab695f90c7 Upgrade url-normalize to 2.2.1 (#143751) 2025-04-29 19:10:57 +02:00
Allen Porter
efcf8f9555 Improve TurnOn/Off LLM tool descriptions (#143768) 2025-04-29 19:09:05 +02:00
epenet
f71903a563 Simplify device registry checks in renault tests (#143863) 2025-04-29 19:03:14 +02:00
Petro31
95552e9a5b Add trigger based template lights (#140631)
* Add abstract template light class in preparation for trigger based template lights

* add base for trigger entity

* Update more tests

* revert trigger template entity changes and light trigger tests.

* fix merge conflicts

* address comments

* change function name

* nitpick

* fix merge conflict issue

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-04-29 18:02:44 +02:00
Åke Strandberg
5da57271b2 Add 3 duration sensors to miele (#143160)
* Add 3 duration sensors

* Update snapshot

* Address review comments

* Cleanup

* Adjust type hint
2025-04-29 17:53:24 +02:00
Norbert Rittel
62a7139f4d Fix hyphens on "self-consumption"/"serial number" in enphase_envoy (#143887) 2025-04-29 17:29:48 +02:00
Franck Nijhof
a7be26cd95 Merge branch 'master' into dev 2025-04-29 15:17:37 +00:00
J. Nick Koston
9c3b0952e0 Turn off autospec for zeroconf mocks (#143879) 2025-04-29 16:45:58 +02:00
J. Nick Koston
c771f446b4 Bump aioesphomeapi to 30.1.0 (#143881) 2025-04-29 16:13:30 +02:00
Petro31
9a25561017 Fix duplicate code from merge conflict (#143880)
fix conflict
2025-04-29 16:09:08 +02:00
Manuel Stahl
bd870f0537 Remove dependency on modbus for stiebel_eltron (#136482)
* Remove dependency on modbus for stiebel_eltron

The modbus integration changed its setup, so it is
not possible anymore to have an empty hub.

* Add config flow

* Update pystiebeleltron to v0.1.0

* Fix

* Fix

* Add test for non existing modbus hub

* Fix tests

* Add more tests

* Add missing translation string

* Add test for import failure

* Fix issues from review comments

* Fix issues from review comments

* Mock stiebel eltron client instead of setup_entry

* Update homeassistant/components/stiebel_eltron/__init__.py

* Update homeassistant/components/stiebel_eltron/__init__.py

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-29 15:34:16 +02:00
Manuel Stahl
d7f43bddfa Remove dependency on modbus for stiebel_eltron (#136482)
* Remove dependency on modbus for stiebel_eltron

The modbus integration changed its setup, so it is
not possible anymore to have an empty hub.

* Add config flow

* Update pystiebeleltron to v0.1.0

* Fix

* Fix

* Add test for non existing modbus hub

* Fix tests

* Add more tests

* Add missing translation string

* Add test for import failure

* Fix issues from review comments

* Fix issues from review comments

* Mock stiebel eltron client instead of setup_entry

* Update homeassistant/components/stiebel_eltron/__init__.py

* Update homeassistant/components/stiebel_eltron/__init__.py

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-29 14:57:01 +02:00
Åke Strandberg
87107c5a59 Add log of missing codes to miele diagnostics (#143877)
Add missing code log to diagnostics
2025-04-29 14:56:45 +02:00
Patrick
9ce920b35a Add support for external USB drives to Synology DSM (#138661)
* Add external usb drives

* Add partition percentage used

* Move icons to icons.json

* Add external usb to diagnostics

* Add assert for external usb entity

* Fix reset external_usb

* Update homeassistant/components/synology_dsm/diagnostics.py

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

* Update homeassistant/components/synology_dsm/diagnostics.py

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

* Fix diagnostics

* Make each partition a device

* Add usb sensor tests

* Add diagnostics tests

* It is possible that api.external_usb is None

* Merge upstream into syno_external_usb

* add manufacturer and model to partition

* fix tests

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: mib1185 <mail@mib85.de>
2025-04-29 13:32:21 +02:00
J. Diego Rodríguez Royo
15aff9662c Refresh Home Connect program entities possible options when an appliance gets connected (#143213)
Refresh options when an appliance gets connected
2025-04-29 13:12:21 +02:00
Åke Strandberg
da6fb91886 Add some more sensors to miele integration (#142979)
* Add some more sensors

* Add some debug logging and correct spelling

* Address review comments

* Split out duration sensors to separate PR

* Update strings

* Filter program phases by device type

* Update tests

* Fix auto link

* Address som of the comments

* Lint

* Lint

* Remove duplicates from enum sensor options

* Update snapshot

* Sort options in enum sensors
2025-04-29 13:07:55 +02:00
Alex Fuchs
1e880f7406 Bump apsystems-ez1 to 2.5.1 (#143739)
Bump apsystems-ez1 to 2.5.1 to fix debounce problem
2025-04-29 13:04:57 +02:00
Matrix
81153042d3 Bump YoLink Lib to v0.5.2 (#143873)
Bump YoLink API to v0.5.2
2025-04-29 12:57:23 +02:00
Michael
493ca261dc Add strict type checking to SMTP integration (#143698) 2025-04-29 12:56:29 +02:00
Ville Skyttä
7493b340ca Add more huawei_lte sensor descriptions (#143707) 2025-04-29 12:54:36 +02:00
Norbert Rittel
e85e60ed6a Use common state "Fault" in wolflink (#143688) 2025-04-29 12:53:09 +02:00
chammp
8ff4d5dcbf Adapt template sensors to use the same plural trigger/condition/action definitions as automations (#127875)
* Add plurals to template entities

* Ruff

* Ruffy ruff

* Fix linters

* Fix bug introduced after merging dev

* Fix merge mistake

* Revert adding automation helper

* Revert "Fix bug introduced after merging dev"

This reverts commit 098d478f150a06546fb9ec3668865fa5d763c6b2.

* Fix blueprint validation

* Apply suggestions from code review

---------

Co-authored-by: Erik <erik@montnemery.com>
2025-04-29 11:52:58 +02:00
Norbert Rittel
f2838e493b Use common state for "Fault" in peblar (#143708) 2025-04-29 11:39:21 +02:00
Åke Strandberg
a71edcf1a1 Add fan platform to miele integration (#143772)
* Add fan platform

* Fix after review comment

* Address review comments

* Remove commented code

* Update tests

* Use constant
2025-04-29 10:48:56 +02:00
Arie Catsman
47bef74e7c apply for platinum quality scale for enphase_envoy (#143846) 2025-04-29 10:41:22 +02:00
Erwin Douna
b757a7e3fe Replace pymelcloud with python-melcloud (#142120) 2025-04-29 10:38:00 +02:00
dependabot[bot]
362ff5724d Bump actions/attest-build-provenance from 2.2.3 to 2.3.0 (#143865) 2025-04-29 10:31:16 +02:00
Joost Lekkerkerker
4f8363a5c2 Add availability to SmartThings devices (#143836)
* Bump pySmartThings to 3.1.0

* Bump pySmartThings to 3.2.0

* Add availability to SmartThings devices

* Add availability to SmartThings devices

* Add availability to SmartThings devices
2025-04-29 10:29:07 +02:00
Maciej Bieniek
ae3925118c Do not allow to enable BT scanner for Shelly Gen4 device with Zigbee enabled (#143824)
* Bluetooth is not supported when Zigbee is enabled

* Update tests

* Format
2025-04-29 11:12:34 +03:00
Petro31
b2fcab20a6 Add trigger based entities to template switch (#141763)
* Add trigger based entities to template switch platform

* add suggestions
2025-04-29 09:40:16 +02:00
Brett Adams
6423957d29 Add common translations to Sentry in Teslemetry (#143868)
missing translation keys
2025-04-29 09:26:19 +02:00
Brett Adams
835cdad0a9 Add sentry mode sensor to Teslemetry (#143855)
* Add sentry mode sensor

* Fix state handler
2025-04-29 08:37:10 +02:00
Klaas Schoute
d8d6decb38 Bump odp-amsterdam to v6.1.1 (#143854) 2025-04-29 08:35:56 +02:00
Erik Montnemery
16b42cc109 Add cv.renamed (#143834) 2025-04-29 07:36:37 +02:00
tmenguy
a47f27821f Add some tests with an invalid plugStatus and renault twingo iii. (#143838) 2025-04-28 22:31:27 +02:00
Daniel Hjelseth Høyer
c797e7a973 Mill, add statistics (#130406)
* Mill, new features

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

* typo

* tests

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

* mill

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

* Update const.py

* Update sensor.py

* Update sensor.py

* Add test

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

* Add test

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

* mill

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

* mock_setup_entry

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

* after_depencies

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

* Mill

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

* mill stats

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

* mill stats

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

* format

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

* mill

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

* Add test

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

* tests

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

* mill

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

---------

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-04-28 21:59:42 +02:00
Norbert Rittel
245eb64405 Fix spelling of "self-test" in apcupsd (#143843) 2025-04-28 22:35:16 +03:00
Martin Hjelmare
a895fcf057 Bump zwave-js-server-python to 0.63.0 (#143844) 2025-04-28 21:34:47 +02:00
Norbert Rittel
5706fb26b8 Make spelling of "self-test" consistent in zha (#143842)
While the "self-test" button already contains the recommended hyphen it's missing in the switch and sensor entity names.
2025-04-28 21:07:50 +03:00
Åke Strandberg
3f82120cdc Add miele core temp sensors (#143785)
Add core temp sensors
2025-04-28 18:47:42 +02:00
Brett Adams
20df183470 Improve energy entities in Teslemetry (#143641)
* Energy fixes

* improvements

* Add more icons
2025-04-28 18:47:12 +02:00
dependabot[bot]
980216795f Bump docker/build-push-action from 6.15.0 to 6.16.0 (#143651)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.15.0 to 6.16.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](471d1dc4e0...14487ce63c)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 16:50:07 +02:00
Joost Lekkerkerker
fdfcd841ba Bump pySmartThings to 3.2.0 (#143833)
* Bump pySmartThings to 3.1.0

* Bump pySmartThings to 3.2.0
2025-04-28 16:23:06 +02:00
Josef Zweck
28a09794e9 Bump pylamarzocco to 2.0.0b6 (#143778)
* Bump pylamarzocco to 2.0.0b5

* bump to 6
2025-04-28 16:22:46 +02:00
David Knowles
a0c9217375 Schlage: Source valid auto lock times from pyschlage (#143382)
* Source auto lock times from pyschlage

* Update auto lock strings

* Test all options are translated
2025-04-28 14:45:38 +02:00
Petro31
469176c59b Fix trigger template entity issue when coordinator data is None (#143830)
Fix issue when coordinator data is None
2025-04-28 14:32:16 +02:00
Erik Montnemery
3ece672890 Update rainforest_raven test snapshots (#143829) 2025-04-28 14:04:10 +03:00
Brett Adams
c6ebba8843 Add streaming connectivity binary sensors to Teslemetry (#143443)
* Add connectivity entities

* Add connectivity entities

* Fix Wi-Fi spelling in Teslemetry component
2025-04-28 12:58:40 +02:00
Erik Montnemery
1f047807a4 Update netatmo test snapshots (#143828) 2025-04-28 13:48:50 +03:00
Erik Montnemery
f1b724c49a Update samsungtv test snapshots (#143826) 2025-04-28 13:48:39 +03:00
J. Nick Koston
5ebed2046c Bump bluetooth-data-tools to 1.28.1 (#143817) 2025-04-28 12:05:07 +02:00
Arie Catsman
d1236a53b8 add enphase_envoy interface mac to device registry (#143758)
* add enphase_envoy interface mac to device registry

* Test for capitalized error log entry.

* increase mac collection delay from 17 to 34 sec
2025-04-28 11:20:11 +02:00
Tsvi Mostovicz
84f07ee992 Bump hdate to 1.1.0 (#143759) 2025-04-28 10:38:49 +02:00
J. Nick Koston
d7f5e48626 Bump aioshelly to 13.6.0 (#143814)
changelog: https://github.com/home-assistant-libs/aioshelly/compare/13.5.0...13.6.0
2025-04-28 11:27:50 +03:00
Norbert Rittel
56e07bb1f2 Use common state for "Fault", add recommended hyphen in fronius (#143812)
* Use common state for "Fault" in `fronius`

Also add a recommended hyphen to "self-consumption".

See Wiktionary: "Words derived from self- are usually formed with a hyphen. Using a hyphen is recommended by the U.S. Government Printing Office Style Manual."

* Update test_sensor.ambr
2025-04-28 11:18:07 +03:00
J. Nick Koston
45b2700375 Bump habluetooth to 3.44.0 (#143802) 2025-04-28 03:45:47 -04:00
Erik Montnemery
d860b35f41 Fix flaky test test_async_parallel_updates_with_zero_on_sync_update (#143810) 2025-04-28 09:27:26 +02:00
Martin Hjelmare
5392062edd Add backup agent retention config (#143174) 2025-04-28 09:24:23 +02:00
Åke Strandberg
d9a09a2aea Enable deletion of stale miele devices (#143811)
Enable deletion of stale devices
2025-04-28 08:59:34 +02:00
epenet
3daff73d36 Add renault reconfigure flow (#143449)
* Add renault reconfigure flow

* docstring
2025-04-28 08:43:20 +02:00
J. Nick Koston
e6b88ec087 Bump thermopro-ble to 0.12.0 (#143799)
* Bump thermopro-ble to 0.12.0

changelog: https://github.com/Bluetooth-Devices/thermopro-ble/compare/v0.11.0...v0.12.0

* update tests
2025-04-28 08:37:20 +02:00
J. Nick Koston
592dcec852 Bump govee-ble to 0.44.0 (#143800)
changelog: https://github.com/Bluetooth-Devices/govee-ble/compare/v0.43.1...v0.44.0
2025-04-28 08:36:02 +02:00
J. Nick Koston
2a6b79ec0f Bump bluemaestro-ble to 0.3.0 (#143795)
* Bump bluemaestro-ble to 0.3.0

changelog: https://github.com/Bluetooth-Devices/bluemaestro-ble/compare/v0.2.3...v0.3.0

* update tests
2025-04-28 08:35:22 +02:00
J. Nick Koston
afc1d224a0 Bump sensorpro-ble to 0.6.0 (#143796)
* Bump sensorpro-ble to 0.6.0

changelog: https://github.com/Bluetooth-Devices/sensorpro-ble/compare/v0.5.3...v0.6.0

* update tests
2025-04-28 08:34:34 +02:00
J. Nick Koston
b668acda24 Bump inkbird-ble to 0.14.1 (#143793)
changelog: https://github.com/Bluetooth-Devices/inkbird-ble/compare/v0.13.0...v0.14.1
2025-04-28 08:33:48 +02:00
J. Nick Koston
c3996d6931 Bump sensorpush-ble to 1.8.0 (#143794)
* Bump sensorpush-ble to 1.8.0

changelog: https://github.com/Bluetooth-Devices/sensorpush-ble/compare/v1.7.1...v1.8.0

* fix tests
2025-04-28 08:33:11 +02:00
J. Nick Koston
9ec174776c Bump leaone-ble to 0.2.0 (#143798)
* Bump leaone-ble to 0.2.0

changelog: https://github.com/Bluetooth-Devices/leaone-ble/compare/v0.1.0...v0.2.0

* update tests
2025-04-28 08:31:58 +02:00
J. Nick Koston
6a8722cf7c Bump thermobeacon-ble to 0.9.0 (#143797)
* Bump thermobeacon-ble to 0.9.0

changelog: https://github.com/Bluetooth-Devices/thermobeacon-ble/compare/v0.8.1...v0.9.0

* update tests
2025-04-28 08:30:57 +02:00
epenet
000b1d80b0 Update docs in renault quality-scale (#143806) 2025-04-28 08:29:28 +02:00
epenet
6d8654610e Remove obsolete code in Renault integration (#143808) 2025-04-28 08:25:03 +02:00
Olivier Douville
5cd4c8e896 Add missing state class in sfr-box (#143773)
* Update sensor.py - Add MEASUREMENT state class on alimvoltage and temperature sensors

This will allow state values to be stored in LTS (long term statistics)

* Update tests accordingly to previous changes in sensors

* Update tests accordingly to previous changes in sensors
2025-04-28 07:55:29 +02:00
Erik Montnemery
cec8db173b Remove redundant entity_id collision check in entity registry (#143660)
* Remove redundant entity_id collision check in entity registry

* Update test
2025-04-28 07:50:26 +02:00
J. Nick Koston
dd9dad80be Bump habluetooth to 3.42.0 and bleak-esphome to 2.14.0 (#143787) 2025-04-27 19:36:58 -05:00
Åke Strandberg
9992ade051 Bump pymiele to 0.4.0 (#143789) 2025-04-27 23:31:10 +01:00
J. Nick Koston
36da4a9b72 Bump bluetooth-data-tools to 1.28.0 (#143782)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v1.27.0...v1.28.0

related issue https://github.com/home-assistant/core/issues/143769#issuecomment-2833594159
2025-04-27 16:50:42 -05:00
Mick Vleeshouwer
3fc34244ac Fix hvac_mode property to handle missing CORE_ON_OFF state in Atlantic Electrical Heater in Overkiz (#143330) 2025-04-27 20:42:51 +02:00
tronikos
753c07e911 Bump opower to 0.12.0 (#143748) 2025-04-27 20:40:10 +02:00
Joris Drenth
d0850e2931 Bump Wallbox version to 0.9.0 (#143775)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-27 20:36:20 +02:00
Manu
c704df004a Add diagnostics platform to ntfy platform (#143774) 2025-04-27 19:58:15 +02:00
Yuxin Wang
d95c9c496e Make exception messages translatable for APCUPSD (#143747)
Add translation domain and key for UpdateFailed in coordinator
2025-04-27 16:35:55 +02:00
Ville Skyttä
d28f4ed618 Set device class for huawei_lte connectivity binary sensors (#143764) 2025-04-27 16:34:11 +02:00
Jan Bouwhuis
7a0580eff5 Import media player constants at integration level for alexa smart home (#143767) 2025-04-27 15:36:42 +02:00
Sanjay Govind
f94af84f2a Update deprecated const usage in alexa integration (#143741) 2025-04-27 14:33:16 +02:00
Allen Porter
31fb199670 Bump voluptuous-openapi to 0.0.7 (#143742) 2025-04-27 12:10:26 +02:00
Brett Adams
a1ca0a1cb2 Dont add location entities without location scope in Teslemetry (#143497)
* Dont add location entities without location scope

* Fix tests

* simplify logic

* Add test
2025-04-27 11:25:58 +02:00
Allen Porter
2326c23133 Increase Gemini max tokens to avoid failures observed in evaluations (#143728)
* Increase Gemini max tokens to avoid failures observed in evaluations

* Update snapshots
2025-04-26 15:30:47 -07:00
J. Nick Koston
d4c1d1bdb9 Split up SSDP integration into modules (#143732)
* Split up SSDP integration into modules

* Split up SSDP integration into modules

* migrate tests
2025-04-26 18:09:51 -04:00
Allen Porter
8d258871ff Record Anthropic token statistics in conversation trace (#143727)
* Record anthopic token statistics in conversation trace

* Add test coverage for output token parsing
2025-04-26 18:04:12 -04:00
Thomas55555
49299a6bf0 Bump aioautomower to 2025.4.4 (#143533)
* Bump aioautomower to 2025.4.1

* Update split_tests.py

* revert b3222b9be9

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

* aioautomower==2025.4.2

* fix

* aioautomower==2025.4.30b0

* revert

* some try

* aioautomower==2025.4.0

* aioautomower==2025.4.3b0

* aioautomower==2025.4.4

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-04-27 00:07:14 +03:00
Shay Levy
868b8ad318 Move Switcher handle_coordinator_update to base entity (#143738) 2025-04-27 00:01:44 +03:00
Simone Chemelli
40752dcfb6 Translate missing exceptions in SamsungTV (#143628)
* Translate missing exceptions in SamsungTV

* apply review comment
2025-04-26 22:43:07 +02:00
Stefan Agner
18f51abfe6 Remove unnecessary Supervisor info call (#143700) 2025-04-26 15:27:31 -05:00
Maikel Punie
3e2c54dcbd Bump velbusaio to 2025.4.2 (#143675) 2025-04-26 15:22:10 -05:00
Manu
a0cd14b4e8 Add reauth flow to ntfy integration (#143729) 2025-04-26 22:05:13 +02:00
Norbert Rittel
35c6fdbce8 Use common state for "Fault" in shelly (#143730) 2025-04-26 21:08:39 +03:00
sebfortier2288
202addc39d Remove sebfortier2288 from Soma code owners (#143715)
* chore(soma): remove from codeowner

* chore(soma): remove from sebfortier2288 codeowners
2025-04-26 19:56:56 +03:00
Shay Levy
d8cb7c475b Update Switcher temperature sensor device class and state class (#143722)
* Update Switcher temperature sensor device class and state class

* Remove  temperature translation key

* Remove icon
2025-04-26 16:22:44 +02:00
Shay Levy
03bacd747e Use device_registry fixture in Switcher test_remove_device (#143723) 2025-04-26 17:05:51 +03:00
Manu
97b6a68cda Improve device handling for disconnected IronOS devices (#143446)
* Improve device handling for disconnected IronOS devices

* requested changes

* ble_device
2025-04-26 13:34:44 +02:00
Shay Levy
eee18035cf Use value_fn in Switcher sensor platform (#143711) 2025-04-26 13:34:13 +02:00
Maciej Bieniek
f1b3b0c155 Refactor tests for Shelly config flow (#143517)
* Add mock_setup_entry

* Add mock_setup

* Improve test_form_gen1_custom_port

* Improve test_form_errors_get_info

* Improve test_form_errors_test_connection

* Improve test_reconfigure_with_exception

* Improve test_form_auth_errors_test_connection_gen1

* Improve test_form_auth_errors_test_connection_gen2

* Cleaning

* Upate quality scale

* Always use result variable

* Remove unnecessary async_block_till_done
2025-04-26 13:00:45 +03:00
Åke Strandberg
f5d3495c62 Add properties to miele entity class (#143622)
* Add properties to Entity class

* Remove setter and most platform constructors
2025-04-26 09:55:11 +02:00
Martin Hjelmare
e14a356c24 Allow Z-Wave controller migration on USB discovery (#143677)
Allow migration on USB discovery
2025-04-26 07:52:32 +02:00
J. Nick Koston
4e7d396e5b Add WebSocket API to zeroconf to observe discovery (#143540)
* Add WebSocket API to zeroconf to observe discovery

* Add WebSocket API to zeroconf to observe discovery

* increase timeout

* cover

* cover

* cover

* cover

* cover

* cover

* fix lasting side effects

* cleanup merge

* format
2025-04-25 21:18:09 -04:00
J. Nick Koston
34d17ca458 Move state length validation to StateMachine APIs (#143681)
* Move state length validation to StateMachine async_set method

We call validate_state to make sure we do not allow any states
into the state machine that have a length>255 so we do not break
the recorder. Since async_set_internal already requires callers
to pre-validate the state, we can move the check to async_set
instead of at State object creation time to avoid needing to
check it twice in the hot path (entity write state)

* move check in async_set_internal so it only happens on state change

* no need to check if same_state
2025-04-25 21:15:15 -04:00
J. Nick Koston
03950f270a Remove lower call in async_reserve (#143682)
async_reserve is only called from the the entity_platform helper
which already ensures the entity_id is validated and in lower
case.
a783b6a0ab/homeassistant/helpers/entity_platform.py (L936)
2025-04-25 21:12:55 -04:00
Denis Shulyaka
7074331461 Preserve reasoning during tool calls for openai_conversation (#143699)
Preserve reasoning after tool calls for openai_conversation
2025-04-25 21:12:23 -04:00
Maksim Doroshko
4c9cd70f65 Set unique id in ephember (#143180)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-25 23:06:16 +01:00
Ville Skyttä
7a105de969 Add missing huawei_lte sensor translations (#143694) 2025-04-25 22:54:56 +01:00
Åke Strandberg
eec9a28fe8 Add zeroconf discovery to miele (#143259)
* Add zeroconf discovery

* Strip unnecessary code

* Remove one line more

* Remove one more

* Add test for zeroconf flow

* Finish zeroconf flow
2025-04-25 23:18:20 +02:00
Arie Catsman
963f1b1907 bump pyenphase to 1.26.0 (#143686) 2025-04-25 08:50:37 -10:00
dependabot[bot]
dcac9b5f20 Bump actions/download-artifact from 4.2.1 to 4.3.0 (#143650) 2025-04-25 20:40:18 +02:00
Joost Lekkerkerker
765a95c273 Set entities to config category in SmartThings (#143669) 2025-04-25 20:21:35 +02:00
Tomáš Bedřich
6a115d0133 Add S3 integration (#139325)
* Add S3 integration

* Improve translations and error handling

* Test S3 integration

* Update QoS

* Add missing data_description strings

* Fix missing async_initialize_backup in tests

* PR changes

* Remove unique ID, rely on abort_entries_match

* Raise only BackupAgentError (#139754), introduce decorator for error handling

* Switch to metadata-file based solution

* PR changes

* Revert strict typing

* Bump dependency

* Silence mypy

* Pass docs URLs as description_placeholders

* PR changes

* Rename _api to api

* PR Changes

* PR Changes 2

* Remove api abstraction

* Handle S3 multipart upload size limitations

* PR changes
2025-04-25 20:16:44 +02:00
Åke Strandberg
a057effad5 Add miele binary_sensor platform (#142903)
* Add binary_sensor platform

* Address review comments

* Adjust icons and names.

* Change Info to Notification active

* Trigger CI

* Trig CI

* Adjust tests

* Update strings.json

* Update strings.json
2025-04-25 19:32:08 +02:00
Dan
94b0800989 Fix surepetcare sensor error (#143286)
* fix: changed boolean to map to 'online' attribute.

* fix: added catch in case of future changes to prevent complete sensor failure.

* fix: surepetcare - added additional catches in case rssi values aren't included in online status.

* fix: remove hub_rssi when not defined.

* fix: proper code spacing

* fix: use .get for clarity instead of try.

* fix: now written in Python.

* fix: renamed variables for clarity.

* Update homeassistant/components/surepetcare/binary_sensor.py

* fix: update surepetcare test __init__.py mock_feeder with online status.

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-25 19:29:29 +02:00
Åke Strandberg
a783b6a0ab Add climate platform to miele integration (#143333)
* Add climate platform

* Merge

* Address review and improve test

* Address review comments

* Streamline entity naming

* Update tests/components/miele/test_climate.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-25 19:18:39 +02:00
Åke Strandberg
5302964eb6 Add button platform to miele (#143508)
* WIP Button platform

* Add button platform

* Disable by default, Address review , update tests

* Follow review comments
2025-04-25 19:10:32 +02:00
Norbert Rittel
261dbd16a6 Add common state "Fault" (#143390) 2025-04-25 18:47:19 +02:00
Guido Schmitz
672dbc03c6 Use coordinator data for devolo Home Network PLC data rate sensor (#143606) 2025-04-25 18:45:16 +02:00
Åke Strandberg
ed0bdf9e5f Add switch platform to miele integration (#142925)
* Add switch platform

* Add a type hint

* Update after review
2025-04-25 18:40:52 +02:00
Simone Chemelli
735e2e4192 Add missing exception translations to Comelit (#142861)
* Add missing exception translations to Comelit

* update quality scale

* remove unwanted placeholder
2025-04-25 18:34:29 +02:00
Martin Hjelmare
0aabb11220 Improve Z-Wave migration flow (#143673) 2025-04-25 18:33:19 +02:00
Jozef Kruszynski
09ad14bc28 Update Music Assistant browse media types (#143249)
* Update Music Assistant browse media types

* changes based on review comments
2025-04-25 18:32:48 +02:00
J. Nick Koston
d61e39743b Reduce ref counting in _async_write_ha_state (#143634)
* Reduce ref counting in _async_write_ha_state

It no longer makes sense to keep a temp reference
to entity_id and hass since the function was
refactored and there are very few accesses now.

* one more place we can reduce ref counts
2025-04-25 18:25:16 +02:00
Paulus Schoutsen
ea90df434b Add an icon to the VoIP assist satellite entities (#143671) 2025-04-25 11:02:53 -05:00
Norbert Rittel
67fc682df2 Sentence-case "webhook" in locative (#143646) 2025-04-25 17:27:32 +02:00
Norbert Rittel
381b495efc Change "webhook (applet)" to lowercase in ifttt (#143642) 2025-04-25 17:27:22 +02:00
Norbert Rittel
812db815f1 Change "webhook" to lowercase and use "webhook service" in dialogflow (#143643)
* Change "webhook" to lowercase and fix grammar in `dialogflow`

* Replace "integration" with "service"
2025-04-25 17:22:12 +02:00
Retha Runolfsson
24ee19f1e2 Update quality scale for switchbot (#143145)
update quality_scale
2025-04-25 17:21:01 +02:00
Everton Leite
f72c5ebb76 Add ratio attribute to Transmission torrent info (#143459) 2025-04-25 17:00:02 +02:00
epenet
1075ea1220 Bump renault-api to 0.3.0 (#143657) 2025-04-25 16:52:23 +02:00
Glenn Waters
ce7edca136 Bump env_canada lib to 0.10.2 (#143664) 2025-04-25 16:44:16 +02:00
Doug Hoffman
3e16857a1e Bump uiprotect to 7.5.5 (#143668)
* Update manifest.json

* Update requirements_all.txt

* Update requirements_test_all.txt
2025-04-25 16:43:52 +02:00
Martin Hjelmare
5b1e32f51d Clean up Z-Wave config flow (#143670) 2025-04-25 16:43:19 +02:00
Ludovic BOUÉ
4adf5ce826 Support for Matter 1.4 Water Heater device type (#131505)
* Create water_heater.json

* Update water_heater.json

* Update water_heater.json

* TankVolume

* TankPercentage

* WaterHeaterMode

WaterHeaterMode

* Update sensor.py

* ruff-format

* Update water_heater.json

 Attributes of WaterHeaterManagement Cluster on Endpoint 2
ClusterId 148 (0x0094)

* Update test_sensor.py

water_heater fixture

* Update test_sensor.py

* SensorDeviceClass=VOLUME_STORAGE for `TankVolume`

* `BoostStateEnum` map

* WaterHeaterManagementBoostState

* Update sensor.py

* WaterHeaterManagementEstimatedHeatRequired

* Fix UnitOfEnergy

* Format

* Add `device_types.WaterHeater` to Climate

* Strings for Tank sensors

* WaterHeater icons

* Update icons.json

* Update strings.json

* Update water_heater.json

* ruff-format

* Fix tests

* Fix sensor.py

* Fix icons

* WaterHeaterManagementEstimatedHeatRequired

* WaterHeaterManagementBoostState

* BoostState as a binary sensor

* ElectricalPowerMeasurement values

* Fix tests

* Create water_heater.py

* Update climate.py from dev branch

* Resolve conflicts

* ruff-format

* Add Platform.WATER_HEATER

* Update water_heater.py

* Update water_heater.py

* Update water_heater.py

* Update water_heater.py

* Add WaterHeaterManagement sensors

* Update tests

* Add select test

* Add strings

* First try with water_heater

* Testing current_operation

* BoostState attribute

* target_temperature attributes

* target_temperature attribute

* set_temperature and set_operation_mode

* turn_on / turn_off

* Trigger Boost command

* Fix WaterHeaterBoostInfoStruct

* Add test file

* Add climate cluster to fixture

* Add climate cluster to fixture

* Add tests

* Add ON_OFF feature

* Update tests

* Update tests

* Translate WaterHeaterMode

* Change description

* Update test and snapshots

* Update snapshots

* Set entity name to None to make the device name be the name of the entity

* Format

* Update water_heater.py

* Fix format

* ruff-format

* Import ServiceValidationError

* Update homeassistant/components/matter/water_heater.py

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

* Update water_heater.py

* Update test_water_heater.py

* Update test_water_heater.ambr

* Update test_water_heater.py

* Update select.py

* Update snapshots

* Rename to boost_info

* Set WaterHeaterMode

* Update snapshots

* Update snapshots

* Fix for warning
W7431: Argument 3 should be of type AddConfigEntryEntitiesCallback in async_setup_entry (hass-argument-type)

* Update strings.json

* Update strings and tests

* Fix missing brace

* Update tests

* fix test

* Updates strings

* Fix async_set_temperature

* Update tests

* Update tests

* Update homeassistant/components/matter/water_heater.py

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

* Sort strings in strings.json

* Update homeassistant/components/matter/water_heater.py

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

* Remove unused line

* Remove min/max target temperatures

* Remove BOOST_STATE_MAP

* Add comment

* Remove SUPPORT_FLAGS_HEATER

* Remove system_mode_value check

* Update homeassistant/components/matter/water_heater.py

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

* Reformat async_set_temperature()

* Update snapshots

* Remove MatterWaterHeaterMode selector

* Update snapshots

* Rename test to test_water_heater_set_temperature

* Add test_water_heater_set_operation_mode

* Remove reset_mock

* Update tests/components/matter/test_water_heater.py

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

* Add test_update_from_water_heater

* Add test_water_heater_turn_on_off

* Add test_water_heater_boostmode

* Fix SystemMode value for STATE_HIGH_DEMAND

* Add disable boost from water heater device side test

* Remove unused lines

* Remove unused lines

* Fix test indentation

* Fix water heater tests

* Check for None

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-25 15:28:28 +02:00
Petro31
4a1905a2a2 Update template cover to modern style config (#141878) 2025-04-25 15:22:49 +02:00
Michael
59af3a396c Remove unnecessary mixins from AVM Fritz!SmartHome (#143658)
remove unnecessary mixin
2025-04-25 14:12:59 +02:00
Martin Hjelmare
7c584ece23 Make proper Z-Wave reconfigure flow (#143549)
* Make proper Z-Wave reconfigure flow

* Improve backup_failed string
2025-04-25 14:19:03 +03:00
Petro31
ff2c901930 Update trigger based template entity resolution order (#140660)
* Update trigger based template entity resolution order

* add test

* fix most comments

* Move resolution to base class

* add comment

* remove uncessary if statement

* add more tests

* update availability tests

* update logic stage 1

* phase 2 changes

* fix trigger template entity tests

* fix trigger template entities

* command line tests

* sql tests

* scrape test

* update doc string

* add rest tests

* update sql sensor _update signature

* fix scrape test constructor

* move state check to trigger_entity

* fix comments

* Update homeassistant/components/template/trigger_entity.py

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

* Update homeassistant/helpers/trigger_template_entity.py

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

* Update homeassistant/helpers/trigger_template_entity.py

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

* update command_line and rest

* update scrape

* update sql

* add case to command_line sensor

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-04-25 13:17:25 +02:00
Erik Montnemery
dc8e1773f1 Remove unused defaults from entity_registry.RegistryEntry (#143655) 2025-04-25 12:41:58 +02:00
Stefan Agner
b0d9a2437d Bump aiohasupervisor from version 0.3.b1 to version 0.3.1 (#143585) 2025-04-25 12:20:28 +02:00
Paul Bottein
2be6ecd50f Assign plex update entity to server device (#143654)
* Assign plex update entity to server device

* Fix tests

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-25 11:21:14 +02:00
J. Nick Koston
fa0bb35e6c Avoid creating tasks to add entities when no entities are passed (#143647)
async_add_entities would return early if no entities
were passed but its a bit cleaner to not create the
task in the first place. I noticed in py-spy that
tplink was passing empty lists frequently
which made a task and than did nothing.
2025-04-25 10:16:20 +02:00
Franck Nijhof
360bffa3a9 2025.4.4 (#143653) 2025-04-25 09:47:05 +02:00
Maciej Bieniek
5b503f21d7 Abort Shelly flows if the device is not fully provisioned (#143652)
* Abort flows if the device is not fully provisioned

* Update tests
2025-04-25 10:37:58 +03:00
Franck Nijhof
2214d9b330 Bump version to 2025.4.4 2025-04-25 06:54:02 +00:00
Joost Lekkerkerker
6a2d733d85 Bump pysmartthings to 3.0.5 (#143586) 2025-04-25 06:53:49 +00:00
cnico
7392d5a30a Bump dio-chacon-api to v1.2.2 (#143489)
Bump dio-chacon-api to v1.2.2 to solve https://github.com/home-assistant/core/issues/142808
2025-04-25 06:53:48 +00:00
J. Nick Koston
b3deeca939 Bump aiohomekit to 3.2.14 (#143440) 2025-04-25 06:53:47 +00:00
Simone Chemelli
c38a3a239c Fix Vodafone Station config entry unload (#143371) 2025-04-25 06:53:45 +00:00
Simon Lamon
afa6ed09ef Sync random sensor device classes (#143368) 2025-04-25 06:53:44 +00:00
Simon Lamon
deb966128f Add scan interval and parallel updates to LinkPlay media player (#143324) 2025-04-25 06:53:43 +00:00
Marc Mueller
73707fa231 Fix licenses check for setuptools (#143292) 2025-04-25 06:53:41 +00:00
Marc Mueller
10ac39f6b2 Update setuptools to 78.1.1 (#143275) 2025-04-25 06:53:40 +00:00
Arjan
2e05dc8618 Météo-France: Additional states and change weather condition for "Ciel clair" (#143198)
* Additional new states and change for ciel-clair

* Adding new previously unmapped state

* Adding new forecast state

Adding Brouillard dense, reported after the review
2025-04-25 06:53:39 +00:00
J. Diego Rodríguez Royo
d8233b4de5 Create Home Connect active and selected program entities only when there are programs (#143185)
* Create active and selected program entities only when there are programs

* Test improvements
2025-04-25 06:53:37 +00:00
Arjan
7cbc3ea65f Meteofrance: adding new states provided by MF API since mid April (#143137) 2025-04-25 06:53:36 +00:00
J. Nick Koston
cb0523660d Improve error logging when state is too long (#143636) 2025-04-24 18:37:32 -10:00
Michael
605bf7e287 Add volume flow rate device class to water_flow sensor in PEGELONLINE (#143631)
add SensorDeviceClass.VOLUME_FLOW_RATE to water_flow sensor
2025-04-25 00:42:58 +02:00
Michael
3405b2549b Add new units L/h , L/s and m³/s to volume flow rate sensor device class (#143625)
add new units L/h , L/s and m³/s
2025-04-25 00:17:47 +02:00
Shay Levy
d83c617566 Fix naming consistency in Switcher service strings (#143629) 2025-04-25 01:00:42 +03:00
Brett Adams
7016c19b2f Disable polling for modern vehicles in Teslemetry (#143495) 2025-04-24 23:59:26 +02:00
Simone Chemelli
5cd4a0ced6 Use typed ConfigEntry in SamsungTV (#143627) 2025-04-24 23:55:10 +02:00
J. Nick Koston
347c1a2141 Remove duplicate _attr_should_poll in ESPHome EsphomeAssistSatelliteWakeWordSelect (#143624) 2025-04-25 00:41:51 +03:00
J. Nick Koston
46eae64ef6 Mark ESPHome quality as platinum (#143033) 2025-04-24 11:30:51 -10:00
J. Nick Koston
a74fe60b91 Fix ESPHome async_step_reconfigure signature (#143620) 2025-04-24 11:30:27 -10:00
J. Nick Koston
fab70a80bb Quality improvements for the ESPHome dashboard coordinator (#143619) 2025-04-24 23:20:05 +02:00
J. Nick Koston
2abe2f7d59 Remove unused hass from EsphomeAssistSatelliteWakeWordSelect (#143618) 2025-04-24 11:18:39 -10:00
Abílio Costa
cc970354d7 Add Maytag virtual integration supported by Whirlpool (#143612) 2025-04-24 23:14:39 +02:00
Jan Bouwhuis
e389ff2537 Allow float for device_tracker location accuracy (#143604) 2025-04-24 23:09:18 +02:00
hahn-th
088f0c82bd Bump homematicip to 2.0.1 (#143609) 2025-04-24 23:07:59 +02:00
Norbert Rittel
fa1bb27dd2 Fix sentence-casing of "webhook" in gpslogger and geofency (#143614)
* Fix sentence-casing of "webhook" in `gpslogger`

* Fix sentence-casing of "webhook" in `geofency`
2025-04-25 00:07:42 +03:00
J. Nick Koston
5a6ce34352 Improve ESPHome test typing (#143617) 2025-04-24 10:41:37 -10:00
Paulus Schoutsen
fdcb88977a Add voice styles to HA Cloud (#143605)
* Add voice styles to HA Cloud

* Add seperator and extract util
2025-04-24 16:23:15 -04:00
Stefan Agner
a584ccb8f7 Remove add-on changelog from cached information (#143526) 2025-04-24 22:14:46 +02:00
Mick Vleeshouwer
cc290b15f6 Fix available status of entities in Overkiz (#143538)
* Add availability property to OverkizEntity for device status

* Update homeassistant/components/overkiz/entity.py

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

---------

Co-authored-by: J. Nick Koston <nick+github@koston.org>
2025-04-24 21:58:36 +02:00
Shay Levy
575db4665d Fix Switcher review comments (#143607) 2025-04-24 21:54:25 +02:00
J. Nick Koston
a61aff8432 Cleanup duplicate entry data in ESPHome assist_satellite (#143611) 2025-04-24 09:51:58 -10:00
J. Nick Koston
3aa1c60fe3 ESPHome quality improvements round 2 (#143613)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-24 09:51:33 -10:00
Abílio Costa
39f3aa7e78 Mark Whirlpool quality as bronze (#143603) 2025-04-24 20:44:15 +02:00
J. Nick Koston
01e2c3272b Improve error message when ESPHome reconfigure selects an unexpected device (#143608) 2025-04-24 08:44:02 -10:00
J. Nick Koston
5afcd3e54e Remove the previously deprecated ESPHome assist in progress binary sensor (#143536) 2025-04-24 08:43:48 -10:00
Norbert Rittel
b081064954 Use correct singular and lowercase for "webhook" in mailgun (#143595) 2025-04-24 21:38:42 +03:00
Norbert Rittel
11e63ca96a Use correct singular and lowercase for "webhook" in twilio (#143596) 2025-04-24 21:38:03 +03:00
Abílio Costa
6457d46107 Raise ConfigEntryNotReady when fetching Whirlpool appliances fails (#143601) 2025-04-24 21:25:15 +03:00
Norbert Rittel
987bf4d850 Fix spelling of "counterclockwise" in deconz (#143523) 2025-04-24 21:23:40 +03:00
Paulus Schoutsen
fa80c0a88d Bump hass-nabucasa to 0.96.0 (#143542)
* Bump hass-nabucasa to 0.96.0

* Adjust for new voice info format
2025-04-24 13:12:11 -04:00
Norbert Rittel
f69484ba02 Fix missing plural on "Advisories" in environment_canada (#143562) 2025-04-24 19:17:30 +03:00
Norbert Rittel
11f63c7868 Use common strings for "already_in_progress" etc. in music_assistant (#143570)
* Use common string for "already_in_progress" in `music_assistant`

* Use common string for "cannot_connect" as well
2025-04-24 19:16:43 +03:00
Norbert Rittel
3245124553 Use common string for error::unknown in iometer (#143575) 2025-04-24 19:16:33 +03:00
Joost Lekkerkerker
44475967eb Bump pysmartthings to 3.0.5 (#143586) 2025-04-24 19:13:58 +03:00
Norbert Rittel
2d27b5ac53 Use common string for abort::unknown in srp_energy (#143576) 2025-04-24 17:20:53 +02:00
Erik Montnemery
2ae161d8b5 Wait for person integration in onboarding (#143584) 2025-04-24 17:08:53 +02:00
Norbert Rittel
aefe83b1a3 Use common string for "cannot_connect" in imgw_pib (#143574) 2025-04-24 16:54:41 +02:00
Abílio Costa
f86e85b931 Use None for Unknown state in Whirlpool sensor (#143582) 2025-04-24 15:12:45 +01:00
dependabot[bot]
993ebc9eba Bump github/codeql-action from 3.28.15 to 3.28.16 (#143546)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.15 to 3.28.16.
- [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.15...v3.28.16)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.16
  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-04-24 15:34:14 +02:00
dependabot[bot]
1d99bbf22e Bump actions/setup-python from 5.5.0 to 5.6.0 (#143545)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.5.0 to 5.6.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v5.5.0...v5.6.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 5.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 15:32:11 +02:00
Åke Strandberg
eb4fa635bf Add miele light platform (#143119)
* WIP

* Add light platform

* Address review comments

* Address review and improve tests

* Address review comments in tests
2025-04-24 15:02:39 +02:00
Michael
49522d93df Enable strict type checks for PEGELONLINE (#143563)
enable strict type checks for pegel_online
2025-04-24 14:42:47 +02:00
Norbert Rittel
9e0a7122f5 Fix typos and use a common string in synology_dsm (#143573)
- fix spelling of "Home Assistant", removing wrong hyphen
- remove excessive comma
- fix spelling of "passcode" (single word)
- capitalize "Zeroconf" (name)
- use common string for "reconfigure_successful"
2025-04-24 14:36:49 +02:00
Åke Strandberg
e4fe7ba985 Fix bug in miele diagnostics (#143569)
Fix bug when redacting identifiers in diagnostics
2025-04-24 14:16:31 +02:00
Simone Chemelli
f3ea11bbc1 Bump aiovodafone to 0.10.0 to use async_create_clientsession in Vodafone Station integration (#143537)
* Use async_create_clientsession in Vodafone Station integration

* bump library and rename method
2025-04-24 14:05:42 +02:00
Simone Chemelli
55de91530d Bump aiocomelit to 0.12.0 to use async_create_clientsession in Comelit integration (#143528)
* Use async_create_clientsession in Comelit integration

* bump library and rename method
2025-04-24 14:05:11 +02:00
Maciej Bieniek
290bbcfa3e Improve type annotation in the Shelly text and number platform (#143568)
* Define _id with type

* Define attribute_value with type
2025-04-24 13:55:40 +02:00
Maciej Bieniek
061a1be2bc Use DeviceInfo in the Shelly RPC entity base class (#143565)
Use DeviceInfo
2025-04-24 13:49:43 +02:00
Michael
4bd8c319dd Small fixes to the translation strings in PEGELONLINE (#143567)
small fixes
2025-04-24 13:47:23 +02:00
Michael
367022dd8c Use shorthand attributes in PEGELONLINE (#143564)
use shorthand attributes
2025-04-24 13:39:34 +02:00
ildar170975
f1975d9dbf Elevate Recorder "Error executing ..." from warning to error (#142816) 2025-04-24 11:36:39 +01:00
Retha Runolfsson
0764cf1165 Bump PySwitchbot to 0.60.1 (#143551) 2025-04-23 23:02:41 -10:00
Retha Runolfsson
a55a6e5c48 Add diagnostics for switchbot integration (#143389) 2025-04-23 21:02:44 -10:00
J. Nick Koston
5230aa8917 Increase zeroconf timeout to 10s (#143541) 2025-04-23 19:52:35 -10:00
Retha Runolfsson
f7e3e207b7 Add parallel updates in lock and lock unit tests for switchbot integration (#143391)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-23 19:49:09 -10:00
Erwin Douna
6f0c59f1be Tado bump 0.18.14 & race condition fix (#143531)
* Bump PyTado 0.18.14

* Add test
2025-04-24 08:44:17 +03:00
Josef Zweck
5fcdbd7742 Bump onedrive-personal-sdk to 0.0.14 (#143534) 2025-04-24 08:43:13 +03:00
J. Nick Koston
4173ff5339 Small quality fixes for ESPHome (#143535) 2025-04-23 09:42:27 -10:00
Abílio Costa
e8c4d08b25 Make Whirlpool test check for success after failure (#143525) 2025-04-23 21:00:32 +03:00
J. Nick Koston
36081c69e0 Break apart zeroconf integration to prepare for WebSocket API (#143490) 2025-04-23 07:47:37 -10:00
J. Nick Koston
65db3c1164 Fix display issues with ESPHome encryption key steps (#143483) 2025-04-23 18:39:32 +02:00
Maciej Bieniek
11f02e48d7 Use aioshelly method to set the target temperature for Shelly BLU TRV (#143504) 2025-04-23 18:37:29 +02:00
Stefan Agner
e41283a40a Handle Tailscale hosts without client connectivity details (#143505) 2025-04-23 18:36:55 +02:00
Abílio Costa
738e39413d Fix KeyError in energy websocket (#143519) 2025-04-23 18:34:48 +02:00
Norbert Rittel
8df0a950f7 Make use of "counterclockwise" consistent in hue (#143521) 2025-04-23 18:34:37 +02:00
Robert Resch
199a274c80 Remove deprecated hass.helpers (#143514) 2025-04-23 17:24:25 +02:00
Allen Porter
731d1ab796 Add quality scale for google calendar integration (#131328)
* Add quality scale for google calendar integration

* Update status and comments for the quality scale

* Update based on pr feedback

* Update quality_scale.yaml

* Update quality_scale.yaml

* Update quality_scale.yaml

* Update quality_scale.yaml

* Update quality_scale.yaml

* Update quality_scale.yaml for dependency-transparency

* Score silver, gold, and platinum levels

* Update quality scale

* Update quality scale
2025-04-23 16:32:20 +02:00
Manu
f6d8868eb6 Fix some minor issues and nitpicks in ntfy integration (#143516)
Fix nitpicks
2025-04-23 16:28:58 +02:00
Michael
253cc377b4 Remove boost and off temperature workaround from AVM Fritz!SmartHome (#142863)
* remove workaround

* remove hvacmode from mapping dict
2025-04-23 16:12:35 +02:00
J. Diego Rodríguez Royo
1bfd585f3c Adjust Home Connect max executions parameters (#143509)
Adjust max executions parameters to ensure that 1000 calls per day are not reached
2025-04-23 15:52:53 +02:00
Tobias Sauerwein
839eb0fe14 Bump pyatmo to 9.0.0 (#143512)
* wip

* fix

* fix

* fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-23 16:24:03 +03:00
Robert Resch
3dcd06806d Rename Nuki to Nuki Bridge (#143463)
* Rename Nuki to Nuki bridge

* Apply suggestions from code review

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

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-04-23 15:10:26 +02:00
Manu
3c174ce329 Add ntfy (ntfy.sh) integration (#135152)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-04-23 14:52:13 +02:00
Arjan
8a2347539c Météo-France: Additional states and change weather condition for "Ciel clair" (#143198)
* Additional new states and change for ciel-clair

* Adding new previously unmapped state

* Adding new forecast state

Adding Brouillard dense, reported after the review
2025-04-23 14:44:36 +02:00
Jan-Philipp Benecke
f22eca3d9e Remove deprecated hass.components (#141947) 2025-04-23 14:04:36 +02:00
Robert Resch
3cb301214f Fix hassfest type hints for ConfigSubentryFlow (#143502) 2025-04-23 12:14:00 +01:00
Marc Mueller
8215faea0d Replace unnecessary MappingProxyType runtime uses in integrations (#143507) 2025-04-23 12:22:12 +02:00
turakamou
beab4e0d7c Fix device tracker of freebox component to get devices from all interfaces (#142668) 2025-04-23 11:14:37 +01:00
Maciej Bieniek
b785d5297a Use aioshelly methods with Shelly RPC text and select entities (#143464) 2025-04-22 22:07:05 -10:00
Norbert Rittel
d86d7b8843 Fix sentence-casing in two strings of group (#143500)
Make them consistent with the rest of the integration.
2025-04-23 10:32:09 +03:00
cnico
2ca5f05555 Bump dio-chacon-api to v1.2.2 (#143489)
Bump dio-chacon-api to v1.2.2 to solve https://github.com/home-assistant/core/issues/142808
2025-04-23 10:31:43 +03:00
J. Nick Koston
e95188059f Bump fnv-hash-fast to 1.5.0 (#143494)
changelog: https://github.com/Bluetooth-Devices/fnv-hash-fast/compare/v1.4.0...v1.5.0
2025-04-23 10:31:23 +03:00
dependabot[bot]
73e6c8541c Bump sigstore/cosign-installer from 3.8.1 to 3.8.2 (#143501)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-23 09:26:01 +02:00
epenet
6f9c8b2aa0 Add exception translations to Renault (#143452) 2025-04-23 08:40:31 +02:00
Marc Mueller
2d20df37b1 Use runtime data for hyperion (#143461)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-22 13:24:47 -10:00
tdfountain
0b2e5cd253 Move device registry into function declaration for tests in NUT (#143349) 2025-04-22 13:11:14 -10:00
Arie Catsman
0208188bb5 Apply for bronze integration quality status for enphase_envoy (#136332)
Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-22 11:59:58 -10:00
tdfountain
44ae596929 Add translated UoM for non-standard sensor measures in NUT (#143307) 2025-04-22 11:56:43 -10:00
Maciej Bieniek
db0cbf1ea9 Use rpc_call decorator in the Shelly entity module (#143484) 2025-04-22 11:51:08 -10:00
Josef Zweck
896da4abbd Bump pylamarzocco to 2.0.0b3 (#143477) 2025-04-22 21:26:26 +02:00
Josef Zweck
731e9bbbfc Fix issue in with jellyfin during browsing (#143478) 2025-04-22 19:59:24 +01:00
Manu
bf1c138a3c Fix some mistakes in the Habitica tests (#143465) 2025-04-22 20:53:09 +02:00
Paulus Schoutsen
00fc3e2c29 ESPHome Assist Satellite share TTS url in RUN_START (#143460) 2025-04-22 14:22:31 -04:00
Norbert Rittel
a258aa50a5 Fix inconsistent spelling of "add-ons" in analytics_insights (#143466) 2025-04-22 19:35:29 +02:00
Marc Mueller
3cf12a4792 Replace unnecessary MappingProxyType annotations in integrations (#143451) 2025-04-22 18:14:32 +02:00
Andre Lengwenus
e56f6fafdc Remove redundant parameter from config_entry data of LCN integration (#135912) 2025-04-22 18:00:30 +02:00
Thomas55555
e9789e0b3e Add/remove devices on push in Husqvarna Automower (#142550)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-04-22 17:58:42 +02:00
Paulus Schoutsen
8aa30b0ccb Migrate VoIP to use Assist Pipeline TTS tokens (#139671)
* Migrate VoIP to use pipeline token

* migrate announcements to use TTS token
2025-04-22 10:24:24 -04:00
Manu
871a7c87bf Fix error in diagnostics test in ista EcoTrend integration (#143456) 2025-04-22 15:52:25 +02:00
Marc Mueller
72337e4c77 Fix lg_thinq RuntimeWarning in tests (#143448) 2025-04-22 14:22:04 +02:00
Manu
aedd60e74f Add diagnostics platform to ista EcoTrend (#143428) 2025-04-22 14:12:43 +02:00
Manu
9249ea0dbb Abort reauth flow on unique id mismatch in ista EcoTrend integration (#143430) 2025-04-22 14:11:09 +02:00
Josef Zweck
357ec7034e Roll back changes on upload failure in onedrive (#143012) 2025-04-22 14:10:52 +02:00
Marc Mueller
fa4e0519fa Remove unnecessary typing casts in anthropic (#143447) 2025-04-22 14:05:59 +02:00
Manu
ccd1a08aca Clear statistics on entry removal in ista EcoTrend integration (#143433) 2025-04-22 13:57:28 +02:00
Brett Adams
c654936a91 Cleanup base streaming entity in Teslemetry (#143375) 2025-04-22 13:40:09 +02:00
Manu
6c7317fbc3 Increase test coverage in ista EcoTrend integration (#143426)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-22 13:37:13 +02:00
Josef Zweck
159e55296f Make backup listing more resilient for onedrive (#143010)
Co-authored-by: Erwin Douna <e.douna@gmail.com>
2025-04-22 13:36:59 +02:00
Manu
8a084599d8 Refactor coordinator of ista EcoTrend integration (#143422) 2025-04-22 13:29:05 +02:00
Brett Adams
24b51e0582 Delay stream startup in Teslemetry (#142447) 2025-04-22 13:23:25 +02:00
Brett Adams
2e2faeb612 Add remaining Binary Sensor entities to Teslemetry (#143384) 2025-04-22 13:16:29 +02:00
Simon Lamon
d3a8af9ed0 Add scan interval and parallel updates to LinkPlay media player (#143324) 2025-04-22 13:11:39 +02:00
Josef Zweck
def11f9959 Change lamarzocco general update frequency (#143417) 2025-04-22 12:52:27 +02:00
Mick Vleeshouwer
0b64151ae0 Add icon translations and missing text translations for select in Overkiz (#143369) 2025-04-22 12:48:35 +02:00
Mick Vleeshouwer
a86c6e0809 Add 'auto' HVACMode for AtlanticElectricalTowelDryer in Overkiz (#143243) 2025-04-22 12:45:12 +02:00
Maciej Bieniek
88821b1d0e Use aioshelly methods with Shelly RPC number entities (#142482) 2025-04-22 12:44:02 +02:00
Marc Mueller
73f636c40d Use HassKey for wemo data (#143322) 2025-04-22 12:42:24 +02:00
Ville Skyttä
042e11b1d7 Add huawei_lte config flow data descriptions (#143388) 2025-04-22 12:40:57 +02:00
epenet
06cc505956 Remember previous input in renault config flow (#143438) 2025-04-22 12:39:13 +02:00
Manu
8aab7d5504 Add translations to UpdateFailed exceptions in IronOS (#143285) 2025-04-22 12:36:14 +02:00
Brett Adams
c52f73269e Dont cache available property in Teslemetry (#143380) 2025-04-22 12:35:36 +02:00
Josef Zweck
fa2ad54d90 Bump pylamarzocco to 2.0.0b2 (#143413) 2025-04-22 12:27:10 +02:00
Marc Mueller
fa9af6a021 Use HassKey for zone data (#143323) 2025-04-22 12:18:21 +02:00
epenet
a3605921c9 De-duplicate test helper function (#143437)
* De-duplicate test helper function

* One more
2025-04-22 12:04:12 +02:00
Michael
e9269a1d33 Remove deprecated yaml import from local file (#143405) 2025-04-22 11:50:28 +02:00
Michael
39807abc7d Remove deprecated yaml import from Canary (#143410) 2025-04-22 11:49:01 +02:00
Brett Adams
08ae05cc76 Remove wake helper from Teslemetry (#143376) 2025-04-22 11:40:03 +02:00
J. Nick Koston
2188603a49 Bump aiohomekit to 3.2.14 (#143440) 2025-04-22 11:00:40 +02:00
Michael
fbe2370df7 Remove deprecated action call addon_update from Supervisor (#143404)
remove deprecated action call addon_update
2025-04-22 10:39:17 +02:00
Brett Adams
8fb1c6535d Bump teslemetry-stream to 0.7.5 (#143387)
* bump

* v0.7.5
2025-04-22 11:24:07 +03:00
Abílio Costa
6534dff4bc Remove uneeded constructor from Whirlpool climate (#143408)
* Remove uneeded constructor from Whirlpool climate

* Update homeassistant/components/whirlpool/climate.py

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-22 11:04:09 +03:00
Abílio Costa
44f2897919 Use spec for Whirlpool mocks (#143416)
Use `spec` to cleanup unecessary mock function definitions.
2025-04-22 10:07:18 +03:00
J. Nick Koston
30b7e36f10 Bump yalexs-ble to 2.6.0 (#143420)
changelog: https://github.com/bdraco/yalexs-ble/compare/v2.5.7...v2.6.0
2025-04-22 10:06:28 +03:00
Norbert Rittel
2f6ad8ea4a Fix sentence-casing in intellifire (#143435)
* Fix sentence-casing in `intellifire`

* Update test_sensor.ambr

* Update test_binary_sensor.ambr
2025-04-22 10:05:01 +03:00
Norbert Rittel
78afd566ec Fix sentence-casing of "Error status" in motionmount (#143436) 2025-04-22 10:04:38 +03:00
Noah Husby
02cc679692 Bump aiorussound to 4.5.2 (#143431)
* Bump aiorussound to 4.5.1

* Bump aiorussound to 4.5.2
2025-04-22 10:03:24 +03:00
Josef Zweck
1064588c00 Add last cleaned sensor to lamarzocco (#143414) 2025-04-22 07:02:16 +02:00
Mick Vleeshouwer
54050f10b7 Add support for HVAC mode "OFF" in Somfy Heating Temperature Interface in Overkiz (#143396)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-21 21:31:44 +02:00
Markus Adrario
f0cf620854 Add Homee wind_monitoring_state to numbers (#139848) 2025-04-21 21:21:15 +02:00
Norbert Rittel
80f34620c8 Use common state for "Error" in peblar (#143273) 2025-04-21 20:24:02 +02:00
Michael
7030000348 Remove deprecated yaml import from Smarty (#143406)
remove deprecated yaml import
2025-04-21 18:20:57 +03:00
Álvaro Fernández Rojas
fc7f1ab42f Update aioairzone-cloud to v0.6.12 (#143400)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-04-21 18:10:26 +03:00
Ville Skyttä
89a6bc4354 Huawei LTE icon improvements (#143342)
* Set icon for Huawei LTE eNodeB ID

This identifies the base station ~ tower, so use the tower icon for it.

* Use antenna rather than (power) transmission tower across

https://github.com/home-assistant/core/pull/143342#discussion_r2051781388
2025-04-21 18:09:20 +03:00
J. Nick Koston
849121a124 Improve human-readable name for new/reauth/reconfig in ESPHome (#143302)
* Improve human-readable prompt when requesting ESPHome credentials

Users reported difficulty identifying which device needs reauthentication, especially when names are similar (e.g., `power-meter` vs `power-meter-EEFF`). Previously, only the hostname was shown, which led to confusion. This change includes the config entry title or friendly name—when available—in the prompt to make device identification easier.

* Update homeassistant/components/esphome/config_flow.py

* add missing cover

* tweaks

* one more

* one more

* cover

* some are ``, some are not, make them all ``

* Apply suggestions from code review

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-04-21 10:25:14 -04:00
J. Nick Koston
ba6ce28d3c Add DHCP discovery subscribe websocket API (#143106)
* Add DHCP discovery subscribe websocket API

* fix circular import

* fixes

* fixes

* fixes

* reduce

* reduce

* reduce

* fix tests

* fix tests

* rework

* tests

* reduce number of lines changed

* reduce
2025-04-21 10:25:04 -04:00
Simone Chemelli
4b8447bc82 Move quality scale to bronze for UptimeRobot (#143399) 2025-04-21 15:05:44 +01:00
J. Nick Koston
6698b3a1dc Improve ESPHome abort messages for already-configured devices (#143289)
* Improve ESPHome abort messages for already-configured devices

Users often struggle to identify which ESPHome device is already configured—especially when replacing a device or renaming an existing one.
This PR improves the abort messages to include more helpful details, so users can pinpoint the conflicting device without needing to dig through the `core.config_entries` file manually.

* Update homeassistant/components/esphome/strings.json
2025-04-21 09:41:15 -04:00
J. Nick Koston
352ef0d009 Correct handling of entities with empty name for ESPHome devices (#143366)
Correct handling of empty name for ESPHome devices

If the name was set to "", ESPHome should treat this as if the
name is empty. Since protobuf treats empty fields as "" we need
to handle this as `None` internally as otherwise it leads to
friendly names like "Friendly Name " with a trailing space and
unexpected entity_id formats

fixes #132532
2025-04-21 09:38:29 -04:00
J. Nick Koston
bb73ecc1f4 Restore service call performance by avoiding expensive runtime cast (#143378)
Improve service call performance by avoiding expensive runtime type checking

Most of the overhead here was casting
2025-04-21 09:37:10 -04:00
Simone Chemelli
7ea8827e69 Fix typos in UptimeRobot tests (#143397) 2025-04-21 14:11:51 +02:00
Simon Lamon
8fa48a9781 Sync random sensor device classes (#143368) 2025-04-21 13:58:47 +02:00
mdcdr
694c768666 Fix utility_meter wrong/old value on reset (#142951)
Co-authored-by: Erwin Douna <e.douna@gmail.com>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-04-21 12:45:57 +01:00
karwosts
51eb4770a7 Use config_entry selector for reload_config_entry (#143370) 2025-04-21 11:52:26 +01:00
J. Nick Koston
274a507bc4 Bump aiohttp to 3.11.18 (#143392)
changelog: https://github.com/aio-libs/aiohttp/compare/v3.11.17...v3.11.18
2025-04-21 13:42:21 +03:00
Retha Runolfsson
da8339066b Add light unit tests for switchbot (#140436) 2025-04-21 11:07:03 +01:00
Simone Chemelli
ee3ee5b165 Fix Vodafone Station config entry unload (#143371) 2025-04-20 23:56:09 +02:00
Adrien Cognee
e86bffdf89 Set Cozytouch hvac action from regulation mode in Overkiz (#143363)
Set cozytouch hvac action from regulation mode
2025-04-20 22:01:38 +02:00
Adrien Cognee
931161b007 Add missing icons to Cozytouch preset modes in Overkiz (#143364)
Add missing to cozytouch preset modes
2025-04-20 21:18:47 +02:00
Adrien Cognee
2d30ae2bd9 Rename Cozytouch comfort preset modes in Overkiz (#143365)
Rename cozytouch comfort preset modes
2025-04-20 21:18:31 +02:00
Norbert Rittel
1ad60881cb Fix spelling of "off-grid" in tesla_fleet (#143359)
* Fix spelling of "off-grid" in `tesla_fleet`

* Update test_number.ambr
2025-04-20 21:21:51 +03:00
Norbert Rittel
18cd389c77 Fix spelling of "off-grid" in tessie (#143358)
* Fix spelling of "off-grid" in `tessie`

* Update test_number.ambr
2025-04-20 21:21:29 +03:00
Norbert Rittel
26ea97cb44 Fix spelling of "off-grid" and "on-grid" in teslemetry (#143357)
* Fix spelling of "off-grid" and "on-grid" in `teslemetry`

* Update test_number.ambr
2025-04-20 21:21:06 +03:00
Norbert Rittel
d7f6db5efd Fix spelling of "off-grid" in apsystems (#143356)
* Fix spelling of "off-grid" in `apsystems`

* Update test_binary_sensor.ambr
2025-04-20 21:20:43 +03:00
Norbert Rittel
99b25efb67 Fix spelling of "off-grid" in goodwe (#143355) 2025-04-20 21:20:23 +03:00
karwosts
8699e69ae5 Optimize sliding window history_stats to not re-query the database every interval (#143279)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-20 08:08:28 -10:00
Mick Vleeshouwer
f928818bf1 Bump pyOverkiz to 1.17.1 (#143353) 2025-04-20 19:52:10 +02:00
Åke Strandberg
35e26629af Bump pymiele to 0.3.6 (#143338) 2025-04-20 20:45:28 +03:00
Ville Skyttä
6e7f49591f Upgrade huawei-lte-api to 1.11.0 (#143351) 2025-04-20 20:45:03 +03:00
Maciej Bieniek
7fea432102 Bump aioshelly to version 13.5.0 (#143350) 2025-04-20 20:42:39 +03:00
David Knowles
b76cddcf9f Bump pyschlage to 2025.4.0 (#143345) 2025-04-20 07:35:50 -10:00
Norbert Rittel
9b2faf207d Fix spelling of "off-peak", improve error message in teslemetry (#143321) 2025-04-20 12:49:16 +03:00
Norbert Rittel
9e59f07401 Use common state for "Error" in zha (#143320) 2025-04-20 11:55:36 +03:00
Norbert Rittel
928faeba0d Use common state for "Error" in tessie (#143319) 2025-04-20 11:49:34 +03:00
Norbert Rittel
521a44b953 Use common state for "Error" in roborock (#143318) 2025-04-20 11:49:17 +03:00
Norbert Rittel
fb60479578 Use common state for "Error" in prusalink (#143317) 2025-04-20 11:49:02 +03:00
Norbert Rittel
29b67505a7 Use common state for "Error" in bmw_connected_drive (#143316) 2025-04-20 11:37:27 +03:00
Norbert Rittel
6f178a8a23 Use common state for "Error", capitalize "1P" in lektrico (#143315)
- replace "Error" with new common state reference
- capitalize the abbreviation "1P" (single phase)
2025-04-20 11:37:07 +03:00
Norbert Rittel
b29c295adc Use common state for "Error" in jvc_projector (#143283) 2025-04-20 10:57:00 +03:00
Norbert Rittel
8b0f9d4317 Use common state for "Error" in aranet (#143282) 2025-04-20 10:56:27 +03:00
Norbert Rittel
e1ba2a8ca2 Use common state for "Error" in matter (#143268) 2025-04-20 10:56:12 +03:00
Norbert Rittel
eb852cec43 Use common state for "Error" in tesla_wall_connector (#143272) 2025-04-20 10:55:50 +03:00
Arjan
0bed5727cb Linkplay: bump lib to 0.2.4 (#143313) 2025-04-20 09:53:40 +02:00
Marc Mueller
a749ecceed Add helper method to clear logger overwrites for tests (#143301) 2025-04-20 09:28:30 +02:00
tdfountain
b5b934b8a1 Use _get_reauth_entry rather than storing in flow for NUT (#143308)
Use _get_reauth_entry rather than storing in flow
2025-04-20 08:30:15 +02:00
Mick Vleeshouwer
6b09fe2377 Support new local token generation method in Overkiz (#143181)
* Initial implementation of new token method for Local API

* Improve translations

* Update text

* Bugfix

* Bugfix

* Bugfixes

* Fixes

* Bugfix

* Bugfix

* Fix

* small fix

* Fix tests

* Refactor token usage in Overkiz config flow tests

* Refactor local API configuration flow tests for clarity and update reauthentication logic

* Improve comments

* Update tests

* Update homeassistant/components/overkiz/strings.json

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

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-20 06:29:18 +02:00
tdfountain
cbb4ff2fd9 Remove icon for button that uses default icon in NUT (#143305) 2025-04-19 16:35:13 -10:00
tdfountain
eb642e8a06 Remove unused variable in test util for NUT (#143304) 2025-04-19 16:22:10 -10:00
tdfountain
b97d8e163d Fix type of port in test util for NUT (#143303) 2025-04-19 16:13:05 -10:00
tdfountain
7c0d2832cd Add remove device support to NUT (#143293) 2025-04-19 16:07:42 -10:00
Marc Mueller
205cfae1a4 Update setuptools to 78.1.1 (#143275) 2025-04-19 15:57:53 -10:00
Marc Mueller
f861a2b72c Fix licenses check for setuptools (#143292) 2025-04-20 02:24:44 +02:00
Marc Mueller
5843e63878 Add contextmanager to reset logger after set_level call in tests (#143295) 2025-04-20 02:13:01 +02:00
Marc Mueller
961f8afe53 Remove debug option in unifiprotect tests (#143296) 2025-04-19 14:00:22 -10:00
tdfountain
37769b94cd Remove unnecessary persistent notification in test case for NUT (#143298)
Remove unnecessary persistent notification
2025-04-20 01:55:26 +02:00
tdfountain
f5c0c207ec Fix display state to return None instead of STATE_UNKNOWN in NUT (#143297)
Fix return value to avoid STATE_UNKNOWN
2025-04-20 01:53:29 +02:00
tdfountain
b4344a8de2 Remove unused variable and import in NUT (#143294)
Remove unused variable in validate_input
2025-04-20 01:50:22 +02:00
J. Nick Koston
e02c200775 Bump aiohttp to 3.11.17 (#143290) 2025-04-19 12:30:43 -10:00
Marc Mueller
8f4435019b Reset logging level in esphome test (#143291) 2025-04-19 23:59:45 +02:00
Norbert Rittel
ec55f716e1 Use common state for "Error" in fronius (#143284) 2025-04-19 23:06:44 +02:00
Thomas55555
012f6b660c Add more states to error sensor in Husqvarna Automower (#143270)
* Add more states to error sensor in Husqvarna Automower

* Use new common state

* tests and duplicates
2025-04-19 21:16:01 +02:00
Norbert Rittel
9de136789c Use common state for "Error" in blue_current (#143274) 2025-04-19 21:13:52 +02:00
Thomas55555
84a8c1312f Add entity categories to Husqvarna Automower sensors (#143277) 2025-04-19 21:13:24 +02:00
Norbert Rittel
21f9ad3994 Use common state for "Error" in home_connect (#143276) 2025-04-19 21:13:09 +02:00
Norbert Rittel
a9e77dc0db Use common state for "Error", fix sentence-casing in tplink_omada (#143278)
* Use common state for "Error", fix sentence-casing in `tplink_omada`

- replace "Error" with common state reference
- correct missing sentence-casing in several strings

* Update test_switch.ambr
2025-04-19 21:12:14 +02:00
Abílio Costa
626eb77060 Replace literals with consts in Govee Light Local tests (#143280) 2025-04-19 21:11:36 +02:00
Abílio Costa
7674f6b5aa Turn on after setting parameters in Govee Light Local (#143233) 2025-04-19 19:56:56 +01:00
Norbert Rittel
16c72c491d Use common state for "Error" in lawn_mower (#143266) 2025-04-19 21:23:51 +03:00
Norbert Rittel
99e1245c9b Use common state for "Error" in vacuum (#143265) 2025-04-19 21:22:04 +03:00
tdfountain
f42b137c1b Add missing data description strings of config flow for NUT (#143267) 2025-04-19 07:27:03 -10:00
Maciej Bieniek
4e852911aa Add tracker power saving binary sensor to Tractive integration (#142718)
* Add power saving binary sensor

* Update tests

* tracker_state_reason is not always present in hardware event
2025-04-19 17:30:15 +02:00
Paulus Schoutsen
30ab068bfe Wyoming to use tokens instead of media source IDs for TTS (#139668)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-19 12:50:41 +02:00
Tsvi Mostovicz
6499ad6cdb Cleanup tests for Jewish calendar integration (#138793) 2025-04-19 12:46:04 +02:00
Paulus Schoutsen
6f99b1d69b TTS to use ffmpeg in streaming fashion (#140536) 2025-04-19 12:41:52 +02:00
J. Nick Koston
42c4ed85a1 Remove legacy format exception for ESPHome entity naming (#143049) 2025-04-19 12:41:07 +02:00
J. Nick Koston
3e3697dc7a Add reconfigure support to ESPHome (#143132) 2025-04-19 12:40:07 +02:00
epenet
ff1ab1da37 Decouple service registration in Renault (#143210) 2025-04-19 12:36:54 +02:00
Allen Porter
3da77726d0 Allow selection of multiple LLM APIs in Anthropic (#143190) 2025-04-19 12:34:51 +02:00
Josef Zweck
879cdcc0a4 Filter media players in browse media action to supported feature (#143183) 2025-04-19 12:31:39 +02:00
Josef Zweck
9b8a35dbb3 Add sensors to lamarzocco (#143156)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-19 12:30:22 +02:00
Josef Zweck
7c7f18b501 Add preinfusion settings to lamarzocco (#143159) 2025-04-19 12:29:08 +02:00
Franck Nijhof
6f0a9910ea 2025.4.3 (#143253) 2025-04-19 12:22:36 +02:00
Sid
6e8c971038 Initialize time _attr_native_value with None (#143171) 2025-04-19 12:08:29 +02:00
Josef Zweck
09131d8647 Add more features to lamarzocco updates (#143157) 2025-04-19 12:07:11 +02:00
J. Nick Koston
930fa18224 Avoid creating ClientTimeout object on every hassio ingress request (#143254) 2025-04-19 12:05:27 +02:00
Josef Zweck
9c9c115d1a Add websocket connectivity binary sensor to lamarzocco (#143161) 2025-04-19 11:52:56 +02:00
K
b6e9643586 Continue conversation with full-width question mark support (#143078) 2025-04-19 11:51:56 +02:00
LG-ThinQ-Integration
83f2acddf8 Raise ConfigEntryNotReady mqtt setup fails In LG ThinQ (#140488)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-04-19 11:50:13 +02:00
MichaelMKKelly
35f9cc55f1 Fix Automation/Script: sequence within a parallel ignoring enabled flag (#142977)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-19 11:49:05 +02:00
Allen Porter
4483025856 Update Google Generative AI to allow multiple LLM APIs (#143191) 2025-04-19 11:44:12 +02:00
Allen Porter
61e4be4456 Update OpenAI conversation agent to allow multiple LLM APIs (#143189) 2025-04-19 11:43:27 +02:00
Retha Runolfsson
f11f4510a2 Add switchot switches unit test with restore state (#143250) 2025-04-19 11:39:52 +02:00
Norbert Rittel
b3c3be0483 Add common state for "Error" (#143139) 2025-04-19 11:32:05 +02:00
Brett Adams
7c3df46570 Add typed listeners to Teslemetry binary sensor platform (#142238) 2025-04-19 11:29:14 +02:00
Franck Nijhof
b8793760a1 Bump version to 2025.4.3 2025-04-19 09:17:04 +00:00
Joost Lekkerkerker
6264f9c67b Fix missing binary sensor for CoolSelect+ in SmartThings (#143216) 2025-04-19 09:16:46 +00:00
Joost Lekkerkerker
2a74deb84e Fix SmartThings soundbar without media playback (#143170) 2025-04-19 09:16:45 +00:00
puddly
9d1ff37a79 Bump ZHA to 0.0.56 (#143165)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-19 09:16:43 +00:00
Franck Nijhof
2f99164781 Reduce jumping Starlink uptime sensor (#143076) 2025-04-19 09:16:42 +00:00
Marc Mueller
80ef32f09d Add Python-2.0 to list of approved licenses (#143052) 2025-04-19 09:16:40 +00:00
G Johansson
63be0e2e1a Bump pysmhi to 1.0.2 (#143007)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-19 09:16:39 +00:00
Simone Chemelli
74c4553bb0 Increase uptime deviation for Shelly (#142996)
* Increase uptime deviation for Shelly

* fix test

* make troubleshooting easy

* change deviation interval

* increase deviation to 1m
2025-04-19 09:16:38 +00:00
starkillerOG
e240707b32 Bump reolink-aio to 0.13.2 (#142985) 2025-04-19 09:16:36 +00:00
Simone Chemelli
7c867852a9 Fix switch state for Comelit (#142978) 2025-04-19 09:16:35 +00:00
G Johansson
2d149dc746 Bump holidays to 0.70 (#142954) 2025-04-19 09:16:33 +00:00
Alex L
7edcddd3e4 Update UK Transport Integration URL (#142949) 2025-04-19 09:16:32 +00:00
Tsvi Mostovicz
71f658b560 Don't do I/O while getting Jewish calendar data schema (#142919) 2025-04-19 09:16:31 +00:00
Guido Schmitz
9886db5d6d Bump devolo_plc_api to 1.5.1 (#142908) 2025-04-19 09:16:29 +00:00
Glenn Waters
c236cd070c Bump Environment Canada library to 0.10.1 (#142882) 2025-04-19 09:16:28 +00:00
Kevin Stillhammer
9f1a830d32 Only get tracked pairs for kraken (#142877)
Only get tracked pairs

Getting all available pairs leads to a too long request URL
2025-04-19 09:16:26 +00:00
Allen Porter
1e69ce9111 Fix quality loss for LLM conversation agent question answering (#142873)
* Fix a bug parsing a streaming response with no json

* Remove debug lines

* Fix  quality loss for LLM conversation agent question answering

* Update tests
2025-04-19 09:15:41 +00:00
starkillerOG
389297155d Fix Reolink Home Hub Pro playback (#142871)
Fix Home Hub Pro playback
2025-04-19 09:12:22 +00:00
starkillerOG
c341b86520 Select correct Reolink device uid (#142864)
* Select correct device_uid

* Fix styling

* restructure

* Add test

* Update test_util.py

* Add explanation string
2025-04-19 09:12:21 +00:00
Eric Park
88eef379b2 Keep track of last play status update time in Apple TV (#142838) 2025-04-19 09:12:20 +00:00
peteS-UK
34767d4058 Force Squeezebox item id to string (#142793)
force item_id to string
2025-04-19 09:12:18 +00:00
Dionisis Toulatos
12c3d54a63 Fix MQTT device discovery when using node_id (#142784)
* Fix device discovery when using node_id

* tests

---------

Co-authored-by: jbouwh <jan@jbsoft.nl>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-04-19 09:12:16 +00:00
Manu
33a185dade Fix error in recurrence calculation of Habitica integration (#142759)
Fix error in rrule calculation of Habitica integration
2025-04-19 09:12:15 +00:00
Erik Montnemery
c1c5776d85 Correct enum member check in home_connect (#142666)
* Correct enum member check in home_connect

* Update homeassistant/components/home_connect/coordinator.py

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

* Add mypy override

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-19 09:12:14 +00:00
Brett Adams
eda642554d Check Energy Live API works before creating the coordinator in Tessie (#142510)
* Check live API works before creating the coordinator

* Fix diag

* Fix mypy on entity

* is not None
2025-04-19 09:12:11 +00:00
Chase Mamatey
51f5ce013f Fix duke_energy data retrieval to adhere to service start date (#136054) 2025-04-19 09:12:10 +00:00
Josef Zweck
44450f9d7d Fix reconfigure flow for lamarzocco (#143152) 2025-04-19 11:07:45 +02:00
Brett Adams
c34e280fc2 Add typed listeners to Teslemetry sensor platform (#142236) 2025-04-19 10:56:29 +02:00
J. Nick Koston
aef266b940 Refactor live history and logbook to avoid unnecessary task creation for recorder sync (#143244) 2025-04-19 10:55:11 +02:00
G Johansson
f873219d25 Bump pysmhi to 1.0.2 (#143007)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-18 22:45:09 -10:00
Louis Christ
7de5646d6b Bump pyblu to 2.0.1 (#143178) 2025-04-19 10:41:50 +02:00
puddly
1e89f3ec9a Bump ZHA to 0.0.56 (#143165)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-19 10:38:34 +02:00
Joost Lekkerkerker
d8d9449e2b Fix SmartThings soundbar without media playback (#143170) 2025-04-19 09:53:31 +02:00
Marc Mueller
850d9a0254 Update types packages (#143187) 2025-04-19 09:52:09 +02:00
tmenguy
c422bcf1e2 Make renault scan interval dynamic (#142964)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-04-19 09:51:41 +02:00
Retha Runolfsson
27b7fb6f91 Add humidifier unit test for switchbot (#143207) 2025-04-19 09:48:01 +02:00
Mick Vleeshouwer
302dbc424b Add device class and options to sensor defect for Overkiz (#143241) 2025-04-19 06:51:33 +02:00
J. Nick Koston
a7922690c4 Adjust cover reproduce state to prefer setting positions if supported (#143226) 2025-04-18 11:34:33 -10:00
Mick Vleeshouwer
5541de2bcb Fix state class for tariff sensor in Overkiz (#143234) 2025-04-18 22:15:35 +02:00
Mick Vleeshouwer
4c14184111 Add native units, device classes, and state classes for consumption sensors in Overkiz (#143239) 2025-04-18 22:13:49 +02:00
Mick Vleeshouwer
d78f63e4d0 Add device class for outlet engine sensor in Overkiz integration (#143238) 2025-04-18 22:12:30 +02:00
Mick Vleeshouwer
f38d50b928 Add duration device class and unit of measurement for Overkiz (#143237) 2025-04-18 22:11:51 +02:00
Mick Vleeshouwer
5c5b832d01 Add device class for moisture detection in Overkiz binary sensors (#143236) 2025-04-18 22:11:06 +02:00
Jan Bouwhuis
2b4c5178f4 Fix Intergas climate entity category (#143240) 2025-04-18 22:09:50 +02:00
J. Nick Koston
59588f960d Fix flakey Bluetooth options flow tests (#143215) 2025-04-18 10:08:17 -10:00
Joost Lekkerkerker
d3b335f53f Fix missing binary sensor for CoolSelect+ in SmartThings (#143216) 2025-04-18 20:41:18 +03:00
Josef Zweck
c3037bae39 Add service definition for user facing action to media player search (#143177)
* Add service definition for user facing action to media player search

* add filter

* Reorder and update fields in services.yaml
2025-04-18 15:07:46 +02:00
J. Nick Koston
9b1ab34352 Fix hassio mocking in ESPHome dashboard tests (#143212) 2025-04-18 14:11:36 +02:00
J. Nick Koston
221a8597da Make unknown media source exception translatable (#143208) 2025-04-18 01:17:56 -10:00
J. Nick Koston
45022752a0 Make remaining ESPHome exceptions translatable (#143184) 2025-04-17 22:22:08 -10:00
J. Nick Koston
aa342eb476 Add additional config entry typing to ESPHome (#143126) 2025-04-17 22:03:52 -10:00
J. Nick Koston
32b26b8270 Add icons for ESPHome entities (#143202) 2025-04-17 21:56:11 -10:00
J. Nick Koston
e07c29caad Small improvements to ESPHome setup (#143204) 2025-04-17 21:51:16 -10:00
J. Nick Koston
b487c12ab1 Remove unreachable code in ESPHome media_players (#143203) 2025-04-17 21:51:03 -10:00
J. Diego Rodríguez Royo
60293648dc Create Home Connect active and selected program entities only when there are programs (#143185)
* Create active and selected program entities only when there are programs

* Test improvements
2025-04-18 00:09:52 +02:00
Abílio Costa
e7994b3da1 Fix missing go2rtc dependency in non-docker setups (#143172) 2025-04-17 10:03:47 -10:00
Josef Zweck
b88bf74e13 Cleanup lamarzocco tests (#143176) 2025-04-17 20:53:47 +02:00
peteS-UK
8355727eb1 Fix for media content type case in Squeezebox (#143099) 2025-04-17 18:56:28 +02:00
Marc Mueller
c7290908cc Update mypy-dev 1.16.0a8 (#143166) 2025-04-17 18:13:00 +02:00
Abílio Costa
1307cd4b10 Add bronze quality scale for Whirlpool (#142752) 2025-04-17 15:31:12 +01:00
Abílio Costa
c0b2193718 Use freezer for time change in Whirlpool config flow test (#143162) 2025-04-17 16:14:21 +02:00
Abílio Costa
f9bb7e404e Improve Whirlpool config flow test completeness and naming (#143118) 2025-04-17 13:40:57 +01:00
Josef Zweck
bbb8a1bacc Migrate lamarzocco to pylamarzocco 2.0.0 (#142098)
* Migrate lamarzocco to pylamarzocco 2.0.0

* bump manifest

* Remove CONF_TOKEN

* remove icons

* Rename coordiantor

* use none for token

* Bump version

* Move first get settings

* remove sensor snapshots

* Change iot_class from cloud_polling to cloud_push

* Update integrations.json

* Re-add release url

* Remove extra icon, fix native step

* fomat

* Rename const

* review comments

* Update tests/components/lamarzocco/test_config_flow.py

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

* add unique id check

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-17 13:34:06 +02:00
Petar Petrov
0aaa4fa79b Create empty Z-Wave JS device on smart start provisioning (#140872)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-17 13:18:48 +02:00
Paul Bottein
4ed81fb03f Use firmware name from device class for matter update entity (#143140)
* Use firmware name from device class for matter update entity

* Update tests
2025-04-17 12:50:10 +02:00
Åke Strandberg
7d13c2d854 Add miele diagnostics platform (#142900) 2025-04-17 11:42:07 +02:00
Petar Petrov
cadbb623c7 New ZWave-JS migration flow (#142717)
* ZwaveJS radio migration flow

* Partial migration flow

* basic migration flow

* report exact progress to frontend

* Display backup file path

* string tweak

* update tests

* improve exception handling

* radio -> controller

* test tweak

* test tweak

* clean up and test error handling

* more tests

* test progress

* PR comments

* fix tests

* test restore progress

* more coverage

* coverage

* coverage

* make mypy happy

* PR comments

* Apply suggestions from code review

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

* ruff

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-17 10:14:47 +02:00
J. Nick Koston
4d959fb91c Bump esphome-dashboard-api to 1.3.0 (#143128) 2025-04-17 09:57:55 +02:00
J. Nick Koston
1fb3d8d601 Bump habluetooth to 3.39.0 (#143125) 2025-04-17 09:56:38 +02:00
J. Nick Koston
dd4334e3ba Bump yarl to 1.20.0 (#143124) 2025-04-17 09:55:30 +02:00
Sid
5eee47d1e4 Bump eheimdigital to 1.1.0 (#143138) 2025-04-17 09:44:40 +02:00
Arjan
54def1ae0e Meteofrance: adding new states provided by MF API since mid April (#143137) 2025-04-17 08:47:37 +02:00
J. Nick Koston
6a36fc75cf Fix flakey ESPHome dashboard tests (attempt 2) (#143123)
These tests do not need a config entry, only the integration
to be set up. Since I cannot replicate the issue locally after
1000 runs, I switched it to use async_setup_component to minimize
the potential problem area and hopefully fix the flakey test

I also modified the test to explictly set up hassio to ensure
the patch is effective since we have to patch a late import

last observed flake: https://github.com/home-assistant/core/actions/runs/14503715101/job/40689452294?pr=143106
2025-04-17 08:36:34 +02:00
Josef Zweck
bf69d4e0a8 Add search to media_player (#140321)
* Add search to media_player

* rename attr

* Add searchable property

* add pagination parameters

* Add suggested changes

* Apply suggestions

* Fix cast tests

* Fix first set of components

* update snapshot

* More tests

* more test fixes

* Rename attr

* first own test

* Add to google test

* Add service test

* Rename search query arg

* Add required feature to search service

* remove kwarg

* Update homeassistant/components/media_player/__init__.py

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>

* fix hue test

---------

Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-04-16 23:09:16 +02:00
Eric Park
fe248a2ebd Keep track of last play status update time in Apple TV (#142838) 2025-04-16 22:41:32 +02:00
Norbert Rittel
49ad9a8bd5 Use common states for "Auto" and "Manual" in smartthings (#142976) 2025-04-16 22:28:34 +02:00
Franck Nijhof
fa75b477e9 Add device class for fuel sensor in StarLine integration (#143111) 2025-04-16 22:11:14 +02:00
Guido Schmitz
3c1d93f503 Use entity_registry_enabled_by_default fixture in devolo Home Network (#143108) 2025-04-16 21:12:50 +02:00
Norbert Rittel
21fabd3afa Use common state for "Manual" in tolo (#143104) 2025-04-16 21:47:07 +03:00
Norbert Rittel
0ec4652b52 Use common state for "Manual", unify intercardinal directions in netatmo (#143062)
In US English the intercardinal directions (Northeast, Southwest, etc.) are written in single words, not using hyphens. That can be adapted in Lokalise for Home Assistant's "English (United Kingdom)" UI language.

Making them identical in both occurrences also resolves the missing sentence-casing of "North-East" etc.
2025-04-16 21:44:24 +03:00
Abílio Costa
e901dc4ec4 Move _attr_should_poll to base Whirlpool entity class (#143100) 2025-04-16 21:43:38 +03:00
Artur Pragacz
9d02436a72 Remove outdated test for locks (#143061)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-04-16 18:34:14 +01:00
Guido Schmitz
9fb7542a6f Remove old test in devolo Home Network (#143095) 2025-04-16 17:29:44 +01:00
Norbert Rittel
ddf37a847d Use common state for "Manual", fix sentence-casing in homekit_controller (#143083) 2025-04-16 06:19:43 -10:00
Evan Graham
024ec2b153 OpenAI Conversation: Add web search support for new models (#143054)
Use a list of openai models for web search support in openai_conversation
2025-04-16 18:08:36 +02:00
Alex Meridian
f8b56c460e Update blueprint syntax (#135050) 2025-04-16 15:41:14 +02:00
Guido Schmitz
42277955fa Use icon translations in devolo Home Network device tracker (#143089) 2025-04-16 15:38:26 +02:00
Abílio Costa
950c332e36 Fix wrong return type in Whirlpool test helper (#143085) 2025-04-16 14:10:25 +02:00
Simone Chemelli
44d6f0bc2b Increase uptime deviation for Shelly (#142996)
* Increase uptime deviation for Shelly

* fix test

* make troubleshooting easy

* change deviation interval

* increase deviation to 1m
2025-04-16 14:02:27 +02:00
rappenze
9bff88ad3e Add diagnostics to fibaro integration (#143003)
* Add diagnostics to fibaro

* Enhance diagnostic test

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-16 14:52:42 +03:00
Guido Schmitz
8de23b9559 Raise on failed switching in devolo Home Network (#143072) 2025-04-16 13:49:37 +02:00
Abílio Costa
fbba0d9a21 Remove unused fixtures from Whirlpool (#143082) 2025-04-16 13:39:28 +02:00
Abílio Costa
5beb415ada Refactor Whirlpool climate tests (#142689) 2025-04-16 12:03:40 +01:00
Franck Nijhof
187024367a Reduce jumping Starlink uptime sensor (#143076) 2025-04-16 12:23:54 +02:00
Norbert Rittel
e6262de5ab Use common state for "Manual" in homee (#143063) 2025-04-16 12:44:14 +03:00
Maksim Doroshko
c96bb45940 Use pyephember2 library in ephember (#140459)
* multiple homes support, all zones visible

* Update homes and zones

* set zone, target temp, curent temp, hot water type fixes

* Hotwater devices added

* Mode ajust

* next version could be 0.4.4

* depricated climate feature removed ClimateEntityFeature

* Migrate to pyephember2

* HEAT_COOL mode

* Revert EPH_TO_HA_STATE to HEAT_COOL

* homes and ember declaretion removed

* cleaning try catch blocks, flatten list on zones

* refactored

* Version updated

* try catch returned

* pyephember2==0.4.12

* Update homeassistant/components/ephember/climate.py

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

* reverting unique_id and depricated vClimateEntityFeature.AUX_HEAT

* Update homeassistant/components/ephember/climate.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-16 10:43:39 +02:00
Joost Lekkerkerker
50796a6a77 Grade Syncthru on the quality scale (#142829)
* Grade Syncthru on the quality scale

* Update homeassistant/components/syncthru/quality_scale.yaml

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

* Update homeassistant/components/syncthru/quality_scale.yaml

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-16 10:42:41 +02:00
J. Nick Koston
0fb0e132b6 Explictly set PARALLEL_UPDATES in ESPHome assist_satellite entity platform (#143068) 2025-04-15 21:39:47 -10:00
Norbert Rittel
494a991d10 Use common states for "Auto" / "Manual" in lametric (#143066) 2025-04-16 09:25:37 +02:00
J. Nick Koston
c32654db18 Add translated exception for ESPHome action call failures (#143067) 2025-04-15 21:19:05 -10:00
J. Nick Koston
f4e7ccfcfc Explictly set PARALLEL_UPDATES for ESPHome entity platforms (#143065) 2025-04-15 21:11:05 -10:00
J. Nick Koston
4a4cbe011a Bump aioesphomeapi to 30.0.1 (#143056) 2025-04-16 08:00:20 +02:00
J. Nick Koston
f68111c59f Fix flakey ESPHome dashboard setup test (#143057) 2025-04-16 07:59:09 +02:00
Kamil Breguła
1d845623a8 Add links to enable Google Calendar API (#142377)
* Add links to enable Google Calendar API

* Update tests
2025-04-15 21:24:32 -06:00
Marc Mueller
a93121a88d Add Python-2.0 to list of approved licenses (#143052) 2025-04-16 00:27:07 +02:00
J. Nick Koston
4ea1d88826 Improve ESPHome strings (#143048) 2025-04-15 11:35:20 -10:00
RogerSelwyn
a87b6fee89 Update sky_hub to remove codeowner (#143047) 2025-04-15 22:57:45 +02:00
Norbert Rittel
9baf5ad404 Use common states for "Auto" and "Manual" in flipr (#143011) 2025-04-15 22:39:20 +02:00
Norbert Rittel
5fd7306446 Use common state for "Auto" in wolflink (#143014) 2025-04-15 22:38:57 +02:00
Norbert Rittel
3a8828325a Use common state for "Auto", fix sentence-casing of "QR code" in romy (#143016) 2025-04-15 22:38:06 +02:00
Norbert Rittel
57bf59f6bd Use common state for "Auto" in xiaomi_miio (#143015) 2025-04-15 22:37:21 +02:00
Franck Nijhof
f0d81d077f Adjust issue template to assign Bug issue type (#143017) 2025-04-15 22:09:59 +02:00
Norbert Rittel
bb5aefb9e4 Use common state for "Manual" in hive (#143009) 2025-04-15 21:44:41 +03:00
Norbert Rittel
6a1739e883 Use common state for "Auto", fix casing in mqtt (#143000)
- use the (new) common state for "Auto"
- capitalize one occurrence of "mqtt"
- (fully) sentence-case two title strings

Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-15 20:24:44 +02:00
J. Nick Koston
ae306893ff Handle name conflicts in ESPHome config flow (#142966) 2025-04-15 08:09:51 -10:00
Norbert Rittel
5fd17d092b Use common states for "Auto" and "Manual" in overkiz (#143005) 2025-04-15 20:56:58 +03:00
Norbert Rittel
fad1d7bd1f Use common state for "Auto" in iron_os (#143001) 2025-04-15 19:30:05 +02:00
Norbert Rittel
dcf7520d2a Use common states for "Low", "Medium", "High" and "Auto" in tuya (#143002) 2025-04-15 19:29:15 +02:00
rappenze
998b33c207 Fix device creation in fibaro integration (#142957)
* Fix device creation in fibaro integration

* Better naming
2025-04-15 18:41:53 +02:00
Abílio Costa
7b3e7b7aea Remove uneeded setdefault from Whirlpool config entry (#142999) 2025-04-15 18:03:51 +02:00
Simone Chemelli
09a86d2ed2 Add quality scale to UptimeRobot (#142912)
* Add quality scale (gold) to UptimeRobot

* todos

* tweak

* tweak comment

* update after #142940

* improve comment

* update as per review comment

* one more comment

* update reconfiguration use case
2025-04-15 17:01:38 +02:00
Sid
285f7ec696 Add number platform to eheimdigital (#142835)
* Add number platform to eheimdigital

* Pylint

* Review

* Update homeassistant/components/eheimdigital/number.py

* Update homeassistant/components/eheimdigital/number.py

* Review

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-15 16:45:56 +02:00
Brian Choromanski
595508bf7d Check that time_pattern interval matcher is not zero (#142630)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-04-15 14:50:11 +01:00
starkillerOG
2074c7fcee Bump reolink-aio to 0.13.2 (#142985) 2025-04-15 15:03:47 +02:00
Simone Chemelli
759d8a3f90 Code optimization for UptimeRobot binary (#142986) 2025-04-15 12:07:48 +02:00
cdheiser
f2fa583101 Bump lutron's dependency on pylutron to 0.2.17 (#142953)
* Bump lutron's dependency on pylutron to 0.2.17

This fixes https://github.com/home-assistant/core/issues/127672

* Bump to pylutron 0.2.18 (0.2.17 has a bug with smartquotes that 0.2.18 fixes)

---------

Co-authored-by: cdheiser <cdheiser@users.noreply.github.com>
2025-04-15 10:41:56 +02:00
dependabot[bot]
18feb4bb81 Bump codecov/codecov-action from 5.4.0 to 5.4.2 (#142974)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5.4.0 to 5.4.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v5.4.0...v5.4.2)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.2
  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-04-15 10:40:12 +02:00
Norbert Rittel
b49a60fa3e Use common state for "Auto" in roborock (#142972)
Also moved the "off" state to the top to group the common states a bit.
2025-04-15 09:56:40 +02:00
Simone Chemelli
fa81a83893 Fix switch state for Comelit (#142978) 2025-04-15 09:55:16 +02:00
Norbert Rittel
942bf2ef78 Use common state for "Auto" in lg_thinq (#142973) 2025-04-15 08:45:37 +02:00
J. Nick Koston
a9d4b1afe4 Bump zeroconf to 0.146.5 (#142962) 2025-04-15 08:19:48 +02:00
Norbert Rittel
cdd8ba78e7 Use common state for "Auto" in climate (#142948) 2025-04-15 08:18:08 +02:00
Norbert Rittel
254d4c6534 Use common state for "Auto" and fix sentence-casing in tado (#142969) 2025-04-15 08:17:03 +02:00
Norbert Rittel
33a0db3935 Use common state for "Auto" and fix sentence-casing in plugwise (#142970) 2025-04-15 08:16:27 +02:00
Norbert Rittel
514f83cc96 Use common state for "Auto" in reolink (#142971)
The common state replaces the internal references, too.
2025-04-15 08:12:30 +02:00
Marc Mueller
4950bda406 Fix homeaticip_cloud RuntimeWarnings (#142961) 2025-04-14 23:32:52 +02:00
Norbert Rittel
9e9be6055d Use common state for "Auto" in knx (#142959) 2025-04-14 23:19:25 +02:00
Norbert Rittel
c9ccc79789 Use common state for "Auto" in vesync (#142958) 2025-04-14 22:53:01 +02:00
G Johansson
3fab596518 Bump holidays to 0.70 (#142954) 2025-04-14 22:52:21 +02:00
Ville Skyttä
3378b8d7ce Simplify huawei_lte entities event setup (#142501) 2025-04-14 22:31:27 +02:00
Alex L
881079ccc1 Update UK Transport Integration URL (#142949) 2025-04-14 22:22:53 +02:00
starkillerOG
cf1cbc6d75 Add Reolink recording packing time (#142847) 2025-04-14 22:22:21 +02:00
Michael
e418491f19 Add support for device sub units in AVM Fritz!SmartHome (#142845) 2025-04-14 22:19:14 +02:00
Norbert Rittel
a4f75ca249 Use common states "Auto" and "Manual" in osoenergy (#142950) 2025-04-14 22:18:03 +02:00
Norbert Rittel
6ba2d0be31 Replace reference from climate with common "Auto" state in baf (#142936) 2025-04-14 22:17:21 +02:00
Norbert Rittel
fb2a671e86 Use common state for "Auto" in matter (#142947) 2025-04-14 21:42:35 +02:00
J. Nick Koston
8cb62341ef Fix race to rename entity (#142584) 2025-04-14 21:42:23 +02:00
Simon Lamon
074378bef6 Bump python-linkplay to 0.2.3 (#142571) 2025-04-14 21:40:32 +02:00
Guido Schmitz
a772832917 Bump devolo_plc_api to 1.5.1 (#142908) 2025-04-14 21:24:52 +02:00
Norbert Rittel
cf467b8593 Use common state for "Auto" in sensibo (#142941) 2025-04-14 20:57:15 +02:00
Norbert Rittel
b4a3470cb9 Use common states for "Auto" and "High" in palazzetti (#142945) 2025-04-14 20:50:59 +02:00
Norbert Rittel
e44d86479e Use common state for "Auto" in airzone_cloud (#142944) 2025-04-14 20:40:38 +02:00
Norbert Rittel
42345d9a06 Use common states for "Auto"/"Manual" in huawei_lte (#142943) 2025-04-14 18:21:40 +00:00
starkillerOG
40fd7cf852 Select correct Reolink device uid (#142864)
* Select correct device_uid

* Fix styling

* restructure

* Add test

* Update test_util.py

* Add explanation string
2025-04-14 20:12:34 +02:00
J. Nick Koston
870350b961 Add async_has_entity_registry_updated_listeners (#142772) 2025-04-14 19:45:09 +02:00
Simone Chemelli
198a6b2e8f Add missing strings to UptimeRobot (#142921) 2025-04-14 19:37:01 +02:00
Simone Chemelli
0479fc6f54 Remove redundant logging from UptimeRobot config_flow (#142940) 2025-04-14 19:35:30 +02:00
Norbert Rittel
be6e1e5e15 Use common states "Auto"/"Manual", fix sentence-casing in yamaha_musiccast (#142931) 2025-04-14 19:29:22 +02:00
J. Nick Koston
9ce44845fe Add a repair for ESPHome device conflicts (#142507) 2025-04-14 07:10:05 -10:00
Joost Lekkerkerker
1463f05d46 Restore python 3.13.2 requirement (#142932) 2025-04-14 18:56:54 +02:00
Norbert Rittel
49a9923b5c Use common state for "Auto" in humidifier (#142937) 2025-04-14 17:50:20 +01:00
Norbert Rittel
23844c0f1a Use common state for "Auto", fix sentence-casing in demo (#142934) 2025-04-14 17:41:20 +01:00
cdnninja
82efa0893f Vesync Display Switch Feature (#137493)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-14 17:26:21 +02:00
Simone Chemelli
9e93d1fd7e Introduce common base entity for Comelit bridge (#142855) 2025-04-14 17:17:06 +02:00
Norbert Rittel
0a424f53b1 Add common states for "Auto" and "Manual" (#142914) 2025-04-14 16:52:31 +03:00
Hervé Cauwelier
efc44d83bb Add wind gust attribute to Météo France weather entity (#136839) 2025-04-14 15:41:10 +02:00
Petro31
9b274a0bc4 Correct template fan optimistic mode and supported features (#142414) 2025-04-14 15:40:29 +02:00
Barry vd. Heuvel
aeca2842fe Add WeHeat Flow sensors for pumps (#139390)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-14 15:39:44 +02:00
Emily Love Watson
d44d07ffcf Kulersky refactor to new Bluetooth subsystem (#142309)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-14 15:38:34 +02:00
Lachlan Banks
bc683ce6ee Bump qbittorrent-api to 2024.9.67 (#142588) 2025-04-14 15:37:57 +02:00
Paulus Schoutsen
c6abe1d1bb Remove the word "node" from ESPHome texts (#142929) 2025-04-14 15:28:02 +02:00
karwosts
6a95abb831 Add effects translation/icon for Demo light (#142862) 2025-04-14 15:14:00 +02:00
hahn-th
6d74a6aa19 Refactor homematicip_cloud connection (#139081) 2025-04-14 15:01:55 +02:00
Joost Lekkerkerker
83c3275054 Remove deprecated state attributes in seventeentrack (#142622) 2025-04-14 14:40:08 +02:00
Joost Lekkerkerker
b3eb0301ae Remove YAML import in Point (#142627) 2025-04-14 14:37:45 +02:00
Joost Lekkerkerker
f00dfd32d4 Remove config import in EmonCMS (#142624) 2025-04-14 14:30:41 +02:00
Paul Bottein
8ec436423f Add template function: device_name (#142683) 2025-04-14 14:30:00 +02:00
Marc Mueller
5f2ae37ee5 Improve backup tests (#142785) 2025-04-14 14:26:29 +02:00
J. Nick Koston
514363f1c5 Use configured names in HomeKit for child accessories (#142531) 2025-04-14 14:24:43 +02:00
cdnninja
f84f6aa713 Fix vesync purifier 131 tests (#142860) 2025-04-14 13:58:54 +02:00
Thomas55555
b5f15b6d67 Bump aioautomower to 2025.4.0 (#142609) 2025-04-14 13:51:55 +02:00
Stefano Angeleri
c8972a2234 Fix powerwall display of actual remaining battery, instead of reserved capacity (#142391) 2025-04-14 12:59:28 +02:00
J. Nick Koston
1892c8fa62 Bump habluetooth to 3.38.1 (#142915) 2025-04-14 00:40:55 -10:00
Norbert Rittel
589633bc23 Fix spelling of "off-peak" in huisbaasje (#142810) 2025-04-14 12:38:26 +02:00
Mathijs van de Nes
458162c3f5 Fix typo in util.ssl test (#142799) 2025-04-14 12:31:44 +02:00
Joost Lekkerkerker
583eb1a80e Remove state attributes in Totalconnect (#142625) 2025-04-14 12:24:32 +02:00
Tsvi Mostovicz
1480b77461 Don't do I/O while getting Jewish calendar data schema (#142919) 2025-04-14 12:15:46 +02:00
J. Nick Koston
908a7c6991 Fix flakey bluetooth options flow tests (#142920) 2025-04-14 12:07:47 +02:00
J. Nick Koston
53b991fb54 Add preset modes to HKC fans (#142528) 2025-04-14 11:40:54 +02:00
Norbert Rittel
35187a4b52 Fix typo "Could not login …" and add common state in xiaomi_miio (#142648) 2025-04-14 11:39:19 +02:00
J. Nick Koston
621326f4e4 Small cleanups to the inkbird coordinator (#142911) 2025-04-13 23:27:46 -10:00
J. Nick Koston
a6643d8fb3 Add support for InkBird IAM-T1 (#142824) 2025-04-13 22:31:38 -10:00
Petar Petrov
9239ace1c8 Config flow progress in percent (#142737)
* Config flow progress in percent

* PR comments
2025-04-14 10:24:01 +02:00
Simone Chemelli
422bcecec1 Add quality scale to Comelit (#139743)
* Add quality scale to Comelit

* tweek

* updates

* update

* update manifest

* tweak

* update after latest merges

* update quality scale

* tweak

* apply review comments

* apply review comment

* one more review comment
2025-04-14 10:18:33 +02:00
J. Nick Koston
6f02550ac3 Include HKC BLE MAC in device info when available (#141900)
* Include HKC BLE MAC in device info when available

* update tests

* cover

* dry

* dry

* dry
2025-04-14 10:14:48 +02:00
J. Nick Koston
1aa996d5f0 Add debug logging to homekit when an sensor entity cannot be classified (#142707)
* Add debug logging to homekit when an sensor entity cannot be classified

In #132937 many hours were spent investigating an issue which
turned out to be that the entity did not have a device class
at startup because the group integration does not set the device
class if any of the underlying entities state is invalid.

closes #132937

* coverage

* Update tests/components/homekit/test_get_accessories.py
2025-04-14 10:12:27 +02:00
J. Nick Koston
a340646e1e Avoid starting ESPHome reauth when an unexpected device is found at the last address (#142814)
* Bump aioesphomeapi to 29.10.0

changelog: https://github.com/esphome/aioesphomeapi/compare/v29.9.0...v29.10.0

* Avoid starting ESPHome reauth when an unexpected device is found at the last address

fixes #133956

* coverage
2025-04-14 10:10:07 +02:00
Allen Porter
db043b26da Fix quality loss for LLM conversation agent question answering (#142873)
* Fix a bug parsing a streaming response with no json

* Remove debug lines

* Fix  quality loss for LLM conversation agent question answering

* Update tests
2025-04-14 10:05:34 +02:00
J. Nick Koston
8767599ad4 Validate ESPHome mac address before updating IP on discovery (#142878)
* Bump aioesphomeapi to 29.10.0

changelog: https://github.com/esphome/aioesphomeapi/compare/v29.9.0...v29.10.0

* Validate ESPHome mac address before updating IP on discovery

In some cases the data coming in from discovery may be
stale since there is a small race window if devices
get new IP allocations. Since some routers do not update
their names right away and zeroconf has a non-zero TTL
there is a small window where the discovery data can be
stale. This is a rare condition but it does happen. With
aioesphomeapi 29.10.0+ and ESPHome 2025.4.x+ we can validate
the mac address even without the correct encryption key
which allows us to be able to always validate the MAC
before updating the IP from any discovery method.

* tweaks

* fix test
2025-04-14 10:02:46 +02:00
Joost Lekkerkerker
6d5c000e1f Set entity categories for some entities in Syncthru (#142828)
Set entity categories for some entities
2025-04-14 09:51:41 +02:00
Simone Chemelli
2750535928 Use runtime_data in UptimeRobot (#142848)
* Use runtime_data in UptimeRobot

* fix unload
2025-04-14 09:51:06 +02:00
Simone Chemelli
1e31e2944b Add parallel updates to UptimeRobot (#142849) 2025-04-14 09:50:29 +02:00
J. Nick Koston
8bcc4f4c82 Avoid setting up ESPHome dashboard if its been uninstalled (#142904)
* Avoid setting up ESPHome dashboard if its been uninstalled

* tweaks

* coverage

* coverage

* fix
2025-04-14 09:49:21 +02:00
Norbert Rittel
bfc3080292 Use common states for "Low" / "Medium" / "High" in climate (#142842) 2025-04-14 09:42:05 +02:00
Mick Vleeshouwer
9bff86e7aa Bump pyOverkiz to 1.17.0 (#142854)
Bump pyoverkiz to 1.17.0
2025-04-14 09:41:07 +02:00
Retha Runolfsson
0689a6ed62 Bump PySwitchBot to 0.60.0 (#142905)
update pyswitchbot ver
2025-04-14 09:40:14 +02:00
starkillerOG
61f2251336 Fix Reolink Home Hub Pro playback (#142871)
Fix Home Hub Pro playback
2025-04-14 09:39:41 +02:00
Kevin Stillhammer
62a0932deb Only get tracked pairs for kraken (#142877)
Only get tracked pairs

Getting all available pairs leads to a too long request URL
2025-04-14 09:39:01 +02:00
J. Nick Koston
3389ee4b80 Bump inkbird-ble to 0.13.0 (#142885)
* Bump inkbird-ble to 0.12.0

changelog: https://github.com/Bluetooth-Devices/inkbird-ble/compare/v0.11.0...v0.12.0

* map discovery as well

* fix merge

* fix merge error

* bump again for more cleanups

* fix tests
2025-04-14 09:37:42 +02:00
Åke Strandberg
cc6e2ef3f7 Spelling corrections in miele integration (#142907)
Spelling corrections
2025-04-14 09:36:02 +02:00
Glenn Waters
1a1c95af12 Bump Environment Canada library to 0.10.1 (#142882) 2025-04-13 18:39:50 -10:00
Allen Porter
658299ee21 Strip whitespace from new todo list item names (#142889)
Strip whitspace from new todo list item names
2025-04-13 17:42:42 -07:00
Allen Porter
5b8ca8d0ed Improve local calendar error logging when uploading invalid .ics files (#142891) 2025-04-13 17:42:24 -07:00
Allen Porter
d91528648f Update ollama to allow selecting mutiple LLM APIs (#142445)
* Update ollama to allow selecting mutiple LLM APIs

* Update homeassistant/helpers/llm.py

* Avoid gather since these don't do I/O

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2025-04-13 15:37:46 -07:00
J. Nick Koston
8b88272bc0 Add async_set_updated_data method to PassiveBluetoothProcessorCoordinator (#142879) 2025-04-13 11:08:22 -10:00
zry98
8ab59bee47 [xiaomi_ble] Support Body Composition Scale S400 (#142705) 2025-04-13 10:41:43 -10:00
J. Nick Koston
18c814d3dc Bump inkbird-ble to 0.11.0 (#142832) 2025-04-13 10:08:28 -10:00
Jan Bouwhuis
4f0928d93b Use existing translations for mqtt subentry platform selector (#142876) 2025-04-13 22:08:19 +02:00
J. Nick Koston
6c7865a247 Bump aioesphomeapi to 29.10.0 (#142813) 2025-04-13 10:08:01 -10:00
Jan Bouwhuis
7cf63d1985 Add transition and flash feature flags for MQTT JSON light (#142692) 2025-04-13 21:39:40 +02:00
Åke Strandberg
0b02b43b11 Add integration for Miele (#142498) 2025-04-13 21:09:41 +02:00
Simone Chemelli
b25a0e2272 Small cleanup for Vodafone Station (#142867) 2025-04-13 18:57:00 +02:00
Thomas55555
6d78c961d9 Bump colorlog to 6.9.0 (#142616) 2025-04-13 16:10:52 +02:00
Simone Chemelli
e370248c9e Use typed ConfigEntry in UptimeRobot (#142846) 2025-04-13 15:30:47 +02:00
Brett Adams
31c2d22912 Check Energy Live API works before creating the coordinator in Tessie (#142510)
* Check live API works before creating the coordinator

* Fix diag

* Fix mypy on entity

* is not None
2025-04-13 13:55:16 +02:00
Norbert Rittel
5eb25b2d4a Use common states for "Low"/"Medium"/"High" in sensibo (#142118) 2025-04-13 12:40:53 +02:00
Chase Mamatey
6737c51fca Fix duke_energy data retrieval to adhere to service start date (#136054) 2025-04-12 19:00:49 -04:00
Marc Mueller
d23c9f715e Update beautifulsoup4 to 4.13.3 (#142751) 2025-04-12 12:04:50 -10:00
Marc Mueller
03ccb529e4 Update pillow to 11.2.1 (#142811) 2025-04-12 12:03:28 -10:00
zry98
505e09242d Bump xiaomi-ble to 0.37.0 (#142812) 2025-04-12 12:03:01 -10:00
Mathijs van de Nes
d6b4f1c95d Ensure no ALPN is negotiated for SMTP (#142296) 2025-04-12 12:02:07 -10:00
Norbert Rittel
67c0af4c57 Fix spelling of "off-peak", add common state for "Normal" in plugwise (#142682) 2025-04-12 21:04:05 +02:00
Joost Lekkerkerker
cba0cf0609 Migrate Syncthru to runtime data (#142775) 2025-04-12 20:59:59 +02:00
Joost Lekkerkerker
b957017799 Clean up Syncthru unique id (#142778) 2025-04-12 20:50:37 +02:00
Joost Lekkerkerker
ebe71a1a38 Add diagnostics support to Syncthru (#142776) 2025-04-12 20:22:12 +02:00
Joost Lekkerkerker
6feb9d4b4e Add entity translations to Syncthru (#142774)
* Add entity translations to Syncthru

* Add entity translations to Syncthru

* Fix
2025-04-12 20:19:49 +02:00
Ernst Klamer
06d6155862 add support for quadruple button events for xiaomi-ble (#142760)
* bump xiaomi-ble to 0.36.0

* fix ruff

* fix ruff

* revert dependency bump
2025-04-12 20:18:26 +02:00
J. Nick Koston
f13bdd0da4 Add support for passing though description_placeholders to _abort_if_unique_id_configured (#142779) 2025-04-12 07:47:02 -10:00
Dionisis Toulatos
3489ea30dd Fix MQTT device discovery when using node_id (#142784)
* Fix device discovery when using node_id

* tests

---------

Co-authored-by: jbouwh <jan@jbsoft.nl>
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-04-12 19:30:06 +02:00
Marc Mueller
d218ac85f7 Update pytest warnings filter (#142797) 2025-04-12 19:15:38 +02:00
peteS-UK
5129c7521b Force Squeezebox item id to string (#142793)
force item_id to string
2025-04-12 17:09:17 +02:00
J. Diego Rodríguez Royo
eb19c7af32 Disable Home Connect appliance refresh when frequent disconnects are detected (#142615)
* Disable specific updates for an appliance when is done repeatedly

* Fix deprecation issues fix tests

* Fix message

* Avoid fetching appliance info also

* Apply suggestions

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

* Create specific RepairFlow for enabling appliance's updates

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-12 14:58:35 +02:00
J. Nick Koston
6b65b21ee0 Migrate inkbird to use entry.runtime_data (#142780) 2025-04-12 12:20:07 +02:00
Erik Montnemery
4eda081574 Remove unnecessary error handling from backup onboarding (#142786) 2025-04-12 11:01:41 +02:00
Erik Montnemery
234c4c1958 Move backup backup onboarding API to an onboarding platform (#142713)
* Move backup backup onboarding API to an onboarding platform

* Move additional test from onboarding to backup

* Remove backup tests from onboarding
2025-04-12 09:41:54 +02:00
Marc Mueller
ad3c4d24b8 Update h2 to 4.2.0 (#142777) 2025-04-11 14:08:09 -10:00
J. Nick Koston
ee37b32ca1 Log lutron_caseta exception on pairing failure (#140776) 2025-04-11 13:57:47 -10:00
Ernst Klamer
49721a541a bump xiaomi-ble to 0.36.0 (#142761) 2025-04-12 01:16:14 +03:00
Robert Svensson
c18d96e2f5 UniFi redact WLAN password (#142767)
* Recact password key word in WLAN diagnostic data

* Fix testdata
2025-04-12 01:15:15 +03:00
Joost Lekkerkerker
3efb009e82 Introduce base entity in Syncthru (#142694) 2025-04-12 00:12:23 +02:00
Mathijs van de Nes
b20f46e8b9 Add non-shared ssl client_context (#142653) 2025-04-11 10:55:05 -10:00
Marc Mueller
4f0ece1bb4 Update uiprotect to 7.5.3 (#142766) 2025-04-11 22:37:15 +02:00
J. Nick Koston
2c316c5820 Ensure person loads after recorder (#142585)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-04-11 09:39:30 -10:00
Marc Mueller
9d10d8f55e Fix slack DeprecationWarnings (#142754) 2025-04-11 20:27:45 +02:00
Abílio Costa
0fcac987df Update strings for Whirlpool config flows (#142758) 2025-04-11 20:21:53 +02:00
Joost Lekkerkerker
ffcc2254ce Refactor Syncthru binary sensor (#142696) 2025-04-11 19:40:37 +02:00
Manu
b01eac3ba5 Fix error in recurrence calculation of Habitica integration (#142759)
Fix error in rrule calculation of Habitica integration
2025-04-11 19:39:40 +02:00
Simone Chemelli
a3341c4330 Add full test coverage for Comelit humidifier platform (#141852)
* Add full test coverage for Comelit humidifier platform

* clean

* update snapshot

* apply review comment
2025-04-11 18:23:03 +02:00
Jeff Rescignano
a4fac730d4 Upgrade sharkiq depedency to 1.1.0 (#142746) 2025-04-11 18:07:27 +02:00
Allen Porter
ca07975ead Fix Anthropic bug parsing a streaming response with no json (#142745) 2025-04-11 17:30:12 +02:00
Michael
5a1a41beb1 Fix reload of AVM FRITZ!Tools when new connected device is detected (#142430) 2025-04-11 17:26:58 +02:00
Bram Kragten
20a3a061a1 Update frontend to 20250411.0 (#142736) 2025-04-11 17:25:26 +02:00
Joost Lekkerkerker
7b78f6db17 Fix SmartThings gas meter (#142741) 2025-04-11 17:24:39 +02:00
Simone Chemelli
5816a24577 Cleanup snapshot call in tests (#142750) 2025-04-11 17:21:12 +02:00
Joost Lekkerkerker
0e4f44b775 Bump pySmartThings to 3.0.4 (#142739) 2025-04-11 16:51:32 +02:00
Erik Montnemery
0105332476 Add WS command integration/wait (#142040)
* Add WS command integration/wait

* Add test

* Update homeassistant/components/websocket_api/commands.py

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

* Use helper setup.async_wait_component

* Add onboarding view

* Revert "Add onboarding view"

This reverts commit df3a1a0580.

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-11 16:09:15 +02:00
Erik Montnemery
4aca9cd66b Move cloud onboarding API to an onboarding platform (#141978)
* Move cloud onboarding API to an onboarding platform

* Address review comments

* Add tests

* Move cloud onboarding tests to the cloud integration

* Address review comments

* Don't wait for platforms

* Add test

* Remove useless check for CLOUD_DATA
2025-04-11 16:02:27 +02:00
Norbert Rittel
a4234bf80e Add more state references to shelly (#142716)
- replace "Normal" with common state
- replace `self_test` state attributes with references
2025-04-11 16:39:44 +03:00
Norbert Rittel
f42f698dbc Fix missing sentence-casing in a few plex strings (#142720) 2025-04-11 16:38:07 +03:00
Martin Hjelmare
cd45c5d886 Avoid Z-Wave config entry unload in test teardown (#142732) 2025-04-11 16:37:47 +03:00
Simone Chemelli
2af6ee7584 Add missing typed to SamsungTV (#142738) 2025-04-11 15:19:21 +02:00
Erik Montnemery
3b437c9b84 Add onboarding view /api/onboarding/integration/wait (#142688) 2025-04-11 13:43:18 +02:00
Martin Hjelmare
af8ecdd48d Improve Z-Wave reconfigure flow (#142475) 2025-04-11 12:15:11 +02:00
starkillerOG
16d9ccd423 Reolink migrate unique ID debugging (#142723)
* Filter out unexpected unique_ids

* correct

* Add test

* fix styling
2025-04-11 11:42:18 +02:00
Simone Chemelli
e1d223f726 Add exceptions translation to SamsungTV (#142406)
* Add exceptions translation to SmasungTV

* Update strings.json

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

---------

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-04-11 11:32:19 +02:00
Stefan Agner
a4904a3f2d Bump aiohasupervisor from version 0.3.0 to version 0.3.1b1 (#142721) 2025-04-11 10:14:07 +01:00
Christopher Fenner
dff7b30405 Bump PyViCare to 2.44.0 (#142701)
bump vicare to v2.44.0
2025-04-11 10:32:54 +02:00
starkillerOG
a06cd770a4 Bump reolink-aio 0.13.1 (#142719) 2025-04-11 10:22:30 +02:00
Joost Lekkerkerker
56c4121eb2 Refactor Syncthru sensor platform (#142704) 2025-04-11 08:12:59 +02:00
Christopher Fenner
f519b20495 Add device error sensor to ViCare integration (#142605)
* add error sensor

* remove translation
2025-04-11 08:11:53 +02:00
Jan Bouwhuis
32da8c52f7 Add test to assert different private key types are accepted and stored correctly in MQTT config flow (#142703) 2025-04-11 00:58:48 +02:00
Hugo van Rijswijk
c6994731b1 Add Buienradar apparent temperature and forecast rain chance & wind gust (#135287)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-11 00:24:59 +02:00
Renier Moorcroft
2eb1041f4b Use sub stream as default option for EZVIZ (#136023) 2025-04-11 00:07:03 +02:00
Jan Bouwhuis
4ad5eb5a82 Fix EC certificate key not allowed in MQTT client setup (#142698) 2025-04-10 23:11:35 +02:00
Jan Bouwhuis
ea38639395 Validate MQTT device tracker location data before assigning (#141980)
* Validate MQTT device tracker location data before assigning

* Log warning for invalid gps_accuracy
2025-04-10 22:32:17 +02:00
Joost Lekkerkerker
bf0d2e9bd2 Extract Syncthru coordinator in separate file (#142620) 2025-04-10 21:24:38 +02:00
Simone Chemelli
bb3c2175bc Comelit config flow timeout error (#142667) 2025-04-10 21:16:53 +02:00
Joost Lekkerkerker
6fafafbed0 Improve Syncthru config flow tests (#142618) 2025-04-10 21:16:12 +02:00
Norbert Rittel
8f73c53d26 Replace "Setup your …" with correct "Set up your …" in iometer (#142685) 2025-04-10 21:12:39 +02:00
Erik Montnemery
5a09847596 Add backup support to the hassio OS update entity (#142580)
* Add backup support to the hassio OS update entity

* Remove meaningless assert
2025-04-10 20:56:02 +02:00
Erik Montnemery
cf63175232 Abort reauth flows on config entry reload (#140931)
* Abort reauth flows on config entry reload

* Don't cancel reauth when reload is triggered by a reauth flow

* Revert "Don't cancel reauth when reload is triggered by a reauth flow"

This reverts commit f37c75621e.

* Don't fail in FlowManager._async_handle_step when the flow was aborted

* Update tplink config flow

* Add tests

* Don't allow create_entry from an aborted flow

* Add comment

* Adjust after merge with dev
2025-04-10 20:55:34 +02:00
Thimo Seitz
88428fc772 Update growatt server dependency to 1.6.0 (#142606)
* Update GrowattServer Dependency

* Update requirements_test_all.txt
2025-04-10 20:14:30 +02:00
Jan Bouwhuis
505dfcbcd9 Use shorthand attributes for MQTT device tracker entity (#142671) 2025-04-10 19:51:36 +02:00
Erik Montnemery
7cbcb21e80 Revert "Don't create repairs asking user to remove duplicate flipr config entries" (#142647)
Revert "Don't create repairs asking user to remove duplicate flipr config ent…"

This reverts commit 536e686892.
2025-04-10 19:50:50 +02:00
Erik Montnemery
d4dbd76a0a Revert "Add onboarding view /api/onboarding/integration/wait" (#142680)
This reverts commit 956cac8f1a.
2025-04-10 19:15:54 +02:00
Norbert Rittel
1d9343df7f Fixes to user-facing strings of rfxtrx integration (#142677)
- consistently use "RFXtrx" for the friendly name of the integration
- apply sentence-casing to all strings
- use the common state for "Normal"
2025-04-10 18:00:37 +02:00
Norbert Rittel
c7ca88e666 Use common state for "Normal" in onedrive (#142673) 2025-04-10 17:47:02 +02:00
Artur Pragacz
efbb94a1b1 Use common helper function in resolve integration dependencies (#140989)
Extract to helper function in resolve integration dependencies
2025-04-10 17:41:06 +02:00
Erik Montnemery
eee6e8a2c3 Add WS command config_entries/flow/subscribe (#142459) 2025-04-10 16:58:46 +02:00
Abílio Costa
a26cdef427 Refactor Whirlpool sensor tests (#142437) 2025-04-10 15:47:28 +01:00
Erik Montnemery
a5013cddd5 Correct enum member check in home_connect (#142666)
* Correct enum member check in home_connect

* Update homeassistant/components/home_connect/coordinator.py

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

* Add mypy override

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-10 16:46:30 +02:00
Yuxin Wang
844515787b Fallback to config entry ID as unique ID when serialno is not available for APCUPSD (#130852) 2025-04-10 16:45:46 +02:00
Erik Montnemery
d5476a1da1 Store update settings in hassio store (#142526) 2025-04-10 11:55:07 +02:00
Norbert Rittel
12ae70630f Fix sentence-casing and typo in elmax (#142650)
- change a few words to lowercase
- replace "login to" with "log in to"
2025-04-10 11:43:46 +02:00
Norbert Rittel
954a47d9ef Replace typo "login to" with "log in to" in fireservicerota (#142652)
Fix typo "login to" with "log in to" in `fireservicerota`
2025-04-10 11:43:16 +02:00
Norbert Rittel
6ed847f49e Fix typo "You can login to …" in opensky (#142649) 2025-04-10 11:39:59 +02:00
cnico
ea50bbeb11 Flipr - Removal of obsolete code. (#142504)
Removal of obsolete code.
2025-04-10 10:48:03 +02:00
Christopher Fenner
aefadd6684 Improve config flow title in ViCare integration (#142573)
* Update strings.json

* Update strings.json
2025-04-10 10:08:53 +02:00
Norbert Rittel
4096a8931a Use common state for "Off" in nut (#142643) 2025-04-10 10:08:12 +02:00
Thomas55555
d2bd0e8ca2 Bump livisi to 0.0.25 (#142638) 2025-04-10 10:05:38 +02:00
Joost Lekkerkerker
e119675100 Remove deprecated aux heat from econet (#142626) 2025-04-10 10:03:22 +02:00
Norbert Rittel
5ff2608794 Use common state for "Normal" in ecovacs (#142642) 2025-04-10 10:02:30 +02:00
Norbert Rittel
96d1c9ab91 Use common state for "Normal" in yeelight (#142641)
* Use common state for "Normal" in `yeelight`

Also remove one excessive hyphen in "RGB format".

* Sentence-case "Color flow"
2025-04-10 10:02:10 +02:00
Norbert Rittel
60268e97d4 Fix sentence-casing and spelling in touchline_sl (#142644)
- use sentence-casing for "setup flow"
- replace "Login to … " with the verb "Log in to …"
2025-04-10 09:34:21 +02:00
Imeon-Energy
b51bb668c6 Add imeon inverter integration (#130958)
* Initial commit prototype with empty inverters

* Use modern methods and global variable for character strings

* Platform that get the value of the meter in an entity

* Add check if inverter already configured

* Add tests for config_flow

* Update "imeon_inverter_api" in manifest.json

* Update "imeon_inverter_api" in requirements_all.txt

* Remove async_setup, clean comments, use of const PLATFORM

* Use of global variable and remove configuration of device name

* Use of entry.data instead of user_input variable

* Remove services.yaml

* No quality scale

* Use of common string

* Add sensors, use of EntityDescription and '_attr_device_info'

* Remove name from config_flow tests

* Use sentence case and change integration from hub to device

* Check connection before add platform in config_flow

* Use of _async_setup and minor changes

* Improve sensor description

* Add quality_scale.yaml

* Update the quality_scale.json

* Add tests for host invalid, route invalid, exception and invalid auth

* Type more precisely 'DataUpdateCoordinator'

* Don't use 'self.data' directly in coordinator and minor corrections

* Complete full quality_scale.yaml

* Use of fixtures in the tests

* Add snapshot tests for sensors

* Refactor the try except and use serial as unique id

* Change API version

* Add test for sensor

* Mock the api to generate the snapshot

* New type for async_add_entries

* Except timeout error for get_serial

* Add test for get_serial timeout error

* Move store data out of the try

* Use sentence case

* Use of fixtures

* Use separates fixtures

* Mock the api

* Put sensors fake data in json fixture file

* Use of a const interval, remove except timeout, enhance lisibility

* Try to use same fixture in test_config_flow

* Try use same fixture for all mock of inverter

* Modify the fixture in the context manager, correct the tests

* Fixture return mock.__aenter__ directly

* Adjust code clarity

* Bring all tests to either ABORT or CREATE_ENTRY

* Make the try except more concise

* Synthetize exception tests into one

* Add code clarity

* Nitpick with the tests

* Use unique id sensor

* Log an error on unknown error

* Remove useless comments, disable always_update and better use of timeout

* Adjust units, set the model and software version

* Set full name for Battery SOC and use ip instead of url

* Use of host instead of IP

* Fix the unit of economy factor

* Reduce mornitoring data display precision and update snapshots

* Remove unused variable HUBs

* Fix device info

* Set address label 'Host or IP'

* Fix the config_flow tests

* Re evaluate the quality_scale

* Use of 'host' instead of 'address'

* Make inverter discoverable by ssdp

* Add test ssdp configuration already exist

* Add exemption in quality scale

* Test abort ssdp if serial is unknown

* Handle update error

* Raise other exceptions

* Handle ClientError and ValueError from the api

* Update homeassistant/components/imeon_inverter/quality_scale.yaml

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-10 08:25:35 +02:00
henryptung
87e5b024c1 Bump led_ble to 1.1.7 (#142629)
changelog: https://github.com/Bluetooth-Devices/led-ble/compare/v1.1.6...v1.1.7
2025-04-09 16:52:10 -10:00
J. Nick Koston
54f3bb8ddf Bump pydantic to 2.11.13 (#142612)
changelog: https://github.com/pydantic/pydantic/compare/v2.11.2...v2.11.3
2025-04-09 16:30:26 -10:00
J. Nick Koston
fa291c20e5 Pin multidict to >= 6.4.2 to resolve memory leaks (#142614)
* Pin multidict to >= 6.4.1 to resolve memory leaks

https://github.com/aio-libs/multidict/issues/1134
https://github.com/aio-libs/multidict/issues/1131
https://github.com/aio-libs/multidict/releases/tag/v6.4.1
https://github.com/aio-libs/multidict/releases/tag/v6.4.0

* Apply suggestions from code review
2025-04-09 15:48:29 -10:00
Abílio Costa
dd97d5bc7e Move Whirlpool test and clean unused code (#142617) 2025-04-10 00:59:00 +02:00
Norbert Rittel
b3fccc0de6 Replace typo "to login to" with "to log in to" in reolink (#142577) 2025-04-09 22:46:02 +02:00
Maarten Staa
9fe306f056 Add support for air purifiers in HomeKit (#142467)
* Add support for air purifier type in HomeKit.

Any fan and PM2.5 in the same device will be treated as an air purifier.

type_air_purifiers.py heavily based on type_fans.py -
I tried extending type_fans.py but this looked better to me.

* Refactor to make AirPurifier class extend Fan.

* Ensure all chars are added before creating service

* Add support for switching automatic mode.

* Add test for auto/manual switch

* Add support for air purifier type in HomeKit.

Any fan and PM2.5 in the same device will be treated as an air purifier.

type_air_purifiers.py heavily based on type_fans.py -
I tried extending type_fans.py but this looked better to me.

* Add support for air purifier type in HomeKit.

Any fan and PM2.5 in the same device will be treated as an air purifier.

type_air_purifiers.py heavily based on type_fans.py -
I tried extending type_fans.py but this looked better to me.

* Refactor to make AirPurifier class extend Fan.

* Ensure all chars are added before creating service

* Add support for switching automatic mode.

* Add test for auto/manual switch

* Add support for air purifier type in HomeKit.

Any fan and PM2.5 in the same device will be treated as an air purifier.

type_air_purifiers.py heavily based on type_fans.py -
I tried extending type_fans.py but this looked better to me.

* Improve fan config: allow setting fan type (fan or air purifier)

Be more explicit than assuming a fan is an air purifier if it has a PM2.5 sensor. Set defaults based on the presence of sensors.

* Fix return type annotation for fan/air purifier create_services

* Allow linking air purifier filter level/change indicator

* Remove no longer needed if statement in fan init

* Fix up types and clean up code

* Update homekit tests to account for air purifiers

* Fix pylint errors

* Fix mypy errors

* Improve type annotations

* Improve readability of auto preset mode discovery

* Test air purifier with 'Auto' preset mode

* Handle case with a single preset mode

* Test air purifier edge cases: state updates to same value, and removed linked entities

* Don't create 'auto mode' switch for air purifiers

This is already exposed as a target mode on the air purifier service itself

* Handle unavailable states in air purifier

Also don't remove device class when updating state in test

* Reduce branching in air purifier test

* Split up air purifier tests for with and without auto presets, to reduce branching

* Handle unavailable states in air purifier more explicitly

* Use constant for ignored state values

* Use a set for ignored_states

* Update tests/components/homekit/test_type_air_purifiers.py

---------

Co-authored-by: Andrew Kurowski <62596884+ak6i@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-09 10:20:21 -10:00
skrynklarn
1b66278a68 Extend UnitOfReactivePower with 'kvar' (#142558) 2025-04-09 20:22:02 +01:00
Christopher Fenner
76015740f8 Fix Quickmode handling in ViCare integration (#142561)
* only check quickmode if supported

* update snapshot

* revert
2025-04-09 20:36:41 +02:00
Simone Chemelli
816edb66c7 Add full test coverage for Fritz config_flow (#142418) 2025-04-09 20:22:26 +02:00
Norbert Rittel
82c688e3be Replace typo "to login" with "to log in" in smarttub (#142600) 2025-04-09 12:13:06 -05:00
Norbert Rittel
46d6241f58 Replace typo "to login to" with "to log in to" in traccar_server (#142599) 2025-04-09 12:12:47 -05:00
Norbert Rittel
b5083ce973 Replace typo "to login to" with "to log in to" in ohme (#142578) 2025-04-09 12:12:26 -05:00
Norbert Rittel
1663756983 Replace typo "to login to" with "to log in to" in fyta (#142576) 2025-04-09 12:06:00 -05:00
Erik Montnemery
f344314762 Abort if a flow is removed during a step (#142138)
* Abort if a flow is removed during a step

* Reorganize code

* Only call _set_pending_import_done if an entry is created

* Try a new approach

* Add tests

* Update tests
2025-04-09 07:04:41 -10:00
TimL
7f4d178781 Make exceptions translatable for SMLIGHT (#142587)
* Exceptions translations

* check off quality scale

* translate another exception
2025-04-09 12:04:19 -05:00
Joost Lekkerkerker
ba629fbddb Add Syncthru platform tests (#142596) 2025-04-09 12:00:56 -05:00
Norbert Rittel
157c776019 Replace typo "to login to" with "to log in to" in mqtt (#142575)
Fix typo "to login to" with "to log in to" in `mqtt`
2025-04-09 18:41:46 +02:00
Erik Montnemery
70aacfce98 Improve tests of clean up when reauth flow aborts (#142592) 2025-04-09 16:47:04 +02:00
Simone Chemelli
8625a36d1d Add missing strings to Fritz (#142413)
* Add missing strings to Fritz

* update quality scale

* add common section

this avoids later re-structuring and re-translating

* fix strings

* fix strings

* apply review comment

---------

Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2025-04-09 16:44:36 +02:00
Norbert Rittel
002f5b5ee6 Replace typo "to login to" with "to log in to" in bring (#142579) 2025-04-09 16:26:12 +02:00
Erwin Douna
b058b2574f SMA add DHCP discovery (#135843)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-09 16:24:30 +02:00
Erik Montnemery
170e6bdcab Protect hass data keys in setup.py (#142589) 2025-04-09 15:27:52 +02:00
Erik Montnemery
075a0ad780 Add tests of behavior when completing an aborted data entry flow (#142590) 2025-04-09 15:17:54 +02:00
Erik Montnemery
e7c2e86c93 Attempt to fix flaky bootstrap test (#142536) 2025-04-09 13:37:21 +02:00
Erik Montnemery
3ca1f07cc4 Remove meaningless asserts in some hassio tests (#142583) 2025-04-09 12:13:56 +02:00
TimL
762c752918 Set quality scale to silver for SMLIGHT integration (#142448)
* Add quality scale for SMLIGHT

* Review and update all rules

* Add missing data_description strings as detected by CI

* update for a few merged docs PR's

* Parallel updates done

https://github.com/home-assistant/core/pull/142455

* Set quality scale to silver

* Update homeassistant/components/smlight/quality_scale.yaml

* Update homeassistant/components/smlight/quality_scale.yaml

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-09 08:55:09 +02:00
Maciej Bieniek
06a2de4d1c Fix Shelly initialization if device runs large script (#142487)
* Don't check the whole script to see if it generates events

* Fix tests

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-04-08 20:53:44 -10:00
Fredrik Erlandsson
d4f47bfc6b Fix ssl_cert load from config_flow (#142570)
fix ssl_cert load from config_flow
2025-04-08 20:51:44 -10:00
puddly
271a4ba7c8 Fix Core deadlock by ensuring only one ZHA log queue handler thread is running at a time (#142568)
Ensure only one log queue handler is running at a time
2025-04-08 22:02:51 -04:00
Joost Lekkerkerker
528ca49368 Improve Syncthru tests (#142338) 2025-04-08 23:55:00 +02:00
dependabot[bot]
5d8c90ae0d Bump github/codeql-action from 3.28.13 to 3.28.15 (#142516)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.13 to 3.28.15.
- [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.13...v3.28.15)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 3.28.15
  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-04-09 00:42:12 +03:00
Abílio Costa
f872dc8948 Use base entity class for Whirlpool climate (#142548)
* Use base entity class for Whirlpool climate

* Set model_id instead of model
2025-04-09 00:39:45 +03:00
Andrew Sayre
ec520b8cf5 Bump pyheos to v1.0.5 (#142554)
Update pyheos
2025-04-09 00:38:48 +03:00
tronikos
ff8b96a19f Fix range of Google Generative AI temperature (#142513) 2025-04-08 20:46:09 +02:00
Thomas55555
f6b55c7eb9 Fix adding devices in Husqvarna Automower (#142549) 2025-04-08 20:40:13 +02:00
elmurato
3aae280de5 Fix blocking call in Pterodactyl (#142518)
* Fix blocking call

* Group blocking calls into a single executor job, catch StopIteration
2025-04-08 18:52:26 +02:00
Norbert Rittel
6c1f9e39c4 Improve friendly names of rf_strength and wifi_strength in netatmo (#141673)
* Improve friendly names of `rf_strength` and `wifi_strength` in `netatmo`

- Replace "Radio" with "RF strength" for `rf_strength`
- Replace "Wi-Fi" with "Wi-Fi strength" for `wifi_strength`

* Update test_sensor.ambr

* Update test_sensor.py

* Update test_sensor.py

* Update test_sensor.ambr
2025-04-08 18:16:20 +02:00
Norbert Rittel
a957db7c27 Use common states for "Low" and "High" in tuya (#142491) 2025-04-08 18:15:57 +02:00
Norbert Rittel
3a670e74f7 Use common state for "Normal" in yolink (#142544)
Also reordered the three states alphabetically which groups the common ones, too.
2025-04-08 18:15:05 +02:00
Barry vd. Heuvel
a114ecfb73 Bump weheat to 2025.3.7 (#142539) 2025-04-08 17:18:43 +02:00
J. Nick Koston
626935ee14 Move inkbird coordinator logic into coordinator.py (#142517)
* Move inkbird coordinator logic into coordinator.py

Not a functional change, one to one relocation

* Move inkbird coordinator logic into coordinator.py

Not a functional change, one to one copy

* Move inkbird coordinator logic into coordinator.py

Not a functional change, one to one copy
2025-04-08 16:59:01 +02:00
Norbert Rittel
3f2975e93f Use common state for "Normal" in tessie / teslemetry / tesla_fleet (#142515)
* Use common state for "Normal" in `tessie`

* Use common state for "Normal" in `teslemetry`

* Use common state for "Normal" in `tesla_fleet`
2025-04-08 16:57:30 +02:00
Martin Hjelmare
38bf06e179 Improve parameters in Z-Wave init tests (#142532) 2025-04-08 15:18:22 +01:00
Marcel van der Veldt
12fc458abb Fix small typo in Music Assistant integration causing unavailable players (#142535)
Fix small typo in Music Assistant integration causing issues with adding players
2025-04-08 15:44:35 +02:00
Erik Montnemery
0ed7348d2d Fix typos in hassio (#142529) 2025-04-08 15:05:19 +02:00
Ville Skyttä
67e7554702 Increase huawei_lte scan interval to 30 seconds (#142533)
To follow what other similar integrations do, namely at least asuswrt
and netgear.

Refs https://developers.home-assistant.io/docs/core/integration-quality-scale/rules/appropriate-polling
2025-04-08 14:57:07 +02:00
Arie Catsman
74141c39ea Remember prior config flow user entries for enphase_envoy (#142457)
* Remember prior config flow user entries for enphase_envoy

* Do not reflect password in config userforms

* de-duplicate avoid reflect key code
2025-04-08 02:22:52 -10:00
Martin Hjelmare
cb09207cd7 Improve Supervisor addon_running test fixture (#142525) 2025-04-08 14:03:16 +02:00
Sanjay Govind
894cc7cc4d Add sensor platform to bosch_alarm (#142151)
* add sensor platform to bosch_alarm

* add icon translations for sensors

* translate entity names

* translate entity names

* translate entity names

* update snapshots

* translate ready to arm sensor

* translate ready to arm sensor

* update tests

* update translations

* remove history sensor, we will replace it with an events sensor later

* fix tests

* fix tests

* fix tests

* update tests

* fix sensor links

* only call async_add_entities once

* convert area alarms to sensors based on type

* add sensor for alarms

* add icons

* cleanup area sensor

* add available

* loop over dict

* use entity description

* use entity description

* clean up entity descriptions

* observe_alarms and observe_ready

* refactor alarm_control_panel to use base entity

* remove more old sensors

* add unit of measurement

* update test snapshots

* use correct observer
2025-04-08 13:55:43 +02:00
Glenn Vandeuren (aka Iondependent)
36192ebc3a Add niko_home_control quality scale (#134000)
* Add quality scale

* Update quality_scale.yaml

* Update quality_scale.yaml

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-08 12:03:50 +02:00
Jan Bouwhuis
26663756a5 Allow max to be equal with min for mqtt number config validation (#142522) 2025-04-08 12:00:05 +02:00
tronikos
167e766811 Add translations for connection closed errors in Android TV Remote (#142523) 2025-04-08 10:10:23 +02:00
J. Nick Koston
08304ca5f3 Small improvements to the repairs testing helpers (#142511)
- Fix incorrect type on flow_id and issue_id
- Show the error when something goes wrong
2025-04-08 09:59:39 +02:00
Sanjay Govind
323c459442 bump bosch_alarm_mode2 to 0.4.6 (#142436)
* bump bosch_alarm_mode2 to 0.4.5

* bump bosch_alarm_mode2 to 0.4.6

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-08 08:58:58 +02:00
tronikos
89c9288706 Bump opower to 0.11.1 (#142395)
* Bump opower to 0.10.1

* opower==0.11.0

* opower==0.11.1

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-08 08:58:43 +02:00
Maciej Bieniek
480d645650 Bump aioshelly to version 13.4.1 (#142477)
* Bymp aioshelly to 13.4.1

* Catch InvalidHostError

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-08 08:58:08 +02:00
John Hillery
553091e95e Bump nexia to 2.7.0 (#142429)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-08 08:57:53 +02:00
Martin Hjelmare
dacc4c230d Add more Z-Wave USB discovery (#142460) 2025-04-08 09:30:43 +03:00
Sanjay Govind
cb07e64b47 Add reconfig flow to bosch_alarm (#142451)
* add reconfig flow to bosch_alarm

* change translation string key

* change translation string key

* cleanup

* cleanup

* Update homeassistant/components/bosch_alarm/config_flow.py

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

* fix linting

---------

Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-04-08 08:22:39 +02:00
Sanjay Govind
8dee5851d2 Add jaraco.itertools license exception as the classifier was removed but no SPDX expression was added (#142439) 2025-04-07 19:50:36 -10:00
Ivan Lopez Hernandez
c14380247b Handle None on the response candidates in Google Generative AI (#142497)
* Added type checking on the candidates list

* Made error message a constant
2025-04-07 21:20:54 -07:00
epenet
c6ac8780ca Fix kelvin parameter in light action specifications (#142456) 2025-04-07 21:56:21 +01:00
Norbert Rittel
8f3f8fa35f Make spelling of "ecobee" consistent, matching official branding (#142496) 2025-04-07 21:06:11 +02:00
J. Diego Rodríguez Royo
1cedacc395 Delete deprecated strings related to Home Connect binary door sensor (#142495)
Delete deprecated strings related to binary door sensor
2025-04-07 21:03:01 +02:00
Norbert Rittel
19a39a3647 Use common state for "Normal" in homee (#142450)
* Use common state for "Normal" in `homee`

Also capitalize the brand name in one string.

* Change all occurrences of "homee" to lower-case
2025-04-07 20:27:01 +02:00
Norbert Rittel
5c2f19de88 Use common states for "Normal" and "High" in romy (#142485)
Also reordered the lines a bit for grouping the common states.
2025-04-07 20:24:43 +02:00
Norbert Rittel
4ccd30865b Use common state for "Normal" in humidifier (#142479) 2025-04-07 20:24:18 +02:00
J. Diego Rodríguez Royo
7ad13c8897 Delete Home Connect deprecated binary door sensor (#142490) 2025-04-07 20:23:38 +02:00
Artur Pragacz
4813b5c882 Fix wait for a dependency with config entries (#142318)
* Fix wait for dependency with config entries

* test types

* test coverage

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-07 20:16:48 +02:00
rappenze
a787c6a31e Add state multiplexer in fibaro integration (#139649)
* Add state multiplexer in fibaro integration

* Add unload test

* Adjust code comments

* Add event entity test

* .
2025-04-07 18:53:35 +02:00
G Johansson
f2e4bcea19 Add subdiv aliases to workday (#133608)
* Add subdiv aliases to workday

* Fix

* Add lib test
2025-04-07 18:24:07 +02:00
RJPoelstra
cd2313d2ca Add tests to MotionMount integration (#137540)
* Add entity tests

* Add __init__ tests

* Cleanup

* Rename mock_motionmount_config_flow to mock_motionmount

* Remove unneeded PropertyMock

* Set defaults on mock_motionmount

* Test proper device is created

* Check whether proper device is created from test_init.py, also without mac

* Find callback and use that to update name
2025-04-07 18:16:44 +02:00
Retha Runolfsson
79b984d612 Add switchbot roller shade and hubmini matter support (#142168)
* Add roller shade and hubmini matter support

* add unit tests

* fix adv data
2025-04-07 16:25:00 +02:00
Wilfred Ketelaar
bf003d643c Fixed Renault charge state icon (#142478)
Fixed charge state icon (duplicate mdi prefix)
2025-04-07 15:54:08 +02:00
Norbert Rittel
04fa699498 Use common states for "Low" and "High" in fyta (#142472) 2025-04-07 15:37:17 +02:00
Norbert Rittel
4020c987b5 Use common state for "Normal" in lg_thinq (#142453)
* Use common state for "Normal" in lg_thinq`

* Replace internal references with common ones
2025-04-07 14:06:52 +02:00
Norbert Rittel
2818f74634 Use common states for "Normal" and "Low" in binary_sensor (#142465)
* Use common state for "Normal" in `binary_sensor`

Replace the "Normal" string for `battery` and the two references to it from `heat` and `cold` to it with the common state.

* Use common state for "Low" in `binary_sensor`
2025-04-07 14:05:28 +02:00
Erik Montnemery
a026820483 Remove FlowManager.async_post_init (#142462) 2025-04-07 13:28:27 +02:00
Erik Montnemery
33fa8df73e Remove ConfigEntriesFlowManager.async_post_init (#142463)
Remove ConfigEntriesFlowManager.async_post_init
2025-04-07 13:28:09 +02:00
Erik Montnemery
2ed70ef241 Use mock_config_flow test helper in config tests (#142461) 2025-04-07 12:27:15 +02:00
J. Nick Koston
04dfa45db0 Add GATT polling support to INKBird (#142307)
* Add GATT polling support to INKBird

* reduce

* fixes

* coverage

* dry

* reduce

* reduce
2025-04-07 10:18:46 +02:00
J. Nick Koston
8d82ef8e36 Fix HKC showing hvac_action as idle when fan is active and heat cool target is off (#142443)
* Fix HKC showing hvac_action as idle when fan is active and heat cool target is off

fixes #142442

* comment relocation
2025-04-07 10:11:15 +02:00
Norbert Rittel
43f93c74da Use common state for "Normal" in matter (#142452) 2025-04-07 09:54:57 +02:00
Simone Chemelli
1e104ba40b Add missing strings to SamsungTV (#142405) 2025-04-07 09:40:06 +02:00
TimL
056d26f13c Set parallel updates for SMLIGHT entities (#142455)
Set parallel updates for entities
2025-04-07 09:38:50 +02:00
starkillerOG
3e4a077862 Fix Reolink smart AI sensors (#142454) 2025-04-07 09:35:44 +02:00
Norbert Rittel
a44adf2e6f Use common states for battery_critical in nuki (#142349)
Replace "on": "Low" and "off": "Normal" with common states.

This will allow us to use the common states in the `binary_sensor` class, too.
2025-04-07 09:17:21 +02:00
Álvaro Fernández Rojas
7c488f1e54 Add thermostat battery and signal sensors for Airzone integration (#142390)
* airzone: add thermostat battery/signal sensors

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

* tests: airzone: use snapshot_platform for sensors

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

* airzone: rename sensor strength

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

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-04-06 20:07:46 +02:00
Simone Chemelli
bea389eed7 Add parallel updates to SamsungTV (#142403) 2025-04-06 18:25:57 +02:00
Simone Chemelli
e96f2f06fb Add parallel updates to Fritz (#142409)
* Add parallel updates to Fritz

* apply review comment

* tweak
2025-04-06 17:28:51 +02:00
Simone Chemelli
9a897d5e12 Update Fritz quality scale (#142411) 2025-04-06 17:04:34 +02:00
Sid
b35a44a0e0 Add sensor platform to eheimdigital (#138809)
* Add fan platform to eheimdigital

* Fix pylint

* Convert fan to sensor platform

* Remove unnecessary changes

* Add state update test

* Review

* Review

* Review
2025-04-06 14:46:19 +02:00
J. Nick Koston
8aee79085a Bump aioesphomeapi to 29.9.0 (#142393)
changelog: https://github.com/esphome/aioesphomeapi/compare/v29.8.0...v29.9.0

fixes #142381
2025-04-06 01:00:41 -10:00
J. Nick Koston
d7ca168b77 Fix flapping logger test (#142367)
The websocket_api logger might get adjusted from other tests
so we cannot be sure its set at debug in this test
2025-04-06 00:09:11 -10:00
Jan-Philipp Benecke
638b88c61c Only load files ending .metadata.json in WebDAV (#142388) 2025-04-06 10:04:18 +02:00
Álvaro Fernández Rojas
62845fe4a7 Update aioairzone to v1.0.0 (#142385)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-04-06 11:01:26 +03:00
Ville Skyttä
c93b4cf61a Upgrade url-normalize to 2.2.0 (#142365)
* https://github.com/niksite/url-normalize/releases/tag/2.0.0
* https://github.com/niksite/url-normalize/releases/tag/2.0.1
* https://github.com/niksite/url-normalize/releases/tag/2.1.0
* https://github.com/niksite/url-normalize/releases/tag/2.2.0
2025-04-06 09:23:45 +03:00
J. Nick Koston
55de21477c Bump yarl to 1.19.0 (#142379) 2025-04-05 17:35:19 -10:00
J. Nick Koston
dcef86a30d Add DHCP discovery support to Bond (#142372)
* Add DHCP discovery support to Bond

* fixes

* unique ids are always upper

* raise_on_progress=False for user

* Update tests/components/bond/test_config_flow.py

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

* assert unique id

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-05 14:22:23 -10:00
Luke Lashley
0a7b4d18dc Check that the current roboorck map exists before updating it. (#142341)
* Check that the current map exists

* Add a few extra checks

* Update coordinator.py

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

* fixlint

---------

Co-authored-by: Allen Porter <allen.porter@gmail.com>
2025-04-05 16:45:00 -07:00
J. Nick Koston
bd8c723e08 Bump flux_led to 1.2.0 (#142362)
changelog: https://github.com/lightinglibs/flux_led/compare/1.1.3...1.2.0
2025-04-05 11:07:21 -10:00
tdfountain
cd7d7cd35c Add reconfiguration flow to NUT (#142127)
* Add reconfiguration flow

* Check host/port/alias without comparing strings

* Replace repeat strings with references
2025-04-05 11:02:46 -10:00
Robert Resch
33cbebc727 Add some Xiaomi BLE sensor translations (#142109) 2025-04-05 10:51:43 -10:00
Arie Catsman
6da37691ff Improve enphase_envoy diagnostics error handling to retain collected data (#142255)
Improve enphase_envoy Diagnostics error handling to retain collected data
2025-04-05 10:51:22 -10:00
Jan Bouwhuis
ae0f27c42f Limit mqtt info logging for discovery of new components (#142344)
* Limit mqtt info logging for discovery of new component

* Keep in bail out, when debug logging is not enabled
2025-04-05 22:38:11 +02:00
Andrew Sayre
660cbc136f Add move queue item HEOS entity service (#142301) 2025-04-05 15:05:01 -05:00
Maciej Bieniek
52143155e7 Record quality scale for IMGW-PIB (#141380)
* Record quality scale for IMGW-PIB

* Update quality scale

* Add the scale to the manifest

* Typo

* Suggested
2025-04-05 22:12:13 +03:00
Norbert Rittel
a29ba51bdb Use common states for sensor levels in accuweather (#142345)
Replace states "Low", "High" and "Very high" with (new) common states.
2025-04-05 22:11:46 +03:00
tronikos
051a503047 Add a description for the enable_google_search_tool option in Google AI (#142322)
* Add a description for the enable_google_search_tool option in Google AI

* Use quotes
2025-04-05 20:49:38 +02:00
Andre Lengwenus
8121d147a6 Add SensorDeviceClass and unit for LCN CO2 sensor. (#142320)
Add SesnorDeviceClass and unit for LCN CO2 sensor.
2025-04-05 20:48:16 +02:00
Norbert Rittel
913d3d4ac6 Use common states for sensor levels in openuv (#142346)
Replace states "Low", "High" and "Very high" with (new) common states.
2025-04-05 21:21:03 +03:00
Norbert Rittel
236f33537b Use common states for "Low" and "Normal" in dsmr (#142354)
Use common state for "Low" and "Normal" in `dsmr`
2025-04-05 21:20:27 +03:00
Ernst Klamer
9f4b2ad05a Bump xiaomi-ble to 0.35.0 (#142350)
bump xiaomi-ble
2025-04-05 08:13:51 -10:00
Thomas55555
f290199606 Add error details in remote calendar flow (#141753)
* Add error details in remote calendar flow

* no args

* adjust

* json

* Apply suggestions

* remove description placeholder
2025-04-05 09:07:06 -07:00
Sanjay Govind
9692d637ca Add reauth flow to bosch_alarm (#142251)
* add reauth flow

* fix tests

* move not happy flow to its own test

* reference existing strings

* Update test_config_flow.py
2025-04-05 14:26:35 +02:00
elmurato
904265bca7 Add reauth flow to Pterodactyl (#142285)
* Add reauth flow

* Add common function to validate connection in config flow

* Fix remaining review findings
2025-04-05 13:56:52 +02:00
Tomek Wasilczyk
1ab8deff3d Add missing test_all requirements (#142036)
Fix homeassistant_hardware handling and add missing test_all requirements
2025-04-05 12:12:34 +02:00
Norbert Rittel
4ab31e2d4e Use common states for sensor levels in tomorrowio (#142324) 2025-04-05 11:05:43 +02:00
J. Nick Koston
d7e36513b5 Bump inkbird-ble to 0.10.1 (#142314)
* Bump inkbird-ble to 0.10.0

changelog: https://github.com/Bluetooth-Devices/inkbird-ble/compare/v0.9.0...v0.10.0

* Apply suggestions from code review
2025-04-05 11:05:01 +02:00
tronikos
d07378e87b Bump opower to 0.10.0 (#142321) 2025-04-05 11:03:20 +02:00
Norbert Rittel
e235a04dae Use common states for sensor levels in nam (#142323) 2025-04-05 11:02:46 +02:00
Norbert Rittel
be32968ed4 Use common states for sensor levels in overkiz (#142325) 2025-04-05 11:01:47 +02:00
Luke Lashley
31c660557d Update Roborock map more consistently on state change (#142228)
* update map more consistently on state change

* Makecoordinator keep track of last_updated_state
2025-04-04 19:58:46 -07:00
Emily Love Watson
414fe53261 Bump pykulersky dependency (#142311) 2025-04-04 21:23:22 -04:00
J. Nick Koston
1d10c81ff3 Add coverage to flux_led to ensure a user flow can replace an ignored entry (#142103)
* Ensure a flux_led user flow can replace an ignored entry

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

Same as #137056 and #137052 but for flux_led

* works as-is was a problem with core.config_entries
2025-04-04 23:27:05 +02:00
Erik Montnemery
1e55d4b613 Restore "Promote after dependencies in bootstrap" (#142001)
Revert "Revert "Promote after dependencies in bootstrap" (#141584)"

This reverts commit de1e06c39b.
2025-04-04 23:26:43 +02:00
Norbert Rittel
f9cd0f37f7 Add common states "Normal", "Very high" and "Very low" (#142167) 2025-04-04 23:22:05 +02:00
J. Nick Koston
39ebc103df Bump pydantic to 2.11.2 (#142302)
changelog: https://github.com/pydantic/pydantic/compare/v2.11.1...v2.11.2
2025-04-04 23:20:36 +02:00
Erwin Douna
52724c5c22 Bump DSMR parser to 1.4.3 (#142303) 2025-04-04 23:20:23 +02:00
J. Nick Koston
0abe57edaa Avoid checking if debug logging is enabled on every WebSocket message (#142258)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-04-04 22:28:55 +02:00
Petro31
8d95fb3b31 Fix empty actions (#142292)
* Apply fix

* Add tests for alarm button cover lock

* update light

* add number tests

* test select

* add switch tests

* test vacuum

* update lock test
2025-04-04 22:17:52 +02:00
Franck Nijhof
69e241d2e6 Add Docker host networking issue detection (#142259)
* Add Docker host networking issue detection

* Update homeassistant/components/network/strings.json

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

* Process review comments

---------

Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2025-04-04 22:03:02 +02:00
Robert Resch
64e1735647 Fix circular mean by always storing and using the weighted one (#142208)
* Fix circular mean by always storing and using the weighted one

* fix

* Fix test
2025-04-04 21:19:15 +02:00
Klaas Schoute
9c538d1e22 Bump forecast-solar lib to v4.1.0 (#142280)
Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2025-04-04 21:18:09 +02:00
Ludovic BOUÉ
3c60bff7dc Add support for Matter EVSE devicetype (#137189)
* Binary sensors

* Add tests

* Update strings

* Enable testing

* Add command_timeout to MatterEntityDescription

* Add entities

* Update strings.json

* Add sensors

* Add tests

* Move command_timeout keyword to MatterGenericCommandSwitch

* Icons

* Update snapshots

* Add tests for switch entity

* Fix switch tests

* Rename states

* Update strings.json

* Update snapshot

* Rename charging switch

* Remove MatterEntity

* Update strings.json

* Update snapshots

* Update snaphots 2/2

* Update strings

* Update test binary
2025-04-04 17:57:22 +02:00
Joost Lekkerkerker
61d2c9335f Bump pySmartThings to 3.0.2 (#142257)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-04-04 17:52:06 +02:00
tdfountain
f4ed9edec6 Use common state strings in NUT (#142284)
User common state strings
2025-04-04 17:06:37 +02:00
Bram Kragten
5eea5858ea Update frontend to 20250404.0 (#142274) 2025-04-04 16:38:56 +02:00
Marc Mueller
a05785529f Fix RuntimeWarning in homeassistant_hardware (#142269) 2025-04-04 08:39:54 -04:00
Josef Zweck
a407a3c98d Fix skyconnect tests (#142262)
fix tests
2025-04-04 12:32:14 +02:00
Erwin Douna
986095482f Tado add diagnostics platform (#142225)
* Add diagnostics platform

* Fix

* Update

* Fix
2025-04-04 12:16:19 +02:00
J. Diego Rodríguez Royo
5ca0441771 Do not fetch disconnected Home Connect appliances (#142200)
* Do not fetch disconnected Home Connect appliances

* Apply suggestions

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

* Update docstring

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-04 09:56:40 +02:00
David Bonnes
79fe8650f8 Tweak evohome to handle older TCC-compatible systems (#142226)
Handle zone.id == TCS.id
2025-04-04 09:54:18 +02:00
David Bonnes
93418f587c Bump evohome-async to 1.0.5 (#141871)
bump client to 1.0.5
2025-04-04 09:52:18 +02:00
tdfountain
9ed8419b5d Add device class ENUM and options for sensors in NUT (#142242)
Add device class ENUM and options for sensors
2025-04-04 09:48:39 +02:00
Norbert Rittel
b5721604b9 Use common states for "Low"/"Medium"/"High" in lg_thinq (#142253) 2025-04-04 09:45:36 +02:00
J. Diego Rodríguez Royo
b7d9ad1c7d Bump aiohomeconnect to 0.17.0 (#142244) 2025-04-04 09:12:57 +02:00
J. Nick Koston
5e04347f13 Bump bluetooth-data-tools to 1.27.0 (#142221)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v1.26.5...v1.27.0
2025-04-04 08:56:41 +02:00
Brett Adams
1cc8a170e6 Bump teslemetry-stream (#142234)
bump stream
2025-04-04 08:54:13 +02:00
Brett Adams
88455702bb Slow down polling in Tesla Fleet (#142130)
* Slow down polling

* Fix tests
2025-04-04 08:51:09 +02:00
tdfountain
471b05ff4b Improve config entry type hints in NUT (#142237)
Fix config entry type hints
2025-04-04 08:45:52 +02:00
J. Nick Koston
95ffa20bd5 Bump bleak-esphome to 2.13.1 (#142233)
* Bump bleak-esphome to 2.13.0

changelog: https://github.com/Bluetooth-Devices/bleak-esphome/compare/v2.12.0...v2.13.0

* 13.1
2025-04-04 08:43:04 +02:00
Thomas55555
5424fa0a00 Bump ical to 9.1.0 (#142197) 2025-04-03 22:21:40 -07:00
puddly
7152c86591 Hide broken ZBT-1 config entries on the hardware page (#142110)
* Hide bad ZBT-1 config entries on the hardware page

* Set up the bad config entry in the unit test

* Roll into a list comprehension

* Remove constant changes

* Fix condition in unit test
2025-04-04 03:09:13 +02:00
DeerMaximum
b9e17c6cc6 Bump pynina to 0.3.5 (#142218) 2025-04-03 22:50:06 +01:00
Norbert Rittel
7751964db4 Use common states for "Low"/"Medium"/"High" in tesla_fleet (#142211) 2025-04-03 22:48:33 +01:00
Norbert Rittel
2f180c96c8 Use common states for "Low"/"Medium"/"High" in teslemetry (#142210) 2025-04-03 22:48:14 +01:00
Norbert Rittel
74d6019f81 Use common states for "Low"/"Medium"/"High" in tessie (#142209) 2025-04-03 22:47:57 +01:00
Norbert Rittel
b84096097c Make calendar.get_events action description consistent (#142170)
Changes it to match the standard HA style using descriptive wording and changes to "Retrieves …" matching other "Get xyz" actions.
2025-04-03 22:25:13 +01:00
Marcel van der Veldt
b9d819e0e5 Do not create a HA mediaplayer for the builtin Music Assistant player (#142192)
Do not create a HA mediaplayer for the builtin Music player
2025-04-03 16:26:56 -04:00
Ivan Lopez Hernandez
30e50d261d Made Google Search enable dependent on Assist availability (#141712)
* Made Google Search enable dependent on Assist availability

* Show error instead of rendering again

* Cleanup test code
2025-04-03 16:23:59 -04:00
Norbert Rittel
3b2ff38f02 Use common states for "Low"/"Medium"/"High" in yolink (#142139) 2025-04-03 21:35:34 +03:00
Erwin Douna
3ed4859db9 Tado bump to 0.18.11 (#142175)
* Bump to version 0.18.11

* Adding hassfest files
2025-04-03 20:30:34 +02:00
Joost Lekkerkerker
380fb6176b Add preset mode to SmartThings climate (#142180)
* Add preset mode to SmartThings climate

* Add preset mode to SmartThings climate
2025-04-03 20:12:24 +02:00
rappenze
fefa2a9dd6 Fix fibaro setup (#142201) 2025-04-03 18:36:44 +02:00
Fredrik Erlandsson
53d2347c10 Fix blocking event loop - daikin (#141442)
* fix blocking event loop

* create ssl_context directly

* update manifest

* update manifest.json
2025-04-03 16:54:23 +02:00
Abílio Costa
b2af1084f9 Update Whirlpool to 0.20.0 (#142119) 2025-04-03 15:35:37 +01:00
Paul Bottein
cf005feace Add translation for hassio update entity name (#142090) 2025-04-03 13:13:52 +02:00
Sanjay Govind
7a9a4db8d7 Add diagnostics for bosch alam integration (#142165)
* add diagnostics to bosch_alarm

* use snapshot
2025-04-03 12:05:08 +02:00
Retha Runolfsson
934e81db43 Bump PySwitchBot to 0.59.0 (#142166)
update pyswitchbot to 0590
2025-04-03 11:48:16 +02:00
Norbert Rittel
8b3a43258d Use common states for "Low" and "High" in dsmr_reader (#142159) 2025-04-03 10:31:45 +02:00
Erik Montnemery
b7bc9607a2 Fix lying comment in ConfigEntriesFlowManager.async_finish_flow (#142146) 2025-04-03 10:21:26 +02:00
Norbert Rittel
c2eb72fce4 Use common states for "Low" and "High" in yale_smart_alarm (#142149) 2025-04-03 09:47:54 +02:00
Norbert Rittel
1d694450ef Use common states for "Low" and "High" in balboa (#142150) 2025-04-03 09:46:49 +02:00
Arie Catsman
98c56bce4b Bump pyenphase to 1.25.5 (#142107) 2025-04-03 09:46:09 +02:00
G Johansson
ec396513a2 Bump pysmhi to 1.0.1 (#142111) 2025-04-03 09:43:00 +02:00
J. Nick Koston
0b61b62334 Avoid logging a warning when replacing an ignored config entry (#142114)
Replacing an ignored config entry with one from the user
flow should not generate a warning. We should only warn
if we are replacing a usable config entry.

Followup to adjust the warning added in #130567
cc @epenet
2025-04-03 09:38:50 +02:00
Norbert Rittel
dfa180ba64 Use common states for "Low"/"Medium"/"High" in home_connect (#142142)
* Use common states for "Low"/"Medium"/"High" in `home_connect`

Replaces two occurrences of "Low"/"Medium"/"High" each with the (new) common strings.

* Replace internal references with common ones
2025-04-03 09:33:06 +02:00
Norbert Rittel
db44ed845d Use common states for "Low"/"Medium"/"High" in ecovacs (#142140) 2025-04-03 09:24:48 +02:00
elmurato
4a562b5085 Improve exception handling in Pterodactyl (#141955)
Improve exception handling
2025-04-03 08:45:06 +02:00
Norbert Rittel
03c70e18df Use common states for "Low"/"Medium"/"High" in roborock (#142113) 2025-04-03 08:14:14 +02:00
Norbert Rittel
df5cdf7de4 Use common states for "Low"/"Medium"/"High" in litterrobot (#142112) 2025-04-03 08:14:02 +02:00
Norbert Rittel
1860db4632 Use common state for "Medium" in iron_os (#142117) 2025-04-03 08:13:16 +02:00
Brett Adams
09d25f322a Bump tesla-fleet-api to v1.0.17 (#142131)
bump
2025-04-03 08:12:41 +02:00
Michael
33d895bc7d Use snapshot_platform in all platform test modules for AVM Fritz!SmartHome (#142093)
use snapshot_platform in all platform test modules
2025-04-03 00:14:07 +02:00
tdfountain
02ca1f2889 Fix strings username data description in NUT (#142115)
Fix strings username data description
2025-04-02 11:08:13 -10:00
Abílio Costa
e8335b1ed7 Revert "Move setup messages from info to debug level" (#142023)
Revert "Move setup messages from info to debug level (#141834)"

This reverts commit 663d0691a7.
2025-04-02 10:42:38 -10:00
Erik Montnemery
ec96e54f87 Avoid unnecessary reload in apple_tv reauth flow (#142079) 2025-04-02 10:39:35 -10:00
Norbert Rittel
519a416837 Use common states for "ptc_level" in xiaomi_miio (#142044) 2025-04-02 23:38:14 +03:00
Norbert Rittel
d56a3ac652 Use common states for "wi_fi_strength" in aquacell (#142047) 2025-04-02 23:37:56 +03:00
Norbert Rittel
d13beec3e1 Use more common states for "foot_warmer_temp" in sleepiq (#142048) 2025-04-02 23:37:42 +03:00
Norbert Rittel
5d0de138f6 Use common states for "speed" in motionblinds_ble (#142050) 2025-04-02 23:37:27 +03:00
Norbert Rittel
06edb2e36b Use common states for selectors in openai_conversation (#142056) 2025-04-02 23:37:19 +03:00
Norbert Rittel
23ade8180a Replace "to log into" with "to log in to" in honeywell (#142063) 2025-04-02 23:37:09 +03:00
Norbert Rittel
314f658d92 Fix grammar bug "to sign into" in hive (#142086) 2025-04-02 23:36:31 +03:00
Norbert Rittel
48cbe22609 Replace "Sign into …" with "Sign in to …" in sharkiq (#142087)
Fix grammar bug "to sign into" in `sharkiq`
2025-04-02 23:36:04 +03:00
Norbert Rittel
f8a15c8228 Use common states for "Low"/"Medium"/"High" in matter (#142095) 2025-04-02 23:35:52 +03:00
Norbert Rittel
17f6ded7b0 Use common states for "Low"/"Medium"/"High" in wyoming (#142096) 2025-04-02 23:32:24 +03:00
currand
691cb378a0 Correctly support humidification and dehumidification in Nexia Thermostats (#139792)
* Add set_dehumidify_setpoint service. Refactor set_humidify_setpoint.

* Add closest_value function in utils

* Refactor target humidity

* Update tests for util.py

* Refactor target humidity. Update tests.

* Remove duplicate constant

* Add humidify and dehumidfy sensors

* Update sensor names

* Remove clamping and commented code

* Iplement suggestions from review

* Switch order check order

* remove closest_value()

* Update strings for clarity/grammar

* Update strings for grammar/clarity

* tweaks

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-02 10:29:40 -10:00
tdfountain
2876e5d0cd Improve and add missing config flow strings in NUT (#142035)
* Improve and add missing config descriptions

* Fix string

* Conform to Microsoft style guidelines on 'sign in'

* Note username and password are optional

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-04-02 10:29:27 -10:00
Norbert Rittel
2601217209 Use common states for battery sensor in withings (#142043)
Use common states for battery level in `withings`
2025-04-02 19:50:55 +02:00
Simone Chemelli
a7be9e6643 Fix humidifier platform for Comelit (#141854)
* Fix humidifier platform for Comelit

* apply review comment
2025-04-02 19:17:51 +02:00
Norbert Rittel
30ea27d4a5 Replace "to log into" with "to log in to" in incomfort (#142060)
* Replace "to log into" with "to log in to" in `incomfort`

Also fix one missing sentence-casing of "gateway".

* Replace duplicate "data_description" strings with references
2025-04-02 17:33:36 +02:00
Joost Lekkerkerker
2a66c03d73 Fix switch name Unknown in SmartThings (#142081)
Fix switch name Unknown
2025-04-02 17:15:36 +02:00
Michael
6b34c38d21 Fix state class for battery sensors in AVM Fritz!SmartHome (#142078)
* set proper state class for battery sensor

* fix tests
2025-04-02 17:00:29 +02:00
Marcel van der Veldt
0871bf13a4 Deprecate None effect instead of breaking it for Hue (#142073)
* Deprecate effect none instead of breaking it for Hue

* add guard for unknown effect value

* revert guard

* Fix

* Add test

* Add test

* Add test

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-02 15:39:31 +02:00
puddly
4c44d2f4d9 Translation key for ZBT-1 integration failing due to disconnection (#142077)
Translation key for device disconnected
2025-04-02 15:33:41 +02:00
Joost Lekkerkerker
833a8be2d1 Improve SmartThings switch deprecation (#142072) 2025-04-02 15:33:17 +02:00
Abílio Costa
f8113ae80b Allow excluding modules from noisy logs check (#142020)
* Allow excluding modules from noisy logs check

* Cache non-excluded modules; hardcode self module name; optimize call

* Address review comments
2025-04-02 15:07:00 +02:00
Erik Montnemery
feff5355c8 Mark Integration with @final (#142057) 2025-04-02 15:05:43 +02:00
Erik Montnemery
6fbee5c2e3 Mark ReadOnlyDict with @final (#142059) 2025-04-02 14:06:01 +02:00
Erik Montnemery
8200c234dd Mark logbook.EventAsRow with @final (#142058) 2025-04-02 14:05:23 +02:00
Erik Montnemery
dfd86d56ec Convert test fixtures to async (#142052) 2025-04-02 14:05:07 +02:00
Erik Montnemery
93162f6b65 Mark Event and HassJob with @final (#142055) 2025-04-02 14:04:48 +02:00
Joost Lekkerkerker
93ea88f3de Improve SmartThings sensor deprecation (#142070)
* Improve SmartThings sensor deprecation

* Improve SmartThings sensor deprecation

* Improve SmartThings sensor deprecation
2025-04-02 13:56:23 +02:00
Joost Lekkerkerker
ca48b07858 Add Eve brand (#142067) 2025-04-02 13:54:58 +02:00
Erik Montnemery
795e01512a Correct TodoItem docstrings (#142066) 2025-04-02 13:49:12 +02:00
Petro31
36857b4b20 Fix weather templates using new style configuration (#136677) 2025-04-02 12:38:48 +02:00
Robert Resch
8432b6a790 Bump deebot-client to 12.5.0 (#142046) 2025-04-02 11:48:27 +02:00
Erik Montnemery
e02a6f2f19 Convert alexa test fixtures to async (#142054) 2025-04-02 11:00:13 +02:00
J. Nick Koston
6b45b0f522 Bump bluetooth-data-tools to 1.26.5 (#142045)
changelog: https://github.com/Bluetooth-Devices/bluetooth-data-tools/compare/v1.26.1...v1.26.5
2025-04-02 10:37:27 +02:00
dependabot[bot]
c35ec1f12b Bump actions/dependency-review-action from 4.5.0 to 4.6.0 (#142042)
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/v4.5.0...v4.6.0)

---
updated-dependencies:
- dependency-name: actions/dependency-review-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-02 09:19:06 +02:00
J. Nick Koston
bb7e1d4723 Reduce overhead to run headers middleware (#142032)
Instead of having to itererate a dict, update
the headers multidict using a pre-build CIMultiDict
which has an internal fast path
2025-04-02 09:09:39 +02:00
Tomek Wasilczyk
2305cb0131 Fix warning about unfinished oauth tasks on shutdown (#141969)
* Don't wait for OAuth token task on shutdown

To reproduce the warning:
1. Start authentication with integration using OAuth (e.g. SmartThings)
2. When redirected to external login site, just close the page
3. Settings -> Restart Home Assistant

* Clarify comment

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-04-02 09:07:36 +02:00
TheJulianJES
253293c986 Bump ZHA to 0.0.55 (#142031) 2025-04-02 07:45:17 +02:00
J. Nick Koston
1040fe50ec Bump aiohttp to 3.11.16 (#142034)
changelog: https://github.com/aio-libs/aiohttp/compare/v3.11.15...v3.11.16
2025-04-02 07:43:43 +02:00
puddly
6a012498a5 Fix entity names for HA hardware firmware update entities (#142029)
* Fix entity names for HA hardware firmware update entities

* Fix unit tests
2025-04-01 18:43:01 -04:00
puddly
74c2060c49 Skip firmware config flow confirmation if the hardware is in use (#142017)
* Auto-confirm the discovery if we detect that the device is already in use

* Add a unit test
2025-04-01 21:39:25 +01:00
Jan Bouwhuis
177fff3ff0 Add type hint on inherrited attribute _message_callback for MQTT mixin classes (#142011) 2025-04-01 20:28:11 +02:00
G Johansson
e7fadcda7b Fix train to for multiple stations in Trafikverket Train (#142016) 2025-04-01 20:27:34 +02:00
puddly
91c53e9c52 Fix data in old SkyConnect integration config entries or delete them (#141959)
* Delete old SkyConnect integration config entries

* Try migrating, if possible

* Do not delete config entries, log a failure
2025-04-01 20:27:06 +02:00
Norbert Rittel
bd1c66984f Sentence-case "Heat pump" / "High demand" states in water_heater (#142012) 2025-04-01 19:23:03 +01:00
Abílio Costa
704777444c Refactor Whirlpool sensor platform (#141958)
* Refactor Whirlpool sensor platform

* Rename sensor classes

* Remove unused logging

* Split washer dryer translation keys to use icon translations

* Address review comments

* Remove entity name; fix sentence casing
2025-04-01 20:02:24 +02:00
Mikko Koo
c28a6a867d Fix nordpool Not to return Unknown if price is exactly 0 (#140647)
* now the price will return even if it is exactly 0

* now the price will return even if it is exactly 0

* now the price will return even if it is exactly 0

* clean code

* clean code

* update testing code coverage

* change zero testing to SE4

* remove row duplicate

* fix date comments

* improve testing

* simplify if-return-0

* remove unnecessary tests

* order testing rows

* restore test_sensor_no_next_price

* remove_average_price_test

* fix test name
2025-04-01 19:45:23 +02:00
Joost Lekkerkerker
4bfc96c02b Improve SmartThings deprecation (#141939)
* Improve SmartThings deprecation

* Improve SmartThings deprecation
2025-04-01 19:36:14 +02:00
Jan Bouwhuis
faac51d219 Improve error handling and logging on MQTT update entity state updates when template rederings fails (#141960) 2025-04-01 19:22:32 +02:00
Joost Lekkerkerker
d9cd62bf65 Add LG ThinQ event bus listener to lifecycle hooks (#142006) 2025-04-01 19:20:31 +02:00
Bram Kragten
6007629293 Update frontend to 20250401.0 (#142010) 2025-04-01 19:19:53 +02:00
Markus Adrario
426e9846d9 Add Homee climate platform (#141616)
* Add climate platform

* Add climate tests

* Add service tests

* Add snapshot test

* Code optimazitions 1

* Add test for current preset mode.

* code optimization 2

* code optimization 3

* small tweaks

* another small tweak

* Last minute changes

* Update tests/components/homee/test_climate.py

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

* fix review comments

* typo

* more review fixes.

* maybe final review fixes.

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-01 18:08:36 +02:00
Norbert Rittel
935db1308f Add common states for "Low", "Medium" and "High" (#141999) 2025-04-01 18:07:19 +02:00
aaronburt
597540b611 Correct unit conversion for OneDrive quota display (#140337)
* Correct unit conversion for OneDrive quota display

* Convert OneDrive quota values from bytes to GiB in coordinator and update strings
2025-04-01 17:17:34 +02:00
LG-ThinQ-Integration
e0b030c892 Add select for dehumidifier's mode control (#140572)
* Add select for dehumidifier

* Add device_class POWER

* Delete not related to select

* Update homeassistant/components/lg_thinq/strings.json

---------

Co-authored-by: yunseon.park <yunseon.park@lge.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-04-01 17:14:39 +02:00
tmenguy
da9b3dc68b Better throttling handling for the Renault API (#141667)
* Added some better throttling handling for the Renault API, it fixes #106777 HA ticket

* Added some better throttling handling for the Renault API, it fixes #106777 HA ticket, test fixing

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/renault_hub.py

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

* bigger testsuite for  #106777 HA ticket

* bigger testsuite for  #106777 HA ticket

* bigger testsuite for  #106777 HA ticket

* bigger testsuite for  #106777 HA ticket

* Adjust tests

* Update homeassistant/components/renault/coordinator.py

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

* Update homeassistant/components/renault/renault_hub.py

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

* Update homeassistant/components/renault/renault_hub.py

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

* Update tests/components/renault/test_sensor.py

* Update tests/components/renault/test_sensor.py

* Update tests/components/renault/test_sensor.py

* requested changes  #106777 HA ticket

* Use unkown

* Fix test

* Fix test again

* Reduce and fix

* Use assumed_state

* requested changes  #106777 HA ticket

---------

Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-04-01 17:14:21 +02:00
Norbert Rittel
23b79b2f39 Capitalize app name in deluge description string (#142003)
This should help fix / prevent some wrong translations like "impostazioni di diluvio" in Italian.
2025-04-01 16:39:22 +02:00
Erik Montnemery
b9a0d553ab Fix import issues related to onboarding views (#141919)
* Fix import issues related to onboarding views

* Add ha-intents and numpy to pyproject.toml

* Add more requirements to pyproject.toml

* Add more requirements to pyproject.toml
2025-04-01 16:29:18 +02:00
Artur Pragacz
c4f0d9d2fa Always set up after dependencies if they are scheduled to be loaded (#141593)
* Always setup after dependencies

* Add comment
2025-04-01 16:28:29 +02:00
Erik Montnemery
78338f161f Add base class for onboarding views (#141970) 2025-04-01 16:13:18 +02:00
Simone Chemelli
aaafdee56f Remove un-necessary wait for background tasks in Comelit tests (#142000) 2025-04-01 16:05:46 +02:00
Dan Raper
7068986c14 Bump Ohme to platinum (#141762)
* Bump version of ohmepy and fix types

* Add strict typing to ohme

* Inject websession for ohme

* CI/code formatting fixes for ohme

* Update mypy.ini for ohme

* Fix typing in services for ohme

* Bump ohme quality in manifest
2025-04-01 15:48:45 +02:00
Louis Christ
32ee31b8c7 Use saved volume when selecting preset in bluesound integration (#141079)
* Use load_preset to select preset as source

* Add tests

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-04-01 14:41:24 +02:00
Simone Chemelli
50c12d4487 Move Vodafone Station to platinum quality scale (#141406) 2025-04-01 14:39:44 +02:00
Erik Montnemery
2427b77363 Use send_json_auto_id in websocket_api tests (#141994) 2025-04-01 14:31:49 +02:00
Erik Montnemery
fa9613a879 Unconditionally import turbojpeg from camera (#141995) 2025-04-01 14:24:15 +02:00
Erik Montnemery
145e02769c Remove redundant type hint from core_config.py (#141989) 2025-04-01 13:54:24 +03:00
Norbert Rittel
c151696357 Fix spelling in Reolink user-facing strings (#141971)
Fix spelling in `reolink` user-facing string

- replace three occurrences of "a" with proper "an"
- replace "infra red" with "infrared"
2025-04-01 11:38:48 +02:00
Paulus Schoutsen
cbcd1929dd Move Z-Wave JS smoke, CO, CO2, Heat, Water problem entities to diagnostic (#129922)
* Move Z-Wave JS smoke, CO, CO2, Heat, Water problem entities to diagnostic

* Update link + states

* Specify problem class explicitly instead of catch-all

* Heat alarm test is not a problem

* Also split out smoke alarm

* Document mapping rule

* add tests

* format

* update test

* review comments

* remove idle state from doc as it is ignored

---------

Co-authored-by: Petar Petrov <MindFreeze@users.noreply.github.com>
2025-04-01 11:37:59 +02:00
Norbert Rittel
7a9836064d Replace "A entity" with "An entity" in modbus (#141973)
* Replace "A entity" with "An entity" in `modbus`

* Fix wrong commas
2025-04-01 11:14:41 +02:00
epenet
3155c1cd4f Add tests for renault QuotaLimitException (#141985) 2025-04-01 11:01:13 +02:00
Norbert Rittel
28c38e92d4 Fix typo "certificartes" in fully_kiosk (#141979) 2025-04-01 09:28:41 +02:00
Norbert Rittel
9c3b9eee2a Replace "a entity" with "an entity" in isy994 user strings (#141972) 2025-04-01 09:52:31 +03:00
J. Nick Koston
def50b255d Bump aiohttp to 3.11.15 (#141967)
changelog: https://github.com/aio-libs/aiohttp/compare/v3.11.14...v3.11.15

fixes #141855
fixes #141146
2025-04-01 08:31:25 +02:00
Steven Stallion
aa7694e81c Bump sensorpush-api to 2.1.2 (#141965) 2025-04-01 07:29:09 +02:00
Manu
a722912e05 Add translations for flash options in light.turn_on action (#141950) 2025-04-01 05:43:24 +02:00
Norbert Rittel
a09213bce8 Replace "Start" and "Disable" with common actions in hassio (#141953) 2025-03-31 23:23:25 +02:00
J. Nick Koston
0abaaa0a06 Bump pydantic to 2.11.1 (#141951) 2025-03-31 23:23:02 +02:00
Ben Jones
363b88407c Handle empty or missing state values for MQTT light entities using 'template' schema (#141177)
* check for empty or missing values when processing state messages for MQTT light entities using 'template' schema

* normalise warning logs

* add tests (one is still failing and I can't work out why)

* fix test

* improve test coverage after PR review

* improve test coverage after PR review
2025-03-31 23:16:22 +02:00
Norbert Rittel
4a4458ec5b Replace "Open" with common state in comelit (#141949) 2025-03-31 22:02:22 +02:00
Steven Looman
b3379e1921 Bump async-upnp-client to 0.44.0 (#141946) 2025-03-31 21:35:21 +02:00
Bram Kragten
09e5fbb258 Update frontend to 20250331.0 (#141943) 2025-03-31 21:23:48 +02:00
puddly
b758dc202f Reload the ZBT-1 integration on USB state changes (#141287)
* Reload the config entry when the ZBT-1 is unplugged

* Register the USB event handler globally to react better to re-plugs

* Fix existing unit tests

* Add an empty `CONFIG_SCHEMA`

* Add a unit test

* Fix unit tests

* Fix unit tests for Linux

* Address most review comments

* Address remaining review comments
2025-03-31 09:10:24 -10:00
Jan-Philipp Benecke
c5f75bc135 Import function instead of relying on hass.component in watergate (#141945) 2025-03-31 21:10:14 +02:00
Michael
a904df5bc2 Add common module to ProxymoxVE integration (#141941)
add common module
2025-03-31 21:03:13 +02:00
Abílio Costa
1978e94aaa Fix Whirlpool sensor icon definition (#141937) 2025-03-31 19:32:24 +01:00
Michael Hansen
28dbf6e3dc Add preannounce boolean for announce/start conversation (#141930)
* Add preannounce boolean

* Fix disabling preannounce in wizard

* Fix casing

* Fix type of preannounce_media_id

* Adjust description of preannounce_media_id
2025-03-31 20:29:07 +02:00
Jan-Philipp Benecke
ef989160af Bump aiowebdav2 to 0.4.5 (#141934) 2025-03-31 19:08:21 +02:00
Erik Montnemery
4071eb76c7 Revert PR 136314 (Cleanup map references in lovelace) (#141928)
* Revert PR 136314 (Cleanup map references in lovelace)

* Update homeassistant/components/lovelace/__init__.py

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

* Fix dashboard creation

* Update homeassistant/components/lovelace/__init__.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-03-31 18:33:45 +02:00
J. Nick Koston
ac723161c1 Bump grpcio to 1.71.0 (#141881) 2025-03-31 06:16:33 -10:00
elmurato
94884d33db Add button platform to Pterodactyl (#141910)
* Add button platform to Pterodactyl

* Fix parameter order of send_power_action, remove _attr_has_entity_name from button

* Rename PterodactylCommands to PterodactylCommand
2025-03-31 17:53:08 +02:00
Norbert Rittel
64994277b1 Fix spelling of "QR code" and improve grammar in tuya (#141929)
* Fix spelling of "QR code" in `tuya`

Remove the wrong hyphen.

* Add "the" to the sentence to improve the grammar
2025-03-31 17:23:14 +03:00
Josef Zweck
8abf822d92 Add None check to azure_storage (#141922) 2025-03-31 15:29:17 +02:00
Erik Montnemery
6e6f10c085 Don't create persistent notification when starting discovery flow (#141546)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-03-31 14:42:58 +02:00
Norbert Rittel
1c0768dd78 Replace "Disconnected" with common string in teslemetry (#141914)
Replaced "Disconnected" with common string in `teslemetry`
2025-03-31 14:42:07 +02:00
Paulus Schoutsen
c888502671 Add quality scale summary generator (#141780)
* Add quality scale summary generator

* Remove executable bit

* Split out virtual
2025-03-31 14:41:13 +02:00
Michael
58af3545f4 Correct further sensor categorizations in AVM Fritz!Box tools (#141911)
mark margin and attenuation as diagnostic and disable them by default
2025-03-31 13:18:44 +02:00
Norbert Rittel
d669dd45cf Use common state for "Paused" and "Unplugged" / "Plugged in" from binary sensor (#141908)
Use common state for "Paused" and "Unplugged" / "Plugged" from `binary sensor`
2025-03-31 13:18:12 +02:00
Norbert Rittel
05a5b8cdf0 Replace "Connected" and "Disconnected" with common states (#141912) 2025-03-31 13:17:46 +02:00
Norbert Rittel
33b6d0a45f Replace "Connected" and "Disconnected" with common states (#141913) 2025-03-31 13:13:48 +02:00
Joost Lekkerkerker
fba11d8016 Don't create SmartThings entities for disabled components (#141909) 2025-03-31 13:36:46 +03:00
Norbert Rittel
314834b4eb Use more common state strings in lektrico (#141906) 2025-03-31 13:36:31 +03:00
Abílio Costa
46a8325556 Simplify Energy cost sensor update method (#138961) 2025-03-31 11:32:30 +01:00
Erik Montnemery
86622cd29d Remove unnecessary imports of http integration (#141899)
* Remove unnecessary imports of http integration

* Check reason for test failures

* Revert "Check reason for test failures"

This reverts commit 5ccf356ab0.

* Update tests
2025-03-31 11:30:20 +01:00
Joost Lekkerkerker
c91a1d0fce Fix SmartThings being able to understand incomplete DRLC (#141907) 2025-03-31 12:20:06 +02:00
Dan Raper
778a2891ce Bump ohmepy to 1.5.1 (#141879)
* Bump ohmepy to 1.5.1

* Fix types for ohmepy version change
2025-03-31 11:44:01 +02:00
Retha Runolfsson
560c719b0f Add switchbot cover unit tests (#140265)
* add cover unit tests

* Add unit test for SwitchBot cover

* fix: use mock_restore_cache to mock the last state

* modify unit tests

* modify scripts as suggest

* improve readability

* adjust patch target per review comments

* adjust patch target per review comments

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2025-03-31 11:42:31 +02:00
Franck Nijhof
d5ab86edbf Fix SmartThings climate entity missing off HAVC mode (#141700)
* Fix smartthing climate entity missing off HAVC mode:

* Fix tests

* Fix test

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-03-31 11:41:52 +02:00
Thomas55555
6aeb7f36f6 Handle 403 error in remote calendar (#141839)
* Handle 403 error in remote calendar

* tests
2025-03-31 11:40:14 +02:00
Erik Montnemery
f6308368b0 Test behavior of statistic_during_period when circular mean is undefined (#141554)
* Test behavior of statistic_during_period when circular mean is undefined

* Improve comment
2025-03-31 10:43:57 +02:00
pglab-electronics
c0e8f14745 Update support to external library pypglab to version 0.0.5 (#141876)
update support to external library pypglab to version 0.0.5
2025-03-31 10:25:48 +02:00
elmurato
0488012c77 Add sensor platform to Pterodactyl (#141428)
* Add sensor platform

* Correct CPU Limit state attribute translation

* Remove calculated util entitites, add usage and limit entities

* Use suggested_unit_of_measurement instead of converters

* Start only first word of sensor names in upper case, improve suggested units of sensors

* Simplify update of native_value, set uptime as timestamp

* Add paranthesis around multi-line lambda
2025-03-31 10:23:40 +02:00
J. Nick Koston
f247183e11 Bump SQLAlchemy to 2.0.40 (#141898)
changelog: https://docs.sqlalchemy.org/en/20/changelog/changelog_20.html#change-2.0.40
2025-03-31 10:11:13 +02:00
Norbert Rittel
c662b94d06 Replace "Away" in climate with common state string, matching "Home" (#141897)
* Replace "Away" in `climate` with common state string

Also reordered the states a bit to group the two presence-based options at the top and order the rest alphabetically.

* Prettier
2025-03-31 09:56:10 +02:00
Norbert Rittel
ee4bf165b5 Use common state for "Away" in nobo_hub (#141895) 2025-03-31 08:45:19 +02:00
Norbert Rittel
92ac396d19 Use common state for "Away" in honeywell (#141894) 2025-03-31 08:44:42 +02:00
Norbert Rittel
03366038ce Define "Away" state in plugwise using common string (#141875) 2025-03-31 07:35:03 +02:00
Noah Husby
0b91aa9202 Bump aiorussound to 4.5.0 (#141892) 2025-03-31 07:32:14 +02:00
Norbert Rittel
ffc4fa1c2a Replace "Away" in humidifier with common string (#141872) 2025-03-31 07:29:17 +02:00
Norbert Rittel
15e03957a9 Replace "Away" in generic_thermostat with common string (#141880) 2025-03-31 07:25:19 +02:00
Marc Mueller
0be881bca6 Fix test RuntimeWarnings for homeassistant_hardware (#141884) 2025-03-31 07:24:02 +02:00
Paulus Schoutsen
e88b321741 Ensure user always has first turn for Google Gen AI (#141893) 2025-03-30 23:31:45 -04:00
Allen Porter
0c4cb27fe9 Add OAuth support for Model Context Protocol (mcp) integration (#141874)
* Add authentication support for Model Context Protocol (mcp) integration

* Update homeassistant/components/mcp/application_credentials.py

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

* Handle MCP servers with ports

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2025-03-30 23:14:52 -04:00
J. Nick Koston
1639163c2e Handle encryption being disabled on an ESPHome device (#141887)
fixes #121442
2025-03-30 21:25:24 -04:00
J. Nick Koston
f043404cd9 Fix duplicate call to async_write_ha_state when adding elkm1 entities (#141890)
When an entity is added state is always written in
add_to_platform_finish:

7336178e03/homeassistant/helpers/entity.py (L1384)

We should not do it in async_added_to_hass as well
2025-03-30 21:23:54 -04:00
J. Nick Koston
018651ff1d Improve handling of empty iterable in async_add_entities (#141889)
* Improve handling of empty iterable in async_add_entities

We had two checks here because we were doing an empty
iterable check. If its a list we can check it directly
but if its not we need to convert it to a list to know
if its empty.

* tweaks

* tasks never used
2025-03-30 21:22:47 -04:00
J. Nick Koston
704d7a037c Bump aioesphomeapi to 29.8.0 (#141888)
changelog: https://github.com/esphome/aioesphomeapi/compare/v29.7.0...v29.8.0
2025-03-30 21:14:17 -04:00
Marc Mueller
7336178e03 Fix test RuntimeWarnings for hassio (#141883) 2025-03-30 12:00:48 -10:00
tdfountain
1c16fb8e42 Set and check unique id of config in NUT (#141783)
* Set and check unique id in config

* Update homeassistant/components/nut/config_flow.py

Set unique ID and abort only if value is defined

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

* Add duplicate ID test case for multiple devices

* Add unique ID check to config flow step for UPS

* Update homeassistant/components/nut/__init__.py

Fix to only set config_entries unique ID if not None

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

* Remove duplicate config flow call

---------

Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-03-30 11:41:56 -10:00
tdfountain
3ab2cd3fb7 Set device connection MAC address for networked devices in NUT (#141856)
* Set device connection MAC address for networked devices

* Change variable name for consistency
2025-03-30 11:21:11 -10:00
Norbert Rittel
5057343b6a Replace "Home" and "Away" in vallox with common strings (#141870) 2025-03-30 22:49:52 +02:00
Norbert Rittel
6c3e85fd5e Replace "Home" and "Away" in reolink with common strings (#141869) 2025-03-30 22:44:48 +02:00
Norbert Rittel
f046456445 Replace "Home" and "Away" in opentherm_gw with common strings (#141867) 2025-03-30 22:36:46 +02:00
tdfountain
e81a08916a Remove scan interval option from NUT (#141845)
Remove scan interval option and test case, migrate config and add migration test case
2025-03-30 22:34:45 +02:00
John Karabudak
85d2e3d006 Fix LLM to speed up prefill (#141156)
* fix: two minor LLM changes to speed up prefill

- moved the current date/time to the end of the prompt
- started sorting all entities by last_changed

* addressed PR comments

* fixed tests

* reduced scope of try/catch in LLM prompt

* addressed more PR comments

* fixed Anthropic test

* addressed another PR comment

* fixed remainder of tests
2025-03-30 13:30:40 -07:00
Norbert Rittel
936b0b32ed Replace "Home" and "Away" in drop_connect with common strings (#141864) 2025-03-30 22:30:08 +02:00
J. Nick Koston
0d511c697c Improve performance of as_compressed_state (#141800)
We have to build all of these at startup.

Its a lot faster to compare floats instead
of datetime objects. Since we already have to
fetch last_changed_timestamp, use it to compare
with last_updated_timestamp since we already know
we will have last_updated_timestamp
2025-03-30 22:20:24 +02:00
Norbert Rittel
5bfe034b4d Replace "Country" with common and pollutant labels with sensor strings (#141863)
* Replace "Country" with common and pollutant labels with `sensor` strings

* Fix copy & paste error for "ozone"
2025-03-30 22:17:51 +02:00
J. Nick Koston
cf786b3b04 Bump google_cloud deps (#141861)
speech: https://github.com/googleapis/google-cloud-python/compare/google-cloud-speech-v2.27.0...google-cloud-speech-v2.31.1
texttospeech: https://github.com/googleapis/google-cloud-python/compare/google-cloud-texttospeech-v2.17.2...google-cloud-texttospeech-v2.25.1
2025-03-30 22:15:19 +02:00
Joost Lekkerkerker
0f9f090db2 Bump pySmartThings to 3.0.1 (#141722) 2025-03-30 21:34:49 +02:00
J. Nick Koston
302eea7418 Bump PyISY to 3.4.0 (#141851)
* Bump PyISY to 3.3.0

changelog: https://github.com/automicus/PyISY/compare/v3.2.0...v3.3.0

* Apply suggestions from code review

---------

Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-03-30 22:29:51 +03:00
J. Nick Koston
b5e1f7e03e Cleanup some typing in isy994 (#141859)
Now that pyisy is mostly typed there were some obvious
issues. We are still a long way away from being able
to add py.typed to pyisy, but we can now see some
obvious things in an IDE
2025-03-30 09:18:30 -10:00
Norbert Rittel
02397a8d2d Replace "Off" state in selectors of home_connect with common state (#141857)
* Replace "Off" state in selectors of `home_connect` with common state

* Replace internal with common references
2025-03-30 21:03:46 +02:00
Norbert Rittel
ea9437eab2 Use common state for "Off" in climate selector (#141850)
* Use common states for "Away" and "Off" in `climate`

* Revert common state for "Away"

Four other integrations are referencing this instead of the common state. Needs to be addressed first.
2025-03-30 21:02:54 +02:00
Norbert Rittel
aaea30bee0 Replace "Off" in selector of media_player with common state (#141853) 2025-03-30 21:01:03 +02:00
Joost Lekkerkerker
9c869fa701 Add a coordinator to Point (#126775)
* Add a coordinator to Point

* Fix

* Fix

* Fix

* Fix

* Fix

* Fix
2025-03-30 20:58:40 +02:00
Eli Sand
5106548f2c Fix generic_thermostat so it doesn't turn on when current temp is within target temp range (#138209)
* Don't turn on thermostat if temp is equal to target temp.

* Update strings to reflect logic change.

* Fix logic and add zero tolerance tests.

* Include tests for cool mode

* Removed unnecessary async_block_till_done calls
2025-03-30 19:43:13 +01:00
Franck Nijhof
506d485c0d Ensure EcoNet operation modes are unique (#141689) 2025-03-30 20:31:08 +02:00
Bouwe Westerdijk
da190ec96f Bump plugwise to v1.7.3 (#141843) 2025-03-30 20:24:13 +02:00
Franck Nijhof
9567929484 Update pvo to v2.2.1 (#141847) 2025-03-30 21:12:42 +03:00
Norbert Rittel
dc16494332 Replace "Disabled" with common state in schlage, fix sentence-case (#141849)
Replace "Disabled" with common state in `lamarzocco`, fix sentence-case

- replace "Disabled" with with common state reference
- fix sentence-casing of "Auto-lock"
2025-03-30 21:12:15 +03:00
Norbert Rittel
933f422588 Replace "Disabled" with common state in lamarzocco (#141848) 2025-03-30 20:00:18 +02:00
Michael
663d0691a7 Move setup messages from info to debug level (#141834)
move info to debug level
2025-03-30 19:49:41 +02:00
Norbert Rittel
97a0b9272e Resolve state mismatches in wolflink (#141846) 2025-03-30 19:42:39 +02:00
Lucas Mindêllo de Andrade
3d49000c75 Remove sunweg integration (#124230)
* chore(sunweg): remove sunweg integration

* Update homeassistant/components/sunweg/strings.json

Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>

* Update homeassistant/components/sunweg/manifest.json

Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>

* feat: added async remove entry

* Clean setup_entry; add tests

---------

Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: abmantis <amfcalt@gmail.com>
2025-03-30 18:11:09 +01:00
Norbert Rittel
68d1a3c0a2 Replace "Off" and references with common state in tesla_fleet (#141840) 2025-03-30 19:06:28 +02:00
Norbert Rittel
b06de7a687 Replace "Off" and references with common state in teslemetry (#141841) 2025-03-30 18:50:58 +02:00
Michael
963ea6141c Fix the entity category for max throughput sensors in AVM Fritz!Box Tools (#141838)
correct the entity category for max throughput sensors
2025-03-30 17:46:03 +02:00
Franck Nijhof
7232d36494 Fix hardcoded UoM for total power sensor for Tuya zndb devices (#141822) 2025-03-30 17:44:48 +02:00
Norbert Rittel
12eb071e8a Replace "Off" with common state in plugwise (#141828) 2025-03-30 17:31:12 +02:00
Paulus Schoutsen
86be626c69 Migrate ESPHome to use token instead of media source ID for legacy Assist Pipelines (#139665)
Migrate legacy ESPHome devices to use TTS token

Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-03-30 16:53:49 +02:00
Mauricio Bonani
ec20e41836 Improve the readability of status messages in NUT (#141335)
Improve the readability of status messages
2025-03-30 16:26:44 +02:00
Michal Schwarz
b3564b6cff Fix order of palettes, presets and playlists in WLED integration (#132207)
* Fix order of palettes, presets and playlists in WLED integration

* fix tests: update palette items order

---------

Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-03-30 16:14:56 +02:00
Marlon
acbee815be Update apsystems library to support battery inverter (#140086)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-03-30 16:11:22 +02:00
Norbert Rittel
5a1aeff85c Replace "On" and "Off" with common states in rfxtrx (#141835)
Also fix sentence-casing on other "… on" and "… off" states.
2025-03-30 16:10:17 +02:00
Allen Porter
4463e4c42b Move roborock unique id to be based on roborock userid instead of email (#141337)
* Move roborock unique id to be based on roborock userid instead of email

* Remove unnecessary data update

* Update tests

* Add tests coverage for removal of config entry

* Use config entry migration

* Remove unused fixtues

* Remove unnecessary logging
2025-03-30 16:04:28 +02:00
Norbert Rittel
4103ef71c9 Replace "Off" with common state in wyoming (#141832) 2025-03-30 16:02:09 +02:00
Norbert Rittel
dccaa2dd2d Replace "Off" with common state in sleepiq (#141831) 2025-03-30 16:01:15 +02:00
Norbert Rittel
5ac6096e08 Replace "Off" with common state in osoenergy (#141830) 2025-03-30 16:00:50 +02:00
Norbert Rittel
4734a82f99 Replace "Off" with common state in airgradient (#141829)
* Replace "Off" with common state in `airgradient`

Also reference the name for CO2 from the `sensor` integration.

* Replace indirect with direct references
2025-03-30 16:00:11 +02:00
Norbert Rittel
c6c2309dee Replace "Idle" with common state in zha (#141825) 2025-03-30 15:21:13 +02:00
Simone Chemelli
5e1bbd8bff Add full test coverage for Comelit climate platform (#140460)
* Add climate tests for Comelit

* fix climate and humidifier

* fix code and tests

* fix humidifier

* apply review comment

* align post merge

* add more tests

* typo

* apply review comment

* ruff
2025-03-30 15:15:26 +02:00
Michael
4761207097 Add boost preset to AVM Fritz!SmartHome climate entities (#141802)
* add boost preset to climate entities

* add set boost preset test
2025-03-30 15:03:26 +02:00
Simone Chemelli
b4a6ca63b3 Add full test coverage for Comelit sensor platform (#141813) 2025-03-30 15:02:15 +02:00
Jan Bouwhuis
a5b320180a Correct spelling for 'availability` in MQTT translation strings (#141818) 2025-03-30 15:01:06 +02:00
Aidan Timson
bcc767136c Add System Bridge suggested sensor precisions (#141815) 2025-03-30 15:00:38 +02:00
Simone Chemelli
d3257d96d0 Add full test coverage for Comelit light platform (#141736)
* Add full test coverage for Comelit light platform

* cleanup
2025-03-30 14:59:56 +02:00
Martin Hjelmare
89df6a82b0 Bump pydroid-ipcam to 3.0.0 (#141739) 2025-03-30 14:59:13 +02:00
Thomas55555
e725ba403b Bump ical to 9.0.3 (#141805) 2025-03-30 14:58:47 +02:00
Aidan Timson
578fece13e Fix System Bridge wait timeout wait condition (#141811)
* Fix System Bridge wait timeout wait condition

* Add DataMissingException as a timeout condition

* Add tests
2025-03-30 14:57:53 +02:00
Norbert Rittel
0eeb6b5fd5 Replace "Idle" with common state in backup, fix sentence-case (#141814)
* Replace "Idle" with common state in `backup`, fix sentence-case

* Update test_sensors.ambr
2025-03-30 14:56:36 +02:00
Norbert Rittel
ad3f7f041f Replace "Idle" with common state in homekit_controller (#141820) 2025-03-30 15:34:36 +03:00
Norbert Rittel
dce9bfd359 Replace "Idle" with common state in venstar, fix sentence-case (#141819) 2025-03-30 15:34:23 +03:00
Norbert Rittel
8f96ccc835 Fix sentence-casing in a few strings of bmw_connected_drive (#141816)
* Fix sentence-casing in a few strings of `bmw_connected_drive`

Also replace "Standby" state with common string reference.

* Update test_select.ambr
2025-03-30 15:13:35 +03:00
Andrew Sayre
a48dd05035 Refactor registration of HEOS media player entity services (#141666)
Refactor entity service registration
2025-03-30 15:10:05 +03:00
Norbert Rittel
eb90958341 Replace "Stand-by" and "Off" with common states in palazzetti (#141809)
Also fixes the  wrong spelling of "Stand-by" by using "Standby" from the common string.
2025-03-30 15:08:03 +03:00
Norbert Rittel
31ed6a48cb Replace "Standby" with common state in roborock (#141810) 2025-03-30 15:07:43 +03:00
Norbert Rittel
dfa80f0787 Replace "Standby" with common state in knx (#141817)
Also reordered the states alphabetically to improve code readability.
2025-03-30 15:07:08 +03:00
Norbert Rittel
73acfa6a8e Replace "Stand-by" with common state in incomfort (#141807)
Also fixes the  wrong spelling of "Stand-by" by using "Standby" from the common string.
2025-03-30 13:55:06 +02:00
Norbert Rittel
efad20cdff Replace "Standby" and "Idle" with common states in fronius (#141812) 2025-03-30 13:43:33 +02:00
Norbert Rittel
11d68cef54 Replace "Standby" with common state in blue_current (#141806) 2025-03-30 14:14:17 +03:00
J. Nick Koston
9c28e60475 Bump pyisy to 3.2.0 (#141798)
changelog: https://github.com/automicus/PyISY/compare/v3.1.15...v3.2.0

Fixes some tasks missing a strong reference
https://github.com/automicus/PyISY/pull/425

There is a bit of refactoring so I did not tag it for
beta.
2025-03-30 14:06:07 +03:00
Simone Chemelli
9ee79b87ee Add full test coverage for Comelit switch platform (#141738)
* Add full test coverage for Comelit switch platform

* cleanup
2025-03-30 12:10:41 +02:00
Simone Chemelli
600aedc9a1 Add tests for Comelit cover platform (#141740)
* Add  tests for Comelit cover platform

* cleanup up
2025-03-30 12:04:00 +02:00
Norbert Rittel
5b5efb5aaa Replace "Stopped" with common state in smartthings (#141789)
* Replace "Stopped" with common state in `smartthings`

* Replace internal references with common ones
2025-03-30 11:58:17 +02:00
Norbert Rittel
391b3ed1e7 Replace "Stopped" with common state in snoo (#141788)
* Replace "Stopped" with common state in `snoo`

* Replace internal reference with common one
2025-03-30 11:57:15 +02:00
Norbert Rittel
24277259ad Use more common states for ESS and PV in vicare (#141792) 2025-03-30 11:56:50 +02:00
J. Nick Koston
65261de7cc Migrate emulated_roku to use runtime_data to fix flakey tests (#141795) 2025-03-30 11:55:58 +02:00
Norbert Rittel
beb92a7f9c Replace "Charging" state for binary_sensor with common string (#141796) 2025-03-30 11:41:01 +02:00
J. Nick Koston
f1b059c75d Bump PyISY to 3.1.15 (#141778)
changelog: https://github.com/automicus/PyISY/compare/v3.1.14...v3.1.15

fixes #141517
fixes #132279
2025-03-30 11:40:25 +02:00
J. Nick Koston
d4970f81aa Cleanup ESPHome update tests to avoid accessing integration internals (#141786)
We should not access DomainData directly in the test
2025-03-29 22:30:06 -10:00
Norbert Rittel
29219afb7f Replace "Charging" state in renault with common string (#141787) 2025-03-30 10:16:42 +02:00
tdfountain
7fbf15edc9 Add ambient state translations in NUT (#141772)
Add ambient state translations
2025-03-29 21:00:53 -10:00
J. Nick Koston
c8d3fa6768 Small cleanups to the device registry (#141773)
Remove some calls to internal functions that
are now available directly on the devices
and deleted_devices objects

Remove internal functions that are no
longer used
2025-03-29 21:00:13 -10:00
J. Nick Koston
ea5cf3d854 Bump aiohomekit to 3.2.13 (#141764)
changelog: https://github.com/Jc2k/aiohomekit/compare/3.2.8...3.2.13
2025-03-29 20:59:56 -10:00
J. Nick Koston
4a833fb489 Fix blocking late import of httpcore from httpx (#141771)
There is a late import that blocks the event loop
in newer version
9e8ab40369/httpx/_transports/default.py (L75)
2025-03-29 20:59:40 -10:00
Norbert Rittel
02aa823d25 Replace "Stopped" with common state in matter (#141768) 2025-03-30 09:42:48 +03:00
Norbert Rittel
92034aeecc Replace "Opening" / "Closing" with common states in homee (#141766) 2025-03-30 09:42:28 +03:00
Florent Thoumie
9f2232fad1 Bump iaqualink to 0.5.3 (#141709)
* Update to iaqualink 0.5.3 and silence warning

* Update to iaqualink 0.5.3 and silence warning

* Re-add via_device line
2025-03-30 06:49:18 +02:00
tdfountain
2be2d54a5c Replace hard coded attributes with constants for test cases in NUT (#141774)
Replace hard coded attributes with constants
2025-03-29 15:19:41 -10:00
J. Nick Koston
ed99686cc1 Bump propcache to 0.3.1 (#141770)
* Bump propcache to 0.3.1

changelog: https://github.com/aio-libs/propcache/compare/v0.3.0...v0.3.1

* revert
2025-03-29 23:10:08 +00:00
Norbert Rittel
a6c1f1e485 Replace "Opening" / "Closing" with common states in shelly (#141767) 2025-03-30 00:48:28 +03:00
puddly
a219445751 Add helper methods to simplify USB integration testing (#141733)
* Add some helper methods to simplify USB integration testing

* Re-export `usb_device_from_port`
2025-03-29 11:26:37 -10:00
Norbert Rittel
b65b5aacb6 Add common state references to cover, valve and lock (#141754)
* Add common states to `cover`

* @NoRi2909 Add common states to `valve`

* Add common states to `lock`
2025-03-29 17:06:15 -04:00
Norbert Rittel
bcead72265 Replace "Stopped" with common state in traccar_server (#141751) 2025-03-29 17:05:34 -04:00
Benjamin Bender
35b9564ed4 Show external cover art in music-assistant-integration (#141716)
* fix: handling of external album-art in music-assistant-integration

* chore: refinements

* make the image-logic more readable

* fix code comment to be accurate
2025-03-29 17:04:57 -04:00
Florent Thoumie
aba01d4361 Remove iaqualink warning caused by via_device (#141761)
Remove warning caused by via_device
2025-03-29 17:03:35 -04:00
Franck Nijhof
4398af51c8 Fix spamming log message in QNAP (#141752) 2025-03-29 16:57:43 -04:00
Norbert Rittel
83f4f4cc96 Replace "Stopped" with common state in ipp (#141750) 2025-03-29 19:19:56 +01:00
Norbert Rittel
1800e6fb8e Add common states for "Opening" and "Closing" (#141747) 2025-03-29 19:19:30 +01:00
Simone Chemelli
43b83c855f Align code styling in Vodafone Station tests (#141745) 2025-03-29 18:42:12 +01:00
Marcel van der Veldt
20e2de200f Always set pause feature on Music Assistant mediaplayers (#141686) 2025-03-29 18:39:59 +01:00
Josef Zweck
ed4ebe1222 Add unkown to uncalibrated state for tedee (#141262) 2025-03-29 18:38:19 +01:00
Simone Chemelli
4e4446cef4 Fix immediate state update for Comelit (#141735) 2025-03-29 18:22:03 +01:00
Norbert Rittel
e2ff0b265d Replace "Stopped" with common state in prusalink (#141743)
* Replace "Stopped" with common state in `prusalink`

* Sentence-case "Nozzle diameter"
2025-03-29 18:07:38 +01:00
J. Nick Koston
6d48fc183a Fix ESPHome update entities being loaded before device_info is available (#141704)
* Fix ESPHome update entities being loaded before device_info is available

Since we load platforms when restoring config, the update
platform could be loaded before the connection to the
device was finished which meant device_info could still
be empty. Wait until device_info is available to
load the update platform.

fixes #135906

* Apply suggestions from code review

* move comment

* Update entry_data.py

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

---------

Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-03-29 17:53:01 +01:00
J. Nick Koston
ea8392a4a1 Fix ESPHome entities not being removed when the ESPHome config removes an entire platform (#141708)
* Fix old ESPHome entities not being removed when configuration changes

fixes #140756

* make sure all callbacks fire

* make sure all callbacks fire

* make sure all callbacks fire

* make sure all callbacks fire

* revert

* cover
2025-03-29 17:48:51 +01:00
Simone Chemelli
bcd296822d Add full test coverage for Comelit alarm control panel (#141371)
* Add full test coverage for Comelit alarm control panel

* fix methods description

* revert unwanted change

* apply review comment
2025-03-29 17:29:37 +01:00
Jan Bouwhuis
6ee97f341d Improve MQTT translation strings (#141691)
* Improve MQTT options translation string

* more improvements
2025-03-29 17:29:04 +01:00
Norbert Rittel
aa2ab74ee9 Replace "On" and "Off" in airzone_cloud with common states (#141711)
* Replace "On", "Off" and "Stop(ped)" in `airzone_cloud` with common strings

* Revert to "Stop" as mode name by manufacturer

Co-authored-by: acidcoke <acidcoke@acidic.codes>

---------

Co-authored-by: acidcoke <acidcoke@acidic.codes>
2025-03-29 18:05:41 +03:00
Norbert Rittel
49b2ab9889 Replace "Stopped" etc. with common state in teslemetry/tessie/tesla_fleet (#141714)
* Replace "Stopped" with common state in `teslemetry`

* Replace "Disconnected" with common state in `teslemetry`

* Replace "Stopped"/"Disconnected" with common state in `tessie`

* Replace "Stopped", "Connected", "Disconnected" with common state in `tesla_fleet`
2025-03-29 18:03:48 +03:00
Martin Hjelmare
2549e2cc0f Patch Z-Wave platforms in humidifier tests (#141732) 2025-03-29 17:59:13 +03:00
J. Diego Rodríguez Royo
b15fa81a44 Set Home Connect program action field as not required (#141729)
* Set Home Connect program action field as not required

* Remove required field

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-03-29 15:02:54 +01:00
J. Diego Rodríguez Royo
09f6246d1b Dynamically add Home Connect event sensors (#141198)
* Dynamically add Home Connect event sensors to HA

* Add and remove listeners on paired and depaired events

* Apply suggestion

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

* Update test

* Adjust English

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-03-29 12:53:34 +01:00
Norbert Rittel
96ff389fd1 Sentence-case "Medium type" in mopeka (#141718) 2025-03-29 10:19:25 +01:00
Joost Lekkerkerker
b55f1df297 Only link the parent device if known in SmartThings (#141719)
Only link the parent device if we know the parent device
2025-03-29 10:18:27 +01:00
Joost Lekkerkerker
d88f7b8600 Only trigger events on button updates in SmartThings (#141720)
Only trigger events on button updates
2025-03-29 10:17:38 +01:00
Norbert Rittel
df2a94bb5b Replace "country" with common string in lg_thinq (#141690) 2025-03-29 00:27:10 +00:00
Norbert Rittel
c4ac492c6e Add common state "Stopped" (#141701) 2025-03-29 00:25:22 +00:00
Franck Nijhof
fcd4d3e2df Add ability to subscribe to own YouTube channels (#141693) 2025-03-28 19:59:24 -04:00
Franck Nijhof
42d6bd3839 Handle invalid JSON errors in AirNow (#141695) 2025-03-28 19:58:41 -04:00
J. Nick Koston
d6b48003b6 Improve performance of websocket_api _state_diff_event (#141696)
We can use last_updated_timestamp for the compare since its always
calculated when the state is created and comparing floats is
much faster than datetime objects
2025-03-28 19:58:12 -04:00
Franck Nijhof
ba8f69d956 Fix Tuya tdq category to pick up temp & humid (#141698) 2025-03-28 19:57:56 -04:00
Norbert Rittel
f22bb72d18 Replace 4 occurrences of "Enable" in teslemetry with common string (#141699) 2025-03-28 23:47:44 +01:00
Marcel van der Veldt
f7a0a9fa41 Bump music assistant client to 1.2.0 (#141668)
* Bump music assistant client to 1.2.0

* Update test fixtures
2025-03-28 22:43:31 +01:00
Norbert Rittel
3795d653c5 Replace "country" with common string in holiday (#141687) 2025-03-28 22:43:00 +01:00
Norbert Rittel
8ee014b855 Fix grammar / sentence-casing in workday (#141682)
* Fix grammar / sentence-casing in `workday`

Also replace "country" with common string.

* Add two more references

* Fix second data description reference

* Add "given" to action description for better translations
2025-03-28 21:22:53 +01:00
Erwin Douna
1ab5bdf85f Tado add proper off state (#135480)
* Add proper off state

* Remove current temp

* Add default frost temp
2025-03-28 20:54:36 +01:00
puddly
5283e1a39f Handle all firmware types for ZBT-1 and Yellow update entities (#141674)
Handle other firmware types
2025-03-28 20:38:16 +01:00
Franck Nijhof
17c56208ee Fix camera proxy with sole image quality settings (#141676) 2025-03-28 20:36:15 +01:00
Norbert Rittel
8474d9fefe Replace "country" with common string in ecovacs (#141677) 2025-03-28 20:32:32 +01:00
J. Nick Koston
fd9f002e9f Increase websocket_api allowed peak time to 10s (#141680)
* Increase websocket_api allowed peak time to 10s

fixes #141624

During integration reload or startup, we can end up sending a message for
each entity being created for integrations that create them from an external
source (ie MQTT) because the messages come in one at a time. This can overload
the loop and/or client for more than 5s. While we have done significant work
to optimize for this path, we are at the limit at what we can expect clients
to be able to process in the time window, so increase the time window.

* adjust test
2025-03-28 20:32:00 +01:00
Norbert Rittel
26268357a0 Replace "country" with common string in prosegur (#141678) 2025-03-28 20:19:20 +01:00
Dan Raper
82b463b22f Get Ohme to gold quality (#140617)
* Add reconfigure step, diagnostics and default disabled entities to Ohme

* Formatting

* Update tests

* Bugfixes and add tests for diagnostics and reconfigure

* Remove diagnostics changes

* Remove reconfigure changes

* Pull upstream strings.json
2025-03-28 18:41:00 +00:00
Jason Hunter
7ae397a211 Update Duke Energy package to fix integration (#141669)
* Update Duke Energy package to fix integration

* fix tests
2025-03-28 18:33:59 +00:00
Norbert Rittel
ea4ad681e4 Replace "country" with common string in cookidoo (#141670) 2025-03-28 18:29:31 +00:00
Michael Hansen
a150f9d5ad Bump intents and always prefer more literal text (#141663) 2025-03-28 13:03:42 -04:00
puddly
afb7fe0d40 Include ZBT-1 and Yellow in device registry (#141623)
* Add the Yellow and ZBT-1 to the device registry

* Unload platforms

* Fix unit tests

* Rename the Yellow update entity to `Radio firmware`

* Rename `EmberZNet` to `EmberZNet Zigbee`

* Prefix the `sw_version` with the firmware type and clean up

* Fix unit tests

* Remove unnecessary `always_update=False` from data update coordinator
2025-03-28 18:00:05 +01:00
Norbert Rittel
8bf42b9d3e Replace "language" and "country" with common strings in epic_games_store (#141665) 2025-03-28 17:50:36 +01:00
Andrew Sayre
ba00707d89 Add HEOS entity service to remove queue items (#141495)
* Add remove queue items service

* Tests

* Correct casing of ID

* Match docs
2025-03-28 11:09:01 -05:00
tdfountain
2121b943a3 Add exception translation to NUT (#141629)
* Add exception translation and test cases

* Capitalize ID in error string

* Test translation placeholders, simplify test cases
2025-03-28 16:43:16 +01:00
Bram Kragten
ef06d2c06e Update frontend to 20250328.0 (#141659) 2025-03-28 16:08:14 +01:00
Norbert Rittel
cc1fac5776 Add a common string for "country" (#141653) 2025-03-28 15:52:44 +01:00
Norbert Rittel
6cb3430c60 Fix sentence-casing of "sea level" in matter (#141655)
* Fix sentence-casing of "sea level" in `matter`

* Update test_number.ambr
2025-03-28 15:30:21 +01:00
Paulus Schoutsen
4cea90f773 Enable the message box on default for satelitte announcement actions (#141654) 2025-03-28 15:07:09 +01:00
Paulus Schoutsen
4da5f6188d Ensure connection test sound has no preannouncement (#141647) 2025-03-28 14:01:12 +01:00
Norbert Rittel
e7f8b9ad92 Fix typo and sentence-casing in jewish_calendar (#141651)
Also replace "Language" with common string.
2025-03-28 15:55:52 +03:00
Jan Bouwhuis
473a28c5f2 Fix duplicate 'device' term in MQTT translation strings (#141646)
* Fix duplicate 'device' from MQTT translation strings

* Update homeassistant/components/mqtt/strings.json
2025-03-28 13:55:36 +01:00
Franck Nijhof
d765936be3 Fix ESPHome event entity staying unavailable (#141650) 2025-03-28 13:55:11 +01:00
Norbert Rittel
0db643d9d1 Replace "connect" / "disconnect" with common strings in idasen_desk (#141649) 2025-03-28 08:46:13 -04:00
Norbert Rittel
af29159e2f Remove "meter" from entity names of rainforest_raven sensors (#141487)
* Fix misleading friendly names of `rainforest_raven` sensors

The three sensors
- power_demand
- total_energy_delivered
- total_energy_received

currently add "meter" in their friendly names.

This does not provide any useful information and is rather irritating instead – it sounds like these are the power demands or consumption of the meter itself. But they are the measured values.

This commit removes "meter" from the names making them simpler and more precise, too.

In addition the sentence-casing of "MAC addresses" is fixed.

* Update test_sensor.ambr

* Update test_sensor.ambr (2)

* Also remove "meter" from Signal strength

* Update test_sensor.ambr (3)

* Change `meter_price` to `energy_price` in strings.json

* Change `meter_price` to `energy_price` in test_sensor.ambr

* Change `meter_price` to `energy_price` in sensor.py
2025-03-28 11:26:51 +00:00
Tsvi Mostovicz
65c38d8e31 Jewish calendar match omer service variables requirement to documentation (#141620)
The documentation and the omer schema require a Nusach to be specified, but the YAML misses that requirement
2025-03-28 13:59:04 +03:00
LG-ThinQ-Integration
adb7aa237b Add number for ventilator's sleepTimer (#140972)
Add sleepTimer for ventilator

Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-03-28 11:54:18 +01:00
Norbert Rittel
577f86b83a Remove "meter" from entity names of rainforest_eagle sensors (#141641)
* Remove "meter" from entity names in strings.json

* Replace `meter_price`with `energy_price`in sensor.py

* Update test_sensor.py
2025-03-28 13:52:15 +03:00
J. Diego Rodríguez Royo
01169e9184 Add Pitsos virtual integration (#141610) 2025-03-28 13:50:48 +03:00
J. Diego Rodríguez Royo
dde037291a Add Neff virtual integration (#141609) 2025-03-28 13:50:29 +03:00
J. Diego Rodríguez Royo
6971a189f9 Add Gaggenau virtual integration (#141608) 2025-03-28 13:50:12 +03:00
J. Diego Rodríguez Royo
c860686138 Add Constructa virtual integration (#141607) 2025-03-28 13:49:52 +03:00
J. Diego Rodríguez Royo
2eb507863f Add Balay virtual integration (#141606) 2025-03-28 13:49:38 +03:00
Joost Lekkerkerker
54ee5c6998 Add default string and icon for light effect off (#141567) 2025-03-28 11:48:34 +01:00
alorente
63df2474a9 Fix missing response for queued mode scripts (#141460) 2025-03-28 10:47:41 +00:00
Robert Resch
93f12fb7c6 Reverts #141363 "Deprecate SmartThings machine state sensors" (#141573)
Reverts #141363
2025-03-28 11:40:24 +01:00
Nick Pesce
b7a995ac53 Use correct default value for multi press buttons in the Matter integration (#141630)
* Respect the min 2 constraint for the switch MultiPressMax attribute

* Update test_event.py

* Update generic_switch_multi.json

* Fix issue and update tests
2025-03-28 11:11:18 +01:00
Solmath
267a80e70c Show internet radio station if no artist is available in Cambridge Audio (#140716)
* Add media_channel property to cambridge audio

* Return channel instead of artist when playing internet radio to mimick behaviour of CXN100 and StreamMagic app

* Add test for media_artist attribute

* Add test that media_artist is not set in certain cases

* Update homeassistant/components/cambridge_audio/media_player.py

Co-authored-by: Noah Husby <32528627+noahhusby@users.noreply.github.com>

---------

Co-authored-by: Noah Husby <32528627+noahhusby@users.noreply.github.com>
2025-03-28 09:49:20 +01:00
Norbert Rittel
078be3b8df Replace already_configured in teslemetry with common string (#141637) 2025-03-28 09:44:34 +01:00
J. Diego Rodríguez Royo
7b6c967c3a Add Profilo virtual integration (#141611) 2025-03-28 09:42:51 +01:00
J. Diego Rodríguez Royo
a405ccd044 Add Siemens virtual integration (#141612) 2025-03-28 09:37:27 +01:00
J. Diego Rodríguez Royo
f6c55ebf05 Add Thermador virtual integration (#141613) 2025-03-28 09:35:05 +01:00
Shay Levy
6b3b4cce4b Record Shelly quality scale (#141062)
* Record Shelly quality scale

* Update

* change stale-devices status to todo

* Update homeassistant/components/shelly/quality_scale.yaml

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>

---------

Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
2025-03-28 09:30:29 +01:00
Jan Bouwhuis
8887c979b4 Fix volatile_organic_compounds_parts translation string to be referenced for MQTT subentries device class selector (#141618)
* Fix ` volatile_organic_compounds_parts` translation string to be referenced for MQTT subentries device class selector

* Fix tests
2025-03-28 08:48:23 +01:00
Norbert Rittel
665541409a Fix sentence-casing in airvisual user strings (#141632) 2025-03-28 10:37:55 +03:00
Denis Shulyaka
195919b5fb Add PDF support for openai_conversation.generate_content service (#141588)
Add PDF support for openai_conversation.generate_content service
2025-03-27 20:05:54 -04:00
Petro31
31479056ed Fix an issue with the switch preview in beta (#141617)
Fix an issue with the switch preview
2025-03-28 00:43:17 +02:00
Jan-Philipp Benecke
9f0976d94a Bump aiowebdav2 to 0.4.4 (#141615) 2025-03-27 23:19:04 +01:00
Norbert Rittel
a049d2b7db Make names of switch entities in gree consistent with docs (#141580) 2025-03-27 21:51:11 +00:00
Norbert Rittel
6959017d55 Use official camel-cased spelling "FullTopic" in tasmota (#141604)
* Use camel-cased spelling "FullTopic" in `tasmota`

This  should ensure that this fixed term is kept in translations.

In addition an excessive space character is removed.

* Fix wrong plural in second sentence
2025-03-27 23:12:42 +02:00
Luke Lashley
4ff5a04a72 Bump Python-Snoo to 0.6.5 (#141599)
* Bump Python-Snoo to 0.6.5

* add to event_types
2025-03-27 21:56:11 +01:00
Norbert Rittel
ea0c4a7263 Fix misleading friendly names of pvoutput sensors (#141312)
* Fix misleading friendly names of `pvoutput` sensors

* Update test_sensor.py

* Update test_sensor.py - prettier
2025-03-27 21:49:16 +01:00
J. Nick Koston
9633f03ddc Fix zeroconf logging level not being respected (#141601)
Removes an old logging workaround that is no longer needed

fixes #141558
2025-03-27 21:45:48 +01:00
Artur Pragacz
4c0d8ce87c Remove deprecated YAML import in Onkyo (#141600) 2025-03-27 21:13:23 +01:00
Joost Lekkerkerker
d92728e533 Add brand for Bosch (#141561) 2025-03-27 21:01:52 +01:00
Paul Bottein
799962ef0e Update frontend to 20250327.1 (#141596) 2025-03-27 20:58:59 +01:00
Stephan Traub
631f817f11 Wiz - update dependency to support new light features and bugfixes (#141529)
* Bump pywizlight and fix deprecation issue

* Removed workaround for color_mode; update pywizlight
2025-03-27 21:51:42 +02:00
Martin Hjelmare
52f7bdeb5d Patch Z-Wave platforms in fan tests (#141591) 2025-03-27 21:40:39 +02:00
Martin Hjelmare
51db140aed Clean up Z-Wave config flow (#141595) 2025-03-27 21:30:16 +02:00
Jan-Philipp Benecke
1ad12d5945 Bump aiowebdav2 to 0.4.3 (#141586) 2025-03-27 19:44:33 +02:00
Simon Lamon
9f5d94046d Fix typing error in NMBS (#141589)
Fix typing error
2025-03-27 19:39:33 +02:00
Erik Montnemery
de1e06c39b Revert "Promote after dependencies in bootstrap" (#141584)
Revert "Promote after dependencies in bootstrap (#140352)"

This reverts commit 3766040960.
2025-03-27 12:57:58 -04:00
Bram Kragten
abbabc11d2 Update frontend to 20250327.0 (#141585) 2025-03-27 17:51:52 +01:00
Joost Lekkerkerker
62be82fd3c Also migrate completion time entities in SmartThings (#141572) 2025-03-27 16:36:45 +01:00
Luke Lashley
f0fd5a639a Better handle Roborock discovery (#141575) 2025-03-27 11:17:56 -04:00
Andrii Mitnovych
dea00fac3f Get area and floor by alias (#126150)
* Add possibility to get area by alias

* Add ability to get floor by alias

* Moved alias lookup to separate function, adjusted templates.

* Changed registry to return all areas/floors with given alias

* Use normalize_name from normalized_name_base_registry
2025-03-27 16:02:47 +01:00
Erwin Douna
c30f17f592 Tado fix HomeKit flow (#141525)
* Initial commit

* Fix

* Fix

---------

Co-authored-by: Joostlek <joostlek@outlook.com>
2025-03-27 16:01:54 +01:00
Martin Hjelmare
e9e95f45d8 Handle cloud subscription expired for backup upload (#141564)
Handle cloud backup subscription expired for upload
2025-03-27 15:29:11 +01:00
Joost Lekkerkerker
e8aa3e6d34 Add icons to hue effects (#141559) 2025-03-27 12:05:45 +01:00
Norbert Rittel
3646884d79 Replace "controller_id" with friendly name in homeworks error message (#141550) 2025-03-27 12:29:53 +02:00
Norbert Rittel
5747c6b1a8 Fix sentence-casing in konnected strings, replace "override" with "custom" (#141553)
Fix sentence-casing in `konnected`strings, replace "Override" with "Custom"

Make string consistent with HA standards.

As "Override" can be misunderstood as the verb, replace it with "Custom".
2025-03-27 10:59:19 +01:00
Thomas55555
43a5c7ddc8 Handle webcal prefix in remote calendar (#141541)
Handel webcal prefix in remote calendar
2025-03-27 10:22:25 +01:00
J. Diego Rodríguez Royo
d9d74107fe Improve some Home Connect deprecations (#141508) 2025-03-27 10:18:30 +01:00
Erik Montnemery
373cca9857 Remove unused mypy ignore from google_generative_ai_conversation (#141549) 2025-03-27 10:03:07 +01:00
Martin Hjelmare
284b3f444d Remove leftover cloudflare persistent notification dismiss (#141548) 2025-03-27 09:53:47 +01:00
Simon Lamon
dfb088e524 Bump linkplay to v0.2.2 (#141542)
Bump linkplay
2025-03-27 08:51:12 +01:00
Manu
5546f1d73d Support for upcoming pyLoad-ng release in pyLoad integration (#141297)
Fix extra key `proxy` in pyLoad
2025-03-27 07:46:58 +01:00
Jan Bouwhuis
13fc871806 Use kwargs only for MQTT subentry PlatformField helper (#141498) 2025-03-27 07:46:08 +01:00
J. Nick Koston
0f9fd78656 Bump pyserial-asyncio-fast to 0.16 (#141540)
changelog: https://github.com/home-assistant-libs/pyserial-asyncio-fast/compare/0.15...0.16
2025-03-27 07:32:59 +01:00
Ivan Lopez Hernandez
4f318c0be3 Initialize google.genai.Client in the executor (#141432)
* Intialize the client on an executor thread

* Fix MyPy error

* MyPy error

* Exception error

* Fix ruff

* Update __init__.py

---------

Co-authored-by: tronikos <tronikos@users.noreply.github.com>
2025-03-26 22:05:22 -07:00
Michael Hansen
5eb1d0a28e Add default preannounce sound to Assist satellites (#141522)
* Add default preannounce sound

* Allow None to disable sound

* Register static path instead of HTTP view

* Fix path

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-03-26 22:45:28 -05:00
Brett Adams
66c03713b7 Fix Auto Seat Heater in Tesla Fleet (#141539)
Fix Auto Seat Heater
2025-03-26 20:55:34 -04:00
Marc Mueller
d51070c99b Update boto3 to 1.37.1 and aiobotocore to 2.21.1 (#141499) 2025-03-27 01:38:34 +01:00
Marc Mueller
50d050e63e Update pyserial-asyncio-fast to 0.15 (#141537) 2025-03-27 01:33:01 +01:00
Norbert Rittel
89bf426163 Fix wrong friendly name for storage_power in solaredge (#141269)
* Fix wrong friendly name for `storage_power` in `solaredge`

"Stored power" is a contradiction in itself.
You can only store energy.

* Two additional spelling fixes

* Sentence-case "site"
2025-03-27 00:24:14 +01:00
Jan Bouwhuis
377548e3a1 Fix QoS schema issue in MQTT subentries (#141531) 2025-03-26 23:35:28 +01:00
Simone Chemelli
543c6929e6 Fix refresh state for Comelit alarm (#141370) 2025-03-26 22:34:53 +00:00
Jan Bouwhuis
42ae572948 Fix MQTT options flow QoS selector can not serialize (#141528) 2025-03-26 22:56:57 +01:00
Thomas55555
c3f8b7e200 Fix work area sensor for Husqvarna Automower (#141527)
* Fix work area sensor for Husqvarna Automower

* simplify
2025-03-26 23:16:26 +02:00
Robert Resch
3a207e2571 Show box for Smartthings rise number entity (#141526) 2025-03-26 22:03:24 +01:00
Andrew Sayre
6bfd39f094 Add play queue item to HEOS (#141480)
Add ability to play specific queue item
2025-03-26 15:47:10 -05:00
Robert Resch
002ca9611d Add test for invalid mean type in StatisticsMeta (#141475) 2025-03-26 21:40:02 +01:00
Joost Lekkerkerker
46ee3d2b26 Sort SmartThings devices to be created by parent device id (#141515) 2025-03-26 20:52:39 +01:00
Franck Nijhof
eb901bcf3a Bump version to 2025.5.0dev0 (#141507) 2025-03-26 20:30:03 +01:00
Norbert Rittel
930b4a2c81 Capitalize "Ethernet" in roku sensor name (#141509)
* Capitalize "Ethernet" in `roku` sensor name

* Update test_binary_sensor.py
2025-03-26 21:18:52 +02:00
Robert Resch
22d1b8e1cd Bump deebot-client to 12.4.0 (#141501) 2025-03-26 19:36:04 +01:00
J. Nick Koston
e7e42dc318 Merge branch 'dev' into block_pyserial_asyncio 2024-08-16 17:48:47 -05:00
J. Nick Koston
9aa288ed44 Merge branch 'dev' into block_pyserial_asyncio 2024-06-22 16:36:10 -05:00
J. Nick Koston
5aacb6e1b8 Merge branch 'dev' into block_pyserial_asyncio 2024-06-22 15:18:40 -05:00
J. Nick Koston
1428ce4084 Merge branch 'dev' into block_pyserial_asyncio 2024-05-05 10:06:24 -05:00
J. Nick Koston
dba07ac90d Merge branch 'dev' into block_pyserial_asyncio 2024-05-03 02:12:40 -05:00
J. Nick Koston
264df97069 Merge branch 'dev' into block_pyserial_asyncio 2024-05-02 16:37:09 -05:00
J. Nick Koston
c3f493394a Merge branch 'drop_pyserial_zha' into block_pyserial_asyncio 2024-05-02 11:10:42 -05:00
J. Nick Koston
7e3e82746f Drop pyserial-asyncio from zha
This may not be possible yet, but the long term goal is to get
rid of pyserial-asyncio everywhere so we can prevent future
integrations from using it and than we have to go though the
effort of getting them to replace it with pyserial-asyncio-fast
to avoid the event loop being blocked

needed for https://github.com/home-assistant/core/pull/116635
2024-05-02 11:09:43 -05:00
J. Nick Koston
33724240d7 Merge branch 'serial' into block_pyserial_asyncio 2024-05-02 11:06:25 -05:00
J. Nick Koston
998a4eab9e Replace pyserial-asyncio with pyserial-asyncio-fast in serial
pyserial-asyncio is unmantained and does blocking I/O in the event loop
2024-05-02 11:04:45 -05:00
J. Nick Koston
9985262a53 Block pyserial-asyncio in favor of pyserial-asyncio-fast
pyserial-asyncio does blocking I/O in asyncio loop and is not maintained
2024-05-02 11:00:12 -05:00
3791 changed files with 215835 additions and 67423 deletions

View File

@@ -1,5 +1,6 @@
name: Report an issue with Home Assistant Core
description: Report an issue with Home Assistant Core.
type: Bug
body:
- type: markdown
attributes:

View File

@@ -32,7 +32,7 @@ jobs:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -116,7 +116,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -175,7 +175,7 @@ jobs:
sed -i "s|pykrakenapi|# pykrakenapi|g" requirements_all.txt
- name: Download translations
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: translations
@@ -324,7 +324,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Install Cosign
uses: sigstore/cosign-installer@v3.8.1
uses: sigstore/cosign-installer@v3.8.2
with:
cosign-release: "v2.2.3"
@@ -457,12 +457,12 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Download translations
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: translations
@@ -509,7 +509,7 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0
with:
context: . # So action will not pull the repository again
file: ./script/hassfest/docker/Dockerfile
@@ -522,7 +522,7 @@ jobs:
- name: Push Docker image
if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true'
id: push
uses: docker/build-push-action@471d1dc4e07e5cdedd4c2171150001c434f0b7a4 # v6.15.0
uses: docker/build-push-action@1dc73863535b631f98b2378be8619f83b136f4a0 # v6.17.0
with:
context: . # So action will not pull the repository again
file: ./script/hassfest/docker/Dockerfile
@@ -531,7 +531,7 @@ jobs:
- name: Generate artifact attestation
if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true'
uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3
uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
with:
subject-name: ${{ env.HASSFEST_IMAGE_NAME }}
subject-digest: ${{ steps.push.outputs.digest }}

View File

@@ -37,10 +37,10 @@ on:
type: boolean
env:
CACHE_VERSION: 12
CACHE_VERSION: 2
UV_CACHE_VERSION: 1
MYPY_CACHE_VERSION: 9
HA_SHORT_VERSION: "2025.4"
MYPY_CACHE_VERSION: 1
HA_SHORT_VERSION: "2025.6"
DEFAULT_PYTHON: "3.13"
ALL_PYTHON_VERSIONS: "['3.13']"
# 10.3 is the oldest supported version
@@ -249,7 +249,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -259,7 +259,7 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-venv-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -276,7 +276,7 @@ jobs:
path: ${{ env.PRE_COMMIT_CACHE }}
lookup-only: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Install pre-commit dependencies
if: steps.cache-precommit.outputs.cache-hit != 'true'
@@ -294,7 +294,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -306,7 +306,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-venv-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
@@ -315,7 +315,7 @@ jobs:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Run ruff-format
run: |
@@ -334,7 +334,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -346,7 +346,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-venv-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
@@ -355,7 +355,7 @@ jobs:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Run ruff
run: |
@@ -374,7 +374,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -386,7 +386,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-venv-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Restore pre-commit environment from cache
id: cache-precommit
@@ -395,7 +395,7 @@ jobs:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.pre-commit_cache_key }}
- name: Register yamllint problem matcher
@@ -484,7 +484,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -501,7 +501,7 @@ jobs:
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Restore uv wheel cache
if: steps.cache-venv.outputs.cache-hit != 'true'
@@ -509,10 +509,10 @@ jobs:
with:
path: ${{ env.UV_CACHE_DIR }}
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-uv-key.outputs.key }}
restore-keys: |
${{ runner.os }}-${{ steps.python.outputs.python-version }}-uv-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-uv-${{
env.UV_CACHE_VERSION }}-${{ steps.generate-uv-key.outputs.version }}-${{
env.HA_SHORT_VERSION }}-
- name: Install additional OS dependencies
@@ -587,7 +587,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -598,7 +598,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Run hassfest
run: |
@@ -620,7 +620,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -631,7 +631,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Run gen_requirements_all.py
run: |
@@ -653,7 +653,7 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Dependency review
uses: actions/dependency-review-action@v4.5.0
uses: actions/dependency-review-action@v4.7.1
with:
license-check: false # We use our own license audit checks
@@ -677,7 +677,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -688,7 +688,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Extract license data
run: |
@@ -720,7 +720,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -731,7 +731,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register pylint problem matcher
run: |
@@ -767,7 +767,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -778,7 +778,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register pylint problem matcher
run: |
@@ -812,7 +812,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -830,17 +830,17 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Restore mypy cache
uses: actions/cache@v4.2.3
with:
path: .mypy_cache
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-mypy-key.outputs.key }}
restore-keys: |
${{ runner.os }}-${{ steps.python.outputs.python-version }}-mypy-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-mypy-${{
env.MYPY_CACHE_VERSION }}-${{ steps.generate-mypy-key.outputs.version }}-${{
env.HA_SHORT_VERSION }}-
- name: Register mypy problem matcher
@@ -889,7 +889,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -900,7 +900,7 @@ jobs:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Run split_tests.py
run: |
@@ -944,12 +944,13 @@ jobs:
bluez \
ffmpeg \
libturbojpeg \
libgammu-dev
libgammu-dev \
libxml2-utils
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -959,7 +960,8 @@ jobs:
with:
path: venv
fail-on-cache-miss: true
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
key: >-
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register Python problem matcher
run: |
@@ -968,7 +970,7 @@ jobs:
run: |
echo "::add-matcher::.github/workflows/matchers/pytest-slow.json"
- name: Download pytest_buckets
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: pytest_buckets
- name: Compile English translations
@@ -1019,6 +1021,12 @@ jobs:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
overwrite: true
- name: Beautify test results
# For easier identification of parsing errors
if: needs.info.outputs.skip_coverage != 'true'
run: |
xmllint --format "junit.xml" > "junit.xml-tmp"
mv "junit.xml-tmp" "junit.xml"
- name: Upload test results artifact
if: needs.info.outputs.skip_coverage != 'true' && !cancelled()
uses: actions/upload-artifact@v4.6.2
@@ -1069,12 +1077,13 @@ jobs:
bluez \
ffmpeg \
libturbojpeg \
libmariadb-dev-compat
libmariadb-dev-compat \
libxml2-utils
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -1084,7 +1093,8 @@ jobs:
with:
path: venv
fail-on-cache-miss: true
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
key: >-
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register Python problem matcher
run: |
@@ -1152,6 +1162,12 @@ jobs:
steps.pytest-partial.outputs.mariadb }}
path: coverage.xml
overwrite: true
- name: Beautify test results
# For easier identification of parsing errors
if: needs.info.outputs.skip_coverage != 'true'
run: |
xmllint --format "junit.xml" > "junit.xml-tmp"
mv "junit.xml-tmp" "junit.xml"
- name: Upload test results artifact
if: needs.info.outputs.skip_coverage != 'true' && !cancelled()
uses: actions/upload-artifact@v4.6.2
@@ -1200,7 +1216,8 @@ jobs:
sudo apt-get -y install \
bluez \
ffmpeg \
libturbojpeg
libturbojpeg \
libxml2-utils
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -y
sudo apt-get -y install \
postgresql-server-dev-14
@@ -1208,7 +1225,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -1218,7 +1235,8 @@ jobs:
with:
path: venv
fail-on-cache-miss: true
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
key: >-
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register Python problem matcher
run: |
@@ -1287,6 +1305,12 @@ jobs:
steps.pytest-partial.outputs.postgresql }}
path: coverage.xml
overwrite: true
- name: Beautify test results
# For easier identification of parsing errors
if: needs.info.outputs.skip_coverage != 'true'
run: |
xmllint --format "junit.xml" > "junit.xml-tmp"
mv "junit.xml-tmp" "junit.xml"
- name: Upload test results artifact
if: needs.info.outputs.skip_coverage != 'true' && !cancelled()
uses: actions/upload-artifact@v4.6.2
@@ -1312,12 +1336,12 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Download all coverage artifacts
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
pattern: coverage-*
- name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'true'
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.3
with:
fail_ci_if_error: true
flags: full-suite
@@ -1354,12 +1378,13 @@ jobs:
bluez \
ffmpeg \
libturbojpeg \
libgammu-dev
libgammu-dev \
libxml2-utils
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -1369,7 +1394,8 @@ jobs:
with:
path: venv
fail-on-cache-miss: true
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
key: >-
${{ runner.os }}-${{ runner.arch }}-${{ steps.python.outputs.python-version }}-${{
needs.info.outputs.python_cache_key }}
- name: Register Python problem matcher
run: |
@@ -1432,6 +1458,12 @@ jobs:
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
path: coverage.xml
overwrite: true
- name: Beautify test results
# For easier identification of parsing errors
if: needs.info.outputs.skip_coverage != 'true'
run: |
xmllint --format "junit.xml" > "junit.xml-tmp"
mv "junit.xml-tmp" "junit.xml"
- name: Upload test results artifact
if: needs.info.outputs.skip_coverage != 'true' && !cancelled()
uses: actions/upload-artifact@v4.6.2
@@ -1454,12 +1486,12 @@ jobs:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Download all coverage artifacts
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
pattern: coverage-*
- name: Upload coverage to Codecov
if: needs.info.outputs.test_full_suite == 'false'
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.3
with:
fail_ci_if_error: true
token: ${{ secrets.CODECOV_TOKEN }}
@@ -1479,7 +1511,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Download all coverage artifacts
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
pattern: test-results-*
- name: Upload test results to Codecov

View File

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

View File

@@ -22,7 +22,7 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}

View File

@@ -36,7 +36,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.5.0
uses: actions/setup-python@v5.6.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -138,17 +138,17 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Download env_file
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: env_file
- name: Download build_constraints
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: build_constraints
- name: Download requirements_diff
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: requirements_diff
@@ -187,22 +187,22 @@ jobs:
uses: actions/checkout@v4.2.2
- name: Download env_file
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: env_file
- name: Download build_constraints
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: build_constraints
- name: Download requirements_diff
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: requirements_diff
- name: Download requirements_all_wheels
uses: actions/download-artifact@v4.2.1
uses: actions/download-artifact@v4.3.0
with:
name: requirements_all_wheels

View File

@@ -66,6 +66,7 @@ homeassistant.components.alarm_control_panel.*
homeassistant.components.alert.*
homeassistant.components.alexa.*
homeassistant.components.alpha_vantage.*
homeassistant.components.amazon_devices.*
homeassistant.components.amazon_polly.*
homeassistant.components.amberelectric.*
homeassistant.components.ambient_network.*
@@ -270,6 +271,7 @@ homeassistant.components.image_processing.*
homeassistant.components.image_upload.*
homeassistant.components.imap.*
homeassistant.components.imgw_pib.*
homeassistant.components.immich.*
homeassistant.components.incomfort.*
homeassistant.components.input_button.*
homeassistant.components.input_select.*
@@ -291,6 +293,7 @@ homeassistant.components.kaleidescape.*
homeassistant.components.knocki.*
homeassistant.components.knx.*
homeassistant.components.kraken.*
homeassistant.components.kulersky.*
homeassistant.components.lacrosse.*
homeassistant.components.lacrosse_view.*
homeassistant.components.lamarzocco.*
@@ -331,6 +334,7 @@ homeassistant.components.media_player.*
homeassistant.components.media_source.*
homeassistant.components.met_eireann.*
homeassistant.components.metoffice.*
homeassistant.components.miele.*
homeassistant.components.mikrotik.*
homeassistant.components.min_max.*
homeassistant.components.minecraft_server.*
@@ -362,8 +366,10 @@ homeassistant.components.no_ip.*
homeassistant.components.nordpool.*
homeassistant.components.notify.*
homeassistant.components.notion.*
homeassistant.components.ntfy.*
homeassistant.components.number.*
homeassistant.components.nut.*
homeassistant.components.ohme.*
homeassistant.components.onboarding.*
homeassistant.components.oncue.*
homeassistant.components.onedrive.*
@@ -381,8 +387,10 @@ homeassistant.components.overseerr.*
homeassistant.components.p1_monitor.*
homeassistant.components.pandora.*
homeassistant.components.panel_custom.*
homeassistant.components.paperless_ngx.*
homeassistant.components.peblar.*
homeassistant.components.peco.*
homeassistant.components.pegel_online.*
homeassistant.components.persistent_notification.*
homeassistant.components.person.*
homeassistant.components.pi_hole.*
@@ -429,7 +437,6 @@ homeassistant.components.roku.*
homeassistant.components.romy.*
homeassistant.components.rpi_power.*
homeassistant.components.rss_feed_template.*
homeassistant.components.rtsp_to_webrtc.*
homeassistant.components.russound_rio.*
homeassistant.components.ruuvi_gateway.*
homeassistant.components.ruuvitag_ble.*
@@ -459,6 +466,7 @@ homeassistant.components.slack.*
homeassistant.components.sleepiq.*
homeassistant.components.smhi.*
homeassistant.components.smlight.*
homeassistant.components.smtp.*
homeassistant.components.snooz.*
homeassistant.components.solarlog.*
homeassistant.components.sonarr.*

70
CODEOWNERS generated
View File

@@ -46,8 +46,8 @@ build.json @home-assistant/supervisor
/tests/components/accuweather/ @bieniu
/homeassistant/components/acmeda/ @atmurray
/tests/components/acmeda/ @atmurray
/homeassistant/components/adax/ @danielhiversen
/tests/components/adax/ @danielhiversen
/homeassistant/components/adax/ @danielhiversen @lazytarget
/tests/components/adax/ @danielhiversen @lazytarget
/homeassistant/components/adguard/ @frenck
/tests/components/adguard/ @frenck
/homeassistant/components/ads/ @mrpasztoradam
@@ -89,6 +89,8 @@ build.json @home-assistant/supervisor
/tests/components/alert/ @home-assistant/core @frenck
/homeassistant/components/alexa/ @home-assistant/cloud @ochlocracy @jbouwh
/tests/components/alexa/ @home-assistant/cloud @ochlocracy @jbouwh
/homeassistant/components/amazon_devices/ @chemelli74
/tests/components/amazon_devices/ @chemelli74
/homeassistant/components/amazon_polly/ @jschlyter
/homeassistant/components/amberelectric/ @madpilot
/tests/components/amberelectric/ @madpilot
@@ -171,6 +173,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/avea/ @pattyland
/homeassistant/components/awair/ @ahayworth @danielsjf
/tests/components/awair/ @ahayworth @danielsjf
/homeassistant/components/aws_s3/ @tomasbedrich
/tests/components/aws_s3/ @tomasbedrich
/homeassistant/components/axis/ @Kane610
/tests/components/axis/ @Kane610
/homeassistant/components/azure_data_explorer/ @kaareseras
@@ -200,8 +204,8 @@ build.json @home-assistant/supervisor
/tests/components/blebox/ @bbx-a @swistakm
/homeassistant/components/blink/ @fronzbot @mkmer
/tests/components/blink/ @fronzbot @mkmer
/homeassistant/components/blue_current/ @Floris272 @gleeuwen
/tests/components/blue_current/ @Floris272 @gleeuwen
/homeassistant/components/blue_current/ @gleeuwen @NickKoepr @jtodorova23
/tests/components/blue_current/ @gleeuwen @NickKoepr @jtodorova23
/homeassistant/components/bluemaestro/ @bdraco
/tests/components/bluemaestro/ @bdraco
/homeassistant/components/blueprint/ @home-assistant/core
@@ -301,6 +305,7 @@ build.json @home-assistant/supervisor
/homeassistant/components/crownstone/ @Crownstone @RicArch97
/tests/components/crownstone/ @Crownstone @RicArch97
/homeassistant/components/cups/ @fabaff
/tests/components/cups/ @fabaff
/homeassistant/components/daikin/ @fredrike
/tests/components/daikin/ @fredrike
/homeassistant/components/date/ @home-assistant/core
@@ -432,7 +437,7 @@ build.json @home-assistant/supervisor
/homeassistant/components/entur_public_transport/ @hfurubotten
/homeassistant/components/environment_canada/ @gwww @michaeldavie
/tests/components/environment_canada/ @gwww @michaeldavie
/homeassistant/components/ephember/ @ttroy50
/homeassistant/components/ephember/ @ttroy50 @roberty99
/homeassistant/components/epic_games_store/ @hacf-fr @Quentame
/tests/components/epic_games_store/ @hacf-fr @Quentame
/homeassistant/components/epion/ @lhgravendeel
@@ -453,8 +458,8 @@ build.json @home-assistant/supervisor
/tests/components/evil_genius_labs/ @balloob
/homeassistant/components/evohome/ @zxdavb
/tests/components/evohome/ @zxdavb
/homeassistant/components/ezviz/ @RenierM26 @baqs
/tests/components/ezviz/ @RenierM26 @baqs
/homeassistant/components/ezviz/ @RenierM26
/tests/components/ezviz/ @RenierM26
/homeassistant/components/faa_delays/ @ntilley905
/tests/components/faa_delays/ @ntilley905
/homeassistant/components/fan/ @home-assistant/core
@@ -704,8 +709,12 @@ build.json @home-assistant/supervisor
/tests/components/image_upload/ @home-assistant/core
/homeassistant/components/imap/ @jbouwh
/tests/components/imap/ @jbouwh
/homeassistant/components/imeon_inverter/ @Imeon-Energy
/tests/components/imeon_inverter/ @Imeon-Energy
/homeassistant/components/imgw_pib/ @bieniu
/tests/components/imgw_pib/ @bieniu
/homeassistant/components/immich/ @mib1185
/tests/components/immich/ @mib1185
/homeassistant/components/improv_ble/ @emontnemery
/tests/components/improv_ble/ @emontnemery
/homeassistant/components/incomfort/ @jbouwh
@@ -935,6 +944,8 @@ build.json @home-assistant/supervisor
/tests/components/metoffice/ @MrHarcombe @avee87
/homeassistant/components/microbees/ @microBeesTech
/tests/components/microbees/ @microBeesTech
/homeassistant/components/miele/ @astrandb
/tests/components/miele/ @astrandb
/homeassistant/components/mikrotik/ @engrbm87
/tests/components/mikrotik/ @engrbm87
/homeassistant/components/mill/ @danielhiversen
@@ -1047,6 +1058,8 @@ build.json @home-assistant/supervisor
/tests/components/nsw_fuel_station/ @nickw444
/homeassistant/components/nsw_rural_fire_service_feed/ @exxamalte
/tests/components/nsw_rural_fire_service_feed/ @exxamalte
/homeassistant/components/ntfy/ @tr4nt0r
/tests/components/ntfy/ @tr4nt0r
/homeassistant/components/nuheat/ @tstabrawa
/tests/components/nuheat/ @tstabrawa
/homeassistant/components/nuki/ @pschmitt @pvizeli @pree
@@ -1075,8 +1088,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/ombi/ @larssont
/homeassistant/components/onboarding/ @home-assistant/core
/tests/components/onboarding/ @home-assistant/core
/homeassistant/components/oncue/ @bdraco @peterager
/tests/components/oncue/ @bdraco @peterager
/homeassistant/components/ondilo_ico/ @JeromeHXP
/tests/components/ondilo_ico/ @JeromeHXP
/homeassistant/components/onedrive/ @zweckj
@@ -1105,8 +1116,8 @@ build.json @home-assistant/supervisor
/tests/components/opentherm_gw/ @mvn23
/homeassistant/components/openuv/ @bachya
/tests/components/openuv/ @bachya
/homeassistant/components/openweathermap/ @fabaff @freekode @nzapponi
/tests/components/openweathermap/ @fabaff @freekode @nzapponi
/homeassistant/components/openweathermap/ @fabaff @freekode @nzapponi @wittypluck
/tests/components/openweathermap/ @fabaff @freekode @nzapponi @wittypluck
/homeassistant/components/opnsense/ @mtreinish
/tests/components/opnsense/ @mtreinish
/homeassistant/components/opower/ @tronikos
@@ -1132,6 +1143,8 @@ build.json @home-assistant/supervisor
/tests/components/palazzetti/ @dotvav
/homeassistant/components/panel_custom/ @home-assistant/frontend
/tests/components/panel_custom/ @home-assistant/frontend
/homeassistant/components/paperless_ngx/ @fvgarrel
/tests/components/paperless_ngx/ @fvgarrel
/homeassistant/components/peblar/ @frenck
/tests/components/peblar/ @frenck
/homeassistant/components/peco/ @IceBotYT
@@ -1170,6 +1183,8 @@ build.json @home-assistant/supervisor
/tests/components/powerwall/ @bdraco @jrester @daniel-simpson
/homeassistant/components/private_ble_device/ @Jc2k
/tests/components/private_ble_device/ @Jc2k
/homeassistant/components/probe_plus/ @pantherale0
/tests/components/probe_plus/ @pantherale0
/homeassistant/components/profiler/ @bdraco
/tests/components/profiler/ @bdraco
/homeassistant/components/progettihwsw/ @ardaseremet
@@ -1216,6 +1231,7 @@ build.json @home-assistant/supervisor
/homeassistant/components/qnap_qsw/ @Noltari
/tests/components/qnap_qsw/ @Noltari
/homeassistant/components/quantum_gateway/ @cisasteelersfan
/tests/components/quantum_gateway/ @cisasteelersfan
/homeassistant/components/qvr_pro/ @oblogic7
/homeassistant/components/qwikswitch/ @kellerza
/tests/components/qwikswitch/ @kellerza
@@ -1254,6 +1270,8 @@ build.json @home-assistant/supervisor
/tests/components/recovery_mode/ @home-assistant/core
/homeassistant/components/refoss/ @ashionky
/tests/components/refoss/ @ashionky
/homeassistant/components/rehlko/ @bdraco @peterager
/tests/components/rehlko/ @bdraco @peterager
/homeassistant/components/remote/ @home-assistant/core
/tests/components/remote/ @home-assistant/core
/homeassistant/components/remote_calendar/ @Thomas55555
@@ -1299,8 +1317,6 @@ build.json @home-assistant/supervisor
/tests/components/rpi_power/ @shenxn @swetoast
/homeassistant/components/rss_feed_template/ @home-assistant/core
/tests/components/rss_feed_template/ @home-assistant/core
/homeassistant/components/rtsp_to_webrtc/ @allenporter
/tests/components/rtsp_to_webrtc/ @allenporter
/homeassistant/components/ruckus_unleashed/ @lanrat @ms264556 @gabe565
/tests/components/ruckus_unleashed/ @lanrat @ms264556 @gabe565
/homeassistant/components/russound_rio/ @noahhusby
@@ -1387,7 +1403,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/siren/ @home-assistant/core @raman325
/tests/components/siren/ @home-assistant/core @raman325
/homeassistant/components/sisyphus/ @jkeljo
/homeassistant/components/sky_hub/ @rogerselwyn
/homeassistant/components/sky_remote/ @dunnmj @saty9
/tests/components/sky_remote/ @dunnmj @saty9
/homeassistant/components/skybell/ @tkdrob
@@ -1405,6 +1420,8 @@ build.json @home-assistant/supervisor
/tests/components/sma/ @kellerza @rklomp @erwindouna
/homeassistant/components/smappee/ @bsmappee
/tests/components/smappee/ @bsmappee
/homeassistant/components/smarla/ @explicatis @rlint-explicatis
/tests/components/smarla/ @explicatis @rlint-explicatis
/homeassistant/components/smart_meter_texas/ @grahamwetzler
/tests/components/smart_meter_texas/ @grahamwetzler
/homeassistant/components/smartthings/ @joostlek
@@ -1434,8 +1451,8 @@ build.json @home-assistant/supervisor
/tests/components/solarlog/ @Ernst79 @dontinelli
/homeassistant/components/solax/ @squishykid @Darsstar
/tests/components/solax/ @squishykid @Darsstar
/homeassistant/components/soma/ @ratsept @sebfortier2288
/tests/components/soma/ @ratsept @sebfortier2288
/homeassistant/components/soma/ @ratsept
/tests/components/soma/ @ratsept
/homeassistant/components/sonarr/ @ctalkington
/tests/components/sonarr/ @ctalkington
/homeassistant/components/songpal/ @rytilahti @shenxn
@@ -1467,7 +1484,8 @@ build.json @home-assistant/supervisor
/tests/components/steam_online/ @tkdrob
/homeassistant/components/steamist/ @bdraco
/tests/components/steamist/ @bdraco
/homeassistant/components/stiebel_eltron/ @fucm
/homeassistant/components/stiebel_eltron/ @fucm @ThyMYthOS
/tests/components/stiebel_eltron/ @fucm @ThyMYthOS
/homeassistant/components/stookwijzer/ @fwestenberg
/tests/components/stookwijzer/ @fwestenberg
/homeassistant/components/stream/ @hunterjm @uvjustin @allenporter
@@ -1478,8 +1496,8 @@ build.json @home-assistant/supervisor
/tests/components/subaru/ @G-Two
/homeassistant/components/suez_water/ @ooii @jb101010-2
/tests/components/suez_water/ @ooii @jb101010-2
/homeassistant/components/sun/ @Swamp-Ig
/tests/components/sun/ @Swamp-Ig
/homeassistant/components/sun/ @home-assistant/core
/tests/components/sun/ @home-assistant/core
/homeassistant/components/supla/ @mwegrzynek
/homeassistant/components/surepetcare/ @benleb @danielhiversen
/tests/components/surepetcare/ @benleb @danielhiversen
@@ -1492,8 +1510,8 @@ build.json @home-assistant/supervisor
/tests/components/switch_as_x/ @home-assistant/core
/homeassistant/components/switchbee/ @jafar-atili
/tests/components/switchbee/ @jafar-atili
/homeassistant/components/switchbot/ @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
/tests/components/switchbot/ @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
/homeassistant/components/switchbot/ @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang
/tests/components/switchbot/ @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski @zerzhang
/homeassistant/components/switchbot_cloud/ @SeraphicRav @laurence-presland @Gigatrappeur
/tests/components/switchbot_cloud/ @SeraphicRav @laurence-presland @Gigatrappeur
/homeassistant/components/switcher_kis/ @thecode @YogevBokobza
@@ -1533,8 +1551,8 @@ build.json @home-assistant/supervisor
/tests/components/tedee/ @patrickhilker @zweckj
/homeassistant/components/tellduslive/ @fredrike
/tests/components/tellduslive/ @fredrike
/homeassistant/components/template/ @Petro31 @PhracturedBlue @home-assistant/core
/tests/components/template/ @Petro31 @PhracturedBlue @home-assistant/core
/homeassistant/components/template/ @Petro31 @home-assistant/core
/tests/components/template/ @Petro31 @home-assistant/core
/homeassistant/components/tesla_fleet/ @Bre77
/tests/components/tesla_fleet/ @Bre77
/homeassistant/components/tesla_wall_connector/ @einarhauks
@@ -1670,8 +1688,8 @@ build.json @home-assistant/supervisor
/tests/components/vlc_telnet/ @rodripf @MartinHjelmare
/homeassistant/components/vodafone_station/ @paoloantinori @chemelli74
/tests/components/vodafone_station/ @paoloantinori @chemelli74
/homeassistant/components/voip/ @balloob @synesthesiam
/tests/components/voip/ @balloob @synesthesiam
/homeassistant/components/voip/ @balloob @synesthesiam @jaminh
/tests/components/voip/ @balloob @synesthesiam @jaminh
/homeassistant/components/volumio/ @OnFreund
/tests/components/volumio/ @OnFreund
/homeassistant/components/volvooncall/ @molobrakos
@@ -1788,6 +1806,8 @@ build.json @home-assistant/supervisor
/tests/components/zeversolar/ @kvanzuijlen
/homeassistant/components/zha/ @dmulcahey @adminiuga @puddly @TheJulianJES
/tests/components/zha/ @dmulcahey @adminiuga @puddly @TheJulianJES
/homeassistant/components/zimi/ @markhannon
/tests/components/zimi/ @markhannon
/homeassistant/components/zodiac/ @JulienTant
/tests/components/zodiac/ @JulienTant
/homeassistant/components/zone/ @home-assistant/core

2
Dockerfile generated
View File

@@ -31,7 +31,7 @@ RUN \
&& go2rtc --version
# Install uv
RUN pip3 install uv==0.6.10
RUN pip3 install uv==0.7.1
WORKDIR /usr/src

View File

@@ -1,10 +1,10 @@
image: ghcr.io/home-assistant/{arch}-homeassistant
build_from:
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2025.02.1
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2025.02.1
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2025.02.1
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2025.02.1
i386: ghcr.io/home-assistant/i386-homeassistant-base:2025.02.1
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2025.05.0
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2025.05.0
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2025.05.0
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2025.05.0
i386: ghcr.io/home-assistant/i386-homeassistant-base:2025.05.0
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io

View File

@@ -53,6 +53,7 @@ from .components import (
logbook as logbook_pre_import, # noqa: F401
lovelace as lovelace_pre_import, # noqa: F401
onboarding as onboarding_pre_import, # noqa: F401
person as person_pre_import, # noqa: F401
recorder as recorder_import, # noqa: F401 - not named pre_import since it has requirements
repairs as repairs_pre_import, # noqa: F401
search as search_pre_import, # noqa: F401
@@ -859,8 +860,14 @@ async def _async_set_up_integrations(
integrations, all_integrations = await _async_resolve_domains_and_preload(
hass, config
)
all_domains = set(all_integrations)
domains = set(integrations)
# Detect all cycles
integrations_after_dependencies = (
await loader.resolve_integrations_after_dependencies(
hass, all_integrations.values(), set(all_integrations)
)
)
all_domains = set(integrations_after_dependencies)
domains = set(integrations) & all_domains
_LOGGER.info(
"Domains to be set up: %s | %s",
@@ -868,6 +875,8 @@ async def _async_set_up_integrations(
all_domains - domains,
)
async_set_domains_to_be_loaded(hass, all_domains)
# Initialize recorder
if "recorder" in all_domains:
recorder.async_initialize_recorder(hass)
@@ -900,24 +909,12 @@ async def _async_set_up_integrations(
stage_dep_domains_unfiltered = {
dep
for domain in stage_domains
for dep in all_integrations[domain].all_dependencies
for dep in integrations_after_dependencies[domain]
if dep not in stage_domains
}
stage_dep_domains = stage_dep_domains_unfiltered - hass.config.components
stage_all_domains = stage_domains | stage_dep_domains
stage_all_integrations = {
domain: all_integrations[domain] for domain in stage_all_domains
}
# Detect all cycles
stage_integrations_after_dependencies = (
await loader.resolve_integrations_after_dependencies(
hass, stage_all_integrations.values(), stage_all_domains
)
)
stage_all_domains = set(stage_integrations_after_dependencies)
stage_domains &= stage_all_domains
stage_dep_domains &= stage_all_domains
_LOGGER.info(
"Setting up stage %s: %s | %s\nDependencies: %s | %s",
@@ -928,8 +925,6 @@ async def _async_set_up_integrations(
stage_dep_domains_unfiltered - stage_dep_domains,
)
async_set_domains_to_be_loaded(hass, stage_all_domains)
if timeout is None:
await _async_setup_multi_components(hass, stage_all_domains, config)
continue

View File

@@ -1,5 +1,13 @@
{
"domain": "amazon",
"name": "Amazon",
"integrations": ["alexa", "amazon_polly", "aws", "fire_tv", "route53"]
"integrations": [
"alexa",
"amazon_devices",
"amazon_polly",
"aws",
"aws_s3",
"fire_tv",
"route53"
]
}

View File

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

View File

@@ -0,0 +1,6 @@
{
"domain": "nuki",
"name": "Nuki",
"integrations": ["nuki"],
"iot_standards": ["matter"]
}

View File

@@ -67,6 +67,7 @@ POLLEN_CATEGORY_MAP = {
2: "moderate",
3: "high",
4: "very_high",
5: "extreme",
}
UPDATE_INTERVAL_OBSERVATION = timedelta(minutes=40)
UPDATE_INTERVAL_DAILY_FORECAST = timedelta(hours=6)

View File

@@ -72,10 +72,11 @@
"level": {
"name": "Level",
"state": {
"high": "High",
"low": "Low",
"extreme": "Extreme",
"high": "[%key:common::state::high%]",
"low": "[%key:common::state::low%]",
"moderate": "Moderate",
"very_high": "Very high"
"very_high": "[%key:common::state::very_high%]"
}
}
}
@@ -89,10 +90,11 @@
"level": {
"name": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::name%]",
"state": {
"high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::high%]",
"low": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::low%]",
"extreme": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::extreme%]",
"high": "[%key:common::state::high%]",
"low": "[%key:common::state::low%]",
"moderate": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::moderate%]",
"very_high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::very_high%]"
"very_high": "[%key:common::state::very_high%]"
}
}
}
@@ -123,10 +125,11 @@
"level": {
"name": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::name%]",
"state": {
"high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::high%]",
"low": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::low%]",
"extreme": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::extreme%]",
"high": "[%key:common::state::high%]",
"low": "[%key:common::state::low%]",
"moderate": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::moderate%]",
"very_high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::very_high%]"
"very_high": "[%key:common::state::very_high%]"
}
}
}
@@ -167,10 +170,11 @@
"level": {
"name": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::name%]",
"state": {
"high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::high%]",
"low": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::low%]",
"extreme": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::extreme%]",
"high": "[%key:common::state::high%]",
"low": "[%key:common::state::low%]",
"moderate": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::moderate%]",
"very_high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::very_high%]"
"very_high": "[%key:common::state::very_high%]"
}
}
}
@@ -181,10 +185,11 @@
"level": {
"name": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::name%]",
"state": {
"high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::high%]",
"low": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::low%]",
"extreme": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::extreme%]",
"high": "[%key:common::state::high%]",
"low": "[%key:common::state::low%]",
"moderate": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::moderate%]",
"very_high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::very_high%]"
"very_high": "[%key:common::state::very_high%]"
}
}
}
@@ -195,10 +200,11 @@
"level": {
"name": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::name%]",
"state": {
"high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::high%]",
"low": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::low%]",
"extreme": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::extreme%]",
"high": "[%key:common::state::high%]",
"low": "[%key:common::state::low%]",
"moderate": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::moderate%]",
"very_high": "[%key:component::accuweather::entity::sensor::grass_pollen::state_attributes::level::state::very_high%]"
"very_high": "[%key:common::state::very_high%]"
}
}
}

View File

@@ -2,25 +2,38 @@
from __future__ import annotations
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from .const import CONNECTION_TYPE, LOCAL
from .coordinator import AdaxCloudCoordinator, AdaxConfigEntry, AdaxLocalCoordinator
PLATFORMS = [Platform.CLIMATE]
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(hass: HomeAssistant, entry: AdaxConfigEntry) -> bool:
"""Set up Adax from a config entry."""
if entry.data.get(CONNECTION_TYPE) == LOCAL:
local_coordinator = AdaxLocalCoordinator(hass, entry)
entry.runtime_data = local_coordinator
else:
cloud_coordinator = AdaxCloudCoordinator(hass, entry)
entry.runtime_data = cloud_coordinator
await entry.runtime_data.async_config_entry_first_refresh()
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(hass: HomeAssistant, entry: AdaxConfigEntry) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
async def async_migrate_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool:
async def async_migrate_entry(
hass: HomeAssistant, config_entry: AdaxConfigEntry
) -> bool:
"""Migrate old entry."""
# convert title and unique_id to string
if config_entry.version == 1:

View File

@@ -12,57 +12,42 @@ from homeassistant.components.climate import (
ClimateEntityFeature,
HVACMode,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_TEMPERATURE,
CONF_IP_ADDRESS,
CONF_PASSWORD,
CONF_TOKEN,
CONF_UNIQUE_ID,
PRECISION_WHOLE,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import ACCOUNT_ID, CONNECTION_TYPE, DOMAIN, LOCAL
from . import AdaxConfigEntry
from .const import CONNECTION_TYPE, DOMAIN, LOCAL
from .coordinator import AdaxCloudCoordinator, AdaxLocalCoordinator
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
entry: AdaxConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up the Adax thermostat with config flow."""
if entry.data.get(CONNECTION_TYPE) == LOCAL:
adax_data_handler = AdaxLocal(
entry.data[CONF_IP_ADDRESS],
entry.data[CONF_TOKEN],
websession=async_get_clientsession(hass, verify_ssl=False),
)
local_coordinator = cast(AdaxLocalCoordinator, entry.runtime_data)
async_add_entities(
[LocalAdaxDevice(adax_data_handler, entry.data[CONF_UNIQUE_ID])], True
[LocalAdaxDevice(local_coordinator, entry.data[CONF_UNIQUE_ID])],
)
else:
cloud_coordinator = cast(AdaxCloudCoordinator, entry.runtime_data)
async_add_entities(
AdaxDevice(cloud_coordinator, device_id)
for device_id in cloud_coordinator.data
)
return
adax_data_handler = Adax(
entry.data[ACCOUNT_ID],
entry.data[CONF_PASSWORD],
websession=async_get_clientsession(hass),
)
async_add_entities(
(
AdaxDevice(room, adax_data_handler)
for room in await adax_data_handler.get_rooms()
),
True,
)
class AdaxDevice(ClimateEntity):
class AdaxDevice(CoordinatorEntity[AdaxCloudCoordinator], ClimateEntity):
"""Representation of a heater."""
_attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
@@ -76,20 +61,37 @@ class AdaxDevice(ClimateEntity):
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
def __init__(self, heater_data: dict[str, Any], adax_data_handler: Adax) -> None:
def __init__(
self,
coordinator: AdaxCloudCoordinator,
device_id: str,
) -> None:
"""Initialize the heater."""
self._device_id = heater_data["id"]
self._adax_data_handler = adax_data_handler
super().__init__(coordinator)
self._adax_data_handler: Adax = coordinator.adax_data_handler
self._device_id = device_id
self._attr_unique_id = f"{heater_data['homeId']}_{heater_data['id']}"
self._attr_name = self.room["name"]
self._attr_unique_id = f"{self.room['homeId']}_{self._device_id}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, heater_data["id"])},
identifiers={(DOMAIN, device_id)},
# Instead of setting the device name to the entity name, adax
# should be updated to set has_entity_name = True, and set the entity
# name to None
name=cast(str | None, self.name),
manufacturer="Adax",
)
self._apply_data(self.room)
@property
def available(self) -> bool:
"""Whether the entity is available or not."""
return super().available and self._device_id in self.coordinator.data
@property
def room(self) -> dict[str, Any]:
"""Gets the data for this particular device."""
return self.coordinator.data[self._device_id]
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set hvac mode."""
@@ -104,7 +106,9 @@ class AdaxDevice(ClimateEntity):
)
else:
return
await self._adax_data_handler.update()
# Request data refresh from source to verify that update was successful
await self.coordinator.async_request_refresh()
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperature."""
@@ -114,28 +118,31 @@ class AdaxDevice(ClimateEntity):
self._device_id, temperature, True
)
async def async_update(self) -> None:
"""Get the latest data."""
for room in await self._adax_data_handler.get_rooms():
if room["id"] != self._device_id:
continue
self._attr_name = room["name"]
self._attr_current_temperature = room.get("temperature")
self._attr_target_temperature = room.get("targetTemperature")
if room["heatingEnabled"]:
self._attr_hvac_mode = HVACMode.HEAT
self._attr_icon = "mdi:radiator"
else:
self._attr_hvac_mode = HVACMode.OFF
self._attr_icon = "mdi:radiator-off"
return
@callback
def _handle_coordinator_update(self) -> None:
"""Handle updated data from the coordinator."""
if room := self.room:
self._apply_data(room)
super()._handle_coordinator_update()
def _apply_data(self, room: dict[str, Any]) -> None:
"""Update the appropriate attributues based on received data."""
self._attr_current_temperature = room.get("temperature")
self._attr_target_temperature = room.get("targetTemperature")
if room["heatingEnabled"]:
self._attr_hvac_mode = HVACMode.HEAT
self._attr_icon = "mdi:radiator"
else:
self._attr_hvac_mode = HVACMode.OFF
self._attr_icon = "mdi:radiator-off"
class LocalAdaxDevice(ClimateEntity):
class LocalAdaxDevice(CoordinatorEntity[AdaxLocalCoordinator], ClimateEntity):
"""Representation of a heater."""
_attr_hvac_modes = [HVACMode.HEAT, HVACMode.OFF]
_attr_hvac_mode = HVACMode.HEAT
_attr_hvac_mode = HVACMode.OFF
_attr_icon = "mdi:radiator-off"
_attr_max_temp = 35
_attr_min_temp = 5
_attr_supported_features = (
@@ -146,9 +153,10 @@ class LocalAdaxDevice(ClimateEntity):
_attr_target_temperature_step = PRECISION_WHOLE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
def __init__(self, adax_data_handler: AdaxLocal, unique_id: str) -> None:
def __init__(self, coordinator: AdaxLocalCoordinator, unique_id: str) -> None:
"""Initialize the heater."""
self._adax_data_handler = adax_data_handler
super().__init__(coordinator)
self._adax_data_handler: AdaxLocal = coordinator.adax_data_handler
self._attr_unique_id = unique_id
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, unique_id)},
@@ -169,17 +177,20 @@ class LocalAdaxDevice(ClimateEntity):
return
await self._adax_data_handler.set_target_temperature(temperature)
async def async_update(self) -> None:
"""Get the latest data."""
data = await self._adax_data_handler.get_status()
self._attr_current_temperature = data["current_temperature"]
self._attr_available = self._attr_current_temperature is not None
if (target_temp := data["target_temperature"]) == 0:
self._attr_hvac_mode = HVACMode.OFF
self._attr_icon = "mdi:radiator-off"
if target_temp == 0:
self._attr_target_temperature = self._attr_min_temp
else:
self._attr_hvac_mode = HVACMode.HEAT
self._attr_icon = "mdi:radiator"
self._attr_target_temperature = target_temp
@callback
def _handle_coordinator_update(self) -> None:
"""Handle updated data from the coordinator."""
if data := self.coordinator.data:
self._attr_current_temperature = data["current_temperature"]
self._attr_available = self._attr_current_temperature is not None
if (target_temp := data["target_temperature"]) == 0:
self._attr_hvac_mode = HVACMode.OFF
self._attr_icon = "mdi:radiator-off"
if target_temp == 0:
self._attr_target_temperature = self._attr_min_temp
else:
self._attr_hvac_mode = HVACMode.HEAT
self._attr_icon = "mdi:radiator"
self._attr_target_temperature = target_temp
super()._handle_coordinator_update()

View File

@@ -1,5 +1,6 @@
"""Constants for the Adax integration."""
import datetime
from typing import Final
ACCOUNT_ID: Final = "account_id"
@@ -9,3 +10,5 @@ DOMAIN: Final = "adax"
LOCAL = "Local"
WIFI_SSID = "wifi_ssid"
WIFI_PSWD = "wifi_pswd"
SCAN_INTERVAL = datetime.timedelta(seconds=60)

View File

@@ -0,0 +1,71 @@
"""DataUpdateCoordinator for the Adax component."""
import logging
from typing import Any, cast
from adax import Adax
from adax_local import Adax as AdaxLocal
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_IP_ADDRESS, CONF_PASSWORD, CONF_TOKEN
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import ACCOUNT_ID, SCAN_INTERVAL
_LOGGER = logging.getLogger(__name__)
type AdaxConfigEntry = ConfigEntry[AdaxCloudCoordinator | AdaxLocalCoordinator]
class AdaxCloudCoordinator(DataUpdateCoordinator[dict[str, dict[str, Any]]]):
"""Coordinator for updating data to and from Adax (cloud)."""
def __init__(self, hass: HomeAssistant, entry: AdaxConfigEntry) -> None:
"""Initialize the Adax coordinator used for Cloud mode."""
super().__init__(
hass,
config_entry=entry,
logger=_LOGGER,
name="AdaxCloud",
update_interval=SCAN_INTERVAL,
)
self.adax_data_handler = Adax(
entry.data[ACCOUNT_ID],
entry.data[CONF_PASSWORD],
websession=async_get_clientsession(hass),
)
async def _async_update_data(self) -> dict[str, dict[str, Any]]:
"""Fetch data from the Adax."""
rooms = await self.adax_data_handler.get_rooms() or []
return {r["id"]: r for r in rooms}
class AdaxLocalCoordinator(DataUpdateCoordinator[dict[str, Any] | None]):
"""Coordinator for updating data to and from Adax (local)."""
def __init__(self, hass: HomeAssistant, entry: AdaxConfigEntry) -> None:
"""Initialize the Adax coordinator used for Local mode."""
super().__init__(
hass,
config_entry=entry,
logger=_LOGGER,
name="AdaxLocal",
update_interval=SCAN_INTERVAL,
)
self.adax_data_handler = AdaxLocal(
entry.data[CONF_IP_ADDRESS],
entry.data[CONF_TOKEN],
websession=async_get_clientsession(hass, verify_ssl=False),
)
async def _async_update_data(self) -> dict[str, Any]:
"""Fetch data from the Adax."""
if result := await self.adax_data_handler.get_status():
return cast(dict[str, Any], result)
raise UpdateFailed("Got invalid status from device")

View File

@@ -1,7 +1,7 @@
{
"domain": "adax",
"name": "Adax",
"codeowners": ["@danielhiversen"],
"codeowners": ["@danielhiversen", "@lazytarget"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/adax",
"iot_class": "local_polling",

View File

@@ -8,7 +8,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import AdvantageAirDataConfigEntry
from .const import ADVANTAGE_AIR_STATE_ON, DOMAIN as ADVANTAGE_AIR_DOMAIN
from .const import ADVANTAGE_AIR_STATE_ON, DOMAIN
from .entity import AdvantageAirEntity, AdvantageAirThingEntity
from .models import AdvantageAirData
@@ -52,8 +52,8 @@ class AdvantageAirLight(AdvantageAirEntity, LightEntity):
self._id: str = light["id"]
self._attr_unique_id += f"-{self._id}"
self._attr_device_info = DeviceInfo(
identifiers={(ADVANTAGE_AIR_DOMAIN, self._attr_unique_id)},
via_device=(ADVANTAGE_AIR_DOMAIN, self.coordinator.data["system"]["rid"]),
identifiers={(DOMAIN, self._attr_unique_id)},
via_device=(DOMAIN, self.coordinator.data["system"]["rid"]),
manufacturer="Advantage Air",
model=light.get("moduleType"),
name=light["name"],

View File

@@ -6,7 +6,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import AdvantageAirDataConfigEntry
from .const import DOMAIN as ADVANTAGE_AIR_DOMAIN
from .const import DOMAIN
from .entity import AdvantageAirEntity
from .models import AdvantageAirData
@@ -32,9 +32,7 @@ class AdvantageAirApp(AdvantageAirEntity, UpdateEntity):
"""Initialize the Advantage Air App."""
super().__init__(instance)
self._attr_device_info = DeviceInfo(
identifiers={
(ADVANTAGE_AIR_DOMAIN, self.coordinator.data["system"]["rid"])
},
identifiers={(DOMAIN, self.coordinator.data["system"]["rid"])},
manufacturer="Advantage Air",
model=self.coordinator.data["system"]["sysType"],
name=self.coordinator.data["system"]["name"],

View File

@@ -10,7 +10,7 @@ from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN as AGENT_DOMAIN, SERVER_URL
from .const import DOMAIN, SERVER_URL
ATTRIBUTION = "ispyconnect.com"
DEFAULT_BRAND = "Agent DVR by ispyconnect.com"
@@ -46,7 +46,7 @@ async def async_setup_entry(
device_registry.async_get_or_create(
config_entry_id=config_entry.entry_id,
identifiers={(AGENT_DOMAIN, agent_client.unique)},
identifiers={(DOMAIN, agent_client.unique)},
manufacturer="iSpyConnect",
name=f"Agent {agent_client.name}",
model="Agent DVR",

View File

@@ -12,7 +12,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import AgentDVRConfigEntry
from .const import DOMAIN as AGENT_DOMAIN
from .const import DOMAIN
CONF_HOME_MODE_NAME = "home"
CONF_AWAY_MODE_NAME = "away"
@@ -47,7 +47,7 @@ class AgentBaseStation(AlarmControlPanelEntity):
self._client = client
self._attr_unique_id = f"{client.unique}_CP"
self._attr_device_info = DeviceInfo(
identifiers={(AGENT_DOMAIN, client.unique)},
identifiers={(DOMAIN, client.unique)},
name=f"{client.name} {CONST_ALARM_CONTROL_PANEL_NAME}",
manufacturer="Agent",
model=CONST_ALARM_CONTROL_PANEL_NAME,

View File

@@ -6,6 +6,7 @@ from typing import Any, Concatenate
from airgradient import AirGradientConnectionError, AirGradientError, get_model_name
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
@@ -29,6 +30,7 @@ class AirGradientEntity(CoordinatorEntity[AirGradientCoordinator]):
model_id=measures.model,
serial_number=coordinator.serial_number,
sw_version=measures.firmware_version,
connections={(dr.CONNECTION_NETWORK_MAC, coordinator.serial_number)},
)

View File

@@ -68,8 +68,8 @@
"led_bar_mode": {
"name": "LED bar mode",
"state": {
"off": "Off",
"co2": "Carbon dioxide",
"off": "[%key:common::state::off%]",
"co2": "[%key:component::sensor::entity_component::carbon_dioxide::name%]",
"pm": "Particulate matter"
}
},
@@ -143,8 +143,8 @@
"led_bar_mode": {
"name": "[%key:component::airgradient::entity::select::led_bar_mode::name%]",
"state": {
"off": "[%key:component::airgradient::entity::select::led_bar_mode::state::off%]",
"co2": "[%key:component::airgradient::entity::select::led_bar_mode::state::co2%]",
"off": "[%key:common::state::off%]",
"co2": "[%key:component::sensor::entity_component::carbon_dioxide::name%]",
"pm": "[%key:component::airgradient::entity::select::led_bar_mode::state::pm%]"
}
},

View File

@@ -3,6 +3,19 @@
"name": "Airthings",
"codeowners": ["@danielhiversen", "@LaStrada"],
"config_flow": true,
"dhcp": [
{
"hostname": "airthings-view"
},
{
"hostname": "airthings-hub",
"macaddress": "D0141190*"
},
{
"hostname": "airthings-hub",
"macaddress": "70B3D52A0*"
}
],
"documentation": "https://www.home-assistant.io/integrations/airthings",
"iot_class": "cloud_polling",
"loggers": ["airthings"],

View File

@@ -14,6 +14,7 @@ from homeassistant.const import (
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX,
PERCENTAGE,
SIGNAL_STRENGTH_DECIBELS,
EntityCategory,
@@ -78,6 +79,12 @@ SENSORS: dict[str, SensorEntityDescription] = {
translation_key="light",
state_class=SensorStateClass.MEASUREMENT,
),
"lux": SensorEntityDescription(
key="lux",
device_class=SensorDeviceClass.ILLUMINANCE,
native_unit_of_measurement=LIGHT_LUX,
state_class=SensorStateClass.MEASUREMENT,
),
"virusRisk": SensorEntityDescription(
key="virusRisk",
translation_key="virus_risk",

View File

@@ -142,7 +142,7 @@ class AirtouchAC(CoordinatorEntity, ClimateEntity):
return AT_TO_HA_STATE[self._airtouch.acs[self._ac_number].AcMode]
@property
def hvac_modes(self):
def hvac_modes(self) -> list[HVACMode]:
"""Return the list of available operation modes."""
airtouch_modes = self._airtouch.GetSupportedCoolingModesForAc(self._ac_number)
modes = [AT_TO_HA_STATE[mode] for mode in airtouch_modes]
@@ -226,12 +226,12 @@ class AirtouchGroup(CoordinatorEntity, ClimateEntity):
return super()._handle_coordinator_update()
@property
def min_temp(self):
def min_temp(self) -> float:
"""Return Minimum Temperature for AC of this group."""
return self._airtouch.acs[self._unit.BelongsToAc].MinSetpoint
@property
def max_temp(self):
def max_temp(self) -> float:
"""Return Max Temperature for AC of this group."""
return self._airtouch.acs[self._unit.BelongsToAc].MaxSetpoint

View File

@@ -16,8 +16,8 @@
"data": {
"api_key": "[%key:common::config_flow::data::api_key%]",
"city": "City",
"country": "Country",
"state": "State"
"state": "State",
"country": "[%key:common::config_flow::data::country%]"
}
},
"reauth_confirm": {
@@ -56,12 +56,12 @@
"sensor": {
"pollutant_label": {
"state": {
"co": "Carbon monoxide",
"n2": "Nitrogen dioxide",
"o3": "Ozone",
"p1": "PM10",
"p2": "PM2.5",
"s2": "Sulfur dioxide"
"co": "[%key:component::sensor::entity_component::carbon_monoxide::name%]",
"n2": "[%key:component::sensor::entity_component::nitrogen_dioxide::name%]",
"o3": "[%key:component::sensor::entity_component::ozone::name%]",
"p1": "[%key:component::sensor::entity_component::pm10::name%]",
"p2": "[%key:component::sensor::entity_component::pm25::name%]",
"s2": "[%key:component::sensor::entity_component::sulphur_dioxide::name%]"
}
},
"pollutant_level": {

View File

@@ -9,6 +9,8 @@ from aioairzone.const import (
AZD_HUMIDITY,
AZD_TEMP,
AZD_TEMP_UNIT,
AZD_THERMOSTAT_BATTERY,
AZD_THERMOSTAT_SIGNAL,
AZD_WEBSERVER,
AZD_WIFI_RSSI,
AZD_ZONES,
@@ -73,6 +75,20 @@ ZONE_SENSOR_TYPES: Final[tuple[SensorEntityDescription, ...]] = (
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
device_class=SensorDeviceClass.BATTERY,
key=AZD_THERMOSTAT_BATTERY,
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
),
SensorEntityDescription(
entity_category=EntityCategory.DIAGNOSTIC,
entity_registry_enabled_default=False,
key=AZD_THERMOSTAT_SIGNAL,
native_unit_of_measurement=PERCENTAGE,
state_class=SensorStateClass.MEASUREMENT,
translation_key="thermostat_signal",
),
)

View File

@@ -76,6 +76,9 @@
"sensor": {
"rssi": {
"name": "RSSI"
},
"thermostat_signal": {
"name": "Signal strength"
}
}
}

View File

@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone_cloud",
"iot_class": "cloud_push",
"loggers": ["aioairzone_cloud"],
"requirements": ["aioairzone-cloud==0.6.11"]
"requirements": ["aioairzone-cloud==0.6.12"]
}

View File

@@ -32,9 +32,9 @@
"air_quality": {
"name": "Air Quality mode",
"state": {
"off": "Off",
"on": "On",
"auto": "Auto"
"off": "[%key:common::state::off%]",
"on": "[%key:common::state::on%]",
"auto": "[%key:common::state::auto%]"
}
},
"modes": {

View File

@@ -2,7 +2,7 @@
"config": {
"step": {
"user": {
"title": "Choose AlarmDecoder Protocol",
"title": "Choose AlarmDecoder protocol",
"data": {
"protocol": "Protocol"
}
@@ -12,8 +12,8 @@
"data": {
"host": "[%key:common::config_flow::data::host%]",
"port": "[%key:common::config_flow::data::port%]",
"device_baudrate": "Device Baud Rate",
"device_path": "Device Path"
"device_baudrate": "Device baud rate",
"device_path": "Device path"
},
"data_description": {
"host": "The hostname or IP address of the AlarmDecoder device that is connected to your alarm panel.",
@@ -44,36 +44,36 @@
"arm_settings": {
"title": "[%key:component::alarmdecoder::options::step::init::title%]",
"data": {
"auto_bypass": "Auto Bypass on Arm",
"code_arm_required": "Code Required for Arming",
"alt_night_mode": "Alternative Night Mode"
"auto_bypass": "Auto-bypass on arm",
"code_arm_required": "Code required for arming",
"alt_night_mode": "Alternative night mode"
}
},
"zone_select": {
"title": "[%key:component::alarmdecoder::options::step::init::title%]",
"description": "Enter the zone number you'd like to to add, edit, or remove.",
"data": {
"zone_number": "Zone Number"
"zone_number": "Zone number"
}
},
"zone_details": {
"title": "[%key:component::alarmdecoder::options::step::init::title%]",
"description": "Enter details for zone {zone_number}. To delete zone {zone_number}, leave Zone Name blank.",
"description": "Enter details for zone {zone_number}. To delete zone {zone_number}, leave 'Zone name' blank.",
"data": {
"zone_name": "Zone Name",
"zone_type": "Zone Type",
"zone_rfid": "RF Serial",
"zone_loop": "RF Loop",
"zone_relayaddr": "Relay Address",
"zone_relaychan": "Relay Channel"
"zone_name": "Zone name",
"zone_type": "Zone type",
"zone_rfid": "RF serial",
"zone_loop": "RF loop",
"zone_relayaddr": "Relay address",
"zone_relaychan": "Relay channel"
}
}
},
"error": {
"relay_inclusive": "Relay Address and Relay Channel are codependent and must be included together.",
"relay_inclusive": "'Relay address' and 'Relay channel' are codependent and must be included together.",
"int": "The field below must be an integer.",
"loop_rfid": "RF Loop cannot be used without RF Serial.",
"loop_range": "RF Loop must be an integer between 1 and 4."
"loop_rfid": "'RF loop' cannot be used without 'RF serial'.",
"loop_range": "'RF loop' must be an integer between 1 and 4."
}
},
"services": {

View File

@@ -719,7 +719,7 @@ class LockCapabilities(AlexaEntity):
yield Alexa(self.entity)
@ENTITY_ADAPTERS.register(media_player.const.DOMAIN)
@ENTITY_ADAPTERS.register(media_player.DOMAIN)
class MediaPlayerCapabilities(AlexaEntity):
"""Class to represent MediaPlayer capabilities."""
@@ -757,9 +757,7 @@ class MediaPlayerCapabilities(AlexaEntity):
if supported & media_player.MediaPlayerEntityFeature.SELECT_SOURCE:
inputs = AlexaInputController.get_valid_inputs(
self.entity.attributes.get(
media_player.const.ATTR_INPUT_SOURCE_LIST, []
)
self.entity.attributes.get(media_player.ATTR_INPUT_SOURCE_LIST, [])
)
if len(inputs) > 0:
yield AlexaInputController(self.entity)
@@ -776,8 +774,7 @@ class MediaPlayerCapabilities(AlexaEntity):
and domain != "denonavr"
):
inputs = AlexaEqualizerController.get_valid_inputs(
self.entity.attributes.get(media_player.const.ATTR_SOUND_MODE_LIST)
or []
self.entity.attributes.get(media_player.ATTR_SOUND_MODE_LIST) or []
)
if len(inputs) > 0:
yield AlexaEqualizerController(self.entity)

View File

@@ -566,7 +566,7 @@ async def async_api_set_volume(
data: dict[str, Any] = {
ATTR_ENTITY_ID: entity.entity_id,
media_player.const.ATTR_MEDIA_VOLUME_LEVEL: volume,
media_player.ATTR_MEDIA_VOLUME_LEVEL: volume,
}
await hass.services.async_call(
@@ -589,7 +589,7 @@ async def async_api_select_input(
# Attempt to map the ALL UPPERCASE payload name to a source.
# Strips trailing 1 to match single input devices.
source_list = entity.attributes.get(media_player.const.ATTR_INPUT_SOURCE_LIST) or []
source_list = entity.attributes.get(media_player.ATTR_INPUT_SOURCE_LIST) or []
for source in source_list:
formatted_source = (
source.lower().replace("-", "").replace("_", "").replace(" ", "")
@@ -611,7 +611,7 @@ async def async_api_select_input(
data: dict[str, Any] = {
ATTR_ENTITY_ID: entity.entity_id,
media_player.const.ATTR_INPUT_SOURCE: media_input,
media_player.ATTR_INPUT_SOURCE: media_input,
}
await hass.services.async_call(
@@ -636,7 +636,7 @@ async def async_api_adjust_volume(
volume_delta = int(directive.payload["volume"])
entity = directive.entity
current_level = entity.attributes[media_player.const.ATTR_MEDIA_VOLUME_LEVEL]
current_level = entity.attributes[media_player.ATTR_MEDIA_VOLUME_LEVEL]
# read current state
try:
@@ -648,7 +648,7 @@ async def async_api_adjust_volume(
data: dict[str, Any] = {
ATTR_ENTITY_ID: entity.entity_id,
media_player.const.ATTR_MEDIA_VOLUME_LEVEL: volume,
media_player.ATTR_MEDIA_VOLUME_LEVEL: volume,
}
await hass.services.async_call(
@@ -709,7 +709,7 @@ async def async_api_set_mute(
entity = directive.entity
data: dict[str, Any] = {
ATTR_ENTITY_ID: entity.entity_id,
media_player.const.ATTR_MEDIA_VOLUME_MUTED: mute,
media_player.ATTR_MEDIA_VOLUME_MUTED: mute,
}
await hass.services.async_call(
@@ -1708,15 +1708,13 @@ async def async_api_changechannel(
data: dict[str, Any] = {
ATTR_ENTITY_ID: entity.entity_id,
media_player.const.ATTR_MEDIA_CONTENT_ID: channel,
media_player.const.ATTR_MEDIA_CONTENT_TYPE: (
media_player.const.MEDIA_TYPE_CHANNEL
),
media_player.ATTR_MEDIA_CONTENT_ID: channel,
media_player.ATTR_MEDIA_CONTENT_TYPE: (media_player.MediaType.CHANNEL),
}
await hass.services.async_call(
entity.domain,
media_player.const.SERVICE_PLAY_MEDIA,
media_player.SERVICE_PLAY_MEDIA,
data,
blocking=False,
context=context,
@@ -1825,13 +1823,13 @@ async def async_api_set_eq_mode(
context: ha.Context,
) -> AlexaResponse:
"""Process a SetMode request for EqualizerController."""
mode = directive.payload["mode"]
mode: str = directive.payload["mode"]
entity = directive.entity
data: dict[str, Any] = {ATTR_ENTITY_ID: entity.entity_id}
sound_mode_list = entity.attributes.get(media_player.const.ATTR_SOUND_MODE_LIST)
sound_mode_list = entity.attributes.get(media_player.ATTR_SOUND_MODE_LIST)
if sound_mode_list and mode.lower() in sound_mode_list:
data[media_player.const.ATTR_SOUND_MODE] = mode.lower()
data[media_player.ATTR_SOUND_MODE] = mode.lower()
else:
msg = f"failed to map sound mode {mode} to a mode on {entity.entity_id}"
raise AlexaInvalidValueError(msg)

View File

@@ -3,10 +3,10 @@
from __future__ import annotations
from asyncio import timeout
from collections.abc import Mapping
from http import HTTPStatus
import json
import logging
from types import MappingProxyType
from typing import TYPE_CHECKING, Any, cast
from uuid import uuid4
@@ -260,10 +260,10 @@ async def async_enable_proactive_mode(
def extra_significant_check(
hass: HomeAssistant,
old_state: str,
old_attrs: dict[Any, Any] | MappingProxyType[Any, Any],
old_attrs: Mapping[Any, Any],
old_extra_arg: Any,
new_state: str,
new_attrs: dict[str, Any] | MappingProxyType[Any, Any],
new_attrs: Mapping[Any, Any],
new_extra_arg: Any,
) -> bool:
"""Check if the serialized data has changed."""

View File

@@ -0,0 +1,32 @@
"""Amazon Devices integration."""
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from .coordinator import AmazonConfigEntry, AmazonDevicesCoordinator
PLATFORMS = [
Platform.BINARY_SENSOR,
Platform.NOTIFY,
Platform.SWITCH,
]
async def async_setup_entry(hass: HomeAssistant, entry: AmazonConfigEntry) -> bool:
"""Set up Amazon Devices platform."""
coordinator = AmazonDevicesCoordinator(hass, entry)
await coordinator.async_config_entry_first_refresh()
entry.runtime_data = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True
async def async_unload_entry(hass: HomeAssistant, entry: AmazonConfigEntry) -> bool:
"""Unload a config entry."""
await entry.runtime_data.api.close()
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)

View File

@@ -0,0 +1,71 @@
"""Support for binary sensors."""
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from typing import Final
from aioamazondevices.api import AmazonDevice
from homeassistant.components.binary_sensor import (
BinarySensorDeviceClass,
BinarySensorEntity,
BinarySensorEntityDescription,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .coordinator import AmazonConfigEntry
from .entity import AmazonEntity
# Coordinator is used to centralize the data updates
PARALLEL_UPDATES = 0
@dataclass(frozen=True, kw_only=True)
class AmazonBinarySensorEntityDescription(BinarySensorEntityDescription):
"""Amazon Devices binary sensor entity description."""
is_on_fn: Callable[[AmazonDevice], bool]
BINARY_SENSORS: Final = (
AmazonBinarySensorEntityDescription(
key="online",
device_class=BinarySensorDeviceClass.CONNECTIVITY,
is_on_fn=lambda _device: _device.online,
),
AmazonBinarySensorEntityDescription(
key="bluetooth",
translation_key="bluetooth",
is_on_fn=lambda _device: _device.bluetooth_state,
),
)
async def async_setup_entry(
hass: HomeAssistant,
entry: AmazonConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Amazon Devices binary sensors based on a config entry."""
coordinator = entry.runtime_data
async_add_entities(
AmazonBinarySensorEntity(coordinator, serial_num, sensor_desc)
for sensor_desc in BINARY_SENSORS
for serial_num in coordinator.data
)
class AmazonBinarySensorEntity(AmazonEntity, BinarySensorEntity):
"""Binary sensor device."""
entity_description: AmazonBinarySensorEntityDescription
@property
def is_on(self) -> bool:
"""Return True if the binary sensor is on."""
return self.entity_description.is_on_fn(self.device)

View File

@@ -0,0 +1,63 @@
"""Config flow for Amazon Devices integration."""
from __future__ import annotations
from typing import Any
from aioamazondevices.api import AmazonEchoApi
from aioamazondevices.exceptions import CannotAuthenticate, CannotConnect
import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_CODE, CONF_COUNTRY, CONF_PASSWORD, CONF_USERNAME
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.selector import CountrySelector
from .const import CONF_LOGIN_DATA, DOMAIN
class AmazonDevicesConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Amazon Devices."""
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle the initial step."""
errors = {}
if user_input:
client = AmazonEchoApi(
user_input[CONF_COUNTRY],
user_input[CONF_USERNAME],
user_input[CONF_PASSWORD],
)
try:
data = await client.login_mode_interactive(user_input[CONF_CODE])
except CannotConnect:
errors["base"] = "cannot_connect"
except CannotAuthenticate:
errors["base"] = "invalid_auth"
else:
await self.async_set_unique_id(data["customer_info"]["user_id"])
self._abort_if_unique_id_configured()
user_input.pop(CONF_CODE)
return self.async_create_entry(
title=user_input[CONF_USERNAME],
data=user_input | {CONF_LOGIN_DATA: data},
)
finally:
await client.close()
return self.async_show_form(
step_id="user",
errors=errors,
data_schema=vol.Schema(
{
vol.Required(
CONF_COUNTRY, default=self.hass.config.country
): CountrySelector(),
vol.Required(CONF_USERNAME): cv.string,
vol.Required(CONF_PASSWORD): cv.string,
vol.Required(CONF_CODE): cv.positive_int,
}
),
)

View File

@@ -0,0 +1,8 @@
"""Amazon Devices constants."""
import logging
_LOGGER = logging.getLogger(__package__)
DOMAIN = "amazon_devices"
CONF_LOGIN_DATA = "login_data"

View File

@@ -0,0 +1,58 @@
"""Support for Amazon Devices."""
from datetime import timedelta
from aioamazondevices.api import AmazonDevice, AmazonEchoApi
from aioamazondevices.exceptions import (
CannotAuthenticate,
CannotConnect,
CannotRetrieveData,
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_COUNTRY, CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryError
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import _LOGGER, CONF_LOGIN_DATA
SCAN_INTERVAL = 30
type AmazonConfigEntry = ConfigEntry[AmazonDevicesCoordinator]
class AmazonDevicesCoordinator(DataUpdateCoordinator[dict[str, AmazonDevice]]):
"""Base coordinator for Amazon Devices."""
config_entry: AmazonConfigEntry
def __init__(
self,
hass: HomeAssistant,
entry: AmazonConfigEntry,
) -> None:
"""Initialize the scanner."""
super().__init__(
hass,
_LOGGER,
name=entry.title,
config_entry=entry,
update_interval=timedelta(seconds=SCAN_INTERVAL),
)
self.api = AmazonEchoApi(
entry.data[CONF_COUNTRY],
entry.data[CONF_USERNAME],
entry.data[CONF_PASSWORD],
entry.data[CONF_LOGIN_DATA],
)
async def _async_update_data(self) -> dict[str, AmazonDevice]:
"""Update device data."""
try:
await self.api.login_mode_stored_data()
return await self.api.get_devices_data()
except (CannotConnect, CannotRetrieveData) as err:
raise UpdateFailed(f"Error occurred while updating {self.name}") from err
except CannotAuthenticate as err:
raise ConfigEntryError("Could not authenticate") from err

View File

@@ -0,0 +1,57 @@
"""Defines a base Amazon Devices entity."""
from typing import cast
from aioamazondevices.api import AmazonDevice
from aioamazondevices.const import DEVICE_TYPE_TO_MODEL, SPEAKER_GROUP_MODEL
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import AmazonDevicesCoordinator
class AmazonEntity(CoordinatorEntity[AmazonDevicesCoordinator]):
"""Defines a base Amazon Devices entity."""
_attr_has_entity_name = True
def __init__(
self,
coordinator: AmazonDevicesCoordinator,
serial_num: str,
description: EntityDescription,
) -> None:
"""Initialize the entity."""
super().__init__(coordinator)
self._serial_num = serial_num
model_details: dict[str, str] = cast(
"dict", DEVICE_TYPE_TO_MODEL.get(self.device.device_type)
)
model = model_details["model"] if model_details else None
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, serial_num)},
name=self.device.account_name,
model=model,
model_id=self.device.device_type,
manufacturer="Amazon",
hw_version=model_details["hw_version"] if model_details else None,
sw_version=(
self.device.software_version if model != SPEAKER_GROUP_MODEL else None
),
serial_number=serial_num if model != SPEAKER_GROUP_MODEL else None,
)
self.entity_description = description
self._attr_unique_id = f"{serial_num}-{description.key}"
@property
def device(self) -> AmazonDevice:
"""Return the device."""
return self.coordinator.data[self._serial_num]
@property
def available(self) -> bool:
"""Return True if entity is available."""
return super().available and self._serial_num in self.coordinator.data

View File

@@ -0,0 +1,12 @@
{
"entity": {
"binary_sensor": {
"bluetooth": {
"default": "mdi:bluetooth",
"state": {
"off": "mdi:bluetooth-off"
}
}
}
}
}

View File

@@ -0,0 +1,33 @@
{
"domain": "amazon_devices",
"name": "Amazon Devices",
"codeowners": ["@chemelli74"],
"config_flow": true,
"dhcp": [
{ "macaddress": "08A6BC*" },
{ "macaddress": "10BF67*" },
{ "macaddress": "440049*" },
{ "macaddress": "443D54*" },
{ "macaddress": "48B423*" },
{ "macaddress": "4C1744*" },
{ "macaddress": "50D45C*" },
{ "macaddress": "50DCE7*" },
{ "macaddress": "68F63B*" },
{ "macaddress": "74D637*" },
{ "macaddress": "7C6166*" },
{ "macaddress": "901195*" },
{ "macaddress": "943A91*" },
{ "macaddress": "98226E*" },
{ "macaddress": "9CC8E9*" },
{ "macaddress": "A8E621*" },
{ "macaddress": "C095CF*" },
{ "macaddress": "D8BE65*" },
{ "macaddress": "EC2BEB*" }
],
"documentation": "https://www.home-assistant.io/integrations/amazon_devices",
"integration_type": "hub",
"iot_class": "cloud_polling",
"loggers": ["aioamazondevices"],
"quality_scale": "bronze",
"requirements": ["aioamazondevices==2.0.1"]
}

View File

@@ -0,0 +1,74 @@
"""Support for notification entity."""
from __future__ import annotations
from collections.abc import Awaitable, Callable
from dataclasses import dataclass
from typing import Any, Final
from aioamazondevices.api import AmazonDevice, AmazonEchoApi
from homeassistant.components.notify import NotifyEntity, NotifyEntityDescription
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .coordinator import AmazonConfigEntry
from .entity import AmazonEntity
PARALLEL_UPDATES = 1
@dataclass(frozen=True, kw_only=True)
class AmazonNotifyEntityDescription(NotifyEntityDescription):
"""Amazon Devices notify entity description."""
method: Callable[[AmazonEchoApi, AmazonDevice, str], Awaitable[None]]
subkey: str
NOTIFY: Final = (
AmazonNotifyEntityDescription(
key="speak",
translation_key="speak",
subkey="AUDIO_PLAYER",
method=lambda api, device, message: api.call_alexa_speak(device, message),
),
AmazonNotifyEntityDescription(
key="announce",
translation_key="announce",
subkey="AUDIO_PLAYER",
method=lambda api, device, message: api.call_alexa_announcement(
device, message
),
),
)
async def async_setup_entry(
hass: HomeAssistant,
entry: AmazonConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Amazon Devices notification entity based on a config entry."""
coordinator = entry.runtime_data
async_add_entities(
AmazonNotifyEntity(coordinator, serial_num, sensor_desc)
for sensor_desc in NOTIFY
for serial_num in coordinator.data
if sensor_desc.subkey in coordinator.data[serial_num].capabilities
)
class AmazonNotifyEntity(AmazonEntity, NotifyEntity):
"""Binary sensor notify platform."""
entity_description: AmazonNotifyEntityDescription
async def async_send_message(
self, message: str, title: str | None = None, **kwargs: Any
) -> None:
"""Send a message."""
await self.entity_description.method(self.coordinator.api, self.device, message)

View File

@@ -0,0 +1,74 @@
rules:
# Bronze
action-setup:
status: exempt
comment: no actions
appropriate-polling: done
brands: done
common-modules: done
config-flow-test-coverage: done
config-flow: done
dependency-transparency: done
docs-actions:
status: exempt
comment: no actions
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions: done
entity-event-setup:
status: exempt
comment: entities do not explicitly subscribe to events
entity-unique-id: done
has-entity-name: done
runtime-data: done
test-before-configure: done
test-before-setup: done
unique-config-entry: done
# Silver
action-exceptions: todo
config-entry-unloading: done
docs-configuration-parameters: todo
docs-installation-parameters: todo
entity-unavailable: done
integration-owner: done
log-when-unavailable: done
parallel-updates: done
reauthentication-flow: todo
test-coverage:
status: todo
comment: all tests missing
# Gold
devices: done
diagnostics: todo
discovery-update-info:
status: exempt
comment: Network information not relevant
discovery: done
docs-data-update: todo
docs-examples: todo
docs-known-limitations: todo
docs-supported-devices: todo
docs-supported-functions: todo
docs-troubleshooting: todo
docs-use-cases: todo
dynamic-devices: todo
entity-category: done
entity-device-class: done
entity-disabled-by-default: done
entity-translations: done
exception-translations: todo
icon-translations: done
reconfiguration-flow: todo
repair-issues:
status: exempt
comment: no known use cases for repair issues or flows, yet
stale-devices:
status: todo
comment: automate the cleanup process
# Platinum
async-dependency: done
inject-websession: todo
strict-typing: done

View File

@@ -0,0 +1,60 @@
{
"common": {
"data_country": "Country code",
"data_code": "One-time password (OTP code)",
"data_description_country": "The country of your Amazon account.",
"data_description_username": "The email address of your Amazon account.",
"data_description_password": "The password of your Amazon account.",
"data_description_code": "The one-time password sent to your email address."
},
"config": {
"flow_title": "{username}",
"step": {
"user": {
"data": {
"country": "[%key:component::amazon_devices::common::data_country%]",
"username": "[%key:common::config_flow::data::username%]",
"password": "[%key:common::config_flow::data::password%]",
"code": "[%key:component::amazon_devices::common::data_description_code%]"
},
"data_description": {
"country": "[%key:component::amazon_devices::common::data_description_country%]",
"username": "[%key:component::amazon_devices::common::data_description_username%]",
"password": "[%key:component::amazon_devices::common::data_description_password%]",
"code": "[%key:component::amazon_devices::common::data_description_code%]"
}
}
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_service%]",
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"invalid_auth": "[%key:common::config_flow::error::invalid_auth%]",
"unknown": "[%key:common::config_flow::error::unknown%]"
},
"error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"invalid_auth": "[%key:common::config_flow::error::invalid_auth%]",
"unknown": "[%key:common::config_flow::error::unknown%]"
}
},
"entity": {
"binary_sensor": {
"bluetooth": {
"name": "Bluetooth"
}
},
"notify": {
"speak": {
"name": "Speak"
},
"announce": {
"name": "Announce"
}
},
"switch": {
"do_not_disturb": {
"name": "Do not disturb"
}
}
}
}

View File

@@ -0,0 +1,84 @@
"""Support for switches."""
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from typing import TYPE_CHECKING, Any, Final
from aioamazondevices.api import AmazonDevice
from homeassistant.components.switch import SwitchEntity, SwitchEntityDescription
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .coordinator import AmazonConfigEntry
from .entity import AmazonEntity
PARALLEL_UPDATES = 1
@dataclass(frozen=True, kw_only=True)
class AmazonSwitchEntityDescription(SwitchEntityDescription):
"""Amazon Devices switch entity description."""
is_on_fn: Callable[[AmazonDevice], bool]
subkey: str
method: str
SWITCHES: Final = (
AmazonSwitchEntityDescription(
key="do_not_disturb",
subkey="AUDIO_PLAYER",
translation_key="do_not_disturb",
is_on_fn=lambda _device: _device.do_not_disturb,
method="set_do_not_disturb",
),
)
async def async_setup_entry(
hass: HomeAssistant,
entry: AmazonConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Amazon Devices switches based on a config entry."""
coordinator = entry.runtime_data
async_add_entities(
AmazonSwitchEntity(coordinator, serial_num, switch_desc)
for switch_desc in SWITCHES
for serial_num in coordinator.data
if switch_desc.subkey in coordinator.data[serial_num].capabilities
)
class AmazonSwitchEntity(AmazonEntity, SwitchEntity):
"""Switch device."""
entity_description: AmazonSwitchEntityDescription
async def _switch_set_state(self, state: bool) -> None:
"""Set desired switch state."""
method = getattr(self.coordinator.api, self.entity_description.method)
if TYPE_CHECKING:
assert method is not None
await method(self.device, state)
await self.coordinator.async_request_refresh()
async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn the switch on."""
await self._switch_set_state(True)
async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn the switch off."""
await self._switch_set_state(False)
@property
def is_on(self) -> bool:
"""Return True if switch is on."""
return self.entity_description.is_on_fn(self.device)

View File

@@ -6,5 +6,5 @@
"iot_class": "cloud_push",
"loggers": ["boto3", "botocore", "s3transfer"],
"quality_scale": "legacy",
"requirements": ["boto3==1.34.131"]
"requirements": ["boto3==1.37.1"]
}

View File

@@ -3,12 +3,12 @@
"step": {
"user": {
"data": {
"tracked_addons": "Addons",
"tracked_addons": "Add-ons",
"tracked_integrations": "Integrations",
"tracked_custom_integrations": "Custom integrations"
},
"data_description": {
"tracked_addons": "Select the addons you want to track",
"tracked_addons": "Select the add-ons you want to track",
"tracked_integrations": "Select the integrations you want to track",
"tracked_custom_integrations": "Select the custom integrations you want to track"
}

View File

@@ -5,5 +5,5 @@
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/android_ip_webcam",
"iot_class": "local_polling",
"requirements": ["pydroid-ipcam==2.0.0"]
"requirements": ["pydroid-ipcam==3.0.0"]
}

View File

@@ -73,7 +73,7 @@ class AndroidTVRemoteBaseEntity(Entity):
self._api.send_key_command(key_code, direction)
except ConnectionClosed as exc:
raise HomeAssistantError(
"Connection to Android TV device is closed"
translation_domain=DOMAIN, translation_key="connection_closed"
) from exc
def _send_launch_app_command(self, app_link: str) -> None:
@@ -85,5 +85,5 @@ class AndroidTVRemoteBaseEntity(Entity):
self._api.send_launch_app_command(app_link)
except ConnectionClosed as exc:
raise HomeAssistantError(
"Connection to Android TV device is closed"
translation_domain=DOMAIN, translation_key="connection_closed"
) from exc

View File

@@ -7,6 +7,6 @@
"integration_type": "device",
"iot_class": "local_push",
"loggers": ["androidtvremote2"],
"requirements": ["androidtvremote2==0.2.1"],
"requirements": ["androidtvremote2==0.2.2"],
"zeroconf": ["_androidtvremote2._tcp.local."]
}

View File

@@ -21,7 +21,7 @@ from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from . import AndroidTVRemoteConfigEntry
from .const import CONF_APP_ICON, CONF_APP_NAME
from .const import CONF_APP_ICON, CONF_APP_NAME, DOMAIN
from .entity import AndroidTVRemoteBaseEntity
PARALLEL_UPDATES = 0
@@ -233,5 +233,5 @@ class AndroidTVRemoteMediaPlayerEntity(AndroidTVRemoteBaseEntity, MediaPlayerEnt
await asyncio.sleep(delay_secs)
except ConnectionClosed as exc:
raise HomeAssistantError(
"Connection to Android TV device is closed"
translation_domain=DOMAIN, translation_key="connection_closed"
) from exc

View File

@@ -51,8 +51,17 @@
"app_id": "Application ID",
"app_icon": "Application icon",
"app_delete": "Check to delete this application"
},
"data_description": {
"app_id": "E.g. com.plexapp.android for https://play.google.com/store/apps/details?id=com.plexapp.android",
"app_icon": "Image URL. From the Play Store app page, right click on the icon and select 'Copy image address' and then paste it here. Alternatively, download the image, upload it under /config/www/ and use the URL /local/filename"
}
}
}
},
"exceptions": {
"connection_closed": {
"message": "Connection to the Android TV device is closed"
}
}
}

View File

@@ -2,6 +2,7 @@
from __future__ import annotations
from collections.abc import Mapping
from functools import partial
import logging
from types import MappingProxyType
@@ -52,7 +53,7 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
RECOMMENDED_OPTIONS = {
CONF_RECOMMENDED: True,
CONF_LLM_HASS_API: llm.LLM_API_ASSIST,
CONF_LLM_HASS_API: [llm.LLM_API_ASSIST],
CONF_PROMPT: llm.DEFAULT_INSTRUCTIONS_PROMPT,
}
@@ -134,9 +135,8 @@ class AnthropicOptionsFlow(OptionsFlow):
if user_input is not None:
if user_input[CONF_RECOMMENDED] == self.last_rendered_recommended:
if user_input[CONF_LLM_HASS_API] == "none":
user_input.pop(CONF_LLM_HASS_API)
if not user_input.get(CONF_LLM_HASS_API):
user_input.pop(CONF_LLM_HASS_API, None)
if user_input.get(
CONF_THINKING_BUDGET, RECOMMENDED_THINKING_BUDGET
) >= user_input.get(CONF_MAX_TOKENS, RECOMMENDED_MAX_TOKENS):
@@ -151,12 +151,16 @@ class AnthropicOptionsFlow(OptionsFlow):
options = {
CONF_RECOMMENDED: user_input[CONF_RECOMMENDED],
CONF_PROMPT: user_input[CONF_PROMPT],
CONF_LLM_HASS_API: user_input[CONF_LLM_HASS_API],
CONF_LLM_HASS_API: user_input.get(CONF_LLM_HASS_API),
}
suggested_values = options.copy()
if not suggested_values.get(CONF_PROMPT):
suggested_values[CONF_PROMPT] = llm.DEFAULT_INSTRUCTIONS_PROMPT
if (
suggested_llm_apis := suggested_values.get(CONF_LLM_HASS_API)
) and isinstance(suggested_llm_apis, str):
suggested_values[CONF_LLM_HASS_API] = [suggested_llm_apis]
schema = self.add_suggested_values_to_schema(
vol.Schema(anthropic_config_option_schema(self.hass, options)),
@@ -172,28 +176,22 @@ class AnthropicOptionsFlow(OptionsFlow):
def anthropic_config_option_schema(
hass: HomeAssistant,
options: dict[str, Any] | MappingProxyType[str, Any],
options: Mapping[str, Any],
) -> dict:
"""Return a schema for Anthropic completion options."""
hass_apis: list[SelectOptionDict] = [
SelectOptionDict(
label="No control",
value="none",
)
]
hass_apis.extend(
SelectOptionDict(
label=api.name,
value=api.id,
)
for api in llm.async_get_apis(hass)
)
]
schema = {
vol.Optional(CONF_PROMPT): TemplateSelector(),
vol.Optional(CONF_LLM_HASS_API, default="none"): SelectSelector(
SelectSelectorConfig(options=hass_apis)
),
vol.Optional(
CONF_LLM_HASS_API,
): SelectSelector(SelectSelectorConfig(options=hass_apis, multiple=True)),
vol.Required(
CONF_RECOMMENDED, default=options.get(CONF_RECOMMENDED, False)
): bool,

View File

@@ -17,4 +17,11 @@ CONF_THINKING_BUDGET = "thinking_budget"
RECOMMENDED_THINKING_BUDGET = 0
MIN_THINKING_BUDGET = 1024
THINKING_MODELS = ["claude-3-7-sonnet-20250219", "claude-3-7-sonnet-latest"]
THINKING_MODELS = [
"claude-3-7-sonnet-20250219",
"claude-3-7-sonnet-latest",
"claude-opus-4-20250514",
"claude-opus-4-0",
"claude-sonnet-4-20250514",
"claude-sonnet-4-0",
]

View File

@@ -9,11 +9,13 @@ from anthropic import AsyncStream
from anthropic._types import NOT_GIVEN
from anthropic.types import (
InputJSONDelta,
MessageDeltaUsage,
MessageParam,
MessageStreamEvent,
RawContentBlockDeltaEvent,
RawContentBlockStartEvent,
RawContentBlockStopEvent,
RawMessageDeltaEvent,
RawMessageStartEvent,
RawMessageStopEvent,
RedactedThinkingBlock,
@@ -31,6 +33,7 @@ from anthropic.types import (
ToolResultBlockParam,
ToolUseBlock,
ToolUseBlockParam,
Usage,
)
from voluptuous_openapi import convert
@@ -162,7 +165,8 @@ def _convert_content(
return messages
async def _transform_stream(
async def _transform_stream( # noqa: C901 - This is complex, but better to have it in one place
chat_log: conversation.ChatLog,
result: AsyncStream[MessageStreamEvent],
messages: list[MessageParam],
) -> AsyncGenerator[conversation.AssistantContentDeltaDict]:
@@ -207,6 +211,7 @@ async def _transform_stream(
| None
) = None
current_tool_args: str
input_usage: Usage | None = None
async for response in result:
LOGGER.debug("Received response: %s", response)
@@ -215,6 +220,7 @@ async def _transform_stream(
if response.message.role != "assistant":
raise ValueError("Unexpected message role")
current_message = MessageParam(role=response.message.role, content=[])
input_usage = response.message.usage
elif isinstance(response, RawContentBlockStartEvent):
if isinstance(response.content_block, ToolUseBlock):
current_block = ToolUseBlockParam(
@@ -265,32 +271,56 @@ async def _transform_stream(
if current_block is None:
raise ValueError("Unexpected stop event without a current block")
if current_block["type"] == "tool_use":
tool_block = cast(ToolUseBlockParam, current_block)
# tool block
tool_args = json.loads(current_tool_args) if current_tool_args else {}
tool_block["input"] = tool_args
current_block["input"] = tool_args
yield {
"tool_calls": [
llm.ToolInput(
id=tool_block["id"],
tool_name=tool_block["name"],
id=current_block["id"],
tool_name=current_block["name"],
tool_args=tool_args,
)
]
}
elif current_block["type"] == "thinking":
thinking_block = cast(ThinkingBlockParam, current_block)
LOGGER.debug("Thinking: %s", thinking_block["thinking"])
# thinking block
LOGGER.debug("Thinking: %s", current_block["thinking"])
if current_message is None:
raise ValueError("Unexpected stop event without a current message")
current_message["content"].append(current_block) # type: ignore[union-attr]
current_block = None
elif isinstance(response, RawMessageDeltaEvent):
if (usage := response.usage) is not None:
chat_log.async_trace(_create_token_stats(input_usage, usage))
if response.delta.stop_reason == "refusal":
raise HomeAssistantError("Potential policy violation detected")
elif isinstance(response, RawMessageStopEvent):
if current_message is not None:
messages.append(current_message)
current_message = None
def _create_token_stats(
input_usage: Usage | None, response_usage: MessageDeltaUsage
) -> dict[str, Any]:
"""Create token stats for conversation agent tracing."""
input_tokens = 0
cached_input_tokens = 0
if input_usage:
input_tokens = input_usage.input_tokens
cached_input_tokens = input_usage.cache_creation_input_tokens or 0
output_tokens = response_usage.output_tokens
return {
"stats": {
"input_tokens": input_tokens,
"cached_input_tokens": cached_input_tokens,
"output_tokens": output_tokens,
}
}
class AnthropicConversationEntity(
conversation.ConversationEntity, conversation.AbstractConversationAgent
):
@@ -298,6 +328,7 @@ class AnthropicConversationEntity(
_attr_has_entity_name = True
_attr_name = None
_attr_supports_streaming = True
def __init__(self, entry: AnthropicConfigEntry) -> None:
"""Initialize the agent."""
@@ -393,7 +424,8 @@ class AnthropicConversationEntity(
[
content
async for content in chat_log.async_add_delta_content_stream(
user_input.agent_id, _transform_stream(stream, messages)
user_input.agent_id,
_transform_stream(chat_log, stream, messages),
)
if not isinstance(content, conversation.AssistantContent)
]

View File

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

View File

@@ -53,10 +53,8 @@ class OnlineStatus(CoordinatorEntity[APCUPSdCoordinator], BinarySensorEntity):
"""Initialize the APCUPSd binary device."""
super().__init__(coordinator, context=description.key.upper())
# Set up unique id and device info if serial number is available.
if (serial_no := coordinator.data.serial_no) is not None:
self._attr_unique_id = f"{serial_no}_{description.key}"
self.entity_description = description
self._attr_unique_id = f"{coordinator.unique_device_id}_{description.key}"
self._attr_device_info = coordinator.device_info
@property

View File

@@ -46,11 +46,7 @@ class ConfigFlowHandler(ConfigFlow, domain=DOMAIN):
return self.async_show_form(step_id="user", data_schema=_SCHEMA)
host, port = user_input[CONF_HOST], user_input[CONF_PORT]
# Abort if an entry with same host and port is present.
self._async_abort_entries_match({CONF_HOST: host, CONF_PORT: port})
# Test the connection to the host and get the current status for serial number.
try:
async with asyncio.timeout(CONNECTION_TIMEOUT):
data = APCUPSdData(await aioapcaccess.request_status(host, port))
@@ -67,3 +63,30 @@ class ConfigFlowHandler(ConfigFlow, domain=DOMAIN):
title = data.name or data.model or data.serial_no or "APC UPS"
return self.async_create_entry(title=title, data=user_input)
async def async_step_reconfigure(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle reconfiguration of an existing entry."""
if user_input is None:
return self.async_show_form(step_id="reconfigure", data_schema=_SCHEMA)
host, port = user_input[CONF_HOST], user_input[CONF_PORT]
self._async_abort_entries_match({CONF_HOST: host, CONF_PORT: port})
try:
async with asyncio.timeout(CONNECTION_TIMEOUT):
data = APCUPSdData(await aioapcaccess.request_status(host, port))
except (OSError, asyncio.IncompleteReadError, TimeoutError):
errors = {"base": "cannot_connect"}
return self.async_show_form(
step_id="reconfigure", data_schema=_SCHEMA, errors=errors
)
await self.async_set_unique_id(data.serial_no)
self._abort_if_unique_id_mismatch(reason="wrong_apcupsd_daemon")
return self.async_update_reload_and_abort(
self._get_reconfigure_entry(),
data_updates=user_input,
)

View File

@@ -85,11 +85,16 @@ class APCUPSdCoordinator(DataUpdateCoordinator[APCUPSdData]):
self._host = host
self._port = port
@property
def unique_device_id(self) -> str:
"""Return a unique ID of the device, which is the serial number (if available) or the config entry ID."""
return self.data.serial_no or self.config_entry.entry_id
@property
def device_info(self) -> DeviceInfo:
"""Return the DeviceInfo of this APC UPS, if serial number is available."""
return DeviceInfo(
identifiers={(DOMAIN, self.data.serial_no or self.config_entry.entry_id)},
identifiers={(DOMAIN, self.unique_device_id)},
model=self.data.model,
manufacturer="APC",
name=self.data.name or "APC UPS",
@@ -108,4 +113,7 @@ class APCUPSdCoordinator(DataUpdateCoordinator[APCUPSdData]):
data = await aioapcaccess.request_status(self._host, self._port)
return APCUPSdData(data)
except (OSError, asyncio.IncompleteReadError) as error:
raise UpdateFailed(error) from error
raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="cannot_connect",
) from error

View File

@@ -458,11 +458,8 @@ class APCUPSdSensor(CoordinatorEntity[APCUPSdCoordinator], SensorEntity):
"""Initialize the sensor."""
super().__init__(coordinator=coordinator, context=description.key.upper())
# Set up unique id and device info if serial number is available.
if (serial_no := coordinator.data.serial_no) is not None:
self._attr_unique_id = f"{serial_no}_{description.key}"
self.entity_description = description
self._attr_unique_id = f"{coordinator.unique_device_id}_{description.key}"
self._attr_device_info = coordinator.device_info
# Initial update of attributes.

View File

@@ -1,7 +1,9 @@
{
"config": {
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]"
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"wrong_apcupsd_daemon": "The reconfigured APC UPS Daemon is not the same as the one already configured.",
"reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]"
},
"error": {
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]"
@@ -93,7 +95,7 @@
"name": "Internal temperature"
},
"last_self_test": {
"name": "Last self test"
"name": "Last self-test"
},
"last_transfer": {
"name": "Last transfer"
@@ -177,7 +179,7 @@
"name": "Restore requirement"
},
"self_test_result": {
"name": "Self test result"
"name": "Self-test result"
},
"sensitivity": {
"name": "Sensitivity"
@@ -195,7 +197,7 @@
"name": "Status"
},
"self_test_interval": {
"name": "Self test interval"
"name": "Self-test interval"
},
"time_left": {
"name": "Time left"
@@ -219,5 +221,10 @@
"name": "Transfer to battery"
}
}
},
"exceptions": {
"cannot_connect": {
"message": "Cannot connect to APC UPS Daemon."
}
}
}

View File

@@ -120,6 +120,7 @@ class AppleTvMediaPlayer(
"""Initialize the Apple TV media player."""
super().__init__(name, identifier, manager)
self._playing: Playing | None = None
self._playing_last_updated: datetime | None = None
self._app_list: dict[str, str] = {}
@callback
@@ -209,6 +210,7 @@ class AppleTvMediaPlayer(
This is a callback function from pyatv.interface.PushListener.
"""
self._playing = playstatus
self._playing_last_updated = dt_util.utcnow()
self.async_write_ha_state()
@callback
@@ -316,7 +318,7 @@ class AppleTvMediaPlayer(
def media_position_updated_at(self) -> datetime | None:
"""Last valid time of media position."""
if self.state in {MediaPlayerState.PLAYING, MediaPlayerState.PAUSED}:
return dt_util.utcnow()
return self._playing_last_updated
return None
async def async_play_media(

View File

@@ -7,5 +7,5 @@
"integration_type": "device",
"iot_class": "local_push",
"loggers": ["pyaprilaire"],
"requirements": ["pyaprilaire==0.8.1"]
"requirements": ["pyaprilaire==0.9.0"]
}

View File

@@ -43,6 +43,7 @@ class ApSystemsDataCoordinator(DataUpdateCoordinator[ApSystemsSensorData]):
config_entry: ApSystemsConfigEntry
device_version: str
battery_system: bool
def __init__(
self,
@@ -68,6 +69,7 @@ class ApSystemsDataCoordinator(DataUpdateCoordinator[ApSystemsSensorData]):
self.api.max_power = device_info.maxPower
self.api.min_power = device_info.minPower
self.device_version = device_info.devVer
self.battery_system = device_info.isBatterySystem
async def _async_update_data(self) -> ApSystemsSensorData:
try:

View File

@@ -6,5 +6,6 @@
"documentation": "https://www.home-assistant.io/integrations/apsystems",
"integration_type": "device",
"iot_class": "local_polling",
"requirements": ["apsystems-ez1==2.4.0"]
"loggers": ["APsystemsEZ1"],
"requirements": ["apsystems-ez1==2.6.0"]
}

View File

@@ -21,7 +21,7 @@
"entity": {
"binary_sensor": {
"off_grid_status": {
"name": "Off grid status"
"name": "Off-grid status"
},
"dc_1_short_circuit_error_status": {
"name": "DC 1 short circuit error status"

View File

@@ -36,6 +36,8 @@ class ApSystemsInverterSwitch(ApSystemsEntity, SwitchEntity):
super().__init__(data)
self._api = data.coordinator.api
self._attr_unique_id = f"{data.device_id}_inverter_status"
if data.coordinator.battery_system:
self._attr_available = False
async def async_update(self) -> None:
"""Update switch status and availability."""

View File

@@ -36,9 +36,9 @@
"wi_fi_strength": {
"name": "Wi-Fi strength",
"state": {
"low": "Low",
"medium": "Medium",
"high": "High"
"low": "[%key:common::state::low%]",
"medium": "[%key:common::state::medium%]",
"high": "[%key:common::state::high%]"
}
}
}

View File

@@ -26,7 +26,7 @@
"sensor": {
"threshold": {
"state": {
"error": "Error",
"error": "[%key:common::state::error%]",
"green": "Green",
"yellow": "Yellow",
"red": "Red"

View File

@@ -20,9 +20,6 @@ import hass_nabucasa
import voluptuous as vol
from homeassistant.components import conversation, stt, tts, wake_word, websocket_api
from homeassistant.components.tts import (
generate_media_source_id as tts_generate_media_source_id,
)
from homeassistant.const import ATTR_SUPPORTED_FEATURES, MATCH_ALL
from homeassistant.core import Context, HomeAssistant, callback
from homeassistant.exceptions import HomeAssistantError
@@ -92,6 +89,8 @@ KEY_ASSIST_PIPELINE: HassKey[PipelineData] = HassKey(DOMAIN)
KEY_PIPELINE_CONVERSATION_DATA: HassKey[dict[str, PipelineConversationData]] = HassKey(
"pipeline_conversation_data"
)
# Number of response parts to handle before streaming the response
STREAM_RESPONSE_CHARS = 60
def validate_language(data: dict[str, Any]) -> Any:
@@ -555,7 +554,7 @@ class PipelineRun:
event_callback: PipelineEventCallback
language: str = None # type: ignore[assignment]
runner_data: Any | None = None
intent_agent: str | None = None
intent_agent: conversation.AgentInfo | None = None
tts_audio_output: str | dict[str, Any] | None = None
wake_word_settings: WakeWordSettings | None = None
audio_settings: AudioSettings = field(default_factory=AudioSettings)
@@ -591,6 +590,9 @@ class PipelineRun:
_intent_agent_only = False
"""If request should only be handled by agent, ignoring sentence triggers and local processing."""
_streamed_response_text = False
"""If the conversation agent streamed response text to TTS result."""
def __post_init__(self) -> None:
"""Set language for pipeline."""
self.language = self.pipeline.language or self.hass.config.language
@@ -652,6 +654,11 @@ class PipelineRun:
"token": self.tts_stream.token,
"url": self.tts_stream.url,
"mime_type": self.tts_stream.content_type,
"stream_response": (
self.tts_stream.supports_streaming_input
and self.intent_agent
and self.intent_agent.supports_streaming
),
}
self.process_event(PipelineEvent(PipelineEventType.RUN_START, data))
@@ -899,12 +906,12 @@ class PipelineRun:
) -> str:
"""Run speech-to-text portion of pipeline. Returns the spoken text."""
# Create a background task to prepare the conversation agent
if self.end_stage >= PipelineStage.INTENT:
if self.end_stage >= PipelineStage.INTENT and self.intent_agent:
self.hass.async_create_background_task(
conversation.async_prepare_agent(
self.hass, self.intent_agent, self.language
self.hass, self.intent_agent.id, self.language
),
f"prepare conversation agent {self.intent_agent}",
f"prepare conversation agent {self.intent_agent.id}",
)
if isinstance(self.stt_provider, stt.Provider):
@@ -1045,7 +1052,7 @@ class PipelineRun:
message=f"Intent recognition engine {engine} is not found",
)
self.intent_agent = agent_info.id
self.intent_agent = agent_info
async def recognize_intent(
self,
@@ -1078,7 +1085,7 @@ class PipelineRun:
PipelineEvent(
PipelineEventType.INTENT_START,
{
"engine": self.intent_agent,
"engine": self.intent_agent.id,
"language": input_language,
"intent_input": intent_input,
"conversation_id": conversation_id,
@@ -1095,11 +1102,11 @@ class PipelineRun:
conversation_id=conversation_id,
device_id=device_id,
language=input_language,
agent_id=self.intent_agent,
agent_id=self.intent_agent.id,
extra_system_prompt=conversation_extra_system_prompt,
)
agent_id = self.intent_agent
agent_id = self.intent_agent.id
processed_locally = agent_id == conversation.HOME_ASSISTANT_AGENT
intent_response: intent.IntentResponse | None = None
if not processed_locally and not self._intent_agent_only:
@@ -1121,7 +1128,7 @@ class PipelineRun:
# If the LLM has API access, we filter out some sentences that are
# interfering with LLM operation.
if (
intent_agent_state := self.hass.states.get(self.intent_agent)
intent_agent_state := self.hass.states.get(self.intent_agent.id)
) and intent_agent_state.attributes.get(
ATTR_SUPPORTED_FEATURES, 0
) & conversation.ConversationEntityFeature.CONTROL:
@@ -1143,6 +1150,13 @@ class PipelineRun:
agent_id = conversation.HOME_ASSISTANT_AGENT
processed_locally = True
if self.tts_stream and self.tts_stream.supports_streaming_input:
tts_input_stream: asyncio.Queue[str | None] | None = asyncio.Queue()
else:
tts_input_stream = None
chat_log_role = None
delta_character_count = 0
@callback
def chat_log_delta_listener(
chat_log: conversation.ChatLog, delta: dict
@@ -1156,6 +1170,61 @@ class PipelineRun:
},
)
)
if tts_input_stream is None:
return
nonlocal chat_log_role
if role := delta.get("role"):
chat_log_role = role
# We are only interested in assistant deltas
if chat_log_role != "assistant":
return
if content := delta.get("content"):
tts_input_stream.put_nowait(content)
if self._streamed_response_text:
return
nonlocal delta_character_count
# Streamed responses are not cached. That's why we only start streaming text after
# we have received enough characters that indicates it will be a long response
# or if we have received text, and then a tool call.
# Tool call after we already received text
start_streaming = delta_character_count > 0 and delta.get("tool_calls")
# Count characters in the content and test if we exceed streaming threshold
if not start_streaming and content:
delta_character_count += len(content)
start_streaming = delta_character_count > STREAM_RESPONSE_CHARS
if not start_streaming:
return
self._streamed_response_text = True
async def tts_input_stream_generator() -> AsyncGenerator[str]:
"""Yield TTS input stream."""
while (tts_input := await tts_input_stream.get()) is not None:
yield tts_input
# Concatenate all existing queue items
parts = []
while not tts_input_stream.empty():
parts.append(tts_input_stream.get_nowait())
tts_input_stream.put_nowait(
"".join(
# At this point parts is only strings, None indicates end of queue
cast(list[str], parts)
)
)
assert self.tts_stream is not None
self.tts_stream.async_set_message_stream(tts_input_stream_generator())
with (
chat_session.async_get_chat_session(
@@ -1199,6 +1268,8 @@ class PipelineRun:
speech = conversation_result.response.speech.get("plain", {}).get(
"speech", ""
)
if tts_input_stream and self._streamed_response_text:
tts_input_stream.put_nowait(None)
except Exception as src_error:
_LOGGER.exception("Unexpected error during intent recognition")
@@ -1276,26 +1347,11 @@ class PipelineRun:
)
)
try:
# Synthesize audio and get URL
tts_media_id = tts_generate_media_source_id(
self.hass,
tts_input,
engine=self.tts_stream.engine,
language=self.tts_stream.language,
options=self.tts_stream.options,
)
except Exception as src_error:
_LOGGER.exception("Unexpected error during text-to-speech")
raise TextToSpeechError(
code="tts-failed",
message="Unexpected error during text-to-speech",
) from src_error
self.tts_stream.async_set_message(tts_input)
if not self._streamed_response_text:
self.tts_stream.async_set_message(tts_input)
tts_output = {
"media_id": tts_media_id,
"media_id": self.tts_stream.media_source_id,
"token": self.tts_stream.token,
"url": self.tts_stream.url,
"mime_type": self.tts_stream.content_type,

View File

@@ -2,10 +2,9 @@
from __future__ import annotations
from collections.abc import Callable
from collections.abc import Callable, Mapping
from datetime import datetime, timedelta
import logging
from types import MappingProxyType
from typing import Any
from pyasuswrt import AsusWrtError
@@ -363,7 +362,7 @@ class AsusWrtRouter:
"""Add a function to call when router is closed."""
self._on_close.append(func)
def update_options(self, new_options: MappingProxyType[str, Any]) -> bool:
def update_options(self, new_options: Mapping[str, Any]) -> bool:
"""Update router options."""
req_reload = False
for name, new_opt in new_options.items():

View File

@@ -28,5 +28,5 @@
"documentation": "https://www.home-assistant.io/integrations/august",
"iot_class": "cloud_push",
"loggers": ["pubnub", "yalexs"],
"requirements": ["yalexs==8.10.0", "yalexs-ble==2.5.7"]
"requirements": ["yalexs==8.10.0", "yalexs-ble==2.6.0"]
}

View File

@@ -18,7 +18,7 @@
},
"step": {
"validation": {
"title": "Two factor authentication",
"title": "Two-factor authentication",
"data": {
"verification_code": "Verification code"
},

View File

@@ -4,8 +4,8 @@
"user": {
"description": "The inverter must be connected via an RS485 adaptor, please select serial port and the inverter's address as configured on the LCD panel",
"data": {
"port": "RS485 or USB-RS485 Adaptor Port",
"address": "Inverter Address"
"port": "RS485 or USB-RS485 adaptor port",
"address": "Inverter address"
}
}
},
@@ -16,7 +16,7 @@
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"no_serial_ports": "No com ports found. Need a valid RS485 device to communicate."
"no_serial_ports": "No com ports found. The integration needs a valid RS485 device to communicate."
}
},
"entity": {

View File

@@ -5,7 +5,7 @@
"step": {
"init": {
"title": "Set up two-factor authentication using TOTP",
"description": "To activate two factor authentication using time-based one-time passwords, scan the QR code with your authentication app. If you don't have one, we recommend either [Google Authenticator](https://support.google.com/accounts/answer/1066447) or [Authy](https://authy.com/).\n\n{qr_code}\n\nAfter scanning the code, enter the six digit code from your app to verify the setup. If you have problems scanning the QR code, do a manual setup with code **`{code}`**."
"description": "To activate two-factor authentication using time-based one-time passwords, scan the QR code with your authentication app. If you don't have one, we recommend either [Google Authenticator](https://support.google.com/accounts/answer/1066447) or [Authy](https://authy.com/).\n\n{qr_code}\n\nAfter scanning the code, enter the six-digit code from your app to verify the setup. If you have problems scanning the QR code, do a manual setup with code **`{code}`**."
}
},
"error": {
@@ -13,7 +13,7 @@
}
},
"notify": {
"title": "Notify One-Time Password",
"title": "Notify one-time password",
"step": {
"init": {
"title": "Set up one-time password delivered by notify component",

View File

@@ -18,6 +18,7 @@ from homeassistant.const import (
ATTR_ENTITY_ID,
ATTR_MODE,
ATTR_NAME,
CONF_ACTIONS,
CONF_ALIAS,
CONF_CONDITIONS,
CONF_DEVICE_ID,
@@ -27,6 +28,7 @@ from homeassistant.const import (
CONF_MODE,
CONF_PATH,
CONF_PLATFORM,
CONF_TRIGGERS,
CONF_VARIABLES,
CONF_ZONE,
EVENT_HOMEASSISTANT_STARTED,
@@ -86,11 +88,9 @@ from homeassistant.util.hass_dict import HassKey
from .config import AutomationConfig, ValidationStatus
from .const import (
CONF_ACTIONS,
CONF_INITIAL_STATE,
CONF_TRACE,
CONF_TRIGGER_VARIABLES,
CONF_TRIGGERS,
DEFAULT_INITIAL_STATE,
DOMAIN,
LOGGER,

View File

@@ -14,11 +14,15 @@ from homeassistant.components import blueprint
from homeassistant.components.trace import TRACE_CONFIG_SCHEMA
from homeassistant.config import config_per_platform, config_without_domain
from homeassistant.const import (
CONF_ACTION,
CONF_ACTIONS,
CONF_ALIAS,
CONF_CONDITION,
CONF_CONDITIONS,
CONF_DESCRIPTION,
CONF_ID,
CONF_TRIGGER,
CONF_TRIGGERS,
CONF_VARIABLES,
)
from homeassistant.core import HomeAssistant
@@ -30,14 +34,10 @@ from homeassistant.helpers.typing import ConfigType
from homeassistant.util.yaml.input import UndefinedSubstitution
from .const import (
CONF_ACTION,
CONF_ACTIONS,
CONF_HIDE_ENTITY,
CONF_INITIAL_STATE,
CONF_TRACE,
CONF_TRIGGER,
CONF_TRIGGER_VARIABLES,
CONF_TRIGGERS,
DOMAIN,
LOGGER,
)
@@ -58,34 +58,9 @@ _MINIMAL_PLATFORM_SCHEMA = vol.Schema(
def _backward_compat_schema(value: Any | None) -> Any:
"""Backward compatibility for automations."""
if not isinstance(value, dict):
return value
# `trigger` has been renamed to `triggers`
if CONF_TRIGGER in value:
if CONF_TRIGGERS in value:
raise vol.Invalid(
"Cannot specify both 'trigger' and 'triggers'. Please use 'triggers' only."
)
value[CONF_TRIGGERS] = value.pop(CONF_TRIGGER)
# `condition` has been renamed to `conditions`
if CONF_CONDITION in value:
if CONF_CONDITIONS in value:
raise vol.Invalid(
"Cannot specify both 'condition' and 'conditions'. Please use 'conditions' only."
)
value[CONF_CONDITIONS] = value.pop(CONF_CONDITION)
# `action` has been renamed to `actions`
if CONF_ACTION in value:
if CONF_ACTIONS in value:
raise vol.Invalid(
"Cannot specify both 'action' and 'actions'. Please use 'actions' only."
)
value[CONF_ACTIONS] = value.pop(CONF_ACTION)
return value
value = cv.renamed(CONF_TRIGGER, CONF_TRIGGERS)(value)
value = cv.renamed(CONF_ACTION, CONF_ACTIONS)(value)
return cv.renamed(CONF_CONDITION, CONF_CONDITIONS)(value)
PLATFORM_SCHEMA = vol.All(

View File

@@ -2,10 +2,6 @@
import logging
CONF_ACTION = "action"
CONF_ACTIONS = "actions"
CONF_TRIGGER = "trigger"
CONF_TRIGGERS = "triggers"
CONF_TRIGGER_VARIABLES = "trigger_variables"
DOMAIN = "automation"

View File

@@ -6,5 +6,5 @@
"iot_class": "cloud_push",
"loggers": ["aiobotocore", "botocore"],
"quality_scale": "legacy",
"requirements": ["aiobotocore==2.13.1", "botocore==1.34.131"]
"requirements": ["aiobotocore==2.21.1", "botocore==1.37.1"]
}

View File

@@ -0,0 +1,82 @@
"""The AWS S3 integration."""
from __future__ import annotations
import logging
from typing import cast
from aiobotocore.client import AioBaseClient as S3Client
from aiobotocore.session import AioSession
from botocore.exceptions import ClientError, ConnectionError, ParamValidationError
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryError, ConfigEntryNotReady
from .const import (
CONF_ACCESS_KEY_ID,
CONF_BUCKET,
CONF_ENDPOINT_URL,
CONF_SECRET_ACCESS_KEY,
DATA_BACKUP_AGENT_LISTENERS,
DOMAIN,
)
type S3ConfigEntry = ConfigEntry[S3Client]
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(hass: HomeAssistant, entry: S3ConfigEntry) -> bool:
"""Set up S3 from a config entry."""
data = cast(dict, entry.data)
try:
session = AioSession()
# pylint: disable-next=unnecessary-dunder-call
client = await session.create_client(
"s3",
endpoint_url=data.get(CONF_ENDPOINT_URL),
aws_secret_access_key=data[CONF_SECRET_ACCESS_KEY],
aws_access_key_id=data[CONF_ACCESS_KEY_ID],
).__aenter__()
await client.head_bucket(Bucket=data[CONF_BUCKET])
except ClientError as err:
raise ConfigEntryError(
translation_domain=DOMAIN,
translation_key="invalid_credentials",
) from err
except ParamValidationError as err:
if "Invalid bucket name" in str(err):
raise ConfigEntryError(
translation_domain=DOMAIN,
translation_key="invalid_bucket_name",
) from err
except ValueError as err:
raise ConfigEntryError(
translation_domain=DOMAIN,
translation_key="invalid_endpoint_url",
) from err
except ConnectionError as err:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="cannot_connect",
) from err
entry.runtime_data = client
def notify_backup_listeners() -> None:
for listener in hass.data.get(DATA_BACKUP_AGENT_LISTENERS, []):
listener()
entry.async_on_unload(entry.async_on_state_change(notify_backup_listeners))
return True
async def async_unload_entry(hass: HomeAssistant, entry: S3ConfigEntry) -> bool:
"""Unload a config entry."""
client = entry.runtime_data
await client.__aexit__(None, None, None)
return True

View File

@@ -0,0 +1,330 @@
"""Backup platform for the AWS S3 integration."""
from collections.abc import AsyncIterator, Callable, Coroutine
import functools
import json
import logging
from time import time
from typing import Any
from botocore.exceptions import BotoCoreError
from homeassistant.components.backup import (
AgentBackup,
BackupAgent,
BackupAgentError,
BackupNotFound,
suggested_filename,
)
from homeassistant.core import HomeAssistant, callback
from . import S3ConfigEntry
from .const import CONF_BUCKET, DATA_BACKUP_AGENT_LISTENERS, DOMAIN
_LOGGER = logging.getLogger(__name__)
CACHE_TTL = 300
# S3 part size requirements: 5 MiB to 5 GiB per part
# https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
# We set the threshold to 20 MiB to avoid too many parts.
# Note that each part is allocated in the memory.
MULTIPART_MIN_PART_SIZE_BYTES = 20 * 2**20
def handle_boto_errors[T](
func: Callable[..., Coroutine[Any, Any, T]],
) -> Callable[..., Coroutine[Any, Any, T]]:
"""Handle BotoCoreError exceptions by converting them to BackupAgentError."""
@functools.wraps(func)
async def wrapper(*args: Any, **kwargs: Any) -> T:
"""Catch BotoCoreError and raise BackupAgentError."""
try:
return await func(*args, **kwargs)
except BotoCoreError as err:
error_msg = f"Failed during {func.__name__}"
raise BackupAgentError(error_msg) from err
return wrapper
async def async_get_backup_agents(
hass: HomeAssistant,
) -> list[BackupAgent]:
"""Return a list of backup agents."""
entries: list[S3ConfigEntry] = hass.config_entries.async_loaded_entries(DOMAIN)
return [S3BackupAgent(hass, entry) for entry in entries]
@callback
def async_register_backup_agents_listener(
hass: HomeAssistant,
*,
listener: Callable[[], None],
**kwargs: Any,
) -> Callable[[], None]:
"""Register a listener to be called when agents are added or removed.
:return: A function to unregister the listener.
"""
hass.data.setdefault(DATA_BACKUP_AGENT_LISTENERS, []).append(listener)
@callback
def remove_listener() -> None:
"""Remove the listener."""
hass.data[DATA_BACKUP_AGENT_LISTENERS].remove(listener)
if not hass.data[DATA_BACKUP_AGENT_LISTENERS]:
del hass.data[DATA_BACKUP_AGENT_LISTENERS]
return remove_listener
def suggested_filenames(backup: AgentBackup) -> tuple[str, str]:
"""Return the suggested filenames for the backup and metadata files."""
base_name = suggested_filename(backup).rsplit(".", 1)[0]
return f"{base_name}.tar", f"{base_name}.metadata.json"
class S3BackupAgent(BackupAgent):
"""Backup agent for the S3 integration."""
domain = DOMAIN
def __init__(self, hass: HomeAssistant, entry: S3ConfigEntry) -> None:
"""Initialize the S3 agent."""
super().__init__()
self._client = entry.runtime_data
self._bucket: str = entry.data[CONF_BUCKET]
self.name = entry.title
self.unique_id = entry.entry_id
self._backup_cache: dict[str, AgentBackup] = {}
self._cache_expiration = time()
@handle_boto_errors
async def async_download_backup(
self,
backup_id: str,
**kwargs: Any,
) -> AsyncIterator[bytes]:
"""Download a backup file.
:param backup_id: The ID of the backup that was returned in async_list_backups.
:return: An async iterator that yields bytes.
"""
backup = await self._find_backup_by_id(backup_id)
tar_filename, _ = suggested_filenames(backup)
response = await self._client.get_object(Bucket=self._bucket, Key=tar_filename)
return response["Body"].iter_chunks()
async def async_upload_backup(
self,
*,
open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]],
backup: AgentBackup,
**kwargs: Any,
) -> None:
"""Upload a backup.
:param open_stream: A function returning an async iterator that yields bytes.
:param backup: Metadata about the backup that should be uploaded.
"""
tar_filename, metadata_filename = suggested_filenames(backup)
try:
if backup.size < MULTIPART_MIN_PART_SIZE_BYTES:
await self._upload_simple(tar_filename, open_stream)
else:
await self._upload_multipart(tar_filename, open_stream)
# Upload the metadata file
metadata_content = json.dumps(backup.as_dict())
await self._client.put_object(
Bucket=self._bucket,
Key=metadata_filename,
Body=metadata_content,
)
except BotoCoreError as err:
raise BackupAgentError("Failed to upload backup") from err
else:
# Reset cache after successful upload
self._cache_expiration = time()
async def _upload_simple(
self,
tar_filename: str,
open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]],
) -> None:
"""Upload a small file using simple upload.
:param tar_filename: The target filename for the backup.
:param open_stream: A function returning an async iterator that yields bytes.
"""
_LOGGER.debug("Starting simple upload for %s", tar_filename)
stream = await open_stream()
file_data = bytearray()
async for chunk in stream:
file_data.extend(chunk)
await self._client.put_object(
Bucket=self._bucket,
Key=tar_filename,
Body=bytes(file_data),
)
async def _upload_multipart(
self,
tar_filename: str,
open_stream: Callable[[], Coroutine[Any, Any, AsyncIterator[bytes]]],
):
"""Upload a large file using multipart upload.
:param tar_filename: The target filename for the backup.
:param open_stream: A function returning an async iterator that yields bytes.
"""
_LOGGER.debug("Starting multipart upload for %s", tar_filename)
multipart_upload = await self._client.create_multipart_upload(
Bucket=self._bucket,
Key=tar_filename,
)
upload_id = multipart_upload["UploadId"]
try:
parts = []
part_number = 1
buffer_size = 0 # bytes
buffer: list[bytes] = []
stream = await open_stream()
async for chunk in stream:
buffer_size += len(chunk)
buffer.append(chunk)
# If buffer size meets minimum part size, upload it as a part
if buffer_size >= MULTIPART_MIN_PART_SIZE_BYTES:
_LOGGER.debug(
"Uploading part number %d, size %d", part_number, buffer_size
)
part = await self._client.upload_part(
Bucket=self._bucket,
Key=tar_filename,
PartNumber=part_number,
UploadId=upload_id,
Body=b"".join(buffer),
)
parts.append({"PartNumber": part_number, "ETag": part["ETag"]})
part_number += 1
buffer_size = 0
buffer = []
# Upload the final buffer as the last part (no minimum size requirement)
if buffer:
_LOGGER.debug(
"Uploading final part number %d, size %d", part_number, buffer_size
)
part = await self._client.upload_part(
Bucket=self._bucket,
Key=tar_filename,
PartNumber=part_number,
UploadId=upload_id,
Body=b"".join(buffer),
)
parts.append({"PartNumber": part_number, "ETag": part["ETag"]})
await self._client.complete_multipart_upload(
Bucket=self._bucket,
Key=tar_filename,
UploadId=upload_id,
MultipartUpload={"Parts": parts},
)
except BotoCoreError:
try:
await self._client.abort_multipart_upload(
Bucket=self._bucket,
Key=tar_filename,
UploadId=upload_id,
)
except BotoCoreError:
_LOGGER.exception("Failed to abort multipart upload")
raise
@handle_boto_errors
async def async_delete_backup(
self,
backup_id: str,
**kwargs: Any,
) -> None:
"""Delete a backup file.
:param backup_id: The ID of the backup that was returned in async_list_backups.
"""
backup = await self._find_backup_by_id(backup_id)
tar_filename, metadata_filename = suggested_filenames(backup)
# Delete both the backup file and its metadata file
await self._client.delete_object(Bucket=self._bucket, Key=tar_filename)
await self._client.delete_object(Bucket=self._bucket, Key=metadata_filename)
# Reset cache after successful deletion
self._cache_expiration = time()
@handle_boto_errors
async def async_list_backups(self, **kwargs: Any) -> list[AgentBackup]:
"""List backups."""
backups = await self._list_backups()
return list(backups.values())
@handle_boto_errors
async def async_get_backup(
self,
backup_id: str,
**kwargs: Any,
) -> AgentBackup:
"""Return a backup."""
return await self._find_backup_by_id(backup_id)
async def _find_backup_by_id(self, backup_id: str) -> AgentBackup:
"""Find a backup by its backup ID."""
backups = await self._list_backups()
if backup := backups.get(backup_id):
return backup
raise BackupNotFound(f"Backup {backup_id} not found")
async def _list_backups(self) -> dict[str, AgentBackup]:
"""List backups, using a cache if possible."""
if time() <= self._cache_expiration:
return self._backup_cache
backups = {}
response = await self._client.list_objects_v2(Bucket=self._bucket)
# Filter for metadata files only
metadata_files = [
obj
for obj in response.get("Contents", [])
if obj["Key"].endswith(".metadata.json")
]
for metadata_file in metadata_files:
try:
# Download and parse metadata file
metadata_response = await self._client.get_object(
Bucket=self._bucket, Key=metadata_file["Key"]
)
metadata_content = await metadata_response["Body"].read()
metadata_json = json.loads(metadata_content)
except (BotoCoreError, json.JSONDecodeError) as err:
_LOGGER.warning(
"Failed to process metadata file %s: %s",
metadata_file["Key"],
err,
)
continue
backup = AgentBackup.from_dict(metadata_json)
backups[backup.backup_id] = backup
self._backup_cache = backups
self._cache_expiration = time() + CACHE_TTL
return self._backup_cache

View File

@@ -0,0 +1,101 @@
"""Config flow for the AWS S3 integration."""
from __future__ import annotations
from typing import Any
from urllib.parse import urlparse
from aiobotocore.session import AioSession
from botocore.exceptions import ClientError, ConnectionError, ParamValidationError
import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.selector import (
TextSelector,
TextSelectorConfig,
TextSelectorType,
)
from .const import (
AWS_DOMAIN,
CONF_ACCESS_KEY_ID,
CONF_BUCKET,
CONF_ENDPOINT_URL,
CONF_SECRET_ACCESS_KEY,
DEFAULT_ENDPOINT_URL,
DESCRIPTION_AWS_S3_DOCS_URL,
DESCRIPTION_BOTO3_DOCS_URL,
DOMAIN,
)
STEP_USER_DATA_SCHEMA = vol.Schema(
{
vol.Required(CONF_ACCESS_KEY_ID): cv.string,
vol.Required(CONF_SECRET_ACCESS_KEY): TextSelector(
config=TextSelectorConfig(type=TextSelectorType.PASSWORD)
),
vol.Required(CONF_BUCKET): cv.string,
vol.Required(CONF_ENDPOINT_URL, default=DEFAULT_ENDPOINT_URL): TextSelector(
config=TextSelectorConfig(type=TextSelectorType.URL)
),
}
)
class S3ConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow."""
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle a flow initiated by the user."""
errors: dict[str, str] = {}
if user_input is not None:
self._async_abort_entries_match(
{
CONF_BUCKET: user_input[CONF_BUCKET],
CONF_ENDPOINT_URL: user_input[CONF_ENDPOINT_URL],
}
)
if not urlparse(user_input[CONF_ENDPOINT_URL]).hostname.endswith(
AWS_DOMAIN
):
errors[CONF_ENDPOINT_URL] = "invalid_endpoint_url"
else:
try:
session = AioSession()
async with session.create_client(
"s3",
endpoint_url=user_input.get(CONF_ENDPOINT_URL),
aws_secret_access_key=user_input[CONF_SECRET_ACCESS_KEY],
aws_access_key_id=user_input[CONF_ACCESS_KEY_ID],
) as client:
await client.head_bucket(Bucket=user_input[CONF_BUCKET])
except ClientError:
errors["base"] = "invalid_credentials"
except ParamValidationError as err:
if "Invalid bucket name" in str(err):
errors[CONF_BUCKET] = "invalid_bucket_name"
except ValueError:
errors[CONF_ENDPOINT_URL] = "invalid_endpoint_url"
except ConnectionError:
errors[CONF_ENDPOINT_URL] = "cannot_connect"
else:
return self.async_create_entry(
title=user_input[CONF_BUCKET], data=user_input
)
return self.async_show_form(
step_id="user",
data_schema=self.add_suggested_values_to_schema(
STEP_USER_DATA_SCHEMA, user_input
),
errors=errors,
description_placeholders={
"aws_s3_docs_url": DESCRIPTION_AWS_S3_DOCS_URL,
"boto3_docs_url": DESCRIPTION_BOTO3_DOCS_URL,
},
)

View File

@@ -0,0 +1,23 @@
"""Constants for the AWS S3 integration."""
from collections.abc import Callable
from typing import Final
from homeassistant.util.hass_dict import HassKey
DOMAIN: Final = "aws_s3"
CONF_ACCESS_KEY_ID = "access_key_id"
CONF_SECRET_ACCESS_KEY = "secret_access_key"
CONF_ENDPOINT_URL = "endpoint_url"
CONF_BUCKET = "bucket"
AWS_DOMAIN = "amazonaws.com"
DEFAULT_ENDPOINT_URL = f"https://s3.eu-central-1.{AWS_DOMAIN}/"
DATA_BACKUP_AGENT_LISTENERS: HassKey[list[Callable[[], None]]] = HassKey(
f"{DOMAIN}.backup_agent_listeners"
)
DESCRIPTION_AWS_S3_DOCS_URL = "https://docs.aws.amazon.com/general/latest/gr/s3.html"
DESCRIPTION_BOTO3_DOCS_URL = "https://boto3.amazonaws.com/v1/documentation/api/latest/reference/core/session.html"

View File

@@ -0,0 +1,12 @@
{
"domain": "aws_s3",
"name": "AWS S3",
"codeowners": ["@tomasbedrich"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/aws_s3",
"integration_type": "service",
"iot_class": "cloud_push",
"loggers": ["aiobotocore"],
"quality_scale": "bronze",
"requirements": ["aiobotocore==2.21.1"]
}

View File

@@ -0,0 +1,112 @@
rules:
# Bronze
action-setup:
status: exempt
comment: Integration does not register custom actions.
appropriate-polling:
status: exempt
comment: This integration does not poll.
brands: done
common-modules: done
config-flow-test-coverage: done
config-flow: done
dependency-transparency: done
docs-actions:
status: exempt
comment: This integration does not have any custom actions.
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions: done
entity-event-setup:
status: exempt
comment: Entities of this integration does not explicitly subscribe to events.
entity-unique-id:
status: exempt
comment: This integration does not have entities.
has-entity-name:
status: exempt
comment: This integration does not have entities.
runtime-data: done
test-before-configure: done
test-before-setup: done
unique-config-entry: done
# Silver
action-exceptions:
status: exempt
comment: Integration does not register custom actions.
config-entry-unloading: done
docs-configuration-parameters:
status: exempt
comment: This integration does not have an options flow.
docs-installation-parameters: done
entity-unavailable:
status: exempt
comment: This integration does not have entities.
integration-owner: done
log-when-unavailable: todo
parallel-updates:
status: exempt
comment: This integration does not poll.
reauthentication-flow: todo
test-coverage: done
# Gold
devices:
status: exempt
comment: This integration does not have entities.
diagnostics: todo
discovery-update-info:
status: exempt
comment: S3 is a cloud service that is not discovered on the network.
discovery:
status: exempt
comment: S3 is a cloud service that is not discovered on the network.
docs-data-update:
status: exempt
comment: This integration does not poll.
docs-examples:
status: exempt
comment: The integration extends core functionality and does not require examples.
docs-known-limitations:
status: exempt
comment: No known limitations.
docs-supported-devices:
status: exempt
comment: This integration does not support physical devices.
docs-supported-functions: done
docs-troubleshooting:
status: exempt
comment: There are no more detailed troubleshooting instructions available than what is already included in strings.json.
docs-use-cases: done
dynamic-devices:
status: exempt
comment: This integration does not have devices.
entity-category:
status: exempt
comment: This integration does not have entities.
entity-device-class:
status: exempt
comment: This integration does not have entities.
entity-disabled-by-default:
status: exempt
comment: This integration does not have entities.
entity-translations:
status: exempt
comment: This integration does not have entities.
exception-translations: done
icon-translations:
status: exempt
comment: This integration does not use icons.
reconfiguration-flow: todo
repair-issues:
status: exempt
comment: There are no issues which can be repaired.
stale-devices:
status: exempt
comment: This integration does not have devices.
# Platinum
async-dependency: done
inject-websession: todo
strict-typing: todo

View File

@@ -0,0 +1,41 @@
{
"config": {
"step": {
"user": {
"data": {
"access_key_id": "Access key ID",
"secret_access_key": "Secret access key",
"bucket": "Bucket name",
"endpoint_url": "Endpoint URL"
},
"data_description": {
"access_key_id": "Access key ID to connect to AWS S3 API",
"secret_access_key": "Secret access key to connect to AWS S3 API",
"bucket": "Bucket must already exist and be writable by the provided credentials.",
"endpoint_url": "Endpoint URL provided to [Boto3 Session]({boto3_docs_url}). Region-specific [AWS S3 endpoints]({aws_s3_docs_url}) are available in their docs."
},
"title": "Add AWS S3 bucket"
}
},
"error": {
"cannot_connect": "[%key:component::aws_s3::exceptions::cannot_connect::message%]",
"invalid_bucket_name": "[%key:component::aws_s3::exceptions::invalid_bucket_name::message%]",
"invalid_credentials": "[%key:component::aws_s3::exceptions::invalid_credentials::message%]",
"invalid_endpoint_url": "Invalid endpoint URL. Please make sure it's a valid AWS S3 endpoint URL."
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]"
}
},
"exceptions": {
"cannot_connect": {
"message": "Cannot connect to endpoint"
},
"invalid_bucket_name": {
"message": "Invalid bucket name"
},
"invalid_credentials": {
"message": "Bucket cannot be accessed using provided combination of access key ID and secret access key."
}
}
}

View File

@@ -4,7 +4,6 @@ from __future__ import annotations
from collections.abc import Mapping
from ipaddress import ip_address
from types import MappingProxyType
from typing import Any
from urllib.parse import urlsplit
@@ -48,7 +47,7 @@ from .const import (
CONF_VIDEO_SOURCE,
DEFAULT_STREAM_PROFILE,
DEFAULT_VIDEO_SOURCE,
DOMAIN as AXIS_DOMAIN,
DOMAIN,
)
from .errors import AuthenticationRequired, CannotConnect
from .hub import AxisHub, get_axis_api
@@ -59,7 +58,7 @@ DEFAULT_PROTOCOL = "https"
PROTOCOL_CHOICES = ["https", "http"]
class AxisFlowHandler(ConfigFlow, domain=AXIS_DOMAIN):
class AxisFlowHandler(ConfigFlow, domain=DOMAIN):
"""Handle a Axis config flow."""
VERSION = 3
@@ -88,7 +87,7 @@ class AxisFlowHandler(ConfigFlow, domain=AXIS_DOMAIN):
if user_input is not None:
try:
api = await get_axis_api(self.hass, MappingProxyType(user_input))
api = await get_axis_api(self.hass, user_input)
except AuthenticationRequired:
errors["base"] = "invalid_auth"
@@ -147,7 +146,7 @@ class AxisFlowHandler(ConfigFlow, domain=AXIS_DOMAIN):
model = self.config[CONF_MODEL]
same_model = [
entry.data[CONF_NAME]
for entry in self.hass.config_entries.async_entries(AXIS_DOMAIN)
for entry in self.hass.config_entries.async_entries(DOMAIN)
if entry.source != SOURCE_IGNORE and entry.data[CONF_MODEL] == model
]

View File

@@ -14,7 +14,7 @@ from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from homeassistant.helpers.entity import Entity, EntityDescription
from .const import DOMAIN as AXIS_DOMAIN
from .const import DOMAIN
if TYPE_CHECKING:
from .hub import AxisHub
@@ -61,7 +61,7 @@ class AxisEntity(Entity):
self.hub = hub
self._attr_device_info = DeviceInfo(
identifiers={(AXIS_DOMAIN, hub.unique_id)},
identifiers={(DOMAIN, hub.unique_id)},
serial_number=hub.unique_id,
)

View File

@@ -1,7 +1,7 @@
"""Axis network device abstraction."""
from asyncio import timeout
from types import MappingProxyType
from collections.abc import Mapping
from typing import Any
import axis
@@ -23,7 +23,7 @@ from ..errors import AuthenticationRequired, CannotConnect
async def get_axis_api(
hass: HomeAssistant,
config: MappingProxyType[str, Any],
config: Mapping[str, Any],
) -> axis.AxisDevice:
"""Create a Axis device API."""
session = get_async_client(hass, verify_ssl=False)

View File

@@ -3,11 +3,10 @@
from __future__ import annotations
import asyncio
from collections.abc import Callable
from collections.abc import Callable, Mapping
from datetime import datetime
import json
import logging
from types import MappingProxyType
from typing import Any
from azure.eventhub import EventData, EventDataBatch
@@ -179,7 +178,7 @@ class AzureEventHub:
await self.async_send(None)
await self._queue.join()
def update_options(self, new_options: MappingProxyType[str, Any]) -> None:
def update_options(self, new_options: Mapping[str, Any]) -> None:
"""Update options."""
self._send_interval = new_options[CONF_SEND_INTERVAL]

View File

@@ -2,8 +2,8 @@
from aiohttp import ClientTimeout
from azure.core.exceptions import (
AzureError,
ClientAuthenticationError,
HttpResponseError,
ResourceNotFoundError,
)
from azure.core.pipeline.transport._aiohttp import (
@@ -39,11 +39,20 @@ async def async_setup_entry(
session = async_create_clientsession(
hass, timeout=ClientTimeout(connect=10, total=12 * 60 * 60)
)
container_client = ContainerClient(
account_url=f"https://{entry.data[CONF_ACCOUNT_NAME]}.blob.core.windows.net/",
container_name=entry.data[CONF_CONTAINER_NAME],
credential=entry.data[CONF_STORAGE_ACCOUNT_KEY],
transport=AioHttpTransport(session=session),
def create_container_client() -> ContainerClient:
"""Create a ContainerClient."""
return ContainerClient(
account_url=f"https://{entry.data[CONF_ACCOUNT_NAME]}.blob.core.windows.net/",
container_name=entry.data[CONF_CONTAINER_NAME],
credential=entry.data[CONF_STORAGE_ACCOUNT_KEY],
transport=AioHttpTransport(session=session),
)
# has a blocking call to open in cpython
container_client: ContainerClient = await hass.async_add_executor_job(
create_container_client
)
try:
@@ -61,7 +70,7 @@ async def async_setup_entry(
translation_key="invalid_auth",
translation_placeholders={CONF_ACCOUNT_NAME: entry.data[CONF_ACCOUNT_NAME]},
) from err
except HttpResponseError as err:
except AzureError as err:
raise ConfigEntryNotReady(
translation_domain=DOMAIN,
translation_key="cannot_connect",

View File

@@ -8,7 +8,7 @@ import json
import logging
from typing import Any, Concatenate
from azure.core.exceptions import HttpResponseError
from azure.core.exceptions import AzureError, HttpResponseError, ServiceRequestError
from azure.storage.blob import BlobProperties
from homeassistant.components.backup import (
@@ -80,6 +80,20 @@ def handle_backup_errors[_R, **P](
f"Error during backup operation in {func.__name__}:"
f" Status {err.status_code}, message: {err.message}"
) from err
except ServiceRequestError as err:
raise BackupAgentError(
f"Timeout during backup operation in {func.__name__}"
) from err
except AzureError as err:
_LOGGER.debug(
"Error during backup in %s: %s",
func.__name__,
err,
exc_info=True,
)
raise BackupAgentError(
f"Error during backup operation in {func.__name__}: {err}"
) from err
return wrapper

View File

@@ -27,9 +27,25 @@ _LOGGER = logging.getLogger(__name__)
class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for azure storage."""
def get_account_url(self, account_name: str) -> str:
"""Get the account URL."""
return f"https://{account_name}.blob.core.windows.net/"
async def get_container_client(
self, account_name: str, container_name: str, storage_account_key: str
) -> ContainerClient:
"""Get the container client.
ContainerClient has a blocking call to open in cpython
"""
session = async_get_clientsession(self.hass)
def create_container_client() -> ContainerClient:
return ContainerClient(
account_url=f"https://{account_name}.blob.core.windows.net/",
container_name=container_name,
credential=storage_account_key,
transport=AioHttpTransport(session=session),
)
return await self.hass.async_add_executor_job(create_container_client)
async def validate_config(
self, container_client: ContainerClient
@@ -58,11 +74,10 @@ class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
self._async_abort_entries_match(
{CONF_ACCOUNT_NAME: user_input[CONF_ACCOUNT_NAME]}
)
container_client = ContainerClient(
account_url=self.get_account_url(user_input[CONF_ACCOUNT_NAME]),
container_client = await self.get_container_client(
account_name=user_input[CONF_ACCOUNT_NAME],
container_name=user_input[CONF_CONTAINER_NAME],
credential=user_input[CONF_STORAGE_ACCOUNT_KEY],
transport=AioHttpTransport(session=async_get_clientsession(self.hass)),
storage_account_key=user_input[CONF_STORAGE_ACCOUNT_KEY],
)
errors = await self.validate_config(container_client)
@@ -99,12 +114,12 @@ class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
reauth_entry = self._get_reauth_entry()
if user_input is not None:
container_client = ContainerClient(
account_url=self.get_account_url(reauth_entry.data[CONF_ACCOUNT_NAME]),
container_client = await self.get_container_client(
account_name=reauth_entry.data[CONF_ACCOUNT_NAME],
container_name=reauth_entry.data[CONF_CONTAINER_NAME],
credential=user_input[CONF_STORAGE_ACCOUNT_KEY],
transport=AioHttpTransport(session=async_get_clientsession(self.hass)),
storage_account_key=user_input[CONF_STORAGE_ACCOUNT_KEY],
)
errors = await self.validate_config(container_client)
if not errors:
return self.async_update_reload_and_abort(
@@ -129,13 +144,10 @@ class AzureStorageConfigFlow(ConfigFlow, domain=DOMAIN):
reconfigure_entry = self._get_reconfigure_entry()
if user_input is not None:
container_client = ContainerClient(
account_url=self.get_account_url(
reconfigure_entry.data[CONF_ACCOUNT_NAME]
),
container_client = await self.get_container_client(
account_name=reconfigure_entry.data[CONF_ACCOUNT_NAME],
container_name=user_input[CONF_CONTAINER_NAME],
credential=user_input[CONF_STORAGE_ACCOUNT_KEY],
transport=AioHttpTransport(session=async_get_clientsession(self.hass)),
storage_account_key=user_input[CONF_STORAGE_ACCOUNT_KEY],
)
errors = await self.validate_config(container_client)
if not errors:

View File

@@ -23,6 +23,7 @@ from .const import DATA_MANAGER, DOMAIN
from .coordinator import BackupConfigEntry, BackupDataUpdateCoordinator
from .http import async_register_http_views
from .manager import (
AddonErrorData,
BackupManager,
BackupManagerError,
BackupPlatformEvent,
@@ -48,6 +49,7 @@ from .util import suggested_filename, suggested_filename_from_name_date
from .websocket import async_register_websocket_handlers
__all__ = [
"AddonErrorData",
"AddonInfo",
"AgentBackup",
"BackupAgent",
@@ -79,7 +81,7 @@ __all__ = [
"suggested_filename_from_name_date",
]
PLATFORMS = [Platform.SENSOR]
PLATFORMS = [Platform.EVENT, Platform.SENSOR]
CONFIG_SCHEMA = cv.empty_config_schema(DOMAIN)

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