Compare commits

..

2371 Commits

Author SHA1 Message Date
epenet 7b2e4dbe16 Ruff 2025-10-17 13:46:52 +00:00
epenet 1f812e9f89 Fix motor reverse mode logic 2025-10-17 14:54:20 +02:00
johanzander b182d5ce87 Add additional unit tests for Growatt Server integration (#154644) 2025-10-17 14:22:16 +02:00
Thomas55555 175365bdea Add integration_type to Husqvarna Automower (#154642) 2025-10-17 14:18:32 +02:00
Bouwe Westerdijk cbe52cbfca Bump plugwise to v1.8.1 (#154679) 2025-10-17 15:13:35 +03:00
Felipe Santos 9251dde2c6 Add OpenRGB reconfiguration flow (#154478) 2025-10-17 12:27:11 +02:00
Andrew Jackson 24d77cc453 Bump aiomealie to 1.0.1 (#154672) 2025-10-17 12:23:55 +03:00
johanzander a1f98abe49 Add CODEOWNERS entry for Growatt Server integration (#154647) 2025-10-17 11:20:11 +03:00
cdnninja d25dde1d11 Bump pyvesync version to 3.1.2 (#154650)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-10-17 10:19:48 +02:00
hanwg 8ec483b38b Fix Telegram bot bug where message is sent to wrong recipient (#154658) 2025-10-17 11:15:41 +03:00
epenet bf14caca69 Fix behavior spelling for public facing strings (#154665) 2025-10-17 11:07:05 +03:00
Ludovic BOUÉ e5fb6b2fb2 Remove duplicated Matter powersource cluster from Mock device fixture files (#154668) 2025-10-17 11:06:01 +03:00
epenet 7dfeb3a3f6 Improve metoffice typing (#154670) 2025-10-17 10:05:27 +02:00
epenet 9d3b1562c4 Remove more components from _IGNORE_ROOT_IMPORT in pylint plugin (#154667) 2025-10-17 09:46:53 +02:00
epenet e14407f066 Remove HomeAssistantRemoteScanner from __all__ in bluetooth (#154669) 2025-10-17 09:31:30 +02:00
epenet 67872e3746 Adjust onewire strings (#154664) 2025-10-17 09:28:37 +02:00
Manu 06bd1a2003 Migrate Xbox to runtime_data (#154652) 2025-10-17 09:25:49 +02:00
dependabot[bot] 37ea360304 Bump sigstore/cosign-installer from 3.10.0 to 4.0.0 (#154661)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-17 09:15:41 +02:00
epenet 25ce57424c Remove more components from _IGNORE_ROOT_IMPORT in pylint plugin (#154660) 2025-10-17 08:35:18 +02:00
Thomas55555 3d46ab549d Add serial number to IPP (#154648) 2025-10-16 23:58:57 +01:00
Thomas55555 567cc9f842 Bump colorlog to 6.10.1 (#154643) 2025-10-16 23:57:24 +01:00
Shay Levy b5457a5abd Fix demo cover set position action (#154641) 2025-10-16 21:21:32 +03:00
Marc Mueller e4b5e35d1d Update Pillow to 12.0.0 (#154637) 2025-10-16 18:25:36 +01:00
Ludovic BOUÉ 12023c33b5 Rename Mock Door Lock with unbolt fixture (#154627) 2025-10-16 13:01:46 -04:00
Jan Čermák a28749937c Allow ignored rapt_ble devices to be set up from the user flow (#154606) 2025-10-16 12:54:24 -04:00
Jan Čermák 3fe37d651f Update Home Assistant base image to 2025.10.1 (#154609)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-16 12:53:25 -04:00
epenet cb3424cdf0 Remove more components from _IGNORE_ROOT_IMPORT in pylint plugin (#154622) 2025-10-16 12:52:51 -04:00
Thomas D a799f7ff91 Add service warning sensor to Volvo integration (#154613) 2025-10-16 18:52:12 +02:00
Louis Pré 34ab725b75 LLM prefix caching optimization using new GetDateTime tool (#152408)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Denis Shulyaka <Shulyaka@gmail.com>
2025-10-16 12:47:12 -04:00
Manu 2dfc7f02ba Bump habiticalib to v0.4.6 (#154566) 2025-10-16 17:15:13 +01:00
Jan Čermák c8919222bd Mock network calls in comfoconnect tests to fix timeouts (#154620) 2025-10-16 11:42:04 -04:00
Ludovic BOUÉ a888264d2f Add Matter fixture for Aqara Smart Lock U200 (#154623) 2025-10-16 16:25:16 +02:00
Joost Lekkerkerker ae84c7e15d Add subentries to WAQI (#148966)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-16 14:11:52 +01:00
epenet 415c8b490b Add device diagnostics to onewire (#154617)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-16 14:56:19 +02:00
Aviad Levy 6038f15406 Add support for Telegram message attachments (#153216) 2025-10-16 14:54:50 +02:00
Justus a8758253c4 Add config flow exceptions to IOMeter (#154604)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-16 14:52:51 +02:00
epenet fa4eb2e820 The 1-wire integration has now reached silver on the quality scale (#154614) 2025-10-16 14:52:11 +02:00
Ludovic BOUÉ 58f35d0614 Add Matter Eve Energy 20ECN4101 fixture (#154608) 2025-10-16 14:07:29 +02:00
epenet f72a91ca29 Remove assist_pipeline from _IGNORE_ROOT_IMPORT in pylint plugin (#154600) 2025-10-16 13:33:19 +02:00
Thomas D 5d99da6e1f The Volvo integration has now reached platinum on the quality scale (#154015)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-16 13:07:54 +02:00
Joost Lekkerkerker 64746eb99c Add new Dryer fixture to SmartThings (#154607) 2025-10-16 12:55:30 +02:00
Maciej Bieniek 70fc6df599 Make Shelly deprecated firmware issue more general (#154539) 2025-10-16 13:50:43 +03:00
epenet 8dc33ece7b Remove sensor from _IGNORE_ROOT_IMPORT in pylint plugin (#154602) 2025-10-16 11:28:29 +01:00
Carlos Gustavo Sarmiento 3d4d8e7f20 Make Speed optional for GoToPreset ONVIF command (#149636)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-16 11:21:02 +01:00
Joakim Sørensen c92d319e12 Bump hass-nabucasa from 1.3.0 to 1.4.0 (#154599) 2025-10-16 11:18:55 +01:00
Christopher Fenner 1bdba7906a Add new sensors for Zigbee based devices in ViCare (#154271) 2025-10-16 11:11:08 +01:00
epenet aa8198d852 Bump epson-projector to 0.6.0 (#154596) 2025-10-16 12:06:30 +02:00
Ashus b7f30ec17f Fix friendly names of zones with mobile_app (#149453)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-16 11:27:59 +02:00
Ludovic BOUÉ 2da1878f60 Add Matter Inovelli VTM30 fixture (#154601) 2025-10-16 11:20:29 +02:00
tstabrawa 872b33a088 Move URL out of Nuheat strings.json (#154580) 2025-10-16 10:14:22 +02:00
epenet e0faa36157 Bump pymonoprice to 0.5 (#146936) 2025-10-16 10:07:52 +02:00
Magnus 14b270a2db Component asuswrt: handle_errors_and_zip._wrapper returns dict[str, str] (#154544) 2025-10-16 09:48:21 +02:00
Magnus 8402bead4f Component asuswrt: import of ConnectionState corrected (#154518) 2025-10-16 09:38:09 +02:00
Erik Montnemery 6bf7a4278e Fix flaky playstation_network test (#154559)
Co-authored-by: Joakim Plate <elupus@ecce.se>
2025-10-16 09:35:53 +02:00
Erik Montnemery 3de62b2b4c Improve mobile_app device_tracker tests (#154584)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-10-16 09:15:35 +02:00
Kinachi249 0d2558c030 Implement cync reauth flow (#154257) 2025-10-16 08:48:31 +02:00
Jordan Harvey 9efbcb2f82 Add model information for probe_plus devices (#154262) 2025-10-16 08:46:29 +02:00
Keith Burzinski f210bb35ed Bump aioesphomeapi to 42.0.0 (#154577) 2025-10-16 00:21:15 -05:00
Grzegorz M 0581ceb771 Add ability for CalDAV to create calendar events (#150030) 2025-10-15 20:07:31 -07:00
J. Diego Rodríguez Royo 7ba2e60af3 Bump aiohomeconnect to version 0.22.0 (#154572) 2025-10-16 00:10:54 +01:00
epenet 75fa0ffd04 Update onewire quality scale (#154515) 2025-10-16 00:51:14 +03:00
epenet 01effb7ca6 Remove hardware from _IGNORE_ROOT_IMPORT in pylint plugin (#154532)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-15 21:59:40 +01:00
Jan Bouwhuis 88d383962c Fix lingering todoist test by fixing its test time (#154511) 2025-10-15 22:17:21 +02:00
Paulus Schoutsen 3c001bd6ed Revert "Expose the entity_id of an entity to LLMs" (#154561)
Co-authored-by: Michael Hansen <mike@rhasspy.org>
2025-10-15 16:07:34 -04:00
Marc Mueller ec5c4843d1 Fix typing issue in fritz (#154497) 2025-10-15 21:27:50 +02:00
Omer Korner e2c281549e Expose the entity_id of an entity to LLMs (#149428) 2025-10-15 21:24:32 +02:00
epenet 051e472537 Import device_tracker classes from component root (#154524) 2025-10-15 20:57:38 +02:00
Marc Mueller 1e5910215d Update pylint to 4.0.1 (#154526) 2025-10-15 20:54:15 +02:00
epenet 645089edba Bump aio-ownet to 0.0.4 (#154520)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-15 20:52:58 +02:00
Marc Mueller 7abe289681 Add support for Python 3.14 (#153939) 2025-10-15 20:50:16 +02:00
Maciej Bieniek 7829c2d03e Align Shelly entity names with device classes (#154492) 2025-10-15 20:47:47 +02:00
Erwin Douna 148a13361f Firefly refactor entities (#153292) 2025-10-15 20:33:38 +02:00
epenet 57dccd1474 Remove zha from _IGNORE_ROOT_IMPORT in pylint plugin (#154534) 2025-10-15 20:12:11 +02:00
Aarni Koskela a3b0132299 Move template-rendering test helpers to separate module (#154366) 2025-10-15 20:11:19 +02:00
epenet fbd8443745 Simplify onewire entity descriptions (#154513) 2025-10-15 20:09:51 +02:00
Manu cd7015c6b7 Add integration type device to IronOS manifest (#154533) 2025-10-15 20:00:46 +02:00
Joakim Plate 1012c7bdf9 Ensure psn wait more than coordinator tick (#154549) 2025-10-15 19:54:53 +02:00
Markus Adrario ca912906f5 Automatically removing stale devices in Homee (#152680)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-15 18:36:27 +01:00
karwosts d0cad43a6c Recalculate derivative unit correctly when source or options change (#147527)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-15 18:17:41 +02:00
Magnus 751540e606 Component asuswrt: Update SENSORS_DEFAULT in tests (#154547) 2025-10-15 17:53:22 +02:00
hanwg 3d2ec712f1 Raise exceptions for Telegram bot when actions fail (#148140) 2025-10-15 17:49:57 +02:00
Noah Husby e3a6c06997 Bump aiorussound to 4.9.0 (#154545) 2025-10-15 16:14:38 +01:00
Jordan Harvey 08b94e29e6 Bump pynintendoparental to 1.1.2 (#154527) 2025-10-15 16:08:06 +01:00
Simone Chemelli 79323189fb Bump aioamazondevices to 6.4.4 (#154538) 2025-10-15 18:02:56 +03:00
Magnus 7508828518 Adding __all__ export to device_tracker (#154525) 2025-10-15 15:11:16 +01:00
Magnus f257e89b2a Adjust import of ATTR_GPS_ACCURACY in device_tracker tests (#154531) 2025-10-15 13:55:10 +02:00
Magnus a2e469eb28 Adjust import of ATTR_GPS_ACCURACY in mobile_app.webhook (#154529) 2025-10-15 13:52:30 +02:00
Magnus 7c80491325 Adjust import of ATTR_GPS_ACCURACY in mobile_app (#154528) 2025-10-15 13:50:49 +02:00
J. Nick Koston adedf2037a Fix improv_ble provisioning futures type (#154530) 2025-10-15 13:46:23 +02:00
G Johansson 188459e3ff Allow use of Selector in ObjectSelector fields (#147929) 2025-10-15 13:25:04 +02:00
Luke Lashley 7324a12ada Add suggested units for Roborock Durations sensors (#153607)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-15 12:05:46 +01:00
Jan Bouwhuis fe07e9c840 Move out MQTT translation strings (#154406)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-15 11:25:21 +01:00
krahabb afeaf2409f Add TEMPERATURE_DELTA device class to Number and Sensor entities (#147358) 2025-10-15 11:49:12 +02:00
Magnus 69f9c0a6cc Typing for WrtDevice (#154514) 2025-10-15 11:08:54 +02:00
epenet 46f52db87c Mark tempres configuration as disabled by default in onewire (#154517) 2025-10-15 11:00:49 +02:00
epenet d877761dbb Cleanup model/model_id in onewire (#154509) 2025-10-15 10:52:57 +02:00
Fabian Weisshaar 95da65f552 System Bridge to set unavailable entry state if host is not reachable (#154177) 2025-10-15 10:43:42 +02:00
Jan Bouwhuis 6ec82d0b21 Fix MQTT siren subentry translation string (#154483) 2025-10-15 10:36:55 +02:00
Foscam-wangzhengyu f6a16f63a4 Bump libpyfoscamcgi to 0.0.8 (#154505) 2025-10-15 10:36:20 +02:00
wollew 9ff2dab468 set integration type for velux to hub (#154510) 2025-10-15 10:35:03 +02:00
epenet 9422703288 Add support for DS2401 (#154506) 2025-10-15 08:47:28 +02:00
Anuj Soni d91eccb209 Move translatable URLs out of strings.json for vera (#154475) 2025-10-15 07:51:52 +02:00
J. Nick Koston 939cbc8644 Bump uiprotect to 7.22.0 (#154494) 2025-10-15 01:07:27 +02:00
J. Nick Koston 0f1d2a77cb Add flow chaining from Improv BLE to integration config flows (#154415)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 12:00:55 -10:00
J. Nick Koston 385fc5b3d0 Add next_flow parameter to async_abort for flow chaining (#154416)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 11:45:21 -10:00
Felipe Santos 18c63e3b8f Introduce the OpenRGB integration (#153373)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-10-14 19:03:58 +02:00
Paul Bottein cf477186aa Set assumed state to group if at least one child has assumed state (#154163) 2025-10-14 18:53:51 +02:00
Jan Bouwhuis 0eef44be91 Fix inconsistent use of StrEnum as index in MQTT subentry flow globals (#154210) 2025-10-14 18:47:20 +02:00
Denis Shulyaka e7ac56c59f Revisit list of OpenAI models for tool support (#154399)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-14 18:37:18 +02:00
Tom 3cc4091f31 Update airOS IQS (completing silver) (#153675) 2025-10-14 18:36:55 +02:00
Anuj Soni 00025c8f42 Move translatable URLs out of strings.json for isy994 (#154464) 2025-10-14 18:31:01 +02:00
Ludovic BOUÉ db48f8cb28 Add Matter Zemismart Roller Motor fixture (#154458)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-10-14 18:19:25 +02:00
TheJulianJES 4fdbe82df2 Bump pydantic to 2.12.2 (#154461) 2025-10-14 17:46:41 +02:00
Lennart Coopmans 742f1b2157 PushSafer: Handle empty data section properly (#154109) 2025-10-14 17:29:34 +02:00
Sebastian Schneider 681eb6b594 Add LED control for supported UniFi network devices (#152649) 2025-10-14 17:20:47 +02:00
epenet 1d6c6628f4 Migrate onewire to async library (#154439) 2025-10-14 17:18:25 +02:00
Marc Mueller b6337c07d6 Update intellifire4py to 4.2.1 (#154454) 2025-10-14 16:52:12 +02:00
Jan Bouwhuis 8b6fb05ee4 Add subentry support for MQTT siren device (#154220) 2025-10-14 16:45:48 +02:00
MoonDevLT 28405e2b04 Add model name to Lunatone devices (#154432) 2025-10-14 16:40:48 +02:00
ollo69 31857a03d6 Remove Asuwrt device tracker last_time_reachable extra attribute (#154219) 2025-10-14 16:35:48 +02:00
Kelyan PEGEOT SELME 97a0a4ea17 Add tyre pressure to Renault integration (#154377) 2025-10-14 16:33:43 +02:00
Abílio Costa b494074ee0 Fix device registry arg docstring (#154453) 2025-10-14 15:32:31 +01:00
Manu 6aff1287dd Fix capitalization of RADIUS in Uptime Kuma (#154456) 2025-10-14 17:29:50 +03:00
puddly 655de3dfd2 Use async_schedule_reload instead of async_reload for ZHA (#154397) 2025-10-14 16:26:40 +02:00
cdnninja 11ee7d63be Remove vesync unused extra attributes, refine enums (#153171) 2025-10-14 16:23:29 +02:00
Simone Chemelli 080a7dcfa7 Allow more device types for Vodafone Station (#153990) 2025-10-14 16:18:16 +02:00
Sid 3e20c506f4 Add gallons per hour as volume flow rate unit (#154246)
Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
2025-10-14 16:16:48 +02:00
Abílio Costa 2abc197dcd Add extract_from_target websocket command (#150124)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
2025-10-14 16:16:00 +02:00
karwosts a3dec46d59 Add derivative tests exhibiting unit issues (#153051) 2025-10-14 15:58:14 +02:00
Samuel Xiao 7a3630e647 Add sensor description for switchbot cloud's device(plug) small changes (#148551)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-14 15:35:11 +02:00
Heindrich Paul 2812d7c712 Add the coordinator pattern to the NS integration (#154149)
Signed-off-by: Heindrich Paul <heindrich.paul@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-14 15:21:09 +02:00
Anuj Soni c0fc7b66f0 Move translatable URLs out of strings.json for huawei lte (#154368)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-14 15:11:47 +02:00
David Recordon c6e334ca60 Skip adding Control4 rooms with no audio/video sources as media player devices (#154348)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-10-14 15:09:04 +02:00
Tom 416f6b922c Add reconfigure flow to airOS (#154447) 2025-10-14 15:05:10 +02:00
DannyS95 d2af875d63 Move igloohome API access URL into constant placeholders (#154430) 2025-10-14 15:01:39 +02:00
Mateusz 1237010b4a auth: add required issuer to OAuth (#152385) 2025-10-14 14:50:38 +02:00
Jan-Philipp Benecke 26fec2fdcc Move Electricity Maps url out of strings.json (#154284) 2025-10-14 14:50:28 +02:00
Oliver Gründel 13e828038d Move developer url out of strings.json for coinbase setup flow (#154339) 2025-10-14 14:50:12 +02:00
Oliver Gründel b517774be0 Move Ecobee authorization URL out of strings.json (#154332) 2025-10-14 14:49:45 +02:00
Andrew Jackson 6e515d4829 Move URL out of Mealie strings.json (#154230) 2025-10-14 14:48:36 +02:00
Manu 7f5128eb15 Add description placeholders to pyLoad config flow (#154254) 2025-10-14 14:48:11 +02:00
Shai Ungar 7ddfcd350b Move URLs out of SABnzbd strings.json (#154333)
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-14 14:47:50 +02:00
epenet a92e73ff17 Move URL out of sfr_box strings.json (#154364)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-14 14:47:32 +02:00
Shay Levy ae3d32073c Move URL out of Switcher strings.json (#154240) 2025-10-14 14:47:22 +02:00
Christopher Fenner 38d0299951 Remove URL from ViCare strings.json (#154243) 2025-10-14 14:47:12 +02:00
Stefan Agner 8dba1edbe5 Machine container: Remove codenotary configuration (#153855)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-14 14:39:38 +02:00
Jamin f3c4288026 Use contact header for outgoing call transport (#151847) 2025-10-14 14:36:31 +02:00
peteS-UK 8db6505a97 Set initial integration_hub in manifest for Squeezebox (#154438) 2025-10-14 14:35:12 +02:00
Kamil Breguła 61a9094d5f Update WLED Select Options after update (#154205)
Co-authored-by: mik-laj <12058428+mik-laj@users.noreply.github.com>
2025-10-14 14:23:41 +02:00
Joakim Plate d140eb4c76 Protect internal coordinator state (#153685) 2025-10-14 14:14:37 +02:00
Arie Catsman 21f24c2f6a Get Enphase_envoy collar grid status from admin_state_str rather then from grid_state (#153766)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-14 13:10:14 +01:00
Aarni Koskela 85b26479de Shut down core event loop on unrecoverable errors (#144806) 2025-10-14 14:09:29 +02:00
Artur Pragacz bddbf9c73c Simplify current ids callback in config entries (#154082) 2025-10-14 14:04:57 +02:00
Tom 64f48564ff Change device identifier and binary_sensor unique_id for airOS (#153085)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-10-14 14:02:22 +02:00
Yvan13120 06e4922021 Fix state class for Overkiz water consumption (#154164) 2025-10-14 12:49:32 +01:00
G Johansson cdc6c44a49 Fix reconfigure flow in esphome uses create_entry (#154107) 2025-10-14 13:46:53 +02:00
mmstano 106a74c954 Prevent AttributeError in luci device tracker (#148357)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-14 13:39:56 +02:00
Domochip 8464dad8e0 Add milliPascal (mPa) as unit of measurement for Pressure (#153087) 2025-10-14 12:38:14 +01:00
Joakim Plate c3e2f0e19b Always run install of packages with same python as script (#154253) 2025-10-14 13:35:00 +02:00
Erik Montnemery fbf875b5af Deprecate has_mean in favor of mean_type in recorder statistic API (#154093) 2025-10-14 13:34:25 +02:00
epenet fcea5e0da6 Simplify DPType lookup in Tuya (#150117) 2025-10-14 13:23:50 +02:00
nasWebio 81fd9e1c5a Move state conversion from library to nasweb integration code (#153208) 2025-10-14 13:21:19 +02:00
Shay Levy d108d5f106 Use Shelly RPC cover methods from upstream and fix cover status update (#154345)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-14 14:07:37 +03:00
Magnus 487940872e Dependency update py-melissa-climate to 3.0.2 (#154285) 2025-10-14 12:37:37 +02:00
Paul Bottein aaf58075c6 Rename security panel to safety panel (#154435) 2025-10-14 12:08:41 +02:00
Michel van de Wetering a23bed6f4d Add missinglong_press entry for trigger_type in strings.json for Hue (#154437) 2025-10-14 11:23:26 +02:00
Maciej Bieniek 02e05643f1 Add boost switches for Shelly cury component (#154387) 2025-10-14 11:21:55 +02:00
Samuel Xiao 5f9b098c19 Add K11+ vacuum support to Switchbot Cloud (#154363) 2025-10-14 10:52:40 +02:00
Simone Chemelli 143f7df7fd Use aioshelly methods for climate platform (#154384) 2025-10-14 10:44:39 +02:00
Marc Mueller 9a28ee5378 Update pydantic to 2.12.1 (#154424) 2025-10-14 10:37:16 +02:00
J. Nick Koston 82f33fbc39 Bump aioesphomeapi to 41.16.0 (#154427) 2025-10-14 09:00:27 +02:00
Shay Levy 6a632a71b6 Bump aioshelly to 13.14.0 (#154421) 2025-10-14 09:28:26 +03:00
PaulCavill ae8678b2af Bump pyiCloud to 2.1.0 (#154365) 2025-10-13 23:36:40 +01:00
Tucker Kern b52ee6915a Make Snapcast snapshot action async (#153132) 2025-10-13 23:32:33 +01:00
Åke Strandberg b0e1b00598 Set integration_type explicitly in miele manifest (#154375) 2025-10-13 23:29:28 +01:00
Jamin fd902af23b VOIP Integration Type (#154418) 2025-10-13 23:21:27 +01:00
Matthias Alphart 07d6ebef4c Restore KNX sensor entity states (#154318) 2025-10-13 23:18:41 +01:00
tronikos c9b9f05f4b Google Assistant SDK: improve config flow tests (#153794) 2025-10-13 17:28:33 -04:00
J. Nick Koston 90a0262217 Bump aioesphomeapi to 41.15.0 (#154407) 2025-10-13 10:56:24 -10:00
J. Nick Koston 324aa09ebe Update Improv BLE discovery notification when device name changes (#154352)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-10-13 16:14:51 -04:00
Dave T 663431fc80 Allow following of 302 redirects in generic camera (#154308) 2025-10-13 16:11:34 -04:00
J. Nick Koston 610183c11b Fix Improv BLE factory reset rediscovery (#154354) 2025-10-13 16:03:26 -04:00
Simone Chemelli b7718f6f0f Bump aiocomelit to 1.1.2 (#154393) 2025-10-13 16:01:46 -04:00
Jan Bouwhuis 5708f61964 Prepare to move out URL's from MQTT translation strings (#154391) 2025-10-13 21:48:01 +02:00
G Johansson 4fb3c9fed2 Add async_update_and_abort method to config flow (#153146)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-13 21:39:04 +02:00
Marc Mueller 1e5f5f4ad3 Enable pylint consider-math-not-float check (#154338) 2025-10-13 21:14:57 +02:00
TheJulianJES 82c536a4e9 Migrate Matter descriptions to be kw_only (#154398) 2025-10-13 20:18:05 +02:00
Matthias Alphart 97afec1912 Record last_reported for KNX BinarySensor entitiy states (#154392) 2025-10-13 20:12:13 +02:00
G Johansson 0bfdd70730 async_config_entry_first_refresh in update coordinator requires a config entry (#154114) 2025-10-13 19:47:07 +02:00
johanzander 01dee6507b Add 14 additional sensor entities for Growatt TLX/MIN inverters (#153964)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-13 19:17:14 +02:00
Kurt 04f83bc067 Add actron_air climate integration (#134740)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-13 19:10:35 +02:00
Paulus Schoutsen f0756af52d Add Python version file (#154267) 2025-10-13 19:02:49 +02:00
johanzander dd6bc715d8 Add switch platform and grid charge enable for Growatt Server integration (#153960)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-13 17:54:30 +02:00
Jordan Harvey 1452aec47f Add switch platform to Nintendo Parental controls integration (#154179) 2025-10-13 17:52:06 +02:00
Simone Chemelli 6f8439de5b Fix switch platform for Comelit SimpleHome (#154227) 2025-10-13 17:48:50 +02:00
Tom f649717372 Add model_id support to airOS (#154388) 2025-10-13 17:47:53 +02:00
Tom bf273ef407 Add integration_type to airOS (#154390) 2025-10-13 17:47:44 +02:00
J. Nick Koston 94d015e00a Fix Bluetooth discovery for devices with alternating advertisement names (#154347) 2025-10-13 11:44:16 -04:00
Thomas D f185ffddf1 Set model_id on device for Volvo integration (#154385) 2025-10-13 17:29:15 +02:00
Foscam-wangzhengyu 2d0b4dd7e9 New Foscam switch (#152732) 2025-10-13 17:23:27 +02:00
J. Nick Koston eab1205823 Add config flow title placeholder update infrastructure (#154353) 2025-10-13 11:15:28 -04:00
J. Nick Koston a991dcbe6a Add Bluetooth API to clear address from match history (#154355) 2025-10-13 16:56:39 +02:00
Yevhenii Vaskivskyi 6f79a65762 AsusWRT: Pass only online clients to the device list from the API (#154322) 2025-10-13 16:55:28 +02:00
Matthias Alphart ce1fdc6b75 Update xknx to 3.10.0 (#154361) 2025-10-13 16:53:32 +02:00
Tom d7aa0834c7 Bump airOS preparing for model_id matching (#154370) 2025-10-13 16:48:32 +02:00
Tom Matheussen 3151384867 Set integration type for Satel Integra to device (#154372) 2025-10-13 16:47:57 +02:00
Ravaka Razafimanantsoa 8aa5e7de91 Bump momonga to 0.2.0 (#154371) 2025-10-13 16:43:44 +02:00
Erik Montnemery cca5c807ad Store nmap tracker options as lists (#154378) 2025-10-13 16:39:04 +02:00
Krisjanis Lejejs 89433219dd Bump hass-nabucasa from 1.2.0 to 1.3.0 (#154376) 2025-10-13 16:37:48 +02:00
Renat Sibgatulin 694b169c79 Bump aioairq to 0.4.7 (#154386) 2025-10-13 16:37:31 +02:00
puddly f1e0954c61 Automatically setup hardware integrations when firmware info is published by an integration (#154030) 2025-10-13 16:26:01 +02:00
Erik Montnemery 3c3b4ef14a Fix stale docstring in nmap_tracker (#154380) 2025-10-13 15:45:33 +02:00
Ted van den Brink 54ff49115c Implement MAC address exclude list in nmap_tracker (#142724)
Co-authored-by: Erik <erik@montnemery.com>
2025-10-13 15:01:47 +02:00
Åke Strandberg 2512dad843 Set model_id in miele integration (#154367) 2025-10-13 14:31:22 +02:00
Erik Montnemery a3b67d5f28 Add support to sensor statistics for changing unit_class (#154130) 2025-10-13 12:35:10 +01:00
epenet 76a0b2d616 Bump renault-api to 0.4.4 (#154137)
Thanks!
2025-10-13 11:23:33 +02:00
dependabot[bot] 1182082c1f Bump actions/dependency-review-action from 4.8.0 to 4.8.1 (#154356)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-13 11:12:30 +02:00
wollew e0811558cb update pysqueezebox lib to 0.13.0 (#154358) 2025-10-13 11:05:33 +02:00
Christopher Fenner d389405218 Bump PyViCare to 2.54.0 (#154336) 2025-10-13 11:04:25 +02:00
Magnus 3a71087c9c Bump aioasuswrt to 1.5.1 (#153209) 2025-10-13 10:59:22 +02:00
starkillerOG c7d7cfa7ad Add Reolink IO input binary sensor (#154133) 2025-10-13 10:54:30 +02:00
wittypluck e4ea79866d Add support for μg/m³ for Carbon Monoxide (#153158) 2025-10-13 10:08:55 +02:00
tronikos ddfa6f33d2 Bump opower to 0.15.7 (#154351) 2025-10-13 00:07:20 -07:00
dependabot[bot] 15e99650aa Bump github/codeql-action from 4.30.7 to 4.30.8 (#154357) 2025-10-13 08:32:24 +02:00
Christopher Fenner 58bacbb84e Fix identifier generation for sub devices in ViCare (#154330) 2025-10-13 08:31:03 +02:00
Marc Mueller 82758f7671 Update pyheos to 1.0.6 (#154346) 2025-10-13 01:39:36 +02:00
David Recordon 7739cdc626 Update pyControl4 to v1.5.0 (#154341) 2025-10-12 23:28:08 +02:00
Michael Davie 4ca1ae61aa Environment Canada station selector (#154307)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-12 22:34:16 +02:00
Dave T 3d130a9bdf Simplify generic camera tests (#154313) 2025-10-12 22:06:13 +02:00
Shay Levy 2b38f33d50 Bump aioshelly to 13.13.0 (#154337) 2025-10-12 23:01:22 +03:00
Glenn Vandeuren (aka Iondependent) 19dedb038e Update nhc requirement to version 0.7.0 (#154250) 2025-10-12 21:58:01 +02:00
Dan Schafer 59781422f7 Update Snoo strings.json to include weaning_baseline (#154268) 2025-10-12 21:57:47 +02:00
Thomas55555 083277d1ff Add model_id to Husqvarna Automower (#154335) 2025-10-12 21:45:01 +02:00
Marcus Gustavsson 9b9c55b37b Updated prowlpy to 1.1.1 and changed the usage to do asynchronous calls (#154193) 2025-10-12 21:17:43 +02:00
J. Nick Koston c9d67d596b Fix August integration to handle unavailable OAuth implementation at startup (#154244) 2025-10-12 09:16:22 -10:00
J. Nick Koston 7948b35265 Fix Yale integration to handle unavailable OAuth implementation at startup (#154245) 2025-10-12 09:16:02 -10:00
Ernst Klamer be843970fd bump tilt-ble to 1.0.1 (#154320) 2025-10-12 21:38:27 +03:00
Michael Davie 53b65b2fb4 Bump env-canada to v0.12.1 (#154303)
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-12 20:31:02 +02:00
Simone Chemelli ac7be97245 Bump aioamazondevices to 6.4.3 (#154293) 2025-10-12 19:25:53 +02:00
Jan Bouwhuis 09e539bf0e Fix home wiziard total increasing sensors returning 0 (#154264) 2025-10-12 12:51:50 -04:00
J. Nick Koston 6ef1b3bad3 Bump aioesphomeapi to 41.14.0 (#154275) 2025-10-12 12:51:05 -04:00
Bouwe Westerdijk 38e46f7a53 Bump plugwise to v1.8.0 - add initial support for Emma (#154277) 2025-10-12 12:50:46 -04:00
Michael Davie ef60d16659 Fix Environment Canada camera entity initialization (#154302)
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-12 12:47:22 -04:00
Marc Mueller bf4f8b48a3 Update pylint to 4.0.0 + astroid to 4.0.1 (#154311) 2025-10-12 12:46:04 -04:00
Denis Shulyaka 3c1496d2bb Add gpt-image-1-mini support (#154316) 2025-10-12 12:44:38 -04:00
Mick Vleeshouwer d457787639 Move URL out of Overkiz Config Flow descriptions (#154315) 2025-10-12 18:23:24 +02:00
Mick Vleeshouwer de4bfd6f05 Bump pyOverkiz to 1.19.0 in Overkiz (#154310) 2025-10-12 18:07:19 +02:00
Shay Levy 34c5748132 Align Shelly async_setup_entry in platforms (#154142)
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2025-10-12 18:41:54 +03:00
Michael Hansen 5bfd9620db Handle Wyoming config entries with missing info (#154186) 2025-10-12 10:23:09 -05:00
Michael Davie 6f8766e4bd Update config flow strings for Environment Canada (#154242) 2025-10-12 11:49:29 +02:00
Jordan Harvey d3b519846b Bump pyprobeplus to 1.1.0 (#154265) 2025-10-12 10:06:00 +02:00
Joakim Plate 36d952800b Move url like strings to placeholders for nibe (#154249) 2025-10-12 00:11:23 +02:00
Andrew Jackson b832561e53 Move URL out of Mastodon strings.json (#154231) 2025-10-12 00:07:40 +02:00
Manu c59d295bf2 Add description placeholders in Uptime Kuma config flow (#154252)
Signed-off-by: tr4nt0r <4445816+tr4nt0r@users.noreply.github.com>
2025-10-12 00:06:29 +02:00
Oliver Gründel 6e28e3aed1 Move developer registration url out of strings.json file (#154261) 2025-10-12 00:04:59 +02:00
Magnus 6d8944d379 Fix multiple definition of DEFAULT_PORT and DEFAULT_RETAIN constants (#154255) 2025-10-11 23:47:18 +02:00
Joost Lekkerkerker 762fd6d241 Move URL out of Aemet strings.json (#154225) 2025-10-11 20:52:51 +03:00
Simone Chemelli 4c6500e7a4 Bump aioamazondevices to 6.4.1 (#154228) 2025-10-11 18:58:14 +02:00
Jan Bouwhuis cdc224715f Fix inconsistent naming of MQTT test config globals (#154221) 2025-10-11 16:29:13 +02:00
Paul Bottein 648b250fc8 Bump frontend 20251001.4 (#154218) 2025-10-11 09:33:06 -04:00
Ernst Klamer ba61562300 Bump kegtron-ble to 1.0.2 (#154207) 2025-10-11 16:27:25 +03:00
Marc Mueller 8d67182e0e [ci] No longer install setuptools + wheel by default (#154212) 2025-10-11 15:26:04 +02:00
Shay Levy 3ce1ef4c3f Use Entity Description in Shelly light platform (#154102) 2025-10-11 16:15:48 +03:00
Ludovic BOUÉ bde4eb5011 Rename Matter SolarPower fixture to Solar inverter (#154201)
The goal is to facilitate understanding for the introduction of Matter namespaces and tags:
 - https://github.com/home-assistant/core/pull/152754
2025-10-11 12:16:37 +02:00
srirams a58a7065b6 Remove redudant state write in Smart Meter Texas (#154126) 2025-10-11 10:32:10 +02:00
Marc Mueller 0c9b72bf1d Update pylint to 3.3.9 (#154194) 2025-10-11 09:31:36 +02:00
Matthias Alphart 541d94d8c6 Record last_reported for KNX sensor entitiy states (#154169) 2025-10-11 08:21:51 +02:00
Abílio Costa c370c86a4f Use custom string for Oral-B no-devices-found message (#154183) 2025-10-10 22:08:38 +01:00
Paul Bottein bc6accf4ae Add missing entity category and icons for smlight integration (#154131) 2025-10-10 21:30:32 +02:00
G Johansson d40eeee422 Remove deprecated ConfigSource from core (#154112) 2025-10-10 18:23:13 +02:00
Erik Montnemery c9d9730c4a Change domain and name of Nintendo Switch parental controls integration (#153893) 2025-10-10 17:11:10 +02:00
ehendrix23 d3a8f3191b Add Speech-to-Text (stt) to elevenlabs (#147838)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-10-10 17:01:22 +02:00
Thomas D cb3829ddee Add buttons to Volvo integration (#153272)
Co-authored-by: Erwin Douna <e.douna@gmail.com>
2025-10-10 16:51:35 +02:00
tronikos 73383e6c26 Add reconfigure flow in Google Assistant SDK (#153802) 2025-10-10 16:24:46 +02:00
Matthias Alphart 217894ee8b Update knx-frontend to 2025.10.9.185845 (#154103) 2025-10-10 16:24:14 +02:00
Thomas D c7321a337e Add device_tracker platform to Volvo integration (#153437) 2025-10-10 16:23:07 +02:00
Denis Shulyaka 517124dfbe Anthropic web search support (#153753) 2025-10-10 16:21:21 +02:00
hanwg f49299b009 Add edit message media feature for Telegram bot (#151034) 2025-10-10 15:50:54 +02:00
Shay Levy 1001da08f6 Fix Shelly RPC cover update when the device is not initialized (#154159) 2025-10-10 16:50:45 +03:00
Lars 0da019404c Remove deprecated extra attributes from fritzbox climate (#154152) 2025-10-10 15:48:22 +02:00
Jan Čermák 9a4280d0de Add attachments support to OpenRouter AI task (#154161) 2025-10-10 15:44:33 +02:00
Lukas c28e105df5 Pooldose update api (#153497)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-10-10 15:43:47 +02:00
Matthias Alphart 68787248f6 Update xknx to 3.9.1 (#154146) 2025-10-10 15:42:38 +02:00
Tom Matheussen 36be6b6187 Add configured number to Satel Integra subentry titles (#154155) 2025-10-10 15:27:23 +02:00
Jordan Harvey 42dea92c51 Add time platform to nintendo_parental integration (#153866)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-10 15:20:59 +02:00
Justus 4b828d4753 IOmeter bump version v0.2.0 (#154150) 2025-10-10 15:15:58 +02:00
Robert Resch 8e79c38f34 Bump deebot-client to 15.1.0 (#154154) 2025-10-10 16:07:45 +03:00
jvmahon c92107b8d4 Inherit MatterEntityDescription in Matter entities (#154083) 2025-10-10 15:04:01 +02:00
epenet b25622f40e Use SI constants in CO unit converter (#153187) 2025-10-10 14:59:20 +02:00
Petro31 e887d5e6ad Fix delay_on and auto_off with multiple triggers (#153839) 2025-10-10 14:21:11 +02:00
TheJulianJES 1f19e40cfe Adjust OTBR config entry name for ZBT-2 (#153940) 2025-10-10 14:19:08 +02:00
Bram Kragten 3d2d2271d3 Update frontend to 20251001.2 (#154143) 2025-10-10 14:08:17 +02:00
Jack Thomasson d1dd5eecd6 use a consistent python version for uv (#154022) 2025-10-10 13:59:45 +02:00
Jan Bouwhuis cdec29ffb7 Add MQTT select subentry support (#153637) 2025-10-10 13:46:21 +02:00
peteS-UK 07f3e00f18 Fix for multiple Lyrion Music Server on a single Home Assistant server for Squeezebox (#154081) 2025-10-10 13:36:46 +02:00
starkillerOG 084d029168 Add Reolink survaillance rule switch entities (#154132)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 13:35:07 +02:00
tronikos 17e997ee18 Add module-level statistics to SolarEdge (#152581) 2025-10-10 13:07:39 +02:00
J. Diego Rodríguez Royo 16d4c6c95a Add Spotless series features to Home Connect integration (#153016) 2025-10-10 13:00:17 +02:00
epenet 0205a636ef Filter out invalid Renault vehicles (#154070)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-10 12:52:21 +02:00
hanwg 4707fd2f94 Update quality scale for Telegram bot (#154122) 2025-10-10 12:47:55 +02:00
J. Nick Koston ad3cadab83 Bump propcache to 0.4.1 (#154033) 2025-10-10 11:45:58 +01:00
Jordan Harvey 3fce815415 Add reauthentication to Nintendo Switch Parental controls integration (#154077) 2025-10-10 12:31:46 +02:00
Erik Montnemery ee67619cb1 Add mg/m³ as a valid UOM for sensor/number Carbon Monoxide device class (#154074)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-10 11:31:31 +01:00
TheJulianJES 1a744a2c91 Fix HA hardware configuration message for Thread without HAOS (#153933) 2025-10-10 11:37:43 +02:00
Erik Montnemery 951978e483 Include unit class in units_changed statistics issue (#154069) 2025-10-10 10:50:40 +03:00
Marcus Gustavsson 54d30377d3 Add ConfigFlow to Prowl integration (#133771)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-10-10 09:41:45 +02:00
Shay Levy eb04dda197 Use Entity Description in Shelly BLU TRV button (#154118) 2025-10-10 10:24:08 +03:00
Fabien Kleinbourg 1e192aadfa sharkiq dependency bump to 1.4.2 (#153931) 2025-10-10 08:40:20 +02:00
Erwin Douna 6f680f3d03 Portainer fix offline endpoint (#154101) 2025-10-10 08:14:49 +02:00
starkillerOG f0663dc275 Bump reolink-aio to 0.16.2 (#154117) 2025-10-10 02:20:11 +03:00
Paulus Schoutsen 96bb67bef9 Z-Wave: ESPHome discovery to update all options (#154113) 2025-10-09 17:14:53 -04:00
G Johansson 929d76e236 Add validation for ObjectSelector (#153081) 2025-10-09 21:46:03 +02:00
Artur Pragacz fe1ff083de Improve comments in the core config (#154096) 2025-10-09 21:08:16 +02:00
puddly 90c68f8ad0 Prevent reloading the ZHA integration while adapter firmware is being updated (#152626) 2025-10-09 21:00:02 +02:00
Shay Levy 6b79aa7738 Use Entity Description in Shelly cover platform (#154085) 2025-10-09 21:04:06 +03:00
Joost Lekkerkerker f6fb4c8d5a Add unique id to nederlandse spoorwegen (#154013) 2025-10-09 19:00:47 +02:00
hanwg a6e575ecfa Add diagnostics for Telegram bot (#154016) 2025-10-09 18:20:00 +02:00
Thomas D 85392ae167 Bump dependency for Volvo integration (#154084) 2025-10-09 18:15:22 +02:00
G Johansson 9d124be491 Remove deprecated set state directly in alarmcontrolpanel (#154038) 2025-10-09 18:06:13 +02:00
G Johansson 8bca3931ab Remove deprecated cover state constants (#154037) 2025-10-09 18:05:49 +02:00
Kevin McCormack 0367a01287 Enable strict typing for GitHub integration (#154048) 2025-10-09 17:50:24 +02:00
Manu 86e2c2f361 Add jet lag prevention event support to Sleep as Android integration (#154075) 2025-10-09 17:48:44 +02:00
Daniel De Sousa 335c8e50a2 Add switchbot_cloud climate TURN_OFF, TURN_ON support. (#154017) 2025-10-09 17:47:26 +02:00
eskerda 8152a9e5da Update Citybikes component with third-party library and fields (#151009) 2025-10-09 17:27:31 +02:00
Felipe Santos 250e562caf Fix devcontainer mistakenly using Python 3.14 (#154046) 2025-10-09 17:25:59 +02:00
Maciej Bieniek a3b641e53d Bump brother to version 5.1.1 (#154080) 2025-10-09 17:00:41 +02:00
Shay Levy 135ea4c02e Fix Shelly orphaned entity removal logic (#154031) 2025-10-09 16:21:58 +03:00
Simone Chemelli bc980c1212 Bump aioamazondevices to 6.4.0 (#154071) 2025-10-09 15:20:25 +02:00
Shay Levy 59ca88a7e8 Update Shelly block valve platform to use entity description (#154068) 2025-10-09 12:05:19 +03:00
Erik Montnemery d45114cd11 Improve unit handling in recorder (#153941) 2025-10-09 10:29:42 +02:00
David Rapan 2eba650064 Mark Shelly docs-troubleshooting as done (#154066) 2025-10-09 11:22:32 +03:00
Christopher Fenner de4adb8855 Make sensor names translatable in OpenWeatherMap integration (#153872) 2025-10-09 09:47:25 +02:00
Joost Lekkerkerker 1d86c03b02 Migrate Nederlandse Spoorwegen sensor to timestamp (#154011) 2025-10-09 09:25:11 +02:00
Klaas Schoute 77fb1036cc Bump autarco to v3.2.0 (#154039) 2025-10-09 01:13:57 +03:00
Shay Levy b15b4e4888 Fix Shelly virtual components roles migration (#153987) 2025-10-09 00:06:32 +03:00
puddly dddf6d5f1a Add new ZBT-2 VID:PID pair for discovery (#154036) 2025-10-08 15:59:49 -05:00
Abílio Costa 66fb5f4d95 Simplify firing of trigger actions (#152772)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-08 21:40:20 +01:00
hanwg 42a9d5d4e3 Add webhook tests for Telegram bot (#153998) 2025-10-08 20:58:15 +02:00
Maciej Bieniek 93fa162913 Update IQS for IMGW-PIB integration (#153870) 2025-10-08 20:30:05 +02:00
Maciej Bieniek c432b1c8da Add entities for Shely cury component (#153918) 2025-10-08 20:26:29 +02:00
Artur Pragacz 00955b8e6a Fix empty llm api list in chat log (#153996) 2025-10-08 10:39:56 -05:00
Erik Montnemery 045b9d7f01 Correct homeassistant.helpers.trigger._trigger_action_wrapper (#153983) 2025-10-08 17:33:44 +02:00
Aaron Bach 438c4c7871 Limit SimpliSafe websocket connection attempts during startup (#153853)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-08 16:32:17 +02:00
Thomas D abc360460c Add diagnostics to Volvo integration (#153997) 2025-10-08 16:25:33 +02:00
HarvsG 26437bb253 Adds ConfigFlow for London Underground (#152050)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-08 16:17:34 +02:00
epenet 56d953ac1e Use contants in climate set_temperature (#154008) 2025-10-08 16:15:01 +02:00
Joost Lekkerkerker fe4eb8766d Don't mark ZHA coordinator as via_device with itself (#154004) 2025-10-08 16:05:54 +02:00
Mark Adkins 2d9f14c401 Add 3rd maintainer to sharkiq (#153961) 2025-10-08 15:17:52 +02:00
dependabot[bot] 7b6ccb07fd Bump github/codeql-action from 3.30.6 to 4.30.7 (#153979)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-08 13:42:25 +02:00
Shay Levy 2ba5728060 Enable Shelly binary input sensors by default (#154001) 2025-10-08 14:41:53 +03:00
epenet b5f163cc85 Update Tuya fixture for product ID IAYz2WK1th0cMLmL (#154000) 2025-10-08 13:28:11 +02:00
Marc Mueller 65540a3e0b Update mypy dev to 1.19.0a4 (#153995) 2025-10-08 13:24:54 +02:00
Erwin Douna cbf1b39edb Portainer add sensor platform (#153059)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-10-08 11:02:20 +02:00
G Johansson 142daf5e49 Call async_track_template_result with template without hass now fails (#153473)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-08 10:14:51 +02:00
Erik Montnemery 8bd0ff7cca Replace has_mean with mean_type in mill external statistics (#153985) 2025-10-08 09:52:07 +02:00
Erik Montnemery ac676e12f6 Remove has_mean from suez_water external statistics (#153986) 2025-10-08 09:51:44 +02:00
Glenn Vandeuren (aka Iondependent) c0ac3292cd FIx brightness always 100% when toggling the light (#153765)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-08 09:48:41 +02:00
Denis Shulyaka 80fd07c128 Add GPT-5 Pro and GPT-5 Codex support (#153936) 2025-10-08 09:48:07 +02:00
Michael Davie 3701d8859a Bump env-canada to 0.11.3 (#153967) 2025-10-08 09:40:55 +02:00
Jesse Hills 6dd26bae88 Bump aioesphomeapi to 41.13.0 (#153974) 2025-10-07 18:28:56 -10:00
Dave T 1a0abe296c Remove deprecated conductivity constants (#153942) 2025-10-07 23:20:36 +01:00
G Johansson de6c61a4ab Bump psutil 7.1.0 (#153954) 2025-10-07 23:16:49 +01:00
Glenn Vandeuren (aka Iondependent) 33c677596e Update nhc to 0.6.1 (#153962) 2025-10-07 23:16:04 +01:00
peetersch e9b4b8e99b Modbus Fix message_wait_milliseconds is no longer applied (#153709) 2025-10-07 23:38:05 +02:00
Maciej Bieniek 0525c04c42 Fix update interval for AccuWeather hourly forecast (#153957) 2025-10-07 23:25:04 +02:00
Shay Levy d57b502551 Migrate Shelly virtual button platfrom unique IDs to include roles (#153865) 2025-10-07 23:01:30 +03:00
G Johansson 9fb708baf4 Bump holidays to 0.82 (#153952) 2025-10-07 23:00:38 +03:00
Josef Zweck abdf24b7a0 Bump pylamarzocco to 2.1.2 (#153950) 2025-10-07 22:07:39 +03:00
TheJulianJES 29bfbd27bb Do not auto-set up ZHA zeroconf discoveries during onboarding (#153914) 2025-10-07 15:02:02 -04:00
starkillerOG 224553f8d9 Reverse Motion Blinds tilt direction (#149777)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-10-07 18:50:39 +01:00
mbo18 7c9f6a061f Add icons for SmartThings climate presets (#153929) 2025-10-07 19:15:15 +02:00
Marc Mueller 8e115d4685 Update pydantic to 2.12.0 (#153937) 2025-10-07 17:50:40 +01:00
Denis Shulyaka 00c189844f Bump openai to 2.2.0 (#153926) 2025-10-07 17:41:52 +01:00
Ståle Storø Hauknes 4587c286bb Add new sensors for Airthings Wave Enhance (#153879) 2025-10-07 17:44:30 +02:00
Artur Pragacz b46097a7fc Move agent functionality from http (#153917) 2025-10-07 14:49:11 +02:00
mbo18 299cb6a2ff Change smart preset name to smart saver (#153916) 2025-10-07 14:11:00 +02:00
Erik Montnemery 1b7b91b328 Remove unused test fixtures from nintendo_parental (#153894) 2025-10-07 14:03:29 +02:00
Maciej Bieniek 01a1480ebd Use aioshelly methods for switches (#153746) 2025-10-07 13:28:58 +02:00
Jordan Harvey 26b8abb118 Bump pynintendoparental to 1.1.1 (#153874) 2025-10-07 13:28:08 +02:00
FMKaiba 53d1bbb530 Add support for gas detector status to SmartThings (#153831)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-10-07 12:56:53 +02:00
Tom Matheussen a3ef55274e Add missing translation string for Satel Integra subentry type (#153905) 2025-10-07 12:18:51 +02:00
Joost Lekkerkerker 2034915457 Add fixture to SmartThings (#153902) 2025-10-07 12:13:12 +02:00
Joost Lekkerkerker 9e46d7964a Update SmartThings comments (#153903) 2025-10-07 11:46:44 +02:00
Maciej Bieniek f9828a227b Bump aioshelly to version 13.12.0 (#153899) 2025-10-07 11:43:56 +02:00
Simone Chemelli 3341fa5f33 Code optimization for Comelit SimpleHome (#153029) 2025-10-07 10:31:44 +01:00
Christopher Fenner e38ae47e76 Add language and location selector to OpenWeatherMap config flow (#153645)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-07 11:06:04 +02:00
Christopher Fenner 934c0e3c4c fix typo in icon assignment of AccuWeather integration (#153890) 2025-10-07 10:15:01 +02:00
Simone Chemelli 994a6ae7ed Fix restore cover state for Comelit SimpleHome (#153887) 2025-10-07 09:06:55 +02:00
Christopher Fenner cdbe93c289 Set display precision for sensors in OpenWeatherMap integration (#153858) 2025-10-07 08:58:18 +02:00
Marc Mueller 56f90e4d96 Update pytest warnings filter (#153881) 2025-10-07 09:55:50 +03:00
TheJulianJES 34977abfec Remove Z-Wave JS voltage sensor overriding suggested precision (#153882) 2025-10-07 08:44:53 +02:00
Marc Mueller 5622103eb1 Fix nintendo_parental RuntimeWarning in tests (#153884) 2025-10-07 08:44:34 +02:00
Artur Pragacz b9a1ab4a44 Clean up core references in conversation (#153880) 2025-10-07 00:46:47 +02:00
David Rapan 18997833c4 Shelly's power sensors naming paradigm standardization (#153822)
Signed-off-by: David Rapan <david@rapan.cz>
2025-10-07 01:32:44 +03:00
David Rapan f99b194afc Shelly's current sensors naming paradigm standardization (#153827)
Signed-off-by: David Rapan <david@rapan.cz>
2025-10-07 01:32:25 +03:00
Dave T 566a347da7 Remove deprecated alarm panel constants (#153876) 2025-10-06 23:03:29 +01:00
Shay Levy 881306f6a4 Migrate Shelly virtual component unique IDs to include roles (#153844) 2025-10-07 00:50:47 +03:00
Marc Mueller f63504af01 Update aiohttp to 3.13.0 (#153875) 2025-10-06 15:47:33 -05:00
derytive d140b82a70 Add plate_count for Miele KM7575 (#153868) 2025-10-06 21:53:09 +02:00
Allen Porter 681211b1a5 Add Model Context Protocol support for OAuth scopes (#153150) 2025-10-06 15:32:42 -04:00
Joost Lekkerkerker 6c8b1f3618 Catch update exception in AirGradient (#153828) 2025-10-06 21:31:55 +02:00
Abílio Costa d341065c34 Replace inner function with lambda in Idasen Desk (#153862) 2025-10-06 21:25:10 +02:00
G Johansson 81b1346080 Handle timeout errors gracefully in Nord Pool services (#153856) 2025-10-06 22:15:38 +03:00
J. Nick Koston 5613be3980 Bump yarl to 1.22.0 (#153860) 2025-10-06 13:43:37 -05:00
Alec fbcf0eb94c Increase connect and configuration time for rfxtrx (#153834)
Increase the allowed time for connection and configuration. Some devices take a long time to respond to configuration changes and this time is counted for both network and configuration of the device.
2025-10-06 20:25:44 +02:00
Felipe Santos 1c7b9cc354 Avoid storing entities list in ONVIF binary_sensor and sensor (#153857) 2025-10-06 19:52:24 +02:00
William Scanlon 75e900606e Update water heater max temperature (#150970) 2025-10-06 19:21:21 +02:00
Norbert Rittel 7c665c53b5 Change translation of box in number to "Input field" for consistency (#153850) 2025-10-06 19:07:48 +02:00
Jordan Harvey f72047eb02 Add new Nintendo Parental Controls integration (#145343)
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-06 18:36:46 +02:00
Marc Mueller ade424c074 Update attrs to 25.4.0 (#153849) 2025-10-06 17:54:19 +02:00
Joost Lekkerkerker 5ad805de3c Add motion presets to SmartThings AC (#153830) 2025-10-06 17:29:33 +02:00
Simone Chemelli ece77cf620 Fix PIN validation for Comelit SimpleHome (#153840) 2025-10-06 17:02:50 +02:00
Simone Chemelli 7eaa559056 Bump aiocomelit to 1.1.1 (#153843) 2025-10-06 16:57:40 +02:00
Allen Porter 08a9377373 Update the MCP Server API endpoint to mcp (#153845) 2025-10-06 16:56:45 +02:00
Jan Bouwhuis a2837e6aee Add MQTT number subentry support (#153358) 2025-10-06 16:50:42 +02:00
Abílio Costa fa03f6194d Remove log file write check (#153842) 2025-10-06 16:49:04 +02:00
Felipe Santos d2851ea1df Deduplicate ONVIF sensor and binary sensor entity names (#153505) 2025-10-06 16:35:48 +02:00
Pavel Tarasov 72f8ac7857 Add BME680 sensor support for Altruist Insight (#153463) 2025-10-06 15:55:37 +02:00
NANI 77a267bc2f Updated VRM client and accounted for missing forecasts (#153464) 2025-10-06 15:37:49 +02:00
Arie Catsman ad238daadc Enphase_envoy to use alternate data source for current transformers (#153621) 2025-10-06 15:33:25 +02:00
Øyvind Matheson Wergeland 42370ba203 Synology DSM: Don't reinitialize API during configuration (#153739) 2025-10-06 15:25:10 +02:00
Christopher Fenner d9691c2a3b Add sensor for hydraulic separator temperature in ViCare integration (#153696) 2025-10-06 15:15:51 +02:00
Michael 66cca981a9 Expose climate current temp as dedicated sensor in FRITZ!SmartHome (#153558) 2025-10-06 15:00:29 +02:00
Ståle Storø Hauknes 9640ebb593 Add support for Wave Enhance and Corentium Home 2 in Airthings BLE integration (#153780) 2025-10-06 14:59:21 +02:00
Joost Lekkerkerker 645f32fd65 Bump pySmartThings to 3.3.1 (#153826) 2025-10-06 14:57:52 +02:00
hanwg cb6e65f972 Refactor Telegram bot entity (#153609)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-06 14:57:46 +02:00
cdnninja 425bdc0ba6 Vesync add oscillation to fan (#153297) 2025-10-06 14:50:11 +02:00
cdnninja c36341e51f vesync correct fan set modes (#153761) 2025-10-06 14:49:05 +02:00
Robert Resch 553d896899 Add Ecovacs active map select entity (#153748)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-06 14:42:01 +02:00
Åke Strandberg ac79b3072e Use customized miele device name if set (#153835) 2025-10-06 14:40:57 +02:00
Andrew Jackson c0aa9bfd4b Update Mealie quality scale to platinum (#153810) 2025-10-06 12:14:05 +02:00
epenet e97100028d Add new test fixture for Tuya cl category (#153800) 2025-10-06 11:51:10 +02:00
tronikos da89617432 Google Assistant SDK: improve init tests (#153795) 2025-10-06 11:49:06 +02:00
dependabot[bot] e6203dffd3 Bump actions/stale from 10.0.0 to 10.1.0 (#153799)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 11:45:39 +02:00
Josef Zweck c13cfe9c37 Re-add AGENTS.md as symlink (#153804) 2025-10-06 11:45:21 +02:00
Ludovic BOUÉ 2447df9341 Add Matter speaker mute toggle (#150104)
Add Matter speaker mute toggle functionality:
- OnOff attribute == True state means volume is on, so HA should show mute switch as off
- OnOff attribute == False means volume is off (muted), so HA should show mute switch as on
2025-10-06 11:09:59 +02:00
Erik Montnemery 1c1fbe0ec1 Log when failing to remove foreign key in recorder EventIDPostMigration (#153812) 2025-10-06 10:58:47 +02:00
Erik Montnemery 4a6d2017fd Fix stale docstring in recorder (#153811) 2025-10-06 10:58:24 +02:00
Simone Chemelli b4997a52df Remove stale entities from Alexa Devices (#153759) 2025-10-06 10:57:21 +02:00
Joris Pelgröm 464dec1dcb Update LetPot integration quality scale to silver (#153783) 2025-10-06 10:28:43 +02:00
tronikos 85506ac78a Google Assistant SDK: use setup_credentials in setup_integration (#153793) 2025-10-06 10:23:44 +02:00
Marc Mueller 6d97355b42 Update raspyrfm-client to 1.2.9 (#153789) 2025-10-06 10:20:15 +02:00
Ludovic BOUÉ f9e75c616a Use TEMPERATURE_SCALING_FACTOR for Matter sensors (#153807) 2025-10-06 10:15:37 +02:00
tronikos a821d02dfb Translate reauthentication error message in Google Assistant SDK (#153797)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-06 01:10:40 -07:00
epenet e05169c7a4 Fix Tuya cover position when only control is available (#153803) 2025-10-06 08:50:38 +02:00
tronikos 1cc3431529 Fix missing google_assistant_sdk.send_text_command (#153735) 2025-10-05 23:46:03 -07:00
Maciej Bieniek 4ba765f265 Add Shelly Wall Display XL to the list of devices without firmware changelog (#153781) 2025-10-06 06:52:15 +02:00
Paulus Schoutsen 50a7af4179 Handle ESPHome discoveries with uninitialized Z-Wave antennas (#153790) 2025-10-05 23:06:10 -04:00
Allen Porter e0a2116e88 Update MCP server to support the newer HTTP protocol (#153779)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2025-10-05 21:16:53 -04:00
Aidan Timson d8e1ed5f4a Fix power device classes for system bridge (#153201) 2025-10-05 23:52:35 +02:00
Denis Shulyaka f1b8e8a963 Ollama thinking content (#150393) 2025-10-05 17:33:45 -04:00
Marc Mueller 9a9fd44c62 Use yaml anchors in ci workflow (#152586) 2025-10-05 23:21:38 +02:00
G Johansson bc3fe7a18e Use automatic reload options flow in min_max (#153143) 2025-10-05 23:17:37 +02:00
G Johansson 19f3559345 Remove previously deprecated template attach function (#153370) 2025-10-05 23:16:57 +02:00
Jan Bouwhuis fad0e23797 Allow to set the manufacturer in a MQTT device subentry setup (#153747) 2025-10-05 23:15:00 +02:00
Erik Montnemery 7f931e4d70 Add device class filter to hydrawise services (#153249) 2025-10-05 23:14:12 +02:00
Erik Montnemery a04835629b Make hassfest fail on services with device filter on targets (#152794) 2025-10-05 23:13:33 +02:00
Andrew Jackson 78cd80746d Bump aiomealie to 1.0.0, update min Mealie instance version to v2. (#153203) 2025-10-05 23:12:05 +02:00
G Johansson 9ac93920d8 Cleanup process_fds addition in systemmonitor (#153568) 2025-10-05 22:41:19 +02:00
G Johansson 1818fce1ae Validating schema outside the event loop will now fail (#153472) 2025-10-05 22:37:14 +02:00
Erik Montnemery f524edc4b9 Add pytest command line option to drop recorder db before test (#153527) 2025-10-05 22:36:24 +02:00
Paulus Schoutsen 19f990ed31 ESPHome to set Z-Wave discovery as next_flow (#153706) 2025-10-05 22:33:12 +02:00
David Rapan 5d83c82b81 Shelly's energy sensors naming paradigm standardization (#153729) 2025-10-05 22:32:39 +02:00
Fredrik Erlandsson d63d154457 Daikin increase timeout (#153722)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-05 22:18:31 +02:00
Josef Zweck 933b15ce36 Revert "AGENTS.md" (#153777) 2025-10-05 22:05:04 +02:00
Denis Shulyaka 6ec7b63ebe Add support for Anthropic Claude Sonnet 4.5 (#153769) 2025-10-05 21:29:24 +02:00
Denis Shulyaka 26bfbc55e9 Bump anthropic to 0.69.0 (#153764) 2025-10-05 20:59:50 +02:00
Simone Chemelli d75ca0f5f3 Bump aioamazondevices to 6.2.9 (#153756) 2025-10-05 20:59:02 +02:00
Sander Jochems fed8f137e9 Upgrade python-melcloud to 0.1.2 (#153742) 2025-10-05 19:49:22 +02:00
Josef Zweck f44d65e023 Migrate tolo to entry.runtime_data (#153744) 2025-10-05 18:43:37 +02:00
Christopher Fenner a270bd76de Add sensors for battery charge amount to ViCare integration (#153631)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-05 18:34:45 +02:00
Christopher Fenner 9209e419ec Change style for critical number entities in ViCare integration (#153634) 2025-10-05 16:36:42 +02:00
Ståle Storø Hauknes 98f8f15e90 Fix crash when setting up Airthings BLE device (#153510) 2025-10-05 09:18:47 -05:00
Denis Shulyaka b2a2868afd AGENTS.md (#153680) 2025-10-05 15:51:46 +02:00
J. Nick Koston 0d4737d360 Bump aiohomekit to 3.2.20 (#153750) 2025-10-05 15:49:55 +02:00
Ståle Storø Hauknes 2b370a0eca Use full serial number when adding an Airthings device (#153499) 2025-10-05 08:23:02 -05:00
Ståle Storø Hauknes 618fe81207 Check if firmware is outdated when adding an Airthings BLE device (#153559) 2025-10-05 14:49:34 +02:00
Maciej Bieniek c0fe4861f9 Align Shelly presencezone entity to the new API/firmware (#153737) 2025-10-05 15:36:57 +03:00
Simone Chemelli dfd33fdab1 Fix sensors availability check for Alexa Devices (#153743) 2025-10-05 14:26:16 +02:00
Josef Zweck cceee05c15 Fix lamarzocco brewing start time sensor availability (#153732) 2025-10-05 13:04:28 +02:00
Manu f560d2a05e Update suggested display precision for ntfy attachment size to 2 (#153741) 2025-10-05 13:03:55 +02:00
Ville Skyttä 3601cff88e Upgrade upcloud-api to 2.9.0 (#153727) 2025-10-05 13:58:35 +03:00
Maciej Bieniek ca5c0a759f Remove Shelly presencezone component from VIRTUAL_COMPONENTS tuple (#153740) 2025-10-05 13:46:42 +03:00
Tom 6f9e6909ce Bump airOS to 0.5.5 using formdata for v6 firmware (#153736) 2025-10-05 12:43:43 +02:00
Manu ccf563437b Bump aiontfy to v0.6.1 (#153738) 2025-10-05 12:34:18 +02:00
Josef Zweck 78e97428fd Add debouncer to acaia (#153725) 2025-10-05 12:31:45 +02:00
Denis Shulyaka 8b4c730993 Gemini: Use default model instead of recommended where applicable (#153676) 2025-10-05 02:59:51 -07:00
Fredrik Erlandsson 0a071a13e2 Version bump pydaikin to 2.17.1 (#153726) 2025-10-05 11:12:10 +02:00
Shay Levy ab80991eac Add Shelly support for climate entities (#153450)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-05 11:53:52 +03:00
Erwin Douna ee7262efb4 Portainer add button platform (#153063) 2025-10-05 10:36:52 +02:00
Fredrik Erlandsson ea5a52cdc8 Version bump pydaikin to 2.17.0 (#153718) 2025-10-05 10:49:14 +03:00
tronikos 31fe0322ab Clarify description for media player entity in Google Assistant SDK (#153715) 2025-10-05 09:47:46 +02:00
tronikos e8e0eabb99 Double max retries in Google Drive (#153717) 2025-10-05 10:35:50 +03:00
tronikos 1629dad1a8 Bump opower to 0.15.6 (#153714) 2025-10-05 09:25:45 +02:00
Shay Levy d9baad530a Shelly code quality and cleanup (#153692) 2025-10-05 09:14:13 +02:00
cdnninja 4a1d00e59a Bump pyvesync to 3.1.0 (#153693) 2025-10-05 09:56:25 +03:00
Daniel Hjelseth Høyer 437e4e027c Bump Mill library (#153683)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-10-05 09:55:48 +03:00
J. Nick Koston 3726f7eca9 Bump zeroconf to 0.148.0 (#153704) 2025-10-04 21:57:00 -05:00
Marc Mueller c943cf515c Add zeroconf to hassfest version requirements (#153703) 2025-10-05 02:55:35 +02:00
Christopher Fenner 3b0c2a7e56 Fix ViCare pressure sensors missing unit of measurement (#153691) 2025-10-05 02:14:32 +02:00
Christopher Fenner 6ebaa9cd1d Bump PyViCare to 2.52.0 (#153629) 2025-10-05 02:05:53 +02:00
J. Nick Koston f81c32f6ea Bump aioesphomeapi to 41.12.0 (#153698) 2025-10-04 18:55:36 -05:00
J. Nick Koston c0cd7a1a62 Bump propcache to 0.4.0 (#153694) 2025-10-04 18:03:53 -05:00
J. Nick Koston 7a61c818c6 Bump ulid-transform to 1.5.2 (#153690) 2025-10-04 23:51:59 +02:00
J. Nick Koston 2800625bcf Bump dbus-fast to 2.44.5 (#153686) 2025-10-04 23:04:37 +02:00
J. Nick Koston cfec998221 Bump fnv-hash-fast to 1.6.0 (#153682) 2025-10-04 15:25:11 -05:00
Joakim Plate 7203cffbd7 Schedule update coordinator again if it is active (#153596) 2025-10-04 15:13:41 -05:00
Josef Zweck 23397ef6a9 Smarter calculation of chunk size in onedrive (#153679)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-04 21:52:58 +02:00
Joakim Plate 0e154635ff Limit shelly tests to single platform (#153681) 2025-10-04 22:45:48 +03:00
J. Nick Koston 2e6e518722 Bump cached-ipaddress to 1.0.1 (#153670) 2025-10-04 13:49:13 -05:00
J. Nick Koston e0cded97c7 Bump bleak-esphome to 3.4.0 (#153669) 2025-10-04 20:38:56 +02:00
J. Nick Koston 87a6a029bb Bump habluetooth to 5.7.0 (#153665) 2025-10-04 12:16:51 -05:00
Jan Bouwhuis 1cc3c22d3f Fix MQTT Lock state reset to unknown when a reset payload is received (#153647) 2025-10-04 17:32:18 +02:00
Marc Mueller 2341d1d965 Fix flaky template test (#153624) 2025-10-04 18:28:36 +03:00
J. Nick Koston a0bae9485c Bump bluetooth-data-tools to 1.28.3 (#153653) 2025-10-04 18:27:09 +03:00
J. Nick Koston f281b0fc6b Bump annotatedyaml to 1.0.2 (#153651) 2025-10-04 18:26:55 +03:00
Manu 6f89fe81cc Remove Plum Lightpad integration (#153590) 2025-10-04 16:42:28 +02:00
Hessel 34f6ead7a1 Wallbox fix Rate Limit issue for multiple chargers (#153074) 2025-10-04 16:38:11 +02:00
Kevin McCormack 8985527a87 Bump libpyvivotek to 0.6.1 and add strict typing for Vivotek integration (#153342)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-04 16:34:37 +02:00
Marc Mueller bd87a3aa4d Update PyYAML to 6.0.3 (#153626) 2025-10-04 16:27:22 +02:00
Manu 768a505904 Add translations and icons to OralB integration (#153605) 2025-10-04 16:23:27 +02:00
Marc Mueller d97c1f0fc3 Update grpcio to 1.75.1 (#153643) 2025-10-04 16:21:16 +02:00
Joakim Plate c3fcd34d4c Fix blue current mocking out platform with empty string (#153604)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-04 15:17:56 +02:00
Joakim Plate 44d9eaea95 Correct kraken test issues (#153601) 2025-10-04 12:25:35 +02:00
G Johansson 0f34f5139a Fix sql repair string (#153619) 2025-10-04 10:39:26 +02:00
Ludovic BOUÉ 2afb1a673d Add Matter Thermostat OccupancySensor (#153166)
Co-authored-by: Björn Ebbinghaus <bjoern@ebbinghaus.me>
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-10-04 10:31:17 +02:00
G Johansson c2f7f29630 Setup platform services during integration start in sensibo (#153571) 2025-10-04 10:30:01 +02:00
G Johansson b01f5dd24b Raise repairs on platform setup for sql (#153581) 2025-10-04 07:02:36 +02:00
Luke Lashley 0cda0c449f Update the map parser in Roborock vacuum to use coord parser. (#153520) 2025-10-03 19:59:57 -07:00
dollaransh17 40fdf12bc9 Fix string interpolation in local_todo error messages (#153580)
Co-authored-by: dollaransh17 <dollaransh17@users.noreply.github.com>
2025-10-03 19:57:50 -07:00
Luke Lashley 3939a80302 Switch Roborock to v4 of the code login api (#153593) 2025-10-03 19:41:39 -07:00
Luke Lashley d32a102613 Add two new consumable sensors to Roborock (#153606) 2025-10-03 19:38:29 -07:00
Felipe Santos 20949d39c4 Address comments for the add-on switch entity (#153518) 2025-10-04 02:22:59 +02:00
Kevin Stillhammer 310a0c8d13 Use SensorDescription for GoogleTravelTimeSensor (#153585) 2025-10-04 01:29:26 +02:00
Arie Catsman c9e80ac7e9 Extend enphase_envoy test data with new library data fields (#153591) 2025-10-04 01:24:11 +02:00
G Johansson 5df4e9e1cf Bump pynordpool to 0.3.1 (#153599) 2025-10-04 01:23:09 +02:00
Simone Chemelli 4022ee74e8 Bump aioamazondevices to 6.2.8 (#153592) 2025-10-04 01:22:15 +02:00
Erwin Douna 80a4115c44 Portainer follow-up points (#153594) 2025-10-03 22:36:55 +02:00
Manu ce548efd80 Remove IBM Watson IoT Platform integration (#153567) 2025-10-03 21:18:39 +02:00
dependabot[bot] 2edf622b41 Bump github/codeql-action from 3.30.5 to 3.30.6 (#153524)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-03 21:15:47 +02:00
Manu 66ac9078aa Improve Habitica tests (#153573) 2025-10-03 20:55:38 +02:00
Erwin Douna ba75f18f5a Portainer add switch platform (#153485)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-03 20:52:37 +02:00
Arie Catsman 8ee2ece03e Bump pyenphase to 2.4.0 (#153583) 2025-10-03 21:14:34 +03:00
Michael 7060ab8c44 Remove Vultr integration (#153560) 2025-10-03 21:12:26 +03:00
Paulus Schoutsen 85d8244b8a When discovering a Z-Wave adapter, always configure add-on in config flow (#153575) 2025-10-03 19:16:51 +02:00
Abílio Costa 3f9421ab08 Debounce updates in Idasen Desk (#153503) 2025-10-03 18:39:14 +02:00
Luke Lashley 2f3fbf00b7 Bump python-roborock to 2.50.2 (#153561) 2025-10-03 09:30:30 -07:00
Paulus Schoutsen d595ec8a07 Z-Wave to support migrating from USB to socket with same home ID (#153522) 2025-10-03 10:46:12 -04:00
Ståle Storø Hauknes 4ff5462cc4 Bump Airthings BLE to 1.1.1 (#153529) 2025-10-03 15:50:20 +02:00
Shay Levy 404f95b442 Add Shelly support for valve entities (#153348) 2025-10-03 15:04:35 +03:00
cdnninja 89cf784022 Fix VeSync zero fan speed handling (#153493)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-10-03 11:56:02 +02:00
Copilot 02142f352d Fix awair integration AttributeError when update listener accesses runtime_data (#153521)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: balloob <1444314+balloob@users.noreply.github.com>
2025-10-03 05:49:41 -04:00
Stefan Agner ec3dd7d1e5 Add num open fds sensor to systemmonitor (#152441)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-10-03 10:53:02 +02:00
Ståle Storø Hauknes 7355799030 Fix typo in Airthings BLE config flow (#153512) 2025-10-03 08:20:17 +02:00
Erik Montnemery 982166df3c Remove module recorder.history.modern (#153502) 2025-10-03 01:00:09 +02:00
puddly c7d3512ad2 Bump universal-silabs-flasher to 0.0.35 (#153500) 2025-10-03 00:18:05 +02:00
Aidan Timson ada6f7b3fb Update ovoenergy to 3.0.2 (#153488) 2025-10-02 22:44:28 +01:00
Erik Montnemery 78e16495bd Remove runtime support for recorder DB without States.last_reported_ts (#153495) 2025-10-02 23:15:15 +02:00
starkillerOG 12085e6152 Improve Reolink docstrings (#153498) 2025-10-02 23:10:27 +02:00
starkillerOG 6764463689 Use new Reolink rec_enable flag (#153496) 2025-10-02 23:09:43 +02:00
starkillerOG 7055276665 Allign naming of Reolink host switch entities (#153494) 2025-10-02 23:09:17 +02:00
starkillerOG 71b3ebd15a Cleanup reolink update entity migration (#153492) 2025-10-02 22:49:55 +02:00
starkillerOG b87910e596 Bump reolink-aio to 0.16.1 (#153489) 2025-10-02 22:49:39 +02:00
Erik Montnemery e19bfd670b Bump recorder live schema migration to schema version 48 (#153404) 2025-10-02 22:47:01 +02:00
dollaransh17 7b3c96e80b Remove deprication code for reolink Hub switches (#153483)
Thank you, good work!
2025-10-02 22:37:08 +02:00
Erik Montnemery 01ff3cf9d9 Start recorder data migration after schema migration (#153471) 2025-10-02 22:21:49 +02:00
Erik Montnemery d66da0c10d Respect filtering of WS subscribe_entities when there are unserializalizable states (#153262) 2025-10-02 22:20:45 +02:00
Josef Zweck 3491bb1b40 Fix missing parameter pass in onedrive (#153478) 2025-10-02 22:17:56 +02:00
G Johansson 3bf995eb71 Fix next event in workday calendar (#153465) 2025-10-02 22:17:11 +02:00
Joost Lekkerkerker 2169ce1722 Remove state attributes from Firefly 3 (#153285) 2025-10-02 22:14:51 +02:00
Joost Lekkerkerker 275e9485e9 Fix missing powerconsumptionreport in Smartthings (#153438) 2025-10-02 22:08:48 +02:00
Daniel Hjelseth Høyer 95198ae540 Bump pyTibber to 0.32.2 (#153484) 2025-10-02 21:04:32 +02:00
Aidan Timson aed2d3899d Update OVOEnergy to 3.0.1 (#153476) 2025-10-02 21:04:16 +02:00
Erik Montnemery 4011d62ac7 Improve enable_migrate_event_ids recorder test fixture (#153470)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-10-02 21:03:26 +02:00
Björn Ebbinghaus d2aa0573de Add relative humidity to matter climate entities (#152554)
OK after talking with Marcel.
2025-10-02 20:44:19 +02:00
Ståle Storø Hauknes 571b2e3ab6 Fix Airthings config flow description (#153452) 2025-10-02 20:38:27 +02:00
peteS-UK a7f48360b7 Add PARALLEL_UPDATES to Squeezebox switch platform (#153477) 2025-10-02 20:32:37 +02:00
Erik Montnemery 22f2f8680a Improve recorder migration tests dropping indices (#153456) 2025-10-02 20:16:24 +02:00
Aidan Timson d92004a9e7 Add missing translation for media browser default title (#153430)
Co-authored-by: Erwin Douna <e.douna@gmail.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-10-02 19:33:57 +02:00
Norbert Rittel 64875894d6 Fix sentence-casing in user-facing strings of slack (#153427) 2025-10-02 19:27:28 +02:00
Ståle Storø Hauknes 3f7a288526 Add data_description field for Airthings BLE (#153442) 2025-10-02 19:25:59 +02:00
Ståle Storø Hauknes a2a067a81c Add serial number to the list of discovered devices (#153448) 2025-10-02 19:25:19 +02:00
Erwin Douna f9f61b8da7 Portainer add configuration URL's (#153466) 2025-10-02 19:22:34 +02:00
Paul Bottein cd69b82fc9 Add light, security and climate panel (#153261) 2025-10-02 13:06:53 -04:00
Shay Levy d20631598e Bump aioshelly 13.11.0 (#153458) 2025-10-02 19:44:24 +03:00
puddly 229ebe16f3 Disable baudrate bootloader reset for ZBT-2 (#153443) 2025-10-02 17:36:10 +01:00
G Johansson a172f67d37 Fix Nord Pool 15 minute interval (#153350) 2025-10-02 18:26:33 +02:00
Joost Lekkerkerker ee4a1de566 Add translation for turbo fan mode in SmartThings (#153445)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-02 18:45:37 +03:00
epenet 7ab99c028c Add new test fixture for Tuya wk category (#153457) 2025-10-02 17:29:14 +02:00
TheJulianJES 0e1d12b1ae Fix Z-Wave RGB light turn on causing rare ZeroDivisionError (#153422) 2025-10-02 17:26:49 +02:00
Artur Pragacz e090ddd761 Move entities to the end of devices in analytics payload (#153449) 2025-10-02 16:36:38 +02:00
Stefan Agner 9721ce6877 Update Home Assistant base image to 2025.10.0 (#153441) 2025-10-02 15:17:59 +02:00
MoonDevLT 8dde94f421 Add Lunatone gateway integration (#149182)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-02 12:55:17 +01:00
dollaransh17 f5f6b22af1 Fix spelling error in logbook tests (#153417)
Co-authored-by: dollaransh17 <dollaransh17@users.noreply.github.com>
2025-10-02 12:49:22 +02:00
Tom Matheussen f8a93b6561 Add Quality Scale to Satel Integra (#153122) 2025-10-02 12:48:34 +02:00
epenet 840a03f048 Add new dehumidifier fixture for Tuya (#153407) 2025-10-02 12:15:28 +02:00
Erwin Douna 85f3b5ce78 Firefly III add re-auth flow (#153303)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-10-02 12:15:10 +02:00
Michael f4284fec2f Explicit pass in the config entry to coordinator in airtouch4 (#153361)
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-10-02 11:54:20 +02:00
Abílio Costa 3a89b3152f Move common Uptime Robot new device check logic to helper (#153094)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-02 10:52:22 +01:00
epenet a0356328c3 Use walrus and combine conditions in Tuya alarm control panel (#153426) 2025-10-02 11:52:08 +02:00
Michael J. Kidd 4b6f37b1d7 Pushover: Handle empty data section properly (#153397) 2025-10-02 11:48:03 +02:00
johanzander 716705fb5a Adds token authentication and usage of official API for Growatt MIN/TLX inverters (#149783) 2025-10-02 11:40:53 +02:00
J. Nick Koston d246836480 Bump aiohomekit to 3.2.19 (#153423) 2025-10-02 11:17:17 +02:00
Guido Schmitz 6ee2b82d15 Cleanup sync_callback in devolo Home Control (#153321) 2025-10-02 11:11:19 +02:00
Luke Lashley 73ff8d36a5 Bump python-roborock to 2.49.1 (#153396) 2025-10-02 11:09:44 +02:00
Manu 1397def3b8 Add last check-in sensor to Habitica integration (#153293) 2025-10-02 11:03:21 +02:00
epenet d443529041 Add more sensors to Tuya weather monitor (#153420) 2025-10-02 10:58:24 +02:00
G Johansson 373bb20f1b Remove deprecated entity feature constants in vacuum (#153364) 2025-10-02 10:46:34 +02:00
Erik Montnemery 3b44cce6dc Improve recorder migration test (#153405) 2025-10-02 10:45:04 +02:00
Joakim Plate 46056fe45b Correct blocking update in ToGrill with lack of notifications (#153387) 2025-10-02 10:44:42 +02:00
epenet 1816c190b2 Add test fixture for new Tuya cjkg category (#153411) 2025-10-02 10:43:54 +02:00
Josef Zweck 00abaee6b3 Increase onedrive upload chunk size (#153406) 2025-10-02 10:43:10 +02:00
Manu 3a301f54e0 Update markdown field description in ntfy integration (#153421) 2025-10-02 10:40:33 +02:00
Denis Shulyaka 762accbd6d Disable thinking for unsupported gemini models (#153415) 2025-10-02 10:38:31 +02:00
Tom Matheussen e0422d7d34 Fix Satel Integra creating new binary sensors on YAML import (#153419) 2025-10-02 10:37:41 +02:00
Erwin Douna 6ba2057a88 Bump pyportainer 1.0.3 (#153413) 2025-10-02 10:34:11 +02:00
epenet 752969bce5 Add test fixture for new Tuya jsq category (#153412) 2025-10-02 10:33:02 +02:00
Franck Nijhof efbdfd2954 Merge branch 'master' into dev 2025-10-02 07:06:58 +00:00
Erik Montnemery bb7a177a5d Improve recorder migration tests (#153388) 2025-10-02 07:45:04 +02:00
Kinachi249 9b56ca8cde Bump PyCync to 0.4.1 (#153401) 2025-10-02 07:11:34 +02:00
starkillerOG b0a08782e0 Add Roborock mop intensity translations (#153380) 2025-10-01 22:51:26 +02:00
G Johansson 6c9955f220 Remove deprecated constants in camera (#153363) 2025-10-01 22:20:34 +02:00
G Johansson f56b94c0f9 Remove deprecated constants from media_player (#153366) 2025-10-01 22:20:07 +02:00
G Johansson 3cf035820b Remove deprecated state constants from lock (#153367) 2025-10-01 22:16:52 +02:00
Erik Montnemery 99a796d066 Remove legacy history queries from recorder (#153324) 2025-10-01 22:06:56 +02:00
Erik Montnemery 1cd1b1aba8 Remove to_native method from recorder database schemas (#153334) 2025-10-01 21:25:05 +02:00
Ståle Storø Hauknes 4131c14629 Add parallel updates to airthings_ble (#153315) 2025-10-01 20:14:23 +02:00
Tom c2acda5796 Bump airOS module for alternative login url (#153317) 2025-10-01 20:11:35 +02:00
Marc Mueller 4806e7e9d9 Update cryptography to 46.0.2 (#153327) 2025-10-01 19:52:57 +02:00
Marc Mueller 76606fd44f Update types packages (#153330) 2025-10-01 19:51:37 +02:00
Andre Lengwenus 2983f1a3b6 Explicitly check for None in raw value processing of modbus (#153352) 2025-10-01 19:48:35 +02:00
Michael 8019779b3a Set config entry to None in ProxmoxVE (#153357) 2025-10-01 19:45:34 +02:00
Marc Mueller 62cdcbf422 Misc typing improvements (#153322) 2025-10-01 19:30:41 +02:00
Marc Mueller b12a5a36e1 Update bcrpyt to 5.0.0 (#153325) 2025-10-01 20:07:45 +03:00
epenet e32763e464 Add water heater fixture for Tuya tests (#153336) 2025-10-01 20:02:54 +03:00
Stefan Agner b85cf3f9d2 Bump aiohasupervisor to 0.3.3 (#153344) 2025-10-01 20:01:53 +03:00
puddly 3777bcc2af Do not reset the adapter twice during ZHA options flow migration (#153345) 2025-10-01 18:22:41 +02:00
Franck Nijhof 9a29cc53ef 2025.10.0 (#152881) 2025-10-01 18:17:36 +02:00
Maciej Bieniek 52cde48ff0 Add missing test for Shelly config flow (#153346) 2025-10-01 18:32:57 +03:00
Marc Mueller bf1da35303 Update pyOpenSSL to 25.3.0 (#153329) 2025-10-01 17:32:08 +02:00
Franck Nijhof 55d5e769b2 Bump version to 2025.10.0 2025-10-01 15:19:48 +00:00
Erwin Douna c1bf11da34 Bump pyportainer 1.0.2 (#153326) 2025-10-01 17:07:21 +02:00
Erwin Douna 3c20325b37 Bump pyfirefly 0.1.6 (#153335) 2025-10-01 17:06:31 +02:00
Franck Nijhof 6cd1283b00 Bump version to 2025.10.0b7 2025-10-01 14:51:37 +00:00
Maciej Bieniek dde60cdecb Improve mac_address_from_name() function to avoid double discovery of Shelly devices (#153343) 2025-10-01 14:51:09 +00:00
Michael Hansen f03b16bdf8 Bump intents to 2025.10.1 (#153340) 2025-10-01 14:51:07 +00:00
Maciej Bieniek fd8ccb8d8f Improve mac_address_from_name() function to avoid double discovery of Shelly devices (#153343) 2025-10-01 16:49:27 +02:00
Michael Hansen d76e947021 Bump intents to 2025.10.1 (#153340) 2025-10-01 09:39:08 -05:00
Erik Montnemery c91ed96543 Use pytest.mark.usefixtures in history tests (#153306) 2025-10-01 15:53:55 +02:00
HarvsG b164531ba8 Bayesian - add config entry tests (#153316) 2025-10-01 15:46:16 +02:00
Erik Montnemery 7c623a8704 Use pytest.mark.usefixtures in some recorder tests (#153313) 2025-10-01 15:38:51 +02:00
Maciej Bieniek 7ae3340336 Add test for full device snapshot for Shelly Wall Display XL (#153305) 2025-10-01 16:00:15 +03:00
Marc Mueller 653b73c601 Fix device_automation RuntimeWarning in tests (#153319) 2025-10-01 14:26:09 +02:00
Franck Nijhof f616e5a4e3 Bump version to 2025.10.0b6 2025-10-01 10:41:01 +00:00
Artur Pragacz c0317f60cc Add analytics platform to esphome (#153311) 2025-10-01 10:40:41 +00:00
Bram Kragten 8abfe424e1 Update frontend to 20251001.0 (#153300) 2025-10-01 10:40:40 +00:00
HarvsG 8de200de0b Fix Bayesian ConfigFlow templates in 2025.10 (#153289)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-01 10:40:38 +00:00
Joost Lekkerkerker f242e294be Add Konnected brand (#153280) 2025-10-01 10:40:36 +00:00
Joost Lekkerkerker 58cc7c8f84 Add Level brand (#153279) 2025-10-01 10:40:35 +00:00
Joost Lekkerkerker bd10f6ec08 Require cloud for Aladdin Connect (#153278)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-10-01 10:40:33 +00:00
puddly ed9cfb4c4b Use hardware bootloader reset methods for firmware config flows (#153277) 2025-10-01 10:40:32 +00:00
Joost Lekkerkerker a6b6e4c4b8 Add Eltako brand (#153276) 2025-10-01 10:40:31 +00:00
Robert Resch 36ff5c0d45 Bump aioecowitt to 2025.9.2 (#153273) 2025-10-01 10:40:29 +00:00
Artur Pragacz de6d34fec5 Filter out service type devices in extended analytics (#153271) 2025-10-01 10:40:28 +00:00
Erwin Douna 38f9067970 Portainer fix CONF_VERIFY_SSL (#153269)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-10-01 10:40:27 +00:00
Norbert Rittel 53a8a250d0 Replace "Climate name" with "Climate program" in ecobee action (#153264) 2025-10-01 10:40:25 +00:00
Artur Pragacz 00f6d26ede Add analytics platform to wled (#153258) 2025-10-01 10:40:24 +00:00
andreimoraru 6d09411c07 Bump yt-dlp to 2025.09.26 (#153252) 2025-10-01 10:40:22 +00:00
TheJulianJES 037e2bfd31 Fix ZHA unable to select "none" flow control (#153235) 2025-10-01 10:40:21 +00:00
TheJulianJES c893552d4a Replace remaining ZHA "radio" strings with "adapter" (#153234) 2025-10-01 10:40:20 +00:00
TheJulianJES 4fd10162c9 Improve ZHA multi-pan firmware repair text (#153232) 2025-10-01 10:40:18 +00:00
Joris Pelgröm 392ee5ae7e Use UnitOfTime.DAYS instead of custom unit for LetPot number entity (#153054) 2025-10-01 10:40:17 +00:00
puddly bf190609a0 Reduce Connect firmware install times by removing unnecessary firmware probing (#153012) 2025-10-01 10:40:15 +00:00
Samuel Xiao e982ac1e53 Switchbot Cloud: Fix Roller Shade not work issue (#152528) 2025-10-01 10:40:14 +00:00
Pete Sage b4747ea87b Fix Sonos Dialog Select type conversion part II (#152491)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-10-01 10:40:12 +00:00
HarvsG df69bcecb7 Pihole better logging of update errors (#152077) 2025-10-01 10:40:11 +00:00
Artur Pragacz 7c93d91bae Filter out service type devices in extended analytics (#153271) 2025-10-01 12:38:50 +02:00
Abílio Costa 07da0cfb2b Stop writing to config dir log file on supervised install (#146675)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-10-01 11:11:00 +01:00
Artur Pragacz b411a11c2c Add analytics platform to esphome (#153311) 2025-10-01 12:08:50 +02:00
epenet 0555b84d05 Add new cover fixture for Tuya (#153310) 2025-10-01 12:01:37 +02:00
TheJulianJES 790bddef63 Improve ZHA multi-pan firmware repair text (#153232) 2025-10-01 11:50:01 +02:00
TheJulianJES a3089b8aa7 Replace remaining ZHA "radio" strings with "adapter" (#153234) 2025-10-01 11:46:08 +02:00
puddly 77c8426d63 Use hardware bootloader reset methods for firmware config flows (#153277) 2025-10-01 11:43:28 +02:00
TheJulianJES faf226f6c2 Fix ZHA unable to select "none" flow control (#153235) 2025-10-01 11:42:50 +02:00
HarvsG 06d143b81a Fix Bayesian ConfigFlow templates in 2025.10 (#153289)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-10-01 11:39:23 +02:00
Erik Montnemery 08b6a0a702 Add device class filter to switcher_kis services (#153248) 2025-10-01 12:27:17 +03:00
Bram Kragten a20d1e3656 Update frontend to 20251001.0 (#153300) 2025-10-01 09:50:30 +02:00
Erwin Douna 36cc3682ca Add Firefly III integration (#147062)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 23:34:33 +02:00
Aviad Levy 1b495ecafa Add support for errored torrents in qBittorrent sensor (#153120)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-30 23:34:15 +02:00
puddly 7d1a0be07e Reduce Connect firmware install times by removing unnecessary firmware probing (#153012) 2025-09-30 22:41:51 +02:00
Geoffrey 327f65c991 Add switch domain to VegeHub integration (#148436)
Co-authored-by: GhoweVege <85890024+GhoweVege@users.noreply.github.com>
2025-09-30 22:38:05 +02:00
Manu 4ac89f6849 Add notify platform to Habitica (#150553) 2025-09-30 22:35:55 +02:00
Nojus db3b070ed0 Add meteo_lt integration (#152948)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-30 22:17:36 +02:00
anishsane 6d940f476a Add support for Media player Mute/Unmute intents (#150508) 2025-09-30 14:37:19 -05:00
Erwin Douna 1ca701dda4 Portainer fix CONF_VERIFY_SSL (#153269)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-09-30 21:36:04 +02:00
Joost Lekkerkerker 291c44100c Add Eltako brand (#153276) 2025-09-30 21:29:58 +02:00
Joost Lekkerkerker c8d676e06b Add Konnected brand (#153280) 2025-09-30 21:27:43 +02:00
Joost Lekkerkerker 4c1ae0eddc Add Level brand (#153279) 2025-09-30 21:21:21 +02:00
Norbert Rittel 39eadc814f Replace "Climate name" with "Climate program" in ecobee action (#153264) 2025-09-30 21:16:37 +02:00
Robert Resch f7ecad61ba Bump aioecowitt to 2025.9.2 (#153273) 2025-09-30 20:58:34 +02:00
Norbert Rittel fa4cb54549 Fix sentence-casing in two title strings of roomba (#153281) 2025-09-30 20:51:44 +02:00
Manu 2be33c5e0a Update quality scale of ntfy integration to platinum 🏆️ (#151785) 2025-09-30 20:36:18 +02:00
LG-ThinQ-Integration 904d7e5d5a Add air/water filter state in percent to LG ThinQ (#152150)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-30 20:26:47 +02:00
Pete Sage dbc4a65d48 Fix Sonos Dialog Select type conversion part II (#152491)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-30 20:25:19 +02:00
Pete Sage b93f4aabf1 Add tests for Sonos media metadata (#152622) 2025-09-30 20:24:57 +02:00
Joost Lekkerkerker 9eaa40c7a4 Require cloud for Aladdin Connect (#153278)
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-30 19:57:24 +02:00
Lucas Mindêllo de Andrade b308a882fb Add Roomba J9 compatibility to the roomba integration (#145913)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-30 19:10:22 +02:00
Erik Montnemery 7f63ba2087 Improve saved state of RestoreSensor when using freezegun (#152740) 2025-09-30 18:27:56 +02:00
Erik Montnemery d7269cfcc6 Use pytest_unordered in additional service helper tests (#153255) 2025-09-30 18:26:32 +02:00
starkillerOG 2850a574f6 Add Reolink floodlight event entities (#152564) 2025-09-30 17:59:12 +02:00
Samuel Xiao dcb8d4f702 Add support model [relay switch 2pm] for switchbot cloud (#148381) 2025-09-30 17:49:32 +02:00
Samuel Xiao aeadc0c4b0 Add lock support to Switchbot Cloud (#148310) 2025-09-30 17:48:38 +02:00
Nathan Spencer 683c6b17be Add release url to Litter-Robot 4 update entity (#152504) 2025-09-30 17:47:27 +02:00
Samuel Xiao 69dd5c91b7 Switchbot Cloud: Fix Roller Shade not work issue (#152528) 2025-09-30 17:05:23 +02:00
HarvsG 5cf7dfca8f Pihole better logging of update errors (#152077) 2025-09-30 16:59:03 +02:00
Marc Mueller 62a49d4244 Update pandas to 2.3.3 (#153251) 2025-09-30 16:58:41 +02:00
falconindy 93ee6322f2 snoo: add button entity for calling start_snoo (#151052)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-30 16:57:58 +02:00
Artur Pragacz 914990b58a Add analytics platform to wled (#153258) 2025-09-30 10:39:32 -04:00
Joakim Sørensen f78bb5adb6 Bump hass-nabucasa from 1.1.2 to 1.2.0 (#153250) 2025-09-30 15:29:04 +02:00
Erik Montnemery 905f5e7289 Add device class filter to entity services (#153247) 2025-09-30 14:28:04 +01:00
Erik Montnemery ec503618c3 Handle errors in WS manifest/list (#153256) 2025-09-30 15:12:41 +02:00
Erik Montnemery 7a41cbc314 Skip unserializable flows in WS config_entries/flow/subscribe (#153259) 2025-09-30 15:12:19 +02:00
Erik Montnemery c58ba734e7 Correct target filter in osoenergy services (#153244) 2025-09-30 14:06:14 +02:00
Erik Montnemery 68f63be62f Correct target filter in litterrobot services (#153243) 2025-09-30 14:05:46 +02:00
Erik Montnemery 2aa4ca1351 Correct homekit service definition (#153242) 2025-09-30 14:04:09 +02:00
Imeon-Energy fbabb27787 Add forecast energy sensor to Imeon inverter integration (#152176)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-30 13:35:18 +02:00
Markus Jacobsen 0960d78eb5 Use initial received WebSocket state in Bang & Olufsen (#152432) 2025-09-30 13:34:43 +02:00
andreimoraru 474b40511f Bump yt-dlp to 2025.09.26 (#153252) 2025-09-30 13:19:06 +02:00
Jan-Philipp Benecke 18b80aced3 Record current quality scale of Electricity Maps (#149241) 2025-09-30 11:38:16 +02:00
Franck Nijhof c75dca743a Bump version to 2025.10.0b5 2025-09-30 09:21:25 +00:00
Jan Bouwhuis 00d667ed51 Add missing translation strings for added sensor device classes pm4 and reactive energy (#153215) 2025-09-30 09:21:19 +00:00
c0ffeeca7 51e098e807 ZHA: rename radio to adapter (#153206) 2025-09-30 09:21:17 +00:00
RogerSelwyn 5e2b27699e Handle return result from ebusd being "empty" (#153199) 2025-09-30 09:21:16 +00:00
Erik Montnemery be942c2888 Revert "Add mg/m³ as a valid UOM for sensor/number Carbon Monoxide device class" (#153196) 2025-09-30 09:21:14 +00:00
Erik Montnemery 584c1fbd97 Revert "Add comment on conversion factor for Carbon monoxide on dependency molecular weight" (#153195) 2025-09-30 09:21:13 +00:00
Joost Lekkerkerker abc5c6e2b4 Mark Konnected as Legacy (#153193) 2025-09-30 09:21:11 +00:00
Martin Hjelmare d9de964035 Add hardware Zigbee flow strategy (#153190) 2025-09-30 09:21:10 +00:00
Artur Pragacz bb02158d1a Filter out empty integration type in extended analytics (#153188) 2025-09-30 09:21:08 +00:00
Simone Chemelli be10f097c7 Bump aioamazondevices to 6.2.7 (#153185) 2025-09-30 09:21:07 +00:00
cdnninja 7084bca783 Correct vesync water tank lifted key (#153173) 2025-09-30 09:21:05 +00:00
Michael cd6f3a0fe5 Add newly added cpu temperatures to diagnostics in FRITZ!Tools (#153168) 2025-09-30 09:21:03 +00:00
starkillerOG af2888331d Bump reolink-aio to 0.16.0 (#153161) 2025-09-30 09:21:02 +00:00
Allen Porter b92e5d7131 Add missing translations for Model Context Protocol integration (#153147) 2025-09-30 09:21:00 +00:00
Tom Matheussen f7265c85d0 Fix entities not being created when adding subentries for Satel Integra (#153139) 2025-09-30 09:20:58 +00:00
G Johansson 8466dbf69f Fix event range in workday calendar (#153128) 2025-09-30 09:20:57 +00:00
Robert Resch 2dd0d69bcd Bump deebot-client to 15.0.0 (#153125) 2025-09-30 09:20:56 +00:00
Luca Graf 6783c4ad83 Ignore gateway device in ViCare integration (#153097) 2025-09-30 09:20:54 +00:00
G Johansson 07d7f4e18d Add timeout to dnsip (to handle stale connections) (#153086) 2025-09-30 09:20:53 +00:00
Simone Chemelli 54b1749986 Remove redundant code for Alexa Devices (#153083) 2025-09-30 09:20:51 +00:00
G Johansson eaf264361f Fix can exclude optional holidays in workday (#153082) 2025-09-30 09:20:50 +00:00
Kyle Worrall d8f6f17a4f Fix for Hue Integration motion aware areas (#153079)
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-30 09:20:48 +00:00
Joakim Plate 9a969cea63 Ensure togrill detects disconnected devices (#153067) 2025-09-30 09:20:47 +00:00
Maciej Bieniek ef16327b2b Add consumed energy sensor for Shelly pm1 and switch components (#153053) 2025-09-30 09:20:46 +00:00
Martin Hjelmare a6a6261168 Improve hardware flow strings (#153034) 2025-09-30 09:20:44 +00:00
Erwin Douna a01eb48db8 Portainer switch terminology to API token (#152958)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-30 09:20:43 +00:00
Christian McHugh eb103a8d9a Fix: Set EPH climate heating as on only when boiler is actively heating (#152914) 2025-09-30 09:20:41 +00:00
Shay Levy 2b5f989855 Add Shelly EV charger sensors (#152722) 2025-09-30 09:20:40 +00:00
Thomas D 4e247a6ebe Prevent duplicate entities for Volvo integration (#151779) 2025-09-30 09:20:38 +00:00
dependabot[bot] b964d362b7 Bump docker/login-action from 3.5.0 to 3.6.0 (#153239)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-30 11:14:17 +02:00
G Johansson 3914e41f3c Rename resolver to nameserver in dnsip (#153223) 2025-09-30 10:46:59 +02:00
Erik Montnemery 82bdfcb99b Correct target filter in ecovacs services (#153241) 2025-09-30 10:39:18 +03:00
Marc Mueller 976cea600f Use attribute names for match class (#153191) 2025-09-29 23:12:54 +02:00
Tom 8c8713c3f7 Rework test split for airOS reauthentication flow (#153221) 2025-09-29 22:07:18 +02:00
G Johansson 2359ae6ce7 Bump pysmhi to 1.1.0 (#153222) 2025-09-29 22:04:59 +02:00
Paul Bottein b570fd35c8 Replace legacy hass icons to mdi icons (#153204) 2025-09-29 20:04:21 +01:00
starkillerOG 9d94e6b3b4 Add Reolink bicycle sensitivity and delay (#153217) 2025-09-29 20:44:13 +02:00
Martin Hjelmare cfab789823 Add hardware Zigbee flow strategy (#153190) 2025-09-29 20:08:43 +02:00
Erik Montnemery 81917425dc Add test which fails on duplicated statistics units (#153202)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
Co-authored-by: jbouwh <jan@jbsoft.nl>
2025-09-29 20:07:59 +02:00
Jan Bouwhuis bfb62709d4 Add missing translation strings for added sensor device classes pm4 and reactive energy (#153215) 2025-09-29 19:55:09 +02:00
Joost Lekkerkerker ca3f2ee782 Mark Konnected as Legacy (#153193) 2025-09-29 18:22:29 +01:00
Ludovic BOUÉ fc8703a40f Matter DoorLock attributes (#151418)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-09-29 18:20:22 +01:00
c0ffeeca7 80517c7ac1 ZHA: rename radio to adapter (#153206) 2025-09-29 18:17:44 +01:00
Erik Montnemery 2b4b46eaf8 Add async_iterator util (#153194) 2025-09-29 18:54:23 +02:00
Martin Hjelmare 40b9dae608 Improve hardware flow strings (#153034) 2025-09-29 18:29:58 +02:00
Erik Montnemery 5975cd6e09 Revert "Add mg/m³ as a valid UOM for sensor/number Carbon Monoxide device class" (#153196) 2025-09-29 15:43:13 +01:00
RogerSelwyn 258c9ff52b Handle return result from ebusd being "empty" (#153199) 2025-09-29 16:08:42 +02:00
starkillerOG 89c5d498a4 Add Reolink Ai person type, vehicle type and animal type (#153170) 2025-09-29 15:39:29 +02:00
Artur Pragacz 76cb4d123a Filter out empty integration type in extended analytics (#153188) 2025-09-29 15:18:15 +02:00
Erik Montnemery f0c29c7699 Revert "Add comment on conversion factor for Carbon monoxide on dependency molecular weight" (#153195) 2025-09-29 14:56:42 +02:00
Kyle Worrall aa4151ced7 Fix for Hue Integration motion aware areas (#153079)
Co-authored-by: Marcel van der Veldt <m.vanderveldt@outlook.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-29 14:50:36 +02:00
G Johansson 0a6fa978fa Add timeout to dnsip (to handle stale connections) (#153086) 2025-09-29 14:49:38 +02:00
Simone Chemelli dc02002b9d Bump aioamazondevices to 6.2.7 (#153185) 2025-09-29 14:30:42 +02:00
cdnninja f071a3f38b Correct vesync water tank lifted key (#153173) 2025-09-29 14:29:25 +02:00
dependabot[bot] b935231e47 Bump actions/dependency-review-action from 4.7.3 to 4.8.0 (#153180)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 13:17:20 +02:00
dependabot[bot] b9f7613567 Bump github/codeql-action from 3.30.4 to 3.30.5 (#153179)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-29 13:15:53 +02:00
Maciej Bieniek 1289a031ab Add consumed energy sensor for Shelly pm1 and switch components (#153053) 2025-09-29 13:06:07 +03:00
Andrew Jackson 289546ef6d Bump aiomealie to 0.11.0 adding times to recipes (#153183) 2025-09-29 11:58:40 +02:00
Guido Schmitz aacff4db5d Rework devolo Home Control config flow tests (#147083)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-29 09:47:07 +02:00
starkillerOG f833b56122 Add Reolink siren state (#153169) 2025-09-29 08:42:38 +02:00
Tom Matheussen 7eb0f2993f Fix entities not being created when adding subentries for Satel Integra (#153139) 2025-09-28 21:37:35 -04:00
Michael abb341abfe Add newly added cpu temperatures to diagnostics in FRITZ!Tools (#153168) 2025-09-28 22:40:10 +02:00
starkillerOG 0d90614369 Bump reolink-aio to 0.16.0 (#153161) 2025-09-28 21:55:39 +02:00
starkillerOG ec84bebeea Add Reolink AI bicycle detection entity (#153163) 2025-09-28 21:54:59 +02:00
Shay Levy 9176867d6b Add Shelly EV charger sensors (#152722) 2025-09-28 22:45:11 +03:00
Allen Porter 281a137ff5 Add missing translations for Model Context Protocol integration (#153147) 2025-09-28 20:05:15 +02:00
tronikos d6543480ac Refactor SQL integration (#153135) 2025-09-28 19:03:13 +02:00
Luca Graf ae6391b866 Ignore gateway device in ViCare integration (#153097) 2025-09-28 16:04:22 +02:00
Joakim Plate 10b56e4258 Ensure togrill detects disconnected devices (#153067) 2025-09-28 15:34:56 +02:00
Erwin Douna 0ff2597957 Portainer add re-auth flow (#153077) 2025-09-28 15:31:50 +02:00
Artur Pragacz 026b28e962 Improve interview logging in Onkyo (#153095) 2025-09-28 15:26:40 +02:00
peteS-UK 9a1e67294a Extend timeout test in test_config_flow for Squeezebox to completion (#153080) 2025-09-28 15:20:47 +02:00
G Johansson cdb448a5cc Use automatic reload options flow in random (#153103) 2025-09-28 01:02:33 +01:00
G Johansson ab80e726e2 Use automatic reload options flow in filter (#153104) 2025-09-28 01:02:14 +01:00
G Johansson 2d5d0f67b2 Use automatic reload options flow in history_stats (#153115) 2025-09-28 01:01:33 +01:00
G Johansson d4100b6096 Use automatic reload options flow in mold_indicator (#153106) 2025-09-28 01:00:48 +01:00
G Johansson 955e854d77 Use automatic reload options flow in utility_meter (#153111) 2025-09-28 01:00:07 +01:00
G Johansson 0c37f88c49 Use automatic reload options flow in derivative (#153112) 2025-09-28 00:59:07 +01:00
G Johansson 48167eeb9c Use automatic reload options flow in worldclock (#153105) 2025-09-28 00:58:20 +01:00
G Johansson 24177197f7 Use automatic reload options flow in generic_thermostat (#153108) 2025-09-28 00:57:12 +01:00
G Johansson 863fc0ba97 Use automatic reload options flow in switch_as_x (#153109) 2025-09-28 00:52:26 +01:00
G Johansson 9f7b229d02 Use automatic reload options flow in template (#153110) 2025-09-28 00:50:00 +01:00
G Johansson ffd909f3d9 Use automatic reload options flow in group (#153116) 2025-09-28 00:48:44 +01:00
Tom 1ebf096a33 Add reauthentication flow to airOS (#153076)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-09-27 23:28:14 +02:00
Robert Resch 96d51965e5 Bump deebot-client to 15.0.0 (#153125) 2025-09-27 23:24:39 +02:00
G Johansson 04b510b020 Fix event range in workday calendar (#153128) 2025-09-27 23:22:39 +02:00
G Johansson c9a301d50e Use automatic reload options flow in systemmonitor (#153107) 2025-09-27 20:50:14 +02:00
G Johansson b304bd1a8b Use automatic reload options flow in local_file (#153114) 2025-09-27 20:49:39 +02:00
G Johansson b99525b231 Use automatic reload options flow in tod (#153113) 2025-09-27 20:45:40 +02:00
G Johansson 634db13990 Use automatic reload options flow in trend (#153117) 2025-09-27 20:44:53 +02:00
peteS-UK ad51a77989 Extend squeezebox config_flow test to completion (#153000)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-09-27 20:36:38 +02:00
G Johansson 3348a39e8a Use automatic reload options flow in generic_hygrostat (#153102) 2025-09-27 20:33:57 +02:00
Christian McHugh 81c2e356ec Fix: Set EPH climate heating as on only when boiler is actively heating (#152914) 2025-09-27 20:19:57 +02:00
Jan Bouwhuis de6c3512d2 Add IMAP fetch message part feature (#152845) 2025-09-27 14:49:26 +02:00
G Johansson 36dc1e938a Fix can exclude optional holidays in workday (#153082) 2025-09-27 14:40:29 +02:00
Sören Beye 07a78cf6f7 Squeezebox: Proxy all the thumbnails (#147199)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-27 14:39:15 +02:00
Erwin Douna eaa673e0c3 Portainer switch terminology to API token (#152958)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-27 14:32:25 +02:00
Simone Chemelli f2c4ca081f Remove redundant code for Alexa Devices (#153083) 2025-09-27 13:05:07 +02:00
Thomas D e3d707f0b4 Prevent duplicate entities for Volvo integration (#151779) 2025-09-27 12:29:11 +02:00
Tom fb93fed2e5 Bump airOS dependency (#153065) 2025-09-27 01:20:51 +02:00
Björn Dalfors 95dfc2f23d Bump nibe dependency to 2.19.0 (#153062) 2025-09-26 23:49:40 +01:00
Franck Nijhof 77f897a768 Bump version to 2025.10.0b4 2025-09-26 21:30:19 +00:00
Franck Nijhof 4f0a6ef9a1 Update Home Assistant base image to 2025.09.3 (#153064) 2025-09-26 21:30:12 +00:00
Franck Nijhof 408df2093a Update Home Assistant base image to 2025.09.3 (#153064) 2025-09-26 23:28:43 +02:00
Franck Nijhof 66c6b0f5fc Bump version to 2025.10.0b3 2025-09-26 20:37:41 +00:00
Josef Zweck dd01243391 Ensure token validity in lamarzocco (#153058) 2025-09-26 20:36:47 +00:00
SapuSeven 66c17e250a Add None-check for VeSync fan device.state.display_status (#153055) 2025-09-26 20:36:46 +00:00
DeerMaximum 723902e233 NINA Use better wording for filters (#153050) 2025-09-26 20:36:45 +00:00
Paul Bottein 59fdb9f3b5 Update frontend to 20250926.0 (#153049) 2025-09-26 20:36:44 +00:00
Martin Hjelmare d83502514a Fix Thread flow abort on multiple flows (#153048) 2025-09-26 20:36:43 +00:00
Stefan Agner 08e81b2ba6 Update Home Assistant base image to 2025.09.2 (#153035) 2025-09-26 20:36:41 +00:00
Josef Zweck 1e808c965d Bump pylamarzocco to 2.1.1 (#153027) 2025-09-26 20:36:40 +00:00
Stefan Agner 563b58c9aa Bump to home-assistant/wheels@2025.09.1 (#153025) 2025-09-26 20:36:39 +00:00
Artur Pragacz cf223880e8 Use satellite entity area in the assist pipeline (#153017) 2025-09-26 20:36:37 +00:00
J. Nick Koston 4058ca59ed Bump aioesphomeapi to 41.11.0 (#153014) 2025-09-26 20:36:36 +00:00
puddly 1386c01733 Allow ZHA discovery if discovery unique_id conflicts with config entry (#153009)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-26 20:36:35 +00:00
puddly 46504947f7 Bump ZHA to 0.0.73 (#153007) 2025-09-26 20:36:34 +00:00
Paulus Schoutsen 0a44682014 Push ESPHome discovery to ZJS addon (#153004) 2025-09-26 20:36:33 +00:00
Brandon Harvey 06a57473a9 Rename service to action in ESPHome (#152997) 2025-09-26 20:36:32 +00:00
Noah Husby fbed66ef1f Bump aiorussound to 4.8.2 (#152988) 2025-09-26 20:36:30 +00:00
puddly 99a0380ec5 Ignore discovery for existing ZHA entries (#152984) 2025-09-26 20:36:29 +00:00
Simone Chemelli 68c51dc7aa Fix PIN failure if starting with 0 for Comelit SimpleHome (#152983) 2025-09-26 20:36:28 +00:00
lliwog 3d945b0fc5 Fix EZVIZ devices merging due to empty MAC addr (#152939) (#152981)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-26 20:36:27 +00:00
Erwin Douna 7b26a93d38 Portainer add ability to skip SSL verification (#152955) 2025-09-26 20:36:25 +00:00
Tom 1b2eab00be Add SSL options during config_flow for airOS (#150325)
Co-authored-by: Åke Strandberg <ake@strandberg.eu>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-26 20:36:24 +00:00
RogerSelwyn 750e849f09 Protect against last_comms being None (#149366)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-26 20:36:22 +00:00
Eskander Bejaoui f32bf0cc3e nmap_tracker: Optimize default scan options (#153047) 2025-09-26 22:31:49 +02:00
peteS-UK dbbe3145b6 Replace patch of entity_registry in test_config_flow for Squeezebox (#153039) 2025-09-26 22:17:47 +02:00
Erik Montnemery f8bf3ea2ef Correct filter of target selector in motioneye services (#152971) 2025-09-26 22:08:19 +02:00
Bouwe Westerdijk 053bd31d43 Snapshot testing for Plugwise Switch platform (#153030) 2025-09-26 22:07:42 +02:00
DeerMaximum 1aefc3f37a NINA Use better wording for filters (#153050) 2025-09-26 22:05:10 +02:00
Joris Pelgröm 3de955d9ce Use UnitOfTime.DAYS instead of custom unit for LetPot number entity (#153054) 2025-09-26 21:58:17 +02:00
SapuSeven 0ff88fd366 Add None-check for VeSync fan device.state.display_status (#153055) 2025-09-26 21:57:01 +02:00
peteS-UK eb84020773 Replace platform setup functions with fixtures with autouse in Squeezebox tests (#153057) 2025-09-26 21:49:58 +02:00
Tom 4bbfea3c7c Add SSL options during config_flow for airOS (#150325)
Co-authored-by: Åke Strandberg <ake@strandberg.eu>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-26 21:38:27 +02:00
Josef Zweck 63d4fb7558 Ensure token validity in lamarzocco (#153058) 2025-09-26 21:36:03 +02:00
Artur Pragacz 953895cd81 Use satellite entity area in the assist pipeline (#153017) 2025-09-26 21:34:45 +02:00
Erwin Douna a6c3f4efc0 Portainer add ability to skip SSL verification (#152955) 2025-09-26 21:32:49 +02:00
Paul Bottein 11e880d034 Update frontend to 20250926.0 (#153049) 2025-09-26 21:31:47 +02:00
Martin Hjelmare e4d6bdb398 Fix Thread flow abort on multiple flows (#153048) 2025-09-26 18:48:51 +01:00
Andrew Jackson 6ced1783e3 Add discovery to Mealie (#151773)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-26 18:48:19 +02:00
Paulus Schoutsen 8051f78d10 Push ESPHome discovery to ZJS addon (#153004) 2025-09-26 10:12:56 -04:00
Josef Zweck b724176b23 Bump pylamarzocco to 2.1.1 (#153027) 2025-09-26 15:46:24 +02:00
Erik Montnemery fdca16ea92 Fix typing in ObjectSelectorConfig (#153043) 2025-09-26 15:18:18 +02:00
Stefan Agner f8fd8b432a Update Home Assistant base image to 2025.09.2 (#153035) 2025-09-26 13:03:39 +02:00
lliwog 9148ae70ce Fix EZVIZ devices merging due to empty MAC addr (#152939) (#152981)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-26 12:47:11 +02:00
RogerSelwyn 447cb26d28 Protect against last_comms being None (#149366)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-26 12:35:04 +02:00
J. Nick Koston 2af36465f6 Bump aioesphomeapi to 41.11.0 (#153014) 2025-09-26 12:31:59 +02:00
dependabot[bot] d5f7265424 Bump github/codeql-action from 3.30.3 to 3.30.4 (#153015)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 12:31:15 +02:00
Simone Chemelli cc16af7f2d Code optimization for Uptime Robot (#153031) 2025-09-26 12:29:02 +02:00
Retha Runolfsson 7a4d75bc44 Add garage door opener for switchbot integration (#148460) 2025-09-26 12:11:59 +02:00
Bouwe Westerdijk ec0380fd3b Snapshot testing for Plugwise Sensor platform (#153021) 2025-09-26 11:22:14 +02:00
Stefan Agner b17cc71dfb Bump to home-assistant/wheels@2025.09.1 (#153025) 2025-09-26 11:04:02 +02:00
Erik Montnemery 89b327ed7b Remove device filter from target selector in bang_olufsen services (#152957) 2025-09-26 09:02:14 +02:00
Simone Chemelli 9bf361a1b8 Fix PIN failure if starting with 0 for Comelit SimpleHome (#152983) 2025-09-26 08:59:03 +02:00
J. Diego Rodríguez Royo d11c171c75 Bump aiohomeconnect to version 0.20.0 (#153003) 2025-09-26 07:49:38 +02:00
puddly c523c45d17 Allow ZHA discovery if discovery unique_id conflicts with config entry (#153009)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-26 07:39:00 +02:00
puddly c1b9c0e1b6 Ignore discovery for existing ZHA entries (#152984) 2025-09-26 07:17:01 +02:00
puddly 487b9ff03e Bump ZHA to 0.0.73 (#153007) 2025-09-25 23:44:25 -04:00
Simone Chemelli ec62b0cdfb Code optimization for Uptime Robot (#152993) 2025-09-26 00:34:09 +01:00
Brandon Harvey 6d0470064f Rename service to action in ESPHome (#152997) 2025-09-25 14:54:06 -05:00
Simone Chemelli 7450b3fd1a Improve tests for Alexa Devices (#152995) 2025-09-25 21:39:44 +02:00
Noah Husby 5b70910d77 Bump aiorussound to 4.8.2 (#152988) 2025-09-25 20:34:29 +02:00
Franck Nijhof 6aaddad56b Bump version to 2025.10.0b2 2025-09-25 18:19:29 +00:00
Paul Bottein a5af974209 Update frontend to 20250925.1 (#152985) 2025-09-25 18:18:47 +00:00
Luke Lashley 09e45f6f54 Fix incorrect Roborock test (#152980) 2025-09-25 18:18:46 +00:00
Joost Lekkerkerker d857d8850c Bump pySmartThings to 3.3.0 (#152977) 2025-09-25 18:18:45 +00:00
J. Nick Koston ccc50f2412 Bump aioesphomeapi to 41.10.0 (#152975)
Co-authored-by: Michael Hansen <mike@rhasspy.org>
2025-09-25 18:18:43 +00:00
Maciej Bieniek 3905723900 Bump accuweather to version 4.2.2 (#152965) 2025-09-25 18:18:42 +00:00
Simone Chemelli cee88473a2 Remove deprecated sensors and update remaning for Alexa Devices (#151230) 2025-09-25 18:18:40 +00:00
Daniel Potthast cdf613d3f8 Update mvglive component (#146479)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-25 18:18:39 +00:00
Abílio Costa 52de5ff5ff Remove deprecated zone and event condition keys (#152986) 2025-09-25 19:23:40 +02:00
J. Nick Koston c4389a1679 Bump aioesphomeapi to 41.10.0 (#152975)
Co-authored-by: Michael Hansen <mike@rhasspy.org>
2025-09-25 19:21:17 +02:00
Norbert Rittel 35faaa6cae Add missing square brackets to references in fully_kiosk actions (#152987) 2025-09-25 19:19:27 +02:00
Paul Bottein 3c0b13975a Update frontend to 20250925.1 (#152985) 2025-09-25 19:05:12 +02:00
Simone Chemelli bc88696339 Remove deprecated sensors and update remaning for Alexa Devices (#151230) 2025-09-25 18:59:53 +02:00
Erik Montnemery 8f99c3f64a Remove device filter from target selector in lyric services (#152970) 2025-09-25 18:45:32 +02:00
Erik Montnemery 88016d96d4 Remove device and entity filter from target selector in homeassistant services (#152969) 2025-09-25 17:41:54 +01:00
Erik Montnemery 47df73b18f Remove device filter from target selector in google_mail services (#152968) 2025-09-25 18:32:12 +02:00
Maciej Bieniek 1c12d2b8cd Bump accuweather to version 4.2.2 (#152965) 2025-09-25 18:30:47 +02:00
Erik Montnemery eb38837a8c Replace target selector with device selector in fully_kiosk services (#152959)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-25 18:30:05 +02:00
Erik Montnemery 159c7fbfd1 Correct filter of target selector in sonos services (#152972) 2025-09-25 18:29:26 +02:00
Joost Lekkerkerker 7ee31f0884 Bump pySmartThings to 3.3.0 (#152977) 2025-09-25 17:57:30 +02:00
Daniel Potthast 0c5e12571a Update mvglive component (#146479)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-25 17:20:43 +02:00
Luke Lashley 9db973217f Fix incorrect Roborock test (#152980) 2025-09-25 17:18:24 +02:00
Artur Pragacz cf1a745283 Move condition-specific fields into options (#152635) 2025-09-25 15:55:50 +02:00
peteS-UK 834e3f1963 Add HassKey for hass.data in Squeezebox (#149129) 2025-09-25 14:05:40 +02:00
Joakim Sørensen 3f8f7573c9 Bump hass-nabucasa from 1.1.1 to 1.1.2 (#152950) 2025-09-25 11:34:14 +01:00
Franck Nijhof 156a0f1a3d Bump version to 2025.10.0b1 2025-09-25 09:37:33 +00:00
Paul Bottein cc2a5b43dd Update frontend to 20250925.0 (#152945) 2025-09-25 09:37:03 +00:00
Karsten Bade 0ae272f1f6 Add return types and docstring to sonos component (#152946) 2025-09-25 11:34:38 +02:00
Paul Bottein 8774295e2e Update frontend to 20250925.0 (#152945) 2025-09-25 11:33:01 +02:00
Erwin Douna 731064f7e9 Portainer fix unique entity (#152941)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-25 08:19:21 +00:00
Sab44 2f75661c20 Bump librehardwaremonitor-api to version 1.4.0 (#152938) 2025-09-25 08:19:20 +00:00
Paulus Schoutsen be6f056f30 Prevent common control calling async methods from thread (#152931)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-25 08:19:18 +00:00
Franck Nijhof 79599e1284 Add block Spook < 4.0.0 as breaking Home Assistant (#152930) 2025-09-25 08:19:17 +00:00
Paulus Schoutsen a255585ab6 Remove some more domains from common controls (#152927) 2025-09-25 08:19:15 +00:00
J. Nick Koston e9bde225fe Bump aioesphomeapi to 41.9.4 (#152923) 2025-09-25 08:19:14 +00:00
Franck Nijhof d9521ac2a0 Bump to home-assistant/wheels@2025.09.0 (#152920) 2025-09-25 08:19:13 +00:00
J. Nick Koston d8b24ccccd Bump aioesphomeapi to 41.9.3 to fix segfault (#152912) 2025-09-25 08:19:12 +00:00
J. Nick Koston b4417a76d5 Fix ESPHome reauth not being triggered on incorrect password (#152911) 2025-09-25 08:19:10 +00:00
Simone Chemelli 274f6eb54a Update IQS to platinum for Comelit SimpleHome (#152906) 2025-09-25 08:19:09 +00:00
Simone Chemelli 21a5aaf35c Update IQS to platinum for Alexa Devices (#152905) 2025-09-25 08:19:07 +00:00
Luke Lashley 05820a49d0 Fix logical error when user has no Roborock maps (#152752) 2025-09-25 08:19:06 +00:00
Erwin Douna 0c8d2594ef Portainer fix unique entity (#152941)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-25 09:49:22 +02:00
Simone Chemelli 205bd2676b Update IQS to platinum for Alexa Devices (#152905) 2025-09-25 09:45:50 +02:00
dependabot[bot] 25849fd9cc Bump actions/cache from 4.2.4 to 4.3.0 (#152934)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 09:43:03 +02:00
Sab44 7d6eac9ff7 Bump librehardwaremonitor-api to version 1.4.0 (#152938) 2025-09-25 09:42:31 +02:00
Luke Lashley 31017ebc98 Fix logical error when user has no Roborock maps (#152752) 2025-09-25 09:39:52 +02:00
Jimmy Zhening Luo 724a7b0ecc Quality: mark installation param doc as done (#152909) 2025-09-25 09:06:13 +02:00
Paulus Schoutsen 91e13d447a Prevent common control calling async methods from thread (#152931)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-24 23:09:54 -04:00
J. Nick Koston 7c8ad9d535 Fix ESPHome reauth not being triggered on incorrect password (#152911) 2025-09-24 22:27:40 -04:00
Franck Nijhof 9cd3ab853d Add block Spook < 4.0.0 as breaking Home Assistant (#152930) 2025-09-24 22:18:06 -04:00
Paulus Schoutsen 0b0f8c5829 Remove some more domains from common controls (#152927) 2025-09-24 22:15:29 -04:00
J. Nick Koston ae7bc7fb1b Bump aioesphomeapi to 41.9.4 (#152923) 2025-09-24 19:16:48 -05:00
Franck Nijhof 09750872b5 Bump version to 2025.11.0dev0 (#152915) 2025-09-24 23:55:32 +02:00
Franck Nijhof 076e51017b Bump to home-assistant/wheels@2025.09.0 (#152920) 2025-09-24 23:12:20 +02:00
Simone Chemelli 95e7b00996 Update IQS to platinum for Comelit SimpleHome (#152906) 2025-09-24 22:03:31 +01:00
J. Nick Koston ddecf1ac21 Bump aioesphomeapi to 41.9.3 to fix segfault (#152912) 2025-09-24 22:00:45 +01:00
Franck Nijhof 17b12d29af Bump version to 2025.10.0b0 2025-09-24 18:57:19 +00:00
Marc Mueller 9cc78680d6 Fix lg_thinq test RuntimeWarning (#152910) 2025-09-24 21:28:49 +03:00
Simone Chemelli 14d42e43bf Add dynamic devices management for Alexa Devices (#151975) 2025-09-24 19:00:35 +02:00
Simone Chemelli ed5f5d4b33 Add dynamic devices management for Comelit SimpleHome (#152137) 2025-09-24 18:57:56 +02:00
Kinachi249 c3ba086fad Add new Cync by GE integration (#149848)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-24 18:43:50 +02:00
Abílio Costa 7b5314605c Revert "Rename function arguments in modbus (#152814)" (#152904) 2025-09-24 17:25:01 +01:00
Karsten Bade 3a806d6603 Add dc:title support for Sonos sharelinks (#152774)
Co-authored-by: Pete Sage <76050312+PeteRager@users.noreply.github.com>
2025-09-24 17:23:58 +01:00
starkillerOG 6dd33f900d Add support for Reolink chime connected to Home Hub (#151199) 2025-09-24 18:07:23 +02:00
Paul Bottein 2844bd474a Update frontend to 20250924.0 (#152901) 2025-09-24 18:05:13 +02:00
Artur Pragacz d865fcf999 Do not include capabilities in extended analytics (#152900)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-09-24 11:58:44 -04:00
Bouwe Westerdijk 79a2fc5a01 Snapshot testing for Plugwise Select platform (#152827) 2025-09-24 17:51:04 +02:00
alorente 19d87abb8a Add Q-Adapt to Airzone integration (#151945) 2025-09-24 17:43:32 +02:00
Joris Pelgröm c4de46a85b Add number platform to LetPot integration (#151092) 2025-09-24 17:41:36 +02:00
epenet e79a434d9b Use DeviceCategory in Tuya remaining platforms (#152890) 2025-09-24 17:39:46 +02:00
Manu 9a801424c7 Fix deleting message filters in ntfy integration (#152783) 2025-09-24 17:38:40 +02:00
Paulus Schoutsen 5cb186980a Mark MQTT as service (#152899) 2025-09-24 11:35:23 -04:00
Ravaka Razafimanantsoa 1629ade97f Add Smart Meter B Route integration (#123446)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-24 17:31:30 +02:00
puddly ccf0011ac2 Skip ignored discovery entries when showing migrate/setup config flow steps for ZHA and Hardware (#152895) 2025-09-24 17:31:04 +02:00
puddly 70077511a3 Unload ZHA integration before adapter migration (#152896) 2025-09-24 17:28:55 +02:00
Petar Petrov dfbaf66021 Add progress step decorator for easier config flows (#152739)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-09-24 18:18:42 +03:00
Richard Polzer 62cea48a58 Fix typo in ekeybionyx strings.json (#152889) 2025-09-24 15:46:22 +01:00
Michael Hansen c493c7dd67 Bump intents and fix tests (#152893) 2025-09-24 09:24:42 -05:00
Maciej Bieniek fdaceaddfd Add new virtual integration Neo (#152886) 2025-09-24 14:57:22 +02:00
epenet a2f4073d54 Use DeviceCategory in Tuya more platforms (#152885) 2025-09-24 14:40:25 +02:00
epenet 2d01a99ec2 Bump renault-api to 0.4.1 (#152883) 2025-09-24 12:44:33 +01:00
epenet 311d4c4262 Use DeviceCategory in Tuya binary sensor (#152882) 2025-09-24 13:31:44 +02:00
Erik Montnemery e14f5ba44d Fix misleading + unclear comment in homeassistant.const (#152878) 2025-09-24 13:22:32 +02:00
Artur Pragacz 9babc85517 Add analytics to core files (#152877) 2025-09-24 13:21:40 +02:00
Marc Mueller 332a3fad3c Fix mypy errors (#152879) 2025-09-24 13:09:32 +02:00
Michael 8782aa4f60 Hide asserts behind TYPE_CHECKING in Synology DSM (#152880) 2025-09-24 12:49:44 +02:00
jan iversen 475b84cc5f Remove codeowner. (#152869) 2025-09-24 12:43:22 +02:00
Artur Pragacz 0f904d418b Filter out integration types in extended analytics (#152874) 2025-09-24 12:32:30 +02:00
Artur Pragacz 4ea4eec2d8 Remove analytics platform in template (#152876) 2025-09-24 12:32:14 +02:00
Artur Pragacz afefa16615 Remove analytics platform in automation (#152875) 2025-09-24 12:29:33 +02:00
Martin Hjelmare 1dccbee45c Remove hardware flow thread confirm step after install (#152868) 2025-09-24 11:28:10 +01:00
Simone Chemelli 711a56db2f Add dynamic devices management for UptimeRobot (#152139) 2025-09-24 10:56:56 +01:00
Joost Lekkerkerker 9d1c7dadff Make SmartThings AC preset modes translatable (#152833) 2025-09-24 10:55:28 +01:00
Richard Polzer 7d1953e387 Add Ekey Bionyx integration (#139132)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-24 11:54:27 +02:00
Martin Hjelmare 023ecf2a64 Patch async_setup_entry in hardware integration flow tests (#152871) 2025-09-24 11:49:01 +02:00
epenet 934db458a3 Simplify access to Tuya device manager in async_setup_entry (#152859) 2025-09-24 11:47:28 +02:00
epenet 0a6ae3b52a Add enum for Tuya device categories (#152858) 2025-09-24 11:46:33 +02:00
Patrick bdd0b74d51 Enhance Synology DSM handling of external USB drives (#145943)
Co-authored-by: Michael <35783820+mib1185@users.noreply.github.com>
2025-09-24 11:26:22 +02:00
Norbert Rittel 8837f2aca7 Capitalize "Auto Cycle Link" as feature name in smartthings (#152864) 2025-09-24 11:11:35 +02:00
Artur Pragacz 403cd2d8ef Filter out custom integrations in extended analytics (#152820) 2025-09-24 10:24:42 +02:00
Erik Montnemery ddfc528d63 Fix apparent copy-paste error in tests of trigger helper (#152855) 2025-09-24 08:38:32 +02:00
Nick Kuiper ddea2206c3 Add start charge session action for blue current integration. (#145446) 2025-09-24 08:11:33 +02:00
J. Nick Koston 32aacac550 Fix async_get_scanner return type for BleakScanner compatibility (#152840) 2025-09-23 23:14:08 -05:00
Luke Lashley dadba274aa Bump python-roborock to 2.47.1 (#152844) 2025-09-23 22:16:32 -04:00
TheJulianJES 14b5b9742c Bump ZHA to 0.0.72 (#152850) 2025-09-23 22:15:00 -04:00
Michael Hansen a0be737925 Auto select first active wake word (#152562) 2025-09-23 17:19:04 -04:00
Marcel van der Veldt ff47839c61 Fix support for new Hue bulbs with very wide color temperature support (#152834) 2025-09-23 16:56:16 -04:00
Copilot 9ba7dda864 Rename logbook integration to "Activity" in user-facing strings (#150950) 2025-09-23 22:55:11 +02:00
J. Nick Koston 911f901d9d Bump aioesphomeapi to 41.9.0 (#152841) 2025-09-23 22:54:31 +02:00
Marcel van der Veldt 2008a73657 Add support for Hue MotionAware sensors (#152811)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-09-23 16:52:09 -04:00
Pete Sage 60bf298ca6 File add read_file action with Response (#139216) 2025-09-23 22:25:56 +02:00
jan iversen 3bc2ea7b5f Use DOMAIN not MODBUS_DOMAIN (#152823) 2025-09-23 22:07:24 +02:00
Kevin Stillhammer 3bac6b86df Fix multiple_here_travel_time_entries issue description (#152839) 2025-09-23 22:06:06 +02:00
Stefan Agner 20293e2a11 Bump aiohasupervisor to 0.3.3b0 (#152835)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-23 22:05:38 +02:00
Martin Hjelmare 15cc28e6c1 Move first probe firmware to firmware progress in hardware flow (#152819) 2025-09-23 22:03:04 +02:00
puddly 874ca1323b Simplified ZHA adapter migration and setup flow (#152389) 2025-09-23 22:00:31 +02:00
Ludovic BOUÉ ca186925af Add Matter Thermostat OutdoorTemperature sensor (#152632) 2025-09-23 21:28:24 +02:00
andreimoraru 2ab051b716 Bump yt-dlp to 2025.09.23 (#152818) 2025-09-23 20:03:53 +01:00
epenet a2a726de34 Rename function arguments in modbus (#152814) 2025-09-23 20:54:52 +02:00
Sarah Seidman 5d543d2185 Bump pydroplet version to 2.3.3 (#152832) 2025-09-23 19:36:06 +01:00
epenet a78c909b34 Rename cover property in tuya (#152822) 2025-09-23 19:35:47 +01:00
Artur Pragacz f00ab80d17 Add analytics platform to template (#152824) 2025-09-23 13:53:53 -04:00
Joakim Sørensen 014881d985 Fix error handling in subscription info retrieval and update tests (#148397)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-23 19:53:12 +02:00
Artur Pragacz 29a42a8e58 Add analytics platform to automation (#152828) 2025-09-23 13:52:58 -04:00
Rohan Kapoor 3f70084d7f Handle ignored and disabled entries correctly in zeroconf discovery for Music Assistant (#152792)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-23 10:15:52 -07:00
Felipe Santos b1ae9c95c9 Add a switch entity for add-ons (#151431)
Co-authored-by: Stefan Agner <stefan@agner.ch>
2025-09-23 17:27:35 +02:00
Artur Pragacz 8be79ecdb0 Move conversation trigger registration to manager (#152749) 2025-09-23 10:01:46 -05:00
Jan Bouwhuis f6b8aa893b Add mqtt image subentry support (#151586) 2025-09-23 16:31:40 +02:00
jan iversen c867026bdd Add test to validate multiple host/port for modbus. (#152658)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-09-23 16:03:42 +02:00
Kevin Stillhammer da3a164e66 Change here_travel_time update interval to 30min (#147222) 2025-09-23 15:56:13 +02:00
Josef Zweck 32688e1108 Bump aioacaia to 0.1.17 (#152815) 2025-09-23 15:29:16 +02:00
Artur Pragacz 4305ea9b4c Create analytics platform (#151974) 2025-09-23 09:16:37 -04:00
epenet 61153ec456 Deduplicate code in modbus service call (#152808)
Co-authored-by: jan iversen <jancasacondor@gmail.com>
2025-09-23 13:44:28 +02:00
Marcel van der Veldt 9e4a2d5fa9 Bump aiohue to 4.8.0 (#152807) 2025-09-23 13:39:58 +02:00
Marcel van der Veldt 72e608918b Handle toggling of the 'expose_to_ha' setting in Music Assistant integration (#152779) 2025-09-23 13:22:16 +02:00
Erik Montnemery 86db60c442 Freeze time in irm_kmi tests (#152810) 2025-09-23 13:21:59 +02:00
cdnninja 25806615a9 Bump pyvesync to 3.0.0 (#152726) 2025-09-23 13:00:59 +02:00
Paulus Schoutsen a0f67381e5 Allow configuring Z-Wave JS to talk via ESPHome (#152590)
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-23 12:58:36 +02:00
Jan Čermák 90bfadda9b Support all reported preset modes in Smartthings climate (#148056)
Co-authored-by: abmantis <amfcalt@gmail.com>
2025-09-23 12:56:27 +02:00
Maciej Bieniek 0f8e700965 Add a cable unplugged sensor for Shelly Flood Gen4 (#152559) 2025-09-23 12:55:44 +02:00
Jan Čermák 21d4ed2837 Add profiler service for dumping sockets used by HA (#152440)
Co-authored-by: Stefan Agner <stefan@agner.ch>
2025-09-23 12:55:29 +02:00
Luke Lashley ce363b3835 Make Roborock load_multi_map always cloud dependent. (#152698) 2025-09-23 12:55:07 +02:00
G Johansson dd3e6b8df5 Only load selected processes in systemmonitor (#152777) 2025-09-23 12:41:31 +02:00
epenet abbf8390ac Move switch to valve for Tuya sfkzq category (#152478) 2025-09-23 12:39:37 +02:00
epenet 689039959c Improve current_state support in Tuya curtains (#152801) 2025-09-23 12:38:47 +02:00
epenet 52c25cfc88 Rename modbus internal variable (#152805) 2025-09-23 12:14:05 +02:00
G Johansson 00b2017767 Fix resource and payload template in scrape (#152670) 2025-09-23 11:59:00 +02:00
Martin Hjelmare dd7f7be6ad Move hardware thread add-on install after firmware install (#152800) 2025-09-23 11:47:30 +02:00
Robert Resch 22709506c6 Add Ecovacs custom water amount entity (#152782)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-23 11:21:11 +02:00
Lukas f0c0492375 Add MAC address to Pooldose device (#152760)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-23 11:11:08 +02:00
Robert Resch 58459cb80f Bump deebot-client to 14.0.0 (#152448) 2025-09-23 10:47:37 +02:00
epenet a19e378447 Add Tuya test fixture files (#152795) 2025-09-23 10:44:36 +02:00
J. Nick Koston 38a5a3ed4b Handle wrong ESPHome device without encryption appearing at the configured IP (#152758) 2025-09-23 10:27:13 +02:00
Matthias Lohr e76bed4a83 Add reconfigure flow to tolo (#137609)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-09-23 10:21:06 +02:00
Karsten Bade d73309ba60 Bump SoCo to 0.30.12 (#152797) 2025-09-23 09:49:33 +02:00
Przemko92 19fdea024c Bump compit-inext-api to 0.3.1 (#152781) 2025-09-23 09:48:53 +02:00
Manu a3cfd7f707 Fix coordinator data handling in Bring integration (#152786) 2025-09-23 09:03:01 +02:00
Petro31 3dd941eff7 Fix section and entity variable resolution for template platforms (#149660)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-23 08:12:24 +02:00
J. Nick Koston d389141aee Bump aioesphomeapi to 41.6.0 (#152787) 2025-09-22 21:43:20 -05:00
Rohan Kapoor 3c542b8d43 Only update Music Assistant URL on zeroconf discovery when current URL is unreachable (#152030) 2025-09-22 13:49:41 -07:00
starkillerOG 2367df89d9 Bump reolink-aio to 0.15.2 (#152775) 2025-09-22 21:39:06 +01:00
Manu 7bfdfb3fc7 Bump pynecil to v4.2.0 (#152776) 2025-09-22 21:35:19 +01:00
G Johansson 485916265a Fix manual updating of Nord Pool sensors (#152773) 2025-09-22 22:04:17 +02:00
Stefan Agner 1bb3c96fc1 Drop Windows compatibility code from systemmonitor integration (#152545) 2025-09-22 21:26:26 +02:00
Artur Pragacz 4eaf6784af Use satellite entity area in the default agent (#152762) 2025-09-22 13:34:31 -05:00
Abílio Costa 7b7265a6b0 Revert "Add EZVIZ battery camera power status and online status sensor (#146822)" (#152767) 2025-09-22 19:03:32 +02:00
Thomas D 9059e3dadc Prepare Volvo integration for new platforms (#152042) 2025-09-22 18:41:44 +02:00
J. Nick Koston d9d42b3ad5 Pass timezone to aioesphomeapi to ensure HA timezone takes precedence (#152756) 2025-09-22 09:54:15 -06:00
epenet d565fb3cb4 Bump mcp to 1.14.1 (#152737) 2025-09-22 17:33:48 +02:00
G Johansson 6e93e480d1 Use automatic reload options flow in integration (#152686) 2025-09-22 15:27:19 +01:00
Maciej Bieniek 5a3570702d Add re-auth flow to AccuWeather integration (#152755) 2025-09-22 16:27:09 +02:00
Abílio Costa b26b1df143 Fix unitless converter missing valid units (#152665) 2025-09-22 15:19:31 +01:00
Manu fdbff76733 Add collapse checklist field to Habitica create/update task actions (#150988) 2025-09-22 16:16:47 +02:00
epenet 018d59a892 Drop hass argument from service extraction helpers (#152738) 2025-09-22 16:08:07 +02:00
Andrew Jackson 4b6dd0eb8f Add optional language to Mastodon post action (#151072) 2025-09-22 16:01:09 +02:00
Wendelin b7db87bd3d Update regex for core logs path to include latest logs (#152747) 2025-09-22 14:07:49 +01:00
Jules Dejaeghere 86dc453c55 Add integration for Belgian weather provider meteo.be (#144689)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-22 13:28:41 +02:00
Abílio Costa a4f2c88c7f Add TriggerConfig to reduce ambiguity (#152563) 2025-09-22 12:24:47 +01:00
Erik Montnemery 3cdb894e61 Small improvement of exposed_entities test (#152744) 2025-09-22 13:16:02 +02:00
Bouwe Westerdijk cb837aaae5 Number snapshot testing for Plugwise (#152673) 2025-09-22 11:55:57 +02:00
G Johansson 82443ded34 Use already cached data in Nord Pool if valid (#152664) 2025-09-22 11:55:00 +02:00
Retha Runolfsson 71cc3b7fcd Add K11+ Vacuum for switchbot integration (#152643) 2025-09-22 11:51:39 +02:00
G Johansson e5658f9747 Use automatic reload options flow in statistics (#152682) 2025-09-22 11:48:58 +02:00
G Johansson 868ded141f Use automatic reload options flow in threshold (#152684) 2025-09-22 11:48:37 +02:00
LG-ThinQ-Integration 1151fa698d Add energy usage sensors of ThinQ devices. (#152141)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-09-22 11:47:18 +02:00
Paulus Schoutsen 2796d6110a Split up media source integration (#152721)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-22 11:46:24 +02:00
Tom Matheussen 844b97bd32 Add Satel Integra diagnostics (#152621)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-22 11:38:26 +02:00
Lukas 286b2500bd Pooldose: Add Dhcp discovery (#152253)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-22 11:31:40 +02:00
Joshua Leaper 4b7746ab51 Bump nessclient to 1.3.1 (#152700) 2025-09-22 11:01:04 +03:00
Abílio Costa ca1c366f4f Remove unused var from llm helper (#152724) 2025-09-22 09:57:16 +02:00
epenet de42ac14ac Drop unused hass argument from internal helper (#152733) 2025-09-22 09:56:52 +02:00
J. Nick Koston 7f7bd5a97f Bump aioesphomeapi to 41.5.0 (#152730) 2025-09-22 09:56:20 +02:00
epenet 8a70a1badb Drop hass argument from verify_domain_control (#147946) 2025-09-22 08:15:41 +02:00
Shay Levy 181741cab6 Use component role in Shelly sensor platform (#152710)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-22 01:03:29 +03:00
Maciej Bieniek 1e14fb6dab Use the common unique_id schema in the Shelly button platform (#152707) 2025-09-21 19:34:50 +02:00
Maciej Bieniek 2b6a125927 Support Shelly presencezone component (#152393)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2025-09-21 19:27:40 +02:00
Abílio Costa e61ad10708 Split sensor unit long condition (#152668) 2025-09-21 16:49:13 +01:00
Shay Levy 5177f9e8c2 Add support for Shelly object based entities (#152046)
Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2025-09-21 17:08:43 +03:00
Luke Lashley 850aeeb5eb Explicitly connect to the Roborock API before sending messages (#152697) 2025-09-21 12:37:15 +02:00
J. Nick Koston a1b9061060 Bump aiohomekit to 3.2.18 (#152694) 2025-09-21 12:14:21 +02:00
Maciej Bieniek 0ec1f27489 Use DeviceClass.PM4 in NAM integration (#152703) 2025-09-21 11:59:09 +02:00
J. Diego Rodríguez Royo befc93bc73 Delete Home Connect alarm clock entity from time platform (#152188) 2025-09-21 10:23:51 +01:00
Luke Lashley 1526d953bf Make Roborock A01 initilization threadsafe (#152699) 2025-09-21 07:52:26 +02:00
G Johansson d38082a5c8 Use automatic reload options flow in Scrape (#152681) 2025-09-20 22:02:23 +01:00
G Johansson 42850421d2 Use automatic reload options flow in wake_on_lan (#152683) 2025-09-20 22:01:11 +01:00
avee87 21a835c4b4 Expose pressure as a separate sensor for metoffice (#152685) 2025-09-20 21:59:14 +01:00
Manu e9294dbf72 Bump pyecotrend-ista to v3.4.0 (#152678) 2025-09-20 21:52:51 +01:00
Daniel Hjelseth Høyer 5c4dfbff1b Update Tibber lib 0.32.1 (#152677) 2025-09-20 20:52:24 +02:00
G Johansson abe628506d Use OptionsFlowWithReload in pvpc_hourly_pricing (#151255) 2025-09-20 18:45:06 +02:00
Franck Nijhof 12cc0ed18d Refactor template engine: Extract raise_no_default() into helper module (#152661)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-20 17:20:05 +01:00
Franck Nijhof 8ca7562390 Merge branch 'master' into dev 2025-09-20 14:28:37 +00:00
GSzabados 942f7eebb1 Add PM4 device class for Ecowitt (#152568) 2025-09-20 14:40:21 +02:00
Franck Nijhof 1a167e6aee Refactor template engine: Extract context and render info (#152630) 2025-09-20 14:15:24 +02:00
Stephan van Rooij 9531ae10f2 Remove volvooncall (#150725)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-09-20 14:08:53 +02:00
tronikos bfc9616abf Deprecate google_generative_ai_conversation.generate_content (#152644) 2025-09-20 07:50:31 -04:00
Jan Bouwhuis 054a5d751a Organize order MQTT subentry (test) globals and translation strings (#152576) 2025-09-20 13:24:30 +02:00
Andrea Turri a43ba4f966 Miele add new program phase mapping (#152647) 2025-09-20 11:33:12 +02:00
J. Nick Koston 1a5cae125f Handle unparsable responses during HomeKit Controller initial polling (#152636) 2025-09-19 22:51:21 -05:00
Franck Nijhof f3b9bda876 2025.9.4 (#152634) 2025-09-19 23:08:58 +02:00
Yevhenii Vaskivskyi 3f3aaa2815 Bump asusrouter to 1.21.0 (#151607) 2025-09-19 20:38:05 +00:00
Franck Nijhof 6dc7870779 Bump version to 2025.9.4 2025-09-19 20:07:56 +00:00
G Johansson be83416c72 Bump holidays to 0.81 (#152569) 2025-09-19 20:07:27 +00:00
G Johansson c745ee18eb Bump holidays to 0.80 (#152306) 2025-09-19 20:07:25 +00:00
tronikos cf907ae196 Bump opower to 0.15.5 (#152531) 2025-09-19 20:05:04 +00:00
Pete Sage 8eee53036a Fix Sonos set_volume float precision issue (#152493) 2025-09-19 20:00:42 +00:00
Alexandre CUER b37237d24b Bump pyemoncms to 0.1.3 (#152436) 2025-09-19 20:00:41 +00:00
Matthias Alphart 950e758b62 Fix KNX UI schema missing DPT (#152430) 2025-09-19 20:00:40 +00:00
Josef Zweck 9cd940b7df Add La Marzocco specific client headers (#152419) 2025-09-19 20:00:38 +00:00
Josef Zweck 10b186a20d Bump pylamarzocco to 2.1.0 (#152364) 2025-09-19 20:00:37 +00:00
Imeon-Energy 757aec1c6b Bump imeon_inverter_api to 0.4.0 (#152351)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-19 20:00:36 +00:00
Allen Porter 0b159bdb9c Update authorization server to prefer absolute urls (#152313)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-19 20:00:34 +00:00
J. Nick Koston 8728312e87 Bump aiohomekit to 3.2.17 (#152297) 2025-09-19 20:00:33 +00:00
Åke Strandberg bbb67db354 Add proper error handling for /actions endpoint for miele (#152290) 2025-09-19 20:00:31 +00:00
J. Nick Koston 265f5da21a Bump bluetooth-auto-recovery to 1.5.3 (#152256) 2025-09-19 20:00:30 +00:00
J. Nick Koston 54859e8a83 Bump aiohomekit to 3.2.16 (#152255) 2025-09-19 20:00:28 +00:00
Sean Dague c87dba878d Upgrade waterfurnace to 1.2.0 (#152241) 2025-09-19 20:00:27 +00:00
J. Nick Koston 8d8e008123 Fix HomeKit Controller overwhelming resource-limited devices by batching characteristic polling (#152209) 2025-09-19 20:00:25 +00:00
Yevhenii Vaskivskyi b30667a469 Fix bug with the hardcoded configuration_url (asuswrt) (#151858) 2025-09-19 20:00:23 +00:00
Manu 8920c548d5 Bump habiticalib to v0.4.5 (#151720) 2025-09-19 20:00:22 +00:00
Manu eac719f9af Bump habiticalib to v0.4.4 (#151332) 2025-09-19 20:00:20 +00:00
Aidan Timson 71c274cb91 Add power usage sensor to System Bridge (#152625) 2025-09-19 21:16:30 +02:00
Retha Runolfsson d4902361e6 Bump pySwitchbot to 0.71.0 (#152597) 2025-09-19 22:04:42 +03:00
Norbert Rittel f63eee3889 Fix typo and sentence-casing in honeywell exception string (#152619) 2025-09-19 17:07:46 +02:00
Aidan Timson 21bfe610d1 Update systembridgeconnector to 5.1.0 (#152623) 2025-09-19 17:07:15 +02:00
J. Nick Koston 21c174e895 Bump aioesphomeapi to 41.4.0 (#152618)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-09-19 08:20:00 -06:00
Simon Roberts ec148e0459 Add PM4 (particulates < 4μm) sensor and number device classes (#112867)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-19 08:12:09 -06:00
Maciej Bieniek 286763b998 Fix KeyError for Shelly Duo Bulb Gen3 (#152612) 2025-09-19 07:22:48 -06:00
Shay Levy 5f88122a2b Fix Shelly Wall Display virtual button platform (#152582) 2025-09-19 11:44:08 +03:00
Åke Strandberg 31968d16ab Refactor miele program phase codes part 2(3) (#144180) 2025-09-19 09:54:24 +02:00
epenet c125554817 Rename modbus base entities (#152595) 2025-09-19 09:17:31 +02:00
Abílio Costa 10f2955d34 Update Whirlpool quality scale to silver (#152505) 2025-09-19 08:30:10 +02:00
Paulus Schoutsen 55712b784c Bump aioesphomeapi to 41.3.0 (#152588) 2025-09-18 22:49:03 -04:00
Paulus Schoutsen fe3a929556 Fix reolink test (#152587) 2025-09-18 21:03:13 -04:00
J. Nick Koston 534801e80d Migrate yale and august integrations to use new lock API (#152579) 2025-09-18 17:20:38 -05:00
J. Nick Koston 8aeda5a0c0 Bump aioesphomeapi to 41.2.0 (#152578) 2025-09-19 01:03:59 +03:00
Ville Skyttä eb1cbbc75c Upgrade upcloud-api to 2.8.0 (#152577) 2025-09-19 01:03:31 +03:00
Przemko92 fa8a4d7098 Add Compit integration (#132164)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-18 21:53:49 +01:00
Andre Lengwenus 2623ebac4d Bump pypck to 0.8.12 (#152573) 2025-09-18 23:34:37 +03:00
Michael Hansen 1746c51ce4 Fix error with pipeline device removal due to multiple selects (#152560) 2025-09-18 14:34:03 -05:00
Joakim Sørensen 8b984a2105 Remove ludeeus as a codeowner for analytics (#152558) 2025-09-18 22:08:22 +03:00
Allen Porter ebee370a56 Bump python roborock to 2.44.1 (#152557) 2025-09-18 21:51:16 +03:00
starkillerOG dabd096587 Add color temperature support to Reolink light entity (#152546) 2025-09-18 21:48:18 +03:00
Simone Chemelli 21399818af Remove stale devices for Comelit SimpleHome (#151519) 2025-09-18 19:43:38 +01:00
G Johansson 4354214fbf Bump holidays to 0.81 (#152569) 2025-09-18 20:35:21 +02:00
Erik Montnemery 5bd39804f1 Remove EntityComponent.async_register_legacy_entity_service (#152539) 2025-09-18 20:34:25 +02:00
Norbert Rittel 6d3ad3ab9c Replace "iCloud account" with "Apple Account" (#152561) 2025-09-18 18:39:54 +02:00
Petar Petrov 4c212bdcd4 Enable thread migration for ZBT integration (#152550) 2025-09-18 18:33:06 +03:00
Petar Petrov b91b39580f Add migrate options to ZBT protocol picker (#152532) 2025-09-18 11:13:58 -04:00
Jan Bouwhuis 472d70b6c9 Add comment on conversion factor for Carbon monoxide on dependency molecular weight (#152535) 2025-09-18 15:36:12 +02:00
tronikos 017a84a859 Bump opower to 0.15.5 (#152531) 2025-09-18 14:29:27 +03:00
starkillerOG d184540967 Bump reolink-aio to 0.15.1 (#152533) 2025-09-18 14:28:16 +03:00
Erik Montnemery 1740984b3b Improve comments in SelectedEntities (#152540) 2025-09-18 14:12:33 +03:00
droans 4db8592c61 Add support for overriding entity_picture to universal (#149387) 2025-09-18 11:59:29 +02:00
Stefan Agner 27e630c107 Make systemmonitor tests timezone independent (#152537) 2025-09-18 12:58:09 +03:00
Åke Strandberg ea8833342d Bump dependency pymiele to v0.5.5 and subsequent code changes (#152534) 2025-09-18 10:33:55 +02:00
epenet 87be2ba823 Use compat UOM in _is_valid_suggested_unit (#152350)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-18 08:38:15 +02:00
Artur Pragacz 51c35eb631 Move default conversation agent to manager (#152479) 2025-09-18 08:22:56 +02:00
Samuel Xiao 24a86d042f Bumb switchbot api to v2.8.0 (#152506) 2025-09-18 07:46:51 +02:00
Manu cd6f653123 Bump aiontfy to v0.6.0 (#152520) 2025-09-18 07:45:22 +02:00
J. Nick Koston fd05ddca28 Bump yalexs to 9.2.0 (#152527) 2025-09-18 07:43:54 +02:00
Artur Pragacz a1f2eb44ae Move trigger-specific fields into options in new-style triggers (#151314) 2025-09-18 07:35:39 +02:00
Samuel Xiao c4ddc03dbc Update codeowner for switchbot cloud Integration (#152526) 2025-09-17 22:54:22 -05:00
J. Nick Koston 9db5aafb71 Bump yalexs to 9.1.0 (#152457) 2025-09-17 22:11:35 -05:00
Ivan Lopez Hernandez 64cdcfb613 Bump google-genai to 1.38.0 (#152523) 2025-09-17 22:14:04 -04:00
Paulus Schoutsen c761ce699c Tweak usage prediction common control algorithm (#152490) 2025-09-17 19:04:25 -04:00
Martin Hjelmare 40ebce4ae8 Improve Home Assistant Hardware flow (#152451)
Co-authored-by: puddly <32534428+puddly@users.noreply.github.com>
2025-09-17 18:23:38 -04:00
puddly 29914d6722 Bump ZHA to 0.0.71 (#152511) 2025-09-17 18:23:08 -04:00
Jan Bouwhuis 5eef6edded Add mg/m³ as a valid UOM for sensor/number Carbon Monoxide device class (#152456) 2025-09-17 22:04:23 +01:00
epenet db729273a5 Add pymodbus to PACKAGE_CHECK_VERSION_RANGE (#152494) 2025-09-17 17:22:45 +02:00
Abílio Costa 946d75d651 Merge similar Whirlpool init tests (#152497) 2025-09-17 17:18:54 +02:00
Abílio Costa 093f779edb Remove target humidity methods from Whirlpool climate (#152498) 2025-09-17 17:18:20 +02:00
Paulus Schoutsen 87658e77a7 Clean up stale comment in AI Task test (#152492) 2025-09-17 17:17:20 +02:00
dontinelli 38f65cda98 Bump solarlog_cli to 0.6.0 (#152500) 2025-09-17 16:02:51 +01:00
Jan Čermák 797c6ddedd Fix APT cache restore failures in CI (#152481)
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2025-09-17 16:52:09 +02:00
NANI fe8a53407a Add Victron Remote Monitoring integration (#143687)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-17 16:38:04 +02:00
Abílio Costa ae5f57fd99 Add unique_id to Whirlpool config entry mock (#152496) 2025-09-17 14:38:53 +01:00
Abílio Costa a93c3cc23c Make Whirlpool log when entity goes unavailable (#152064) 2025-09-17 15:00:23 +02:00
Pete Sage 804b42e1fb Fix Sonos set_volume float precision issue (#152493) 2025-09-17 14:39:28 +02:00
karwosts a4f15e4840 Add debug logging to derivative (#152489) 2025-09-17 14:19:48 +02:00
Pete Sage 2471177c84 Set Sonos quality scale to bronze (#152487) 2025-09-17 14:16:08 +02:00
Yuxin Wang a494d3ec69 Sort the resources for deterministic sensor addition order in APCUPSD (#152467) 2025-09-17 10:41:19 +02:00
Paulus Schoutsen b10a9721a7 Add async_get_image helper to Image integration (#152465) 2025-09-17 10:35:55 +02:00
Paulus Schoutsen 04c0bb20d6 AI Task to store generated images in media dir (#152463) 2025-09-17 10:30:15 +02:00
Paulus Schoutsen 1598c4ebe8 Bump aioesphomeapi to 41.1.0 (#152461)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-16 20:18:54 -04:00
karwosts d67ec7593a Add diagnostics to history_stats (#152460) 2025-09-17 00:02:35 +01:00
Franck Nijhof 4a4c124181 Refactor template engine: Extract collection & data structure functions into CollectionExtension (#152446) 2025-09-16 18:48:50 -04:00
Franck Nijhof c34af4be86 Add active built-in and custom integrations to Cloud support package (#152452) 2025-09-16 18:47:00 -04:00
GSzabados 823071b722 Add LDS01 support (#151820)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-09-16 21:33:47 +02:00
Daniel Jansen 462fa77ba1 Improve waze_travel_time tests (#146495)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-16 21:24:51 +02:00
Yevhenii Vaskivskyi 24fc8b9297 Fix bug with the hardcoded configuration_url (asuswrt) (#151858) 2025-09-16 21:18:29 +02:00
Paulus Schoutsen 2596ab2940 OpenAI to use provided mimetype when available (#152407) 2025-09-16 22:11:46 +03:00
Robert Resch 23fa84e20e Verify that Ecovacs integration is setup without any errors in the tests (#152447) 2025-09-16 20:55:44 +02:00
Shay Levy 7f13141297 Bump aioshelly 13.10.0 (#152442) 2025-09-16 21:25:09 +03:00
karwosts 770f41d079 Diagnostics for derivative sensor (#152445) 2025-09-16 14:24:05 -04:00
Shay Levy df16e85359 Fix typo in update_not_available key in Shelly strings (#152444) 2025-09-16 14:23:10 -04:00
Nathan Spencer 3c6db923a3 Deprecate Litter-Robot 4 night light mode switch (#152249) 2025-09-16 20:18:26 +02:00
Thomas D 450c47f932 Use new method to get the access token in the Volvo integration (#151625)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-16 20:17:43 +02:00
Norbert Rittel 048f64eccf Improve two unsupported_xxx issue descriptions in hassio (#152387)
Co-authored-by: Stefan Agner <stefan@agner.ch>
2025-09-16 19:52:12 +02:00
Maciej Bieniek c4c523e8b7 Open a repair issue if Shelly Wall Display firmware is older than 2.3.0 (#152399) 2025-09-16 19:48:47 +02:00
Matthias Alphart 87e30e0907 Fix KNX UI schema missing DPT (#152430) 2025-09-16 19:39:39 +02:00
Alexandre CUER 74660da2d2 Bump pyemoncms to 0.1.3 (#152436) 2025-09-16 18:32:13 +02:00
Maciej Bieniek 6b8c180509 Bump imgw_pib to version 1.5.6 (#152435) 2025-09-16 18:30:22 +02:00
Alessandro Manighetti eb4a873c43 Add m/min of speed sensors (#146441) 2025-09-16 18:02:22 +02:00
G Johansson 6aafa666d6 Add calendar to Workday (#150596) 2025-09-16 17:29:04 +02:00
Mike Degatano 9ee9bb368d Move Supervisor created persistent notifications into repairs (#152066) 2025-09-16 11:24:48 -04:00
Tom Matheussen 6e4258c8a9 Add Satel Integra config flow (#138946)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-09-16 17:24:15 +02:00
Paulus Schoutsen d65e704823 Add usage_prediction integration (#151206)
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-16 10:33:46 -04:00
Retha Runolfsson aadaf87c16 Add switchbot relayswitch 2PM (#146140) 2025-09-16 15:59:13 +02:00
Timothy e70b147c0c Add missing content type to backup http endpoint (#152433) 2025-09-16 09:45:21 -04:00
yufeng 031b12752f Add sensors for Tuya energy storage systems (xnyjcn) (#149237)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-09-16 15:34:21 +02:00
Samuel Xiao df0cfd69a9 Add Climate Panel support to Switchbot Cloud (#152427) 2025-09-16 14:14:09 +02:00
marc7s b2c53f2d78 Add geocaching cache sensors (#145453) 2025-09-16 14:13:54 +02:00
Rafael López Diez 3649e949b1 Add support for sending chat actions in Telegram bot integration (#151378) 2025-09-16 14:06:15 +02:00
Rafael López Diez de7e2303a7 Add support for multi-tap action in Lutron Caseta integration (#150551) 2025-09-16 13:32:10 +02:00
onsmam 892f3f267b Added rain_start and lightningstrike event to publish on the event bus (#146652)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-16 13:31:43 +02:00
Marc Mueller 0254285285 Fix warning in template extensions tests (#152425) 2025-09-16 13:30:36 +02:00
Chris Oldfield 44a95242dc Add downloading and seeding counts to Deluge (#150623) 2025-09-16 13:06:14 +02:00
Marc Mueller f9b1c52d65 Fix warning in prowl tests (#152424) 2025-09-16 12:42:37 +02:00
Josef Zweck aa8d78622c Add La Marzocco specific client headers (#152419) 2025-09-16 13:15:57 +03:00
Franck Nijhof ca6289a576 Refactor template engine: Extract string functions into StringExtension (#152420) 2025-09-16 13:15:43 +03:00
Erik Montnemery 0f372f4b47 Improve condition schema validation (#144793) 2025-09-16 10:44:26 +02:00
Franck Nijhof 4bba167ab3 Refactor template engine: Extract regex functions into RegexExtension (#152417) 2025-09-16 10:38:01 +02:00
Jan-Philipp Benecke 962c0c443d Improve setup completion message of Improv BLE (#152412) 2025-09-16 10:37:47 +02:00
Duco Sebel c6b4cac28a Remember HomeWizard uptime sensor value as timestamp to prevent it spamming the state (#150680)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-16 10:29:37 +02:00
dependabot[bot] 3c7e3a5e30 Bump home-assistant/builder from 2025.03.0 to 2025.09.0 (#152413)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 10:28:49 +02:00
Maciej Bieniek fa698956c3 Fix the illuminance level entity name in Shelly integration (#152400)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-09-16 10:16:43 +02:00
Klaas Schoute 32f136b12f Update P1 Monitor integration to use settings method during config flow (#152391) 2025-09-16 10:11:29 +02:00
Josef Zweck e1f617df25 Bump pylamarzocco to 2.1.0 (#152364) 2025-09-16 10:08:08 +02:00
Tomeroeni 84f1b8a5cc Bump aiounifi version to 87 (#152395) 2025-09-16 10:04:06 +02:00
kylehakala e9cedf4852 Bump aioridwell to 2025.09.0 (#152405) 2025-09-16 10:01:50 +02:00
kingy444 9c72b40ab4 Bump HunterDouglas_Powerview dependency to aiopvapi 3.2.1 (#152409) 2025-09-16 09:58:41 +02:00
Marcus Gustavsson 65f655e5f5 Change Prowl to use the prowlpy library and add tests for the Prowl component (#149034)
Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-16 09:23:08 +02:00
Erik Montnemery af28573894 Refactor zwave js event trigger (#144885) 2025-09-16 07:49:09 +02:00
Jan-Philipp Benecke c5fc1de3df Update url in success message of Improv BLE to use markdown (#152388) 2025-09-15 19:50:19 +01:00
karwosts 1df1144eb9 Add 'stations near me' to radio browser (#150907) 2025-09-15 14:47:16 -04:00
Artur Pragacz d51c0e3752 Revert "Add Matter service actions for vacuum area (#151467)" (#152386) 2025-09-15 20:14:09 +02:00
Ernst Klamer f5157878c2 Bthome encryption fix (#152384) 2025-09-15 20:46:43 +03:00
Lennard Beers fb723571b6 Bump eq3btsmart to 2.3.0 (#152383) 2025-09-15 18:36:12 +01:00
puddly dbf80c3ce3 Bump universal-silabs-flasher to 0.0.32 (#152381) 2025-09-15 19:10:52 +02:00
Joost Lekkerkerker e0a774b598 Add sensor test to Nederlandse Spoorwegen (#152375) 2025-09-15 18:03:14 +01:00
Manu 168afc5f0e Bump pyrate-limiter to v3.9.0 (#152370) 2025-09-15 18:54:26 +02:00
Paulus Schoutsen af23670854 Add quality-scale-verifier Claude agent (#152333) 2025-09-15 17:40:15 +01:00
Jan Bouwhuis 935ce421df Remove unused const in MQTT JSON Light component (#152377) 2025-09-15 11:36:19 -05:00
Klaas Schoute c60ad8179d Bump p1-monitor to v3.2.0 (#152378) 2025-09-15 18:12:04 +02:00
Nc Hodges 14ad3364e3 Add Re-Configure workflow to the Elk M1 Integration (#146368)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-15 11:02:00 -05:00
J. Nick Koston e229f36648 Clarify contributor responsibility when using AI-generated code (#152379) 2025-09-15 17:59:06 +02:00
Norbert Rittel f4f99e015c Clarify "discovery_requires_supervisor" message in zwave_js (#152345) 2025-09-15 17:14:41 +02:00
Joost Lekkerkerker 5dc509cba0 Add typing to Nederlandse Spoorwegen (#152367) 2025-09-15 16:19:39 +02:00
Shay Levy 75597ac98d Add Shelly removal condition for virtual components (#152312) 2025-09-15 16:15:15 +03:00
Heindrich Paul b503f792b5 Add config flow to NS (#151567)
Signed-off-by: Heindrich Paul <heindrich.paul@gmail.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-15 15:13:43 +02:00
Ludovic BOUÉ 410c3df6dd Add Matter service actions for vacuum area (#151467)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-15 13:52:26 +02:00
virtualbitzz f1bf28df18 Add Matter climate running state heat fan and cool fan (#151535)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-09-15 13:28:40 +02:00
Patrick 99fb64af9b Add new USB drives to Synology DSM without reloading integration (#146829)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-15 13:12:57 +02:00
Shay Levy c0af0159e3 Use Entity Description in Shelly light platform (#137118) 2025-09-15 14:10:25 +03:00
Jan Bouwhuis 71749da3a3 Rename MQTT tag and device_automation setup helpers (#152344) 2025-09-15 11:52:24 +02:00
Norbert Rittel b01be94034 Update "Find my iPhone" to "Find My" in icloud (#152354) 2025-09-15 11:52:08 +02:00
Jan Gutowski 47ec8b7f12 Bump nibe to 2.18.0 (#152353) 2025-09-15 11:41:44 +02:00
dependabot[bot] 93ec9e448e Bump sigstore/cosign-installer from 3.9.2 to 3.10.0 (#152343)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-15 11:20:21 +02:00
Lennard Beers 90bc41dd02 Bump eq3btsmart to 2.2.0 (#152334) 2025-09-15 11:16:39 +02:00
epenet 410d869f3d Improve type hints in zha tests (#152347) 2025-09-15 11:16:10 +02:00
Imeon-Energy d75d9f2589 Bump imeon_inverter_api to 0.4.0 (#152351)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-15 11:14:31 +02:00
Christopher Fenner afbb832a57 Improve config flow for openweathermap integration (#152319) 2025-09-15 11:13:39 +02:00
epenet bdc881c87a Handle missing argument in hass_enforce_type_hints (#152342) 2025-09-15 09:45:27 +02:00
J. Nick Koston 22ea269ed8 Bump aioesphomeapi to 41.0.0 (#152332) 2025-09-14 23:22:10 -04:00
tronikos 10fecbaf4d Mark Opower as bronze (#148103)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2025-09-14 23:21:05 -04:00
Franck Nijhof cbdc1dc5b6 Refactor template engine: Extract math & statistical functions into MathExtension (#152266) 2025-09-14 20:48:29 -04:00
J. Nick Koston b203a831c9 Bump aioesphomeapi to 40.2.1 (#152327) 2025-09-14 19:31:55 -05:00
G Johansson 5ccbee4c9a Break long strings in entity platform/component tests (#152320) 2025-09-14 23:27:04 +02:00
Allen Porter 1483c9488f Update authorization server to prefer absolute urls (#152313)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-14 14:07:31 -07:00
Paulus Schoutsen f5535db24c Automatically generate entity platform enum (#152193)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-14 22:44:48 +02:00
Shay Levy e40ecdfb00 Remove Shelly empty sub-devices (#152251) 2025-09-14 22:43:37 +02:00
Norbert Rittel 2f4c69bbd5 Simplify description of direction_command_topic in mqtt (#150617) 2025-09-14 22:05:05 +02:00
Norbert Rittel dd0f6a702b Small fixes of user-facing strings in esphome (#152311) 2025-09-14 21:36:05 +03:00
Norbert Rittel 5ba580bc25 Capitalize "Supervisor" in two issues strings of hassio (#152303)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-09-14 21:35:47 +03:00
Samuel Xiao c13002bdd5 Add supported device[Plug-Mini-EU] for switchbot cloud (#151019) 2025-09-14 20:00:15 +02:00
Niklas Wagner 75d22191a0 Fix local_todo capitalization to preserve user input (#150814) 2025-09-14 19:53:41 +02:00
GSzabados 58d6549f1c Add display precision for rain rate and rain count (#151822) 2025-09-14 19:49:59 +02:00
Åke Strandberg 1fcc6df1fd Add proper error handling for /actions endpoint for miele (#152290) 2025-09-14 19:47:01 +02:00
J. Nick Koston 9bf467e6d1 Bump aioesphomeapi to 40.2.0 (#152272) 2025-09-14 19:39:44 +02:00
J. Nick Koston d877d6d93f Fix Lutron Caseta shade stuttering and improve stop functionality (#152207)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-14 19:35:18 +02:00
Lukas Waslowski d2b255ba92 nitpick: Add parameter types to _test_selector function signature (#152226) 2025-09-14 19:33:43 +02:00
Christopher Fenner 1509c429d6 Improve husqvarna_automower_ble config flow (#144877) 2025-09-14 19:32:10 +02:00
G Johansson af9717c1cd Raise error for entity services without a correct schema (#151165) 2025-09-14 19:17:26 +02:00
karwosts 49e75c9cf8 Fix browse by language in radio browser (#152296) 2025-09-14 19:04:59 +02:00
J. Nick Koston c97f16a96d Bump aiohomekit to 3.2.17 (#152297) 2025-09-14 19:02:11 +02:00
Bram Gerritsen a3a4433d62 Add missing unit conversion for BTU/h (#152300) 2025-09-14 19:00:44 +02:00
G Johansson f832002afd Bump holidays to 0.80 (#152306) 2025-09-14 17:51:47 +02:00
J. Diego Rodríguez Royo dbc7f2b43c Remove Home Connect stale code (#152307) 2025-09-14 17:51:11 +02:00
Galorhallen 1cd3a1eede Updated govee local api to 2.2.0 (#152289) 2025-09-14 16:16:26 +02:00
Norbert Rittel 7d6e0d44b0 Capitalize "Core" and "Supervisor" in backup issue strings (#152292) 2025-09-14 16:14:08 +02:00
jan iversen 2bb6d745ca Flexit: Fix wrong import from modbus. (#152225) 2025-09-14 12:04:07 +02:00
Todd Fast beb9d7856c Reduce PurpleAir sensor polling rate from every 2m to every 5m (#152271) 2025-09-14 11:59:48 +02:00
PaulCavill 6a4c8a550a Fix login issue with pyicloud (#129059)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-14 11:34:14 +02:00
Simon Lamon 7d23752a3f Unpin home-assistant/builder action (#152279) 2025-09-14 11:11:59 +02:00
Adam Goode c2b2a78db5 Change prusalink update cooldown to 1.0 seconds (#151060) 2025-09-14 10:58:00 +02:00
Manu 0fb6bbee59 Improve error logging for protected topic subscription in ntfy integration (#152244) 2025-09-14 10:02:48 +03:00
Denis Shulyaka d93e0a105a Save AI generated images to files (#152231) 2025-09-13 17:37:39 -04:00
karwosts ab1619c0b4 Adjust logbook filtering rules (#149349)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-13 16:34:55 -05:00
Franck Nijhof 70df7b8503 Restructure template engine, add crypto & base64 Jinja extension (#152261) 2025-09-13 22:21:29 +02:00
Denis Shulyaka 0e2c2ad355 Create dir on media upload if not exists (#152254) 2025-09-13 15:34:12 -04:00
J. Nick Koston 4c26718739 Bump bluetooth-auto-recovery to 1.5.3 (#152256) 2025-09-13 20:19:37 +02:00
J. Nick Koston 96034e1525 Bump aiohomekit to 3.2.16 (#152255) 2025-09-13 12:44:34 -05:00
Marc Mueller df1302fc1c Update mypy-dev to 1.19.0a2 (#152250) 2025-09-13 19:28:02 +02:00
Marc Mueller 5a5b639aa4 Update pytest-asyncio to 1.2.0 (#152156) 2025-09-13 19:27:47 +02:00
J. Nick Koston e9fbe2227f Fix HomeKit Controller overwhelming resource-limited devices by batching characteristic polling (#152209) 2025-09-13 19:24:05 +02:00
Yuxin Wang 82b57568a0 Set diagnostic entity category for "mode" in APCUPSD (#152246) 2025-09-13 18:38:47 +02:00
Simon Lamon be692ab2fd Reapply "Pin SHA for all github actions" (#152233) 2025-09-13 16:47:33 +02:00
Tor André Roland 24c04cceee Reflect Verisure lock, alarm control panel and switch state immediately without cloud pull (#149479)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-13 15:41:51 +01:00
w531t4 97077898bb Add Twitch entity for self (#150525)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-13 15:39:11 +01:00
Sean Dague 08485f4e09 Upgrade waterfurnace to 1.2.0 (#152241) 2025-09-13 15:36:15 +01:00
Marc Mueller b64d60fce4 Fix lg_thinq RuntimeWarning in tests (#152221) 2025-09-13 16:30:17 +02:00
Marc Mueller 3690497e1f Update pydantic to 2.11.9 (#152213) 2025-09-13 15:17:49 +01:00
Paulus Schoutsen 3499ed7a98 2025.9.3 (#152237) 2025-09-13 08:44:08 -04:00
Paulus Schoutsen 2c809d5903 Bump version to 2025.9.3 2025-09-13 12:14:15 +00:00
J. Nick Koston 40988198f3 Bump habluetooth to 5.6.4 (#152227) 2025-09-13 12:14:08 +00:00
Paulus Schoutsen b87e581cde Drop use of aiofiles in TTS (#152208) 2025-09-13 07:29:09 -04:00
J. Nick Koston f1c55ee7e2 Bump habluetooth to 5.6.4 (#152227) 2025-09-13 07:04:58 -04:00
J. Nick Koston 9f17a82acf Revert "Pin SHA for all github actions" (#152229) 2025-09-13 05:50:31 -05:00
Shay Levy 3955391cda Fix Shelly orphaned entity removal logic to handle sub-devices (#152195) 2025-09-13 12:11:47 +03:00
karwosts d9a757c7e6 Play url_resolved for radio browser instead of url (#150888) 2025-09-12 22:14:19 -04:00
Michael Hansen aa1ec944c0 Add secondary wake word and pipeline to ESPHome voice satellites (#151710) 2025-09-12 22:11:09 -04:00
Beat 88c3b6a9f5 Remove myself from enocean code owners (#151149) 2025-09-12 21:28:20 -04:00
skbeh ada73953f6 Use ephemeral port for SSDP server (#152049) 2025-09-12 23:56:53 +01:00
epenet 42e9b9a0bc Refactor _is_valid_suggested_unit in sensor (#151956) 2025-09-12 23:48:30 +01:00
Brandon Rothweiler ec6a052ff5 Add Hot Water+ Level select entity to A. O. Smith integration (#151548) 2025-09-13 00:46:26 +02:00
WardZhou c91d64e04d Add support for Thread Integration to Display Icons for GLiNet TBRs (#151386) 2025-09-12 23:45:43 +01:00
Franck Nijhof ab5d1d27f1 2025.9.2 (#152198) 2025-09-12 23:10:27 +02:00
wollew 1c10b85fed Use position percentage for closed status in Velux (#151679)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-12 20:39:06 +00:00
Franck Nijhof 91a7db08ff Bump version to 2025.9.2 2025-09-12 20:20:56 +00:00
Bram Kragten a764d54123 Update frontend to 20250903.5 (#152170) 2025-09-12 20:20:44 +00:00
Joakim Sørensen dc09e33556 Bump hass-nabucasa from 1.1.0 to 1.1.1 (#152147) 2025-09-12 20:20:43 +00:00
Simone Chemelli 14173bd9ec Fix reauth for Alexa Devices (#152128) 2025-09-12 20:20:42 +00:00
Jan Bouwhuis d2e7537629 Fix supported _color_modes attribute not set for on/off MQTT JSON light (#152126) 2025-09-12 20:20:41 +00:00
J. Nick Koston 9a165a64fe Fix DoorBird being updated with wrong IP addresses during discovery (#152088)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-12 20:20:39 +00:00
Abílio Costa 9c749a6abc Fix duplicated IP port usage in Govee Light Local (#152087) 2025-09-12 20:20:38 +00:00
J. Nick Koston 2e33222c71 Fix HomeKit Controller stale values at startup (#152086)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-09-12 20:20:37 +00:00
Maciej Bieniek ab1c2c4f70 Bump accuweather to version 4.2.1 (#152029) 2025-09-12 20:20:36 +00:00
Joost Lekkerkerker 529219ae69 Bump yt-dlp to 2025.09.05 (#152006) 2025-09-12 20:20:35 +00:00
J. Nick Koston d6ce71fa61 Bump habluetooth to 5.6.2 (#151985) 2025-09-12 20:20:33 +00:00
peteS-UK e5b67d513a Fix playlist media_class_filter in search_media for squeezebox (#151973) 2025-09-12 20:20:32 +00:00
peteS-UK a547179f66 Fix for squeezebox track content_type (#151963) 2025-09-12 20:20:31 +00:00
epenet 8c61788a7d Fix invalid logger in Tuya (#151957) 2025-09-12 20:19:26 +00:00
J. Nick Koston 6b934d94db Bump habluetooth to 5.6.0 (#151942) 2025-09-12 20:18:38 +00:00
J. Nick Koston d30ad82774 Bump bleak-esphome to 3.3.0 (#151922)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-12 20:18:37 +00:00
J. Nick Koston 4618b33e93 Bump habluetooth to 5.5.1 (#151921) 2025-09-12 20:18:36 +00:00
epenet d6299094db Fix _is_valid_suggested_unit in sensor platform (#151912) 2025-09-12 20:18:35 +00:00
Simone Chemelli 087d9d30c0 Avoid cleanup/recreate of device_trackers not linked to a device for Vodafone Station (#151904) 2025-09-12 20:18:33 +00:00
Simone Chemelli f07890cf5c Bump aiovodafone to 1.2.1 (#151901) 2025-09-12 20:18:31 +00:00
Avi Miller e5b78cc481 Bump aiolifx-themes to 1.0.2 to support newer LIFX devices (#151898)
Signed-off-by: Avi Miller <me@dje.li>
2025-09-12 20:18:30 +00:00
Manu 12b409d8e1 Bump aiontfy to v0.5.5 (#151869) 2025-09-12 20:18:29 +00:00
Maciej Bieniek def5408db8 Use native_visibility property instead of visibility for OpenWeatherMap weather entity (#151867) 2025-09-12 20:18:28 +00:00
Robert Resch f105b45ee2 Bump aioecowitt to 2025.9.1 (#151859) 2025-09-12 20:18:26 +00:00
wollew 9d904c30a7 fix rain sensor for Velux GPU windows (#151857) 2025-09-12 20:18:25 +00:00
Martins Sipenko 99b047939f Update pysmarty2 to 0.10.3 (#151855) 2025-09-12 20:18:24 +00:00
J. Nick Koston 3a615908ee Bump aioharmony to 0.5.3 (#151853) 2025-09-12 20:18:23 +00:00
David Knowles baff541f46 Bump pydrawise to 2025.9.0 (#151842) 2025-09-12 20:18:22 +00:00
jan iversen 6d8c35cfe9 removed assert fron entity in modbus. (#151834) 2025-09-12 20:18:20 +00:00
jan iversen b8d9883e74 max_temp / min_temp in modbus light could only be int, otherwise an assert was provoked. (#151833) 2025-09-12 20:18:19 +00:00
jan iversen c3c65af450 Allow delay > 1 in modbus. (#151832) 2025-09-12 20:18:18 +00:00
Maciej Bieniek 3af8616764 Mark Tractive switches as unavailable when tacker is in the enegy saving zone (#151817) 2025-09-12 20:18:17 +00:00
Matthias Alphart 64ec4609c5 Fix KNX Light - individual color initialisation from UI config (#151815) 2025-09-12 20:18:15 +00:00
Matthias Alphart c78bc26b83 Fix KNX BinarySensor config_store data (#151808) 2025-09-12 20:18:14 +00:00
J. Nick Koston 0c093646c9 Bump habluetooth to 5.3.1 (#151803) 2025-09-12 20:18:13 +00:00
Simone Chemelli 1b27acdde0 Improve config entry migration for edge cases in Alexa Devices (#151788) 2025-09-12 20:18:12 +00:00
Ludovic BOUÉ 9dafc0e02f Remove device class for Matter NitrogenDioxideSensor (#151782)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-12 20:18:10 +00:00
Tsvi Mostovicz 0091dafcb0 Revert "Jewish Calendar add coordinator " (#151780) 2025-09-12 20:18:09 +00:00
Jan Bouwhuis b387acffb7 Fix update of the entity ID does not clean up an old restored state (#151696)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-12 20:18:08 +00:00
blotus 36b3133fa2 Fix support for Ecowitt soil moisture sensors (#151685) 2025-09-12 20:18:06 +00:00
hbludworth fe01e96012 Fix Aladdin Connect state not updating (#151652)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-12 20:18:05 +00:00
Thomas55555 0b56ec16ed Add event entity on websocket ready in Husqvarna Automower (#151428) 2025-09-12 20:18:04 +00:00
Mark Adkins ca79f4c963 Update SharkIQ authentication method (#151046) 2025-09-12 20:18:02 +00:00
Bob Igo 9a43f2776d Fix XMPP not working with non-TLS servers (#150957) 2025-09-12 20:18:01 +00:00
hbludworth 0ac7cb311d Fix Aladdin Connect state not updating (#151652)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-12 22:16:37 +02:00
Shay Levy 3472020812 Add icons for volume flow rate (#152196) 2025-09-12 22:09:01 +02:00
RoboMagus dcd09523a6 Webhook trigger: Enable templated webhook_id (#151193) 2025-09-12 15:48:52 -04:00
Jozef Lačný a5bfdc697b Add MEASUREMENT state_class to temperature sensors of flexit_bacnet (#152120) 2025-09-12 15:16:26 -04:00
Petar Petrov dbb29a7c7d Add attributes.entity_id to min_max sensors similar to groups (#151480) 2025-09-12 15:16:06 -04:00
Nathan Spencer 124a63d846 Add globe light settings for Litter-Robot 4 (#152190) 2025-09-12 14:55:50 -04:00
Michael Hansen 3de701a9ab Acknowledge if targets in same area (#150655)
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
2025-09-12 13:40:16 -05:00
Nc Hodges bfe1dd65b3 Add device and state class to Temp and Voltage entities. (#145613)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-12 12:57:58 -05:00
AdrianEddy 71bf5e14cc Add On/Off switch for DiscreteHeatingSystem in Overkiz (#151778)
Co-authored-by: Mick Vleeshouwer <mick@imick.nl>
2025-09-12 19:24:59 +02:00
Daniel Hjelseth Høyer 6d231c2c99 Tibber 15min prices (#151881)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-12 19:23:34 +02:00
Artur Pragacz b93072865b Clean up unused partial action response in intent helper (#151908) 2025-09-12 19:21:41 +02:00
Simon Lamon 14ebb6cd74 Pin SHA for all github actions (#151939) 2025-09-12 19:20:20 +02:00
Shay Levy 2ddbcd560e Add Shelly support for virtual buttons (#151940) 2025-09-12 19:16:54 +02:00
jan iversen c5ff7ed1c9 Remove self._lock in modbus. (#151997)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-09-12 19:15:15 +02:00
Yuxin Wang c4bea5616c Upgrade aioapcaccess to 1.0.0 (#151844) 2025-09-12 19:09:46 +02:00
epenet 17fe147726 Add support for Tuya szjcy category (water quality sensors) (#152020) 2025-09-12 19:08:29 +02:00
epenet 9fae4e7e1f Add support for Tuya bzyd category (white noise machine) (#152025) 2025-09-12 19:00:54 +02:00
Thijs W. 0cebca498c Bump pymodbus to 3.11.2 (#152097)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-09-12 18:55:22 +02:00
Luke Lashley 521ff62aae Make Roborock map transparent by default (#152092) 2025-09-12 18:50:42 +02:00
Marcos Alano fd1df5ad88 Add select for up/down/stop to electric desk (#152166) 2025-09-12 18:39:05 +02:00
Nathan Spencer 91e7a35a07 Add gravity mode switch for Feeder-Robot (#152175) 2025-09-12 18:36:58 +02:00
Maciej Bieniek 09381abf46 Add hourly forecast for AccuWeather integration (#152178) 2025-09-12 18:34:56 +02:00
laiho-vogels 3713c03c07 Drop index from preset name in MotionMount (#151301)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-12 17:33:26 +01:00
Erik Montnemery bd8ddd7cd8 Register androidtv entity services in async_setup (#152172) 2025-09-12 18:29:47 +02:00
Jan Bouwhuis f0dc1f927b Fix ai_task generate image service test (#152184) 2025-09-12 18:19:03 +02:00
Simone Chemelli 984590c6d1 Fix Pylance errors in UptimeRobot tests (#152185) 2025-09-12 18:18:27 +02:00
Iskra kranj d324021a3f Bump pyiskra to 0.1.27 (#152160) 2025-09-12 18:05:37 +02:00
jan iversen 1f4c0b3e9b Add codeowner for Modbus (#152163) 2025-09-12 18:04:01 +02:00
Bram Kragten 69893aba4b Update frontend to 20250903.5 (#152170) 2025-09-12 18:01:16 +02:00
Paulus Schoutsen b9dcf89b37 Fix hassfest error for internal integrations (#152173)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-12 17:53:08 +02:00
Artur Pragacz 54fd55a1c6 Remove unused ATTR_STEP_VALIDATION from number (#152179) 2025-09-12 16:46:42 +02:00
Matthias Alphart cc64fa639d Add KNX UI entity config to diagnostics (#151620) 2025-09-12 15:41:17 +02:00
Benjamin Pearce 84140ba414 Add remote codes which can be used with remote.send_command to diagnostics (#152017)
Co-authored-by: Maciej Bieniek <bieniu@users.noreply.github.com>
2025-09-12 14:41:15 +02:00
Marc Mueller d1726b84c8 Update pytest-cov to 7.0.0 (#152157) 2025-09-12 13:34:20 +02:00
Jan Bouwhuis 4724ecbc38 Suppress warning if object_id is still added when default_entity_id is used in MQTT discovery (#151996) 2025-09-12 13:11:10 +02:00
Marc Mueller 85afe87b5e Update coverage to 7.10.6 (#152158) 2025-09-12 13:02:01 +02:00
Nathan Spencer 5960179844 Add food dispensed today and next feeding sensors to litterrobot (#152016)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-12 11:17:45 +01:00
Thomas55555 9f8f7d2fde Add event entity on websocket ready in Husqvarna Automower (#151428) 2025-09-12 11:52:29 +02:00
ekobres 4c22264b13 Add support for inH₂O pressure unit (#148289)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-12 11:24:45 +02:00
Andrea Turri baf4382724 Miele consumption sensors consistent behavior with RestoreSensor (#151098) 2025-09-12 11:17:10 +02:00
Manu 8263ea4a4a Don't try to connect after exiting loop in ntfy (#152011) 2025-09-12 11:14:01 +02:00
Bouwe Westerdijk 8412581be4 Implement snapshot-testing for Plugwise climate platform (#151070) 2025-09-12 11:10:49 +02:00
J. Nick Koston 207c848438 Improve SwitchBot device discovery when Bluetooth adapter is in passive mode (#152074) 2025-09-12 11:08:51 +02:00
Paulus Schoutsen 2b61601fd7 Remove the host from the AI Task generated image URL (#151887) 2025-09-12 11:03:01 +02:00
Denis Shulyaka ee506e6c14 Implement thinking content for Gemini (#150347)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-12 05:02:39 -04:00
Brett Adams 8003a49571 Add guest mode switch to Teslemetry (#151550) 2025-09-12 10:44:38 +02:00
Maciej Bieniek e438b11afb Use native_visibility property instead of visibility for OpenWeatherMap weather entity (#151867) 2025-09-12 10:44:22 +02:00
Matthias Alphart 64ba43703c Fix KNX Light - individual color initialisation from UI config (#151815) 2025-09-12 10:43:45 +02:00
Jeremy Cook 1d214ae120 For the met integration Increase the hourly forecast limit to 48 hours in coordinator. (#150486) 2025-09-12 10:19:29 +02:00
Joakim Sørensen 68d987f866 Bump hass-nabucasa from 1.1.0 to 1.1.1 (#152147) 2025-09-12 10:18:58 +02:00
Norbert Rittel 299cc5e40c Fix sentence-casing of "CPU temperature" in fritz (#152149) 2025-09-12 10:18:12 +02:00
Retha Runolfsson 2c3456177e Add humidifier support for switchbot cloud integration (#149039) 2025-09-12 10:08:01 +02:00
Retha Runolfsson 1ef90180cc Add plug mini eu for switchbot integration (#151130) 2025-09-12 10:05:15 +02:00
Erik Montnemery 4c1364dfd1 Fix wrong type annotation in exposed_entities (#152142) 2025-09-12 09:32:17 +02:00
Norbert Rittel 09a44a6a30 Fix spelling of "H.265" encoding standard in reolink (#152130) 2025-09-12 08:05:01 +02:00
Maciej Bieniek 63303bdcde Allow port and SNMP community configuration for Brother printer (#151506) 2025-09-12 00:21:05 +02:00
Markus Adrario 59cd24f54b Add dynamic devices to Homee (#151934) 2025-09-12 00:19:37 +02:00
Duco Sebel 82b9fead39 Add support for controlling LED brightness on HomeWizard Plug-In Battery and P1 Meter (#151186) 2025-09-11 23:46:00 +02:00
karwosts a879e36e9b Designate helpers as internal quality (#149021) 2025-09-11 23:41:06 +02:00
HarvsG b12c458188 Log bayesian sensor name for unavailable observations (#152039) 2025-09-11 22:14:51 +01:00
Simone Chemelli 4985f9a5a1 Fix reauth for Alexa Devices (#152128) 2025-09-11 22:26:47 +02:00
Maciej Bieniek ae70ca7cba Add sw_version to Shelly BLU TRV device info (#152129) 2025-09-11 21:50:03 +02:00
Norbert Rittel 66d1cf8af7 Add missing period in "H.264" standard name in onvif (#152132) 2025-09-11 22:12:02 +03:00
Roland Moers 27c0df3da8 Add CPU temperature sensor to AVM FRITZ!Box Tools (#151328) 2025-09-11 21:05:59 +02:00
Norbert Rittel 5413131885 Replace "cook time" with correct "cooking time" in matter (#152110) 2025-09-11 20:49:13 +03:00
Michael Hansen 0acd77e60a Only use media path for TTS stream override (#152084) 2025-09-11 19:46:36 +02:00
epenet c5d552dc4a Use translation_key in Tuya dr category (electric blanket) (#152099) 2025-09-11 19:45:21 +02:00
Jan Bouwhuis 4f045b45ac Fix supported _color_modes attribute not set for on/off MQTT JSON light (#152126) 2025-09-11 19:43:44 +02:00
markhannon 4ad29161bd Bump zcc-helper to 3.7 (#151807) 2025-09-11 19:42:24 +02:00
LG-ThinQ-Integration fea7f537a8 Bump thinqconnect to 1.0.8 (#152100)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-09-11 19:39:01 +02:00
epenet 442b6e9cca Add initial support for Tuya sjz category (electric desk) (#152036) 2025-09-11 19:35:24 +02:00
wollew 531b67101d fix rain sensor for Velux GPU windows (#151857) 2025-09-11 19:14:59 +02:00
J. Nick Koston 596a3fc879 Add async_current_scanners API to Bluetooth integration (#152122) 2025-09-11 13:06:51 -04:00
Joost Lekkerkerker 0e8295604e Fail hassfest if translation key is obsolete (#151924)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-11 18:56:56 +02:00
Manu 9cfdb99e76 Add repair to unsubscribe protected topic in ntfy integration (#152009) 2025-09-11 18:52:12 +02:00
Marc Mueller b1a6e403fb Cache apt install [ci] (#152113) 2025-09-11 18:44:43 +02:00
Samuel Xiao 937d3e4a96 Add more light models to SwitchBot Cloud (#150986) 2025-09-11 18:39:29 +02:00
Manu a368ad4ab5 Set sensors to unknown when no next alarm is set in Sleep as Android (#150558) 2025-09-11 18:38:33 +02:00
peteS-UK 254694b024 Fix track icons for Apps and Radios in Squeezebox (#151001) 2025-09-11 18:37:21 +02:00
Sam Reed bcfa7a7383 squeezebox: Improve update notification string (#151003) 2025-09-11 18:36:22 +02:00
Abílio Costa ab7081d26a Include non-primary entities targeted directly by label (#149309) 2025-09-11 17:34:15 +01:00
epenet 4762c64c25 Add initial support for Tuya msp category (cat toilet) (#152035) 2025-09-11 18:22:39 +02:00
Artur Pragacz 1b99ffe61b Pass satellite id through assist pipeline (#151992) 2025-09-11 11:13:23 -05:00
Imeon-Energy d5132e8ea9 Add select to Imeon inverter integration (#150889)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-11 17:55:55 +02:00
J. Nick Koston 1bcf3cfbb2 Fix DoorBird being updated with wrong IP addresses during discovery (#152088)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-11 10:58:59 -04:00
Norbert Rittel d4d912ef55 Add missing "to" in invalid_auth exception of portainer (#152116) 2025-09-11 16:40:39 +02:00
Martin Hjelmare 393826635b Add next_flow to config flow result (#151998) 2025-09-11 15:48:59 +02:00
Abílio Costa 9edd5c35e0 Fix duplicated IP port usage in Govee Light Local (#152087) 2025-09-11 14:47:59 +01:00
J. Nick Koston e8c1d3dc3c Add repair issue for Bluetooth adapter passive mode fallback (#152076) 2025-09-11 08:52:57 -04:00
Paulus Schoutsen 46463ea4f8 Rename Google Gen AI to Google Gemini (#151653) 2025-09-11 08:35:50 -04:00
Paulus Schoutsen 88e6b0c8d9 Make LocalSource reusable (#151886) 2025-09-11 08:35:10 -04:00
Maciej Bieniek 2ed92c720f Add entities for Shelly presence component (#151816) 2025-09-11 14:23:27 +02:00
Åke Strandberg 7389f23d9a Bump miele quality scale to platinum (#149736) 2025-09-11 13:18:55 +02:00
Retha Runolfsson a0cef80cf2 Add sensors for switchbot cloud integration (#147663) 2025-09-11 12:58:36 +02:00
Marc Hörsken 343b17788f Add support for valance shades / volants to WMS WebControl pro (#150882) 2025-09-11 12:57:53 +02:00
Erik Montnemery 50349e49f1 Register sonos entity services in async_setup (#152047) 2025-09-11 12:52:58 +02:00
Shay Levy 42d0415a86 Update Shelly Neo water valve device class and units (#152080) 2025-09-11 13:36:11 +03:00
G Johansson 1428b41a25 Improve sql config flow (#150757)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-11 12:27:48 +02:00
Foscam-wangzhengyu e65b4292b2 Add volume control to Foscam Upgrade dependencies (#150618)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-11 11:59:05 +02:00
Marc Mueller 2fc2bb97fc Update PyNaCl to 1.6.0 (#152107) 2025-09-11 10:30:33 +02:00
epenet 40da606177 Add support for Tuya swtz category (cooking thermometer) (#152022) 2025-09-11 10:28:20 +02:00
epenet d613b69e4e Fix typo in Tuya strings (#152103) 2025-09-11 10:27:25 +02:00
Erik Montnemery 3c5d09e114 Fix stale docstring in alarm_control_panel (#152026) 2025-09-11 10:26:34 +02:00
dependabot[bot] 9c54cc369b Bump github/codeql-action from 3.30.1 to 3.30.3 (#152098)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-11 09:11:22 +02:00
Paulus Schoutsen f91e4090f9 Add path to resolved media in image_upload (#152093) 2025-09-10 22:55:59 -04:00
Paulus Schoutsen 2cdf0b74d5 Gemini: Reuse attachment mime type if known (#152094) 2025-09-10 19:49:10 -07:00
J. Nick Koston 86750ae5c3 Fix HomeKit Controller stale values at startup (#152086)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-09-10 19:45:22 -05:00
J. Nick Koston c1eb492616 Fix Bluetooth mock to prevent degraded mode repair issues in tests (#152081) 2025-09-10 17:19:15 -05:00
karwosts ac154c020c Use a state selector for history_stats (#150445)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-10 23:52:50 +02:00
Manu 0e23eb9ebd Update Sleep as Android quality scale to platinum 🏆️ (#150449) 2025-09-10 23:37:12 +02:00
Tsvi Mostovicz 8367930f42 Jewish Calendar quality scale (#143763) 2025-09-10 23:25:16 +02:00
Joost Lekkerkerker d71b1246cf Add DHCP discovery to Aladdin Connect (#151532) 2025-09-10 22:57:46 +02:00
Ville Skyttä 4ad664a652 Add huawei_lte quality scale YAML (#143347)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-10 22:32:21 +02:00
Whitney Young 002493c3e1 Openuv protection window internal update (#146409) 2025-09-10 22:18:50 +02:00
Ludovic BOUÉ 720ecde568 Support for Matter MountedDimmableLoadControl device type (#151330)
Support for Matter MountedDimmableLoadControl device type:
Matter MountedDimmableLoadControl device was wrongly reco
gnized as Switch entity.
This PR fix thte behavior and makes it recognized as Light entity as expected.
There is no Matter MountedDimmableLoadControl device in the market yet so it doesn't really breaks anything.
2025-09-10 22:16:43 +02:00
Paul Bottein 4c548830b4 Use state selector for select option service (#148960) 2025-09-10 22:15:23 +02:00
Raphael Hehl 214925e10a Refactor unifiprotect RTSP repair flow to use publicapi create_rtsps_streams method (#149542) 2025-09-10 22:13:14 +02:00
Joost Lekkerkerker 885256299f Enable PYI059 and fix violations (#152069) 2025-09-10 21:52:21 +02:00
Joost Lekkerkerker e73c670025 Enable PYI061 and fix violations (#152070) 2025-09-10 21:17:59 +02:00
Joost Lekkerkerker e3c0cfd1e2 Enable RUF059 and fix violations (#152071) 2025-09-10 21:16:09 +02:00
Maciej Bieniek 46c38f185c Adapt AccuWeather to new paid API plans (#152056)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-10 21:15:48 +02:00
Abílio Costa 9082637133 Raise on service calls in Whirlpool (#152057)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-10 21:13:12 +02:00
Simone Chemelli 0a35fd0ea4 Add key reconfigure to UptimeRobot config flow (#151562) 2025-09-10 21:12:57 +02:00
Simone Chemelli c4649fc068 Avoid cleanup/recreate of device_trackers not linked to a device for Vodafone Station (#151904) 2025-09-10 21:09:44 +02:00
Erwin Douna b496637bdd Add Portainer integration (#142875)
Co-authored-by: Manu <4445816+tr4nt0r@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-10 21:01:41 +02:00
Retha Runolfsson 7d471f9624 Add rgbicww light for switchbot integration (#151129) 2025-09-10 13:52:47 -05:00
Joost Lekkerkerker 83f3b3e3eb Bump ruff to 0.13.0 (#152067) 2025-09-10 20:48:31 +02:00
J. Nick Koston 4592d6370a Bump PySwitchBot to 0.70.0 (#152072) 2025-09-10 13:39:52 -05:00
Abílio Costa ccef31a37a Set PARALLEL_UPDATES in Whirlpool integration (#152065) 2025-09-10 19:47:31 +02:00
Simone Chemelli 6a482b1a3e Remove stale devices for Alexa Devices (#151909) 2025-09-10 19:20:40 +02:00
Marc Mueller 6f00f8a920 Update feedreader to 6.0.12 (#152054) 2025-09-10 11:09:11 -05:00
Sarah Seidman ceeeb22040 Add integration for Droplet (#149989)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-10 17:38:49 +02:00
Simone Chemelli 2cda0817b2 Add illuminance sensor for Shelly Plug US Gen4 (#150681) 2025-09-10 17:31:56 +02:00
epenet 881a0bd1fa Add missing Tuya translation string (#152051) 2025-09-10 15:59:21 +02:00
epenet dba6f419c9 Remove unneeded Tuya translation key (#152052) 2025-09-10 15:59:03 +02:00
Abílio Costa fad8d4fca2 Remove uneeded check for fan mode in Whirlpool (#152053) 2025-09-10 15:47:05 +02:00
Ludovic BOUÉ 1663ad1adb Remove device class for Matter NitrogenDioxideSensor (#151782)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-10 15:34:32 +02:00
Marc Mueller 6a8152bc7f Update isal to 1.8.0 (#152043) 2025-09-10 08:25:19 -05:00
Felipe Santos e5edccd56f Fix Supervisor Ingress WebSocket not handling Connection and Timeout Error (#151951)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-10 13:59:42 +02:00
Erik Montnemery 480527eb68 Call DeviceRegistry._async_update_device from device registry (#151295) 2025-09-10 13:14:03 +02:00
Maciej Bieniek 1475108f1c Bump accuweather to version 4.2.1 (#152029) 2025-09-10 12:25:20 +02:00
Erik Montnemery a1e68336fc Add service helper for registering platform services (#151965)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-09-10 11:21:31 +01:00
Erik Montnemery 07392e3ff7 Fix lifx tests opening sockets (#152037) 2025-09-10 12:18:58 +02:00
Erik Montnemery 3e39f77e92 Remove duplicated call to time.time in device registry (#152024) 2025-09-10 11:15:59 +02:00
anishsane a12617645b Add support for Tasmota camera (#144067)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-10 08:13:48 +02:00
Manu 723476457e Add subentry reconfigure flow to ntfy integration (#143718) 2025-09-10 07:57:55 +02:00
Megamind 7053727426 Feature - add Time-to-Live (ttl) parameter support to Pushover integration (#143791) 2025-09-10 07:56:36 +02:00
Denis Shulyaka 0f4ce58f28 Raise repair issue when organization verification is required by OpenAI (#151878)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-09 23:35:29 -04:00
J. Nick Koston 2c72cd3832 Add repair issue for Bluetooth adapters in degraded mode due to missing container permissions (#151947)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-09 23:34:19 -04:00
Michael Hansen e8d5615e54 Allow overriding TTS result stream with media id (#151718) 2025-09-09 23:30:00 -04:00
Nathan Spencer 7a332d489d Bump pylitterbot to 2024.2.4 (#152015) 2025-09-09 22:28:54 -05:00
J. Nick Koston 504421e257 Fix ESPHome lock showing as unlocked when state is unknown (#152012) 2025-09-09 21:52:48 -04:00
Joost Lekkerkerker a0ace3b082 Bump yt-dlp to 2025.09.05 (#152006) 2025-09-09 18:28:49 -05:00
J. Nick Koston aea055b444 Bump aioesphomeapi to 40.1.0 (#152005) 2025-09-09 16:07:53 -05:00
Keith Burzinski 5b107349a1 Patch ESPHome client to handle climate UI correctly (#151897)
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-09 15:55:38 -05:00
RogerSelwyn 46fa98e0b2 Fix Private Groups in Hue integration cause delay in startup (#151896) 2025-09-09 22:30:36 +02:00
peteS-UK 96e66009e5 Fix playlist media_class_filter in search_media for squeezebox (#151973) 2025-09-09 22:22:28 +02:00
GSzabados ad14a66187 WH46 missing PM1.0 and PM4.0 sensors (#151821)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-09 22:17:13 +02:00
Manu 777ac97acb Add state attribute translations to ntfy integration (#152004) 2025-09-09 22:12:50 +02:00
Paulus Schoutsen af07ab4752 Allow passing an LLM API to AI Task generate data (#151081) 2025-09-09 15:12:20 -04:00
Simone Chemelli 74b731528d Improve config entry migration for edge cases in Alexa Devices (#151788) 2025-09-09 21:08:04 +02:00
Erik Montnemery c361c32407 Bump hatasmota to 0.10.1 (#151988)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-09 20:55:01 +03:00
Álvaro Fernández Rojas 75c1eddaf9 Update aioairzone to v1.0.1 (#151990)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2025-09-09 20:43:50 +03:00
Manu 715aba3aca Bump aiontfy to v0.5.5 (#151869) 2025-09-09 20:42:49 +03:00
Paulus Schoutsen 285619e913 Allow storing AI Task generate image preferred entity (#151938) 2025-09-09 18:29:14 +01:00
Manu eaf400f3b7 Add ntfy.publish action to ntfy integration (#143560)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-09-09 19:08:49 +02:00
J. Nick Koston 3d79a73110 Bump habluetooth to 5.6.2 (#151985) 2025-09-09 11:38:45 -05:00
Manu 6271765eaf Add event platform to ntfy integration (#143529) 2025-09-09 17:53:19 +02:00
skbeh 9e73ff06d2 Prevent socket leak on SSDP when finding available port (#150999)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-09 16:50:52 +01:00
tronikos 36edfd8c04 Mark Android TV Remote as platinum (#148047) 2025-09-09 17:33:09 +02:00
tronikos a750cfcac6 Make "Add new" translatable in Android TV Remote options (#151749) 2025-09-09 17:32:32 +02:00
Joost Lekkerkerker 026f20932a Remove manually adding domain in android TV remote (#151983) 2025-09-09 08:12:18 -07:00
GSzabados 07d4e11c30 Add VPD - Vapour Pressure Deficit support to Ecowitt (#141727)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-09 17:08:23 +02:00
epenet 9c80d75588 Add charge_state to Tuya siren alarm (#151220) 2025-09-09 17:02:31 +02:00
epenet 1818a103b6 Use motor rotation mode in Tuya clkg covers (curtain) (#151767) 2025-09-09 17:02:04 +02:00
epenet 3e4bb4eb7e Add PM10 to Tuya air quality monitor (co2bj category) (#151980) 2025-09-09 16:54:47 +02:00
Bob Igo 1117b92dde Fix XMPP not working with non-TLS servers (#150957) 2025-09-09 15:18:48 +02:00
Stefan Agner f5a1523068 Update Home Assistant base image to 2025.09.1 (#151960) 2025-09-09 08:17:30 -05:00
peteS-UK 7005a70a4e Fix for squeezebox track content_type (#151963) 2025-09-09 15:16:19 +02:00
Joost Lekkerkerker 9b862a8e4e Set otbr config entry title to ZBT-1 with a SkyConnect (#151911) 2025-09-09 15:03:17 +02:00
epenet f5dba77636 Fix invalid logger in Tuya (#151957) 2025-09-09 14:44:31 +02:00
Joost Lekkerkerker da7f9f6154 Remove obsolete Ecobee strings (#151970) 2025-09-09 15:37:48 +03:00
Joost Lekkerkerker 9a92d58613 Remove obsolete LCN strings (#151969) 2025-09-09 15:36:47 +03:00
epenet 9ea438024d Add Tuya test fixtures (#151972) 2025-09-09 14:28:25 +02:00
Joost Lekkerkerker 58edc3742a Remove obsolete alexa devices strings (#151971) 2025-09-09 13:47:30 +02:00
epenet 3c0580880d Add Tuya test fixtures (#151953) 2025-09-09 13:44:32 +02:00
J. Nick Koston 04b5eb7d53 Bump habluetooth to 5.6.0 (#151942) 2025-09-08 16:45:11 -05:00
Shay Levy cecae10a15 Bump aioshelly to 13.9.0 (#151943) 2025-09-09 00:23:26 +03:00
HarvsG 2e2b9483df Improve efficiency of config_entries _async_abort_entries_match() (#148344)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick+github@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@home-assistant.io>
2025-09-08 15:17:29 -05:00
Paulus Schoutsen 0444467858 Gemini: add support for AI Task generate image (#151880) 2025-09-08 16:11:06 -04:00
michnovka d990c2bee2 Fix timestamps exposed to LLM to be in local timezone (#139825)
Co-authored-by: Michael Hansen <mike@rhasspy.org>
2025-09-08 14:51:17 -05:00
Nathan Spencer 03a7052151 Add last feeding sensor for Feeder-Robots (#151871) 2025-09-08 21:40:18 +02:00
Manu 4025e23c67 Remove unused translation string in Bring! integration (#151927) 2025-09-08 21:37:47 +02:00
Abílio Costa 82c3fcccc9 Update whirlpool-sixth-sense to 0.21.3 (#151929)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-08 21:37:18 +02:00
J. Nick Koston 7ee7a3c0b5 Bump bleak-esphome to 3.3.0 (#151922)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-08 14:32:31 -05:00
Abílio Costa e7cb0173b0 Increase timeout of install os dependencies step (#151931) 2025-09-08 13:41:38 -05:00
J. Nick Koston dbdbf1cf16 Bump habluetooth to 5.5.1 (#151921) 2025-09-08 13:37:50 -05:00
Markus Adrario b5704f3e8b Bump pyHomee to 1.3.8 (#151874) 2025-09-08 18:53:13 +01:00
Artur Pragacz df3d4b5db1 Clean up unused intent category (#151917) 2025-09-08 19:42:23 +02:00
Jan Bouwhuis 0ab232b904 Fix typo in MQTT strings (#151907) 2025-09-08 18:43:15 +02:00
Joost Lekkerkerker acc75e4419 Remove image filename parameter from Google Generative AI (#151914) 2025-09-08 09:01:41 -07:00
Norbert Rittel 8aa672882a Replace "STT" with "Speech-to-Text" in google_cloud UI (#151918) 2025-09-08 08:59:18 -07:00
Artur Pragacz 3cbf3bdf4c Remove Kodi media player platform yaml support (#151786) 2025-09-08 17:16:23 +02:00
epenet 56c865dcfe Fix _is_valid_suggested_unit in sensor platform (#151912) 2025-09-08 16:35:33 +02:00
karwosts b7360dfad8 Allow deleting kitchen_sink devices (#151826) 2025-09-08 15:01:08 +01:00
dependabot[bot] f2204e97ab Bump github/codeql-action from 3.30.0 to 3.30.1 (#151890)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-08 14:49:05 +02:00
Artur Pragacz 98df5f5f0c Validate selectors in the condition helper (#151884) 2025-09-08 14:20:11 +02:00
Simone Chemelli 064d43480d Bump aiovodafone to 1.2.1 (#151901) 2025-09-08 12:58:26 +02:00
Jan Bouwhuis 1536375e82 Fix update of the entity ID does not clean up an old restored state (#151696)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-08 12:48:23 +02:00
Avi Miller 39e9ffff29 Bump aiolifx-themes to 1.0.2 to support newer LIFX devices (#151898)
Signed-off-by: Avi Miller <me@dje.li>
2025-09-08 13:45:42 +03:00
puddly 12f152d6e4 Home Assistant Connect ZBT-2 integration (#151015)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-09-08 11:18:31 +02:00
Jan Bouwhuis c7f0560208 Deprecate object_id and instead suggest to use default_entity_id to set the suggested entity_id in MQTT entity configurations (#151775) 2025-09-08 09:22:12 +02:00
Denis Shulyaka 65603a3829 Add signature to ai_task generated images URL (#151882) 2025-09-07 16:58:51 -04:00
Robert Resch 38ea5c6813 Bump aioecowitt to 2025.9.1 (#151859) 2025-09-07 19:52:05 +02:00
Norbert Rittel 5b1fd8f58b Fix sentence-casing in volvooncall (#151863) 2025-09-07 19:51:16 +02:00
Maciej Bieniek e5f99a617f Mark Tractive switches as unavailable when tacker is in the enegy saving zone (#151817) 2025-09-07 13:34:31 +02:00
Martins Sipenko 7f8b5f2288 Update pysmarty2 to 0.10.3 (#151855) 2025-09-07 09:36:45 +02:00
J. Nick Koston 75f69cd5b6 Bump aioharmony to 0.5.3 (#151853) 2025-09-06 23:55:27 -04:00
Paulus Schoutsen d7fab27351 Remove myself as code owner of integrations (#151851) 2025-09-06 20:42:25 -05:00
David Knowles 6c6ec7534f Bump pydrawise to 2025.9.0 (#151842) 2025-09-06 23:07:56 +03:00
Norbert Rittel 8e3780264a Capitalize "AC" in nut (#151831) 2025-09-06 20:25:42 +02:00
jan iversen 78b009dd8f Allow delay > 1 in modbus. (#151832) 2025-09-06 21:21:12 +03:00
jan iversen 76d72ad280 max_temp / min_temp in modbus light could only be int, otherwise an assert was provoked. (#151833) 2025-09-06 21:20:49 +03:00
jan iversen e5be9426a4 removed assert fron entity in modbus. (#151834) 2025-09-06 21:20:21 +03:00
Norbert Rittel 0922f12ec0 Use "credentials" only for username and password in overkiz (#151837) 2025-09-06 21:19:52 +03:00
Norbert Rittel 89f424e1d3 Fix sentence-casing of "Application credentials" in common strings (#151828) 2025-09-06 19:21:33 +02:00
Norbert Rittel 143eb20d99 Fix sentence-casing of two tesla_fleet user-facing strings (#151829) 2025-09-06 17:56:54 +02:00
Artur Pragacz 3187506eb9 Ignore incorrect themes (#151794) 2025-09-06 13:49:03 +02:00
Matthias Alphart a328b23437 Fix KNX BinarySensor config_store data (#151808) 2025-09-06 13:02:35 +02:00
Norbert Rittel 7e6a949559 Fix exceptions of climate.set_temperature action to use friendly names (#151811) 2025-09-06 14:00:15 +03:00
J. Nick Koston da7db5e22b Bump habluetooth to 5.3.1 (#151803) 2025-09-06 13:57:44 +03:00
Jan-Philipp Benecke ec58943c8c Bump zeroconf to 0.147.2 (#151809) 2025-09-06 13:56:52 +03:00
Norbert Rittel 61a05490e9 Fix missing sentence-casing of "temperature" in bsblan (#151810) 2025-09-06 13:55:13 +03:00
Joakim Plate 6a1629d2ed Update philips_js to 3.2.4 (#151796) 2025-09-06 08:16:06 +02:00
Paulus Schoutsen 106e1ce224 Gen translations in script/bootstrap (#151806) 2025-09-06 07:22:47 +02:00
Abílio Costa 601d63e3b7 Add top-level target support to condition schema (#149634)
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
2025-09-05 22:55:28 +01:00
Jan Bouwhuis 6a5f5b9adc Mock discovery in lifx sensor tests to avoid socket access in tests (#151787) 2025-09-05 21:46:07 +02:00
karwosts 8ecf5a98a5 Catch more invalid themes in validation (#151719) 2025-09-05 20:09:33 +02:00
Tsvi Mostovicz 1728c577f7 Revert "Jewish Calendar add coordinator " (#151780) 2025-09-05 17:47:29 +02:00
wollew 1006d5e0ba Use position percentage for closed status in Velux (#151679)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-05 16:45:29 +01:00
Artur Pragacz 6c29d5dc49 Add entity info to device database analytics (#151670) 2025-09-05 16:12:35 +02:00
Carlos Morán a4e086f0d9 Add manual mode to the map of Overkiz to HVAC modes (#151438) 2025-09-05 15:43:54 +02:00
Marko Todorić 0fecf012e6 SFTP/SSH as remote Backup location (#135844)
Co-authored-by: Josef Zweck <josef@zweck.dev>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-05 15:43:26 +02:00
blotus 63c8bfaa9b Fix support for Ecowitt soil moisture sensors (#151685) 2025-09-05 14:40:14 +02:00
Mark Adkins 435926fd41 Update SharkIQ authentication method (#151046) 2025-09-05 13:14:28 +02:00
Franck Nijhof 0cda883b56 2025.9.1 (#151766) 2025-09-05 13:13:34 +02:00
Ludovic BOUÉ c621f0c139 Matter RVC ServiceArea EstimatedEndTime attribute (#151384) 2025-09-05 12:49:32 +02:00
Artur Pragacz fa9007777d Add myself as codeowner to Voice components (#151764) 2025-09-05 12:45:17 +02:00
Franck Nijhof ae58e633f0 Bump version to 2025.9.1 2025-09-05 10:33:36 +00:00
jan iversen 06480bfd9d Fix enable/disable entity in modbus (#151626) 2025-09-05 10:33:04 +00:00
jan iversen e1afadb28c Fix enable/disable entity in modbus (#151626) 2025-09-05 12:31:33 +02:00
Artur Pragacz 625f586945 Fix recognition of entity names in default agent with interpunction (#151759) 2025-09-05 10:30:27 +00:00
Richard Kroegel 7dbeaa475d Bump bimmer_connected to 0.17.3 (#151756) 2025-09-05 10:30:24 +00:00
David Knowles dff3d5f8af Bump pyschlage to 2025.9.0 (#151731) 2025-09-05 10:30:21 +00:00
Michael Hansen 89c335919a Handle match failures in intent HTTP API (#151726) 2025-09-05 10:30:16 +00:00
Daniel Hjelseth Høyer 2bb4573357 Update Mill library 0.13.1 (#151712) 2025-09-05 10:30:01 +00:00
Dan Raper 7037ce989c Bump ohmepy version to 1.5.2 (#151707) 2025-09-05 10:29:58 +00:00
Dan Raper bfdd2053ba Require OhmeAdvancedSettingsCoordinator to run regardless of entities (#151701) 2025-09-05 10:29:55 +00:00
Bram Kragten fcc3f92f8c Update frontend to 20250903.3 (#151694) 2025-09-05 10:29:51 +00:00
Marcel van der Veldt 8710267d53 Bump aiohue to 4.7.5 (#151684) 2025-09-05 10:29:48 +00:00
Imeon-Energy 85b6adcc9a Fix, entities stay unavailable after timeout error, Imeon inverter integration (#151671)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-05 10:29:46 +00:00
Felipe Santos beec6e86e0 Fix WebSocket proxy for add-ons not forwarding ping/pong frame data (#151654) 2025-09-05 10:29:45 +00:00
Pete Sage 3dacffaaf9 Fix Sonos Dialog Select type conversion (#151649) 2025-09-05 10:29:41 +00:00
Manu d90f2a1de1 Correct capitalization of "FRITZ!Box" in FRITZ!Box Tools integration (#151637) 2025-09-05 10:29:39 +00:00
karwosts b6c9217429 Add missing device trigger duration localizations (#151578)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-05 10:29:37 +00:00
Marcel van der Veldt 7fc8da6769 Add support for migrated Hue bridge (#151411)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-05 10:29:34 +00:00
tronikos 34c45eae56 Translate exceptions in Android TV Remote media player (#151744) 2025-09-05 12:29:06 +02:00
tronikos 71b8da6497 Limit the scope of try except blocks in Android TV Remote (#151746) 2025-09-05 12:28:46 +02:00
tronikos caa0e357ee Improve Android TV Remote tests by testing we can recover from errors (#151752) 2025-09-05 12:26:31 +02:00
Imeon-Energy 0721ac6c73 Fix, entities stay unavailable after timeout error, Imeon inverter integration (#151671)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-05 12:11:44 +02:00
Marcel van der Veldt 783c742e09 Add support for migrated Hue bridge (#151411)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-05 12:09:37 +02:00
tronikos d2324086af Remove unused class variables in Android TV Remote entity (#151743) 2025-09-05 12:04:14 +02:00
Marc Mueller 2ffd5f4c97 Update types packages (#151760) 2025-09-05 11:54:14 +02:00
Norbert Rittel aa4a110923 Improve action descriptions in homematic (#151751) 2025-09-05 11:46:28 +02:00
Artur Pragacz 0a3032e766 Fix recognition of entity names in default agent with interpunction (#151759) 2025-09-05 11:42:56 +02:00
Richard Kroegel c4db422355 Bump bimmer_connected to 0.17.3 (#151756) 2025-09-05 11:37:51 +02:00
Michael Hansen f4e0b9ba15 Handle match failures in intent HTTP API (#151726) 2025-09-05 10:28:37 +02:00
dependabot[bot] f3b997720d Bump actions/github-script from 7 to 8 (#151747)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 10:18:31 +02:00
dependabot[bot] f5d3a89f90 Bump codecov/codecov-action from 5.5.0 to 5.5.1 (#151748)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-05 10:17:12 +02:00
Norbert Rittel b90296d853 Remove trailing periods from title strings in sia (#151754) 2025-09-05 10:07:37 +02:00
tronikos c6d6349908 Remove extra whitespace in Android TV Remote strings (#151741) 2025-09-05 09:25:00 +02:00
J. Nick Koston 2be6f17505 Bump aioesphomeapi to 40.0.1 (#151737) 2025-09-05 09:24:28 +02:00
epenet 4c953f36c8 Bump tuya-device-sharing-sdk to 0.2.4 (#151742) 2025-09-05 09:21:34 +02:00
Dan Raper ec2fa202e9 Require OhmeAdvancedSettingsCoordinator to run regardless of entities (#151701) 2025-09-05 07:37:40 +02:00
G Johansson 1a970e6c88 Make sensor startup code more dry in System monitor (#151164) 2025-09-05 07:36:37 +02:00
Dan Raper b9db828df3 Bump ohmepy version to 1.5.2 (#151707) 2025-09-05 04:23:57 +02:00
Daniel Hjelseth Høyer 50c0f41e8f Update Mill library 0.13.1 (#151712) 2025-09-05 04:23:08 +02:00
David Knowles 8cc66ee96c Bump pyschlage to 2025.9.0 (#151731) 2025-09-05 04:21:09 +02:00
Louis Christ 71981975a4 Update pyblu to 2.0.5 and fix code (#151728) 2025-09-04 23:34:59 +01:00
Manu b875af9667 Bump pyotp to v2.9.0 (#151721) 2025-09-05 00:09:23 +02:00
Manu 89cd55c878 Bump habiticalib to v0.4.5 (#151720) 2025-09-04 22:58:28 +01:00
Daniel Hjelseth Høyer b25708cec2 Update Tibber library 0.31.7 (#151711)
Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
2025-09-05 00:21:26 +03:00
Franck Nijhof bb9c65bc4b Update debugpy to v1.8.16 (#151716) 2025-09-05 00:17:58 +03:00
Franck Nijhof 447c7b64a9 Update cryptography to 45.0.7 (#151715) 2025-09-04 23:40:08 +03:00
Marc Mueller b111a33b8c Update ciso8601 to 2.3.3 (#151704) 2025-09-04 13:54:49 -05:00
Marc Mueller 4fcd02bc5d Update requests to 2.32.5 (#151705) 2025-09-04 20:53:16 +02:00
Marc Mueller 80d26b8d2e Update pytest to 8.4.2 (#151706) 2025-09-04 20:52:48 +02:00
flonou a475ecb342 Shelly cover position update when moving (#139008)
Co-authored-by: Shay Levy <levyshay1@gmail.com>
2025-09-04 20:22:07 +03:00
Simone Chemelli 42aec9cd91 Remove attributes from all Shelly entities (#140386) 2025-09-04 20:21:32 +03:00
karwosts 5409181b79 Add missing device trigger duration localizations (#151578)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-04 17:25:25 +02:00
Marc Mueller c1945211fa [ci] Add timeout to install os dependencies step (#151682) 2025-09-04 17:20:17 +02:00
Abílio Costa 29537dc87d Add tests for hassfest conditions module (#151646)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-04 17:18:51 +02:00
Bram Kragten 72e1a8f912 Update frontend to 20250903.3 (#151694) 2025-09-04 17:04:49 +02:00
epenet b742e4898c Ensure Tuya fixtures are correctly referenced (#151691) 2025-09-04 16:53:48 +02:00
Marcel van der Veldt e5565c75f6 Bump aiohue to 4.7.5 (#151684) 2025-09-04 14:44:10 +02:00
epenet a7ca618327 Check badly formatted dhcp addresses in tests (#147814) 2025-09-04 13:43:51 +01:00
epenet 6cbb881647 Drop Tuya compatibility code for mqtt (#151666) 2025-09-04 12:10:58 +02:00
Kevin McCormack eae1fe4a56 Add strict typing, shared constants, and fix OPNsense name casing (#151599) 2025-09-04 11:20:16 +02:00
epenet 8d945d89de Bump tuya-device-sharing-sdk to 0.2.3 (#151659) 2025-09-04 10:37:25 +02:00
dependabot[bot] 86e7f3713f Bump actions/stale from 9.1.0 to 10.0.0 (#151660)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 10:11:50 +02:00
Pete Sage 3bc772a196 Fix Sonos Dialog Select type conversion (#151649) 2025-09-04 09:33:43 +02:00
Felipe Santos c2290d6edb Fix WebSocket proxy for add-ons not forwarding ping/pong frame data (#151654) 2025-09-04 09:30:23 +02:00
dependabot[bot] 2a458dcec9 Bump actions/setup-python from 5.6.0 to 6.0.0 (#151662)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 09:22:28 +02:00
dependabot[bot] ab5ef3674f Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (#151661)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-04 09:22:22 +02:00
Norbert Rittel f28251bc76 Small fixes of user-facing strings in fritz (#151663) 2025-09-04 09:20:15 +02:00
Mike Kelly 1cca65b5c5 Add MCF (1000 Cubic Feet) as an alternate unit of measure for volume (#150015) 2025-09-04 09:29:37 +03:00
karwosts ed134e22f9 Allow defining the start weekday for statistic_during_period (#149033) 2025-09-04 09:27:12 +03:00
Paulus Schoutsen 300c582ea0 Devcontainer fixes for Debian 13 (#151655) 2025-09-04 06:23:45 +02:00
Franck Nijhof 52f7e20b5c Merge branch 'master' into dev 2025-09-03 21:32:40 +00:00
epenet 813098cb1a Use correctly formatted MAC in esphome tests (#151622) 2025-09-03 15:07:03 -05:00
Manu 000df08bca Correct capitalization of "FRITZ!Box" in FRITZ!Box Tools integration (#151637) 2025-09-03 21:23:48 +02:00
J. Nick Koston 9b80cf7d94 Prevent multiple Home Assistant instances from running with the same config directory (#151631) 2025-09-03 13:13:02 -05:00
Franck Nijhof 220c233c0b 2025.9.0 (#151263) 2025-09-03 19:49:19 +02:00
Franck Nijhof cdf7d8df16 Bump version to 2025.9.0 2025-09-03 17:12:06 +00:00
karwosts 3385151c26 Test for async_show_menu sort (#151630) 2025-09-03 18:46:57 +02:00
Franck Nijhof 5db4057781 Bump version to 2025.9.0b6 2025-09-03 16:17:57 +00:00
Bram Kragten 5d9277e4ab Update frontend to 20250903.2 (#151629) 2025-09-03 16:16:36 +00:00
Michael Hansen 67d3a9623d Bump intents (#151627) 2025-09-03 16:14:25 +00:00
Norbert Rittel 0ad44e423b Fix naming of "State of charge" sensor in growatt_server (#151619) 2025-09-03 16:12:59 +00:00
jan iversen cb7097cdf1 Simplify Modbus update methods (#151494) 2025-09-03 16:12:57 +00:00
mattreim 22b8ad9d0b Fix for deCONZ issue - Detected that integration 'deconz' calls device_registry.async_get_or_create referencing a non existing via_device - #134539 (#150355) 2025-09-03 16:12:56 +00:00
Michael Hansen 111fa78c57 Bump intents (#151627) 2025-09-03 18:11:37 +02:00
Erik Montnemery e67df73c4e Clarify behavior of ConfigEntry.async_on_state_change (#151628) 2025-09-03 17:21:28 +02:00
Bram Kragten b9f24bbb2a Update frontend to 20250903.2 (#151629) 2025-09-03 16:54:37 +02:00
karwosts 18ca9590f0 Sort template config menu step by user language (#151596) 2025-09-03 17:02:45 +03:00
Paulus Schoutsen eccadd4a11 script/bootstrap to update core deps (#151624) 2025-09-03 09:58:29 -04:00
BenJewell aeff62faea Correct critical notification variable name in Flo (#151523)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-03 14:15:13 +01:00
Norbert Rittel e5a44e5966 Fix naming of "State of charge" sensor in growatt_server (#151619) 2025-09-03 15:13:04 +02:00
mattreim 1369a98fa3 Fix for deCONZ issue - Detected that integration 'deconz' calls device_registry.async_get_or_create referencing a non existing via_device - #134539 (#150355) 2025-09-03 14:28:52 +02:00
jan iversen 0e1dd04083 Simplify Modbus update methods (#151494) 2025-09-03 14:23:36 +02:00
G Johansson df46816b2f Add reload support to schema options flow handler (#151260) 2025-09-03 12:55:21 +01:00
Jack 955ef3b5e7 Remove deprecated target position attributes from ZHA covers (#142534)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-03 13:43:29 +02:00
Franck Nijhof 26c9d283a4 Bump version to 2025.9.0b5 2025-09-03 11:38:27 +00:00
Bram Kragten 4dbccbc056 Update frontend to 20250903.1 (#151617) 2025-09-03 11:38:03 +00:00
Erik Montnemery 17466ce866 Bump device registry version to 1.12 (#151616) 2025-09-03 11:38:02 +00:00
Erik Montnemery 422862a699 Handle colliding aliases for floors (#151614) 2025-09-03 11:38:00 +00:00
Erik Montnemery 5be2e4e14b Handle colliding aliases for areas (#151613) 2025-09-03 11:37:59 +00:00
Bram Kragten 75ebbe60db Update frontend to 20250903.0 (#151612) 2025-09-03 11:37:58 +00:00
Robert Resch f0e18cc63d Bump aioecowitt to 2025.9.0 (#151608) 2025-09-03 11:37:57 +00:00
Krisjanis Lejejs c2b4e9b075 Bump hass-nabucasa from 1.0.0 to 1.1.0 (#151606) 2025-09-03 11:37:55 +00:00
jan iversen baa1c51bcf Fix racing bug in slave entities in Modbus (#151522) 2025-09-03 11:37:54 +00:00
Bram Kragten 5fc6fb9cf3 Update frontend to 20250903.1 (#151617) 2025-09-03 13:31:33 +02:00
Erik Montnemery 9ee9e1775d Bump device registry version to 1.12 (#151616) 2025-09-03 13:12:49 +02:00
jan iversen 712c9b9edc Fix racing bug in slave entities in Modbus (#151522) 2025-09-03 13:09:42 +02:00
Erik Montnemery d571857770 Handle colliding aliases for floors (#151614) 2025-09-03 12:43:03 +02:00
Bram Kragten de90922297 Update frontend to 20250903.0 (#151612) 2025-09-03 12:42:27 +02:00
Erik Montnemery e0b3a5337c Handle colliding aliases for areas (#151613) 2025-09-03 12:39:03 +02:00
Yevhenii Vaskivskyi 215603fae1 Bump asusrouter to 1.21.0 (#151607) 2025-09-03 12:16:00 +02:00
Krisjanis Lejejs 1a12c619e9 Bump hass-nabucasa from 1.0.0 to 1.1.0 (#151606) 2025-09-03 12:12:29 +02:00
yufeng 34c061df19 Add energy consumption/production for Tuya kg category (smart switches) (#149234) 2025-09-03 11:47:23 +02:00
yufeng c12b638b3d Adds initial support for tuya category xnyjcn (solar inverter) (#151549)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-09-03 11:39:54 +02:00
Robert Resch b9427deed2 Bump aioecowitt to 2025.9.0 (#151608) 2025-09-03 11:34:45 +02:00
yufeng d66016588b Add support for new energy sensor entities for DLQ (circuit breaker) devices in the Tuya integration (#151551)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-09-03 11:34:08 +02:00
Franck Nijhof a1d484fa73 Bump version to 2025.9.0b4 2025-09-03 09:24:19 +00:00
Paul Bottein 6013f50aa6 Update frontend to 20250902.1 (#151593) 2025-09-03 09:23:18 +00:00
Stefan Agner b4ab63d9db Update Home Assistant base image to 2025.09.0 (#151582) 2025-09-03 09:23:16 +00:00
Thomas D 7229781aeb Bump volvocarsapi to v0.4.2 (#151579) 2025-09-03 09:23:15 +00:00
Erik Montnemery 465512b0ea Improve migration to device registry version 1.10 (#151571) 2025-09-03 09:23:14 +00:00
Erik Montnemery 75d6c0bb53 Improve migration to entity registry version 1.18 (#151570) 2025-09-03 09:23:12 +00:00
Erik Montnemery 7500406e36 Revert "Improve migration to device registry version 1.11" (#151563) 2025-09-03 09:23:11 +00:00
Erik Montnemery 2afbca9751 Revert "Improve migration to entity registry version 1.18" (#151561) 2025-09-03 09:23:09 +00:00
Simone Chemelli 6023a8e6b0 Remove config entry from device instead of deleting in Uptime robot (#151557) 2025-09-03 09:23:08 +00:00
Erik Montnemery 869801b643 Exclude non mowers from husqvarna_automower_ble discovery (#151507) 2025-09-03 09:23:07 +00:00
Stefan Agner 229d0bdc77 Update Home Assistant base image to 2025.09.0 (#151582) 2025-09-03 11:12:18 +02:00
Erik Montnemery 078425918e Improve migration to device registry version 1.10 (#151571) 2025-09-03 10:22:29 +02:00
Erik Montnemery da2f154111 Improve migration to entity registry version 1.18 (#151570) 2025-09-03 10:08:59 +02:00
yufeng 270a9a5a98 Add support for new power sensor entities for ZNDB (smart energy meter) devices in the Tuya integration (#151554) 2025-09-03 09:22:20 +02:00
Lucas Mindêllo de Andrade 9f953c2e35 Tuya add missing sensors for Metering_3PN_ZB (dlq) device (#151601) 2025-09-03 09:13:24 +02:00
Artur Pragacz 8f16b09751 Accept None directly in the selector schemas (#151510)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-03 08:37:43 +02:00
dependabot[bot] 73ab041051 Bump github/codeql-action from 3.29.11 to 3.30.0 (#151600)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-03 08:10:07 +02:00
Paul Bottein 4bb76c6d94 Update frontend to 20250902.1 (#151593) 2025-09-02 22:55:03 -03:00
Brandon Rothweiler 7378d3607c Update py-aosmith to 1.0.14 (#151597) 2025-09-02 22:34:37 +01:00
Florian von Garrel 7d1e36af7f Raise paperless to platinum (#151588) 2025-09-02 22:27:56 +01:00
Petar Petrov 8b03a23ed8 Add option descriptions to Z-Wave reconfigure flow (#151558)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-09-02 22:06:07 +01:00
Michael Hansen a023dfc013 Add required features to vacuum intents (#151581) 2025-09-02 14:10:31 -05:00
J. Nick Koston fa0f707872 Add bluetooth websocket_api to subscribe to scanner state (#151452)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-02 15:17:27 -03:00
Joost Lekkerkerker a8f56e4b96 Fix Slide local tests (#151569)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-02 18:21:38 +02:00
Marc Mueller 61c904d225 Update pytest-rerunfailures to 16.0.1 (#151573) 2025-09-02 17:11:15 +01:00
Thomas D a8ff14ecb8 Bump volvocarsapi to v0.4.2 (#151579) 2025-09-02 17:09:21 +01:00
Michael Hansen 3909906823 Add required features for mowing intents (#151580) 2025-09-02 11:02:38 -05:00
Blear e0bf7749e6 Adjust Zhong_Hong climate set_fan_mode to lowercase (#151559) 2025-09-02 17:00:05 +02:00
Paul Bottein 72128e9708 Add start mowing and dock intents for lawn mower (#140525) 2025-09-02 09:49:24 -05:00
cdnninja 1b9acdc233 Convert Vesync to 3.X version of library (#148239)
Co-authored-by: SapuSeven <sapuseven@gmail.com>
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-02 15:31:38 +02:00
Maciej Bieniek 0f530485d1 Record current IQS for NextDNS (#146895)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-02 15:07:25 +02:00
Christopher Fenner 0928e9a6ee Add sensor for DHW storage temperature in ViCare integration (#151128) 2025-09-02 13:24:42 +02:00
Marc Mueller 75d792207a Add missing pychromecast imports (#151544) 2025-09-02 13:24:00 +02:00
yufeng ceda62f6ea Add support for new energy sensor entities for TDQ (socket/outlet) devices in the Tuya integration (#151553) 2025-09-02 13:10:36 +02:00
Avi Miller 12ab84a5d9 Expose the transition field to the UI config of effect_colorloop (#151124)
Signed-off-by: Avi Miller <me@dje.li>
2025-09-02 13:07:48 +02:00
Simone Chemelli 8e85faf997 Update SamsungTV quality scale (#151552) 2025-09-02 13:06:33 +02:00
Simone Chemelli b514a14c10 Remove config entry from device instead of deleting in Uptime robot (#151557) 2025-09-02 13:06:07 +02:00
Erik Montnemery 6b609b019e Exclude non mowers from husqvarna_automower_ble discovery (#151507) 2025-09-02 12:57:39 +02:00
Erik Montnemery 10baae92a0 Revert "Improve migration to device registry version 1.11" (#151563) 2025-09-02 11:58:27 +02:00
Erik Montnemery 8e1ee32190 Revert "Improve migration to entity registry version 1.18" (#151561) 2025-09-02 11:54:37 +02:00
Abílio Costa 814b98c2a3 Add tests for hassfest triggers module (#151318) 2025-09-02 10:45:55 +02:00
Franck Nijhof ed9e46bbca Bump version to 2025.9.0b3 2025-09-02 08:42:14 +00:00
Abílio Costa ac4eef0571 Add back missing controller cleanup to Govee Light Local (#151541) 2025-09-02 08:42:08 +00:00
Abílio Costa 1039936f39 Filter out IPv6 addresses in Govee Light Local (#151540) 2025-09-02 08:42:06 +00:00
Lukas 9910df2b21 Remove mac address from Pooldose device (#151536)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-09-02 08:42:05 +00:00
Bram Kragten e57019a80b Update frontend to 20250901.0 (#151529) 2025-09-02 08:42:03 +00:00
Imeon-Energy 1f6853db28 Fix typo in const.py for Imeon inverter integration (#151515)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-02 08:42:02 +00:00
Andrew Jackson dc4d6ddbef Bump aiomealie to 0.10.2 (#151514) 2025-09-02 08:42:00 +00:00
Antoni Czaplicki 399286deae Remove the vulcan integration (#151504) 2025-09-02 08:41:59 +00:00
Joost Lekkerkerker 1a2898cc89 Update Pooldose quality scale (#151499) 2025-09-02 08:41:57 +00:00
Iskra kranj d9629affca Bump pyiskra to 0.1.26 (#151489) 2025-09-02 08:41:56 +00:00
Willem-Jan van Rootselaar 9581c705b9 Fix add checks for None values and check if DHW is available (#151376) 2025-09-02 08:41:55 +00:00
Andrea Turri e2a4a9393e Miele refrigerators cause index out of range errors when offline (#151299) 2025-09-02 08:41:53 +00:00
Norbert Rittel f32d12c519 Fix wrong description for numeric_state observation in bayesian (#151291) 2025-09-02 08:41:52 +00:00
Artur Pragacz 18ce6da4e6 Allow ignored Onkyo devices to be set up from the user flow (#150921) 2025-09-02 08:41:51 +00:00
Jozef Kruszynski 031ae3a921 Fix sort order in media browser for music assistant integration (#150910) 2025-09-02 08:41:49 +00:00
Artur Pragacz bbe66f5cea Improve unpair schema in homekit (#150235) 2025-09-02 08:41:48 +00:00
Phil Male 9f4369dc8b Use average color for Hue light group state (#149499) 2025-09-02 08:41:46 +00:00
Abílio Costa 243569f6b8 Add back missing controller cleanup to Govee Light Local (#151541) 2025-09-02 10:37:43 +02:00
Abílio Costa 4b7817f1df Filter out IPv6 addresses in Govee Light Local (#151540) 2025-09-02 10:27:38 +02:00
Antoni Czaplicki 180f898bfa Remove the vulcan integration (#151504) 2025-09-02 01:10:07 +02:00
Mathis Dirksen-Thedens e9dcde1bb5 Allow overriding default recipient in Signal messenger (#145654)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-09-01 23:20:26 +01:00
Bram Kragten f44b6a3a39 Update frontend to 20250901.0 (#151529) 2025-09-01 23:37:49 +02:00
Lukas 9b6b8003ec Remove mac address from Pooldose device (#151536)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2025-09-01 23:19:24 +02:00
Jan-Philipp Benecke 2503157282 Deprecate LANnouncer integration (#151531) 2025-09-01 22:31:25 +02:00
Sab44 7b2b3e9e33 Add Libre Hardware Monitor integration (#140449) 2025-09-01 22:12:12 +02:00
Abílio Costa 2d5f228308 Use MockConfigEntry.start_reauth_flow in Roborock's tests (#151528) 2025-09-01 21:28:42 +02:00
Nolan Stover 19f36fc630 Bump zabbix-utils to 2.0.3 (#149450)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-01 20:07:11 +01:00
Andrea Turri 6b6553dae3 Miele time sensors 2/3 - Provide consistent behavior with appliance status (#146053)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-09-01 20:20:24 +02:00
Robert Resch 0865d3f749 Add support for stream orientation in go2rtc (#148832) 2025-09-01 19:06:01 +01:00
Ravaka Razafimanantsoa 095f73d84f Add Switchbot Cloud AC Off (#138648)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-01 19:52:43 +02:00
Andrea Turri 3b60961f02 Miele refrigerators cause index out of range errors when offline (#151299) 2025-09-01 19:28:08 +02:00
Yevhenii Vaskivskyi 0d9079ea72 Add model_id and serial_number to the device description (asuswrt) (#151516) 2025-09-01 18:08:53 +02:00
Andrew Jackson f17db80428 Bump aiomealie to 0.10.2 (#151514) 2025-09-01 18:07:36 +02:00
Imeon-Energy 2d4b2e822a Fix typo in const.py for Imeon inverter integration (#151515)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-01 17:54:16 +02:00
Yuxin Wang b08a72a53d Move APC UPS Daemon integration to platinum (#151335) 2025-09-01 17:26:31 +02:00
dontinelli 1e4fa40a77 Extend effect of invert_position to cover status for slide_local (#150418) 2025-09-01 17:25:59 +02:00
Jan Bouwhuis ac0ff96f26 Sort MQTT test cases for subentry config flow (#151426) 2025-09-01 17:23:27 +02:00
Jan Bouwhuis 2e50cee555 Sort globals and helpers in MQTT config flow (#151419) 2025-09-01 17:22:58 +02:00
Artur Pragacz 51c6c1b0d2 Allow ignored Onkyo devices to be set up from the user flow (#150921) 2025-09-01 17:04:06 +02:00
Artur Pragacz c4fce1c793 Improve unpair schema in homekit (#150235) 2025-09-01 09:57:24 -05:00
Willem-Jan van Rootselaar 581f8a9378 Fix add checks for None values and check if DHW is available (#151376) 2025-09-01 16:47:59 +02:00
Artur Pragacz d7e6f84d28 Fix empty selector validation (#151340) 2025-09-01 16:22:41 +02:00
Artur Pragacz 5e22533fc0 Code quality improvements of the selector helper (#151505) 2025-09-01 16:18:17 +02:00
Fabian Leutgeb ecae074dd7 Homekit valve duration properties (#150273)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-09-01 08:24:50 -05:00
Joost Lekkerkerker 55b0406960 Update Pooldose quality scale (#151499) 2025-09-01 15:15:21 +02:00
Phil Male 36483dd785 Use average color for Hue light group state (#149499) 2025-09-01 15:14:50 +02:00
Ludovic BOUÉ ad154dce40 Add Matter occupancy sensing hold time (#150745) 2025-09-01 15:14:08 +02:00
G Johansson 3abf91af3a Use OptionsFlowWithReload in google (#151257) 2025-09-01 15:13:19 +02:00
Jozef Kruszynski 579d217c6b Fix sort order in media browser for music assistant integration (#150910) 2025-09-01 14:27:48 +02:00
Joakim Plate 7322bee4dd Add select entity to ToGrill (#151114)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-09-01 14:24:43 +02:00
Joost Lekkerkerker 8a36ec88f4 Add AC fixture to smartthings (#150891)
Co-authored-by: Jan Bouwhuis <jbouwh@users.noreply.github.com>
2025-09-01 14:24:33 +02:00
Michel van de Wetering 864f908257 Remove Hue Bridge v1 image in config flow (#151112) 2025-09-01 14:14:43 +02:00
alexqzd 5d86d8b380 SmartThings: Expose the entity to control the AC display light (#151404)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-09-01 14:12:18 +02:00
Iskra kranj 15245707a5 Bump pyiskra to 0.1.26 (#151489) 2025-09-01 14:09:19 +02:00
Martin Hjelmare 80e4451a3f Freeze development of alert integration (#151486) 2025-09-01 13:50:22 +02:00
Yuxin Wang f051f4ea99 Add more test logic to APCUPSD (#151336) 2025-09-01 13:15:11 +02:00
starkillerOG 7717b5aca6 Add Reolink Home Hub siren (#151196) 2025-09-01 12:46:46 +02:00
Franck Nijhof 249dbf976f Bump version to 2025.9.0b2 2025-09-01 10:36:21 +00:00
Imeon-Energy 8d1a45bb8b Missing state for inverter state sensor in Imeon inverter (#151493)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-01 10:36:02 +00:00
Joost Lekkerkerker e3d08d5f26 Set Aladdin Connect integration type to hub (#151491) 2025-09-01 10:36:00 +00:00
Marc Mueller a67919fd7c Fix backup manager delete backup error filter (#151490) 2025-09-01 10:35:59 +00:00
Denis Shulyaka 5edb786aad Allow structure field of ai_task.generate_data for non-advanced users (#151481) 2025-09-01 10:35:57 +00:00
J. Nick Koston bfa3b53409 Bump bluetooth-adapters to 2.1.0 and habluetooth to 5.3.0 (#151465) 2025-09-01 10:35:56 +00:00
tronikos 0050626d8c Bump opower to 0.15.4 (#151443) 2025-09-01 10:35:54 +00:00
Brett Adams 74c91e46f2 Fix history startup failures (#151439) 2025-09-01 10:35:52 +00:00
J. Nick Koston d00bf4b014 Fix Yale Access Bluetooth key discovery timing issues (#151433)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 10:34:52 +00:00
Imeon-Energy 81d2bcdeb9 Missing state for inverter state sensor in Imeon inverter (#151493)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-09-01 12:34:27 +02:00
Marc Mueller 9934de18ae Remove unused code in bayesian binary_sensor (#151492) 2025-09-01 12:33:53 +02:00
Thomas55555 fbab53bd0c Bump aioautomower to 2.2.1 (#151427) 2025-09-01 10:29:59 +00:00
Maciej Bieniek 66442f1714 Allow integration to initialize when BraviaTV is offline (#151415) 2025-09-01 10:29:56 +00:00
Aaron Bach 281bf2f308 Bump aiopurpleair to 2025.08.1 (#151398) 2025-09-01 10:29:54 +00:00
Michael Hansen d9af4f1b3c Bump intents to 2025.8.29 (#151397) 2025-09-01 10:28:53 +00:00
Russell VanderMey b86c37f556 Avoid blocking IO in TRIGGERcmd (#151396) 2025-09-01 10:27:25 +00:00
karwosts 94081e011b Fix play media example data (#151394) 2025-09-01 10:27:23 +00:00
J. Nick Koston 5428c6fc23 Bump habluetooth to 5.2.1 (#151391) 2025-09-01 10:27:22 +00:00
Paul Bottein 737ee51b53 Update frontend to 20250829.0 (#151390) 2025-09-01 10:26:33 +00:00
J. Nick Koston 9d0e222671 Reduce log spam from unauthenticated websocket connections (#151388) 2025-09-01 10:25:29 +00:00
Arjan a972c1e0b0 Fix typo in Meteo France mappings (#151344) 2025-09-01 10:25:27 +00:00
Simone Chemelli aea39133d0 Change sounds list source for Alexa Devices (#151317) 2025-09-01 10:25:26 +00:00
jan iversen 12c9f6bea9 modbus: Do not modify registers (return wrong data). (#151131) 2025-09-01 10:25:25 +00:00
Yevhenii Vaskivskyi afdb004aa0 Fix bug with the wrong temperature scale on new router firmware (asuswrt) (#151011) 2025-09-01 10:25:23 +00:00
Marc Mueller aac015e822 Fix backup manager delete backup error filter (#151490) 2025-09-01 12:22:23 +02:00
Denis Shulyaka 1f584f011e Allow structure field of ai_task.generate_data for non-advanced users (#151481) 2025-09-01 07:06:09 -03:00
Joost Lekkerkerker 2106c4cfb9 Set Aladdin Connect integration type to hub (#151491) 2025-09-01 11:59:25 +02:00
jan iversen a053142601 modbus: Do not modify registers (return wrong data). (#151131) 2025-09-01 11:48:19 +02:00
starkillerOG dd0dce7968 Add Reolink encoding select entity (#151195) 2025-09-01 11:20:20 +02:00
Tom bdfff6df2d Bump airOS to 0.5.1 (#151458) 2025-09-01 10:40:09 +02:00
J. Nick Koston 671c4e1eab Reduce log spam from unauthenticated websocket connections (#151388) 2025-09-01 10:35:22 +02:00
ChristianKuehnel 8aae2a935a Replace string literal in lacrosse (#151484) 2025-09-01 10:32:05 +02:00
Yevhenii Vaskivskyi 9e64f18439 Fix bug with the wrong temperature scale on new router firmware (asuswrt) (#151011) 2025-09-01 10:30:41 +02:00
Paul Bottein e8a6f2f098 Update frontend to 20250829.0 (#151390) 2025-09-01 10:20:03 +02:00
Russell VanderMey 8faeb1fe98 Avoid blocking IO in TRIGGERcmd (#151396) 2025-09-01 10:19:35 +02:00
J. Nick Koston edc48e0604 Fix Yale Access Bluetooth key discovery timing issues (#151433)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 10:18:53 +02:00
Manu eab77f11b0 Rename brand Fritz!Box to FRITZ! (#151389) 2025-09-01 10:15:09 +02:00
Simone Chemelli edb79b0337 Change sounds list source for Alexa Devices (#151317) 2025-09-01 09:50:57 +02:00
Brett Adams 41f33a106f Fix history startup failures (#151439) 2025-09-01 09:48:49 +02:00
Arjan cf31401cc2 Fix typo in Meteo France mappings (#151344) 2025-09-01 09:46:21 +02:00
Niccolò Maggioni 8679c8e40c Expose MAC address in SNMP device_tracker entity attributes (#139941)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-01 09:40:50 +02:00
David Rapan e675d0e8ed Starlink's Energy, Download and Upload accumulation after restart fix (#137855)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-09-01 09:00:09 +02:00
J. Nick Koston c73289aed9 Bump bluetooth-adapters to 2.1.0 and habluetooth to 5.3.0 (#151465) 2025-08-31 17:13:03 -05:00
Marc Mueller 4420776977 Update anyio to 4.10.0 (#151455) 2025-08-31 21:14:37 +02:00
jan iversen b77d6e7b59 Modbus: Ignore unknown parameters. (#151451) 2025-08-31 16:48:12 +02:00
Thomas55555 8f074e5724 Bump aioautomower to 2.2.1 (#151427) 2025-08-31 15:16:19 +02:00
tronikos b1e46bcde4 Bump opower to 0.15.4 (#151443) 2025-08-31 12:14:14 +02:00
stephan-carstens fc4b5f66ff Extend UnitOfApparentPower with 'kVA' (#151420) 2025-08-31 00:05:07 +01:00
Maciej Bieniek 55978f2827 Allow integration to initialize when BraviaTV is offline (#151415) 2025-08-30 23:06:01 +03:00
Yuxin Wang 010a8cc693 Attach serial_number to devices in APC UPS Daemon (#151421) 2025-08-30 18:20:46 +02:00
Joakim Plate d31eadc8cd feat: bump fjaraskupan to 2.3.3 (#151408) 2025-08-30 10:35:30 +02:00
Manu 3190a523aa Remove device class from Habitica binary sensor quest status (#151338) 2025-08-30 09:40:36 +02:00
karwosts 8f82e451cd Fix play media example data (#151394) 2025-08-30 09:37:41 +02:00
Joakim Plate 5bbd71e594 Add icons to different temperatures for the ToGrill integration (#151392) 2025-08-30 07:11:33 +02:00
Aaron Bach 33257b8422 Bump aiopurpleair to 2025.08.1 (#151398) 2025-08-29 23:38:34 +02:00
Michael Hansen b3a4cd5b76 Bump intents to 2025.8.29 (#151397) 2025-08-29 16:17:42 -05:00
J. Nick Koston dcfa466dd4 Bump habluetooth to 5.2.1 (#151391) 2025-08-29 12:14:22 -05:00
Joakim Plate 846e6d96a4 Add minimum and maximum targets (#151387) 2025-08-29 17:42:28 +02:00
Erik Montnemery d72b35a0cd Improve comment on disabled_by + hidden_by flag in registries (#151290)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-08-29 17:27:39 +02:00
Franck Nijhof 3ea0e9ee88 Bump version to 2025.9.0b1 2025-08-29 15:17:32 +00:00
Erik Montnemery bec8cf3ea8 Fix restoring disabled_by flag of deleted devices (#151313) 2025-08-29 15:16:24 +00:00
J. Nick Koston e21c2fa08b Bump aioesphomeapi to 39.0.1 (#151385) 2025-08-29 15:12:34 +00:00
Marc Mueller 900b59d148 Pin pytest-rerunfailures to 15.1 (#151383) 2025-08-29 15:12:33 +00:00
J. Nick Koston 0a9203e241 Bump bleak-esphome to 3.2.0 (#151380) 2025-08-29 15:12:31 +00:00
J. Nick Koston c69c3e7d85 Bump nexia to 2.11.1 (#151379) 2025-08-29 15:12:30 +00:00
starkillerOG a938a33e98 Bump reolink-aio to 0.15.0 (#151367)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-08-29 15:12:29 +00:00
Tom 2d62c5f8d6 Bump airOS to 0.4.4 (#151345) 2025-08-29 15:12:27 +00:00
J. Nick Koston da4ec7b3dd Bump bleak-retry-connector to 4.4.3 (#151341) 2025-08-29 15:12:26 +00:00
J. Nick Koston 1ffc0560c5 Bump habluetooth to 5.2.0 (#151333) 2025-08-29 15:12:25 +00:00
Robert Resch 68ec41c43a Bump deebot-client to 13.7.0 (#151327) 2025-08-29 15:12:23 +00:00
Paul Bottein 24017a9555 Update frontend to 20250828.0 (#151321) 2025-08-29 15:12:22 +00:00
J. Nick Koston 6f17c1653c Bump nexia to 2.11.0 (#151319) 2025-08-29 15:12:21 +00:00
Erik Montnemery f49ce2a77a Improve migration to device registry version 1.11 (#151315)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-08-29 15:12:19 +00:00
Yevhenii Vaskivskyi 282ec58c4e Bump asusrouter to 1.20.1 (#151311) 2025-08-29 15:07:34 +00:00
Erik Montnemery 32cbd2a239 Improve migration to entity registry version 1.18 (#151308)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-08-29 15:07:33 +00:00
Martin Hjelmare 12b161e154 Fix Z-Wave duplicate notification binary sensors (#151304) 2025-08-29 15:07:32 +00:00
starkillerOG d0866704ba Fix Reolink duplicates due to wrong merge (#151298) 2025-08-29 15:07:30 +00:00
Simone Chemelli b23bf164f1 Add missing state class to Alexa Devices sensors (#151296) 2025-08-29 15:07:29 +00:00
Simone Chemelli 894fb6ee66 Fix exception countries migration for Alexa Devices (#151292) 2025-08-29 15:07:28 +00:00
Arjan d5e9d2b9dc Adding missing: Averses de grèle (#151288) 2025-08-29 15:07:27 +00:00
Felipe Santos 2de572ea11 Fix ONVIF not displaying sensor and binary_sensor entity names (#151285) 2025-08-29 15:07:25 +00:00
Jamie Magee def27ab705 Remove uv.lock (#151282) 2025-08-29 15:07:24 +00:00
Andrew Jackson ab7c5bf8d9 Fix endpoint deprecation warning in Mastodon (#151275) 2025-08-29 15:07:22 +00:00
G Johansson a57d77899a Fix spelling in bayesian strings (#151265) 2025-08-29 15:07:21 +00:00
Florent Thoumie e2ca439a3a Iaqualink: create parent device manually and link entities (#151215) 2025-08-29 15:07:20 +00:00
Manu 5d64dae3a0 Fix direct message notifiers in PlayStation Network (#150548) 2025-08-29 15:07:18 +00:00
Manu 821577dc21 Ignore errors when PlayStation Network group fetch is blocked by parental controls (#150364) 2025-08-29 15:07:17 +00:00
Ian Tewksbury 0eaf8c6946 Add multiple NICs in govee_light_local (#128123) 2025-08-29 15:07:15 +00:00
Foscam-wangzhengyu 5e003627b2 Update Foscam codeowners (#150972) 2025-08-29 16:59:46 +02:00
Manu a4f71f37f6 Use subentry title as display name in ntfy integration (#151370) 2025-08-29 16:56:37 +02:00
Manu c37b2f86b1 Change manufacturer name AVM to FRITZ! in FRITZ!Box Tools integration (#151371) 2025-08-29 16:54:53 +02:00
Manu 926aeef156 Change manufacturer name AVM to FRITZ! in FRITZ!Box Call Monitor integration (#151374) 2025-08-29 16:53:57 +02:00
Maciej Bieniek ee86671d39 Bump brother to version 5.1.0 (#151368)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-08-29 16:53:26 +02:00
Manu dc371cf46d Ignore errors when PlayStation Network group fetch is blocked by parental controls (#150364) 2025-08-29 16:53:13 +02:00
J. Nick Koston c76e26508d Bump aioesphomeapi to 39.0.1 (#151385) 2025-08-29 16:52:27 +02:00
J. Nick Koston a5cd316fa3 Bump bleak-esphome to 3.2.0 (#151380) 2025-08-29 16:51:56 +02:00
starkillerOG 736cc8a17d Bump reolink-aio to 0.15.0 (#151367)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-08-29 16:51:20 +02:00
J. Nick Koston 5278fce218 Bump nexia to 2.11.1 (#151379) 2025-08-29 16:49:57 +02:00
Erik Montnemery 8f04f22c65 Improve migration to device registry version 1.11 (#151315)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2025-08-29 16:48:29 +02:00
Manu a01f638fc6 Change manufacturer name AVM to FRITZ! in FRITZ!SmartHome integration (#151373) 2025-08-29 16:17:32 +02:00
Marc Mueller 22005dd48a Pin pytest-rerunfailures to 15.1 (#151383) 2025-08-29 16:03:32 +02:00
Thomas55555 fff60b3863 Use _async_setup in Huqvarna Automower (#151325) 2025-08-29 13:16:24 +02:00
Manu 5cb5fe5b67 Fix direct message notifiers in PlayStation Network (#150548) 2025-08-29 11:37:01 +02:00
J. Nick Koston 24ea5eb9b5 Bump habluetooth to 5.2.0 (#151333) 2025-08-29 11:23:50 +02:00
dependabot[bot] 673c2a77e0 Bump actions/attest-build-provenance from 2.4.0 to 3.0.0 (#151347)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-29 11:21:42 +02:00
Yevhenii Vaskivskyi ad3014e711 Bump asusrouter to 1.20.1 (#151311) 2025-08-29 11:21:18 +02:00
Tom c19ae81cbc Bump airOS to 0.4.4 (#151345) 2025-08-29 11:20:20 +02:00
J. Nick Koston 959d99f333 Bump bleak-retry-connector to 4.4.3 (#151341) 2025-08-29 11:19:44 +02:00
Manu 7cfe6bf427 Add sensors for boss rage to Habitica (#151334) 2025-08-29 00:01:23 +01:00
Manu 765e2c1b6c Bump habiticalib to v0.4.4 (#151332) 2025-08-29 00:04:37 +02:00
Paul Bottein 0fd63df123 Update frontend to 20250828.0 (#151321) 2025-08-28 22:27:46 +02:00
Robert Resch 862fbd551a Bump deebot-client to 13.7.0 (#151327) 2025-08-28 22:23:46 +02:00
J. Nick Koston 6e79b76d15 Bump nexia to 2.11.0 (#151319) 2025-08-28 21:48:41 +02:00
Martin Hjelmare f85307d86c Fix Z-Wave duplicate notification binary sensors (#151304) 2025-08-28 20:46:43 +02:00
Erik Montnemery b01f93119f Fix restoring disabled_by flag of deleted devices (#151313) 2025-08-28 20:10:10 +02:00
Erik Montnemery 4130f3db2f Improve migration to entity registry version 1.18 (#151308)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-08-28 18:52:51 +02:00
Yuxin Wang ffcd5167b5 Use fixtures instead of helper functions for APCUPSD tests (#151172)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2025-08-28 16:11:31 +02:00
Ludovic BOUÉ e94a7b2ec1 Add product_id support to Matter discovery schemas (#151307) 2025-08-28 15:57:40 +02:00
Ludovic BOUÉ 6b3f2e9b7b Aqara door window p2 fixture (#151294) 2025-08-28 15:04:23 +02:00
Roland Moers 56545dacb0 Bump fritzconnection to 1.15.0 (#151252) 2025-08-28 14:26:07 +02:00
Norbert Rittel cbf061183e Fix wrong description for numeric_state observation in bayesian (#151291) 2025-08-28 15:24:24 +03:00
Jamie Magee 5dcb5f4926 Remove uv.lock (#151282) 2025-08-28 12:33:30 +02:00
Andrew Jackson 5fbb99a79a Fix endpoint deprecation warning in Mastodon (#151275) 2025-08-28 11:59:37 +02:00
Felipe Santos da65c52f2d Fix ONVIF not displaying sensor and binary_sensor entity names (#151285) 2025-08-28 11:58:13 +02:00
Simone Chemelli 08a850cfc7 Fix exception countries migration for Alexa Devices (#151292) 2025-08-28 11:57:32 +02:00
Simone Chemelli 12978092f7 Add missing state class to Alexa Devices sensors (#151296) 2025-08-28 11:53:46 +02:00
starkillerOG 210a9ad2de Fix Reolink duplicates due to wrong merge (#151298) 2025-08-28 11:38:08 +02:00
Artur Pragacz 61328129fc Remove is_new from device entry (#149835)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-08-28 08:07:54 +02:00
Ian Tewksbury f4673f44ee Add multiple NICs in govee_light_local (#128123) 2025-08-28 08:04:50 +02:00
Arjan 3bdd532dcd Adding missing: Averses de grèle (#151288) 2025-08-28 07:50:48 +02:00
G Johansson e23d3c8ab4 Use OptionsFlowWithReload in google_cloud (#151259) 2025-08-27 22:19:44 -07:00
Florent Thoumie a7cb66c592 Iaqualink: create parent device manually and link entities (#151215) 2025-08-27 23:05:15 +01:00
Norbert Rittel 8544d1ebec Fix broken translation key for "update_percentage" in template (#151272) 2025-08-27 22:57:32 +01:00
G Johansson 240afd80c1 Fix spelling in bayesian strings (#151265) 2025-08-28 00:08:39 +03:00
Franck Nijhof ccb1da3a97 Bump version to 2025.10.0dev0 (#151262) 2025-08-27 21:53:39 +02:00
Denis Shulyaka de62991e5b OpenAI ai_task image generation support (#151238) 2025-08-27 14:43:27 -04:00
G Johansson bad75222ed Use OptionsFlowWithReload in yalexs_ble (#151256) 2025-08-27 13:14:31 -05:00
Franck Nijhof f955dec1ba Bump version to 2025.9.0b0 2025-08-27 18:06:45 +00:00
Jamie Magee 8fc334b338 Re-add aladdin_connect integration (#149029)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-08-27 19:06:53 +02:00
Martin Hjelmare abb59f2233 Use Z-Wave notification event enums in binary sensor (#151236) 2025-08-27 19:06:38 +02:00
dependabot[bot] f583dfe532 Bump actions/dependency-review-action from 4.7.2 to 4.7.3 (#151251)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-27 19:00:26 +02:00
Michael Hansen cd40b7eed6 Bump intents to 2025.8.27 (#151250) 2025-08-27 18:45:43 +02:00
Abílio Costa dad96598a3 Remove uneeded update listener from Idasen (#151243) 2025-08-27 18:22:34 +02:00
Norbert Rittel 669527b1e9 Capitalize "TV (show)" in media_player (#151249) 2025-08-27 17:11:26 +01:00
Petro31 090c74f18e Update object_id to default_entity_id and consolidate common schemas (#151235) 2025-08-27 18:06:03 +02:00
Simone Chemelli 4b9594b876 Bump aioamazondevices to 5.0.1 (#151246) 2025-08-27 18:05:01 +02:00
jvmahon cd5bfd6baf Add Matter lock event changed_by (#149861)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-08-27 17:48:55 +02:00
Matthias Alphart 2ef335f403 KNX: Support external scene activation recording (#151218) 2025-08-27 17:13:49 +02:00
Ludovic BOUÉ 22e70723f4 Matter SensitivityLevel for Aqara Door and Window Sensor P2 (#151117) 2025-08-27 17:05:30 +02:00
Thomas D aac572c457 Record scene activation for Qbus integration (#151232) 2025-08-27 17:02:12 +02:00
Simone Chemelli 8f9167abbe Followup async_migrate_entry fix for Alexa Devices (#151231) 2025-08-27 15:46:57 +02:00
Bram Kragten d0deb16c10 Update frontend to 20250827.0 (#151237) 2025-08-27 15:46:17 +02:00
dependabot[bot] ad37e00d1d Bump actions/ai-inference from 2.0.0 to 2.0.1 (#151147)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-27 14:04:01 +02:00
karwosts 4821c9ec29 Use media_selector for media_player.play_media (#150721) 2025-08-27 12:39:33 +02:00
Martin Hjelmare 81a5b4a684 Refactor zwave_js discovery schema foundation (#151146) 2025-08-27 12:01:34 +02:00
Denis Shulyaka 20e4d37cc6 Add ai_task.generate_image action (#151101) 2025-08-27 11:41:14 +02:00
Mike Degatano adfdeff84c Use unhealthy/unsupported reason enums from aiohasupervisor (#150919) 2025-08-27 11:27:38 +02:00
Jan Bouwhuis 0d29b2d5a7 Add MQTT alarm control panel subentry support (#150395)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-08-27 11:00:31 +02:00
Sören Beye e894a03c43 Person: Use the home zone lat/lon coordinates when detected home by a stationary tracker (#134075)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-08-27 10:57:25 +02:00
Petro31 43a1a679f9 Add object_id to modern template syntax (#150489)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-08-27 10:49:38 +02:00
Franck Nijhof 1759bfbfaf Merge branch 'master' into dev 2025-08-27 08:47:22 +00:00
epenet fc1c0d22b9 Add online status to Tuya debug log (#151222) 2025-08-27 10:45:00 +02:00
Erik Montnemery 3a48c9569c Fix stale comment in entity registry (#151226) 2025-08-27 10:43:59 +02:00
Erik Montnemery 85f3f180ab Fix stale comment in device registry (#151227) 2025-08-27 10:43:41 +02:00
Erik Montnemery bfd4f85225 Fix husqvarna_automower_ble activity mapping (#151228) 2025-08-27 10:37:32 +02:00
Erik Montnemery 2abb914867 Update husqvarna_automower_ble bluetooth discovery checks (#151225) 2025-08-27 10:36:42 +02:00
MosheL 8b10128c50 Fix CCM15 temperature set always changes the ac_mode to cool (#134719)
Co-authored-by: Franck Nijhof <git@frenck.dev>
Co-authored-by: Joostlek <joostlek@outlook.com>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-08-27 10:16:29 +02:00
wollew 10bf1cb999 Add DeviceInfo to Velux entities (#149575)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-27 10:15:52 +02:00
Alistair Francis 6e45713d3a Ask for PIN in Husqvarna Automower BLE integration (#135440)
Signed-off-by: Alistair Francis <alistair@alistair23.me>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Christopher Fenner <9592452+CFenner@users.noreply.github.com>
2025-08-27 09:49:05 +02:00
Yuxin Wang 50a2eba66e Add platform patching in init_integration fixture in copilot-instructions.md (#151173) 2025-08-27 08:14:42 +02:00
Thomas55555 0bb16befbd Make event entity dependend on websocket in Husqvarna Automower (#151203) 2025-08-27 07:47:14 +02:00
Thomas55555 d72cc45ca8 Bump aioautomower to 2.2.0 (#151207) 2025-08-27 07:46:21 +02:00
J. Nick Koston d4bc066cc4 Bump bleak-retry-connector to 4.4.1 (#151217) 2025-08-27 07:46:02 +02:00
Jonathan Jogenfors c2c561bc21 Don't use custom bypass in SIA (#132628) 2025-08-27 07:43:53 +02:00
J. Nick Koston 5a6e26fedf Bump yalexs to 9.0.1 (#151216) 2025-08-26 22:13:06 -05:00
Lukas 51c7bafb41 Add Seko PoolDose integration (#146972)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-27 01:48:50 +02:00
Joakim Plate c8964494a2 Move togrill entites to sub devices (#151100) 2025-08-27 01:17:33 +02:00
Matthias Alphart 5db5f36554 Update xknx to 3.9.0 (#151214) 2025-08-27 01:05:40 +02:00
Thomas D 11f1e376c4 Add binary sensors to Volvo integration (#150127) 2025-08-26 23:52:13 +02:00
jan iversen 0139407f52 modbus: add async_will_remove_from_hass() to do cleanup. (#150906) 2025-08-26 23:50:11 +02:00
Stefan Agner d278d21561 Bump aiohasupervisor from version 0.3.2b0 to version 0.3.2 (#151202) 2025-08-26 23:39:55 +02:00
Jan-Philipp Benecke efce6c8468 Bump aioelectricitymaps to v1.1.1 (#150928) 2025-08-26 22:16:17 +01:00
TheJulianJES 8c7e9bcf7c Bump ZHA to 0.0.70 (#151212) 2025-08-26 22:13:26 +01:00
Marc Mueller 8bcc9485c3 Update orjson to 3.11.3 (#151211) 2025-08-26 22:43:41 +02:00
felosity bc8e00d9e0 Add support for HTTP Digest Authentication in REST commands (#150865)
Co-authored-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2025-08-26 20:51:44 +02:00
Artur Pragacz d5c208672e Add TARGET_FIELDS to config validation (#150238) 2025-08-26 19:40:39 +01:00
Marc Mueller 376f6ce4a7 Update h2 to 4.3.0 (#151194) 2025-08-26 19:35:47 +02:00
Álvaro Fernández Rojas 370bb14b46 Update aioairzone-cloud to v0.7.2 (#151200) 2025-08-26 19:34:25 +02:00
starkillerOG 3d1773fca5 Add Reolink chime silent time number entity (#151190) 2025-08-26 19:32:19 +02:00
starkillerOG 977d4c8f01 Add Reolink speak and doorbell volume entities (#151198)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-08-26 19:30:14 +02:00
Thomas55555 bf0bcc4c95 Remove unused constants in Husqvarna Automower (#151205) 2025-08-26 19:28:53 +02:00
HarvsG ecb51ce185 Baysesian Config Flow (#122552)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-26 19:15:57 +02:00
Tomeroeni 87f0703be1 Add support for port control in UniFi switch integration (#150152) 2025-08-26 17:20:45 +02:00
Erik Montnemery a90ac612f0 Allow dynamically creating menu options in SchemaFlowHandler (#151191) 2025-08-26 14:38:14 +02:00
Duco Sebel e2faa7020b Bumb python-homewizard-energy to 9.3.0 (#151187) 2025-08-26 13:59:08 +02:00
Thomas D ce523fc91d Expose method to set last activated on scene (#146884) 2025-08-26 12:44:07 +01:00
Erik Montnemery 5bb96f7f06 Adjust device disabled_by flag when changing config entry (#151155) 2025-08-26 12:37:56 +02:00
Michel van de Wetering dfbe42fb21 Use device id instead of archetype to check for Hue bridge (#151097) 2025-08-26 12:30:28 +02:00
markhannon c9876e2a2b Fix support for blinds in zimi integration (#150729)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-08-26 12:24:54 +02:00
Paulus Schoutsen 4ee9eada41 Mark AI Task as integration type entity (#151188) 2025-08-26 12:23:47 +02:00
Thomas D e82d91d394 Fix API field rename for Volvo integration (#151183) 2025-08-26 12:23:33 +02:00
tronikos 60e91555f8 Remove Arizona Public Service (APS) virtual integration (#150944) 2025-08-26 12:21:20 +02:00
Christian e5f163fa56 Add clear cache button to Fully Kiosk integration (#150943)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-26 12:20:43 +02:00
Florent Thoumie 060f748287 Update iaqualink to 0.6.0 (#151176) 2025-08-26 12:20:14 +02:00
Simone Chemelli 0031bce832 Fix async_migrate_entry for Alexa Devices (#151038) 2025-08-26 12:15:46 +02:00
starkillerOG 4c166c2320 Bump reolink-aio to 0.14.7 (#151045)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-26 12:11:33 +02:00
epenet 340a5f92e5 Add battery and tamper to Tuya siren (#151132) 2025-08-26 12:06:17 +02:00
Jon Seager 32645bead0 Bump pytouchlinesl to 0.5.0 (#151140) 2025-08-26 12:01:31 +02:00
tronikos 04f00d7010 Bump opower to 0.15.3 (#151179) 2025-08-26 11:52:18 +02:00
J. Diego Rodríguez Royo df9b0432b9 Bump aiohomeconnect to 0.19.0 (#151180) 2025-08-26 11:48:09 +02:00
hahn-th 47dbf923ed Bump to homematicip 2.3.0 (#151182) 2025-08-26 11:47:50 +02:00
epenet d0c5f291fc Add Tuya test fixtures (#151185) 2025-08-26 11:46:53 +02:00
J. Nick Koston 4b5ab472ad Bump qingping-ble to 1.0.1 (#151170) 2025-08-26 10:52:52 +02:00
Paulus Schoutsen ee9abd519d Default virtual environment location to .venv (#151181) 2025-08-26 09:44:04 +02:00
Erik Montnemery 1d2599184b Adjust entity disabled_by flag when moving entity to another config entry (#151151)
Co-authored-by: J. Nick Koston <nick@koston.org>
2025-08-25 23:35:28 +02:00
Marc Mueller b67d34d428 Update HAP-python to 5.0.0 (#151156) 2025-08-25 22:57:01 +02:00
hanwg b203a04f1b Add websocket command to rename config subentry (#150843)
Co-authored-by: Artur Pragacz <49985303+arturpragacz@users.noreply.github.com>
2025-08-25 22:55:01 +02:00
Erik Montnemery 50108e23ed Adjust device disabled_by flag when restoring a deleted device (#151154) 2025-08-25 22:49:47 +02:00
Erik Montnemery 58339d79d3 Revert "Fix entities/devices stuck in disabled state after config entry re-add" (#151158) 2025-08-25 22:48:30 +02:00
Erik Montnemery 05c8e8b4fd Adjust entity disabled_by flag when restoring a deleted entity (#151150) 2025-08-25 22:47:55 +02:00
Christopher Fenner ae676d6857 Bump PyViCare to 2.51.0 (#151153) 2025-08-25 22:43:50 +02:00
Michael Hansen db4d51e617 Bump hassil to 3.2.0 (#151168) 2025-08-25 21:39:11 +01:00
Glenn Vandeuren (aka Iondependent) bfe84ccd12 Add reconfigure flow to niko_home_control (#133993)
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2025-08-25 22:03:05 +02:00
J. Nick Koston ede948c277 Fix HomeKit Controller entity state restore issues for IP/COAP devices (#151087) 2025-08-25 19:50:13 +02:00
G Johansson 28e8405622 Fix correct breaking version in stiebel_eltron (#151163) 2025-08-25 19:43:19 +02:00
Marc Mueller 202d285286 Update typing-extensions to 4.15.0 (#151157) 2025-08-25 18:33:59 +01:00
Marc Mueller c0b1536cd8 Fix hassfest requirements check (#151159) 2025-08-25 18:31:17 +02:00
Norbert Rittel f1d2b102cf Fix broken reference for "event_types" in template (#151152) 2025-08-25 15:57:04 +01:00
Ludovic BOUÉ 8b29e3011e Matter Valve new attributes (#150788) 2025-08-25 15:43:00 +02:00
Jan Bouwhuis dea5e7454a Add MQTT lock subentry support (#150860)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-08-25 15:37:36 +02:00
Petro31 58d4fd0b75 Add update platform to template integration (#150277) 2025-08-25 14:43:23 +02:00
epenet ca37bc1506 Add Tuya test fixtures (#151022) 2025-08-25 11:28:55 +02:00
karwosts 1f25641e3b Fix schedule entity can't delete icon (#150995) 2025-08-25 10:56:33 +02:00
Maikel Punie 962b276a77 Bump velbusaio to 2025.8.0 (#151133) 2025-08-25 10:41:22 +02:00
Yuxin Wang 0786e333ce Remove tests for setting up multiple integrations for APCUPSD (#151125) 2025-08-25 10:33:00 +02:00
Matthias Alphart d35271a214 Update knx-frontend to 2025.8.24.205840 (#151118) 2025-08-25 08:52:06 +02:00
Petro31 8fbf6dbd0b Add event platform to templates (#145408)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-08-25 07:50:22 +02:00
Retha Runolfsson 60d8353b10 Bump pyswitchbot to 0.69.0 (#151123) 2025-08-25 07:03:09 +02:00
Yuxin Wang 2d69d2ef1c Remove unnecessary tests for APCUPSD (#151126) 2025-08-25 07:00:13 +02:00
LG-ThinQ-Integration e1e11db3d2 Add switch for AC's air_clean, ventilator and washers to LG (#140842)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-08-25 06:42:14 +02:00
jan iversen 91ef5fb429 modbus: Sensor caused hanging call_later method (#151033) 2025-08-24 22:37:26 +02:00
Christian Fetzer 0dc2a5a02c Add m³/min as volume flow rate unit (#151051) 2025-08-24 20:30:25 +01:00
Joakim Plate b018465a4d Update togrill to 0.8.0 (#150945) 2025-08-24 20:07:55 +02:00
Joris Pelgröm e797d651b5 Bump letpot to 0.6.2 (#151094) 2025-08-24 18:08:30 +02:00
J. Nick Koston bc6f261105 Fix entities/devices stuck in disabled state after config entry re-add (#151075) 2025-08-24 15:55:58 +02:00
Marc Mueller 6c2ba15a73 Update lxml to 6.0.1 (#151093) 2025-08-24 15:16:41 +02:00
Simone Chemelli ef0712a785 Handle TypeError in Alexa Devices (#151088) 2025-08-24 15:08:51 +02:00
Tom 2bd45e4625 Bump airos to 0.4.3 (#151042) 2025-08-24 13:04:41 +02:00
J. Nick Koston 03ca164fb3 Switch to August OAuth with official API (#151080) 2025-08-24 05:29:53 +02:00
J. Nick Koston 3c11f8e50e Bump yalexs to 8.12.0 (#151079) 2025-08-24 05:04:40 +02:00
Andrea Turri f0e5325510 Provide elapsed time sensor consistent in Miele (#145093)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-08-23 20:50:19 +02:00
Yevhenii Vaskivskyi 4ff2da7553 Bump asusrouter to 1.20.0 (#151067) 2025-08-23 20:45:20 +02:00
LG-ThinQ-Integration af951ff0d4 Modified to use built-in fan modes for "mid". (#150927)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-08-23 13:24:10 +02:00
Matthias Alphart 207e2f61ea Fix KNX strings for UI entity creation (#151053) 2025-08-22 23:43:05 +02:00
Manu 9e204cd347 Bump habiticalib to v0.4.3 (#151050) 2025-08-22 21:08:13 +02:00
dependabot[bot] 97a7e46579 Bump github/codeql-action from 3.29.10 to 3.29.11 (#151020)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-22 20:58:10 +02:00
Andrew Jackson 8175f4ba65 Bump mastodon to 2.1.2 (#150948) 2025-08-22 19:35:11 +02:00
Andre Lengwenus 22e307a48a Bump lcn-frontend to 0.2.7 (#151041) 2025-08-22 19:34:09 +02:00
TimL 6c69b36b7b Bump pysmlight to v0.2.8 (#151036) 2025-08-22 15:06:23 +02:00
J. Diego Rodríguez Royo dd270f54fc Delete Home Connect deprecated actions (#150929) 2025-08-22 14:16:01 +02:00
Simone Chemelli 158fb35c5b Add account reconfigure to Alexa Devices config flow (#149637)
Co-authored-by: Josef Zweck <josef@zweck.dev>
2025-08-22 13:52:01 +02:00
Matthias Alphart 85e5081fc3 Use serialized schema from backend in UI entity configuration (#149496) 2025-08-22 12:24:05 +02:00
Billy Rowell f6bb32c44b Add Tuya test fixtures for bzyd category (#150923)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-08-22 08:57:16 +02:00
Christopher Fenner e16eff6f28 Improve device details for Husqvarna BLE mower device (#150993) 2025-08-22 08:15:35 +02:00
Aidan Timson 2b80a621af Update aiolyric to 2.0.2 (#150998) 2025-08-22 08:12:49 +02:00
Aidan Timson 80d2e08572 Update aioazuredevops to 2.2.2 (#151000) 2025-08-22 06:55:13 +02:00
puddly e15166cbf3 Bump ZHA to 0.0.69 (#151010) 2025-08-22 06:49:38 +02:00
Paulus Schoutsen 3b1b095b47 2025.8.3 (#151008) 2025-08-21 20:22:43 +02:00
Matthias Alphart 72e78b6719 Allow nested translation schema for config panels (#149346) 2025-08-21 20:13:36 +02:00
J. Nick Koston a50b035479 Bump habluetooth to 5.1.0 and bleak-retry-connector to 4.3.0 (#150962) 2025-08-21 10:19:39 -05:00
Paulus Schoutsen bb4f8adffe Bump version to 2025.8.3 2025-08-21 15:13:51 +00:00
Bram Kragten 61a50e77cf Update frontend to 20250811.1 (#151005) 2025-08-21 15:13:37 +00:00
Simone Chemelli 82f94de0b8 Enable country site autodetection in Alexa Devices (#150989) 2025-08-21 15:13:36 +00:00
Erik Montnemery 71b2d46afd Except ujson from license check (#150980) 2025-08-21 15:13:35 +00:00
J. Nick Koston edc1989ff6 Bump onvif-zeep-async to 4.0.4 (#150969) 2025-08-21 15:12:19 +00:00
Martin Hjelmare 2dad6fa298 Ask user for Z-Wave RF region if country is missing (#150959)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-08-21 15:12:18 +00:00
elsi06 2f4e29ba71 Bump python-mystrom to 2.5.0 (#150947) 2025-08-21 15:12:17 +00:00
Imeon-Energy add75e06e3 Fix update retry for Imeon inverter integration (#150936)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-08-21 15:12:16 +00:00
Maciej Bieniek 9194ddd4fe Bump imgw-pib to version 1.5.4 (#150930) 2025-08-21 15:12:15 +00:00
J. Nick Koston 2e7821d64a Bump ESPHome minimum stable BLE version to 2025.8.0 (#150924) 2025-08-21 15:12:14 +00:00
Calvin Walton bb9660269c Matter valve Open command doesn't support TargetLevel=0 (#150922) 2025-08-21 15:12:13 +00:00
Paulus Schoutsen 1bd5aa0ab0 Fix structured output object selector conversion for OpenAI (#150916) 2025-08-21 15:12:12 +00:00
Tobias Sauerwein e4329ab8a5 update pyatmo to v9.2.3 (#150900) 2025-08-21 15:12:11 +00:00
J. Nick Koston 9414356a4d Bump bleak-retry-connector to 4.0.2 (#150899) 2025-08-21 15:12:10 +00:00
Paulus Schoutsen 0cd28e7fc1 Fix PWA theme color to match darker blue color scheme in 2025.8 (#150896)
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-21 15:12:09 +00:00
Joost Lekkerkerker 6383f9365c Bump pysmartthings to 3.2.9 (#150892) 2025-08-21 15:12:08 +00:00
epenet cb8669c84f Fix icloud service calls (#150881) 2025-08-21 15:12:07 +00:00
Stefan Agner d1698222f4 Add missing unsupported reasons to list (#150866) 2025-08-21 15:12:05 +00:00
Noah Husby a3f5c3f422 Bump aiorussound to 4.8.1 (#150858) 2025-08-21 15:12:04 +00:00
G Johansson 945771098e Bump holidays to 0.79 (#150857) 2025-08-21 15:12:03 +00:00
Imeon-Energy 59d73138e7 Use correct unit and class for the Imeon inverter sensors (#150847)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-08-21 15:12:02 +00:00
Martin Hjelmare fe71b54c3e Handle Z-Wave RssiErrorReceived (#150846) 2025-08-21 15:12:01 +00:00
LG-ThinQ-Integration 7639e12ff2 Initialize the coordinator's data to include data.options. (#150839)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-08-21 15:12:00 +00:00
Joost Lekkerkerker 4b2a149072 Bump yt-dlp to 2025.08.11 (#150821) 2025-08-21 15:11:59 +00:00
Joost Lekkerkerker 92b988a292 Abort Nanoleaf discovery flows with user flow (#150818) 2025-08-21 15:11:58 +00:00
Joost Lekkerkerker 1ca6c4b5b8 Include device data in Withings diagnostics (#150816) 2025-08-21 15:11:57 +00:00
tronikos 81377be92f Bump opower to 0.15.2 (#150809) 2025-08-21 15:11:56 +00:00
Joost Lekkerkerker 38aba81f62 Pin gql to 3.5.3 (#150800) 2025-08-21 15:10:38 +00:00
Simone Chemelli e175e3ed0b Enable country site autodetection in Alexa Devices (#150989) 2025-08-21 17:10:27 +02:00
Thomas D 27b32c5e93 Show charging power as 0 when not charging for the Volvo integration (#150797) 2025-08-21 15:08:25 +00:00
peteS-UK 332996cc38 Fix volume step error in Squeezebox media player (#150760) 2025-08-21 15:08:23 +00:00
Thomas Schamm 199b7e8ba7 Fix for bosch_shc: 'device_registry.async_get_or_create' referencing a non existing 'via_device' (#150756) 2025-08-21 15:08:23 +00:00
Thomas Schamm 122af46a92 Bump boschshcpy to 0.2.107 (#150754) 2025-08-21 15:08:21 +00:00
Marc Mueller 3dd091de44 Update hassfest package exceptions (#150744) 2025-08-21 15:08:20 +00:00
epenet 932c5ccf0f Bump renault-api to 0.4.0 (#150624) 2025-08-21 15:08:19 +00:00
JP-Ellis 4e52826664 fix(amberelectric): add request timeouts (#150613)
Signed-off-by: JP-Ellis <josh@jpellis.me>
2025-08-21 15:08:18 +00:00
markhannon c30d778a54 Bump to zcc-helper==3.6 (#150608) 2025-08-21 15:08:16 +00:00
Bram Kragten 7cd767e920 Update frontend to 20250811.1 (#151005) 2025-08-21 17:02:02 +02:00
Calvin Walton 4c39936b81 Matter valve Open command doesn't support TargetLevel=0 (#150922) 2025-08-21 16:19:14 +02:00
elsi06 d90590b228 Bump python-mystrom to 2.5.0 (#150947) 2025-08-21 08:48:03 -05:00
J. Nick Koston 7914e6b135 Bump onvif-zeep-async to 4.0.4 (#150969) 2025-08-21 08:47:14 -05:00
Martin Hjelmare 1d646d06a6 Ask user for Z-Wave RF region if country is missing (#150959)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
2025-08-21 14:44:19 +02:00
LG-ThinQ-Integration 135c80d194 Initialize the coordinator's data to include data.options. (#150839)
Co-authored-by: yunseon.park <yunseon.park@lge.com>
2025-08-21 13:40:22 +02:00
Imeon-Energy aed853267a Fix update retry for Imeon inverter integration (#150936)
Co-authored-by: TheBushBoy <theodavid@icloud.com>
2025-08-21 13:31:06 +02:00
Erik Montnemery 62be31f899 Add test of automower_ble activity mapping (#150983)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-21 10:59:19 +02:00
Erik Montnemery ca75581d43 Bump automower-ble to 0.2.7 (#150979) 2025-08-21 10:59:10 +02:00
Erik Montnemery f8a8fb516b Except ujson from license check (#150980) 2025-08-21 10:33:37 +02:00
Andrea Turri f9575a3b2f Add "profile" extra attribute to Miele program sensor on coffee machines (#145073) 2025-08-21 10:19:13 +02:00
Erik Montnemery bbde98bc9f Bump pychromecast to 14.0.9 (#150939) 2025-08-21 10:18:29 +02:00
Paulus Schoutsen 90e8d74fcd Add HA version to device analytics (#150877) 2025-08-21 09:44:17 +02:00
dependabot[bot] 9489c19598 Bump github/codeql-action from 3.29.9 to 3.29.10 (#150913)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 09:42:36 +02:00
Erik Montnemery 210ec28f0a Fix bluetooth tests (#150978) 2025-08-21 09:38:42 +02:00
dependabot[bot] 88d853cfbd Bump codecov/codecov-action from 5.4.3 to 5.5.0 (#150977)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 09:26:35 +02:00
Yevhenii Vaskivskyi 069b21a5a5 Create a special cookie jar for aiohttp client session in asuswrt (#150973) 2025-08-21 06:35:12 +02:00
Ludovic BOUÉ da864ca034 Matter Refrigerator DoorOpen alarm (#150759)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-20 23:01:03 +02:00
Joakim Plate 8d6b7bf950 Fix event affecting multiple probes (#150954) 2025-08-20 20:40:16 +02:00
Franck Nijhof d7320f00ea 2025.8.2 (#150718) 2025-08-15 17:55:32 +02:00
Franck Nijhof 0bcc0f3fb9 Bump version to 2025.8.2 2025-08-15 15:22:30 +00:00
G Johansson c551a133c1 Improve handling decode errors in rest (#150699) 2025-08-15 14:43:43 +00:00
G Johansson 22e19e768e Fix missing labels for subdiv in workday (#150684) 2025-08-15 14:43:42 +00:00
Luke Lashley 0647222402 Bump python-snoo to 0.8.3 (#150670) 2025-08-15 14:43:41 +00:00
J. Nick Koston 83226ed015 Bump onvif-zeep-async to 4.0.3 (#150663) 2025-08-15 14:43:39 +00:00
J. Nick Koston 837472c12d Bump uiprotect to 7.21.1 (#150657) 2025-08-15 14:43:38 +00:00
Tom 0b337c7e2a Bump airOS to 0.2.11 (#150627) 2025-08-15 14:43:36 +00:00
Åke Strandberg 1a0b61c98e Bump pymiele to 0.5.4 (#150605) 2025-08-15 14:43:35 +00:00
Åke Strandberg 87a2d3e6d9 Bump pymiele to 0.5.3 (#150216) 2025-08-15 14:43:34 +00:00
Joakim Plate 2c1407f159 Make sure we update the api version in philips_js discovery (#150604) 2025-08-15 14:43:05 +00:00
Luke Lashley 1643d5df67 Change Snoo to use MQTT instead of PubNub (#150570) 2025-08-15 14:43:05 +00:00
Luke Lashley 5a49007b86 Bump python-snoo to 0.8.2 (#150569) 2025-08-15 14:43:04 +00:00
Robert Resch 312d8aaff5 Bump uv to 0.8.9 (#150542) 2025-08-15 14:43:04 +00:00
Luke Lashley 776726a053 Bump python-snoo to 0.8.1 (#150530) 2025-08-15 14:43:03 +00:00
J. Nick Koston 4213427b9c Bump aiodhcpwatcher to 1.2.1 (#150519) 2025-08-15 14:43:03 +00:00
J. Nick Koston 82907e5b88 Bump bleak-retry-connector to 4.0.1 (#150515) 2025-08-15 14:43:02 +00:00
Shay Levy 56b4c554de Bump aiowebostv to 0.7.5 (#150514) 2025-08-15 14:43:02 +00:00
Tom 82390f6f7b Bump airOS to 0.2.8 (#150504) 2025-08-15 14:43:01 +00:00
Åke Strandberg d9ebda4910 Add missing boost2 code for Miele hobs (#150481) 2025-08-15 14:43:01 +00:00
Martin Hjelmare 8f94657b0c Improve Z-Wave manual config flow step description (#150479) 2025-08-15 14:43:00 +00:00
Thomas D b0ab3cddb8 Fix re-auth flow for Volvo integration (#150478) 2025-08-15 14:43:00 +00:00
peteS-UK 3d4d57fa32 Additional Fix error on startup when no Apps or Radio plugins are installed for Squeezebox (#150475) 2025-08-15 14:43:00 +00:00
Matrix fed6f19edf Fix YoLink valve state when device running in class A mode (#150456) 2025-08-15 14:42:59 +00:00
Cyrill Raccaud 2725abf032 Bump cookidoo-api to 0.14.0 (#150450) 2025-08-15 14:42:59 +00:00
wedsa5 bd1b81493c Fix brightness command not sent when in white color mode (#150439)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-08-15 14:42:58 +00:00
Kevin David c58a188179 Bump python-snoo to 0.7.0 (#150434) 2025-08-15 14:42:58 +00:00
David ffbb7a2ab4 Fix error of the Powerfox integration in combination with the new Powerfox FLOW adapter (#150429)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-15 14:42:57 +00:00
Petro31 2ad470d172 Fix optimistic set to false for template entities (#150421) 2025-08-15 14:42:57 +00:00
Manu 8b2fce9c33 Bump habiticalib to version 0.4.2 (#150417) 2025-08-15 14:42:56 +00:00
HarvsG e22e7f1bcf Pi_hole - Account for auth succeeding when it shouldn't (#150413) 2025-08-15 14:42:56 +00:00
Michael Hansen b5bd61b20a Handle non-streaming TTS case correctly (#150218) 2025-08-15 14:42:55 +00:00
Arie Catsman 391c9a679e Fix enphase_envoy non existing via device warning at first config. (#149010)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-15 14:42:55 +00:00
epenet 8d49cb1195 Add pymodbus to package constraints (#150420) 2025-08-15 13:57:11 +02:00
Franck Nijhof dc8aaac6fb 2025.8.1 (#150412) 2025-08-11 21:06:26 +02:00
Franck Nijhof 1e87f0cab1 Revert "Update pystiebeleltron to 0.2.3 (#150339)"
This reverts commit 3158aa8891.
2025-08-11 18:29:46 +00:00
epenet 1aeced0fe6 Fix issue with Tuya suggested unit (#150414) 2025-08-11 20:25:24 +02:00
Franck Nijhof 7ed14f0afd Bump version to 2025.8.1 2025-08-11 12:15:36 +00:00
Martin Hjelmare dc5d159ffb Lower Z-Wave firmware check delay (#150411) 2025-08-11 12:14:57 +00:00
epenet 5fdd04b860 Handle empty electricity RAW sensors in Tuya (#150406) 2025-08-11 12:14:55 +00:00
Bram Kragten 6f5d72fd81 Update frontend to 20250811.0 (#150404) 2025-08-11 12:14:54 +00:00
Manuel Stahl 3158aa8891 Update pystiebeleltron to 0.2.3 (#150339)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-11 09:59:45 +00:00
Philipp Waller 0c74e22069 Update knx-frontend to 2025.8.9.63154 (#150323) 2025-08-11 09:59:44 +00:00
Tom a88549315c Bump airOS to 0.2.7 supporting firmware 8.7.11 (#150298) 2025-08-11 09:59:43 +00:00
steinmn fde548b825 Set suggested display precision on Volvo energy/fuel consumption sensors (#150296) 2025-08-11 09:59:42 +00:00
Norbert Rittel 91b10fb6d7 Remove misleading "the" from Launch Library configuration (#150288) 2025-08-11 09:59:41 +00:00
Thomas D 39f41fe17d Volvo: Skip unsupported API fields (#150285) 2025-08-11 09:59:39 +00:00
Denis Shulyaka 3d39fb08e5 Add GPT-5 support (#150281) 2025-08-11 09:59:38 +00:00
Thomas D a1731cd210 Volvo: fix distance to empty battery (#150278) 2025-08-11 09:59:37 +00:00
Robert Resch 0c31ec9bb6 Constraint num2words to 0.5.14 (#150276) 2025-08-11 09:58:56 +00:00
Thomas D 762c179b80 Volvo: fix missing charging power options (#150272) 2025-08-11 09:30:40 +00:00
peteS-UK 66019953db Fix error on startup when no Apps or Radio plugins are installed for Squeezebox (#150267) 2025-08-11 09:30:39 +00:00
peteS-UK a2931efeeb Fix handing for zero volume error in Squeezebox (#150265) 2025-08-11 09:30:38 +00:00
Martin Hjelmare 90c03f4115 Fix Tibber coordinator ContextVar warning (#150229) 2025-08-11 09:30:36 +00:00
Raphael Hehl 8afe3fed74 Handle Unifi Protect BadRequest exception during API key creation (#150223) 2025-08-11 09:30:35 +00:00
Martin Hjelmare 3ef332e168 Ignore MQTT vacuum battery warning (#150211) 2025-08-11 09:30:34 +00:00
puddly 8d821d9f98 Fix JSON serialization for ZHA diagnostics download (#150210) 2025-08-11 09:30:33 +00:00
Joakim Sørensen 23619fb2d3 Bump hass-nabucasa from 0.111.1 to 0.111.2 (#150209) 2025-08-11 09:30:31 +00:00
puddly bc70aeea85 Bump ZHA to 0.0.68 (#150208) 2025-08-11 09:30:30 +00:00
Martin Hjelmare beca01e857 Silence vacuum battery deprecation for built in integrations (#150204) 2025-08-11 09:30:29 +00:00
Manu 4765d9da92 Migrate unique_id only if monitor_id is present in Uptime Kuma (#150197) 2025-08-11 09:30:27 +00:00
Norbert Rittel 7951e822be Fix description of button.press action (#150181) 2025-08-11 09:30:26 +00:00
Maciej Bieniek c653bfff9f Bump imgw_pib to version 1.5.3 (#150178) 2025-08-11 09:30:25 +00:00
Marco Gasparini 2223bdb48e Fix Progettihwsw config flow (#150149) 2025-08-11 09:30:23 +00:00
Thomas55555 42a3bef34a Handle HusqvarnaWSClientError (#150145) 2025-08-11 09:30:22 +00:00
Tom 6f4d405b26 Bump airOS to 0.2.6 improving device class matching more devices (#150134) 2025-08-11 09:30:21 +00:00
puddly 8edc5f0359 Bump ZHA to 0.0.67 (#150132) 2025-08-11 09:30:19 +00:00
Pete Sage efcffd1016 Fix dialog enhancement switch for Sonos Arc Ultra (#150116) 2025-08-11 09:30:18 +00:00
Stefan H. ee32992010 Fix Enigma2 startup hang (#149756) 2025-08-11 09:30:17 +00:00
epenet 319128043e Make Tuya complex type handling explicit (#149677) 2025-08-11 09:30:15 +00:00
Franck Nijhof f074d81c8b 2025.8.0 (#150115) 2025-08-06 19:53:07 +02:00
Franck Nijhof d791d66104 Bump version to 2025.8.0 2025-08-06 17:19:42 +00:00
Luca Angemi dd9bd50a7b Deprecate Roborock battery feature (#150126) 2025-08-06 15:35:24 +00:00
Åke Strandberg 6243517271 Improve miele climate test coverage (#149859) 2025-08-06 15:20:37 +00:00
Franck Nijhof ad8ff7570d Bump version to 2025.8.0b5 2025-08-06 13:34:19 +00:00
Bram Kragten c4c14bee36 Update frontend to 20250806.0 (#150106)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2025-08-06 13:34:10 +00:00
Joost Lekkerkerker 2cf5badc17 Enable disabled Ollama config entries after entry migration (#150105) 2025-08-06 13:34:09 +00:00
G Johansson 0478f43b4b Bump holidays to 0.78 (#150103) 2025-08-06 13:34:08 +00:00
Martin Hjelmare d18f6273a8 Fix update coordinator ContextVar log for custom integrations (#150100) 2025-08-06 13:34:07 +00:00
David Poll 94bade0202 Fix zero-argument functions with as_function (#150062) 2025-08-06 13:34:06 +00:00
Franck Nijhof 855e8b08e9 Bump version to 2025.8.0b4 2025-08-06 11:26:23 +00:00
Joost Lekkerkerker 9820956b46 Enable disabled OpenAI config entries after entry migration (#150099) 2025-08-06 11:26:10 +00:00
Joost Lekkerkerker 1693299652 Enable disabled Anthropic config entries after entry migration (#150098) 2025-08-06 11:26:09 +00:00
starkillerOG 75200a9426 Reduce Reolink fimware polling from 12h to 24h (#150095) 2025-08-06 11:24:58 +00:00
Robert Resch fa587cec38 Fix hassio tests by only mocking supervisor id (#150093) 2025-08-06 11:24:57 +00:00
epenet 47946d0103 Add Tuya debug logging for new devices (#150091)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-06 11:24:56 +00:00
epenet d2586ca4ff Remove tuya vacuum battery level attribute (#150086) 2025-08-06 11:23:14 +00:00
Philipp Waller 4e21ef5fbc Update knx-frontend to 2025.8.6.52906 (#150085) 2025-08-06 10:02:44 +00:00
Joakim Sørensen a9998b41a5 Bump hass-nabucasa from 0.111.0 to 0.111.1 (#150082) 2025-08-06 10:01:07 +00:00
puddly 0a72f31504 Bump ZHA to 0.0.66 (#150081) 2025-08-06 10:00:41 +00:00
Retha Runolfsson f3a50c176d Bump pyswitchbot to 0.68.3 (#150080) 2025-08-06 10:00:39 +00:00
J. Nick Koston b6b422775a Bump habluetooth to 4.0.2 (#150078)
Co-authored-by: Robert Resch <robert@resch.dev>
2025-08-06 09:58:55 +00:00
J. Nick Koston 00baecd01e Bump yalexs to 8.11.1 (#150073) 2025-08-06 09:57:46 +00:00
Pete Sage b370b7a7f6 Bump soco to 0.30.11 (#150072) 2025-08-06 09:57:45 +00:00
Robert Svensson baa2d751e4 Bump axis to v65 (#150065) 2025-08-06 09:57:43 +00:00
Martin Hjelmare c8d54fcffc Remove matter vacuum battery level attribute (#150061) 2025-08-06 09:57:42 +00:00
karwosts 80e3655bac Fix template sensor uom string (#150057) 2025-08-06 09:57:41 +00:00
starkillerOG e5b0a366fe Bump reolink-aio to 0.14.6 (#150055) 2025-08-06 09:57:40 +00:00
Joost Lekkerkerker 20e78a15b4 Change AI task strings (#150051) 2025-08-06 09:57:39 +00:00
Bram Kragten 9d806aef88 Update frontend to 20250805.0 (#150049) 2025-08-06 09:57:38 +00:00
Andrew Jackson 7e16973166 Default to zero quantity on new todo items in Mealie (#150047) 2025-08-06 09:57:36 +00:00
Martin Hjelmare e5f776fdc3 Improve downloader service (#150046)
Co-authored-by: epenet <6771947+epenet@users.noreply.github.com>
2025-08-06 09:57:35 +00:00
Joost Lekkerkerker 83ccdb35f1 Ignore vacuum entities that properly deprecate battery (#150043) 2025-08-06 09:57:34 +00:00
Stefan Agner 52984f2fd1 Add missing translations for unhealthy Supervisor issues (#150036) 2025-08-06 09:57:33 +00:00
Jan Bouwhuis a548e13da5 Deprecate MQTT vacuum battery feature and remove it as default feature (#149877)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2025-08-06 09:57:32 +00:00
tronikos 55301a50b2 Fix PG&E and Duquesne Light Company in Opower (#149658)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-08-06 09:57:30 +00:00
Franck Nijhof 808273962d Bump version to 2025.8.0b3 2025-08-05 12:01:54 +00:00
Martin Hjelmare 094fe43557 Fix Z-Wave duplicate provisioned device (#150008) 2025-08-05 11:56:00 +00:00
Michael Hansen 8f5bd51eef Bump wyoming to 1.7.2 (#150007) 2025-08-05 11:55:59 +00:00
Thomas55555 faf0ded854 Bump aioautomower to 2.1.2 (#150003) 2025-08-05 11:55:58 +00:00
Matthias Alphart d20302f97b Update knx-frontend to 2025.8.4.154919 (#149991) 2025-08-05 11:55:57 +00:00
Grzegorz M 74c25496bc Bump icalendar from 6.1.0 to 6.3.1 for CalDav (#149990) 2025-08-05 11:55:56 +00:00
Petro31 67ecea0778 Create battery_level deprecation repair for template vacuum platform (#149987)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-08-05 11:55:55 +00:00
Robert Resch 164e5871cb Bump deebot-client to 13.6.0 (#149983) 2025-08-05 11:55:53 +00:00
Joakim Sørensen 7a9966120e Bump hass-nabucasa from 0.110.1 to 0.111.0 (#149977) 2025-08-05 11:55:52 +00:00
Martin Hjelmare d810b4ca38 Bump zwave-js-server-python to 0.67.1 (#149972) 2025-08-05 11:55:51 +00:00
epenet 896062d669 Fix Tuya fan speeds with numeric values (#149971) 2025-08-05 11:54:02 +00:00
epenet 03bd133577 Rename Tuya fixture files (#149927) 2025-08-05 11:47:15 +00:00
Martin Hjelmare 4596c1644b Direct migrations with Z-Wave JS UI to docs (#149966) 2025-08-05 11:43:12 +00:00
Petro31 778fe96eb6 Fix optimistic covers (#149962) 2025-08-05 11:43:11 +00:00
Joost Lekkerkerker a06557ed54 Pass config entry to Remote Calendar coordinator (#149958) 2025-08-05 11:43:10 +00:00
Joakim Sørensen 641621d184 Bump hass-nabucasa from 0.110.0 to 0.110.1 (#149956) 2025-08-05 11:43:09 +00:00
Joost Lekkerkerker b163f2b855 Pass config entry to SMS coordinator (#149955) 2025-08-05 11:43:08 +00:00
Joost Lekkerkerker 0c0604e5bd Pass config entry to Fronius coordinator (#149954) 2025-08-05 11:43:07 +00:00
Joost Lekkerkerker e0e4fc8afb Pass config entry to AsusWRT coordinator (#149953) 2025-08-05 11:43:05 +00:00
Joost Lekkerkerker f832a2844f Pass config entry to Unifi coordinator (#149952) 2025-08-05 11:43:04 +00:00
Erik Montnemery 4b0b268227 Fix DeviceEntry.suggested_area deprecation warning (#149951) 2025-08-05 11:43:03 +00:00
Joost Lekkerkerker dfc16d9f15 Pass config entry to Broadlink coordinator (#149949) 2025-08-05 11:43:02 +00:00
Joost Lekkerkerker 4e3309bd22 Pass config entry to Snoo coordinator (#149947) 2025-08-05 11:43:01 +00:00
Joost Lekkerkerker a5a45ce59f Pass config entry to Smarttub coordinator (#149946) 2025-08-05 11:43:00 +00:00
Joost Lekkerkerker 6cb48da2f3 Pass config entry to Meteo France coordinator (#149945) 2025-08-05 11:42:59 +00:00
Joost Lekkerkerker ab5aac47b2 Pass config entry to Kraken coordinator (#149944) 2025-08-05 11:42:58 +00:00
Joost Lekkerkerker d50b9405f0 Pass config entry to Simplisafe coordinator (#149943) 2025-08-05 11:42:57 +00:00
Joost Lekkerkerker a2722f08c4 Pass config entry to Mill coordinator (#149942) 2025-08-05 11:42:56 +00:00
Joost Lekkerkerker aa700c3982 Pass config entry to hue coordinator (#149941) 2025-08-05 11:42:55 +00:00
Ståle Storø Hauknes 3b1bb41129 Airthings ContextVar warning (#149930) 2025-08-05 11:42:54 +00:00
Brett Adams 79ef51fb07 Fix credit sensor when there are no vehicles in Teslemetry (#149925) 2025-08-05 11:34:16 +00:00
andreimoraru 53769da55e Bump yt-dlp to 2025.07.21 (#149916)
Co-authored-by: Joostlek <joostlek@outlook.com>
2025-08-05 11:34:15 +00:00
Thomas55555 82d153a240 Fix options for error sensor in Husqvarna Automower (#149901) 2025-08-05 11:34:13 +00:00
Andrew Jackson 0dac635478 Bump aiomealie to 0.10.1 (#149890) 2025-08-05 11:34:12 +00:00
Tom 90fc7d314b Bump python-airos to 0.2.4 (#149885) 2025-08-05 11:34:10 +00:00
Mike Degatano 636c1b7e4f Add translation strings for unsupported OS version (#149837) 2025-08-05 11:34:09 +00:00
Christopher Fenner 49c23de2d2 Update sensor icons in Volvo integration (#149811) 2025-08-05 11:34:08 +00:00
Ludovic BOUÉ e48820b2c1 Matter pump setpoint CurrentLevel limit (#149689) 2025-08-05 11:34:06 +00:00
Bram Kragten 2b7a434677 Bump version to 2025.8.0b2 2025-08-04 10:37:10 +02:00
puddly 9ef7c6c99a Bump ZHA to 0.0.65 (#149922) 2025-08-04 10:37:07 +02:00
J. Nick Koston b789c11217 Bump dbus-fast to 2.44.3 (#149921) 2025-08-04 10:37:06 +02:00
J. Nick Koston 5e8cd19cc3 Bump aiodiscover to 2.7.1 (#149920) 2025-08-04 10:37:05 +02:00
J. Nick Koston 027052440d Bump yalexs-ble to 3.1.2 (#149917) 2025-08-04 10:37:04 +02:00
Maciej Bieniek 47a7ed4084 Bump imgw_pib to version 1.5.2 (#149892) 2025-08-04 10:37:03 +02:00
Martin Hjelmare 89f6cfeb81 Fix Z-Wave handling of driver ready event (#149879) 2025-08-04 10:37:02 +02:00
Joost Lekkerkerker c268e57ba7 Bump python-open-router to 0.3.1 (#149873) 2025-08-04 10:37:01 +02:00
Andrea Turri 138c19126b Fix Miele hob translation keys (#149865) 2025-08-04 10:37:01 +02:00
Oliver c459ceba73 Update denonavr to 1.1.2 (#149842) 2025-08-04 10:37:00 +02:00
Martin Hjelmare 8d0ceff652 Fix Z-Wave config entry state conditions in listen task (#149841) 2025-08-04 10:36:59 +02:00
peteS-UK 1d383e80a4 Fix initialisation of Apps and Radios list for Squeezebox (#149834) 2025-08-04 10:36:58 +02:00
Norbert Rittel 6a17a12be5 Update reference for volatile_organic_compounds_parts in template (#149831) 2025-08-04 10:36:57 +02:00
Norbert Rittel 3a8d962d34 Add translation for absolute_humidity device class to mqtt (#149818) 2025-08-04 10:36:56 +02:00
Norbert Rittel 7e5cf17cf4 Add translation for absolute_humidity device class to random (#149815) 2025-08-04 10:36:55 +02:00
Norbert Rittel 214940d04f Add translation for absolute_humidity device class to template (#149814) 2025-08-04 10:36:54 +02:00
Thomas D 6877fdaf5b Add scopes in config flow auth request for Volvo integration (#149813) 2025-08-04 10:36:53 +02:00
Norbert Rittel 35d0c254a2 Fix descriptions for template number fields (#149804) 2025-08-04 10:36:53 +02:00
epenet 9649fbc189 Fix tuya light supported color modes (#149793)
Co-authored-by: Erik <erik@montnemery.com>
2025-08-04 10:36:52 +02:00
Jamin b60b1fc0c6 Bump VoIP utils to 0.3.4 (#149786) 2025-08-04 10:36:51 +02:00
Manu 6b93f6d75c Hide configuration URL when Uptime Kuma is installed locally (#149781) 2025-08-04 10:36:50 +02:00
starkillerOG c8069a383e Bump motionblinds to 0.6.30 (#149764) 2025-08-04 10:36:49 +02:00
Nathan Spencer 6857e87b30 Bump pylitterbot to 2024.2.3 (#149763) 2025-08-04 10:36:48 +02:00
J. Nick Koston a095631f4f Bump aioesphomeapi to 37.2.2 (#149755) 2025-08-04 10:36:48 +02:00
Copilot c59fbdeec1 Fix ZHA ContextVar deprecation by passing config_entry (#149748)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joostlek <7083755+joostlek@users.noreply.github.com>
Co-authored-by: puddly <32534428+puddly@users.noreply.github.com>
Co-authored-by: TheJulianJES <6409465+TheJulianJES@users.noreply.github.com>
2025-08-04 10:36:47 +02:00
Erik Montnemery b521b1e64c Make device suggested_area only influence new devices (#149758)
Co-authored-by: Abílio Costa <abmantis@users.noreply.github.com>
2025-08-04 10:34:42 +02:00
Erik Montnemery 073589ae19 Deprecate DeviceEntry.suggested_area (#149730) 2025-08-04 10:34:38 +02:00
Erik Montnemery 9435b0ad3a Fix flaky velbus test (#149743) 2025-08-04 10:34:15 +02:00
karwosts 1662d36125 Fix add_suggested_values_to_schema when the schema has sections (#149718)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2025-08-04 10:14:30 +02:00
Erik Montnemery 70e54fdadd Improve test of FlowHandler.add_suggested_values_to_schema (#149759) 2025-08-04 10:13:44 +02:00
Tom 38d0ebb8ba Add diagnostics to UISP AirOS (#149631) 2025-08-04 10:08:19 +02:00
Bram Kragten 15cb48badb Bump version to 2025.8.0b1 2025-07-31 19:01:26 +02:00
Erik Montnemery 22214e8d31 Fix kitchen_sink option flow (#149760) 2025-07-31 19:01:02 +02:00
Bram Kragten fc04e0b2cc Update frontend to 20250731.0 (#149757) 2025-07-31 19:01:01 +02:00
Petro31 3fc6ebdb43 Fix unique_id in config validation for legacy weather platform (#149742) 2025-07-31 19:01:00 +02:00
Petro31 3ccb7deb3c Nitpick default translations for template integration (#149740) 2025-07-31 19:00:59 +02:00
Erik Montnemery f5f63b914a Make _EventDeviceRegistryUpdatedData_Remove JSON serializable (#149734) 2025-07-31 19:00:58 +02:00
J. Nick Koston bd0a3f5a5d Bump aioesphomeapi to 37.2.0 (#149732) 2025-07-31 19:00:58 +02:00
J. Nick Koston ab9eebd092 Bump aioesphomeapi to 37.1.6 (#149715) 2025-07-31 19:00:57 +02:00
J. Nick Koston 68c43099d9 Fix ESPHome unnecessary probing on DHCP discovery (#149713) 2025-07-31 19:00:56 +02:00
Åke Strandberg 041c417164 Fix bug when interpreting miele action response (#149710) 2025-07-31 19:00:55 +02:00
Andrea Turri 537d09c697 Fix Miele induction hob empty state (#149706) 2025-07-31 19:00:54 +02:00
Roman Sivriver 21e3b8da92 Fix typo in backup log message (#149705) 2025-07-31 19:00:53 +02:00
Jan Bouwhuis d390681360 Fix inconsistent use of the term 'target' and a typo in MQTT translation strings (#149703) 2025-07-31 19:00:53 +02:00
Åke Strandberg 918ec78348 Add missing translations for miele dishwasher (#149702) 2025-07-31 19:00:52 +02:00
starkillerOG 1deae3ee1a Bump reolink-aio to 0.14.5 (#149700) 2025-07-31 19:00:51 +02:00
Petro31 59eace67df Add translations for all fields in template integration (#149692)
Co-authored-by: Norbert Rittel <norbert@rittel.de>
2025-07-31 19:00:50 +02:00
Åke Strandberg 7eb7c66e3f Explicitly pass config_entry to miele coordinator (#149691) 2025-07-31 19:00:49 +02:00
Copilot aa2941592d Fix ContextVar deprecation warning in homeassistant_hardware integration (#149687)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: joostlek <7083755+joostlek@users.noreply.github.com>
Co-authored-by: mib1185 <35783820+mib1185@users.noreply.github.com>
2025-07-31 19:00:48 +02:00
Manu 29daf136d2 Fix KeyError in friends coordinator (#149684) 2025-07-31 19:00:47 +02:00
puddly 3da3cf7f52 Bump ZHA to 0.0.64 (#149683)
Co-authored-by: TheJulianJES <TheJulianJES@users.noreply.github.com>
Co-authored-by: abmantis <amfcalt@gmail.com>
2025-07-31 19:00:47 +02:00
Michael Hansen d8c93d54d5 Bump intents to 2025.7.30 (#149678) 2025-07-31 19:00:46 +02:00
Jan Bouwhuis 0799ee9fba Fix translation string reference for MQTT climate subentry option (#149673) 2025-07-31 19:00:45 +02:00
Bram Kragten 9d31403984 2025.8.0b0 (#149675) 2025-07-30 17:13:15 +02:00
Bram Kragten 02f87cba9b Merge branch 'dev' into dev-rc 2025-07-30 17:07:48 +02:00
Bram Kragten 5b54784378 Bump version to 2025.8.0b0 2025-07-30 16:56:55 +02:00
3379 changed files with 260541 additions and 46884 deletions
@@ -0,0 +1,77 @@
---
name: quality-scale-rule-verifier
description: |
Use this agent when you need to verify that a Home Assistant integration follows a specific quality scale rule. This includes checking if the integration implements required patterns, configurations, or code structures defined by the quality scale system.
<example>
Context: The user wants to verify if an integration follows a specific quality scale rule.
user: "Check if the peblar integration follows the config-flow rule"
assistant: "I'll use the quality scale rule verifier to check if the peblar integration properly implements the config-flow rule."
<commentary>
Since the user is asking to verify a quality scale rule implementation, use the quality-scale-rule-verifier agent.
</commentary>
</example>
<example>
Context: The user is reviewing if an integration reaches a specific quality scale level.
user: "Verify that this integration reaches the bronze quality scale"
assistant: "Let me use the quality scale rule verifier to check the bronze quality scale implementation."
<commentary>
The user wants to verify the integration has reached a certain quality level, so use multiple quality-scale-rule-verifier agents to verify each bronze rule.
</commentary>
</example>
model: inherit
color: yellow
tools: Read, Bash, Grep, Glob, WebFetch
---
You are an expert Home Assistant integration quality scale auditor specializing in verifying compliance with specific quality scale rules. You have deep knowledge of Home Assistant's architecture, best practices, and the quality scale system that ensures integration consistency and reliability.
You will verify if an integration follows a specific quality scale rule by:
1. **Fetching Rule Documentation**: Retrieve the official rule documentation from:
`https://raw.githubusercontent.com/home-assistant/developers.home-assistant/refs/heads/master/docs/core/integration-quality-scale/rules/{rule_name}.md`
where `{rule_name}` is the rule identifier (e.g., 'config-flow', 'entity-unique-id', 'parallel-updates')
2. **Understanding Rule Requirements**: Parse the rule documentation to identify:
- Core requirements and mandatory implementations
- Specific code patterns or configurations required
- Common violations and anti-patterns
- Exemption criteria (when a rule might not apply)
- The quality tier this rule belongs to (Bronze, Silver, Gold, Platinum)
3. **Analyzing Integration Code**: Examine the integration's codebase at `homeassistant/components/<integration domain>` focusing on:
- `manifest.json` for quality scale declaration and configuration
- `quality_scale.yaml` for rule status (done, todo, exempt)
- Relevant Python modules based on the rule requirements
- Configuration files and service definitions as needed
4. **Verification Process**:
- Check if the rule is marked as 'done', 'todo', or 'exempt' in quality_scale.yaml
- If marked 'exempt', verify the exemption reason is valid
- If marked 'done', verify the actual implementation matches requirements
- Identify specific files and code sections that demonstrate compliance or violations
- Consider the integration's declared quality tier when applying rules
- To fetch the integration docs, use WebFetch to fetch from `https://raw.githubusercontent.com/home-assistant/home-assistant.io/refs/heads/current/source/_integrations/<integration domain>.markdown`
- To fetch information about a PyPI package, use the URL `https://pypi.org/pypi/<package>/json`
5. **Reporting Findings**: Provide a comprehensive verification report that includes:
- **Rule Summary**: Brief description of what the rule requires
- **Compliance Status**: Clear pass/fail/exempt determination
- **Evidence**: Specific code examples showing compliance or violations
- **Issues Found**: Detailed list of any non-compliance issues with file locations
- **Recommendations**: Actionable steps to achieve compliance if needed
- **Exemption Analysis**: If applicable, whether the exemption is justified
When examining code, you will:
- Look for exact implementation patterns specified in the rule
- Verify all required components are present and properly configured
- Check for common mistakes and anti-patterns
- Consider edge cases and error handling requirements
- Validate that implementations follow Home Assistant conventions
You will be thorough but focused, examining only the aspects relevant to the specific rule being verified. You will provide clear, actionable feedback that helps developers understand both what needs to be fixed and why it matters for integration quality.
If you cannot access the rule documentation or find the integration code, clearly state what information is missing and what you would need to complete the verification.
Remember that quality scale rules are cumulative - Bronze rules apply to all integrations with a quality scale, Silver rules apply to Silver+ integrations, and so on. Always consider the integration's target quality level when determining which rules should be enforced.
+1
View File
@@ -58,6 +58,7 @@ base_platforms: &base_platforms
# Extra components that trigger the full suite
components: &components
- homeassistant/components/alexa/**
- homeassistant/components/analytics/**
- homeassistant/components/application_credentials/**
- homeassistant/components/assist_pipeline/**
- homeassistant/components/auth/**
+2
View File
@@ -8,6 +8,8 @@
"PYTHONASYNCIODEBUG": "1"
},
"features": {
// Node feature required for Claude Code until fixed https://github.com/anthropics/devcontainer-features/issues/28
"ghcr.io/devcontainers/features/node:1": {},
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0": {},
"ghcr.io/devcontainers/features/github-cli:1": {}
},
+2 -1
View File
@@ -14,7 +14,8 @@ tests
# Other virtualization methods
venv
.venv
.vagrant
# Temporary files
**/__pycache__
**/__pycache__
+5
View File
@@ -55,8 +55,12 @@
creating the PR. If you're unsure about any of them, don't hesitate to ask.
We're here to help! This is simply a reminder of what we are going to look
for before merging your code.
AI tools are welcome, but contributors are responsible for *fully*
understanding the code before submitting a PR.
-->
- [ ] I understand the code I am submitting and can explain how it works.
- [ ] The code change is tested and works locally.
- [ ] Local tests pass. **Your PR cannot be merged unless tests pass**
- [ ] There is no commented out code in this PR.
@@ -64,6 +68,7 @@
- [ ] I have followed the [perfect PR recommendations][perfect-pr]
- [ ] The code has been formatted using Ruff (`ruff format homeassistant tests`)
- [ ] Tests have been added to verify that the new code works.
- [ ] Any generated code has been carefully reviewed for correctness and compliance with project standards.
If user exposed functionality or configuration variables are added/changed:
+16 -3
View File
@@ -1073,7 +1073,11 @@ async def test_flow_connection_error(hass, mock_api_error):
### Entity Testing Patterns
```python
@pytest.mark.parametrize("init_integration", [Platform.SENSOR], indirect=True)
@pytest.fixture
def platforms() -> list[Platform]:
"""Overridden fixture to specify platforms to test."""
return [Platform.SENSOR] # Or another specific platform as needed.
@pytest.mark.usefixtures("entity_registry_enabled_by_default", "init_integration")
async def test_entities(
hass: HomeAssistant,
@@ -1120,16 +1124,25 @@ def mock_device_api() -> Generator[MagicMock]:
)
yield api
@pytest.fixture
def platforms() -> list[Platform]:
"""Fixture to specify platforms to test."""
return PLATFORMS
@pytest.fixture
async def init_integration(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_device_api: MagicMock,
platforms: list[Platform],
) -> MockConfigEntry:
"""Set up the integration for testing."""
mock_config_entry.add_to_hass(hass)
await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
with patch("homeassistant.components.my_integration.PLATFORMS", platforms):
await hass.config_entries.async_setup(mock_config_entry.entry_id)
await hass.async_block_till_done()
return mock_config_entry
```
+26 -24
View File
@@ -27,12 +27,12 @@ jobs:
publish: ${{ steps.version.outputs.publish }}
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.6.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -69,7 +69,7 @@ jobs:
run: find ./homeassistant/components/*/translations -name "*.json" | tar zcvf translations.tar.gz -T -
- name: Upload translations
uses: actions/upload-artifact@v4.6.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: translations
path: translations.tar.gz
@@ -90,11 +90,11 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v11
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: home-assistant/frontend
@@ -105,7 +105,7 @@ jobs:
- name: Download nightly wheels of intents
if: needs.init.outputs.channel == 'dev'
uses: dawidd6/action-download-artifact@v11
uses: dawidd6/action-download-artifact@ac66b43f0e6a346234dd65d4d0c8fbb31cb316e5 # v11
with:
github_token: ${{secrets.GITHUB_TOKEN}}
repo: OHF-Voice/intents-package
@@ -116,7 +116,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v5.6.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.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@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: translations
@@ -190,14 +190,15 @@ jobs:
echo "${{ github.sha }};${{ github.ref }};${{ github.event_name }};${{ github.actor }}" > rootfs/OFFICIAL_IMAGE
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.5.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
# home-assistant/builder doesn't support sha pinning
- name: Build base image
uses: home-assistant/builder@2025.03.0
uses: home-assistant/builder@2025.09.0
with:
args: |
$BUILD_ARGS \
@@ -242,7 +243,7 @@ jobs:
- green
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set build additional args
run: |
@@ -256,14 +257,15 @@ jobs:
fi
- name: Login to GitHub Container Registry
uses: docker/login-action@v3.5.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
# home-assistant/builder doesn't support sha pinning
- name: Build base image
uses: home-assistant/builder@2025.03.0
uses: home-assistant/builder@2025.09.0
with:
args: |
$BUILD_ARGS \
@@ -279,7 +281,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Initialize git
uses: home-assistant/actions/helpers/git-init@master
@@ -321,23 +323,23 @@ jobs:
registry: ["ghcr.io/home-assistant", "docker.io/homeassistant"]
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Install Cosign
uses: sigstore/cosign-installer@v3.9.2
uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0
with:
cosign-release: "v2.2.3"
- name: Login to DockerHub
if: matrix.registry == 'docker.io/homeassistant'
uses: docker/login-action@v3.5.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
if: matrix.registry == 'ghcr.io/home-assistant'
uses: docker/login-action@v3.5.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -454,15 +456,15 @@ jobs:
if: github.repository_owner == 'home-assistant' && needs.init.outputs.publish == 'true'
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.6.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Download translations
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: translations
@@ -480,7 +482,7 @@ jobs:
python -m build
- name: Upload package to PyPI
uses: pypa/gh-action-pypi-publish@v1.12.4
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
skip-existing: true
@@ -502,7 +504,7 @@ jobs:
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Login to GitHub Container Registry
uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3.5.0
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
@@ -531,7 +533,7 @@ jobs:
- name: Generate artifact attestation
if: needs.init.outputs.channel != 'dev' && needs.init.outputs.publish == 'true'
uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
uses: actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a # v3.0.0
with:
subject-name: ${{ env.HASSFEST_IMAGE_NAME }}
subject-digest: ${{ steps.push.outputs.digest }}
+296 -466
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -21,14 +21,14 @@ jobs:
steps:
- name: Check out code from GitHub
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Initialize CodeQL
uses: github/codeql-action/init@v3.29.9
uses: github/codeql-action/init@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3.29.9
uses: github/codeql-action/analyze@f443b600d91635bebf5b0d9ebc620189c0d6fba5 # v4.30.8
with:
category: "/language:python"
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check if integration label was added and extract details
id: extract
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
// Debug: Log the event payload
@@ -113,7 +113,7 @@ jobs:
- name: Fetch similar issues
id: fetch_similar
if: steps.extract.outputs.should_continue == 'true'
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
INTEGRATION_LABELS: ${{ steps.extract.outputs.integration_labels }}
CURRENT_NUMBER: ${{ steps.extract.outputs.current_number }}
@@ -231,7 +231,7 @@ jobs:
- name: Detect duplicates using AI
id: ai_detection
if: steps.extract.outputs.should_continue == 'true' && steps.fetch_similar.outputs.has_similar == 'true'
uses: actions/ai-inference@v2.0.0
uses: actions/ai-inference@a1c11829223a786afe3b5663db904a3aa1eac3a2 # v2.0.1
with:
model: openai/gpt-4o
system-prompt: |
@@ -280,7 +280,7 @@ jobs:
- name: Post duplicate detection results
id: post_results
if: steps.extract.outputs.should_continue == 'true' && steps.fetch_similar.outputs.has_similar == 'true'
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
AI_RESPONSE: ${{ steps.ai_detection.outputs.response }}
SIMILAR_ISSUES: ${{ steps.fetch_similar.outputs.similar_issues }}
@@ -16,7 +16,7 @@ jobs:
steps:
- name: Check issue language
id: detect_language
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
@@ -57,7 +57,7 @@ jobs:
- name: Detect language using AI
id: ai_language_detection
if: steps.detect_language.outputs.should_continue == 'true'
uses: actions/ai-inference@v2.0.0
uses: actions/ai-inference@a1c11829223a786afe3b5663db904a3aa1eac3a2 # v2.0.1
with:
model: openai/gpt-4o-mini
system-prompt: |
@@ -90,7 +90,7 @@ jobs:
- name: Process non-English issues
if: steps.detect_language.outputs.should_continue == 'true'
uses: actions/github-script@v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
AI_RESPONSE: ${{ steps.ai_language_detection.outputs.response }}
ISSUE_NUMBER: ${{ steps.detect_language.outputs.issue_number }}
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
if: github.repository_owner == 'home-assistant'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5.0.1
- uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1
with:
github-token: ${{ github.token }}
issue-inactive-days: "30"
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
if: github.event.issue.type.name == 'Task'
steps:
- name: Check if user is authorized
uses: actions/github-script@v7
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const issueAuthor = context.payload.issue.user.login;
+3 -3
View File
@@ -17,7 +17,7 @@ jobs:
# - No PRs marked as no-stale
# - No issues (-1)
- name: 60 days stale PRs policy
uses: actions/stale@v9.1.0
uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
days-before-stale: 60
@@ -57,7 +57,7 @@ jobs:
# - No issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: 90 days stale issues
uses: actions/stale@v9.1.0
uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
repo-token: ${{ steps.token.outputs.token }}
days-before-stale: 90
@@ -87,7 +87,7 @@ jobs:
# - No Issues marked as no-stale or help-wanted
# - No PRs (-1)
- name: Needs more information stale issues policy
uses: actions/stale@v9.1.0
uses: actions/stale@5f858e3efba33a5ca4407a664cc011ad407f2008 # v10.1.0
with:
repo-token: ${{ steps.token.outputs.token }}
only-labels: "needs-more-information"
+2 -2
View File
@@ -19,10 +19,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v5.6.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
+19 -17
View File
@@ -32,11 +32,11 @@ jobs:
architectures: ${{ steps.info.outputs.architectures }}
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.6.0
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -91,7 +91,7 @@ jobs:
) > build_constraints.txt
- name: Upload env_file
uses: actions/upload-artifact@v4.6.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: env_file
path: ./.env_file
@@ -99,14 +99,14 @@ jobs:
overwrite: true
- name: Upload build_constraints
uses: actions/upload-artifact@v4.6.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: build_constraints
path: ./build_constraints.txt
overwrite: true
- name: Upload requirements_diff
uses: actions/upload-artifact@v4.6.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: requirements_diff
path: ./requirements_diff.txt
@@ -118,7 +118,7 @@ jobs:
python -m script.gen_requirements_all ci
- name: Upload requirements_all_wheels
uses: actions/upload-artifact@v4.6.2
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: requirements_all_wheels
path: ./requirements_all_wheels_*.txt
@@ -135,20 +135,20 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Download env_file
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: env_file
- name: Download build_constraints
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: build_constraints
- name: Download requirements_diff
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: requirements_diff
@@ -158,8 +158,9 @@ jobs:
sed -i "/uv/d" requirements.txt
sed -i "/uv/d" requirements_diff.txt
# home-assistant/wheels doesn't support sha pinning
- name: Build wheels
uses: home-assistant/wheels@2025.07.0
uses: home-assistant/wheels@2025.09.1
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
@@ -184,25 +185,25 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v5.0.0
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Download env_file
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: env_file
- name: Download build_constraints
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: build_constraints
- name: Download requirements_diff
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: requirements_diff
- name: Download requirements_all_wheels
uses: actions/download-artifact@v5.0.0
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
with:
name: requirements_all_wheels
@@ -218,8 +219,9 @@ jobs:
sed -i "/uv/d" requirements.txt
sed -i "/uv/d" requirements_diff.txt
# home-assistant/wheels doesn't support sha pinning
- name: Build wheels
uses: home-assistant/wheels@2025.07.0
uses: home-assistant/wheels@2025.09.1
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
+1 -2
View File
@@ -79,7 +79,6 @@ junit.xml
.project
.pydevproject
.python-version
.tool-versions
# emacs auto backups
@@ -140,5 +139,5 @@ tmp_cache
pytest_buckets.txt
# AI tooling
.claude
.claude/settings.local.json
+1 -1
View File
@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.1
rev: v0.13.0
hooks:
- id: ruff-check
args:
+1
View File
@@ -0,0 +1 @@
3.13
+11
View File
@@ -142,6 +142,7 @@ homeassistant.components.cloud.*
homeassistant.components.co2signal.*
homeassistant.components.comelit.*
homeassistant.components.command_line.*
homeassistant.components.compit.*
homeassistant.components.config.*
homeassistant.components.configurator.*
homeassistant.components.cookidoo.*
@@ -169,6 +170,7 @@ homeassistant.components.dnsip.*
homeassistant.components.doorbird.*
homeassistant.components.dormakaba_dkey.*
homeassistant.components.downloader.*
homeassistant.components.droplet.*
homeassistant.components.dsmr.*
homeassistant.components.duckdns.*
homeassistant.components.dunehd.*
@@ -201,6 +203,7 @@ homeassistant.components.feedreader.*
homeassistant.components.file_upload.*
homeassistant.components.filesize.*
homeassistant.components.filter.*
homeassistant.components.firefly_iii.*
homeassistant.components.fitbit.*
homeassistant.components.flexit_bacnet.*
homeassistant.components.flux_led.*
@@ -218,6 +221,7 @@ homeassistant.components.generic_thermostat.*
homeassistant.components.geo_location.*
homeassistant.components.geocaching.*
homeassistant.components.gios.*
homeassistant.components.github.*
homeassistant.components.glances.*
homeassistant.components.go2rtc.*
homeassistant.components.goalzero.*
@@ -307,6 +311,7 @@ homeassistant.components.ld2410_ble.*
homeassistant.components.led_ble.*
homeassistant.components.lektrico.*
homeassistant.components.letpot.*
homeassistant.components.libre_hardware_monitor.*
homeassistant.components.lidarr.*
homeassistant.components.lifx.*
homeassistant.components.light.*
@@ -322,6 +327,7 @@ homeassistant.components.london_underground.*
homeassistant.components.lookin.*
homeassistant.components.lovelace.*
homeassistant.components.luftdaten.*
homeassistant.components.lunatone.*
homeassistant.components.madvr.*
homeassistant.components.manual.*
homeassistant.components.mastodon.*
@@ -382,6 +388,7 @@ homeassistant.components.openai_conversation.*
homeassistant.components.openexchangerates.*
homeassistant.components.opensky.*
homeassistant.components.openuv.*
homeassistant.components.opnsense.*
homeassistant.components.opower.*
homeassistant.components.oralb.*
homeassistant.components.otbr.*
@@ -399,6 +406,7 @@ homeassistant.components.person.*
homeassistant.components.pi_hole.*
homeassistant.components.ping.*
homeassistant.components.plugwise.*
homeassistant.components.portainer.*
homeassistant.components.powerfox.*
homeassistant.components.powerwall.*
homeassistant.components.private_ble_device.*
@@ -438,6 +446,7 @@ homeassistant.components.rituals_perfume_genie.*
homeassistant.components.roborock.*
homeassistant.components.roku.*
homeassistant.components.romy.*
homeassistant.components.route_b_smart_meter.*
homeassistant.components.rpi_power.*
homeassistant.components.rss_feed_template.*
homeassistant.components.russound_rio.*
@@ -458,6 +467,7 @@ homeassistant.components.sensorpush_cloud.*
homeassistant.components.sensoterra.*
homeassistant.components.senz.*
homeassistant.components.sfr_box.*
homeassistant.components.sftp_storage.*
homeassistant.components.shell_command.*
homeassistant.components.shelly.*
homeassistant.components.shopping_list.*
@@ -546,6 +556,7 @@ homeassistant.components.vacuum.*
homeassistant.components.vallox.*
homeassistant.components.valve.*
homeassistant.components.velbus.*
homeassistant.components.vivotek.*
homeassistant.components.vlc_telnet.*
homeassistant.components.vodafone_station.*
homeassistant.components.volvo.*
Symlink
+1
View File
@@ -0,0 +1 @@
.github/copilot-instructions.md
Generated
+84 -51
View File
@@ -46,6 +46,8 @@ build.json @home-assistant/supervisor
/tests/components/accuweather/ @bieniu
/homeassistant/components/acmeda/ @atmurray
/tests/components/acmeda/ @atmurray
/homeassistant/components/actron_air/ @kclif9 @JagadishDhanamjayam
/tests/components/actron_air/ @kclif9 @JagadishDhanamjayam
/homeassistant/components/adax/ @danielhiversen @lazytarget
/tests/components/adax/ @danielhiversen @lazytarget
/homeassistant/components/adguard/ @frenck
@@ -87,6 +89,8 @@ build.json @home-assistant/supervisor
/tests/components/airzone/ @Noltari
/homeassistant/components/airzone_cloud/ @Noltari
/tests/components/airzone_cloud/ @Noltari
/homeassistant/components/aladdin_connect/ @swcloudgenie
/tests/components/aladdin_connect/ @swcloudgenie
/homeassistant/components/alarm_control_panel/ @home-assistant/core
/tests/components/alarm_control_panel/ @home-assistant/core
/homeassistant/components/alert/ @home-assistant/core @frenck
@@ -105,8 +109,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/ambient_station/ @bachya
/tests/components/ambient_station/ @bachya
/homeassistant/components/amcrest/ @flacjacket
/homeassistant/components/analytics/ @home-assistant/core @ludeeus
/tests/components/analytics/ @home-assistant/core @ludeeus
/homeassistant/components/analytics/ @home-assistant/core
/tests/components/analytics/ @home-assistant/core
/homeassistant/components/analytics_insights/ @joostlek
/tests/components/analytics_insights/ @joostlek
/homeassistant/components/android_ip_webcam/ @engrbm87
@@ -152,10 +156,10 @@ build.json @home-assistant/supervisor
/tests/components/arve/ @ikalnyi
/homeassistant/components/aseko_pool_live/ @milanmeu
/tests/components/aseko_pool_live/ @milanmeu
/homeassistant/components/assist_pipeline/ @balloob @synesthesiam
/tests/components/assist_pipeline/ @balloob @synesthesiam
/homeassistant/components/assist_satellite/ @home-assistant/core @synesthesiam
/tests/components/assist_satellite/ @home-assistant/core @synesthesiam
/homeassistant/components/assist_pipeline/ @synesthesiam @arturpragacz
/tests/components/assist_pipeline/ @synesthesiam @arturpragacz
/homeassistant/components/assist_satellite/ @home-assistant/core @synesthesiam @arturpragacz
/tests/components/assist_satellite/ @home-assistant/core @synesthesiam @arturpragacz
/homeassistant/components/asuswrt/ @kennedyshead @ollo69 @Vaskivskyi
/tests/components/asuswrt/ @kennedyshead @ollo69 @Vaskivskyi
/homeassistant/components/atag/ @MatsNL
@@ -290,14 +294,16 @@ build.json @home-assistant/supervisor
/tests/components/command_line/ @gjohansson-ST
/homeassistant/components/compensation/ @Petro31
/tests/components/compensation/ @Petro31
/homeassistant/components/compit/ @Przemko92
/tests/components/compit/ @Przemko92
/homeassistant/components/config/ @home-assistant/core
/tests/components/config/ @home-assistant/core
/homeassistant/components/configurator/ @home-assistant/core
/tests/components/configurator/ @home-assistant/core
/homeassistant/components/control4/ @lawtancool
/tests/components/control4/ @lawtancool
/homeassistant/components/conversation/ @home-assistant/core @synesthesiam
/tests/components/conversation/ @home-assistant/core @synesthesiam
/homeassistant/components/conversation/ @home-assistant/core @synesthesiam @arturpragacz
/tests/components/conversation/ @home-assistant/core @synesthesiam @arturpragacz
/homeassistant/components/cookidoo/ @miaucl
/tests/components/cookidoo/ @miaucl
/homeassistant/components/coolmaster/ @OnFreund
@@ -312,6 +318,8 @@ build.json @home-assistant/supervisor
/tests/components/crownstone/ @Crownstone @RicArch97
/homeassistant/components/cups/ @fabaff
/tests/components/cups/ @fabaff
/homeassistant/components/cync/ @Kinachi249
/tests/components/cync/ @Kinachi249
/homeassistant/components/daikin/ @fredrike
/tests/components/daikin/ @fredrike
/homeassistant/components/date/ @home-assistant/core
@@ -375,6 +383,8 @@ build.json @home-assistant/supervisor
/tests/components/dremel_3d_printer/ @tkdrob
/homeassistant/components/drop_connect/ @ChandlerSystems @pfrazer
/tests/components/drop_connect/ @ChandlerSystems @pfrazer
/homeassistant/components/droplet/ @sarahseidman
/tests/components/droplet/ @sarahseidman
/homeassistant/components/dsmr/ @Robbie1221
/tests/components/dsmr/ @Robbie1221
/homeassistant/components/dsmr_reader/ @sorted-bits @glodenox @erwindouna
@@ -404,6 +414,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/egardia/ @jeroenterheerdt
/homeassistant/components/eheimdigital/ @autinerd
/tests/components/eheimdigital/ @autinerd
/homeassistant/components/ekeybionyx/ @richardpolzer
/tests/components/ekeybionyx/ @richardpolzer
/homeassistant/components/electrasmart/ @jafar-atili
/tests/components/electrasmart/ @jafar-atili
/homeassistant/components/electric_kiwi/ @mikey0000
@@ -438,8 +450,6 @@ build.json @home-assistant/supervisor
/tests/components/energyzero/ @klaasnicolaas
/homeassistant/components/enigma2/ @autinerd
/tests/components/enigma2/ @autinerd
/homeassistant/components/enocean/ @bdurrer
/tests/components/enocean/ @bdurrer
/homeassistant/components/enphase_envoy/ @bdraco @cgarwood @catsmanac
/tests/components/enphase_envoy/ @bdraco @cgarwood @catsmanac
/homeassistant/components/entur_public_transport/ @hfurubotten
@@ -462,8 +472,6 @@ build.json @home-assistant/supervisor
/tests/components/eufylife_ble/ @bdr99
/homeassistant/components/event/ @home-assistant/core
/tests/components/event/ @home-assistant/core
/homeassistant/components/evil_genius_labs/ @balloob
/tests/components/evil_genius_labs/ @balloob
/homeassistant/components/evohome/ @zxdavb
/tests/components/evohome/ @zxdavb
/homeassistant/components/ezviz/ @RenierM26
@@ -486,6 +494,8 @@ build.json @home-assistant/supervisor
/tests/components/filesize/ @gjohansson-ST
/homeassistant/components/filter/ @dgomes
/tests/components/filter/ @dgomes
/homeassistant/components/firefly_iii/ @erwindouna
/tests/components/firefly_iii/ @erwindouna
/homeassistant/components/fireservicerota/ @cyberjunky
/tests/components/fireservicerota/ @cyberjunky
/homeassistant/components/firmata/ @DaAwesomeP
@@ -513,8 +523,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/forked_daapd/ @uvjustin
/tests/components/forked_daapd/ @uvjustin
/homeassistant/components/fortios/ @kimfrellsen
/homeassistant/components/foscam/ @krmarien
/tests/components/foscam/ @krmarien
/homeassistant/components/foscam/ @Foscam-wangzhengyu
/tests/components/foscam/ @Foscam-wangzhengyu
/homeassistant/components/freebox/ @hacf-fr @Quentame
/tests/components/freebox/ @hacf-fr @Quentame
/homeassistant/components/freedompro/ @stefano055415
@@ -609,6 +619,8 @@ build.json @home-assistant/supervisor
/tests/components/greeneye_monitor/ @jkeljo
/homeassistant/components/group/ @home-assistant/core
/tests/components/group/ @home-assistant/core
/homeassistant/components/growatt_server/ @johanzander
/tests/components/growatt_server/ @johanzander
/homeassistant/components/guardian/ @bachya
/tests/components/guardian/ @bachya
/homeassistant/components/habitica/ @tr4nt0r
@@ -648,6 +660,8 @@ build.json @home-assistant/supervisor
/tests/components/homeassistant/ @home-assistant/core
/homeassistant/components/homeassistant_alerts/ @home-assistant/core
/tests/components/homeassistant_alerts/ @home-assistant/core
/homeassistant/components/homeassistant_connect_zbt2/ @home-assistant/core
/tests/components/homeassistant_connect_zbt2/ @home-assistant/core
/homeassistant/components/homeassistant_green/ @home-assistant/core
/tests/components/homeassistant_green/ @home-assistant/core
/homeassistant/components/homeassistant_hardware/ @home-assistant/core
@@ -676,8 +690,8 @@ build.json @home-assistant/supervisor
/tests/components/http/ @home-assistant/core
/homeassistant/components/huawei_lte/ @scop @fphammerle
/tests/components/huawei_lte/ @scop @fphammerle
/homeassistant/components/hue/ @balloob @marcelveldt
/tests/components/hue/ @balloob @marcelveldt
/homeassistant/components/hue/ @marcelveldt
/tests/components/hue/ @marcelveldt
/homeassistant/components/huisbaasje/ @dennisschroer
/tests/components/huisbaasje/ @dennisschroer
/homeassistant/components/humidifier/ @home-assistant/core @Shulyaka
@@ -749,11 +763,11 @@ build.json @home-assistant/supervisor
/tests/components/integration/ @dgomes
/homeassistant/components/intellifire/ @jeeftor
/tests/components/intellifire/ @jeeftor
/homeassistant/components/intent/ @home-assistant/core @synesthesiam
/tests/components/intent/ @home-assistant/core @synesthesiam
/homeassistant/components/intent/ @home-assistant/core @synesthesiam @arturpragacz
/tests/components/intent/ @home-assistant/core @synesthesiam @arturpragacz
/homeassistant/components/intesishome/ @jnimmo
/homeassistant/components/iometer/ @MaestroOnICe
/tests/components/iometer/ @MaestroOnICe
/homeassistant/components/iometer/ @jukrebs
/tests/components/iometer/ @jukrebs
/homeassistant/components/ios/ @robbiet480
/tests/components/ios/ @robbiet480
/homeassistant/components/iotawatt/ @gtdiehl @jyavenard
@@ -768,6 +782,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/iqvia/ @bachya
/tests/components/iqvia/ @bachya
/homeassistant/components/irish_rail_transport/ @ttroy50
/homeassistant/components/irm_kmi/ @jdejaegh
/tests/components/irm_kmi/ @jdejaegh
/homeassistant/components/iron_os/ @tr4nt0r
/tests/components/iron_os/ @tr4nt0r
/homeassistant/components/isal/ @bdraco
@@ -858,6 +874,8 @@ build.json @home-assistant/supervisor
/tests/components/lg_netcast/ @Drafteed @splinter98
/homeassistant/components/lg_thinq/ @LG-ThinQ-Integration
/tests/components/lg_thinq/ @LG-ThinQ-Integration
/homeassistant/components/libre_hardware_monitor/ @Sab44
/tests/components/libre_hardware_monitor/ @Sab44
/homeassistant/components/lidarr/ @tkdrob
/tests/components/lidarr/ @tkdrob
/homeassistant/components/lifx/ @Djelibeybi
@@ -896,6 +914,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/luci/ @mzdrale
/homeassistant/components/luftdaten/ @fabaff @frenck
/tests/components/luftdaten/ @fabaff @frenck
/homeassistant/components/lunatone/ @MoonDevLT
/tests/components/lunatone/ @MoonDevLT
/homeassistant/components/lupusec/ @majuss @suaveolent
/tests/components/lupusec/ @majuss @suaveolent
/homeassistant/components/lutron/ @cdheiser @wilburCForce
@@ -941,6 +961,8 @@ build.json @home-assistant/supervisor
/tests/components/met_eireann/ @DylanGore
/homeassistant/components/meteo_france/ @hacf-fr @oncleben31 @Quentame
/tests/components/meteo_france/ @hacf-fr @oncleben31 @Quentame
/homeassistant/components/meteo_lt/ @xE1H
/tests/components/meteo_lt/ @xE1H
/homeassistant/components/meteoalarm/ @rolfberkenbosch
/homeassistant/components/meteoclimatic/ @adrianmo
/tests/components/meteoclimatic/ @adrianmo
@@ -1011,7 +1033,8 @@ build.json @home-assistant/supervisor
/tests/components/nanoleaf/ @milanmeu @joostlek
/homeassistant/components/nasweb/ @nasWebio
/tests/components/nasweb/ @nasWebio
/homeassistant/components/nederlandse_spoorwegen/ @YarmoM
/homeassistant/components/nederlandse_spoorwegen/ @YarmoM @heindrichpaul
/tests/components/nederlandse_spoorwegen/ @YarmoM @heindrichpaul
/homeassistant/components/ness_alarm/ @nickw444
/tests/components/ness_alarm/ @nickw444
/homeassistant/components/nest/ @allenporter
@@ -1046,6 +1069,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/nilu/ @hfurubotten
/homeassistant/components/nina/ @DeerMaximum
/tests/components/nina/ @DeerMaximum
/homeassistant/components/nintendo_parental_controls/ @pantherale0
/tests/components/nintendo_parental_controls/ @pantherale0
/homeassistant/components/nissan_leaf/ @filcole
/homeassistant/components/noaa_tides/ @jdelaney72
/homeassistant/components/nobo_hub/ @echoromeo @oyvindwe
@@ -1106,8 +1131,6 @@ build.json @home-assistant/supervisor
/tests/components/open_meteo/ @frenck
/homeassistant/components/open_router/ @joostlek
/tests/components/open_router/ @joostlek
/homeassistant/components/openai_conversation/ @balloob
/tests/components/openai_conversation/ @balloob
/homeassistant/components/openerz/ @misialq
/tests/components/openerz/ @misialq
/homeassistant/components/openexchangerates/ @MartinHjelmare
@@ -1116,6 +1139,8 @@ build.json @home-assistant/supervisor
/tests/components/opengarage/ @danielhiversen
/homeassistant/components/openhome/ @bazwilliams
/tests/components/openhome/ @bazwilliams
/homeassistant/components/openrgb/ @felipecrs
/tests/components/openrgb/ @felipecrs
/homeassistant/components/opensky/ @joostlek
/tests/components/opensky/ @joostlek
/homeassistant/components/opentherm_gw/ @mvn23
@@ -1179,12 +1204,14 @@ build.json @home-assistant/supervisor
/tests/components/plex/ @jjlawren
/homeassistant/components/plugwise/ @CoMPaTech @bouwew
/tests/components/plugwise/ @CoMPaTech @bouwew
/homeassistant/components/plum_lightpad/ @ColinHarrington @prystupa
/tests/components/plum_lightpad/ @ColinHarrington @prystupa
/homeassistant/components/point/ @fredrike
/tests/components/point/ @fredrike
/homeassistant/components/pooldose/ @lmaertin
/tests/components/pooldose/ @lmaertin
/homeassistant/components/poolsense/ @haemishkyd
/tests/components/poolsense/ @haemishkyd
/homeassistant/components/portainer/ @erwindouna
/tests/components/portainer/ @erwindouna
/homeassistant/components/powerfox/ @klaasnicolaas
/tests/components/powerfox/ @klaasnicolaas
/homeassistant/components/powerwall/ @bdraco @jrester @daniel-simpson
@@ -1204,8 +1231,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/proximity/ @mib1185
/tests/components/proximity/ @mib1185
/homeassistant/components/proxmoxve/ @jhollowe @Corbeno
/homeassistant/components/prusalink/ @balloob
/tests/components/prusalink/ @balloob
/homeassistant/components/ps4/ @ktnrg45
/tests/components/ps4/ @ktnrg45
/homeassistant/components/pterodactyl/ @elmurato
@@ -1299,8 +1324,8 @@ build.json @home-assistant/supervisor
/tests/components/rflink/ @javicalle
/homeassistant/components/rfxtrx/ @danielhiversen @elupus @RobBie1221
/tests/components/rfxtrx/ @danielhiversen @elupus @RobBie1221
/homeassistant/components/rhasspy/ @balloob @synesthesiam
/tests/components/rhasspy/ @balloob @synesthesiam
/homeassistant/components/rhasspy/ @synesthesiam
/tests/components/rhasspy/ @synesthesiam
/homeassistant/components/ridwell/ @bachya
/tests/components/ridwell/ @bachya
/homeassistant/components/ring/ @sdb9696
@@ -1321,6 +1346,8 @@ build.json @home-assistant/supervisor
/tests/components/roomba/ @pschmitt @cyr-ius @shenxn @Orhideous
/homeassistant/components/roon/ @pavoni
/tests/components/roon/ @pavoni
/homeassistant/components/route_b_smart_meter/ @SeraphicRav
/tests/components/route_b_smart_meter/ @SeraphicRav
/homeassistant/components/rpi_power/ @shenxn @swetoast
/tests/components/rpi_power/ @shenxn @swetoast
/homeassistant/components/rss_feed_template/ @home-assistant/core
@@ -1343,6 +1370,8 @@ build.json @home-assistant/supervisor
/tests/components/samsungtv/ @chemelli74 @epenet
/homeassistant/components/sanix/ @tomaszsluszniak
/tests/components/sanix/ @tomaszsluszniak
/homeassistant/components/satel_integra/ @Tommatheussen
/tests/components/satel_integra/ @Tommatheussen
/homeassistant/components/scene/ @home-assistant/core
/tests/components/scene/ @home-assistant/core
/homeassistant/components/schedule/ @home-assistant/core
@@ -1388,12 +1417,14 @@ build.json @home-assistant/supervisor
/tests/components/seventeentrack/ @shaiu
/homeassistant/components/sfr_box/ @epenet
/tests/components/sfr_box/ @epenet
/homeassistant/components/sharkiq/ @JeffResc @funkybunch
/tests/components/sharkiq/ @JeffResc @funkybunch
/homeassistant/components/sftp_storage/ @maretodoric
/tests/components/sftp_storage/ @maretodoric
/homeassistant/components/sharkiq/ @JeffResc @funkybunch @TheOneOgre
/tests/components/sharkiq/ @JeffResc @funkybunch @TheOneOgre
/homeassistant/components/shell_command/ @home-assistant/core
/tests/components/shell_command/ @home-assistant/core
/homeassistant/components/shelly/ @balloob @bieniu @thecode @chemelli74 @bdraco
/tests/components/shelly/ @balloob @bieniu @thecode @chemelli74 @bdraco
/homeassistant/components/shelly/ @bieniu @thecode @chemelli74 @bdraco
/tests/components/shelly/ @bieniu @thecode @chemelli74 @bdraco
/homeassistant/components/shodan/ @fabaff
/homeassistant/components/sia/ @eavanvalkenburg
/tests/components/sia/ @eavanvalkenburg
@@ -1454,8 +1485,8 @@ build.json @home-assistant/supervisor
/tests/components/snoo/ @Lash-L
/homeassistant/components/snooz/ @AustinBrunkhorst
/tests/components/snooz/ @AustinBrunkhorst
/homeassistant/components/solaredge/ @frenck @bdraco
/tests/components/solaredge/ @frenck @bdraco
/homeassistant/components/solaredge/ @frenck @bdraco @tronikos
/tests/components/solaredge/ @frenck @bdraco @tronikos
/homeassistant/components/solaredge_local/ @drobtravels @scheric
/homeassistant/components/solarlog/ @Ernst79 @dontinelli
/tests/components/solarlog/ @Ernst79 @dontinelli
@@ -1522,8 +1553,8 @@ build.json @home-assistant/supervisor
/tests/components/switchbee/ @jafar-atili
/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/switchbot_cloud/ @SeraphicRav @laurence-presland @Gigatrappeur @XiaoLing-git
/tests/components/switchbot_cloud/ @SeraphicRav @laurence-presland @Gigatrappeur @XiaoLing-git
/homeassistant/components/switcher_kis/ @thecode @YogevBokobza
/tests/components/switcher_kis/ @thecode @YogevBokobza
/homeassistant/components/switchmate/ @danielhiversen @qiz-li
@@ -1540,8 +1571,8 @@ build.json @home-assistant/supervisor
/tests/components/systemmonitor/ @gjohansson-ST
/homeassistant/components/tado/ @erwindouna
/tests/components/tado/ @erwindouna
/homeassistant/components/tag/ @balloob @dmulcahey
/tests/components/tag/ @balloob @dmulcahey
/homeassistant/components/tag/ @home-assistant/core
/tests/components/tag/ @home-assistant/core
/homeassistant/components/tailscale/ @frenck
/tests/components/tailscale/ @frenck
/homeassistant/components/tailwind/ @frenck
@@ -1668,6 +1699,8 @@ build.json @home-assistant/supervisor
/tests/components/uptime_kuma/ @tr4nt0r
/homeassistant/components/uptimerobot/ @ludeeus @chemelli74
/tests/components/uptimerobot/ @ludeeus @chemelli74
/homeassistant/components/usage_prediction/ @home-assistant/core
/tests/components/usage_prediction/ @home-assistant/core
/homeassistant/components/usb/ @bdraco
/tests/components/usb/ @bdraco
/homeassistant/components/usgs_earthquakes_feed/ @exxamalte
@@ -1686,17 +1719,19 @@ build.json @home-assistant/supervisor
/tests/components/vegehub/ @ghowevege
/homeassistant/components/velbus/ @Cereal2nd @brefra
/tests/components/velbus/ @Cereal2nd @brefra
/homeassistant/components/velux/ @Julius2342 @DeerMaximum @pawlizio
/tests/components/velux/ @Julius2342 @DeerMaximum @pawlizio
/homeassistant/components/velux/ @Julius2342 @DeerMaximum @pawlizio @wollew
/tests/components/velux/ @Julius2342 @DeerMaximum @pawlizio @wollew
/homeassistant/components/venstar/ @garbled1 @jhollowe
/tests/components/venstar/ @garbled1 @jhollowe
/homeassistant/components/versasense/ @imstevenxyz
/homeassistant/components/version/ @ludeeus
/tests/components/version/ @ludeeus
/homeassistant/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak
/tests/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak
/homeassistant/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak @sapuseven
/tests/components/vesync/ @markperdue @webdjoe @thegardenmonkey @cdnninja @iprak @sapuseven
/homeassistant/components/vicare/ @CFenner
/tests/components/vicare/ @CFenner
/homeassistant/components/victron_remote_monitoring/ @AndyTempel
/tests/components/victron_remote_monitoring/ @AndyTempel
/homeassistant/components/vilfo/ @ManneW
/tests/components/vilfo/ @ManneW
/homeassistant/components/vivotek/ @HarlemSquirrel
@@ -1706,16 +1741,14 @@ 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 @jaminh
/tests/components/voip/ @balloob @synesthesiam @jaminh
/homeassistant/components/voip/ @synesthesiam @jaminh
/tests/components/voip/ @synesthesiam @jaminh
/homeassistant/components/volumio/ @OnFreund
/tests/components/volumio/ @OnFreund
/homeassistant/components/volvo/ @thomasddn
/tests/components/volvo/ @thomasddn
/homeassistant/components/volvooncall/ @molobrakos
/tests/components/volvooncall/ @molobrakos
/homeassistant/components/vulcan/ @Antoni-Czaplicki
/tests/components/vulcan/ @Antoni-Czaplicki
/homeassistant/components/volvooncall/ @molobrakos @svrooij
/tests/components/volvooncall/ @molobrakos @svrooij
/homeassistant/components/wake_on_lan/ @ntilley905
/tests/components/wake_on_lan/ @ntilley905
/homeassistant/components/wake_word/ @home-assistant/core @synesthesiam
@@ -1780,8 +1813,8 @@ build.json @home-assistant/supervisor
/tests/components/worldclock/ @fabaff
/homeassistant/components/ws66i/ @ssaenger
/tests/components/ws66i/ @ssaenger
/homeassistant/components/wyoming/ @balloob @synesthesiam
/tests/components/wyoming/ @balloob @synesthesiam
/homeassistant/components/wyoming/ @synesthesiam
/tests/components/wyoming/ @synesthesiam
/homeassistant/components/xbox/ @hunterjm
/tests/components/xbox/ @hunterjm
/homeassistant/components/xiaomi_aqara/ @danielhiversen @syssi
+5 -4
View File
@@ -3,8 +3,7 @@ FROM mcr.microsoft.com/vscode/devcontainers/base:debian
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& apt-get update \
apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
# Additional library needed by some tests and accordingly by VScode Tests Discovery
bluez \
@@ -35,9 +34,11 @@ WORKDIR /usr/src
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
RUN uv python install 3.13.2
USER vscode
COPY .python-version ./
RUN uv python install
ENV VIRTUAL_ENV="/home/vscode/.local/ha-venv"
RUN uv venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
+5 -5
View File
@@ -1,10 +1,10 @@
image: ghcr.io/home-assistant/{arch}-homeassistant
build_from:
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base: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
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2025.10.1
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2025.10.1
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2025.10.1
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2025.10.1
i386: ghcr.io/home-assistant/i386-homeassistant-base:2025.10.1
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io
+31 -25
View File
@@ -187,36 +187,42 @@ def main() -> int:
from . import config, runner # noqa: PLC0415
safe_mode = config.safe_mode_enabled(config_dir)
# Ensure only one instance runs per config directory
with runner.ensure_single_execution(config_dir) as single_execution_lock:
# Check if another instance is already running
if single_execution_lock.exit_code is not None:
return single_execution_lock.exit_code
runtime_conf = runner.RuntimeConfig(
config_dir=config_dir,
verbose=args.verbose,
log_rotate_days=args.log_rotate_days,
log_file=args.log_file,
log_no_color=args.log_no_color,
skip_pip=args.skip_pip,
skip_pip_packages=args.skip_pip_packages,
recovery_mode=args.recovery_mode,
debug=args.debug,
open_ui=args.open_ui,
safe_mode=safe_mode,
)
safe_mode = config.safe_mode_enabled(config_dir)
fault_file_name = os.path.join(config_dir, FAULT_LOG_FILENAME)
with open(fault_file_name, mode="a", encoding="utf8") as fault_file:
faulthandler.enable(fault_file)
exit_code = runner.run(runtime_conf)
faulthandler.disable()
runtime_conf = runner.RuntimeConfig(
config_dir=config_dir,
verbose=args.verbose,
log_rotate_days=args.log_rotate_days,
log_file=args.log_file,
log_no_color=args.log_no_color,
skip_pip=args.skip_pip,
skip_pip_packages=args.skip_pip_packages,
recovery_mode=args.recovery_mode,
debug=args.debug,
open_ui=args.open_ui,
safe_mode=safe_mode,
)
# It's possible for the fault file to disappear, so suppress obvious errors
with suppress(FileNotFoundError):
if os.path.getsize(fault_file_name) == 0:
os.remove(fault_file_name)
fault_file_name = os.path.join(config_dir, FAULT_LOG_FILENAME)
with open(fault_file_name, mode="a", encoding="utf8") as fault_file:
faulthandler.enable(fault_file)
exit_code = runner.run(runtime_conf)
faulthandler.disable()
check_threads()
# It's possible for the fault file to disappear, so suppress obvious errors
with suppress(FileNotFoundError):
if os.path.getsize(fault_file_name) == 0:
os.remove(fault_file_name)
return exit_code
check_threads()
return exit_code
if __name__ == "__main__":
+1 -1
View File
@@ -27,7 +27,7 @@ from . import (
SetupFlow,
)
REQUIREMENTS = ["pyotp==2.8.0"]
REQUIREMENTS = ["pyotp==2.9.0"]
CONF_MESSAGE = "message"
+1 -1
View File
@@ -20,7 +20,7 @@ from . import (
SetupFlow,
)
REQUIREMENTS = ["pyotp==2.8.0", "PyQRCode==1.2.1"]
REQUIREMENTS = ["pyotp==2.9.0", "PyQRCode==1.2.1"]
CONFIG_SCHEMA = MULTI_FACTOR_AUTH_MODULE_SCHEMA.extend({}, extra=vol.PREVENT_EXTRA)
+15 -15
View File
@@ -616,34 +616,34 @@ async def async_enable_logging(
),
)
# Log errors to a file if we have write access to file or config dir
logger = logging.getLogger()
logger.setLevel(logging.INFO if verbose else logging.WARNING)
if log_file is None:
err_log_path = hass.config.path(ERROR_LOG_FILENAME)
default_log_path = hass.config.path(ERROR_LOG_FILENAME)
if "SUPERVISOR" in os.environ:
_LOGGER.info("Running in Supervisor, not logging to file")
# Rename the default log file if it exists, since previous versions created
# it even on Supervisor
if os.path.isfile(default_log_path):
with contextlib.suppress(OSError):
os.rename(default_log_path, f"{default_log_path}.old")
err_log_path = None
else:
err_log_path = default_log_path
else:
err_log_path = os.path.abspath(log_file)
err_path_exists = os.path.isfile(err_log_path)
err_dir = os.path.dirname(err_log_path)
# Check if we can write to the error log if it exists or that
# we can create files in the containing directory if not.
if (err_path_exists and os.access(err_log_path, os.W_OK)) or (
not err_path_exists and os.access(err_dir, os.W_OK)
):
if err_log_path:
err_handler = await hass.async_add_executor_job(
_create_log_file, err_log_path, log_rotate_days
)
err_handler.setFormatter(logging.Formatter(fmt, datefmt=FORMAT_DATETIME))
logger = logging.getLogger()
logger.addHandler(err_handler)
logger.setLevel(logging.INFO if verbose else logging.WARNING)
# Save the log file location for access by other components.
hass.data[DATA_LOGGING] = err_log_path
else:
_LOGGER.error("Unable to set up error log %s (access denied)", err_log_path)
async_activate_log_queue_handler(hass)
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "eltako",
"name": "Eltako",
"iot_standards": ["matter"]
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"domain": "fritzbox",
"name": "FRITZ!Box",
"name": "FRITZ!",
"integrations": ["fritz", "fritzbox", "fritzbox_callmonitor"]
}
-1
View File
@@ -6,7 +6,6 @@
"google_assistant_sdk",
"google_cloud",
"google_drive",
"google_gemini",
"google_generative_ai_conversation",
"google_mail",
"google_maps",
-5
View File
@@ -1,5 +0,0 @@
{
"domain": "ibm",
"name": "IBM",
"integrations": ["watson_iot", "watson_tts"]
}
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "konnected",
"name": "Konnected",
"integrations": ["konnected", "konnected_esphome"]
}
+5
View File
@@ -0,0 +1,5 @@
{
"domain": "level",
"name": "Level",
"iot_standards": ["matter"]
}
+13 -1
View File
@@ -8,14 +8,17 @@ import logging
from aioacaia.acaiascale import AcaiaScale
from aioacaia.exceptions import AcaiaDeviceNotFound, AcaiaError
from homeassistant.components.bluetooth import async_get_scanner
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_ADDRESS
from homeassistant.core import HomeAssistant
from homeassistant.helpers.debounce import Debouncer
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from .const import CONF_IS_NEW_STYLE_SCALE
SCAN_INTERVAL = timedelta(seconds=15)
UPDATE_DEBOUNCE_TIME = 0.2
_LOGGER = logging.getLogger(__name__)
@@ -37,11 +40,20 @@ class AcaiaCoordinator(DataUpdateCoordinator[None]):
config_entry=entry,
)
debouncer = Debouncer(
hass=hass,
logger=_LOGGER,
cooldown=UPDATE_DEBOUNCE_TIME,
immediate=True,
function=self.async_update_listeners,
)
self._scale = AcaiaScale(
address_or_ble_device=entry.data[CONF_ADDRESS],
name=entry.title,
is_new_style_scale=entry.data[CONF_IS_NEW_STYLE_SCALE],
notify_callback=self.async_update_listeners,
notify_callback=debouncer.async_schedule_call,
scanner=async_get_scanner(hass),
)
@property
+1 -1
View File
@@ -26,5 +26,5 @@
"iot_class": "local_push",
"loggers": ["aioacaia"],
"quality_scale": "platinum",
"requirements": ["aioacaia==0.1.14"]
"requirements": ["aioacaia==0.1.17"]
}
@@ -2,21 +2,23 @@
from __future__ import annotations
import asyncio
import logging
from accuweather import AccuWeather
from homeassistant.components.sensor import DOMAIN as SENSOR_PLATFORM
from homeassistant.const import CONF_API_KEY, CONF_NAME, Platform
from homeassistant.const import CONF_API_KEY, Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DOMAIN, UPDATE_INTERVAL_DAILY_FORECAST, UPDATE_INTERVAL_OBSERVATION
from .const import DOMAIN
from .coordinator import (
AccuWeatherConfigEntry,
AccuWeatherDailyForecastDataUpdateCoordinator,
AccuWeatherData,
AccuWeatherHourlyForecastDataUpdateCoordinator,
AccuWeatherObservationDataUpdateCoordinator,
)
@@ -28,7 +30,6 @@ PLATFORMS = [Platform.SENSOR, Platform.WEATHER]
async def async_setup_entry(hass: HomeAssistant, entry: AccuWeatherConfigEntry) -> bool:
"""Set up AccuWeather as config entry."""
api_key: str = entry.data[CONF_API_KEY]
name: str = entry.data[CONF_NAME]
location_key = entry.unique_id
@@ -41,26 +42,28 @@ async def async_setup_entry(hass: HomeAssistant, entry: AccuWeatherConfigEntry)
hass,
entry,
accuweather,
name,
"observation",
UPDATE_INTERVAL_OBSERVATION,
)
coordinator_daily_forecast = AccuWeatherDailyForecastDataUpdateCoordinator(
hass,
entry,
accuweather,
name,
"daily forecast",
UPDATE_INTERVAL_DAILY_FORECAST,
)
coordinator_hourly_forecast = AccuWeatherHourlyForecastDataUpdateCoordinator(
hass,
entry,
accuweather,
)
await coordinator_observation.async_config_entry_first_refresh()
await coordinator_daily_forecast.async_config_entry_first_refresh()
await asyncio.gather(
coordinator_observation.async_config_entry_first_refresh(),
coordinator_daily_forecast.async_config_entry_first_refresh(),
coordinator_hourly_forecast.async_config_entry_first_refresh(),
)
entry.runtime_data = AccuWeatherData(
coordinator_observation=coordinator_observation,
coordinator_daily_forecast=coordinator_daily_forecast,
coordinator_hourly_forecast=coordinator_hourly_forecast,
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
@@ -3,6 +3,7 @@
from __future__ import annotations
from asyncio import timeout
from collections.abc import Mapping
from typing import Any
from accuweather import AccuWeather, ApiError, InvalidApiKeyError, RequestsExceededError
@@ -22,6 +23,8 @@ class AccuWeatherFlowHandler(ConfigFlow, domain=DOMAIN):
"""Config flow for AccuWeather."""
VERSION = 1
_latitude: float | None = None
_longitude: float | None = None
async def async_step_user(
self, user_input: dict[str, Any] | None = None
@@ -50,6 +53,7 @@ class AccuWeatherFlowHandler(ConfigFlow, domain=DOMAIN):
await self.async_set_unique_id(
accuweather.location_key, raise_on_progress=False
)
self._abort_if_unique_id_configured()
return self.async_create_entry(
title=user_input[CONF_NAME], data=user_input
@@ -73,3 +77,46 @@ class AccuWeatherFlowHandler(ConfigFlow, domain=DOMAIN):
),
errors=errors,
)
async def async_step_reauth(
self, entry_data: Mapping[str, Any]
) -> ConfigFlowResult:
"""Handle configuration by re-auth."""
self._latitude = entry_data[CONF_LATITUDE]
self._longitude = entry_data[CONF_LONGITUDE]
return await self.async_step_reauth_confirm()
async def async_step_reauth_confirm(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Dialog that informs the user that reauth is required."""
errors: dict[str, str] = {}
if user_input is not None:
websession = async_get_clientsession(self.hass)
try:
async with timeout(10):
accuweather = AccuWeather(
user_input[CONF_API_KEY],
websession,
latitude=self._latitude,
longitude=self._longitude,
)
await accuweather.async_get_location()
except (ApiError, ClientConnectorError, TimeoutError, ClientError):
errors["base"] = "cannot_connect"
except InvalidApiKeyError:
errors["base"] = "invalid_api_key"
except RequestsExceededError:
errors["base"] = "requests_exceeded"
else:
return self.async_update_reload_and_abort(
self._get_reauth_entry(), data_updates=user_input
)
return self.async_show_form(
step_id="reauth_confirm",
data_schema=vol.Schema({vol.Required(CONF_API_KEY): str}),
errors=errors,
)
@@ -69,5 +69,6 @@ POLLEN_CATEGORY_MAP = {
4: "very_high",
5: "extreme",
}
UPDATE_INTERVAL_OBSERVATION = timedelta(minutes=40)
UPDATE_INTERVAL_OBSERVATION = timedelta(minutes=10)
UPDATE_INTERVAL_DAILY_FORECAST = timedelta(hours=6)
UPDATE_INTERVAL_HOURLY_FORECAST = timedelta(minutes=30)
@@ -3,6 +3,7 @@
from __future__ import annotations
from asyncio import timeout
from collections.abc import Awaitable, Callable
from dataclasses import dataclass
from datetime import timedelta
import logging
@@ -12,7 +13,9 @@ from accuweather import AccuWeather, ApiError, InvalidApiKeyError, RequestsExcee
from aiohttp.client_exceptions import ClientConnectorError
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.update_coordinator import (
DataUpdateCoordinator,
@@ -20,9 +23,15 @@ from homeassistant.helpers.update_coordinator import (
UpdateFailed,
)
from .const import DOMAIN, MANUFACTURER
from .const import (
DOMAIN,
MANUFACTURER,
UPDATE_INTERVAL_DAILY_FORECAST,
UPDATE_INTERVAL_HOURLY_FORECAST,
UPDATE_INTERVAL_OBSERVATION,
)
EXCEPTIONS = (ApiError, ClientConnectorError, InvalidApiKeyError, RequestsExceededError)
EXCEPTIONS = (ApiError, ClientConnectorError, RequestsExceededError)
_LOGGER = logging.getLogger(__name__)
@@ -33,6 +42,7 @@ class AccuWeatherData:
coordinator_observation: AccuWeatherObservationDataUpdateCoordinator
coordinator_daily_forecast: AccuWeatherDailyForecastDataUpdateCoordinator
coordinator_hourly_forecast: AccuWeatherHourlyForecastDataUpdateCoordinator
type AccuWeatherConfigEntry = ConfigEntry[AccuWeatherData]
@@ -43,18 +53,18 @@ class AccuWeatherObservationDataUpdateCoordinator(
):
"""Class to manage fetching AccuWeather data API."""
config_entry: AccuWeatherConfigEntry
def __init__(
self,
hass: HomeAssistant,
config_entry: AccuWeatherConfigEntry,
accuweather: AccuWeather,
name: str,
coordinator_type: str,
update_interval: timedelta,
) -> None:
"""Initialize."""
self.accuweather = accuweather
self.location_key = accuweather.location_key
name = config_entry.data[CONF_NAME]
if TYPE_CHECKING:
assert self.location_key is not None
@@ -65,8 +75,8 @@ class AccuWeatherObservationDataUpdateCoordinator(
hass,
_LOGGER,
config_entry=config_entry,
name=f"{name} ({coordinator_type})",
update_interval=update_interval,
name=f"{name} (observation)",
update_interval=UPDATE_INTERVAL_OBSERVATION,
)
async def _async_update_data(self) -> dict[str, Any]:
@@ -80,29 +90,39 @@ class AccuWeatherObservationDataUpdateCoordinator(
translation_key="current_conditions_update_error",
translation_placeholders={"error": repr(error)},
) from error
except InvalidApiKeyError as err:
raise ConfigEntryAuthFailed(
translation_domain=DOMAIN,
translation_key="auth_error",
translation_placeholders={"entry": self.config_entry.title},
) from err
_LOGGER.debug("Requests remaining: %d", self.accuweather.requests_remaining)
return result
class AccuWeatherDailyForecastDataUpdateCoordinator(
class AccuWeatherForecastDataUpdateCoordinator(
TimestampDataUpdateCoordinator[list[dict[str, Any]]]
):
"""Class to manage fetching AccuWeather data API."""
"""Base class for AccuWeather forecast."""
config_entry: AccuWeatherConfigEntry
def __init__(
self,
hass: HomeAssistant,
config_entry: AccuWeatherConfigEntry,
accuweather: AccuWeather,
name: str,
coordinator_type: str,
update_interval: timedelta,
fetch_method: Callable[..., Awaitable[list[dict[str, Any]]]],
) -> None:
"""Initialize."""
self.accuweather = accuweather
self.location_key = accuweather.location_key
self._fetch_method = fetch_method
name = config_entry.data[CONF_NAME]
if TYPE_CHECKING:
assert self.location_key is not None
@@ -118,24 +138,71 @@ class AccuWeatherDailyForecastDataUpdateCoordinator(
)
async def _async_update_data(self) -> list[dict[str, Any]]:
"""Update data via library."""
"""Update forecast data via library."""
try:
async with timeout(10):
result = await self.accuweather.async_get_daily_forecast(
language=self.hass.config.language
)
result = await self._fetch_method(language=self.hass.config.language)
except EXCEPTIONS as error:
raise UpdateFailed(
translation_domain=DOMAIN,
translation_key="forecast_update_error",
translation_placeholders={"error": repr(error)},
) from error
except InvalidApiKeyError as err:
raise ConfigEntryAuthFailed(
translation_domain=DOMAIN,
translation_key="auth_error",
translation_placeholders={"entry": self.config_entry.title},
) from err
_LOGGER.debug("Requests remaining: %d", self.accuweather.requests_remaining)
return result
class AccuWeatherDailyForecastDataUpdateCoordinator(
AccuWeatherForecastDataUpdateCoordinator
):
"""Coordinator for daily forecast."""
def __init__(
self,
hass: HomeAssistant,
config_entry: AccuWeatherConfigEntry,
accuweather: AccuWeather,
) -> None:
"""Initialize."""
super().__init__(
hass,
config_entry,
accuweather,
"daily forecast",
UPDATE_INTERVAL_DAILY_FORECAST,
fetch_method=accuweather.async_get_daily_forecast,
)
class AccuWeatherHourlyForecastDataUpdateCoordinator(
AccuWeatherForecastDataUpdateCoordinator
):
"""Coordinator for hourly forecast."""
def __init__(
self,
hass: HomeAssistant,
config_entry: AccuWeatherConfigEntry,
accuweather: AccuWeather,
) -> None:
"""Initialize."""
super().__init__(
hass,
config_entry,
accuweather,
"hourly forecast",
UPDATE_INTERVAL_HOURLY_FORECAST,
fetch_method=accuweather.async_get_hourly_forecast,
)
def _get_device_info(location_key: str, name: str) -> DeviceInfo:
"""Get device info."""
return DeviceInfo(
@@ -1,6 +1,9 @@
{
"entity": {
"sensor": {
"air_quality": {
"default": "mdi:air-filter"
},
"cloud_ceiling": {
"default": "mdi:weather-fog"
},
@@ -34,9 +37,6 @@
"thunderstorm_probability_night": {
"default": "mdi:weather-lightning"
},
"translation_key": {
"default": "mdi:air-filter"
},
"tree_pollen": {
"default": "mdi:tree-outline"
},
@@ -7,6 +7,5 @@
"integration_type": "service",
"iot_class": "cloud_polling",
"loggers": ["accuweather"],
"requirements": ["accuweather==4.2.0"],
"single_config_entry": true
"requirements": ["accuweather==4.2.2"]
}
@@ -7,6 +7,17 @@
"api_key": "[%key:common::config_flow::data::api_key%]",
"latitude": "[%key:common::config_flow::data::latitude%]",
"longitude": "[%key:common::config_flow::data::longitude%]"
},
"data_description": {
"api_key": "API key generated in the AccuWeather APIs portal."
}
},
"reauth_confirm": {
"data": {
"api_key": "[%key:common::config_flow::data::api_key%]"
},
"data_description": {
"api_key": "[%key:component::accuweather::config::step::user::data_description::api_key%]"
}
}
},
@@ -17,6 +28,10 @@
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"invalid_api_key": "[%key:common::config_flow::error::invalid_api_key%]",
"requests_exceeded": "The allowed number of requests to the AccuWeather API has been exceeded. You have to wait or change the API key."
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_location%]",
"reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]"
}
},
"entity": {
@@ -236,6 +251,9 @@
}
},
"exceptions": {
"auth_error": {
"message": "Authentication failed for {entry}, please update your API key"
},
"current_conditions_update_error": {
"message": "An error occurred while retrieving weather current conditions data from the AccuWeather API: {error}"
},
@@ -45,6 +45,7 @@ from .coordinator import (
AccuWeatherConfigEntry,
AccuWeatherDailyForecastDataUpdateCoordinator,
AccuWeatherData,
AccuWeatherHourlyForecastDataUpdateCoordinator,
AccuWeatherObservationDataUpdateCoordinator,
)
@@ -64,6 +65,7 @@ class AccuWeatherEntity(
CoordinatorWeatherEntity[
AccuWeatherObservationDataUpdateCoordinator,
AccuWeatherDailyForecastDataUpdateCoordinator,
AccuWeatherHourlyForecastDataUpdateCoordinator,
]
):
"""Define an AccuWeather entity."""
@@ -76,6 +78,7 @@ class AccuWeatherEntity(
super().__init__(
observation_coordinator=accuweather_data.coordinator_observation,
daily_coordinator=accuweather_data.coordinator_daily_forecast,
hourly_coordinator=accuweather_data.coordinator_hourly_forecast,
)
self._attr_native_precipitation_unit = UnitOfPrecipitationDepth.MILLIMETERS
@@ -86,10 +89,13 @@ class AccuWeatherEntity(
self._attr_unique_id = accuweather_data.coordinator_observation.location_key
self._attr_attribution = ATTRIBUTION
self._attr_device_info = accuweather_data.coordinator_observation.device_info
self._attr_supported_features = WeatherEntityFeature.FORECAST_DAILY
self._attr_supported_features = (
WeatherEntityFeature.FORECAST_DAILY | WeatherEntityFeature.FORECAST_HOURLY
)
self.observation_coordinator = accuweather_data.coordinator_observation
self.daily_coordinator = accuweather_data.coordinator_daily_forecast
self.hourly_coordinator = accuweather_data.coordinator_hourly_forecast
@property
def condition(self) -> str | None:
@@ -207,3 +213,32 @@ class AccuWeatherEntity(
}
for item in self.daily_coordinator.data
]
@callback
def _async_forecast_hourly(self) -> list[Forecast] | None:
"""Return the hourly forecast in native units."""
return [
{
ATTR_FORECAST_TIME: utc_from_timestamp(
item["EpochDateTime"]
).isoformat(),
ATTR_FORECAST_CLOUD_COVERAGE: item["CloudCover"],
ATTR_FORECAST_HUMIDITY: item["RelativeHumidity"],
ATTR_FORECAST_NATIVE_TEMP: item["Temperature"][ATTR_VALUE],
ATTR_FORECAST_NATIVE_APPARENT_TEMP: item["RealFeelTemperature"][
ATTR_VALUE
],
ATTR_FORECAST_NATIVE_PRECIPITATION: item["TotalLiquid"][ATTR_VALUE],
ATTR_FORECAST_PRECIPITATION_PROBABILITY: item[
"PrecipitationProbability"
],
ATTR_FORECAST_NATIVE_WIND_SPEED: item["Wind"][ATTR_SPEED][ATTR_VALUE],
ATTR_FORECAST_NATIVE_WIND_GUST_SPEED: item["WindGust"][ATTR_SPEED][
ATTR_VALUE
],
ATTR_FORECAST_UV_INDEX: item["UVIndex"],
ATTR_FORECAST_WIND_BEARING: item["Wind"][ATTR_DIRECTION]["Degrees"],
ATTR_FORECAST_CONDITION: CONDITION_MAP.get(item["WeatherIcon"]),
}
for item in self.hourly_coordinator.data
]
@@ -0,0 +1,57 @@
"""The Actron Air integration."""
from actron_neo_api import (
ActronAirNeoACSystem,
ActronNeoAPI,
ActronNeoAPIError,
ActronNeoAuthError,
)
from homeassistant.const import CONF_API_TOKEN, Platform
from homeassistant.core import HomeAssistant
from .const import _LOGGER
from .coordinator import (
ActronAirConfigEntry,
ActronAirRuntimeData,
ActronAirSystemCoordinator,
)
PLATFORM = [Platform.CLIMATE]
async def async_setup_entry(hass: HomeAssistant, entry: ActronAirConfigEntry) -> bool:
"""Set up Actron Air integration from a config entry."""
api = ActronNeoAPI(refresh_token=entry.data[CONF_API_TOKEN])
systems: list[ActronAirNeoACSystem] = []
try:
systems = await api.get_ac_systems()
await api.update_status()
except ActronNeoAuthError:
_LOGGER.error("Authentication error while setting up Actron Air integration")
raise
except ActronNeoAPIError as err:
_LOGGER.error("API error while setting up Actron Air integration: %s", err)
raise
system_coordinators: dict[str, ActronAirSystemCoordinator] = {}
for system in systems:
coordinator = ActronAirSystemCoordinator(hass, entry, api, system)
_LOGGER.debug("Setting up coordinator for system: %s", system["serial"])
await coordinator.async_config_entry_first_refresh()
system_coordinators[system["serial"]] = coordinator
entry.runtime_data = ActronAirRuntimeData(
api=api,
system_coordinators=system_coordinators,
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORM)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ActronAirConfigEntry) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORM)
@@ -0,0 +1,259 @@
"""Climate platform for Actron Air integration."""
from typing import Any
from actron_neo_api import ActronAirNeoStatus, ActronAirNeoZone
from homeassistant.components.climate import (
FAN_AUTO,
FAN_HIGH,
FAN_LOW,
FAN_MEDIUM,
ClimateEntity,
ClimateEntityFeature,
HVACMode,
)
from homeassistant.const import ATTR_TEMPERATURE, UnitOfTemperature
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import ActronAirConfigEntry, ActronAirSystemCoordinator
PARALLEL_UPDATES = 0
FAN_MODE_MAPPING_ACTRONAIR_TO_HA = {
"AUTO": FAN_AUTO,
"LOW": FAN_LOW,
"MED": FAN_MEDIUM,
"HIGH": FAN_HIGH,
}
FAN_MODE_MAPPING_HA_TO_ACTRONAIR = {
v: k for k, v in FAN_MODE_MAPPING_ACTRONAIR_TO_HA.items()
}
HVAC_MODE_MAPPING_ACTRONAIR_TO_HA = {
"COOL": HVACMode.COOL,
"HEAT": HVACMode.HEAT,
"FAN": HVACMode.FAN_ONLY,
"AUTO": HVACMode.AUTO,
"OFF": HVACMode.OFF,
}
HVAC_MODE_MAPPING_HA_TO_ACTRONAIR = {
v: k for k, v in HVAC_MODE_MAPPING_ACTRONAIR_TO_HA.items()
}
async def async_setup_entry(
hass: HomeAssistant,
entry: ActronAirConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up Actron Air climate entities."""
system_coordinators = entry.runtime_data.system_coordinators
entities: list[ClimateEntity] = []
for coordinator in system_coordinators.values():
status = coordinator.data
name = status.ac_system.system_name
entities.append(ActronSystemClimate(coordinator, name))
entities.extend(
ActronZoneClimate(coordinator, zone)
for zone in status.remote_zone_info
if zone.exists
)
async_add_entities(entities)
class BaseClimateEntity(CoordinatorEntity[ActronAirSystemCoordinator], ClimateEntity):
"""Base class for Actron Air climate entities."""
_attr_has_entity_name = True
_attr_temperature_unit = UnitOfTemperature.CELSIUS
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.TURN_ON
| ClimateEntityFeature.TURN_OFF
)
_attr_name = None
_attr_fan_modes = list(FAN_MODE_MAPPING_ACTRONAIR_TO_HA.values())
_attr_hvac_modes = list(HVAC_MODE_MAPPING_ACTRONAIR_TO_HA.values())
def __init__(
self,
coordinator: ActronAirSystemCoordinator,
name: str,
) -> None:
"""Initialize an Actron Air unit."""
super().__init__(coordinator)
self._serial_number = coordinator.serial_number
class ActronSystemClimate(BaseClimateEntity):
"""Representation of the Actron Air system."""
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.FAN_MODE
| ClimateEntityFeature.TURN_ON
| ClimateEntityFeature.TURN_OFF
)
def __init__(
self,
coordinator: ActronAirSystemCoordinator,
name: str,
) -> None:
"""Initialize an Actron Air unit."""
super().__init__(coordinator, name)
serial_number = coordinator.serial_number
self._attr_unique_id = serial_number
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, serial_number)},
name=self._status.ac_system.system_name,
manufacturer="Actron Air",
model_id=self._status.ac_system.master_wc_model,
sw_version=self._status.ac_system.master_wc_firmware_version,
serial_number=serial_number,
)
@property
def min_temp(self) -> float:
"""Return the minimum temperature that can be set."""
return self._status.min_temp
@property
def max_temp(self) -> float:
"""Return the maximum temperature that can be set."""
return self._status.max_temp
@property
def _status(self) -> ActronAirNeoStatus:
"""Get the current status from the coordinator."""
return self.coordinator.data
@property
def hvac_mode(self) -> HVACMode | None:
"""Return the current HVAC mode."""
if not self._status.user_aircon_settings.is_on:
return HVACMode.OFF
mode = self._status.user_aircon_settings.mode
return HVAC_MODE_MAPPING_ACTRONAIR_TO_HA.get(mode)
@property
def fan_mode(self) -> str | None:
"""Return the current fan mode."""
fan_mode = self._status.user_aircon_settings.fan_mode
return FAN_MODE_MAPPING_ACTRONAIR_TO_HA.get(fan_mode)
@property
def current_humidity(self) -> float:
"""Return the current humidity."""
return self._status.master_info.live_humidity_pc
@property
def current_temperature(self) -> float:
"""Return the current temperature."""
return self._status.master_info.live_temp_c
@property
def target_temperature(self) -> float:
"""Return the target temperature."""
return self._status.user_aircon_settings.temperature_setpoint_cool_c
async def async_set_fan_mode(self, fan_mode: str) -> None:
"""Set a new fan mode."""
api_fan_mode = FAN_MODE_MAPPING_HA_TO_ACTRONAIR.get(fan_mode.lower())
await self._status.user_aircon_settings.set_fan_mode(api_fan_mode)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set the HVAC mode."""
ac_mode = HVAC_MODE_MAPPING_HA_TO_ACTRONAIR.get(hvac_mode)
await self._status.ac_system.set_system_mode(ac_mode)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set the temperature."""
temp = kwargs.get(ATTR_TEMPERATURE)
await self._status.user_aircon_settings.set_temperature(temperature=temp)
class ActronZoneClimate(BaseClimateEntity):
"""Representation of a zone within the Actron Air system."""
_attr_supported_features = (
ClimateEntityFeature.TARGET_TEMPERATURE
| ClimateEntityFeature.TURN_ON
| ClimateEntityFeature.TURN_OFF
)
def __init__(
self,
coordinator: ActronAirSystemCoordinator,
zone: ActronAirNeoZone,
) -> None:
"""Initialize an Actron Air unit."""
super().__init__(coordinator, zone.title)
serial_number = coordinator.serial_number
self._zone_id: int = zone.zone_id
self._attr_unique_id: str = f"{serial_number}_zone_{zone.zone_id}"
self._attr_device_info: DeviceInfo = DeviceInfo(
identifiers={(DOMAIN, self._attr_unique_id)},
name=zone.title,
manufacturer="Actron Air",
model="Zone",
suggested_area=zone.title,
via_device=(DOMAIN, serial_number),
)
@property
def min_temp(self) -> float:
"""Return the minimum temperature that can be set."""
return self._zone.min_temp
@property
def max_temp(self) -> float:
"""Return the maximum temperature that can be set."""
return self._zone.max_temp
@property
def _zone(self) -> ActronAirNeoZone:
"""Get the current zone data from the coordinator."""
status = self.coordinator.data
return status.zones[self._zone_id]
@property
def hvac_mode(self) -> HVACMode | None:
"""Return the current HVAC mode."""
if self._zone.is_active:
mode = self._zone.hvac_mode
return HVAC_MODE_MAPPING_ACTRONAIR_TO_HA.get(mode)
return HVACMode.OFF
@property
def current_humidity(self) -> float | None:
"""Return the current humidity."""
return self._zone.humidity
@property
def current_temperature(self) -> float | None:
"""Return the current temperature."""
return self._zone.live_temp_c
@property
def target_temperature(self) -> float | None:
"""Return the target temperature."""
return self._zone.temperature_setpoint_cool_c
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set the HVAC mode."""
is_enabled = hvac_mode != HVACMode.OFF
await self._zone.enable(is_enabled)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set the temperature."""
await self._zone.set_temperature(temperature=kwargs["temperature"])
@@ -0,0 +1,132 @@
"""Setup config flow for Actron Air integration."""
import asyncio
from typing import Any
from actron_neo_api import ActronNeoAPI, ActronNeoAuthError
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_API_TOKEN
from homeassistant.exceptions import HomeAssistantError
from .const import _LOGGER, DOMAIN
class ActronAirConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Actron Air."""
def __init__(self) -> None:
"""Initialize the config flow."""
self._api: ActronNeoAPI | None = None
self._device_code: str | None = None
self._user_code: str = ""
self._verification_uri: str = ""
self._expires_minutes: str = "30"
self.login_task: asyncio.Task | None = None
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle the initial step."""
if self._api is None:
_LOGGER.debug("Initiating device authorization")
self._api = ActronNeoAPI()
try:
device_code_response = await self._api.request_device_code()
except ActronNeoAuthError as err:
_LOGGER.error("OAuth2 flow failed: %s", err)
return self.async_abort(reason="oauth2_error")
self._device_code = device_code_response["device_code"]
self._user_code = device_code_response["user_code"]
self._verification_uri = device_code_response["verification_uri_complete"]
self._expires_minutes = str(device_code_response["expires_in"] // 60)
async def _wait_for_authorization() -> None:
"""Wait for the user to authorize the device."""
assert self._api is not None
assert self._device_code is not None
_LOGGER.debug("Waiting for device authorization")
try:
await self._api.poll_for_token(self._device_code)
_LOGGER.debug("Authorization successful")
except ActronNeoAuthError as ex:
_LOGGER.exception("Error while waiting for device authorization")
raise CannotConnect from ex
_LOGGER.debug("Checking login task")
if self.login_task is None:
_LOGGER.debug("Creating task for device authorization")
self.login_task = self.hass.async_create_task(_wait_for_authorization())
if self.login_task.done():
_LOGGER.debug("Login task is done, checking results")
if exception := self.login_task.exception():
if isinstance(exception, CannotConnect):
return self.async_show_progress_done(
next_step_id="connection_error"
)
return self.async_show_progress_done(next_step_id="timeout")
return self.async_show_progress_done(next_step_id="finish_login")
return self.async_show_progress(
step_id="user",
progress_action="wait_for_authorization",
description_placeholders={
"user_code": self._user_code,
"verification_uri": self._verification_uri,
"expires_minutes": self._expires_minutes,
},
progress_task=self.login_task,
)
async def async_step_finish_login(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle the finalization of login."""
_LOGGER.debug("Finalizing authorization")
assert self._api is not None
try:
user_data = await self._api.get_user_info()
except ActronNeoAuthError as err:
_LOGGER.error("Error getting user info: %s", err)
return self.async_abort(reason="oauth2_error")
unique_id = str(user_data["id"])
await self.async_set_unique_id(unique_id)
self._abort_if_unique_id_configured()
return self.async_create_entry(
title=user_data["email"],
data={CONF_API_TOKEN: self._api.refresh_token_value},
)
async def async_step_timeout(
self,
user_input: dict[str, Any] | None = None,
) -> ConfigFlowResult:
"""Handle issues that need transition await from progress step."""
if user_input is None:
return self.async_show_form(
step_id="timeout",
)
del self.login_task
return await self.async_step_user()
async def async_step_connection_error(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle connection error from progress step."""
if user_input is None:
return self.async_show_form(step_id="connection_error")
# Reset state and try again
self._api = None
self._device_code = None
self.login_task = None
return await self.async_step_user()
class CannotConnect(HomeAssistantError):
"""Error to indicate we cannot connect."""
@@ -0,0 +1,6 @@
"""Constants used by Actron Air integration."""
import logging
_LOGGER = logging.getLogger(__package__)
DOMAIN = "actron_air"
@@ -0,0 +1,69 @@
"""Coordinator for Actron Air integration."""
from __future__ import annotations
from dataclasses import dataclass
from datetime import timedelta
from actron_neo_api import ActronAirNeoACSystem, ActronAirNeoStatus, ActronNeoAPI
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
from homeassistant.util import dt as dt_util
from .const import _LOGGER
STALE_DEVICE_TIMEOUT = timedelta(hours=24)
ERROR_NO_SYSTEMS_FOUND = "no_systems_found"
ERROR_UNKNOWN = "unknown_error"
@dataclass
class ActronAirRuntimeData:
"""Runtime data for the Actron Air integration."""
api: ActronNeoAPI
system_coordinators: dict[str, ActronAirSystemCoordinator]
type ActronAirConfigEntry = ConfigEntry[ActronAirRuntimeData]
AUTH_ERROR_THRESHOLD = 3
SCAN_INTERVAL = timedelta(seconds=30)
class ActronAirSystemCoordinator(DataUpdateCoordinator[ActronAirNeoACSystem]):
"""System coordinator for Actron Air integration."""
def __init__(
self,
hass: HomeAssistant,
entry: ActronAirConfigEntry,
api: ActronNeoAPI,
system: ActronAirNeoACSystem,
) -> None:
"""Initialize the coordinator."""
super().__init__(
hass,
_LOGGER,
name="Actron Air Status",
update_interval=SCAN_INTERVAL,
config_entry=entry,
)
self.system = system
self.serial_number = system["serial"]
self.api = api
self.status = self.api.state_manager.get_status(self.serial_number)
self.last_seen = dt_util.utcnow()
async def _async_update_data(self) -> ActronAirNeoStatus:
"""Fetch updates and merge incremental changes into the full state."""
await self.api.update_status()
self.status = self.api.state_manager.get_status(self.serial_number)
self.last_seen = dt_util.utcnow()
return self.status
def is_device_stale(self) -> bool:
"""Check if a device is stale (not seen for a while)."""
return (dt_util.utcnow() - self.last_seen) > STALE_DEVICE_TIMEOUT
@@ -0,0 +1,16 @@
{
"domain": "actron_air",
"name": "Actron Air",
"codeowners": ["@kclif9", "@JagadishDhanamjayam"],
"config_flow": true,
"dhcp": [
{
"hostname": "neo-*",
"macaddress": "FC0FE7*"
}
],
"documentation": "https://www.home-assistant.io/integrations/actron_air",
"iot_class": "cloud_polling",
"quality_scale": "bronze",
"requirements": ["actron-neo-api==0.1.84"]
}
@@ -0,0 +1,78 @@
rules:
# Bronze
action-setup:
status: exempt
comment: This integration does not have custom service 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: This integration does not have custom service actions.
docs-high-level-description: done
docs-installation-instructions: done
docs-removal-instructions: done
entity-event-setup:
status: exempt
comment: This integration does not subscribe to external 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:
status: exempt
comment: No options flow
docs-installation-parameters: done
entity-unavailable: done
integration-owner: done
log-when-unavailable: done
parallel-updates: done
reauthentication-flow: todo
test-coverage: todo
# Gold
devices: done
diagnostics: todo
discovery-update-info:
status: exempt
comment: This integration uses DHCP discovery, however is cloud polling. Therefore there is no information to update.
discovery: done
docs-data-update: done
docs-examples: done
docs-known-limitations: done
docs-supported-devices: done
docs-supported-functions: done
docs-troubleshooting: done
docs-use-cases: done
dynamic-devices: todo
entity-category:
status: exempt
comment: This integration does not use entity categories.
entity-device-class:
status: exempt
comment: This integration does not use entity device classes.
entity-disabled-by-default:
status: exempt
comment: Not required for this integration at this stage.
entity-translations: todo
exception-translations: todo
icon-translations: todo
reconfiguration-flow: todo
repair-issues:
status: exempt
comment: This integration does not have any known issues that require repair.
stale-devices: todo
# Platinum
async-dependency: done
inject-websession: todo
strict-typing: todo
@@ -0,0 +1,29 @@
{
"config": {
"step": {
"user": {
"title": "Actron Air OAuth2 Authorization"
},
"timeout": {
"title": "Authorization timeout",
"description": "The authorization process timed out. Please try again.",
"data": {}
},
"connection_error": {
"title": "Connection error",
"description": "Failed to connect to Actron Air. Please check your internet connection and try again.",
"data": {}
}
},
"progress": {
"wait_for_authorization": "To authenticate, open the following URL and login at Actron Air:\n{verification_uri}\nIf the code is not automatically copied, paste the following code to authorize the integration:\n\n```{user_code}```\n\n\nThe login attempt will time out after {expires_minutes} minutes."
},
"error": {
"oauth2_error": "Failed to start OAuth2 flow. Please try again later."
},
"abort": {
"oauth2_error": "Failed to start OAuth2 flow",
"already_configured": "[%key:common::config_flow::abort::already_configured_account%]"
}
}
}
@@ -71,7 +71,14 @@ class AemetConfigFlow(ConfigFlow, domain=DOMAIN):
}
)
return self.async_show_form(step_id="user", data_schema=schema, errors=errors)
return self.async_show_form(
step_id="user",
data_schema=schema,
errors=errors,
description_placeholders={
"api_key_url": "https://opendata.aemet.es/centrodedescargas/altaUsuario"
},
)
@staticmethod
@callback
+1 -1
View File
@@ -14,7 +14,7 @@
"longitude": "[%key:common::config_flow::data::longitude%]",
"name": "Name of the integration"
},
"description": "To generate API key go to https://opendata.aemet.es/centrodedescargas/altaUsuario"
"description": "To generate API key go to {api_key_url}"
}
}
},
+43 -5
View File
@@ -29,11 +29,19 @@ from .const import (
DATA_PREFERENCES,
DOMAIN,
SERVICE_GENERATE_DATA,
SERVICE_GENERATE_IMAGE,
AITaskEntityFeature,
)
from .entity import AITaskEntity
from .http import async_setup as async_setup_http
from .task import GenDataTask, GenDataTaskResult, async_generate_data
from .task import (
GenDataTask,
GenDataTaskResult,
GenImageTask,
GenImageTaskResult,
async_generate_data,
async_generate_image,
)
__all__ = [
"DOMAIN",
@@ -41,7 +49,10 @@ __all__ = [
"AITaskEntityFeature",
"GenDataTask",
"GenDataTaskResult",
"GenImageTask",
"GenImageTaskResult",
"async_generate_data",
"async_generate_image",
"async_setup",
"async_setup_entry",
"async_unload_entry",
@@ -101,6 +112,23 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
supports_response=SupportsResponse.ONLY,
job_type=HassJobType.Coroutinefunction,
)
hass.services.async_register(
DOMAIN,
SERVICE_GENERATE_IMAGE,
async_service_generate_image,
schema=vol.Schema(
{
vol.Required(ATTR_TASK_NAME): cv.string,
vol.Optional(ATTR_ENTITY_ID): cv.entity_id,
vol.Required(ATTR_INSTRUCTIONS): cv.string,
vol.Optional(ATTR_ATTACHMENTS): vol.All(
cv.ensure_list, [selector.MediaSelector({"accept": ["*/*"]})]
),
}
),
supports_response=SupportsResponse.ONLY,
job_type=HassJobType.Coroutinefunction,
)
return True
@@ -115,17 +143,23 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_service_generate_data(call: ServiceCall) -> ServiceResponse:
"""Run the run task service."""
"""Run the data task service."""
result = await async_generate_data(hass=call.hass, **call.data)
return result.as_dict()
async def async_service_generate_image(call: ServiceCall) -> ServiceResponse:
"""Run the image task service."""
return await async_generate_image(hass=call.hass, **call.data)
class AITaskPreferences:
"""AI Task preferences."""
KEYS = ("gen_data_entity_id",)
KEYS = ("gen_data_entity_id", "gen_image_entity_id")
gen_data_entity_id: str | None = None
gen_image_entity_id: str | None = None
def __init__(self, hass: HomeAssistant) -> None:
"""Initialize the preferences."""
@@ -139,17 +173,21 @@ class AITaskPreferences:
if data is None:
return
for key in self.KEYS:
setattr(self, key, data[key])
setattr(self, key, data.get(key))
@callback
def async_set_preferences(
self,
*,
gen_data_entity_id: str | None | UndefinedType = UNDEFINED,
gen_image_entity_id: str | None | UndefinedType = UNDEFINED,
) -> None:
"""Set the preferences."""
changed = False
for key, value in (("gen_data_entity_id", gen_data_entity_id),):
for key, value in (
("gen_data_entity_id", gen_data_entity_id),
("gen_image_entity_id", gen_image_entity_id),
):
if value is not UNDEFINED:
if getattr(self, key) != value:
setattr(self, key, value)
@@ -8,6 +8,7 @@ from typing import TYPE_CHECKING, Final
from homeassistant.util.hass_dict import HassKey
if TYPE_CHECKING:
from homeassistant.components.media_source import local_source
from homeassistant.helpers.entity_component import EntityComponent
from . import AITaskPreferences
@@ -16,8 +17,13 @@ if TYPE_CHECKING:
DOMAIN = "ai_task"
DATA_COMPONENT: HassKey[EntityComponent[AITaskEntity]] = HassKey(DOMAIN)
DATA_PREFERENCES: HassKey[AITaskPreferences] = HassKey(f"{DOMAIN}_preferences")
DATA_MEDIA_SOURCE: HassKey[local_source.LocalSource] = HassKey(f"{DOMAIN}_media_source")
IMAGE_DIR: Final = "image"
IMAGE_EXPIRY_TIME = 60 * 60 # 1 hour
SERVICE_GENERATE_DATA = "generate_data"
SERVICE_GENERATE_IMAGE = "generate_image"
ATTR_INSTRUCTIONS: Final = "instructions"
ATTR_TASK_NAME: Final = "task_name"
@@ -38,3 +44,6 @@ class AITaskEntityFeature(IntFlag):
SUPPORT_ATTACHMENTS = 2
"""Support attachments with generate data."""
GENERATE_IMAGE = 4
"""Generate images based on instructions."""
+27 -2
View File
@@ -18,7 +18,7 @@ from homeassistant.helpers.restore_state import RestoreEntity
from homeassistant.util import dt as dt_util
from .const import DEFAULT_SYSTEM_PROMPT, DOMAIN, AITaskEntityFeature
from .task import GenDataTask, GenDataTaskResult
from .task import GenDataTask, GenDataTaskResult, GenImageTask, GenImageTaskResult
class AITaskEntity(RestoreEntity):
@@ -57,9 +57,13 @@ class AITaskEntity(RestoreEntity):
async def _async_get_ai_task_chat_log(
self,
session: ChatSession,
task: GenDataTask,
task: GenDataTask | GenImageTask,
) -> AsyncGenerator[ChatLog]:
"""Context manager used to manage the ChatLog used during an AI Task."""
user_llm_hass_api: llm.API | None = None
if isinstance(task, GenDataTask):
user_llm_hass_api = task.llm_api
# pylint: disable-next=contextmanager-generator-missing-cleanup
with (
async_get_chat_log(
@@ -77,6 +81,7 @@ class AITaskEntity(RestoreEntity):
device_id=None,
),
user_llm_prompt=DEFAULT_SYSTEM_PROMPT,
user_llm_hass_api=user_llm_hass_api,
)
chat_log.async_add_user_content(
@@ -104,3 +109,23 @@ class AITaskEntity(RestoreEntity):
) -> GenDataTaskResult:
"""Handle a gen data task."""
raise NotImplementedError
@final
async def internal_async_generate_image(
self,
session: ChatSession,
task: GenImageTask,
) -> GenImageTaskResult:
"""Run a gen image task."""
self.__last_activity = dt_util.utcnow().isoformat()
self.async_write_ha_state()
async with self._async_get_ai_task_chat_log(session, task) as chat_log:
return await self._async_generate_image(task, chat_log)
async def _async_generate_image(
self,
task: GenImageTask,
chat_log: ChatLog,
) -> GenImageTaskResult:
"""Handle a gen image task."""
raise NotImplementedError
+1
View File
@@ -37,6 +37,7 @@ def websocket_get_preferences(
{
vol.Required("type"): "ai_task/preferences/set",
vol.Optional("gen_data_entity_id"): vol.Any(str, None),
vol.Optional("gen_image_entity_id"): vol.Any(str, None),
}
)
@websocket_api.require_admin
@@ -1,7 +1,15 @@
{
"entity_component": {
"_": {
"default": "mdi:star-four-points"
}
},
"services": {
"generate_data": {
"service": "mdi:file-star-four-points-outline"
},
"generate_image": {
"service": "mdi:star-four-points-box-outline"
}
}
}
@@ -5,6 +5,6 @@
"codeowners": ["@home-assistant/core"],
"dependencies": ["conversation", "media_source"],
"documentation": "https://www.home-assistant.io/integrations/ai_task",
"integration_type": "system",
"integration_type": "entity",
"quality_scale": "internal"
}
@@ -0,0 +1,32 @@
"""Expose images as media sources."""
from __future__ import annotations
from pathlib import Path
from homeassistant.components.media_source import MediaSource, local_source
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
from .const import DATA_MEDIA_SOURCE, DOMAIN, IMAGE_DIR
async def async_get_media_source(hass: HomeAssistant) -> MediaSource:
"""Set up local media source."""
media_dirs = list(hass.config.media_dirs.values())
if not media_dirs:
raise HomeAssistantError(
"AI Task media source requires at least one media directory configured"
)
media_dir = Path(media_dirs[0]) / DOMAIN / IMAGE_DIR
hass.data[DATA_MEDIA_SOURCE] = source = local_source.LocalSource(
hass,
DOMAIN,
"AI Generated Images",
{IMAGE_DIR: str(media_dir)},
f"/{DOMAIN}",
)
return source
+27 -1
View File
@@ -20,7 +20,6 @@ generate_data:
supported_features:
- ai_task.AITaskEntityFeature.GENERATE_DATA
structure:
advanced: true
required: false
example: '{ "name": { "selector": { "text": }, "description": "Name of the user", "required": "True" } } }, "age": { "selector": { "number": }, "description": "Age of the user" } }'
selector:
@@ -31,3 +30,30 @@ generate_data:
media:
accept:
- "*"
generate_image:
fields:
task_name:
example: "picture of a dog"
required: true
selector:
text:
instructions:
example: "Generate a high quality square image of a dog on transparent background"
required: true
selector:
text:
multiline: true
entity_id:
required: true
selector:
entity:
filter:
domain: ai_task
supported_features:
- ai_task.AITaskEntityFeature.GENERATE_IMAGE
attachments:
required: false
selector:
media:
accept:
- "*"
@@ -25,6 +25,28 @@
"description": "List of files to attach for multi-modal AI analysis."
}
}
},
"generate_image": {
"name": "Generate image",
"description": "Uses AI to generate image.",
"fields": {
"task_name": {
"name": "Task name",
"description": "Name of the task."
},
"instructions": {
"name": "Instructions",
"description": "Instructions that explains the image to be generated."
},
"entity_id": {
"name": "Entity ID",
"description": "Entity ID to run the task on."
},
"attachments": {
"name": "Attachments",
"description": "List of files to attach for using as references."
}
}
}
}
}
+240 -60
View File
@@ -3,6 +3,8 @@
from __future__ import annotations
from dataclasses import dataclass
from datetime import datetime, timedelta
import io
import mimetypes
from pathlib import Path
import tempfile
@@ -10,85 +12,73 @@ from typing import Any
import voluptuous as vol
from homeassistant.components import camera, conversation, media_source
from homeassistant.core import HomeAssistant, callback
from homeassistant.components import camera, conversation, image, media_source
from homeassistant.components.http.auth import async_sign_path
from homeassistant.core import HomeAssistant, ServiceResponse, callback
from homeassistant.exceptions import HomeAssistantError
from homeassistant.helpers.chat_session import async_get_chat_session
from homeassistant.helpers import llm
from homeassistant.helpers.chat_session import ChatSession, async_get_chat_session
from homeassistant.util import RE_SANITIZE_FILENAME, slugify
from .const import DATA_COMPONENT, DATA_PREFERENCES, AITaskEntityFeature
from .const import (
DATA_COMPONENT,
DATA_MEDIA_SOURCE,
DATA_PREFERENCES,
DOMAIN,
IMAGE_DIR,
IMAGE_EXPIRY_TIME,
AITaskEntityFeature,
)
def _save_camera_snapshot(image: camera.Image) -> Path:
def _save_camera_snapshot(image_data: camera.Image | image.Image) -> Path:
"""Save camera snapshot to temp file."""
with tempfile.NamedTemporaryFile(
mode="wb",
suffix=mimetypes.guess_extension(image.content_type, False),
suffix=mimetypes.guess_extension(image_data.content_type, False),
delete=False,
) as temp_file:
temp_file.write(image.content)
temp_file.write(image_data.content)
return Path(temp_file.name)
async def async_generate_data(
async def _resolve_attachments(
hass: HomeAssistant,
*,
task_name: str,
entity_id: str | None = None,
instructions: str,
structure: vol.Schema | None = None,
session: ChatSession,
attachments: list[dict] | None = None,
) -> GenDataTaskResult:
"""Run a task in the AI Task integration."""
if entity_id is None:
entity_id = hass.data[DATA_PREFERENCES].gen_data_entity_id
if entity_id is None:
raise HomeAssistantError("No entity_id provided and no preferred entity set")
entity = hass.data[DATA_COMPONENT].get_entity(entity_id)
if entity is None:
raise HomeAssistantError(f"AI Task entity {entity_id} not found")
if AITaskEntityFeature.GENERATE_DATA not in entity.supported_features:
raise HomeAssistantError(
f"AI Task entity {entity_id} does not support generating data"
)
# Resolve attachments
) -> list[conversation.Attachment]:
"""Resolve attachments for a task."""
resolved_attachments: list[conversation.Attachment] = []
created_files: list[Path] = []
if (
attachments
and AITaskEntityFeature.SUPPORT_ATTACHMENTS not in entity.supported_features
):
raise HomeAssistantError(
f"AI Task entity {entity_id} does not support attachments"
)
for attachment in attachments or []:
media_content_id = attachment["media_content_id"]
# Special case for camera media sources
if media_content_id.startswith("media-source://camera/"):
# Extract entity_id from the media content ID
entity_id = media_content_id.removeprefix("media-source://camera/")
# Special case for certain media sources
for integration in camera, image:
media_source_prefix = f"media-source://{integration.DOMAIN}/"
if not media_content_id.startswith(media_source_prefix):
continue
# Get snapshot from camera
image = await camera.async_get_image(hass, entity_id)
# Extract entity_id from the media content ID
entity_id = media_content_id.removeprefix(media_source_prefix)
# Get snapshot from entity
image_data = await integration.async_get_image(hass, entity_id)
temp_filename = await hass.async_add_executor_job(
_save_camera_snapshot, image
_save_camera_snapshot, image_data
)
created_files.append(temp_filename)
resolved_attachments.append(
conversation.Attachment(
media_content_id=media_content_id,
mime_type=image.content_type,
mime_type=image_data.content_type,
path=temp_filename,
)
)
break
else:
# Handle regular media sources
media = await media_source.async_resolve_media(hass, media_content_id, None)
@@ -104,20 +94,60 @@ async def async_generate_data(
)
)
if not created_files:
return resolved_attachments
def cleanup_files() -> None:
"""Cleanup temporary files."""
for file in created_files:
file.unlink(missing_ok=True)
@callback
def cleanup_files_callback() -> None:
"""Cleanup temporary files."""
hass.async_add_executor_job(cleanup_files)
session.async_on_cleanup(cleanup_files_callback)
return resolved_attachments
async def async_generate_data(
hass: HomeAssistant,
*,
task_name: str,
entity_id: str | None = None,
instructions: str,
structure: vol.Schema | None = None,
attachments: list[dict] | None = None,
llm_api: llm.API | None = None,
) -> GenDataTaskResult:
"""Run a data generation task in the AI Task integration."""
if entity_id is None:
entity_id = hass.data[DATA_PREFERENCES].gen_data_entity_id
if entity_id is None:
raise HomeAssistantError("No entity_id provided and no preferred entity set")
entity = hass.data[DATA_COMPONENT].get_entity(entity_id)
if entity is None:
raise HomeAssistantError(f"AI Task entity {entity_id} not found")
if AITaskEntityFeature.GENERATE_DATA not in entity.supported_features:
raise HomeAssistantError(
f"AI Task entity {entity_id} does not support generating data"
)
if (
attachments
and AITaskEntityFeature.SUPPORT_ATTACHMENTS not in entity.supported_features
):
raise HomeAssistantError(
f"AI Task entity {entity_id} does not support attachments"
)
with async_get_chat_session(hass) as session:
if created_files:
def cleanup_files() -> None:
"""Cleanup temporary files."""
for file in created_files:
file.unlink(missing_ok=True)
@callback
def cleanup_files_callback() -> None:
"""Cleanup temporary files."""
hass.async_add_executor_job(cleanup_files)
session.async_on_cleanup(cleanup_files_callback)
resolved_attachments = await _resolve_attachments(hass, session, attachments)
return await entity.internal_async_generate_data(
session,
@@ -126,10 +156,92 @@ async def async_generate_data(
instructions=instructions,
structure=structure,
attachments=resolved_attachments or None,
llm_api=llm_api,
),
)
async def async_generate_image(
hass: HomeAssistant,
*,
task_name: str,
entity_id: str | None = None,
instructions: str,
attachments: list[dict] | None = None,
) -> ServiceResponse:
"""Run an image generation task in the AI Task integration."""
if entity_id is None:
entity_id = hass.data[DATA_PREFERENCES].gen_image_entity_id
if entity_id is None:
raise HomeAssistantError("No entity_id provided and no preferred entity set")
entity = hass.data[DATA_COMPONENT].get_entity(entity_id)
if entity is None:
raise HomeAssistantError(f"AI Task entity {entity_id} not found")
if AITaskEntityFeature.GENERATE_IMAGE not in entity.supported_features:
raise HomeAssistantError(
f"AI Task entity {entity_id} does not support generating images"
)
if (
attachments
and AITaskEntityFeature.SUPPORT_ATTACHMENTS not in entity.supported_features
):
raise HomeAssistantError(
f"AI Task entity {entity_id} does not support attachments"
)
with async_get_chat_session(hass) as session:
resolved_attachments = await _resolve_attachments(hass, session, attachments)
task_result = await entity.internal_async_generate_image(
session,
GenImageTask(
name=task_name,
instructions=instructions,
attachments=resolved_attachments or None,
),
)
service_result = task_result.as_dict()
image_data = service_result.pop("image_data")
if service_result.get("revised_prompt") is None:
service_result["revised_prompt"] = instructions
source = hass.data[DATA_MEDIA_SOURCE]
current_time = datetime.now()
ext = mimetypes.guess_extension(task_result.mime_type, False) or ".png"
sanitized_task_name = RE_SANITIZE_FILENAME.sub("", slugify(task_name))
image_file = ImageData(
filename=f"{current_time.strftime('%Y-%m-%d_%H%M%S')}_{sanitized_task_name}{ext}",
file=io.BytesIO(image_data),
content_type=task_result.mime_type,
)
target_folder = media_source.MediaSourceItem.from_uri(
hass, f"media-source://{DOMAIN}/{IMAGE_DIR}", None
)
service_result["media_source_id"] = await source.async_upload_media(
target_folder, image_file
)
item = media_source.MediaSourceItem.from_uri(
hass, service_result["media_source_id"], None
)
service_result["url"] = async_sign_path(
hass,
(await source.async_resolve_media(item)).url,
timedelta(seconds=IMAGE_EXPIRY_TIME),
)
return service_result
@dataclass(slots=True)
class GenDataTask:
"""Gen data task to be processed."""
@@ -146,6 +258,9 @@ class GenDataTask:
attachments: list[conversation.Attachment] | None = None
"""List of attachments to go along the instructions."""
llm_api: llm.API | None = None
"""API to provide to the LLM."""
def __str__(self) -> str:
"""Return task as a string."""
return f"<GenDataTask {self.name}: {id(self)}>"
@@ -167,3 +282,68 @@ class GenDataTaskResult:
"conversation_id": self.conversation_id,
"data": self.data,
}
@dataclass(slots=True)
class GenImageTask:
"""Gen image task to be processed."""
name: str
"""Name of the task."""
instructions: str
"""Instructions on what needs to be done."""
attachments: list[conversation.Attachment] | None = None
"""List of attachments to go along the instructions."""
def __str__(self) -> str:
"""Return task as a string."""
return f"<GenImageTask {self.name}: {id(self)}>"
@dataclass(slots=True)
class GenImageTaskResult:
"""Result of gen image task."""
image_data: bytes
"""Raw image data generated by the model."""
conversation_id: str
"""Unique identifier for the conversation."""
mime_type: str
"""MIME type of the generated image."""
width: int | None = None
"""Width of the generated image, if available."""
height: int | None = None
"""Height of the generated image, if available."""
model: str | None = None
"""Model used to generate the image, if available."""
revised_prompt: str | None = None
"""Revised prompt used to generate the image, if applicable."""
def as_dict(self) -> dict[str, Any]:
"""Return result as a dict."""
return {
"image_data": self.image_data,
"conversation_id": self.conversation_id,
"mime_type": self.mime_type,
"width": self.width,
"height": self.height,
"model": self.model,
"revised_prompt": self.revised_prompt,
}
@dataclass(slots=True)
class ImageData:
"""Implementation of media_source.local_source.UploadedFile protocol."""
filename: str
file: io.IOBase
content_type: str
+25 -4
View File
@@ -1,7 +1,9 @@
"""Airgradient Update platform."""
from datetime import timedelta
import logging
from airgradient import AirGradientConnectionError
from propcache.api import cached_property
from homeassistant.components.update import UpdateDeviceClass, UpdateEntity
@@ -13,6 +15,7 @@ from .entity import AirGradientEntity
PARALLEL_UPDATES = 1
SCAN_INTERVAL = timedelta(hours=1)
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(
@@ -31,6 +34,7 @@ class AirGradientUpdate(AirGradientEntity, UpdateEntity):
"""Representation of Airgradient Update."""
_attr_device_class = UpdateDeviceClass.FIRMWARE
_server_unreachable_logged = False
def __init__(self, coordinator: AirGradientCoordinator) -> None:
"""Initialize the entity."""
@@ -47,10 +51,27 @@ class AirGradientUpdate(AirGradientEntity, UpdateEntity):
"""Return the installed version of the entity."""
return self.coordinator.data.measures.firmware_version
@property
def available(self) -> bool:
"""Return if entity is available."""
return super().available and self._attr_available
async def async_update(self) -> None:
"""Update the entity."""
self._attr_latest_version = (
await self.coordinator.client.get_latest_firmware_version(
self.coordinator.serial_number
try:
self._attr_latest_version = (
await self.coordinator.client.get_latest_firmware_version(
self.coordinator.serial_number
)
)
)
except AirGradientConnectionError:
self._attr_latest_version = None
self._attr_available = False
if not self._server_unreachable_logged:
_LOGGER.error(
"Unable to connect to AirGradient server to check for updates"
)
self._server_unreachable_logged = True
else:
self._server_unreachable_logged = False
self._attr_available = True
@@ -18,6 +18,10 @@ from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import CONF_USE_NEAREST, DOMAIN, NO_AIRLY_SENSORS
DESCRIPTION_PLACEHOLDERS = {
"developer_registration_url": "https://developer.airly.eu/register",
}
class AirlyFlowHandler(ConfigFlow, domain=DOMAIN):
"""Config flow for Airly."""
@@ -85,6 +89,7 @@ class AirlyFlowHandler(ConfigFlow, domain=DOMAIN):
}
),
errors=errors,
description_placeholders=DESCRIPTION_PLACEHOLDERS,
)
+1 -1
View File
@@ -2,7 +2,7 @@
"config": {
"step": {
"user": {
"description": "To generate API key go to https://developer.airly.eu/register",
"description": "To generate API key go to {developer_registration_url}",
"data": {
"name": "[%key:common::config_flow::data::name%]",
"api_key": "[%key:common::config_flow::data::api_key%]",
+92 -5
View File
@@ -2,12 +2,23 @@
from __future__ import annotations
from airos.airos8 import AirOS
import logging
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME, Platform
from homeassistant.core import HomeAssistant
from airos.airos8 import AirOS8
from homeassistant.const import (
CONF_HOST,
CONF_PASSWORD,
CONF_SSL,
CONF_USERNAME,
CONF_VERIFY_SSL,
Platform,
)
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import device_registry as dr, entity_registry as er
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import DEFAULT_SSL, DEFAULT_VERIFY_SSL, DOMAIN, SECTION_ADVANCED_SETTINGS
from .coordinator import AirOSConfigEntry, AirOSDataUpdateCoordinator
_PLATFORMS: list[Platform] = [
@@ -15,19 +26,24 @@ _PLATFORMS: list[Platform] = [
Platform.SENSOR,
]
_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
"""Set up Ubiquiti airOS from a config entry."""
# By default airOS 8 comes with self-signed SSL certificates,
# with no option in the web UI to change or upload a custom certificate.
session = async_get_clientsession(hass, verify_ssl=False)
session = async_get_clientsession(
hass, verify_ssl=entry.data[SECTION_ADVANCED_SETTINGS][CONF_VERIFY_SSL]
)
airos_device = AirOS(
airos_device = AirOS8(
host=entry.data[CONF_HOST],
username=entry.data[CONF_USERNAME],
password=entry.data[CONF_PASSWORD],
session=session,
use_ssl=entry.data[SECTION_ADVANCED_SETTINGS][CONF_SSL],
)
coordinator = AirOSDataUpdateCoordinator(hass, entry, airos_device)
@@ -40,6 +56,77 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> boo
return True
async def async_migrate_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
"""Migrate old config entry."""
# This means the user has downgraded from a future version
if entry.version > 2:
return False
# 1.1 Migrate config_entry to add advanced ssl settings
if entry.version == 1 and entry.minor_version == 1:
new_minor_version = 2
new_data = {**entry.data}
advanced_data = {
CONF_SSL: DEFAULT_SSL,
CONF_VERIFY_SSL: DEFAULT_VERIFY_SSL,
}
new_data[SECTION_ADVANCED_SETTINGS] = advanced_data
hass.config_entries.async_update_entry(
entry,
data=new_data,
minor_version=new_minor_version,
)
# 2.1 Migrate binary_sensor entity unique_id from device_id to mac_address
# Step 1 - migrate binary_sensor entity unique_id
# Step 2 - migrate device entity identifier
if entry.version == 1:
new_version = 2
new_minor_version = 1
mac_adress = dr.format_mac(entry.unique_id)
device_registry = dr.async_get(hass)
if device_entry := device_registry.async_get_device(
connections={(dr.CONNECTION_NETWORK_MAC, mac_adress)}
):
old_device_id = next(
(
device_id
for domain, device_id in device_entry.identifiers
if domain == DOMAIN
),
)
@callback
def update_unique_id(
entity_entry: er.RegistryEntry,
) -> dict[str, str] | None:
"""Update unique id from device_id to mac address."""
if old_device_id and entity_entry.unique_id.startswith(old_device_id):
suffix = entity_entry.unique_id.removeprefix(old_device_id)
new_unique_id = f"{mac_adress}{suffix}"
return {"new_unique_id": new_unique_id}
return None
await er.async_migrate_entries(hass, entry.entry_id, update_unique_id)
new_identifiers = device_entry.identifiers.copy()
new_identifiers.discard((DOMAIN, old_device_id))
new_identifiers.add((DOMAIN, mac_adress))
device_registry.async_update_device(
device_entry.id, new_identifiers=new_identifiers
)
hass.config_entries.async_update_entry(
entry, version=new_version, minor_version=new_minor_version
)
return True
async def async_unload_entry(hass: HomeAssistant, entry: AirOSConfigEntry) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, _PLATFORMS)
@@ -15,7 +15,7 @@ from homeassistant.const import EntityCategory
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .coordinator import AirOSConfigEntry, AirOSData, AirOSDataUpdateCoordinator
from .coordinator import AirOS8Data, AirOSConfigEntry, AirOSDataUpdateCoordinator
from .entity import AirOSEntity
_LOGGER = logging.getLogger(__name__)
@@ -27,7 +27,7 @@ PARALLEL_UPDATES = 0
class AirOSBinarySensorEntityDescription(BinarySensorEntityDescription):
"""Describe an AirOS binary sensor."""
value_fn: Callable[[AirOSData], bool]
value_fn: Callable[[AirOS8Data], bool]
BINARY_SENSORS: tuple[AirOSBinarySensorEntityDescription, ...] = (
@@ -98,7 +98,7 @@ class AirOSBinarySensor(AirOSEntity, BinarySensorEntity):
super().__init__(coordinator)
self.entity_description = description
self._attr_unique_id = f"{coordinator.data.host.device_id}_{description.key}"
self._attr_unique_id = f"{coordinator.data.derived.mac}_{description.key}"
@property
def is_on(self) -> bool:
+180 -40
View File
@@ -2,6 +2,7 @@
from __future__ import annotations
from collections.abc import Mapping
import logging
from typing import Any
@@ -14,12 +15,29 @@ from airos.exceptions import (
)
import voluptuous as vol
from homeassistant.config_entries import ConfigFlow, ConfigFlowResult
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME
from homeassistant.config_entries import (
SOURCE_REAUTH,
SOURCE_RECONFIGURE,
ConfigFlow,
ConfigFlowResult,
)
from homeassistant.const import (
CONF_HOST,
CONF_PASSWORD,
CONF_SSL,
CONF_USERNAME,
CONF_VERIFY_SSL,
)
from homeassistant.data_entry_flow import section
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.selector import (
TextSelector,
TextSelectorConfig,
TextSelectorType,
)
from .const import DOMAIN
from .coordinator import AirOS
from .const import DEFAULT_SSL, DEFAULT_VERIFY_SSL, DOMAIN, SECTION_ADVANCED_SETTINGS
from .coordinator import AirOS8
_LOGGER = logging.getLogger(__name__)
@@ -28,6 +46,15 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
vol.Required(CONF_HOST): str,
vol.Required(CONF_USERNAME, default="ubnt"): str,
vol.Required(CONF_PASSWORD): str,
vol.Required(SECTION_ADVANCED_SETTINGS): section(
vol.Schema(
{
vol.Required(CONF_SSL, default=DEFAULT_SSL): bool,
vol.Required(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): bool,
}
),
{"collapsed": True},
),
}
)
@@ -35,48 +62,161 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
class AirOSConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Ubiquiti airOS."""
VERSION = 1
VERSION = 2
MINOR_VERSION = 1
def __init__(self) -> None:
"""Initialize the config flow."""
super().__init__()
self.airos_device: AirOS8
self.errors: dict[str, str] = {}
async def async_step_user(
self,
user_input: dict[str, Any] | None = None,
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Handle the initial step."""
errors: dict[str, str] = {}
"""Handle the manual input of host and credentials."""
self.errors = {}
if user_input is not None:
# By default airOS 8 comes with self-signed SSL certificates,
# with no option in the web UI to change or upload a custom certificate.
session = async_get_clientsession(self.hass, verify_ssl=False)
airos_device = AirOS(
host=user_input[CONF_HOST],
username=user_input[CONF_USERNAME],
password=user_input[CONF_PASSWORD],
session=session,
)
try:
await airos_device.login()
airos_data = await airos_device.status()
except (
AirOSConnectionSetupError,
AirOSDeviceConnectionError,
):
errors["base"] = "cannot_connect"
except (AirOSConnectionAuthenticationError, AirOSDataMissingError):
errors["base"] = "invalid_auth"
except AirOSKeyDataMissingError:
errors["base"] = "key_data_missing"
except Exception:
_LOGGER.exception("Unexpected exception")
errors["base"] = "unknown"
else:
await self.async_set_unique_id(airos_data.derived.mac)
self._abort_if_unique_id_configured()
validated_info = await self._validate_and_get_device_info(user_input)
if validated_info:
return self.async_create_entry(
title=airos_data.host.hostname, data=user_input
title=validated_info["title"],
data=validated_info["data"],
)
return self.async_show_form(
step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=self.errors
)
async def _validate_and_get_device_info(
self, config_data: dict[str, Any]
) -> dict[str, Any] | None:
"""Validate user input with the device API."""
# By default airOS 8 comes with self-signed SSL certificates,
# with no option in the web UI to change or upload a custom certificate.
session = async_get_clientsession(
self.hass,
verify_ssl=config_data[SECTION_ADVANCED_SETTINGS][CONF_VERIFY_SSL],
)
airos_device = AirOS8(
host=config_data[CONF_HOST],
username=config_data[CONF_USERNAME],
password=config_data[CONF_PASSWORD],
session=session,
use_ssl=config_data[SECTION_ADVANCED_SETTINGS][CONF_SSL],
)
try:
await airos_device.login()
airos_data = await airos_device.status()
except (
AirOSConnectionSetupError,
AirOSDeviceConnectionError,
):
self.errors["base"] = "cannot_connect"
except (AirOSConnectionAuthenticationError, AirOSDataMissingError):
self.errors["base"] = "invalid_auth"
except AirOSKeyDataMissingError:
self.errors["base"] = "key_data_missing"
except Exception:
_LOGGER.exception("Unexpected exception during credential validation")
self.errors["base"] = "unknown"
else:
await self.async_set_unique_id(airos_data.derived.mac)
if self.source in [SOURCE_REAUTH, SOURCE_RECONFIGURE]:
self._abort_if_unique_id_mismatch()
else:
self._abort_if_unique_id_configured()
return {"title": airos_data.host.hostname, "data": config_data}
return None
async def async_step_reauth(
self,
user_input: Mapping[str, Any],
) -> ConfigFlowResult:
"""Perform reauthentication upon an API authentication error."""
return await self.async_step_reauth_confirm(user_input)
async def async_step_reauth_confirm(
self,
user_input: Mapping[str, Any],
) -> ConfigFlowResult:
"""Perform reauthentication upon an API authentication error."""
self.errors = {}
if user_input:
validate_data = {**self._get_reauth_entry().data, **user_input}
if await self._validate_and_get_device_info(config_data=validate_data):
return self.async_update_reload_and_abort(
self._get_reauth_entry(),
data_updates=validate_data,
)
return self.async_show_form(
step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors
step_id="reauth_confirm",
data_schema=vol.Schema(
{
vol.Required(CONF_PASSWORD): TextSelector(
TextSelectorConfig(
type=TextSelectorType.PASSWORD,
autocomplete="current-password",
)
),
}
),
errors=self.errors,
)
async def async_step_reconfigure(
self,
user_input: Mapping[str, Any] | None = None,
) -> ConfigFlowResult:
"""Handle reconfiguration of airOS."""
self.errors = {}
entry = self._get_reconfigure_entry()
current_data = entry.data
if user_input is not None:
validate_data = {**current_data, **user_input}
if await self._validate_and_get_device_info(config_data=validate_data):
return self.async_update_reload_and_abort(
entry,
data_updates=validate_data,
)
return self.async_show_form(
step_id="reconfigure",
data_schema=vol.Schema(
{
vol.Required(CONF_PASSWORD): TextSelector(
TextSelectorConfig(
type=TextSelectorType.PASSWORD,
autocomplete="current-password",
)
),
vol.Required(SECTION_ADVANCED_SETTINGS): section(
vol.Schema(
{
vol.Required(
CONF_SSL,
default=current_data[SECTION_ADVANCED_SETTINGS][
CONF_SSL
],
): bool,
vol.Required(
CONF_VERIFY_SSL,
default=current_data[SECTION_ADVANCED_SETTINGS][
CONF_VERIFY_SSL
],
): bool,
}
),
{"collapsed": True},
),
}
),
errors=self.errors,
)
+5
View File
@@ -7,3 +7,8 @@ DOMAIN = "airos"
SCAN_INTERVAL = timedelta(minutes=1)
MANUFACTURER = "Ubiquiti"
DEFAULT_VERIFY_SSL = False
DEFAULT_SSL = True
SECTION_ADVANCED_SETTINGS = "advanced_settings"
@@ -4,7 +4,7 @@ from __future__ import annotations
import logging
from airos.airos8 import AirOS, AirOSData
from airos.airos8 import AirOS8, AirOS8Data
from airos.exceptions import (
AirOSConnectionAuthenticationError,
AirOSConnectionSetupError,
@@ -14,7 +14,7 @@ from airos.exceptions import (
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryError
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DOMAIN, SCAN_INTERVAL
@@ -24,13 +24,13 @@ _LOGGER = logging.getLogger(__name__)
type AirOSConfigEntry = ConfigEntry[AirOSDataUpdateCoordinator]
class AirOSDataUpdateCoordinator(DataUpdateCoordinator[AirOSData]):
class AirOSDataUpdateCoordinator(DataUpdateCoordinator[AirOS8Data]):
"""Class to manage fetching AirOS data from single endpoint."""
config_entry: AirOSConfigEntry
def __init__(
self, hass: HomeAssistant, config_entry: AirOSConfigEntry, airos_device: AirOS
self, hass: HomeAssistant, config_entry: AirOSConfigEntry, airos_device: AirOS8
) -> None:
"""Initialize the coordinator."""
self.airos_device = airos_device
@@ -42,14 +42,14 @@ class AirOSDataUpdateCoordinator(DataUpdateCoordinator[AirOSData]):
update_interval=SCAN_INTERVAL,
)
async def _async_update_data(self) -> AirOSData:
async def _async_update_data(self) -> AirOS8Data:
"""Fetch data from AirOS."""
try:
await self.airos_device.login()
return await self.airos_device.status()
except (AirOSConnectionAuthenticationError,) as err:
except AirOSConnectionAuthenticationError as err:
_LOGGER.exception("Error authenticating with airOS device")
raise ConfigEntryError(
raise ConfigEntryAuthFailed(
translation_domain=DOMAIN, translation_key="invalid_auth"
) from err
except (
+14 -4
View File
@@ -2,11 +2,11 @@
from __future__ import annotations
from homeassistant.const import CONF_HOST
from homeassistant.const import CONF_HOST, CONF_SSL
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN, MANUFACTURER
from .const import DOMAIN, MANUFACTURER, SECTION_ADVANCED_SETTINGS
from .coordinator import AirOSDataUpdateCoordinator
@@ -20,17 +20,27 @@ class AirOSEntity(CoordinatorEntity[AirOSDataUpdateCoordinator]):
super().__init__(coordinator)
airos_data = self.coordinator.data
url_schema = (
"https"
if coordinator.config_entry.data[SECTION_ADVANCED_SETTINGS][CONF_SSL]
else "http"
)
configuration_url: str | None = (
f"https://{coordinator.config_entry.data[CONF_HOST]}"
f"{url_schema}://{coordinator.config_entry.data[CONF_HOST]}"
)
self._attr_device_info = DeviceInfo(
connections={(CONNECTION_NETWORK_MAC, airos_data.derived.mac)},
configuration_url=configuration_url,
identifiers={(DOMAIN, str(airos_data.host.device_id))},
identifiers={(DOMAIN, airos_data.derived.mac)},
manufacturer=MANUFACTURER,
model=airos_data.host.devmodel,
model_id=(
sku
if (sku := airos_data.derived.sku) not in ["UNKNOWN", "AMBIGUOUS"]
else None
),
name=airos_data.host.hostname,
sw_version=airos_data.host.fwversion,
)
+3 -2
View File
@@ -4,7 +4,8 @@
"codeowners": ["@CoMPaTech"],
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/airos",
"integration_type": "device",
"iot_class": "local_polling",
"quality_scale": "bronze",
"requirements": ["airos==0.3.0"]
"quality_scale": "silver",
"requirements": ["airos==0.5.6"]
}
@@ -32,11 +32,11 @@ rules:
config-entry-unloading: done
docs-configuration-parameters: done
docs-installation-parameters: done
entity-unavailable: todo
entity-unavailable: done
integration-owner: done
log-when-unavailable: todo
parallel-updates: todo
reauthentication-flow: todo
log-when-unavailable: done
parallel-updates: done
reauthentication-flow: done
test-coverage: done
# Gold
@@ -48,9 +48,9 @@ rules:
docs-examples: todo
docs-known-limitations: done
docs-supported-devices: done
docs-supported-functions: todo
docs-supported-functions: done
docs-troubleshooting: done
docs-use-cases: todo
docs-use-cases: done
dynamic-devices: todo
entity-category: done
entity-device-class: done
@@ -60,7 +60,7 @@ rules:
icon-translations:
status: exempt
comment: no (custom) icons used or envisioned
reconfiguration-flow: todo
reconfiguration-flow: done
repair-issues: todo
stale-devices: todo
+2 -2
View File
@@ -26,7 +26,7 @@ from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from homeassistant.helpers.typing import StateType
from .coordinator import AirOSConfigEntry, AirOSData, AirOSDataUpdateCoordinator
from .coordinator import AirOS8Data, AirOSConfigEntry, AirOSDataUpdateCoordinator
from .entity import AirOSEntity
_LOGGER = logging.getLogger(__name__)
@@ -42,7 +42,7 @@ PARALLEL_UPDATES = 0
class AirOSSensorEntityDescription(SensorEntityDescription):
"""Describe an AirOS sensor."""
value_fn: Callable[[AirOSData], StateType]
value_fn: Callable[[AirOS8Data], StateType]
SENSORS: tuple[AirOSSensorEntityDescription, ...] = (
+46 -1
View File
@@ -2,6 +2,35 @@
"config": {
"flow_title": "Ubiquiti airOS device",
"step": {
"reauth_confirm": {
"data": {
"password": "[%key:common::config_flow::data::password%]"
},
"data_description": {
"password": "[%key:component::airos::config::step::user::data_description::password%]"
}
},
"reconfigure": {
"data": {
"password": "[%key:common::config_flow::data::password%]"
},
"data_description": {
"password": "[%key:component::airos::config::step::user::data_description::password%]"
},
"sections": {
"advanced_settings": {
"name": "[%key:component::airos::config::step::user::sections::advanced_settings::name%]",
"data": {
"ssl": "[%key:component::airos::config::step::user::sections::advanced_settings::data::ssl%]",
"verify_ssl": "[%key:common::config_flow::data::verify_ssl%]"
},
"data_description": {
"ssl": "[%key:component::airos::config::step::user::sections::advanced_settings::data_description::ssl%]",
"verify_ssl": "[%key:component::airos::config::step::user::sections::advanced_settings::data_description::verify_ssl%]"
}
}
}
},
"user": {
"data": {
"host": "[%key:common::config_flow::data::host%]",
@@ -12,6 +41,19 @@
"host": "IP address or hostname of the airOS device",
"username": "Administrator username for the airOS device, normally 'ubnt'",
"password": "Password configured through the UISP app or web interface"
},
"sections": {
"advanced_settings": {
"name": "Advanced settings",
"data": {
"ssl": "Use HTTPS",
"verify_ssl": "[%key:common::config_flow::data::verify_ssl%]"
},
"data_description": {
"ssl": "Whether the connection should be encrypted (required for most devices)",
"verify_ssl": "Whether the certificate should be verified when using HTTPS. This should be off for self-signed certificates"
}
}
}
}
},
@@ -22,7 +64,10 @@
"unknown": "[%key:common::config_flow::error::unknown%]"
},
"abort": {
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]"
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"reauth_successful": "[%key:common::config_flow::abort::reauth_successful%]",
"reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]",
"unique_id_mismatch": "Re-authentication should be used for the same device not a new one"
}
},
"entity": {
+1 -1
View File
@@ -7,5 +7,5 @@
"integration_type": "hub",
"iot_class": "local_polling",
"loggers": ["aioairq"],
"requirements": ["aioairq==0.4.6"]
"requirements": ["aioairq==0.4.7"]
}
+1 -1
View File
@@ -29,7 +29,7 @@
},
"data_description": {
"return_average": "air-Q allows to poll both the noisy sensor readings as well as the values averaged on the device (default)",
"clip_negatives": "For baseline calibration purposes, certain sensor values may briefly become negative. The default behaviour is to clip such values to 0"
"clip_negatives": "For baseline calibration purposes, certain sensor values may briefly become negative. The default behavior is to clip such values to 0"
}
}
}
@@ -23,6 +23,10 @@ STEP_USER_DATA_SCHEMA = vol.Schema(
}
)
URL_API_INTEGRATION = {
"url": "https://dashboard.airthings.com/integrations/api-integration"
}
class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Airthings."""
@@ -37,11 +41,7 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_show_form(
step_id="user",
data_schema=STEP_USER_DATA_SCHEMA,
description_placeholders={
"url": (
"https://dashboard.airthings.com/integrations/api-integration"
),
},
description_placeholders=URL_API_INTEGRATION,
)
errors = {}
@@ -65,5 +65,8 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_create_entry(title="Airthings", data=user_input)
return self.async_show_form(
step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors
step_id="user",
data_schema=STEP_USER_DATA_SCHEMA,
errors=errors,
description_placeholders=URL_API_INTEGRATION,
)
@@ -4,9 +4,9 @@
"user": {
"data": {
"id": "ID",
"secret": "Secret",
"description": "Login at {url} to find your credentials"
}
"secret": "Secret"
},
"description": "Log in at {url} to find your credentials"
}
},
"error": {
@@ -6,8 +6,13 @@ import dataclasses
import logging
from typing import Any
from airthings_ble import AirthingsBluetoothDeviceData, AirthingsDevice
from airthings_ble import (
AirthingsBluetoothDeviceData,
AirthingsDevice,
UnsupportedDeviceError,
)
from bleak import BleakError
from habluetooth import BluetoothServiceInfoBleak
import voluptuous as vol
from homeassistant.components import bluetooth
@@ -27,6 +32,7 @@ SERVICE_UUIDS = [
"b42e4a8e-ade7-11e4-89d3-123b93f75cba",
"b42e1c08-ade7-11e4-89d3-123b93f75cba",
"b42e3882-ade7-11e4-89d3-123b93f75cba",
"b42e90a2-ade7-11e4-89d3-123b93f75cba",
]
@@ -37,6 +43,7 @@ class Discovery:
name: str
discovery_info: BluetoothServiceInfo
device: AirthingsDevice
data: AirthingsBluetoothDeviceData
def get_name(device: AirthingsDevice) -> str:
@@ -44,7 +51,7 @@ def get_name(device: AirthingsDevice) -> str:
name = device.friendly_name()
if identifier := device.identifier:
name += f" ({identifier})"
name += f" ({device.model.value}{identifier})"
return name
@@ -62,8 +69,8 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
self._discovered_device: Discovery | None = None
self._discovered_devices: dict[str, Discovery] = {}
async def _get_device_data(
self, discovery_info: BluetoothServiceInfo
async def _get_device(
self, data: AirthingsBluetoothDeviceData, discovery_info: BluetoothServiceInfo
) -> AirthingsDevice:
ble_device = bluetooth.async_ble_device_from_address(
self.hass, discovery_info.address
@@ -72,10 +79,8 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
_LOGGER.debug("no ble_device in _get_device_data")
raise AirthingsDeviceUpdateError("No ble_device")
airthings = AirthingsBluetoothDeviceData(_LOGGER)
try:
data = await airthings.update_device(ble_device)
device = await data.update_device(ble_device)
except BleakError as err:
_LOGGER.error(
"Error connecting to and getting data from %s: %s",
@@ -83,12 +88,15 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
err,
)
raise AirthingsDeviceUpdateError("Failed getting device data") from err
except UnsupportedDeviceError:
_LOGGER.debug("Skipping unsupported device: %s", discovery_info.name)
raise
except Exception as err:
_LOGGER.error(
"Unknown error occurred from %s: %s", discovery_info.address, err
)
raise
return data
return device
async def async_step_bluetooth(
self, discovery_info: BluetoothServiceInfo
@@ -98,17 +106,21 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
await self.async_set_unique_id(discovery_info.address)
self._abort_if_unique_id_configured()
data = AirthingsBluetoothDeviceData(logger=_LOGGER)
try:
device = await self._get_device_data(discovery_info)
device = await self._get_device(data=data, discovery_info=discovery_info)
except AirthingsDeviceUpdateError:
return self.async_abort(reason="cannot_connect")
except UnsupportedDeviceError:
return self.async_abort(reason="unsupported_device")
except Exception:
_LOGGER.exception("Unknown error occurred")
return self.async_abort(reason="unknown")
name = get_name(device)
self.context["title_placeholders"] = {"name": name}
self._discovered_device = Discovery(name, discovery_info, device)
self._discovered_device = Discovery(name, discovery_info, device, data=data)
return await self.async_step_bluetooth_confirm()
@@ -117,6 +129,12 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
) -> ConfigFlowResult:
"""Confirm discovery."""
if user_input is not None:
if (
self._discovered_device is not None
and self._discovered_device.device.firmware.need_firmware_upgrade
):
return self.async_abort(reason="firmware_upgrade_required")
return self.async_create_entry(
title=self.context["title_placeholders"]["name"], data={}
)
@@ -137,6 +155,9 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
self._abort_if_unique_id_configured()
discovery = self._discovered_devices[address]
if discovery.device.firmware.need_firmware_upgrade:
return self.async_abort(reason="firmware_upgrade_required")
self.context["title_placeholders"] = {
"name": discovery.name,
}
@@ -146,32 +167,53 @@ class AirthingsConfigFlow(ConfigFlow, domain=DOMAIN):
return self.async_create_entry(title=discovery.name, data={})
current_addresses = self._async_current_ids(include_ignore=False)
devices: list[BluetoothServiceInfoBleak] = []
for discovery_info in async_discovered_service_info(self.hass):
address = discovery_info.address
if address in current_addresses or address in self._discovered_devices:
continue
if MFCT_ID not in discovery_info.manufacturer_data:
continue
if not any(uuid in SERVICE_UUIDS for uuid in discovery_info.service_uuids):
_LOGGER.debug(
"Skipping unsupported device: %s (%s)", discovery_info.name, address
)
continue
devices.append(discovery_info)
for discovery_info in devices:
address = discovery_info.address
data = AirthingsBluetoothDeviceData(logger=_LOGGER)
try:
device = await self._get_device_data(discovery_info)
device = await self._get_device(data, discovery_info)
except AirthingsDeviceUpdateError:
return self.async_abort(reason="cannot_connect")
_LOGGER.error(
"Error connecting to and getting data from %s (%s)",
discovery_info.name,
discovery_info.address,
)
continue
except UnsupportedDeviceError:
_LOGGER.debug(
"Skipping unsupported device: %s (%s)",
discovery_info.name,
discovery_info.address,
)
continue
except Exception:
_LOGGER.exception("Unknown error occurred")
return self.async_abort(reason="unknown")
name = get_name(device)
self._discovered_devices[address] = Discovery(name, discovery_info, device)
_LOGGER.debug("Discovered Airthings device: %s (%s)", name, address)
self._discovered_devices[address] = Discovery(
name, discovery_info, device, data
)
if not self._discovered_devices:
return self.async_abort(reason="no_devices_found")
titles = {
address: discovery.device.name
address: get_name(discovery.device)
for (address, discovery) in self._discovered_devices.items()
}
return self.async_show_form(
@@ -17,6 +17,10 @@
{
"manufacturer_id": 820,
"service_uuid": "b42e3882-ade7-11e4-89d3-123b93f75cba"
},
{
"manufacturer_id": 820,
"service_uuid": "b42e90a2-ade7-11e4-89d3-123b93f75cba"
}
],
"codeowners": ["@vincegio", "@LaStrada"],
@@ -24,5 +28,5 @@
"dependencies": ["bluetooth_adapters"],
"documentation": "https://www.home-assistant.io/integrations/airthings_ble",
"iot_class": "local_polling",
"requirements": ["airthings-ble==0.9.2"]
"requirements": ["airthings-ble==1.1.1"]
}
@@ -16,10 +16,12 @@ from homeassistant.components.sensor import (
from homeassistant.const import (
CONCENTRATION_PARTS_PER_BILLION,
CONCENTRATION_PARTS_PER_MILLION,
LIGHT_LUX,
PERCENTAGE,
EntityCategory,
Platform,
UnitOfPressure,
UnitOfSoundPressure,
UnitOfTemperature,
)
from homeassistant.core import HomeAssistant, callback
@@ -112,8 +114,25 @@ SENSORS_MAPPING_TEMPLATE: dict[str, SensorEntityDescription] = {
state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=0,
),
"lux": SensorEntityDescription(
key="lux",
device_class=SensorDeviceClass.ILLUMINANCE,
native_unit_of_measurement=LIGHT_LUX,
state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=0,
),
"noise": SensorEntityDescription(
key="noise",
translation_key="ambient_noise",
device_class=SensorDeviceClass.SOUND_PRESSURE,
native_unit_of_measurement=UnitOfSoundPressure.WEIGHTED_DECIBEL_A,
state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=0,
),
}
PARALLEL_UPDATES = 0
@callback
def async_migrate(hass: HomeAssistant, address: str, sensor_name: str) -> None:
@@ -6,6 +6,9 @@
"description": "[%key:component::bluetooth::config::step::user::description%]",
"data": {
"address": "[%key:common::config_flow::data::device%]"
},
"data_description": {
"address": "The Airthings devices discovered via Bluetooth."
}
},
"bluetooth_confirm": {
@@ -17,6 +20,8 @@
"already_in_progress": "[%key:common::config_flow::abort::already_in_progress%]",
"already_configured": "[%key:common::config_flow::abort::already_configured_device%]",
"cannot_connect": "[%key:common::config_flow::error::cannot_connect%]",
"firmware_upgrade_required": "Your device requires a firmware upgrade. Please use the Airthings app (Android/iOS) to upgrade it.",
"unsupported_device": "Unsupported device",
"unknown": "[%key:common::config_flow::error::unknown%]"
}
},
@@ -36,6 +41,9 @@
},
"illuminance": {
"name": "[%key:component::sensor::entity_component::illuminance::name%]"
},
"ambient_noise": {
"name": "Ambient noise"
}
}
}
@@ -2,17 +2,14 @@
from airtouch4pyapi import AirTouch
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from .coordinator import AirtouchDataUpdateCoordinator
from .coordinator import AirTouch4ConfigEntry, AirtouchDataUpdateCoordinator
PLATFORMS = [Platform.CLIMATE]
type AirTouch4ConfigEntry = ConfigEntry[AirtouchDataUpdateCoordinator]
async def async_setup_entry(hass: HomeAssistant, entry: AirTouch4ConfigEntry) -> bool:
"""Set up AirTouch4 from a config entry."""
@@ -22,7 +19,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirTouch4ConfigEntry) ->
info = airtouch.GetAcs()
if not info:
raise ConfigEntryNotReady
coordinator = AirtouchDataUpdateCoordinator(hass, airtouch)
coordinator = AirtouchDataUpdateCoordinator(hass, entry, airtouch)
await coordinator.async_config_entry_first_refresh()
entry.runtime_data = coordinator
@@ -2,26 +2,34 @@
import logging
from airtouch4pyapi import AirTouch
from airtouch4pyapi.airtouch import AirTouchStatus
from homeassistant.components.climate import SCAN_INTERVAL
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
type AirTouch4ConfigEntry = ConfigEntry[AirtouchDataUpdateCoordinator]
class AirtouchDataUpdateCoordinator(DataUpdateCoordinator):
"""Class to manage fetching Airtouch data."""
def __init__(self, hass, airtouch):
def __init__(
self, hass: HomeAssistant, entry: AirTouch4ConfigEntry, airtouch: AirTouch
) -> None:
"""Initialize global Airtouch data updater."""
self.airtouch = airtouch
super().__init__(
hass,
_LOGGER,
config_entry=entry,
name=DOMAIN,
update_interval=SCAN_INTERVAL,
)
@@ -11,5 +11,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone",
"iot_class": "local_polling",
"loggers": ["aioairzone"],
"requirements": ["aioairzone==1.0.0"]
"requirements": ["aioairzone==1.0.1"]
}
+19 -1
View File
@@ -6,17 +6,19 @@ from collections.abc import Callable
from dataclasses import dataclass
from typing import Any, Final
from aioairzone.common import GrilleAngle, OperationMode, SleepTimeout
from aioairzone.common import GrilleAngle, OperationMode, QAdapt, SleepTimeout
from aioairzone.const import (
API_COLD_ANGLE,
API_HEAT_ANGLE,
API_MODE,
API_Q_ADAPT,
API_SLEEP,
AZD_COLD_ANGLE,
AZD_HEAT_ANGLE,
AZD_MASTER,
AZD_MODE,
AZD_MODES,
AZD_Q_ADAPT,
AZD_SLEEP,
AZD_ZONES,
)
@@ -65,6 +67,14 @@ SLEEP_DICT: Final[dict[str, int]] = {
"90m": SleepTimeout.SLEEP_90,
}
Q_ADAPT_DICT: Final[dict[str, int]] = {
"standard": QAdapt.STANDARD,
"power": QAdapt.POWER,
"silence": QAdapt.SILENCE,
"minimum": QAdapt.MINIMUM,
"maximum": QAdapt.MAXIMUM,
}
def main_zone_options(
zone_data: dict[str, Any],
@@ -83,6 +93,14 @@ MAIN_ZONE_SELECT_TYPES: Final[tuple[AirzoneSelectDescription, ...]] = (
options_fn=main_zone_options,
translation_key="modes",
),
AirzoneSelectDescription(
api_param=API_Q_ADAPT,
entity_category=EntityCategory.CONFIG,
key=AZD_Q_ADAPT,
options=list(Q_ADAPT_DICT),
options_dict=Q_ADAPT_DICT,
translation_key="q_adapt",
),
)
@@ -63,6 +63,16 @@
"stop": "Stop"
}
},
"q_adapt": {
"name": "Q-Adapt",
"state": {
"standard": "Standard",
"power": "Power",
"silence": "Silence",
"minimum": "Minimum",
"maximum": "Maximum"
}
},
"sleep_times": {
"name": "Sleep",
"state": {
@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone_cloud",
"iot_class": "cloud_push",
"loggers": ["aioairzone_cloud"],
"requirements": ["aioairzone-cloud==0.7.1"]
"requirements": ["aioairzone-cloud==0.7.2"]
}
@@ -2,39 +2,96 @@
from __future__ import annotations
from homeassistant.config_entries import ConfigEntry
from genie_partner_sdk.client import AladdinConnectClient
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
from homeassistant.helpers import issue_registry as ir
from homeassistant.helpers import (
aiohttp_client,
config_entry_oauth2_flow,
device_registry as dr,
)
DOMAIN = "aladdin_connect"
from . import api
from .const import CONFIG_FLOW_MINOR_VERSION, CONFIG_FLOW_VERSION, DOMAIN
from .coordinator import AladdinConnectConfigEntry, AladdinConnectCoordinator
PLATFORMS: list[Platform] = [Platform.COVER, Platform.SENSOR]
async def async_setup_entry(hass: HomeAssistant, _: ConfigEntry) -> bool:
"""Set up Aladdin Connect from a config entry."""
ir.async_create_issue(
hass,
DOMAIN,
DOMAIN,
is_fixable=False,
severity=ir.IssueSeverity.ERROR,
translation_key="integration_removed",
translation_placeholders={
"entries": "/config/integrations/integration/aladdin_connect",
},
async def async_setup_entry(
hass: HomeAssistant, entry: AladdinConnectConfigEntry
) -> bool:
"""Set up Aladdin Connect Genie from a config entry."""
implementation = (
await config_entry_oauth2_flow.async_get_config_entry_implementation(
hass, entry
)
)
session = config_entry_oauth2_flow.OAuth2Session(hass, entry, implementation)
client = AladdinConnectClient(
api.AsyncConfigEntryAuth(aiohttp_client.async_get_clientsession(hass), session)
)
doors = await client.get_doors()
entry.runtime_data = {
door.unique_id: AladdinConnectCoordinator(hass, entry, client, door)
for door in doors
}
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
remove_stale_devices(hass, entry)
return True
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_unload_entry(
hass: HomeAssistant, entry: AladdinConnectConfigEntry
) -> bool:
"""Unload a config entry."""
return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
async def async_migrate_entry(
hass: HomeAssistant, config_entry: AladdinConnectConfigEntry
) -> bool:
"""Migrate old config."""
if config_entry.version < CONFIG_FLOW_VERSION:
config_entry.async_start_reauth(hass)
new_data = {**config_entry.data}
hass.config_entries.async_update_entry(
config_entry,
data=new_data,
version=CONFIG_FLOW_VERSION,
minor_version=CONFIG_FLOW_MINOR_VERSION,
)
return True
async def async_remove_entry(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Remove a config entry."""
if not hass.config_entries.async_loaded_entries(DOMAIN):
ir.async_delete_issue(hass, DOMAIN, DOMAIN)
# Remove any remaining disabled or ignored entries
for _entry in hass.config_entries.async_entries(DOMAIN):
hass.async_create_task(hass.config_entries.async_remove(_entry.entry_id))
def remove_stale_devices(
hass: HomeAssistant,
config_entry: AladdinConnectConfigEntry,
) -> None:
"""Remove stale devices from device registry."""
device_registry = dr.async_get(hass)
device_entries = dr.async_entries_for_config_entry(
device_registry, config_entry.entry_id
)
all_device_ids = set(config_entry.runtime_data)
for device_entry in device_entries:
device_id: str | None = None
for identifier in device_entry.identifiers:
if identifier[0] == DOMAIN:
device_id = identifier[1]
break
if device_id and device_id not in all_device_ids:
device_registry.async_update_device(
device_entry.id, remove_config_entry_id=config_entry.entry_id
)
@@ -0,0 +1,33 @@
"""API for Aladdin Connect Genie bound to Home Assistant OAuth."""
from typing import cast
from aiohttp import ClientSession
from genie_partner_sdk.auth import Auth
from homeassistant.helpers import config_entry_oauth2_flow
API_URL = "https://twdvzuefzh.execute-api.us-east-2.amazonaws.com/v1"
API_KEY = "k6QaiQmcTm2zfaNns5L1Z8duBtJmhDOW8JawlCC3"
class AsyncConfigEntryAuth(Auth):
"""Provide Aladdin Connect Genie authentication tied to an OAuth2 based config entry."""
def __init__(
self,
websession: ClientSession,
oauth_session: config_entry_oauth2_flow.OAuth2Session,
) -> None:
"""Initialize Aladdin Connect Genie auth."""
super().__init__(
websession, API_URL, oauth_session.token["access_token"], API_KEY
)
self._oauth_session = oauth_session
async def async_get_access_token(self) -> str:
"""Return a valid access token."""
if not self._oauth_session.valid_token:
await self._oauth_session.async_ensure_token_valid()
return cast(str, self._oauth_session.token["access_token"])
@@ -0,0 +1,14 @@
"""application_credentials platform the Aladdin Connect Genie integration."""
from homeassistant.components.application_credentials import AuthorizationServer
from homeassistant.core import HomeAssistant
from .const import OAUTH2_AUTHORIZE, OAUTH2_TOKEN
async def async_get_authorization_server(hass: HomeAssistant) -> AuthorizationServer:
"""Return authorization server."""
return AuthorizationServer(
authorize_url=OAUTH2_AUTHORIZE,
token_url=OAUTH2_TOKEN,
)
@@ -1,11 +1,74 @@
"""Config flow for Aladdin Connect integration."""
"""Config flow for Aladdin Connect Genie."""
from homeassistant.config_entries import ConfigFlow
from collections.abc import Mapping
import logging
from typing import Any
from . import DOMAIN
import jwt
import voluptuous as vol
from homeassistant.config_entries import SOURCE_REAUTH, ConfigFlowResult
from homeassistant.helpers import config_entry_oauth2_flow
from .const import CONFIG_FLOW_MINOR_VERSION, CONFIG_FLOW_VERSION, DOMAIN
class AladdinConnectConfigFlow(ConfigFlow, domain=DOMAIN):
"""Handle a config flow for Aladdin Connect."""
class OAuth2FlowHandler(
config_entry_oauth2_flow.AbstractOAuth2FlowHandler, domain=DOMAIN
):
"""Config flow to handle Aladdin Connect Genie OAuth2 authentication."""
VERSION = 1
DOMAIN = DOMAIN
VERSION = CONFIG_FLOW_VERSION
MINOR_VERSION = CONFIG_FLOW_MINOR_VERSION
async def async_step_user(
self, user_input: dict[str, Any] | None = None
) -> ConfigFlowResult:
"""Check we have the cloud integration set up."""
if "cloud" not in self.hass.config.components:
return self.async_abort(
reason="cloud_not_enabled",
description_placeholders={"default_config": "default_config"},
)
return await super().async_step_user(user_input)
async def async_step_reauth(
self, user_input: Mapping[str, Any]
) -> ConfigFlowResult:
"""Perform reauth upon API auth error or upgrade from v1 to v2."""
return await self.async_step_reauth_confirm()
async def async_step_reauth_confirm(
self, user_input: Mapping[str, Any] | None = None
) -> ConfigFlowResult:
"""Dialog that informs the user that reauth is required."""
if user_input is None:
return self.async_show_form(
step_id="reauth_confirm",
data_schema=vol.Schema({}),
)
return await self.async_step_user()
async def async_oauth_create_entry(self, data: dict) -> ConfigFlowResult:
"""Create an oauth config entry or update existing entry for reauth."""
# Extract the user ID from the JWT token's 'sub' field
token = jwt.decode(
data["token"]["access_token"], options={"verify_signature": False}
)
user_id = token["sub"]
await self.async_set_unique_id(user_id)
if self.source == SOURCE_REAUTH:
self._abort_if_unique_id_mismatch(reason="wrong_account")
return self.async_update_reload_and_abort(
self._get_reauth_entry(), data=data
)
self._abort_if_unique_id_configured()
return self.async_create_entry(title="Aladdin Connect", data=data)
@property
def logger(self) -> logging.Logger:
"""Return logger."""
return logging.getLogger(__name__)
@@ -0,0 +1,14 @@
"""Constants for the Aladdin Connect Genie integration."""
from typing import Final
from homeassistant.components.cover import CoverEntityFeature
DOMAIN = "aladdin_connect"
CONFIG_FLOW_VERSION = 2
CONFIG_FLOW_MINOR_VERSION = 1
OAUTH2_AUTHORIZE = "https://app.aladdinconnect.com/login.html"
OAUTH2_TOKEN = "https://twdvzuefzh.execute-api.us-east-2.amazonaws.com/v1/oauth2/token"
SUPPORTED_FEATURES: Final = CoverEntityFeature.OPEN | CoverEntityFeature.CLOSE
@@ -0,0 +1,50 @@
"""Coordinator for Aladdin Connect integration."""
from __future__ import annotations
from datetime import timedelta
import logging
from genie_partner_sdk.client import AladdinConnectClient
from genie_partner_sdk.model import GarageDoor
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator
_LOGGER = logging.getLogger(__name__)
type AladdinConnectConfigEntry = ConfigEntry[dict[str, AladdinConnectCoordinator]]
SCAN_INTERVAL = timedelta(seconds=15)
class AladdinConnectCoordinator(DataUpdateCoordinator[GarageDoor]):
"""Coordinator for Aladdin Connect integration."""
def __init__(
self,
hass: HomeAssistant,
entry: AladdinConnectConfigEntry,
client: AladdinConnectClient,
garage_door: GarageDoor,
) -> None:
"""Initialize the coordinator."""
super().__init__(
hass,
logger=_LOGGER,
config_entry=entry,
name="Aladdin Connect Coordinator",
update_interval=SCAN_INTERVAL,
)
self.client = client
self.data = garage_door
async def _async_update_data(self) -> GarageDoor:
"""Fetch data from the Aladdin Connect API."""
await self.client.update_door(self.data.device_id, self.data.door_number)
self.data.status = self.client.get_door_status(
self.data.device_id, self.data.door_number
)
self.data.battery_level = self.client.get_battery_status(
self.data.device_id, self.data.door_number
)
return self.data
@@ -0,0 +1,64 @@
"""Cover Entity for Genie Garage Door."""
from __future__ import annotations
from typing import Any
from homeassistant.components.cover import CoverDeviceClass, CoverEntity
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
from .const import SUPPORTED_FEATURES
from .coordinator import AladdinConnectConfigEntry, AladdinConnectCoordinator
from .entity import AladdinConnectEntity
async def async_setup_entry(
hass: HomeAssistant,
entry: AladdinConnectConfigEntry,
async_add_entities: AddConfigEntryEntitiesCallback,
) -> None:
"""Set up the cover platform."""
coordinators = entry.runtime_data
async_add_entities(
AladdinCoverEntity(coordinator) for coordinator in coordinators.values()
)
class AladdinCoverEntity(AladdinConnectEntity, CoverEntity):
"""Representation of Aladdin Connect cover."""
_attr_device_class = CoverDeviceClass.GARAGE
_attr_supported_features = SUPPORTED_FEATURES
_attr_name = None
def __init__(self, coordinator: AladdinConnectCoordinator) -> None:
"""Initialize the Aladdin Connect cover."""
super().__init__(coordinator)
self._attr_unique_id = coordinator.data.unique_id
async def async_open_cover(self, **kwargs: Any) -> None:
"""Issue open command to cover."""
await self.client.open_door(self._device_id, self._number)
async def async_close_cover(self, **kwargs: Any) -> None:
"""Issue close command to cover."""
await self.client.close_door(self._device_id, self._number)
@property
def is_closed(self) -> bool | None:
"""Update is closed attribute."""
if (status := self.coordinator.data.status) is None:
return None
return status == "closed"
@property
def is_closing(self) -> bool | None:
"""Update is closing attribute."""
return self.coordinator.data.status == "closing"
@property
def is_opening(self) -> bool | None:
"""Update is opening attribute."""
return self.coordinator.data.status == "opening"
@@ -0,0 +1,32 @@
"""Base class for Aladdin Connect entities."""
from genie_partner_sdk.client import AladdinConnectClient
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import AladdinConnectCoordinator
class AladdinConnectEntity(CoordinatorEntity[AladdinConnectCoordinator]):
"""Defines a base Aladdin Connect entity."""
_attr_has_entity_name = True
def __init__(self, coordinator: AladdinConnectCoordinator) -> None:
"""Initialize Aladdin Connect entity."""
super().__init__(coordinator)
device = coordinator.data
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, device.unique_id)},
manufacturer="Aladdin Connect",
name=device.name,
)
self._device_id = device.device_id
self._number = device.door_number
@property
def client(self) -> AladdinConnectClient:
"""Return the client for this entity."""
return self.coordinator.client
@@ -1,9 +1,16 @@
{
"domain": "aladdin_connect",
"name": "Aladdin Connect",
"codeowners": [],
"codeowners": ["@swcloudgenie"],
"config_flow": true,
"dependencies": ["application_credentials"],
"dhcp": [
{
"hostname": "gdocntl-*"
}
],
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
"integration_type": "system",
"integration_type": "hub",
"iot_class": "cloud_polling",
"requirements": []
"requirements": ["genie-partner-sdk==1.0.11"]
}

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