Compare commits

...

1113 Commits

Author SHA1 Message Date
Franck Nijhof
ce12d82624 2023.11.1 (#103301) 2023-11-04 14:27:14 +01:00
Raman Gupta
9eff9ee374 Fix zwave_js cover bug for Window Covering CC values (#103289)
* Fix cover bug for Window Covering CC values

* update test

* Fix fixture

* Remove no-op line from test
2023-11-04 12:53:50 +01:00
Rami Mosleh
1ef460cffe Fix sensor unique id in Islamic prayer times (#103356) 2023-11-04 12:53:24 +01:00
Robert Svensson
42243f1433 Handle UniFi traffic rules not supported on older versions (#103346) 2023-11-04 12:53:21 +01:00
Jan Rieger
8a07c10d88 Report correct weather condition at night for Met (#103334)
* Report correct weather condition at night for Met, fixes #68369, fixes #89001

* Update homeassistant/components/met/weather.py

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

---------

Co-authored-by: Jan-Philipp Benecke <github@bnck.me>
2023-11-04 12:53:18 +01:00
Joakim Sørensen
730a3f7870 Remove extra from traccar webhook (#103319) 2023-11-04 12:53:15 +01:00
Jan-Philipp Benecke
718901d2ad Fix typo in Todoist config flow (#103317) 2023-11-04 12:53:12 +01:00
Raman Gupta
d95d4d0184 Add script to convert zwave_js device diagnostics to fixture (#102799) 2023-11-04 12:53:06 +01:00
Ian
67ce51899f Bump py_nextbusnext to v1.0.2 to fix TypeError (#103214)
* Bump py_nextbusnext to v1.0.1 to fix TypeError

Currently throwing an error as a set is passed into the method that is currently
expecting a Sequence. That method is technically compatible with Iterable, so the
latest patch relaxes that restriction.

* Bump version to v1.0.2 to fix error message
2023-11-04 12:46:05 +01:00
starkillerOG
810681b357 Bump reolink-aio to 0.7.14 and improve typing of Reolink (#103129)
* Improve typing

* fix mypy

* Further improve typing

* Restore Literal typing

* Bump reolink_aio to 0.7.13

* Bump reolink-aio to 0.7.14
2023-11-04 12:46:01 +01:00
Franck Nijhof
0b0f099d27 Bumped version to 2023.11.1 2023-11-03 13:02:22 +01:00
tronikos
4a56d0ec1d Bump opower to 0.0.39 (#103292) 2023-11-03 13:02:04 +01:00
Raman Gupta
910654bf78 Fix firmware update failure (#103277) 2023-11-03 13:02:01 +01:00
Marcel van der Veldt
1a823376d8 Fix Matter 1.2 locks with specific unlatch/unbolt support (#103275) 2023-11-03 13:01:56 +01:00
Pedro Januário
ba634ac346 add library logger info on ecoforest integration manifest (#103274) 2023-11-03 13:01:24 +01:00
J. Nick Koston
92486b1ff0 Bump yalexs-ble to 2.3.2 (#103267) 2023-11-03 12:59:19 +01:00
Tom
06d26b7c7f Fix Plugwise Schedule selection (#103262) 2023-11-03 12:59:16 +01:00
Joakim Plate
1dcd66d75c Remove measurement flag from timestamp in gardena bluetooth (#103245)
Remove measurement flag from timestamp
2023-11-03 12:59:13 +01:00
Charles Garwood
c811e0db49 Bump pyenphase to 1.14.1 (#103239) 2023-11-03 12:59:09 +01:00
Matthias Alphart
dc30ddc24b Fix Fronius entity initialisation (#103211)
* Use None instead of raising ValueError if value invalid

* use async_dispatcher_send
2023-11-03 12:59:06 +01:00
Jan Bouwhuis
239fa04d02 Fix mqtt config validation error handling (#103210)
* Fix MQTT config check

* Fix handling invalid enity_category for sensors

* Improve docstr

* Update comment

* Use correct util for yaml dump
2023-11-03 12:59:03 +01:00
Xitee
2be229c5b5 Fix roomba error if battery stats are not available (#103196) 2023-11-03 12:59:00 +01:00
Xitee
5b4df0f7ff Fix roomba translation key mismatch (#103191) 2023-11-03 12:58:57 +01:00
mkmer
355b51d4c8 Catch unexpected response in Honeywell (#103169)
catch unexpected response
2023-11-03 12:58:54 +01:00
Joost Lekkerkerker
0c8074bab4 Bump aiowaqi to 3.0.0 (#103166) 2023-11-03 12:58:51 +01:00
G Johansson
acd98e9b40 Bump python-holidays to 0.35 (#103092) 2023-11-03 12:58:45 +01:00
Franck Nijhof
0b8d4235c3 2023.11.0 (#103164) 2023-11-01 15:59:51 +01:00
Franck Nijhof
4ce859b4e4 Bumped version to 2023.11.0 2023-11-01 11:24:41 +01:00
Franck Nijhof
18acec32b8 Bumped version to 2023.11.0b6 2023-11-01 11:22:25 +01:00
Bram Kragten
cfa2f2ce61 Update frontend to 20231030.1 (#103163) 2023-11-01 11:22:16 +01:00
Jan Bouwhuis
aa5ea5ebc3 Fix mqtt is not reloading without yaml config (#103159) 2023-11-01 11:22:13 +01:00
J. Nick Koston
bcea021c14 Allow non-admins to subscribe to the issue registry updated event (#103145) 2023-11-01 11:22:10 +01:00
Allen Porter
ea2d2ba7b7 Improve fitbit oauth token error handling in config flow (#103131)
* Improve fitbit oauth token error handling in config flow

* Apply suggestions from code review

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

* Update tests with updated error reason

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-11-01 11:22:07 +01:00
Teemu R
c5f21fefbe Bump python-kasa to 0.5.4 for tplink (#103038) 2023-11-01 11:22:03 +01:00
Franck Nijhof
9910f9e0ae Bumped version to 2023.11.0b5 2023-10-31 19:43:21 +01:00
J. Nick Koston
f0a06efa1f Fix race in starting reauth flows (#103130) 2023-10-31 19:43:05 +01:00
J. Nick Koston
8992d15ffc Bump aiohomekit to 3.0.9 (#103123) 2023-10-31 19:43:02 +01:00
Paul Bottein
e097dc02dd Don't try to load resources in safe mode (#103122) 2023-10-31 19:42:59 +01:00
starkillerOG
bfae1468d6 Bump reolink-aio to 0.7.12 (#103120) 2023-10-31 19:42:52 +01:00
Christopher Fenner
09ed6e9f9b Handle exception introduced with recent PyViCare update (#103110) 2023-10-31 19:42:48 +01:00
Erik Montnemery
040ecb74e0 Add todo to core files (#103102) 2023-10-31 19:42:45 +01:00
Erik Montnemery
a48e63aa28 Fix todoist todo tests (#103101) 2023-10-31 19:42:41 +01:00
Erik Montnemery
19479b2a68 Fix local_todo todo tests (#103099) 2023-10-31 19:42:36 +01:00
Franck Nijhof
9ae29e243d Bumped version to 2023.11.0b4 2023-10-31 13:30:10 +01:00
Joost Lekkerkerker
e309bd764b Abort config flow if Google Tasks API is not enabled (#103114)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-31 13:29:52 +01:00
Christopher Fenner
777ffe6946 Fix client id label in ViCare integration (#103111) 2023-10-31 13:29:49 +01:00
Robert Resch
fa0f679a9a Fix todo.remove_item frontend (#103108) 2023-10-31 13:29:46 +01:00
Erik Montnemery
26b7e94c4f Fix shopping_list todo tests (#103100) 2023-10-31 13:29:43 +01:00
Erik Montnemery
957998ea8d Fix google_tasks todo tests (#103098) 2023-10-31 13:29:40 +01:00
Erik Montnemery
abaeacbd6b Fix restore state for light when saved attribute is None (#103096) 2023-10-31 13:29:36 +01:00
Bram Kragten
d76c16fa3a Update frontend to 20231030.0 (#103086) 2023-10-31 13:29:33 +01:00
G Johansson
67edb98e59 Fix Met Device Info (#103082) 2023-10-31 13:29:30 +01:00
Robert Resch
376a79eb42 Refactor todo services and their schema (#103079) 2023-10-31 13:29:27 +01:00
Rami Mosleh
41500cbe9b Code cleanup for transmission integration (#103078) 2023-10-31 13:29:24 +01:00
Paul Manzotti
06f27e7e74 Update geniushub-client to v0.7.1 (#103071) 2023-10-31 13:29:19 +01:00
Franck Nijhof
a3ebfaebe7 Bumped version to 2023.11.0b3 2023-10-30 19:59:32 +01:00
Joost Lekkerkerker
8d781ff063 Add 2 properties to Withings diagnostics (#103067) 2023-10-30 19:59:21 +01:00
Joost Lekkerkerker
bac39f0061 Show a warning when no Withings data found (#103066) 2023-10-30 19:59:17 +01:00
David Knowles
c7b702f3c2 Bump pyschlage to 2023.10.0 (#103065) 2023-10-30 19:59:14 +01:00
Christopher Fenner
3728f3da69 Update PyViCare to v2.28.1 for ViCare integration (#103064) 2023-10-30 19:59:11 +01:00
tronikos
31d8f4b35d Fix Opower not refreshing statistics when there are no forecast entities (#103058)
Ensure _insert_statistics is periodically called
2023-10-30 19:59:08 +01:00
Mike Woudenberg
f113d9aa71 Use correct config entry field to update when IP changes in loqed (#103051) 2023-10-30 19:59:05 +01:00
Jack Boswell
891ad0b1be Bump starlink-grpc-core to 1.1.3 (#103043) 2023-10-30 19:59:02 +01:00
Jirka
5c16a8247a Update MQTT QoS description string (#103036)
Update strings.json
2023-10-30 19:58:58 +01:00
Allen Porter
483671bf9f Bump google-nest-sdm to 3.0.3 (#103035) 2023-10-30 19:58:54 +01:00
G-Two
6f73d2aac5 Bump to subarulink 0.7.8 (#103033) 2023-10-30 19:58:50 +01:00
Allen Porter
f5b3661836 Fix bug in fitbit credential import for expired tokens (#103024)
* Fix bug in fitbit credential import on token refresh

* Use stable test ids

* Update homeassistant/components/fitbit/sensor.py

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

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-30 19:58:47 +01:00
kpine
f70c13214c Revert "Fix temperature setting for multi-setpoint z-wave device (#102395)" (#103022)
This reverts commit 2d6dc2bccc.
2023-10-30 19:58:43 +01:00
Raman Gupta
70e8978123 Fix zwave_js siren name (#103016)
* Fix zwave_js.siren name

* Fix test
2023-10-30 19:58:40 +01:00
Diogo Gomes
031b1c26ce Fix utility_meter reset when DST change occurs (#103012) 2023-10-30 19:58:37 +01:00
Nortonko
13580a334f Bump python-androidtv to 0.0.73 (#102999)
* Update manifest.json

Bump python-androidtv to version 0.0.73

* bump androidtv 0.0.73

* bump androidtv 0.0.73
2023-10-30 19:58:34 +01:00
Michael
e81bfb959e Fix proximity entity id (#102992)
* fix proximity entity id

* extend test to cover entity id
2023-10-30 19:58:31 +01:00
Tom Puttemans
fefe930506 DSMR Gas currently delivered device state class conflict (#102991)
Fixes #102985
2023-10-30 19:58:28 +01:00
David Bonnes
5ac7e8b1ac Harden evohome against failures to retrieve high-precision temps (#102989)
fix hass-logger-period
2023-10-30 19:58:24 +01:00
tronikos
36512f7157 Bump opower to 0.0.38 (#102983) 2023-10-30 19:58:21 +01:00
Bouwe Westerdijk
cc3ae9e103 Correct total state_class of huisbaasje sensors (#102945)
* Change all cumulative-interval sensors to TOTAL
2023-10-30 19:58:18 +01:00
Robert Hillis
12482216f6 Fix Google Mail expired authorization (#102735)
* Fix Google Mail expired authorization

* add test

* raise HomeAssistantError

* handle in api module

* uno mas
2023-10-30 19:58:14 +01:00
David Knowles
20409d0124 Make Hydrawise initialize data immediately (#101936) 2023-10-30 19:58:11 +01:00
mkmer
a741bc9951 Add retry before unavailable to Honeywell (#101702)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-30 19:58:08 +01:00
Erwin Douna
59d2bce369 Enable dry mode for Tado AC's V3 (#99568) 2023-10-30 19:58:04 +01:00
Paulus Schoutsen
eef318f63c Bumped version to 2023.11.0b2 2023-10-28 23:29:03 -04:00
Paulus Schoutsen
9c8a4bb4eb Fix proximity zone handling (#102971)
* fix proximity zone

* fix test
2023-10-28 23:29:03 -04:00
Paulus Schoutsen
9c9f1ea685 Fix error message strings for Todoist configuration flow (#102968)
* Fix error message strings for Todoist configuration flow

* Update error code in test
2023-10-28 23:29:03 -04:00
Paulus Schoutsen
85d999b020 Add gas device class to dsmr_reader sensor (#102953)
DSMR reader integration - can't configure gas meter in energy dashboard posible due to missing device_class
Fixes #102367
2023-10-28 23:29:03 -04:00
Paulus Schoutsen
bcddf52364 Update xknxproject to 3.4.0 (#102946) 2023-10-28 23:29:03 -04:00
Paulus Schoutsen
07e4e1379a Improve diagnostic handling in HomeWizard Energy (#102935) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
f9f010643a Handle/extend number entity availability property in HomeWizard Energy (#102934) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
974c34e2b6 Small base entity cleanup for HomeWizard Energy entities (#102933) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
1c3de76b04 Move HomeWizard Energy identify button to config entity category (#102932) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
bee63ca654 Hide mac address from HomeWizard Energy config entry/discovery titles (#102931) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
29c99f419f Bump velbusaio to 2023.10.2 (#102919) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
3d321c5ca7 Update frontend to 20231027.0 (#102913) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
4617c16a96 Update aioairzone-cloud to v0.3.1 (#102899) 2023-10-28 23:29:02 -04:00
Paulus Schoutsen
a60656bf29 Improve fitbit oauth import robustness (#102833)
* Improve fitbit oauth import robustness

* Improve sensor tests and remove unnecessary client check

* Fix oauth client id/secret config key checks

* Add executor for sync call
2023-10-28 23:29:02 -04:00
Paulus Schoutsen
2eb2a65197 Use new API for Vasttrafik (#102570) 2023-10-28 23:29:02 -04:00
Franck Nijhof
867aaf10ee Bumped version to 2023.11.0b1 2023-10-27 14:02:42 +02:00
Franck Nijhof
7fe1ac901f Some textual fixes for todo (#102895) 2023-10-27 14:02:24 +02:00
Bram Kragten
5dca3844ef Add redirect from shopping list to todo (#102894) 2023-10-27 14:02:20 +02:00
Erik Montnemery
b5c75a2f2f Allow missing components in safe mode (#102891) 2023-10-27 14:02:17 +02:00
Erik Montnemery
62fc9dfd6c Allow missing components in safe mode (#102888) 2023-10-27 14:02:14 +02:00
Jan Bouwhuis
0573981d6f Fix mqtt schema import not available for mqtt_room (#102866) 2023-10-27 14:02:09 +02:00
Paul Bottein
cc7a4d01e3 Don't return resources in safe mode (#102865) 2023-10-27 14:02:06 +02:00
Paul Bottein
293025ab6c Update frontend to 20231026.0 (#102857) 2023-10-27 14:02:02 +02:00
Jan-Philipp Benecke
a490b5e286 Add connections to PassiveBluetoothProcessorEntity (#102854) 2023-10-27 14:01:58 +02:00
Joost Lekkerkerker
7e4da1d03b Bump aiowithings to 1.0.2 (#102852) 2023-10-27 14:01:53 +02:00
Ravaka Razafimanantsoa
9e140864eb Address late review of switchbot cloud (#102842)
For Martin's review
2023-10-27 14:01:47 +02:00
Kevin Worrel
a6f88fb123 Bump screenlogicpy to v0.9.4 (#102836) 2023-10-27 14:01:43 +02:00
J. Nick Koston
386c5ecc3e Bump bleak-retry-connector to 3.3.0 (#102825)
changelog: https://github.com/Bluetooth-Devices/bleak-retry-connector/compare/v3.2.1...v3.3.0
2023-10-27 14:01:39 +02:00
Erik Montnemery
0d7fb5b026 Use real devices in automation blueprint tests (#102824) 2023-10-27 14:01:35 +02:00
Erik Montnemery
767b7ba4d6 Correct logic for picking bluetooth local name (#102823)
* Correct logic for picking bluetooth local name

* make test more robust

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-27 14:01:31 +02:00
William Scanlon
f2cef7245a Bump pyeconet to 0.1.22 to handle breaking API change (#102820) 2023-10-27 14:01:27 +02:00
J. Nick Koston
701a5d7758 Bump HAP-python 4.9.1 (#102811) 2023-10-27 14:01:23 +02:00
mkmer
244fccdae6 Move coordinator first refresh in Blink (#102805)
Move coordinator first refresh
2023-10-27 14:01:18 +02:00
Erik Montnemery
10e6a26717 Fix fan device actions (#102797) 2023-10-27 14:01:15 +02:00
Allen Porter
5fe5013198 Change todo move API to reference previous uid (#102795) 2023-10-27 14:01:11 +02:00
Marc Mueller
0a0584b053 Fix velbus import (#102780) 2023-10-27 14:01:07 +02:00
Erik Montnemery
62733e830f Improve validation of device automations (#102766)
* Improve validation of device automations

* Improve comments

* Address review comment
2023-10-27 14:01:02 +02:00
Simone Chemelli
bbcfb5f30e Improve exception handling for Vodafone Station (#102761)
* improve exception handling for Vodafone Station

* address review comment

* apply review comment

* better except handling (bump library)

* cleanup
2023-10-27 14:00:55 +02:00
Amit Finkelstein
5b0e0b07b3 Apple TV: Use replacement commands for deprecated ones (#102056)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-27 14:00:45 +02:00
Franck Nijhof
05fd64fe80 Bumped version to 2023.11.0b0 2023-10-25 17:41:53 +02:00
Raman Gupta
8b1cfbc46c Bump zwave-js-server-python to 0.53.1 (#102790) 2023-10-25 17:22:33 +02:00
Marcel van der Veldt
bcade5fe73 Bump python-matter-server to version 4.0.0 (#102786) 2023-10-25 16:51:42 +02:00
Marc Mueller
4cac20f835 Fix google_tasks generic typing (#102778) 2023-10-25 07:22:19 -07:00
Erik Montnemery
b83ada8c19 Use real devices in automation and script tests (#102785) 2023-10-25 16:09:39 +02:00
Joost Lekkerkerker
e734a4bc53 Use sentence case in Random entities default name (#102788) 2023-10-25 16:09:09 +02:00
Joost Lekkerkerker
cd8e3a81db Add Update coordinator to QBittorrent (#98896) 2023-10-25 15:51:52 +02:00
Erik Montnemery
8d034a85fe Small cleanup of nest tests (#102787) 2023-10-25 15:35:58 +02:00
tronikos
89e2f06304 Flume: Add flume.notifications service (#100621)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-25 15:34:48 +02:00
J. Nick Koston
4447336083 Fix hassio delaying startup to fetch container stats (#102775) 2023-10-25 15:32:43 +02:00
Erik Montnemery
6e72499f96 Use real devices in nest device trigger tests (#102692) 2023-10-25 15:13:38 +02:00
Simone Chemelli
e4a1efb680 Fix Comelit comments as per late review (#102783) 2023-10-25 14:48:33 +02:00
Bram Kragten
b50f5e50c3 Update frontend to 20231025.1 (#102781) 2023-10-25 08:42:44 -04:00
Jan Stienstra
2c46a975fb Add re-authentication to Jellyfin (#97442) 2023-10-25 14:02:30 +02:00
Bram Kragten
edc9aba722 Update frontend to 20231025.0 (#102776) 2023-10-25 14:01:36 +02:00
Maciej Bieniek
47c9d58b5e Override the async_update() method for Shelly sleeping devices (#102516) 2023-10-25 13:48:00 +02:00
Allen Porter
476e867fe8 Add a Local To-do component (#102627)
Co-authored-by: Robert Resch <robert@resch.dev>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-25 13:21:10 +02:00
Raman Gupta
35d18a9a3e Add tests for types and functions for type conversions in templates (#100807)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-25 13:20:34 +02:00
Joost Lekkerkerker
8ca5df6fcc Guard for None color mode in ZHA (#102774) 2023-10-25 13:17:41 +02:00
Joost Lekkerkerker
0658c7b307 Add config flow to random (#100858)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-25 13:01:27 +02:00
Jan-Philipp Benecke
6fae50cb75 Add connections to Xiaomi BLE and BTHome device entry (#102773) 2023-10-25 12:15:58 +02:00
Joost Lekkerkerker
d2f8c527a5 Add entity translations to Tomorrow.io (#99632) 2023-10-25 12:15:09 +02:00
Joost Lekkerkerker
4812d62ccf Bring Withings activity sensor creation in line with the others (#102771) 2023-10-25 12:14:03 +02:00
Joost Lekkerkerker
45e4f71d1a Add generics to Withings (#102770) 2023-10-25 12:00:12 +02:00
Joakim Sørensen
267721af43 Bump hass-nabucasa from 0.73.0 to 0.74.0 (#102763) 2023-10-25 11:28:52 +02:00
Simone Chemelli
4328f887be Address late review comments for Comelit login (#102768) 2023-10-25 09:19:06 +00:00
Jirka
dfc454d527 Remove double full stop from Vulcan translation strings (#102758) 2023-10-25 10:54:43 +02:00
Allen Porter
7f7064ce59 Add Google Tasks create and update for todo platform (#102754)
* Add Google Tasks create and update for todo platform

* Update comments

* Update comments
2023-10-25 10:51:21 +02:00
Simone Chemelli
ffed1e8274 Improve exception handling for Comelit (#102762)
improve exception handling for Comelit
2023-10-25 10:28:22 +02:00
tzagim
37cde54b2b Fix typo in Todoist translations strings 'data' -> 'date' (#102760) 2023-10-25 09:48:47 +02:00
Erik Montnemery
a6c5927976 Use real devices in light device condition tests (#102756) 2023-10-25 09:42:35 +02:00
Erik Montnemery
b38692f3a7 Use real devices in lock device condition tests (#102757) 2023-10-25 09:42:00 +02:00
Maciej Bieniek
c89acf2abe Bump nextdns to version 2.0.0 (#102674) 2023-10-25 08:59:45 +02:00
starkillerOG
93a8b60c2b Philips Hue restore brightness after transition (#101293) 2023-10-25 07:46:49 +02:00
buzz-tee
4bf475185e Fix invalid sources in media player sources list (#102646) 2023-10-25 07:12:55 +02:00
mkmer
b37e9bc79a Improve camera snap performance in Blink (#102652) 2023-10-24 23:50:10 -05:00
Ravaka Razafimanantsoa
7038bd67f7 Add Climate to switchbot cloud integration (#101660) 2023-10-24 23:46:00 -05:00
Allen Porter
0cb0e3ceeb Add Google tasks integration, with initial read-only To-do list (#102629)
* Add Google Tasks integration

* Update tests and unique id

* Revert devcontainer change

* Increase test coverage

* Apply suggestions from code review

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

* Remove ternary

* Fix JSON

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-24 21:30:29 -07:00
Matthias Alphart
fb13d9ce7c Set Fronius entities to "unknown" when receiving invalid zero value (#102270) 2023-10-25 06:27:46 +02:00
Erik Montnemery
704881743b Use real devices in remote device trigger tests (#102693) 2023-10-25 06:24:23 +02:00
Jesse Hills
ad692f3341 ESPHome Text entities (#102742) 2023-10-24 23:14:58 -05:00
Erik Montnemery
789a00043a Use real devices in device automation tests (#102736)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-25 06:14:53 +02:00
Raman Gupta
aa36229519 Remove eight_sleep integration (#102669) 2023-10-25 06:13:10 +02:00
Erik Montnemery
626123acc0 Use real devices in select device trigger tests (#102694) 2023-10-25 06:13:00 +02:00
Erik Montnemery
b870933dc7 Use real devices in remote device action tests (#102725) 2023-10-25 06:11:55 +02:00
Erik Montnemery
9047dcf242 Use real devices in text device action tests (#102728) 2023-10-25 06:11:06 +02:00
Luke Lashley
dd111416e7 Add cleaning binary sensor to Roborock (#102748) 2023-10-25 06:10:31 +02:00
J. Nick Koston
ece7ec6a38 Disable IPV6 in the august integration (#98003) 2023-10-25 06:08:41 +02:00
AJ Jordan
2e643c0c75 Fix dead link in Kodi log message (#102743) 2023-10-25 06:07:38 +02:00
tronikos
6294339944 Improve ZHA King of Fans (#101859) 2023-10-25 05:56:08 +02:00
puddly
8d5cb20285 Bump ZHA radio dependencies (#102750) 2023-10-24 23:36:30 -04:00
TheJulianJES
7c93d4fccf Bump zha-quirks to 0.0.106 (#102741) 2023-10-24 21:57:34 -04:00
Raman Gupta
ec3ee7f02c Update zwave_js/hard_reset_controller WS cmd (#102280) 2023-10-24 21:31:03 -04:00
Robert Svensson
40817dabbf Bump aiounifi to v64 (#102700) 2023-10-24 20:27:42 -05:00
Marc Mueller
eb52943d27 Update pytest to 7.4.3 (#102744) 2023-10-25 02:44:51 +02:00
Erik Montnemery
a1a5713e10 Abort Improv via BLE bluetooth flow if device is provisioned (#102656)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-24 19:14:23 -05:00
J. Nick Koston
f91583a0fc Add support for family to aiohttp session helper (#102702) 2023-10-24 18:40:39 -05:00
Robert Svensson
a691bd26cf Support Lidl christmas light effects in deCONZ (#102731) 2023-10-25 00:32:20 +02:00
Maciej Bieniek
b37253b206 Bump gios to version 3.2.0 (#102675) 2023-10-24 23:45:20 +02:00
Erik Montnemery
f56343f447 Use real devices in lock device action tests (#102723) 2023-10-24 23:43:50 +02:00
Erik Montnemery
3a11a6f973 Use real devices in switch device action tests (#102727) 2023-10-24 23:43:30 +02:00
Erik Montnemery
530611c44e Use real devices in fan device action tests (#102720) 2023-10-24 21:40:24 +00:00
Erik Montnemery
21d0fa640f Use real devices in cover device action tests (#102719) 2023-10-24 23:40:22 +02:00
Erik Montnemery
8da421c442 Use real devices in climate device action tests (#102718) 2023-10-24 23:40:07 +02:00
Erik Montnemery
4bb6787909 Use real devices in button device action tests (#102717) 2023-10-24 23:39:47 +02:00
Erik Montnemery
a4487637ef Use real devices in alarm_control_panel device action tests (#102716) 2023-10-24 23:39:37 +02:00
Erik Montnemery
2e9a3e8c8e Use real devices in humidifier device action tests (#102721) 2023-10-24 23:39:14 +02:00
Erik Montnemery
e1394d720f Use real devices in vacuum device action tests (#102729) 2023-10-24 23:38:35 +02:00
Erik Montnemery
02a83740cc Use real devices in light device action tests (#102722) 2023-10-24 21:38:24 +00:00
Erik Montnemery
69ce85d5af Use real devices in select device action tests (#102726) 2023-10-24 23:38:19 +02:00
Erik Montnemery
e708faa4d6 Use real devices in vacuum device condition tests (#102715) 2023-10-24 23:38:01 +02:00
Erik Montnemery
e761d5715b Use real devices in switch device condition tests (#102714) 2023-10-24 21:37:48 +00:00
Erik Montnemery
b5a6e6b9d5 Use real devices in sensor device condition tests (#102713) 2023-10-24 23:37:36 +02:00
Erik Montnemery
ff60a8072e Use real devices in select device condition tests (#102712) 2023-10-24 23:37:16 +02:00
Erik Montnemery
1b61cd9179 Use real devices in remote device condition tests (#102711) 2023-10-24 23:36:31 +02:00
Erik Montnemery
2049d892ba Use real devices in media_player device condition tests (#102710) 2023-10-24 23:35:34 +02:00
Erik Montnemery
0e8bd9805a Use real devices in humidifier device condition tests (#102709) 2023-10-24 23:34:31 +02:00
Erik Montnemery
3ed67f134f Use real devices in fan device condition tests (#102708) 2023-10-24 23:32:56 +02:00
Erik Montnemery
9cf9b36637 Use real devices in device_tracker device condition tests (#102707) 2023-10-24 23:31:49 +02:00
Erik Montnemery
14485af22d Use real devices in cover device condition tests (#102706) 2023-10-24 23:30:33 +02:00
Erik Montnemery
bead989e7f Use real devices in climate device condition tests (#102705) 2023-10-24 23:29:44 +02:00
Erik Montnemery
9d3cdc85ca Use real devices in binary_sensor device condition tests (#102704) 2023-10-24 23:28:29 +02:00
Erik Montnemery
4d83cffb39 Use real devices in alarm_control_panel device condition tests (#102703) 2023-10-24 23:27:29 +02:00
Erik Montnemery
56ee1753ec Use real devices in number device action tests (#102724) 2023-10-24 23:26:12 +02:00
Erik Montnemery
0ce7f44294 Use real devices in water_heater device action tests (#102730) 2023-10-24 23:25:14 +02:00
TheJulianJES
fd8fdba7e8 Replace ZHA quirk class matching with quirk ID matching (#102482)
* Use fixed quirk IDs for matching instead of quirk class

* Change tests for quirk id (WIP)

* Do not default `quirk_id` to `quirk_class`

* Implement test for checking if quirk ID exists

* Change `quirk_id` for test slightly (underscore instead of dot)
2023-10-24 17:18:10 -04:00
Maciej Bieniek
5ee14f7f7d Bump accuweather to version 2.0.0 (#102670) 2023-10-24 23:14:05 +02:00
Bouwe Westerdijk
a5461a9a90 Bump plugwise to v0.33.2 (#102671) 2023-10-24 23:11:16 +02:00
Bram Kragten
f5a6c88051 Don't load themes in safe mode (#102683) 2023-10-24 23:00:14 +02:00
Allen Porter
0b8f48205a Add Todoist To-do list support (#102633)
* Add todoist todo platform

* Fix comment in todoist todo platform

* Revert CalData cleanup and logging

* Fix bug in fetching tasks per project

* Add test coverage for creating active tasks

* Fix update behavior on startup
2023-10-24 22:47:26 +02:00
Erik Montnemery
ee1007abdb Use real devices in wemo device trigger tests (#102699) 2023-10-24 22:44:50 +02:00
Erik Montnemery
2807c9eaca Use real devices in vacuum device trigger tests (#102698) 2023-10-24 22:43:34 +02:00
Erik Montnemery
d8baa38751 Use real devices in update device trigger tests (#102697) 2023-10-24 22:42:44 +02:00
Erik Montnemery
8737d84d30 Use real devices in switch device trigger tests (#102696) 2023-10-24 22:41:27 +02:00
Erik Montnemery
82cc62416e Use real devices in sensor device trigger tests (#102695) 2023-10-24 22:37:44 +02:00
Erik Montnemery
952f40a181 Use real devices in alarm_control_panel device trigger tests (#102676) 2023-10-24 22:33:08 +02:00
Erik Montnemery
eac1d47ec6 Use real devices in media_player device trigger tests (#102691) 2023-10-24 22:31:16 +02:00
Erik Montnemery
f9fa1edabf Use real devices in lock device trigger tests (#102690) 2023-10-24 22:30:07 +02:00
Erik Montnemery
691de148cf Use real devices in light device trigger tests (#102689) 2023-10-24 21:58:37 +02:00
Erik Montnemery
6d1d3f4207 Use real devices in device_tracker device trigger tests (#102685) 2023-10-24 21:58:22 +02:00
Erik Montnemery
6edbee75f0 Use real devices in kodi device trigger tests (#102688) 2023-10-24 21:58:06 +02:00
Erik Montnemery
cedade15ef Use real devices in humidifier device trigger tests (#102687) 2023-10-24 21:58:01 +02:00
Erik Montnemery
51f6dac97f Use real devices in fan device trigger tests (#102686) 2023-10-24 21:57:57 +02:00
Erik Montnemery
4536720540 Use real devices in device_automation device trigger tests (#102684) 2023-10-24 21:57:42 +02:00
Erik Montnemery
ec3596e85d Use real devices in cover device trigger tests (#102681) 2023-10-24 21:57:33 +02:00
Erik Montnemery
13be486d61 Use real devices in climate device trigger tests (#102680) 2023-10-24 21:57:22 +02:00
Erik Montnemery
223abb6dca Use real devices in button device trigger tests (#102679) 2023-10-24 21:57:14 +02:00
Erik Montnemery
acc5edb088 Use real devices in binary_sensor device trigger tests (#102678) 2023-10-24 21:56:53 +02:00
Tomáš Bedřich
d25b4aae14 Add ZHA cover tilt (#102072)
* cover tilt reimplementation

* rework tilt test

* Fix ZHA cover tests

* Match ZHA cover tilt code-style with the rest

* Increase coverage for ZHA cover, optimize update

---------

Co-authored-by: josef109 <josefglaze@gmail.com>
2023-10-24 15:40:41 -04:00
Maciej Bieniek
4febb2e1d3 Bump nam to version 2.2.0 (#102673) 2023-10-24 21:14:17 +02:00
Erik Montnemery
f733f20834 Use real devices in arcam_fmj device trigger tests (#102677) 2023-10-24 13:39:16 -05:00
Erik Montnemery
508cffd1b5 Bump py-improv-ble-client to 1.0.3 (#102661) 2023-10-24 18:05:55 +02:00
Bouwe Westerdijk
8c3ae1b30c Add hvac_modes property to Plugwise (#102636)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-10-24 17:53:55 +02:00
Joost Lekkerkerker
9600c7fac1 Add workout calendar to Withings (#102589) 2023-10-24 16:38:11 +02:00
J. Nick Koston
80b3fec675 Bump aioesphomeapi to 18.0.12 (#102626)
changelog: https://github.com/esphome/aioesphomeapi/compare/v18.0.11...v18.0.12
2023-10-24 08:35:59 -05:00
Erik Montnemery
4604c5a152 Allow connecting an Improv via BLE device to a public network (#102655) 2023-10-24 15:24:30 +02:00
Erik Montnemery
97cc05d0b4 Make it possible to restart core in safe mode (#102606) 2023-10-24 14:47:58 +02:00
Erik Montnemery
46322a0f59 Add improv_ble integration (#102129)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-24 14:19:19 +02:00
Rami Mosleh
fea15148a1 Remove scan_interval from transmission (#98858)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-24 14:17:46 +02:00
Joost Lekkerkerker
8cfb8cb084 Add serial number to Blink (#102621) 2023-10-24 11:38:54 +02:00
Erik Montnemery
e20d4abfe1 Test extra javascript functionality in frontend (#102643) 2023-10-24 11:31:16 +02:00
Erik Montnemery
421832e09c Remove unused test fixture from frontend tests (#102642) 2023-10-24 11:13:44 +02:00
Joost Lekkerkerker
b42c47e800 Add last workout sensors to Withings (#102541)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-24 11:07:47 +02:00
Franck Nijhof
57a10a2e0d Set cart icon for shopping list integration (#102638) 2023-10-24 10:32:27 +02:00
Matthias Alphart
b0d4e5cb65 Retire Niels Mündler from Fronius codeowners (#102639) 2023-10-24 09:20:28 +02:00
Erik Montnemery
b953f2998c Rename the safe_mode integration to recovery_mode (#102581)
* Rename safe mode integration to recovery mode

* Update code
2023-10-24 09:11:14 +02:00
Jan Bouwhuis
6372bc3aaa Fix missed case alexa light attr can be None (#102612)
* Fix missed cased alexa light attr can be None

* Add test
2023-10-24 00:20:03 +02:00
Joost Lekkerkerker
d5e7cccff9 Add serial number to Brother (#102523) 2023-10-24 00:15:58 +02:00
Abílio Costa
2935d7d919 Remove uneeded typing on Idasen Desk (#102615) 2023-10-23 23:57:58 +02:00
ollo69
5245c94342 Exclude AsusWRT tracker state attribute from recorder (#102602) 2023-10-23 23:16:27 +02:00
Allen Porter
5d430f53cd Add todo component (#100019) 2023-10-23 22:53:00 +02:00
J. Nick Koston
fa1df7e334 Bump pyatv to 0.14.3 (#102196) 2023-10-23 15:48:19 -05:00
J. Nick Koston
4c8a919ca3 Bump aioesphomeapi to 18.0.11 (#102603) 2023-10-23 15:46:05 -05:00
Michael Hansen
a78e3f7b0f Delay import of webrtc to avoid blocking start up if package is missing (#102594)
* Delay import of webrtc to avoid blocking start up if package is missing

* Update homeassistant/components/assist_pipeline/pipeline.py

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

* Update homeassistant/components/assist_pipeline/vad.py

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

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-10-23 13:34:32 -05:00
Erik Montnemery
c481fdb7d0 Rename safe mode to recovery mode (#102580) 2023-10-23 20:33:08 +02:00
Erik Montnemery
7a009ed6cd Don't duplicate core services in hassio (#102593) 2023-10-23 20:26:56 +02:00
tronikos
c555fe4462 Refactor ZHA IkeaFan (#101858)
IkeaFan refactor
2023-10-23 14:01:25 -04:00
Michael Hansen
a52761171f No cooldown when wake words have the same id (#101846)
* No cooldown when wake words have the same id

* Use wake word entity id in cooldown decision
2023-10-23 13:12:34 -04:00
elmurato
54bcd70878 Increase timeouts in Minecraft Server (#101784) 2023-10-23 15:49:48 +02:00
Bouwe Westerdijk
c7d2499a52 Bump plugwise to v0.33.1 (#102052) 2023-10-23 15:47:12 +02:00
mkmer
40ccae3d07 Add coordinator to Blink (#102536) 2023-10-23 15:34:28 +02:00
Franck Nijhof
5b39a08feb Update adguardhome to 0.6.2 (#102582)
Update adguard to 0.6.2
2023-10-23 14:47:43 +02:00
Guido Schmitz
04c0bca487 Remove name from device info in devolo Home Network (#102585) 2023-10-23 14:00:47 +02:00
Marc Mueller
9c0427a7ac Update pylint to 3.0.2 (#102576) 2023-10-23 13:08:47 +02:00
Joost Lekkerkerker
42c062de68 Only add Withings sleep sensors when we have data (#102578)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-23 12:59:13 +02:00
Erik Montnemery
d5af6c595d Fix runaway regex in translations.develop (#102386)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-23 12:34:32 +02:00
Maikel Punie
8c9c915c45 Bump code-quality to silver for duotecno (#102284)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-23 12:14:10 +02:00
Joost Lekkerkerker
8a7de27946 Try negative WAQI station number before aborting (#102550) 2023-10-23 11:55:12 +02:00
TopdRob
e27baedf32 Bump adax to 0.3.0 (#102556) 2023-10-23 11:21:33 +02:00
dependabot[bot]
3e23a4b4ee Bump github/codeql-action from 2.22.3 to 2.22.4 (#102566)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-23 11:11:06 +02:00
Joost Lekkerkerker
4c99d2607f Fix fibaro tests (#102575) 2023-10-23 11:04:21 +02:00
Maikel Punie
109819e9cd Only allow a single duotecno config entry (#102478) 2023-10-23 10:58:11 +02:00
Robert Resch
0c5b963847 Add lokalise multi reference check to hassfest (#101876) 2023-10-23 10:57:19 +02:00
Franck Nijhof
e4af09d261 Update base image to 2023.10.1 (#102568) 2023-10-23 10:48:05 +02:00
Joost Lekkerkerker
a6ade59133 Make Withings sleep sensor only show last night (#101993) 2023-10-23 10:39:17 +02:00
Paarth Shah
30ba78cf82 Fix resolving Matrix room aliases (#101928) 2023-10-23 10:35:41 +02:00
Paul Bottein
1176003b51 Move Ecowitt battery sensor into diagnostic category (#102569) 2023-10-23 10:07:31 +02:00
Rami Mosleh
a2bc2bf8a0 Remove name from Transmission config flow (#102216)
* Remove name key from Transmission

* Remove name variable completely

* remove name error from strings

* Change entry title to default name
2023-10-23 09:21:15 +02:00
Joost Lekkerkerker
54ba376b4b Make Withings bed presence sensor dynamic (#102058)
* Make Withings bed presence sensor dynamic

* Make Withings bed presence sensor dynamic

* Update homeassistant/components/withings/binary_sensor.py

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-23 09:01:58 +02:00
J. Nick Koston
268425b5e3 Recover from previously failed statistics migrations (#101781)
* Handle statistics columns being unmigrated from previous downgrades

If the user downgraded HA from 2023.3.x to an older version without
restoring the database and they upgrade again with the same database
they will have unmigrated statistics columns since we only migrate them
once.

As its expensive to check, we do not want to check every time
at startup, so we will only do this one more time since the
risk that someone will downgrade to an older version is very
low at this point.

* add guard to sqlite to prevent re-migrate

* test

* move test to insert with old schema

* use helper

* normalize timestamps

* remove

* add check

* add fallback migration

* add fallback migration

* commit

* remove useless logging

* remove useless logging

* do the other columns at the same time

* coverage

* dry

* comment

* Update tests/components/recorder/test_migration_from_schema_32.py
2023-10-22 23:34:43 -04:00
Seth
4ee9a6f130 Implement available property for Airthings BLE sensors (#96735) 2023-10-22 12:02:15 -10:00
J. Nick Koston
b980ed3eac Avoid more device_class lookups for number entities when writing state (#102381) 2023-10-22 23:55:13 +02:00
Joost Lekkerkerker
a97e34f28e Add Nephelometry sensor to waqi (#102298) 2023-10-22 23:50:40 +02:00
Joost Lekkerkerker
04b883a8e9 Add activity sensors to Withings (#102501)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-22 23:47:18 +02:00
Erik Montnemery
164872e1af Improve error messages from translation script (#102098)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-22 23:45:27 +02:00
jan iversen
bc45de627a Allow negative minimum temperature for modbus (#102118) 2023-10-22 23:44:38 +02:00
Mike Degatano
c8007b841b Add exclude DB option to backup service call (#101958) 2023-10-22 23:40:44 +02:00
Robert Svensson
721c45b7a3 Rework UniFi client configuration (#99483) 2023-10-22 23:39:54 +02:00
rappenze
37fdb4950a Refactor fibaro scene test (#102452) 2023-10-22 23:36:41 +02:00
Jan Bouwhuis
c2abc3dcec Fix brightness and color_temp can be None for alexa light entities (#102554)
* Fix brightness and color_temp can be None in alexa

* Add test
2023-10-22 23:34:04 +02:00
Joost Lekkerkerker
5e30c2ab9c Use dataclass for Withings domain data (#102547)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-22 22:42:18 +02:00
Joakim Plate
7d2fa5bf60 Correct range for nibe_heatpump numbers (#102553) 2023-10-22 22:39:40 +02:00
Joost Lekkerkerker
e936ca0cb1 Build Pydantic wheels with old Cython (#101976) 2023-10-22 22:39:00 +02:00
J. Nick Koston
0adb6fb02c Bump anyio to 4.0.0 (#102552) 2023-10-22 10:34:34 -10:00
rappenze
27f6c6fdf4 Add model info in fibaro integration (#102551) 2023-10-22 22:11:43 +02:00
Joost Lekkerkerker
2dfb3ba693 Bump python-opensky to 0.2.1 (#102467) 2023-10-22 22:00:14 +02:00
Joost Lekkerkerker
e3b238861d Clean up withings tests (#102548) 2023-10-22 21:58:30 +02:00
Joost Lekkerkerker
3f88c518a5 Use translated name for entity id for Picnic (#97230) 2023-10-22 21:39:01 +02:00
J. Nick Koston
4bf0d6e536 Bump aioesphomeapi to 18.0.10 (#102545) 2023-10-22 09:20:49 -10:00
Joost Lekkerkerker
6b618fc95a Add entity translations to SolarEdge (#102295)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-10-22 21:02:39 +02:00
Álvaro Fernández Rojas
b416c8fbf6 Update aioairzone-cloud to v0.3.0 (#102540) 2023-10-22 20:52:17 +02:00
Guido Schmitz
a77a0ef4a5 Add serial number to devolo Home Network (#102546) 2023-10-22 20:51:27 +02:00
Joost Lekkerkerker
877410bb9d Add serial number to Elgato (#102524)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-22 20:32:02 +02:00
Joost Lekkerkerker
1fd7378caf Remove abstraction in WAQI config flow (#102543) 2023-10-22 20:31:17 +02:00
rappenze
c9c152d46d Bump pyfibaro to 0.7.6 (#102538) 2023-10-22 20:07:23 +02:00
Joost Lekkerkerker
f8ed051f01 Bump aiowithings to 1.0.1 (#102532) 2023-10-22 19:38:48 +02:00
Joost Lekkerkerker
0b5218ec96 Migrate SolarEdge to has entity name (#98944) 2023-10-22 19:30:05 +02:00
Franck Nijhof
409afddeb5 Merge branch 'master' into dev 2023-10-22 19:05:38 +02:00
J. Nick Koston
82c0610050 Avoid core/supervisor stats API calls when no entities need them (#102362) 2023-10-22 06:40:48 -10:00
Joost Lekkerkerker
af0b53cc79 Add serial number to Axis (#102522)
Co-authored-by: Robert Svensson <Kane610@users.noreply.github.com>
2023-10-22 18:34:01 +02:00
Jan-Philipp Benecke
a04c37c59f Add serial number to Discovergy (#102531) 2023-10-22 18:10:47 +02:00
wittypluck
b79eae2e94 Update Unifi bandwidth sensors (#101598)
* Change bandwidth sensors device class, state class, unit of measurement, icon

* Reformat imports

* Reformat imports

* Revert suggested_unit_of_measurement. Add unit tests.
2023-10-22 17:14:49 +02:00
Joost Lekkerkerker
e4943dd1e6 Add serial number to Qnap (#102528) 2023-10-22 08:13:36 -07:00
Joost Lekkerkerker
392b53e256 Add serial number to Fibaro (#102525) 2023-10-22 16:53:29 +02:00
Joost Lekkerkerker
1a8558012f Add serial number to Flo (#102526) 2023-10-22 16:53:17 +02:00
Joost Lekkerkerker
ee8037afc1 Add serial number to Nuheat (#102527) 2023-10-22 16:53:04 +02:00
Joost Lekkerkerker
58e84b7ba1 Add serial number to Roomba (#102529) 2023-10-22 16:52:55 +02:00
Joost Lekkerkerker
1412c2ea6e Add serial number to ViCare (#102530) 2023-10-22 16:52:38 +02:00
Jan-Philipp Benecke
3259e39170 Migrate Nuki to use dataclass for entry data (#101785)
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-10-22 16:30:34 +02:00
Hessel
06a2664a07 Wallbox Improve Testing (#102519) 2023-10-22 16:22:35 +02:00
Caius-Bonus
51f989c57a Standardize _select_attr in ZCLEnumSelectEntity (#102454) 2023-10-22 16:18:38 +02:00
elmurato
8bfd418c3e Reach gold level in Minecraft Server (#102462) 2023-10-22 16:17:32 +02:00
Niklas Held
af264c6e0d Fix options-flow in hvv_departures (#102484) 2023-10-22 15:17:22 +02:00
Erik Montnemery
1621310ba7 Add serial_number to device registry entries (#102334)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-22 15:14:44 +02:00
Franck Nijhof
1973287c91 2023.10.5 (#102517) 2023-10-22 14:55:13 +02:00
J. Nick Koston
b3bd34a024 Avoid dispatching same state to passive bluetooth entities (#102430) 2023-10-22 14:08:28 +02:00
Álvaro Fernández Rojas
311e539c0e Update aioairzone-cloud to v0.2.8 (#102515) 2023-10-22 13:57:38 +02:00
Franck Nijhof
d5862c350a Bumped version to 2023.10.5 2023-10-22 13:24:52 +02:00
Steven Looman
9820f4288f Bump async-upnp-client to 0.36.2 (#102472) 2023-10-22 13:24:34 +02:00
puddly
00607fb778 Downgrade ZHA dependency bellows (#102471)
Downgrade bellows
2023-10-22 13:24:30 +02:00
Jan-Philipp Benecke
62d8472757 Move ping classes to their own module (#102448) 2023-10-21 22:12:59 -10:00
Jan Bouwhuis
973b8900a9 Optimize mqtt platform setup (#102449)
* Optimize mqtt platform setup and correct issue

* Avoid coroutine for setup entity from discovery

* Avoid extra check

* Revert string constants

* Add comment
2023-10-22 08:31:08 +02:00
J. Nick Koston
215febc912 Bump aioesphomeapi to 18.0.9 (#102509) 2023-10-21 20:17:22 -10:00
Allen Porter
c4f562ff6a Reduce unnecessary fitbit RPCs on startup (#102504)
* Reduce unnecessary fitbit RPCs on startup

* Update comment about racing user profile rpcs
2023-10-21 22:00:40 -07:00
Joost Lekkerkerker
1801a7738c Bump aiowithings to 1.0.0 (#102499) 2023-10-21 16:51:21 -10:00
J. Nick Koston
6f2245bba3 Bump aioesphomeapi to 18.0.8 (#102493) 2023-10-21 16:51:12 -10:00
J. Nick Koston
0ebc97ad85 Bump yalexs-ble to 2.3.1 (#102502) 2023-10-21 14:30:53 -10:00
Jan Bouwhuis
242124504b Improve mqtt config issue string constants (#102496)
Improve config issue string constants
2023-10-22 00:21:55 +02:00
Xitee
f4d91043fc Add codeowner for roomba (#102492) 2023-10-21 23:05:04 +02:00
Steven Looman
aa9301be32 Bump async-upnp-client to 0.36.2 (#102472) 2023-10-21 10:09:09 -10:00
J. Nick Koston
51596c6231 Remove useless freezing on PassiveBluetoothDataUpdate (#102434) 2023-10-21 10:07:02 -10:00
J. Nick Koston
f9dbddc884 Small cleanups to Bluetooth fallback intervals (#102440) 2023-10-21 10:06:49 -10:00
J. Nick Koston
89f9d64bf5 Add early return check to passive Bluetooth entities listener (#102435) 2023-10-21 10:06:39 -10:00
J. Nick Koston
f626f3bc1e Bump aiohomekit to 3.0.8 (#102479) 2023-10-21 10:06:28 -10:00
Jan-Philipp Benecke
017c699e19 Let the statistics component calculate changes in fossil energy consumption calculation (#101557) 2023-10-21 10:06:12 -10:00
Joost Lekkerkerker
235a3486ee Add sensors for Withings Goals (#102468) 2023-10-21 21:51:37 +02:00
Allen Porter
f0f3a43b09 Bump ical to 5.1.0 (#102483) 2023-10-21 12:40:33 -07:00
Adrian Nöthlich
e8146e5565 Add support for Bosch QR-codes for zha.permit (#102427)
Signed-off-by: Adrian Nöthlich <git@promasu.tech>
2023-10-21 15:03:24 -04:00
Simone Chemelli
c36166f01d Add sensor platform to Comelit SmartHome (#102465)
* Add sensor platform to Comelit SmartHome

* apply review comments
2023-10-21 19:44:56 +02:00
puddly
864b69e586 Downgrade ZHA dependency bellows (#102471)
Downgrade bellows
2023-10-21 13:19:37 -04:00
Hessel
bd0df2f18f Add energy price number entities to Wallbox (#101840) 2023-10-21 17:53:32 +02:00
Joost Lekkerkerker
e5b5858915 Bump aiowithings to 0.5.0 (#102456) 2023-10-21 17:39:54 +02:00
Simone Chemelli
3896ed47be Fix switches list for Comelit SmartHome (#102336)
* fix switches list

* make entities a single list

* fix duplicate ids

* move comment to a better position
2023-10-21 16:57:11 +02:00
elmurato
faa149b71a Add binary sensor tests to Minecraft Server (#102457) 2023-10-21 15:49:38 +02:00
elmurato
9f3a733f73 Add sensor tests to Minecraft Server (#102418) 2023-10-21 15:19:32 +02:00
Marc Mueller
a8f0a66c27 Fix idasen_desk generic typing (#102445) 2023-10-21 13:15:43 +02:00
Franck Nijhof
aa5c4d8786 2023.10.4 (#102397) 2023-10-21 12:00:26 +02:00
Paulus Schoutsen
09a8b8567d Set Reolink record switch as config (#102439)
Reolink: record switch as config
2023-10-21 08:31:00 +02:00
J. Nick Koston
5cec687247 Bump pyenphase to 1.13.1 (#102431) 2023-10-20 15:27:54 -10:00
Franck Nijhof
29f61349ea Update black to 23.10.0 (#102420) 2023-10-20 14:19:04 -10:00
Richard Kroegel
5aefe963ae Bump bimmer_connected to 0.14.2 (#102426)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-10-20 14:18:09 -10:00
Charles Garwood
013e580c02 Add support for changing Enphase battery backup modes (#102392) 2023-10-20 14:05:42 -10:00
Raman Gupta
41b59b6990 Add support for zwave_js event entities (#102285)
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-20 19:11:08 -04:00
J. Nick Koston
a2c60d9015 Only callback when value or status changes for processing HKC events (#102370) 2023-10-20 12:46:18 -10:00
Franck Nijhof
55a8f01dcf Update ruff to v0.1.1 (#102421) 2023-10-20 12:33:07 -10:00
Franck Nijhof
7e6c14d062 Update Pillow to 10.1.0 (#102419) 2023-10-21 00:26:02 +02:00
Jan-Philipp Benecke
3c455391c2 Use dataclass to carry data in ping (#99803)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-20 11:46:33 -10:00
Franck Nijhof
b881057aa6 Update apprise to 1.6.0 (#102417) 2023-10-20 11:45:44 -10:00
J. Nick Koston
f51743f123 Bump aiohomekit to 3.0.7 (#102408) 2023-10-20 23:08:41 +02:00
Franck Nijhof
b70262fe8c Update psutil to 5.9.6 (#102416) 2023-10-20 23:07:14 +02:00
Franck Nijhof
f08a3b96e4 Update wled to 0.17.0 (#102413) 2023-10-20 23:06:13 +02:00
Franck Nijhof
f6238c16f6 Bump twentemilieu to 2.0.0 (#102407) 2023-10-20 23:00:17 +02:00
Álvaro Fernández Rojas
6f84549784 Update aioairzone-cloud to v0.2.7 (#102406) 2023-10-20 20:59:02 +02:00
Franck Nijhof
038040ffbe Update elgato to 5.0.0 (#102405) 2023-10-20 20:58:40 +02:00
Charles Garwood
e1972ba3c8 Add Enphase charge from grid switch (#102394)
* Add Enphase charge from grid switch

* review comments
2023-10-20 14:30:54 -04:00
Jan Bouwhuis
1bd0b2d05f Refactor mqtt entity cleanup on reload (#102375) 2023-10-20 20:28:04 +02:00
Franck Nijhof
5ff6779f5c Update guppy3 to 3.1.4 (#102400) 2023-10-20 20:20:17 +02:00
Franck Nijhof
dd4ac823d3 Update pvo to 2.0.0 (#102398) 2023-10-20 20:20:04 +02:00
J. Nick Koston
27b5a9e074 Reduce number of test states in big purge test to fix CI (#102401) 2023-10-20 08:09:59 -10:00
J. Nick Koston
6be401918e Bump aioesphomeapi to 18.0.7 (#102399) 2023-10-20 20:04:48 +02:00
kpine
2d6dc2bccc Fix temperature setting for multi-setpoint z-wave device (#102395)
* Fix temperature setting for multi-setpoint z-wave device

* Add missing fixture file

* Apply suggestions from code review

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-20 20:04:45 +02:00
J. Nick Koston
31daac61a9 Bump bluetooth-data-tools to 1.13.0 (#102208) 2023-10-20 20:04:42 +02:00
J. Nick Koston
1939beeca6 Bump dbus-fast to 2.12.0 (#102206) 2023-10-20 20:04:39 +02:00
J. Nick Koston
14483db892 Bump aioesphomeapi to 18.0.6 (#102195) 2023-10-20 20:04:35 +02:00
J. Nick Koston
0bd416e53d Bump aioesphomeapi to 18.0.7 (#102399) 2023-10-20 08:00:55 -10:00
kpine
c7affa75d4 Fix temperature setting for multi-setpoint z-wave device (#102395)
* Fix temperature setting for multi-setpoint z-wave device

* Add missing fixture file

* Apply suggestions from code review

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-20 19:57:00 +02:00
Franck Nijhof
73ac2d3dcc Bumped version to 2023.10.4 2023-10-20 17:40:08 +02:00
Álvaro Fernández Rojas
00978026cd Update aioairzone to v0.6.9 (#102383) 2023-10-20 17:39:46 +02:00
Joost Lekkerkerker
c9cba77940 Bump vehicle to 2.0.0 (#102379) 2023-10-20 17:38:32 +02:00
puddly
467d24548d Bump ZHA dependencies (#102358) 2023-10-20 17:38:28 +02:00
Maikel Punie
ab67304ebc Bump pyduotecno to 2023.10.1 (#102344) 2023-10-20 17:36:54 +02:00
Álvaro Fernández Rojas
d55b6a0839 Handle timeouts on AEMET init (#102289)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-10-20 17:36:51 +02:00
Joost Lekkerkerker
dd15e3f706 Bump aiowaqi to 2.1.0 (#102209) 2023-10-20 17:36:47 +02:00
Maikel Punie
7963008a1e Bump velbusaio to 2023.10.1 (#102178) 2023-10-20 17:36:44 +02:00
Michael Hansen
3599ddfd9f Don't warn about unknown pipeline events in ESPHome (#102174)
Don't warn about unknown events (debug)
2023-10-20 17:36:41 +02:00
iain MacDonnell
f5e681ad33 Explicitly set entity name for VenstarSensor (#102158)
VenstarSensor entity name

Set entity name using _attr_name instead of a name property, to
avoid warnings about name being implicitly set to None.
2023-10-20 17:36:38 +02:00
tronikos
221efd7d4d Bump opower to 0.0.36 (#102150) 2023-10-20 17:36:34 +02:00
Jesse Hills
f896b82b49 Send events for tts stream start/end (#102139) 2023-10-20 17:36:31 +02:00
Robert Svensson
ec6128d9c4 Fix UniFi client tracker entities being unavailable when away on restart (#102125) 2023-10-20 17:36:28 +02:00
TheJulianJES
a187f05da0 Bump zha-quirks to 0.0.105 (#102113) 2023-10-20 17:36:25 +02:00
Maikel Punie
f12ce41d00 Bump velbusaio to 2023.10.0 (#102100) 2023-10-20 17:36:22 +02:00
Maikel Punie
3aba98a297 Correct sensor state attribute and device class in Velbus sensors (#102099) 2023-10-20 17:36:19 +02:00
J. Nick Koston
1a45b0af28 Bump aioesphomeapi to 18.0.3 (#102085) 2023-10-20 17:36:16 +02:00
Abílio Costa
c916ac67bd Call disconnected callbacks from BT ESPHome client (#102084)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-20 17:36:13 +02:00
Allen Porter
f7e84fcb60 Fix bug in calendar state transitions (#102083) 2023-10-20 17:36:09 +02:00
J. Nick Koston
2d7f054058 Bump aioesphomeapi to 18.0.1 (#102028)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-20 17:36:06 +02:00
J. Nick Koston
3fb79829ef Bump aioesphomeapi to 17.2.0 (#101981)
* Bump aioesphomeapi to 17.2.0

changelog: https://github.com/esphome/aioesphomeapi/compare/v17.1.5...v17.2.0

* fix import from wrong module
2023-10-20 17:36:03 +02:00
Phil Bruckner
b2bbe4f4b8 Fix google_maps same last_seen bug (#101971) 2023-10-20 17:36:00 +02:00
Maximilian
edce212dc9 Bump pynina to 0.3.3 (#101960) 2023-10-20 17:35:55 +02:00
Kevin Worrel
1e1dbf3cef Bump screenlogicpy to v0.9.3 (#101957) 2023-10-20 17:35:51 +02:00
Raman Gupta
24a1e540b9 Update zwave issue repair strings (#101940) 2023-10-20 17:35:46 +02:00
Vadym Holoveichuk
1371a03d14 Fix Setpoint in Matter climate platform (#101929)
fix matter max setpoint
2023-10-20 17:35:43 +02:00
J. Nick Koston
1b83620213 Bump aioesphomeapi to 17.1.5 (#101916) 2023-10-20 17:35:35 +02:00
J. Nick Koston
08d5d5336a Bump aioesphomeapi to 17.1.4 (#101897) 2023-10-20 17:35:29 +02:00
Jan Bouwhuis
406e58df69 Fix error handling on subscribe when mqtt is not initialized (#101832) 2023-10-20 17:29:45 +02:00
Archomeda
e9e677d933 Fix Spotify media position update value (#100044)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-20 17:29:34 +02:00
J. Nick Koston
3cfcffc6f2 Bump fnv-hash-fast to 0.5.0 (#102271) 2023-10-20 16:49:40 +02:00
J. Nick Koston
50c7587ab8 Bump ulid-transform to 0.9.0 (#102272) 2023-10-20 16:49:18 +02:00
Kostas Chatzikokolakis
cc0491e85d Use action response in intent_script speech template (#96256) 2023-10-20 10:23:02 -04:00
Maikel Punie
5e483c5573 Create a binary sensor for each Duotecno virtual unit (#102347) 2023-10-20 16:02:56 +02:00
dupondje
da653c36fd Add peak usage sensors to dsmr (#102227) 2023-10-20 15:59:34 +02:00
Marco4223
a187164bf8 Get all playlist items from sonos devices (#100924) 2023-10-20 15:18:10 +02:00
Jan Bouwhuis
485c52568d Fix error handling on subscribe when mqtt is not initialized (#101832) 2023-10-20 15:16:45 +02:00
Sjors
20a58d2314 Fix typo in fastdotcom strings (#102384) 2023-10-20 15:15:13 +02:00
Kevin Stillhammer
d7e195ba40 Use snapshots in calendar tests (#102299) 2023-10-20 15:14:31 +02:00
Álvaro Fernández Rojas
8202071683 Update aioairzone to v0.6.9 (#102383) 2023-10-20 15:11:48 +02:00
Álvaro Fernández Rojas
c042863486 Update aioairzone-cloud to v0.2.5 (#102382) 2023-10-20 15:10:40 +02:00
Joost Lekkerkerker
16e3ed47e7 Bump vehicle to 2.0.0 (#102379) 2023-10-20 14:54:51 +02:00
Jan-Philipp Benecke
6f83374f3e Bump pydiscovergy to 2.0.5 (#102354) 2023-10-20 14:52:32 +02:00
Jan Bouwhuis
fe8fb8928c Improve test creating mqtt certificate files (#102380)
* Improve test creating mqtt certificate files

* Split tests

* Cleanup and de-duplicate

* Update tests/components/mqtt/test_util.py
2023-10-20 14:49:33 +02:00
Archomeda
712c061ac0 Fix Spotify media position update value (#100044)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-20 14:00:31 +02:00
Jan Bouwhuis
25ab622b51 Rename mqtt entry setup helpers to reflect their purpose (#102378)
Rename mqtt entry setup helpers
2023-10-20 13:36:24 +02:00
Álvaro Fernández Rojas
e319b04fde Improve Airzone Cloud tests (#102377) 2023-10-20 00:58:31 -10:00
Jan Bouwhuis
7d9014ae41 Do not fail MQTT setup if events or sensors configured via yaml can't be validated (#102309)
* Add event and sensor

* Cleanup unused code

* Schema cannot be None for supported platform
2023-10-20 12:09:52 +02:00
Álvaro Fernández Rojas
f85b4f734c Implement Airzone Cloud Installation climate support (#101090)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-20 00:09:38 -10:00
c0ffeeca7
4e63823970 Rename Twitter to X (#102214) 2023-10-20 12:02:43 +02:00
Franck Nijhof
554ab94782 Bump toonapi to 0.3.0 (#102369) 2023-10-20 11:13:18 +02:00
Jan Bouwhuis
1efbba2631 Do not fail MQTT setup if covers configured via yaml can't be validated (#102304)
Add cover
2023-10-20 10:51:42 +02:00
Jan Bouwhuis
12c4a10cfc Do not fail MQTT setup if numbers configured via yaml can't be validated (#102316)
Add number
2023-10-20 10:51:14 +02:00
Jan Bouwhuis
f1eb28b7ac Do not fail MQTT setup if update entities configured via yaml can't be validated (#102324) 2023-10-20 10:14:25 +02:00
J. Nick Koston
3014a651c3 Reduce overhead to write HomeKit Controller state (#102365) 2023-10-20 08:50:07 +02:00
Robert Svensson
84d0907fc8 Fix UniFi client tracker entities being unavailable when away on restart (#102125) 2023-10-20 08:49:22 +02:00
puddly
8a79870e3a Clean up stale ZHA database listener when reconnecting to radio (#101850) 2023-10-20 08:48:33 +02:00
TheJulianJES
92e625636a Fix ZHA power_factor attribute not initialized (#102133) 2023-10-20 08:15:37 +02:00
Jan Bouwhuis
c7b1e4186b Do not fail MQTT setup if water heaters configured via yaml can't be validated (#102326) 2023-10-20 08:15:09 +02:00
Maikel Punie
38a0d31edb Bump pyduotecno to 2023.10.1 (#102344) 2023-10-20 08:14:55 +02:00
Jan Bouwhuis
04fdcbe5fa Do not fail MQTT setup if buttons configured via yaml can't be validated (#102301) 2023-10-20 08:13:59 +02:00
Robert Resch
bb90c1f168 Fix multilevel reference translations (#102338) 2023-10-20 08:12:53 +02:00
J. Nick Koston
b911f242dd Use new lookup methods for homekit_controller (#102278) 2023-10-20 08:12:15 +02:00
puddly
3285c982fe Bump ZHA dependencies (#102358) 2023-10-20 08:11:49 +02:00
Jan Bouwhuis
dcdd4b470c Do not fail MQTT setup if lawn mowers configured via yaml can't be validated (#102314) 2023-10-20 08:11:33 +02:00
Franck Nijhof
e6d9f89991 Remove dev API docs from repository (#102274) 2023-10-20 08:10:46 +02:00
Jan Bouwhuis
5264cdf382 Do not fail MQTT setup if locks configured via yaml can't be validated (#102315)
Add lock
2023-10-20 01:13:35 +02:00
Joost Lekkerkerker
fd435a5416 Address MyStrom late review (#102306)
* Address MyStrom late review

* Address MyStrom late review
2023-10-20 00:08:26 +02:00
Jan Bouwhuis
f4e7c5aed3 Do not fail MQTT setup if humidifiers configured via yaml can't be validated (#102312)
Add humidifier
2023-10-19 23:29:49 +02:00
J. Nick Koston
6baa8082d5 Bump aiohomekit to 3.0.6 (#102341) 2023-10-19 11:12:56 -10:00
Jan Bouwhuis
ec1b3fe6fb Do not fail MQTT setup if switches configured via yaml can't be validated (#102320)
Add switch
2023-10-19 23:04:35 +02:00
Jan Bouwhuis
54c80491e3 Do not fail MQTT setup if select's configured via yaml can't be validated (#102318)
Add select
2023-10-19 22:10:45 +02:00
Joost Lekkerkerker
e6e2aa0ea0 Import Comelit state from library (#102356) 2023-10-19 21:50:14 +02:00
J. Nick Koston
5c422c61e9 Improve typing in roomba integration (#102350) 2023-10-19 09:43:48 -10:00
thatso
96b450ad39 Improve wording in NUT (#102353) 2023-10-19 21:38:15 +02:00
Joost Lekkerkerker
063d74c35d Use entity descriptions in Roomba (#102323)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-19 09:37:01 -10:00
Jan Bouwhuis
e26a2596af Do not fail MQTT setup if climate's configured via yaml can't be validated (#102303)
Add climate
2023-10-19 21:14:45 +02:00
J. Nick Koston
b57af4e404 Remove update_before_add from roomba (#102337) 2023-10-19 20:35:58 +02:00
Jan Bouwhuis
22c21fdc18 Do not fail MQTT setup if vacuum's configured via yaml can't be validated (#102325)
Add vacuum
2023-10-19 20:11:09 +02:00
Franck Nijhof
f497bcee3a Don't run CodeQL on PRs (#102342) 2023-10-19 20:04:09 +02:00
Jan Bouwhuis
9db9f1b8a9 Fix suggested UOM cannot be set for dsmr entities (#102134)
* Supply dsmr entities jit on first telegram

* Stale docstr

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

* Simplify tuple type

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-19 19:22:03 +02:00
Simone Chemelli
c574cefc30 Bump aiocomelit to 0.3.0 (#102340)
* Bump aiocomelit to 0.3.0

* missing string
2023-10-19 17:15:06 +00:00
Jan Bouwhuis
5eb0a33795 Do not fail MQTT setup if text's configured via yaml can't be validated (#102322)
Add text
2023-10-19 18:51:47 +02:00
Jan Bouwhuis
1456809f6a Do not fail MQTT setup if sirens configured via yaml can't be validated (#102319)
Add siren
2023-10-19 18:50:50 +02:00
Jan Bouwhuis
d0341c9754 Do not fail MQTT setup if images configured via yaml can't be validated (#102313)
Add image
2023-10-19 18:50:02 +02:00
Jan Bouwhuis
3853214496 Do not fail MQTT setup if fans configured via yaml can't be validated (#102310)
Add fan
2023-10-19 18:48:35 +02:00
J. Nick Koston
c408b60e4e Reduce internal property lookups needed to write number entity state (#102281) 2023-10-19 06:30:20 -10:00
Jan Bouwhuis
615b02be59 Do not fail MQTT setup if scenes configured via yaml can't be validated (#102317)
Add scene
2023-10-19 18:27:04 +02:00
GeoffAtHome
c266583bea Smart plugs appear as Switches and Binary Sensors (#102112) 2023-10-19 18:26:34 +02:00
Robert Resch
eab4c24f7f Fix KeyError in derivative and integration (#102294) 2023-10-19 18:22:22 +02:00
Jan Bouwhuis
3a4341dbeb Do not fail MQTT setup if device trackers configured via yaml can't be validated (#102308)
Add device_tracker
2023-10-19 18:18:04 +02:00
Jan Bouwhuis
fb984b5218 Do not fail MQTT setup if camera's configured via yaml can't be validated (#102302)
Add camera
2023-10-19 18:17:06 +02:00
Jan Bouwhuis
651b725cc0 Do not fail MQTT setup if binary sensors configured via yaml can't be validated (#102300)
Add binary_sensor
2023-10-19 18:15:21 +02:00
Jan Bouwhuis
d149bffb07 Do not fail MQTT setup if lights configured via yaml can't be validated (#101649)
* Add light

* Deduplicate code

* Follow up comment
2023-10-19 17:34:43 +02:00
Joakim Plate
90687e9794 Standardize zha attribute member name (#102182)
* Correct missed translation

* Standardize on _attribute for zha
2023-10-19 17:34:17 +02:00
Kevin Stillhammer
dae742fba0 Use snapshots in weather tests (#102297) 2023-10-19 16:40:08 +02:00
Xitee
2d833fd6ea Add more diagnostic sensors to iRobot (#84995)
Co-authored-by: 930913 <3722064+930913@users.noreply.github.com>
Co-authored-by: Xitee <59659167+Xitee1@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-19 15:49:43 +02:00
Erik Montnemery
dff18b4a16 Rename gather_with_concurrency to gather_with_limited_concurrency (#102241)
* Rename gather_with_concurrency to gather_with_limited_concurrency

* Update test
2023-10-19 15:08:52 +02:00
Erik Montnemery
4498c2e8c4 Validate steps in Flowhandler (#102152)
* Validate steps in Flowhandler

* Move validation to FlowManager._async_handle_step

* Fix _raise_if_not_has_step

* Fix config_entries tests

* Fix tests

* Rename

* Add test
2023-10-19 13:34:10 +02:00
Joost Lekkerkerker
9857c0fa3a Move WAQI state attributes to separate sensors (#101217)
* Migrate WAQI to has entity name

* Split WAQI extra state attributes into separate sensors

* Split WAQI extra state attributes into separate sensors

* Fix test

* Support new aiowaqi

* Bump aiowaqi to 2.1.0

* Add nephelometry as possible value

* Fix test
2023-10-19 12:30:40 +02:00
Jan Bouwhuis
c377cf1ce0 Do not fail mqtt entry on single platform config schema error (#101373)
* Do not fail mqtt entry on platform config

* Raise on reload with invalid config

* Do not store issues

* Follow up
2023-10-19 12:06:33 +02:00
Joost Lekkerkerker
857f2e1d86 Patch platform in Withings sensor test (#102155)
* Patch platform in Withings sensor test

* Fix feedback
2023-10-19 11:33:31 +02:00
Christopher Fenner
ea61160fd8 Reuse function to check feature support on ViCare devices (#102211)
* check feature support in utils function

* rename parameters

* restore severity

* reorder parameters

* Update .coveragerc
2023-10-19 10:55:30 +02:00
J. Nick Koston
327bdce561 Handle ATTR_HS_COLOR being None in HomeKit (#102290) 2023-10-18 22:42:39 -10:00
Álvaro Fernández Rojas
7ec2496c81 Handle timeouts on AEMET init (#102289)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-10-19 10:42:31 +02:00
J. Nick Koston
d00934a8f8 Refactor automation trigger attachment to avoid creating a closure (#102288) 2023-10-18 22:42:15 -10:00
J. Nick Koston
393544b3e7 Make group _update_at_start a callback (#102286) 2023-10-18 22:41:39 -10:00
dupondje
870e38e8ba Remove unused dsmr sensors (#102223) 2023-10-19 08:57:50 +02:00
Franck Nijhof
4b39d34f4c Add CodeQL CI Job (#102273) 2023-10-19 08:56:30 +02:00
Luke Lashley
ae62999457 Bump Python-Roborock to 0.35.0 (#102275) 2023-10-19 08:56:15 +02:00
tronikos
afec5b6730 Bump opower to 0.0.37 (#102265) 2023-10-19 01:51:48 +02:00
J. Nick Koston
159b623b95 Bump orjson to 3.9.9 (#102267) 2023-10-19 01:48:05 +02:00
J. Nick Koston
20fdd45e60 Bump home-assistant-bluetooth to 1.10.4 (#102268) 2023-10-19 01:16:55 +02:00
Paul Bottein
c98c18f25e Return 'None' for light attributes when off instead of removing them (#101946) 2023-10-19 01:08:08 +02:00
Abílio Costa
606b76c681 Add better connection management for Idasen Desk (#102135) 2023-10-18 12:58:31 -10:00
Maikel Punie
2531b0bc09 Bump velbusaio to 2023.10.1 (#102178) 2023-10-18 22:00:55 +02:00
Stefan
1372126bc0 Remove Shiftr integration (#102224) 2023-10-18 21:21:55 +02:00
J. Nick Koston
22de378d91 Bump bluetooth-data-tools to 1.13.0 (#102208) 2023-10-18 08:54:17 -10:00
Simone Chemelli
b9c7613774 Add switch platform to Comelit SmartHome (#102233)
* Add switch platform to Comelit SmartHome

* add device class only when needed

* apply review comment

* small cleanup for light platform

* update functions description

* fix list of values
2023-10-18 20:49:33 +02:00
dependabot[bot]
61104dd726 Bump actions/checkout from 4.1.0 to 4.1.1 (#102248)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-18 19:50:09 +02:00
J. Nick Koston
9d6518265c Bump zeroconf to 0.119.0 (#102207) 2023-10-18 07:22:06 -10:00
J. Nick Koston
d0bff10502 Bump dbus-fast to 2.12.0 (#102206) 2023-10-18 07:14:13 -10:00
Franck Nijhof
664e490cfa Update base image to 2023.10.0 (#102126) 2023-10-18 19:11:41 +02:00
dupondje
1b73219137 Bump dsmr_parser to 1.3.0 (#102225)
bump dsmr_parser==1.3.0
2023-10-18 18:13:09 +02:00
Christopher Fenner
eee294d384 Get diagnostics of all devices in ViCare account (#102218)
* get diagnostics of all devices

* correct test data

* correct test data

* correct test data
2023-10-18 18:07:42 +02:00
Franck Nijhof
9d775bdbf6 Update home-assistant/wheels to 2023.10.5 (#102243) 2023-10-18 17:58:39 +02:00
jan iversen
3bb23a6d88 Correct process_raw_value for modbus sensor (#102032) 2023-10-18 17:25:57 +02:00
Philippe Wechsler
5f35eecf93 Add sensors for myStrom plugs (#97024)
* support sensors for myStrom plugs

* added myStrom sensor to coveragerc

* some improvements from pr reviews

* adapt to the SensorEntityDescription pattern

* Apply suggestions from code review

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

* Update homeassistant/components/mystrom/sensor.py

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

* Update homeassistant/components/mystrom/sensor.py

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

* Update __init__.py

* Update const.py

* Update sensor.py

* Apply suggestions from code review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-10-18 16:01:46 +02:00
Joost Lekkerkerker
799342497b Remove instances of title case in common strings (#102212) 2023-10-18 14:52:51 +02:00
Joost Lekkerkerker
a65ad37c8b Change config entry title to Picnic (#102221) 2023-10-18 14:27:37 +02:00
dupondje
43aaf78f7b Fix DSMR max current device class (#102219)
Max current is CURRENT Device Class

The max current is shown as Amps. So need to change the device class to
CURRENT instead of POWER.
2023-10-18 14:05:16 +02:00
Marc Mueller
a06d8c4d3f Update mypy to 1.6.1 (#102210) 2023-10-18 13:38:10 +02:00
Joost Lekkerkerker
42f830600c Bump aiowaqi to 2.1.0 (#102209) 2023-10-18 13:24:57 +02:00
Simone Chemelli
6c1bcae291 Bump aiovodafone to 0.4.1 (#102180) 2023-10-18 10:56:48 +02:00
J. Nick Koston
3cedfbcc66 Handle re-adding of accessories/services/chars in homekit_controller after removal (#102192) 2023-10-17 22:00:02 -10:00
J. Nick Koston
cfb88766c7 Bump aioesphomeapi to 18.0.6 (#102195) 2023-10-17 21:31:40 -10:00
J. Nick Koston
c3d1db5db6 Handle removal of accessories/services/chars in homekit_controller (#102179) 2023-10-17 20:49:35 -10:00
J. Nick Koston
e2e9c84c88 Cache construction of battery icon (#102194)
This was being built every time state was written. When
a robo vac is operating it writes state often which mean building
the icon string over and over again when it rarely changes.
2023-10-18 07:35:39 +02:00
J. Nick Koston
d8e541a284 Only compute homekit_controller accessory_info when entity is added or config changes (#102145) 2023-10-17 10:53:17 -10:00
Erik Montnemery
e6895b5738 Fix menu in knx config flow (#102168)
* Fix menu in knx config flow

* Update tests

* Fix strings.json

* Rename new menu steps for readabiltiy

---------

Co-authored-by: Matthias Alphart <farmio@alphart.net>
2023-10-17 22:25:35 +02:00
TheJulianJES
60c1a8d56f Remove invalid attribute reporting for enhanced_current_hue in ZHA (#102137) 2023-10-17 16:23:11 -04:00
TheJulianJES
9dd2f37b11 Remove unused variables in ZHA lighting cluster handler (#102138)
* Remove unused `UNSUPPORTED_ATTRIBUTE`

* Remove unused `CAPABILITIES_COLOR_TEMP`

* Use zigpy `ColorCapabilities` and remove `CAPABILITIES_COLOR_XY`
2023-10-17 15:04:03 -05:00
Joakim Plate
29e8814d1b Add translation entiry support (zha) (#101909)
* zha: Add translation to binary sensors

* Add some small test for name

* Add translations for sensors

* Correct some tests

* Adjust summation key

* Add translation keys for button

* Add translation keys to climate

* Add translation keys for cover

* Add translation keys to fan

* Add translations to light

* Add translations for lock

* Add translation keys to number

* Add translationk keys to select

* Add translations for switch entities

* Add translation to alarm control panel

* Map to some more standard device classes

* Use shorter references

* Remove explicit name from identify button

* Correct tests

* Correction after rebase
2023-10-17 21:59:49 +02:00
Paulus Schoutsen
4ae5757bc1 Add some entity categories to Reolink (#102141) 2023-10-17 20:19:10 +02:00
iain MacDonnell
44a5a2dc06 Explicitly set entity name for VenstarSensor (#102158)
VenstarSensor entity name

Set entity name using _attr_name instead of a name property, to
avoid warnings about name being implicitly set to None.
2023-10-17 17:59:15 +02:00
Michael Hansen
474f4329bc Don't warn about unknown pipeline events in ESPHome (#102174)
Don't warn about unknown events (debug)
2023-10-17 11:57:08 -04:00
Erik Montnemery
af66bc5e3a Fix menu in homeassistant_yellow config flow (#102166) 2023-10-17 17:15:57 +02:00
Erik Montnemery
f7c1dd2f79 Fix menu in here_travel_time config flow (#102163) 2023-10-17 17:08:48 +02:00
Erik Montnemery
52063537d7 Fix menu in homeassistant_hardware config flow (#102164) 2023-10-17 16:53:52 +02:00
elmurato
7cd376574e Reach full init test coverage in Minecraft Server (#102013)
* Add full init test coverage

* Fix patch location

* Use contant for test unique ID
2023-10-17 07:49:05 -07:00
Erik Montnemery
928086a9e5 Fix menu in hassio repair flow (#102162) 2023-10-17 16:43:10 +02:00
Erik Montnemery
fc09d87c3c Fix menu in mysensors config flow (#102169) 2023-10-17 16:38:19 +02:00
tronikos
ab29c796da Bump opower to 0.0.36 (#102150) 2023-10-17 10:35:32 +02:00
J. Nick Koston
10fd26df4b Preserve HomeKit Accessory ID when entity unique id changes (#102123) 2023-10-16 21:42:02 -10:00
J. Nick Koston
433c022687 Save previous unique id in entity registry when it changes (#102093) 2023-10-16 21:26:19 -10:00
J. Nick Koston
eea9de063b Replace any expression in HomeKitWindowCover with a simple or (#102146) 2023-10-16 21:23:30 -10:00
Jesse Hills
16c5a12c87 Send events for tts stream start/end (#102139) 2023-10-17 19:46:25 +13:00
Brian Lalor
912032e8b9 Add support for Govee H5055 (#100365)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-16 18:18:03 -10:00
Michael Hansen
25671a2e42 Add HassNevermind intent (bump intents package) (#102131)
* Add HassNevermind intent

* Bump intents package to 2023.10.16
2023-10-16 19:13:26 -05:00
Joakim Plate
6d457e808f Remove class argument in favor of class variables (zha) (#102117)
* Drop id_suffix class argument

* Use lowecase attribute
2023-10-16 16:26:03 -05:00
Jan-Philipp Benecke
f891fb6b41 Make location types in co2signal translatable (#102127) 2023-10-16 23:13:14 +02:00
elmurato
4130980100 Patch library instead of own code in Minecraft Server config flow tests (#102018)
* Patch library instead of own code in config flow tests

* Fix patch location
2023-10-16 14:06:22 -07:00
TheJulianJES
23b379b7da Bump zha-quirks to 0.0.105 (#102113) 2023-10-16 21:57:37 +02:00
mkmer
9444e1e2ab Address Blink late review (#102106)
* Address late review topics

* Missing await, optimize config_flow call

* Address proper mock for blink

* Address typing
2023-10-16 17:41:56 +02:00
Teemu R
e151358aa1 Allow model-specific lazy_discover setting for xiaomi_miio (#100490) 2023-10-16 14:30:05 +02:00
Maikel Punie
4913e7e846 Correct sensor state attribute and device class in Velbus sensors (#102099) 2023-10-16 14:23:43 +02:00
Maikel Punie
79811e3cd9 Bump velbusaio to 2023.10.0 (#102100) 2023-10-16 14:22:01 +02:00
Christopher Fenner
b8904fa173 Update device class, icons and names of Vicare binary sensors (#101476)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-16 13:43:01 +02:00
mkmer
eaf6197d43 Bump Blinkpy to 0.22.2 in Blink (#98571) 2023-10-16 13:41:45 +02:00
G Johansson
6b05f51413 Migrate unique id in Trafikverket Camera (#101937) 2023-10-16 10:28:11 +02:00
J. Nick Koston
88296c1998 Migrate ESPHome unique ids to new format (#99451) 2023-10-15 17:05:20 -10:00
J. Nick Koston
17c9d85e0e Bump aioesphomeapi to 18.0.3 (#102085) 2023-10-15 16:32:55 -10:00
J. Nick Koston
d0ba42283c Use stdlib ip_address method in the network helper when compatible (#102019) 2023-10-15 21:24:49 -04:00
Abílio Costa
c60cc11505 Call disconnected callbacks from BT ESPHome client (#102084)
Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-15 14:00:19 -10:00
Allen Porter
ce7573c3ad Fix bug in calendar state transitions (#102083) 2023-10-15 16:59:19 -07:00
Robert Van Gorkom
422252e3a0 Remove code owner from withings (#102081)
* Remove code owner from withings

* Update CODEOWNERS

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-16 00:44:52 +02:00
J. Nick Koston
e5ebdf7ad4 Remove implict name check from Entity base class (#101905) 2023-10-15 23:40:43 +02:00
Duco Sebel
d0fb994199 Set Mac as connection to link HomeWizard devices on network (#101944) 2023-10-15 23:40:06 +02:00
Phil Bruckner
8dd8af0718 Fix google_maps same last_seen bug (#101971) 2023-10-15 23:39:41 +02:00
J. Nick Koston
653da6e31f Reduce websocket event and state JSON construction overhead (#101974) 2023-10-15 23:39:09 +02:00
J. Nick Koston
36e1c740fd Fix ingress sending an empty body for GET requests (#101917) 2023-10-15 23:38:20 +02:00
ollo69
11740d1e68 Remove shorthand unique id in AsusWrt ScannerEntity (#102076)
Remove _attr_unique_id in AsusWrt ScannerEntity
2023-10-15 23:26:09 +02:00
J. Nick Koston
93f10cdce8 Move event permissions out of the websocket api into auth (#101975) 2023-10-15 23:14:19 +02:00
G Johansson
3c3f512583 Remove setup_platform for demo (#100867) 2023-10-15 23:12:41 +02:00
Joost Lekkerkerker
24afbf3ae4 Address late Withings review (#102075) 2023-10-15 23:03:45 +02:00
Kevin Worrel
b4295e909c Bump screenlogicpy to v0.9.3 (#101957) 2023-10-15 22:07:32 +02:00
Allen Porter
3577547eb3 Skip CalDAV calendars that do not support events (#102059) 2023-10-15 21:55:11 +02:00
J. Nick Koston
683046272d Switch hassio to use iter_chunks (#102031) 2023-10-15 21:48:04 +02:00
Joost Lekkerkerker
471d1abe47 Add more measurement sensors to Withings (#102074) 2023-10-15 21:38:30 +02:00
Joost Lekkerkerker
b95060df99 Promote Withings to Platinum quality (#102069) 2023-10-15 09:04:01 -10:00
Joost Lekkerkerker
b4e4a98f17 Add diagnostics to Withings (#102066) 2023-10-15 20:29:20 +02:00
Allen Porter
6f5a72edf2 Bump gcal_sync to 5.0.0 (#102010)
* Bump gcal_sync to 5.0.0

* Update snapshots
2023-10-15 11:24:41 -07:00
Whitney Young
2c3067b9c2 Fix date observed is not sent by AirNow (#101921) (#101977)
* Fix mixed up keys

These were accidentally the wrong values, but never passed on
to the end user.

* Fix date observed is not sent by AirNow (#101921)
2023-10-15 19:48:47 +02:00
Nathan Spencer
36fcf198b1 Adjust WeatherFlow air density sensor device class and unit (#101777) 2023-10-15 07:11:34 -10:00
Joost Lekkerkerker
1a348babd4 Add Withings to strict-typing (#101761)
* Add Withings to strict-typing

* Rebase
2023-10-15 19:08:57 +02:00
Maximilian
8c14824bd5 Bump pynina to 0.3.3 (#101960) 2023-10-15 19:01:05 +02:00
J. Nick Koston
d237ab6d67 Bump HAP-python to 4.9.0 (#102055) 2023-10-15 06:49:59 -10:00
J. Nick Koston
e427fc511b Bump SQLAlchemy to 2.0.22 (#102033) 2023-10-15 06:14:51 -10:00
G Johansson
264eef8dd8 Allow to remove devices in Sensibo (#101890) 2023-10-15 06:14:38 -10:00
Joost Lekkerkerker
148087a1c9 Mark Withings as cloud push (#102040) 2023-10-15 18:04:03 +02:00
Joost Lekkerkerker
dcb5faa305 Dynamically add sensors for new measurements in Withings (#102022)
* Dynamically add sensors for new data points in Withings

* Dynamically add sensors for new data points in Withings

* Add test

* Change docstring

* Store new measurements

* Fix feedback

* Add test back

* Add test back

* Add test back
2023-10-15 18:00:52 +02:00
Joost Lekkerkerker
05ee28cae5 Clean up Withings webhook (#102038) 2023-10-15 18:00:18 +02:00
J. Nick Koston
23e5bc20c2 Bump zeroconf to 0.118.0 (#102015) 2023-10-15 05:54:59 -10:00
J. Nick Koston
7fe2bfa990 Revert "Update numpy to 1.26.1" (#102036) 2023-10-15 05:42:25 -10:00
Joost Lekkerkerker
dc19290271 Make Withings test sensors from entity registry (#102025)
Test entities from entity registry
2023-10-15 12:14:50 +02:00
Joost Lekkerkerker
0eb4567364 Check for port in Withings webhook creation (#102026)
Check if port is really 443
2023-10-15 12:12:46 +02:00
J. Nick Koston
5b8da03596 Bump aioesphomeapi to 18.0.1 (#102028)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-14 23:42:22 -10:00
Joost Lekkerkerker
f9615999db Add suggested display precision to Withings (#102023) 2023-10-14 23:00:50 -10:00
Marc Mueller
1f1a27d6a5 Update numpy to 1.26.1 (#102021) 2023-10-14 16:30:43 -10:00
J. Nick Koston
547c38a515 Cache emulated_hue local ip check (#102020) 2023-10-14 16:19:10 -10:00
J. Nick Koston
7b2aa3a369 Improve performance of config/entity_registry/get* calls (#101984) 2023-10-14 08:40:16 -10:00
Aaron Bach
2d1afc1c7d Add state translations for OpenUV UV Level sensor (#101978) 2023-10-14 10:31:46 -06:00
Joost Lekkerkerker
76083a0b4c Update Withings measurements incrementally after the first update (#102002)
* Update incrementally after the first update

* Update incrementally after the first update
2023-10-14 16:19:04 +02:00
Tobias Sauerwein
302b444269 Add service set_preset_mode_with_end_datetime in Netatmo integration (#101674)
* Add Netatmo climate service set_preset_mode_with_end_datetime to allow you to specify an end datetime for a preset mode

* Make end date optional

* address review comments

* Update strings

* Update homeassistant/components/netatmo/const.py

* Update homeassistant/components/netatmo/strings.json

---------

Co-authored-by: Adrien JOLY <adrien.joly-veillith@live.fr>
Co-authored-by: G Johansson <goran.johansson@shiftit.se>
2023-10-14 14:44:16 +02:00
Joost Lekkerkerker
8a4fe5add1 Use aiowithings (#101819)
* Subscribe to Withings webhooks outside of coordinator

* Subscribe to Withings webhooks outside of coordinator

* Split Withings coordinator

* Split Withings coordinator

* Use aiowithings

* Use aiowithings

* Use aiowithings

* Update homeassistant/components/withings/sensor.py

* Merge

* Remove startdate

* Minor fixes

* Bump to 0.4.1

* Fix snapshot

* Fix datapoint

* Bump to 0.4.2

* Bump to 0.4.3

* Bump to 0.4.4
2023-10-14 11:52:35 +02:00
J. Nick Koston
89d86fe983 Bump aioesphomeapi to 17.2.0 (#101981)
* Bump aioesphomeapi to 17.2.0

changelog: https://github.com/esphome/aioesphomeapi/compare/v17.1.5...v17.2.0

* fix import from wrong module
2023-10-14 11:48:59 +02:00
J. Nick Koston
5ed8de8348 Enable strict typing in HomeKit (#101968) 2023-10-13 14:45:59 -10:00
J. Nick Koston
0e499e07d2 Small cleanups to HomeKit thermostats (#101962) 2023-10-13 14:24:23 -10:00
J. Nick Koston
f8f39a29de Update HomeKit humidifiers to handle current humidity (#101964) 2023-10-13 14:23:50 -10:00
J. Nick Koston
8fd5d89d43 Avoid polling state machine for available state in HomeKit (#101799) 2023-10-13 14:23:15 -10:00
Aaron Bach
371d988643 Simplify state update logic for OpenUV sensors (#101972)
* Clean up OpenUV entity state logic

* Reduce

* Remove old file

* Simplify
2023-10-13 18:12:00 -06:00
J. Nick Koston
76e2afbce9 Add some more typing to HomeKit (#101959) 2023-10-13 14:03:01 -10:00
Raman Gupta
2e3013f2f8 Update zwave issue repair strings (#101940) 2023-10-13 19:14:43 -04:00
Christopher Fenner
ae7bb60677 Fix types in ViCare integration (#101926)
* fix type

* fix return type

* fix type

* fix type

* Apply suggestions from code review

* Update climate.py

* Apply suggestions from code review

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

* Update __init__.py

* Update climate.py

* Update __init__.py

* Apply suggestions from code review

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

* Update binary_sensor.py

* Update button.py

* Update sensor.py

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-13 23:13:39 +02:00
Marc Mueller
6a6f6fd99d Update pre-commit to 3.5.0 (#101956) 2023-10-13 22:56:02 +02:00
elmurato
a302f1a616 Set category and enabled by default of Minecraft Server sensors (#101943)
* Use set instead of list for supported server types in sensor platform

* Set sensor categories and enabled by default

* Set edition and version as diagnostic sensors
2023-10-13 22:09:13 +02:00
Aaron Bach
ce77566783 Add more specific typing to OpenUV coordinator (#101952) 2023-10-13 21:58:27 +02:00
Joakim Sørensen
a0a3d91a28 Update hass-nabucasa from 0.71.0 to 0.73.0 (#101939) 2023-10-13 21:46:52 +02:00
Joost Lekkerkerker
85fa364152 Migrate Panasonic Viera to has entity name (#96746)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-13 21:45:35 +02:00
Raman Gupta
7d8ea404b3 Make Basic CC Z-Wave values a light (#101438) 2023-10-13 11:11:44 -04:00
elmurato
370e3166ee Add diagnostics support in Minecraft Server (#101787)
* Add diagnostics support

* Return diagnostics dict directly

* Use syrupy snapshots for assertions in diagnostics test

* Use parametrize for testing diagnostics

* Remove unnecessary side_effect in patch
2023-10-13 15:40:50 +02:00
Joost Lekkerkerker
2609394b9f Add device info to Launch Library (#98767) 2023-10-13 15:28:58 +02:00
Marc Mueller
02567d9bf6 Revert aiohttp to 3.8.5 for Python 3.11 (#101932) 2023-10-13 14:12:42 +02:00
J. Nick Koston
2dfc8b9d7f Avoid conversion of timestamps in jwt auth (#101856) 2023-10-13 14:11:17 +02:00
Vadym Holoveichuk
4e9ec82082 Fix Setpoint in Matter climate platform (#101929)
fix matter max setpoint
2023-10-13 14:09:35 +02:00
Joost Lekkerkerker
53e97fee0e Improve Withings test fixtures (#101931) 2023-10-13 13:35:34 +02:00
Franck Nijhof
93d7ff3779 2023.10.3 (#101930) 2023-10-13 13:01:05 +02:00
Franck Nijhof
8b8df2ec3b Bumped version to 2023.10.3 2023-10-13 11:17:45 +02:00
J. Nick Koston
2fac26c6c6 Fix implicit device name in wiz switch (#101914) 2023-10-13 11:17:30 +02:00
starkillerOG
e17a25ca4a Bump reolink-aio to 0.7.11 (#101886) 2023-10-13 11:16:44 +02:00
starkillerOG
e3122ec6dc Uncancel task when swallowing CancelledError (#101884) 2023-10-13 11:16:41 +02:00
G Johansson
497da016af Add missing fan mode in Sensibo (#101883)
* Add missing fan mode in Sensibo

* translations
2023-10-13 11:16:37 +02:00
J. Nick Koston
43753b841f Bump aioesphomeapi to 17.1.5 (#101916) 2023-10-13 11:05:52 +02:00
J. Nick Koston
5f91bdcfc5 Fix implicit device name in wiz switch (#101914) 2023-10-13 11:05:25 +02:00
J. Nick Koston
fecaf9aa60 Bump zeroconf to 0.116.0 (#101915) 2023-10-13 10:39:44 +02:00
starkillerOG
f330bc0f97 Uncancel task when swallowing CancelledError (#101884) 2023-10-13 10:23:32 +02:00
Franck Nijhof
a36115993c Downgrade aiohttp to 3.8.5 (#101913) 2023-10-13 10:20:12 +02:00
Joost Lekkerkerker
d712a29052 Split Withings coordinators (#101766)
* Subscribe to Withings webhooks outside of coordinator

* Subscribe to Withings webhooks outside of coordinator

* Split Withings coordinator

* Split Withings coordinator

* Update homeassistant/components/withings/sensor.py

* Fix merge

* Rename MEASUREMENT_COORDINATOR

* Update homeassistant/components/withings/__init__.py

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

* Apply suggestions from code review

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

* Fix feedback

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-13 07:34:31 +02:00
J. Nick Koston
03210d7f81 Fix implicit name in airzone_cloud (#101907) 2023-10-13 00:06:47 +02:00
J. Nick Koston
dc18a7f1fb Bump aioesphomeapi to 17.1.4 (#101897) 2023-10-12 11:48:00 -10:00
Marc Mueller
ff5504f55f Add strict typing for transmission (#101904) 2023-10-12 22:20:39 +02:00
Marc Mueller
8b134f26a9 Fix transmission Coordinator typing (#101903) 2023-10-12 22:13:33 +02:00
Christopher Fenner
6d2fbeb556 Migrate ViCare to has_entity_name (#101895)
* set has_entity_name

* remove sensor prefix

* Apply suggestions from code review

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

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-12 21:06:09 +02:00
Rami Mosleh
536ad57bf4 Use DataUpdate coordinator for Transmission (#99209)
* Switch integration to DataUpdate Coordinator

* add coordinator to .coveragerc

* Migrate TransmissionData into DUC

* update coveragerc

* Applu suggestions

* remove CONFIG_SCHEMA
2023-10-12 20:58:22 +02:00
J. Nick Koston
cc3d1a11bd Add more typing to HomeKit (#101896) 2023-10-12 08:43:53 -10:00
G Johansson
c4ce900567 Use CountrySelector in Prosegur Alarm (#101889) 2023-10-12 20:06:03 +02:00
Bouwe Westerdijk
0c901435bd Fix state_class of huisbaasje sensors (#101892) 2023-10-12 19:57:15 +02:00
rappenze
85af452c6e Remove unnecessary dict lookup in fibaro integration (#101885) 2023-10-12 19:51:43 +02:00
starkillerOG
a92919b8fd Bump reolink-aio to 0.7.11 (#101886) 2023-10-12 19:50:29 +02:00
G Johansson
472ab437e8 Translations in Sensibo (#101887) 2023-10-12 19:16:45 +02:00
Joost Lekkerkerker
3843e91af0 Use device class translation for Sensibo update entity (#101888)
Use device class translation for Sensibo update
2023-10-12 19:13:21 +02:00
jan iversen
edf510f9c0 Bump pymodbus v3.5.4 (#101877) 2023-10-12 18:19:11 +02:00
G Johansson
a4e0b3140b Add missing fan mode in Sensibo (#101883)
* Add missing fan mode in Sensibo

* translations
2023-10-12 18:05:51 +02:00
G Johansson
b6d8211c6c Use CountrySelector in Workday (#101879) 2023-10-12 17:39:08 +02:00
G Johansson
e5f37050a9 Use CountrySelector in Buienradar (#101882) 2023-10-12 17:38:48 +02:00
G Johansson
8870991802 Remove codeowner Trafikverket (#101881) 2023-10-12 17:07:11 +02:00
G Johansson
dc29190564 CountrySelector (#100963)
* CountrySelector

* rename

* remove multiple for now

* Add no_sort

* Update homeassistant/helpers/selector.py

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-10-12 16:44:30 +02:00
Franck Nijhof
f5b5215247 2023.10.2 (#101871) 2023-10-12 15:26:56 +02:00
Christopher Fenner
5c52a15df7 Fix type issue in vicare integration (#101872)
* fix type issue

* fix type issue

* fix type issue

* extract from constructor

* Revert "extract from constructor"

This reverts commit a33de7ca8e75845b81c548c73745b15a98d2bd63.
2023-10-12 15:01:23 +02:00
Christopher Fenner
6e1c23906c Add base entity class in vicare integration (#101870)
* add entity base class

* depend on base class

* add device info to base class

* remove individual DeviceInfo

* move class

* fix imports

* add file comment

* use super()

* fix formatting

* add vicare/entity.py
2023-10-12 14:54:16 +02:00
Joost Lekkerkerker
3e4edc8edd Move Withings entity descriptions to platforms (#101820) 2023-10-12 13:42:00 +02:00
Franck Nijhof
014546c75e Bumped version to 2023.10.2 2023-10-12 13:34:26 +02:00
Joost Lekkerkerker
b0dabfa3f7 Only reload Withings config entry on reauth (#101638)
* Only reload on reauth

* Reload if entry is loaded

* Make async_cloudhook_generate_url protected

* Fix feedback
2023-10-12 13:33:54 +02:00
Betacart
ca1d6ddbb6 Fix typo in remember the milk strings (#101869)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-12 13:32:45 +02:00
Martin Hjelmare
7670b5d3b0 Fix mysensors battery level attribute (#101868) 2023-10-12 13:32:39 +02:00
René Klomp
04dc44c069 Fix SMA incorrect device class (#101866) 2023-10-12 13:32:36 +02:00
Joost Lekkerkerker
c2cf497302 Fix translation key in Plugwise (#101862)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-12 13:32:31 +02:00
Justin Lindh
34693d4a9b Bump Python-MyQ to v3.1.13 (#101852) 2023-10-12 13:31:46 +02:00
Brandon Rothweiler
c9b9851605 Remove Mazda integration (#101849)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-12 13:26:43 +02:00
Michael Hansen
3b13c9129a Close existing UDP server for ESPHome voice assistant (#101845) 2023-10-12 13:26:39 +02:00
Michael Hansen
ffe60102fd Dynamic wake word loading for Wyoming (#101827)
* Change supported_wake_words property to async method

* Add test

* Add timeout + test

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-10-12 13:26:34 +02:00
Álvaro Fernández Rojas
5946681454 Update aioqsw to v0.3.5 (#101809) 2023-10-12 13:26:31 +02:00
Kevin Worrel
eae6f9b0f8 Await set value function in ScreenLogic number entities (#101802) 2023-10-12 13:26:27 +02:00
Michael Davie
959d21a576 Bump env_canada to 0.6.0 (#101798) 2023-10-12 13:26:20 +02:00
Richard Kroegel
785df0c8e1 Bump bimmer_connected to 0.14.1 (#101789)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-10-12 13:26:16 +02:00
Nathan Spencer
62805aed2b Bump pyweatherflowudp to 1.4.5 (#101770) 2023-10-12 13:26:12 +02:00
Hessel
1a2c9fd9a9 Change BiDirectional Prefix (#101764) 2023-10-12 13:26:09 +02:00
Joost Lekkerkerker
f0a1977d2e Subscribe to Withings webhooks outside of coordinator (#101759)
* Subscribe to Withings webhooks outside of coordinator

* Subscribe to Withings webhooks outside of coordinator

* Update homeassistant/components/withings/__init__.py

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

* Update homeassistant/components/withings/__init__.py

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-12 13:26:03 +02:00
Maikel Punie
8b3fc107df Bump pyDuotecno to 2023.10.0 (#101754) 2023-10-12 13:25:59 +02:00
Betacart
417ba3644b Fix typo in Ombi translation strings (#101747)
Update strings.json

Fixed typo ("Sumbit" -> "Submit")
2023-10-12 13:25:56 +02:00
Kevin Worrel
49f060d95b Bump screenlogicpy to 0.9.2 (#101746) 2023-10-12 13:25:52 +02:00
Álvaro Fernández Rojas
ed57d0beac Fix Airzone climate double setpoint (#101744)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-10-12 13:25:49 +02:00
Allen Porter
d7a36cb6a4 Add google calendar required feature for create event service (#101741)
* Add google calendar required feature for create event service

* Update docstring
2023-10-12 13:25:44 +02:00
Brandon Rothweiler
887263d80e Update eufylife-ble-client to 0.1.8 (#101727) 2023-10-12 13:25:40 +02:00
Robert Hillis
c4737e4423 Fix Slack type error for file upload (#101720)
Fix regression
2023-10-12 13:25:37 +02:00
Jan Bouwhuis
327e6d2362 Fix mqtt sensor or binary_sensor state not saved after expiry (#101670)
Fix mqtt sensor state not saved after expire
2023-10-12 13:25:33 +02:00
Joost Lekkerkerker
e32044f884 Abort config flow when invalid token is received (#101642) 2023-10-12 13:25:28 +02:00
Allen Porter
dbc3382dfb Add additional calendar state alarm debugging (#101631) 2023-10-12 13:20:57 +02:00
Matthew Donoughe
a042703dd7 Update pylutron-caseta to 0.18.3 (#101630) 2023-10-12 13:20:53 +02:00
Aidan Timson
8109c77f6a Bump systembridgeconnector to 3.8.4 (#101621)
Update systembridgeconnector to 3.8.4
2023-10-12 13:20:49 +02:00
J. Nick Koston
2639602f5b Fix compiling missing statistics losing rows (#101616) 2023-10-12 13:20:46 +02:00
Allen Porter
d5c26beb91 Additional fix for rainbird unique id (#101599)
Additiona fix for rainbird unique id
2023-10-12 13:20:42 +02:00
Marc Mueller
f24843f211 Update aiohttp to 3.8.6 (#101590) 2023-10-12 13:20:39 +02:00
Joakim Plate
5f0bf4e2a3 Update ha-philipsjs to 3.1.1 (#101574)
Update philips to 3.1.1
2023-10-12 13:20:35 +02:00
Matthias Alphart
bab524f264 Update pyfronius to 0.7.2 (#101571) 2023-10-12 13:20:32 +02:00
Abílio Costa
ede7d13c1e Improve Ikea Idasen config flow error messages (#101567) 2023-10-12 13:20:29 +02:00
TJ Horner
db91e9a720 Auto-fix common key entry issues during WeatherKit config flow (#101504) 2023-10-12 13:20:25 +02:00
Greg Dowling
c11dd58c1d Improve handling of roon media players with fixed and incremental volume (#99819) 2023-10-12 13:20:20 +02:00
Betacart
6450ae8d28 Fix typo in remember the milk strings (#101869)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-12 13:18:43 +02:00
Guy Shefer
5730cb1e85 Add Tami4 Integration (#90056)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-12 13:15:25 +02:00
Brandon Rothweiler
91cf719588 Remove Mazda integration (#101849)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-12 13:13:44 +02:00
René Klomp
b70e2f7749 Fix SMA incorrect device class (#101866) 2023-10-12 13:03:09 +02:00
Martin Hjelmare
52067dbfe5 Fix mysensors battery level attribute (#101868) 2023-10-12 13:01:08 +02:00
Joost Lekkerkerker
8e3c665fd3 Only reload Withings config entry on reauth (#101638)
* Only reload on reauth

* Reload if entry is loaded

* Make async_cloudhook_generate_url protected

* Fix feedback
2023-10-12 12:56:10 +02:00
Greg Dowling
dcb3dc254d Improve handling of roon media players with fixed and incremental volume (#99819) 2023-10-12 12:52:01 +02:00
Joost Lekkerkerker
d676d95901 Fix translation key in Plugwise (#101862)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-12 12:51:40 +02:00
Hessel
830981ddd6 Bump wallbox to 0.4.14 (#101864) 2023-10-12 11:59:30 +02:00
Justin Lindh
5523e9947d Bump Python-MyQ to v3.1.13 (#101852) 2023-10-12 10:42:40 +02:00
Kevin Worrel
2276be275d Await set value function in ScreenLogic number entities (#101802) 2023-10-12 09:18:34 +02:00
Richard Kroegel
7fd89b2959 Add brake pads condition based service attributes for BMW (#101847)
Add brake pads condition based service attributes

Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-10-12 09:01:29 +02:00
J. Nick Koston
6ce5f190c1 Avoid duplicate property calls when writing sensor state (#101853)
* Avoid duplicate attribute lookups when writing sensor state

_numeric_state_expected would call self.device_class,
self.state_class, self.native_unit_of_measurement,
and self.suggested_display_precision a second time
when the `state` path already had these values.

* one more

* avoid another
2023-10-12 08:45:20 +02:00
Michael Hansen
f0317f0d59 Close existing UDP server for ESPHome voice assistant (#101845) 2023-10-12 07:32:00 +13:00
Michael Hansen
257686fcfe Dynamic wake word loading for Wyoming (#101827)
* Change supported_wake_words property to async method

* Add test

* Add timeout + test

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-10-11 10:21:32 -07:00
Robert Resch
6c4ac71218 Remove "none" in favor of optional select in brottsplatskartan (#101311) 2023-10-11 17:52:18 +02:00
Robert Resch
dfea1c2b7c Remove NONE_SENTINEL in favor of optional select in scrape (#101278)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-10-11 17:41:31 +02:00
Franck Nijhof
fd72ebd733 Mark entities field of scene.create service advanced (#101810) 2023-10-11 17:40:26 +02:00
Robert Resch
952a17532f Remove NONE_SENTINEL in favor of optional select in sql (#101309) 2023-10-11 17:38:29 +02:00
Robert Resch
1915fee9ba Remove "none" in favor of optional select in integration (#101396) 2023-10-11 17:36:53 +02:00
Robert Resch
7db2fdd68c Remove "none" in favor of optional select in derivate (#101312) 2023-10-11 17:36:15 +02:00
Michał Huryn
ddfad75eb7 Add basic auth to Blebox (#99320)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-11 16:09:56 +02:00
jjlawren
c66f0e3305 Fix Plex update module docstring (#101815) 2023-10-11 15:05:34 +02:00
Álvaro Fernández Rojas
6771d4bda4 Update aioqsw to v0.3.5 (#101809) 2023-10-11 14:44:52 +02:00
Joakim Plate
9107e166b4 Adjust language slightly for philips_js strings (#101783) 2023-10-11 13:53:47 +02:00
Richard Kroegel
f61627ea08 Bump bimmer_connected to 0.14.1 (#101789)
Co-authored-by: rikroe <rikroe@users.noreply.github.com>
2023-10-11 13:46:02 +02:00
epenet
183397e201 Add MariaDB 10.11.2 to CI (#101807) 2023-10-11 13:32:11 +02:00
Robert Resch
87c82fb00f Remove NONE_SENTINEL in favor of optional select in workday (#101280) 2023-10-11 13:29:42 +02:00
Marc Mueller
0b2b486754 Update mypy to 1.6.0 (#101780) 2023-10-11 13:25:11 +02:00
jjlawren
f116e83b62 Add update entity for Plex Media Server (#101682) 2023-10-11 13:06:10 +02:00
Robert Resch
1a7601ebbe Remove NONE_SENTINEL in favor of optional select in template (#101279) 2023-10-11 13:04:40 +02:00
Duco Sebel
8acb4dc1b6 Bumb python-homewizard-energy to 2.1.2 (#101805) 2023-10-11 11:32:22 +02:00
Michael Davie
7f7c3233bd Bump env_canada to 0.6.0 (#101798) 2023-10-11 11:04:33 +02:00
Justin Rigling
1c70cbaebd Add Opower virtual integration for Portland General Electric (#101800) 2023-10-11 10:41:35 +02:00
Kevin Stillhammer
7d1105228b Allow resetting time in google_travel_time (#88256)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-11 09:46:02 +02:00
J. Nick Koston
39fd5897cb Small typing cleanups for HomeKit (#101790) 2023-10-11 08:11:58 +02:00
Allen Porter
bd38fd9516 Add google calendar required feature for create event service (#101741)
* Add google calendar required feature for create event service

* Update docstring
2023-10-10 20:48:46 -07:00
Joost Lekkerkerker
ffb752c804 Subscribe to Withings webhooks outside of coordinator (#101759)
* Subscribe to Withings webhooks outside of coordinator

* Subscribe to Withings webhooks outside of coordinator

* Update homeassistant/components/withings/__init__.py

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

* Update homeassistant/components/withings/__init__.py

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

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-11 00:06:42 +02:00
Jan-Philipp Benecke
9b785ef766 Add Discovergy to strict-typing (#101782) 2023-10-10 22:11:55 +02:00
Marc Mueller
ba91aaa28d Add support for Python 3.12 (#101651) 2023-10-10 21:34:49 +02:00
Hessel
535e2b81ce Change BiDirectional Prefix (#101764) 2023-10-10 21:23:02 +02:00
J. Nick Koston
265f6653c3 Refactor homekit to use a dataclass for entry data (#101738) 2023-10-10 21:14:37 +02:00
Sheldon Ip
6c65db2036 Add rising sensor to sun (#93276) 2023-10-10 21:12:43 +02:00
Robert Resch
b932c67eb7 Delete optional schema keys, when they are not present (#101755)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-10-10 21:08:54 +02:00
Mick Vleeshouwer
c76ce76824 Bump pyOverkiz to 1.12.1 in Overkiz integration (#101765) 2023-10-10 21:07:50 +02:00
Nathan Spencer
1a8684e314 Bump pyweatherflowudp to 1.4.5 (#101770) 2023-10-10 20:43:40 +02:00
Caius-Bonus
5290396731 ZHA Component: Correct AttributeUpdated signal in Thermostat climate entity, ThermostatClusterHandler and ThermostatHVACAction sensor entity (#101725)
* initial

* change other Thermostat climate entities

* remove AttributeUpdateRecord
2023-10-10 14:23:03 -04:00
Jan-Philipp Benecke
71ddb282d2 Address late review from wallbox coordinator move (#101771)
Address late wallbox review comment
2023-10-10 20:02:14 +02:00
Jan Bouwhuis
4b9296f4f1 Code quality issue met integration (#101768)
* Fix unreachable code for met integration

* Make code better readable
2023-10-10 19:58:43 +02:00
J. Nick Koston
7b4b8e7516 Refactor HomeKit to allow supported features/device class to change (#101719) 2023-10-10 06:20:25 -10:00
J. Nick Koston
f166e1cc1a Map switch device class outlet to Outlets in homekit (#101760) 2023-10-10 05:55:42 -10:00
Maikel Punie
f7f9331c57 Bump pyDuotecno to 2023.10.0 (#101754) 2023-10-10 17:37:02 +02:00
Mick Vleeshouwer
60fa02c042 Bump pyOverkiz to 3.11 and migrate unique ids for select entries (#101024)
* Bump pyOverkiz and migrate entries

* Add comment

* Remove entities when duplicate

* Remove old entity

* Remove old entities

* Add example of entity migration

* Add support of UIWidget and UIClass

* Add tests for migrations

* Apply feedback (1)

* Apply feedback (2)
2023-10-10 17:23:58 +02:00
Erik Montnemery
ecdb0bb46a Modernize metoffice weather (#99050)
* Modernize metoffice weather

* Exclude sensors from additional test
2023-10-10 16:49:36 +02:00
Jan Bouwhuis
31bd500222 Make get_channel available as generic helper (#101721)
* Make get_channel available as generic helper

* Follow up comment
2023-10-10 14:02:32 +02:00
Marc Mueller
915f5bf84e Reset the threading.local _hass object every time (#101728)
* Reset the threading.local _hass object every time

* Remove reset from hass fixture
2023-10-10 12:43:12 +02:00
Álvaro Fernández Rojas
f78199df9f Fix Airzone climate double setpoint (#101744)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-10-10 10:18:52 +02:00
Kevin Worrel
00abf49637 Bump screenlogicpy to 0.9.2 (#101746) 2023-10-10 10:15:24 +02:00
Betacart
6d632bd1ab Fix typo in Ombi translation strings (#101747)
Update strings.json

Fixed typo ("Sumbit" -> "Submit")
2023-10-10 09:50:17 +02:00
Sam Reed
9afdc22818 supla: Change casing of integration name to upstream SUPLA (#101723) 2023-10-10 08:52:25 +02:00
elmurato
c6a3fa30f0 Add support for Minecraft Server Bedrock Edition (#100925) 2023-10-10 08:42:35 +02:00
rappenze
deffa50142 Address late review from add fibaro event platform (#101718) 2023-10-10 06:07:29 +02:00
Franck Nijhof
1944b2952c Replace object select in service calls with more UI-friendly selectors (#101722) 2023-10-10 05:50:12 +02:00
Robert Hillis
e5d5440385 Fix Slack type error for file upload (#101720)
Fix regression
2023-10-10 05:35:29 +02:00
Brandon Rothweiler
db3a4dec33 Update eufylife-ble-client to 0.1.8 (#101727) 2023-10-09 14:28:39 -10:00
Marc Mueller
35293eb98b Update matrix-nio to 0.22.1 (#101693) 2023-10-09 23:23:45 +02:00
Marc Mueller
a21990f248 Update pytest warnings filter (#101710) 2023-10-09 21:07:16 +02:00
Joakim Plate
66f43ebdc5 Describe notification option (philip_js) (#101715) 2023-10-09 19:52:24 +02:00
Robert Resch
84fe356782 Fix sky connect tests (#101712)
* Fix sky connect tests

* Implement suggestions
2023-10-09 19:43:47 +02:00
Raman Gupta
70a0cd579d Add Z-Wave WS command to hard reset controller (#101449) 2023-10-09 13:33:31 -04:00
Simone Chemelli
d46dca8950 Bump aiocomelit to 0.2.0 (#101586) 2023-10-09 15:23:25 +02:00
puddly
2e4df6d2f2 Open a ZHA repair when network settings change (#99482) 2023-10-09 15:01:05 +02:00
Joost Lekkerkerker
b9090452de Migrate Vulcan to has entity name (#99020) 2023-10-09 14:41:30 +02:00
Marcel van der Veldt
6393171fa4 Adjust Hue integration to use Entity descriptions and translatable entity names (#101413)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-09 14:14:07 +02:00
Erik Montnemery
8a83e810b8 Reset the threading.local _hass object in tests (#101700) 2023-10-09 13:41:51 +02:00
Robert Resch
f7292d5b00 Add check that sensors don't have EntityCategory.CONFIG set (#101471) 2023-10-09 13:37:52 +02:00
Marc Mueller
27b6325c32 Update pylint to 3.0.1 (#101692) 2023-10-09 12:37:35 +02:00
Erik Montnemery
e6e190e7e2 Remove unused HideSensitiveDataFilter (#101689) 2023-10-09 12:02:52 +02:00
Ravaka Razafimanantsoa
7b78cfc090 Bump switchbot-api to 1.2.1 (#101664)
SwitchBot Cloud: Dependency version up
2023-10-09 11:15:59 +02:00
Erik Montnemery
1f122eb688 Adjust services supported by litterrobot vacuum (#95788) 2023-10-09 10:56:39 +02:00
epenet
18908740ca Fix typo in nextcloud strings (#101686) 2023-10-09 10:04:39 +02:00
Franck Nijhof
de658f5ca0 Merge branch 'master' into dev 2023-10-09 09:27:59 +02:00
Brett Adams
b85a078235 Add Cribl virtual integration (#101680) 2023-10-09 09:11:30 +02:00
Marc Mueller
548a73b367 Update ephem to 4.1.5 (#101676) 2023-10-09 08:49:59 +02:00
jjlawren
c247170c90 Bump plexwebsocket to 0.0.14 (#101684) 2023-10-09 08:32:47 +02:00
Allen Porter
d78ee96e2a Update fitbit device fetch to use a data update coordinator (#101619)
* Add a fitbit device update coordinator

* Remove unnecessary debug output

* Update comments

* Update fitbit coordinator exception handling and test coverage

* Handle reauth failures in other sensors

* Fix scope changes after rebase.
2023-10-09 08:12:59 +02:00
Abílio Costa
6d1876394e Rediscover Idasen Desk to allow re-setup (#101672) 2023-10-08 22:03:22 +02:00
rappenze
fb215479d4 Add fibaro event platform (#101636) 2023-10-08 22:01:26 +02:00
Jan Bouwhuis
db0c5bbbea Fix mqtt sensor or binary_sensor state not saved after expiry (#101670)
Fix mqtt sensor state not saved after expire
2023-10-08 20:57:14 +02:00
Jan-Philipp Benecke
78535b99df Move nina coordinator and entity to their own file (#101610) 2023-10-08 20:07:04 +02:00
J. Nick Koston
c6ed022cce Fix compiling missing statistics losing rows (#101616) 2023-10-08 19:43:00 +02:00
Nicolas van de Walle
1b11062b27 Improved debugging for "Failed to set state" (#101657) 2023-10-08 19:40:42 +02:00
Robert Hillis
ba3fd4dee1 Add Queue sensor to Radarr (#79723) 2023-10-08 19:39:56 +02:00
J. Nick Koston
6420cdb42b Bump httpx to 0.25.0 and httpcore to 0.18.0 (#101635) 2023-10-08 19:08:04 +02:00
Mike Woudenberg
c48b724dde Make setup more resilient by raising ConfigNEntryNotReady on failure (#101654)
Make setup more resilient by raising ConfigNEntryNotReady on connection failure
2023-10-08 19:00:06 +02:00
Tobias Sauerwein
3c5772c1c6 Remove myself as codeowner for sonos and kodi (#101662) 2023-10-08 17:01:00 +02:00
Franck Nijhof
4a437e46aa Update home-assistant/wheels to 2023.10.4 (#101656) 2023-10-08 16:26:09 +02:00
Robert Hillis
5087f0056c Adjust Calendar doc strings and comments (#101655) 2023-10-08 16:16:59 +02:00
Joost Lekkerkerker
7c85d84133 Add entity translations to Huawei LTE (#98631) 2023-10-08 15:15:19 +02:00
Allen Porter
0f4aae4128 Add additional calendar state alarm debugging (#101631) 2023-10-08 14:20:35 +02:00
Joost Lekkerkerker
faea3b1634 Abort config flow when invalid token is received (#101642) 2023-10-08 13:32:35 +02:00
Marc Mueller
3155e62510 Update aiohttp to 3.9.0b0 (#101627) 2023-10-08 13:21:46 +02:00
Cyrille
8c26f66a57 Suggest an ISO 8601 sample in datetime.set_value (#101609) 2023-10-08 13:14:27 +02:00
Joost Lekkerkerker
b75a59aad0 Unregister callback on Netatmo config entry unload (#101647) 2023-10-08 12:44:27 +02:00
Aidan Timson
e406b8d1e3 Address System Bridge post merge review (#101614)
Address Post Merged PR Review for #97532
2023-10-08 10:42:08 +02:00
Jan-Philipp Benecke
b8b28e3ba0 Bump pydiscovergy to 2.0.4 (#101637) 2023-10-07 22:17:13 -10:00
Aidan Timson
d05ba6cd92 Bump systembridgeconnector to 3.8.4 (#101621)
Update systembridgeconnector to 3.8.4
2023-10-08 10:10:20 +02:00
Allen Porter
7d202f78f5 Add fitbit nutrition sensors (#101626)
* Add fitbit nutrition sensors

* Add test coverage for unit systems
2023-10-08 10:09:26 +02:00
Matthew Donoughe
d3a67cd984 Update pylutron-caseta to 0.18.3 (#101630) 2023-10-07 20:24:32 -10:00
Jan Bouwhuis
74464fd94e Ensure coverage mqtt entry disabled test (#101617) 2023-10-07 23:08:34 +02:00
Marc Mueller
3bbef476ee Update tank-utility to 1.5.0 (#101323) 2023-10-07 22:10:07 +02:00
Jan Bouwhuis
55bf309d2f Add mqtt discovery schema error tests for all platforms (#101583)
Add mqtt discovery schema error tests
2023-10-07 21:00:33 +02:00
Jan Bouwhuis
9407c49819 Remove platform key and rename schema for mqtt device_automation (#101582)
Refactor mqtt device_automation
2023-10-07 20:49:05 +02:00
Jan Bouwhuis
f4ac2b7eeb Remove platform key and rename schema for mqtt tag (#101580) 2023-10-07 20:48:35 +02:00
Jan Bouwhuis
4709e60ff6 Rework on Google Assistant doorbell support (#100930)
* Rework on Google Assistant doorbell event

* Additional comment on syncing notificatiions

* Update homeassistant/components/google_assistant/trait.py

* Only sync event if state attr changed

* Update comment
2023-10-07 19:39:04 +02:00
Allen Porter
8c2a2e5c37 Additional fix for rainbird unique id (#101599)
Additiona fix for rainbird unique id
2023-10-07 10:17:08 -07:00
Abílio Costa
da3e36aa3b Improve Ikea Idasen config flow error messages (#101567) 2023-10-07 18:52:31 +02:00
Marc Mueller
bd93fbe91d Update aiohttp to 3.8.6 (#101590) 2023-10-07 18:14:08 +02:00
David Knowles
031a9224fb Schlage cleanup: Stop passing logs to last_changed_by (#99738) 2023-10-07 15:04:23 +02:00
Alistair Tudor
b60401b2b1 Bump python-vlc to 3.0.18122 (#94739) 2023-10-07 15:00:04 +02:00
Aaron Collins
1a5ad23a10 Verify config entry id on Daikin device removal (#101507) 2023-10-07 14:32:27 +02:00
Anil Daoud
f3864e6e2f Handle ClientConnectorError in Netatmo data handler (#99116) 2023-10-07 14:19:57 +02:00
enzo2
35be5957c3 Add circular mean to statistics integration (#98930)
* Add circular mean

Add support for circular mean for sensors in units of degrees, e.g. direction data.

* Update test_sensor.py

* Update sensor.py

* Remove whitespace

* Revert to degC

* Fix: shift atan2 output to positive degrees

* Add new dedicated test

* Simplify test
2023-10-07 13:51:27 +02:00
SmashedFrenzy16
3018d4edb9 Update config.py with f string (#101333)
Co-authored-by: Franck Nijhof <git@frenck.dev>
2023-10-07 13:37:19 +02:00
Jan-Philipp Benecke
e25cf7cbab Move wallbox coordinator to its own file (#101577) 2023-10-07 11:56:59 +02:00
Jan-Philipp Benecke
5ae45e398e Move wallbox base entity to its own file (#101576) 2023-10-07 11:39:36 +02:00
Joakim Plate
ba5aa7759d Update ha-philipsjs to 3.1.1 (#101574)
Update philips to 3.1.1
2023-10-07 11:05:48 +02:00
Matthias Alphart
0221207b0e Update pyfronius to 0.7.2 (#101571) 2023-10-07 10:10:07 +02:00
J. Nick Koston
da9c42d457 Fix failing august test (#101560) 2023-10-06 12:31:12 -10:00
Franck Nijhof
617ce994b4 Update home-assistant/wheels to 2023.10.3 (#101551) 2023-10-06 22:05:01 +02:00
Dave T
e68627af7f Bump sphinx to 7.2.6 for docs generation (#101220) 2023-10-06 21:42:19 +02:00
Michael Thingnes
c8eb62cf4e Remove thimic as metno code owner (#101553) 2023-10-06 21:38:05 +02:00
Tudor Sandu
43c1769004 Use walrus assignment i demo climate climate.set_temperature (#101248) 2023-10-06 21:32:06 +02:00
tronikos
c70c2f4be4 Allow derivative/integration on input_number via the UI (#101439) 2023-10-06 21:27:31 +02:00
Erik Montnemery
207adaf9cd Make AugustOperatorSensor a RestoreSensor (#98526) 2023-10-06 21:25:04 +02:00
Marc Mueller
8877cafe0c Update pydrawise to 2023.10.0 (#101548) 2023-10-06 21:04:23 +02:00
Franck Nijhof
73debba60c Update home-assistant/wheels to 2023.10.2 (#101549) 2023-10-06 20:40:09 +02:00
Franck Nijhof
a6edfa85b1 2023.10.1 (#101547) 2023-10-06 20:36:37 +02:00
Jan-Philipp Benecke
bb7ddddd4c Use snapshot assertion for lametric diagnostics test (#99164) 2023-10-06 20:26:52 +02:00
Justin Grover
475cb7719b Add unique ID for generic hygrostat (#101503) 2023-10-06 20:15:40 +02:00
Joost Lekkerkerker
9ac5bdc832 Use modern naming for WLED (#100233) 2023-10-06 20:04:44 +02:00
TJ Horner
ed8a372f4e Auto-fix common key entry issues during WeatherKit config flow (#101504) 2023-10-06 20:00:04 +02:00
Erik Montnemery
4e98d39106 Use loader.async_suggest_report_issue in async util (#101516) 2023-10-06 19:57:43 +02:00
Franck Nijhof
b3080ae005 Bumped version to 2023.10.1 2023-10-06 19:38:00 +02:00
Joost Lekkerkerker
5925b6b912 Only import color extractor when domain is in config (#101522) 2023-10-06 19:37:44 +02:00
Joost Lekkerkerker
42b53c6349 Add Withings webhooks after a slight delay (#101542) 2023-10-06 19:37:18 +02:00
J. Nick Koston
d26b1b370a Bump HAP-python to 4.8.0 (#101538) 2023-10-06 19:37:14 +02:00
Joost Lekkerkerker
7369ae8c9f Cancel callbacks on Withings entry unload (#101536) 2023-10-06 19:37:11 +02:00
Mike Woudenberg
6c2d1e2142 Update LoqedAPI to handle invalid transitions better (#101534) 2023-10-06 19:37:08 +02:00
jan iversen
4a5b0222ab Modbus, wrong length when reading strings (#101529) 2023-10-06 19:37:05 +02:00
Joost Lekkerkerker
76f78e249b Delete existing Withings cloudhook (#101527) 2023-10-06 19:37:02 +02:00
Joost Lekkerkerker
81f582eeb7 Use config flow in color extractor tests (#101524) 2023-10-06 19:36:58 +02:00
Kevin Stillhammer
7f6506cfcf Limit waze_travel_time to 0.5call/s over all entries (#101514) 2023-10-06 19:35:48 +02:00
Allen Porter
d14934861e Fix for rainbird unique id (#101512) 2023-10-06 19:35:44 +02:00
Allen Porter
d469626855 Fix bug in calendar state where alarms due to alarms not scheduled (#101510) 2023-10-06 19:35:41 +02:00
Ian
9725a0daf9 Fix key error in config flow when duplicate stop names exist (#101491) 2023-10-06 19:35:38 +02:00
J. Nick Koston
26c7ba38d0 Fix caching of latest short term stats after insertion of external stats (#101490) 2023-10-06 19:35:35 +02:00
Kevin Stillhammer
948bbdd2bf bump pywaze to 0.5.1 sets timeout to 60s (#101487) 2023-10-06 19:35:32 +02:00
J. Nick Koston
eadc70ede0 Bump zeroconf to 0.115.2 (#101482) 2023-10-06 19:35:28 +02:00
Paul Bottein
2210db4ca6 Update frontend to 20231005.0 (#101480) 2023-10-06 19:35:25 +02:00
G Johansson
c5585b0706 Fix Trafikverket Camera if no location data (#101463) 2023-10-06 19:35:22 +02:00
René Klomp
37cfa5efb7 SMA add missing entity descriptions (#101462) 2023-10-06 19:35:19 +02:00
Fredrik Erlandsson
a506ba94d1 Fix device_class.capitalize() in Point (#101440) 2023-10-06 19:35:16 +02:00
Michael Davie
f8c7d502df Bump env_canada to v0.5.37 (#101435) 2023-10-06 19:35:12 +02:00
Nathan Spencer
f0cb2ba005 Adjust WeatherFlow wind sensors to appropriately match native unit and library field (#101418) 2023-10-06 19:35:10 +02:00
Michael Hansen
f7ab00a8bf Add wake word cooldown to avoid duplicate wake-ups (#101417) 2023-10-06 19:35:06 +02:00
Joost Lekkerkerker
e8c38fe99e Add translation for Tamper binary sensor (#101416) 2023-10-06 19:35:03 +02:00
J. Nick Koston
a4f0da8286 Bump dbus-fast to 2.11.1 (#101406)
changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v2.11.0...v2.11.1
2023-10-06 19:34:54 +02:00
Jan Bouwhuis
223f3a434b Raise vol.Invalid for invalid mqtt device_tracker config (#101399)
Raise vol.Invalid for invalid mqtt device_tracker
2023-10-06 19:31:58 +02:00
Joost Lekkerkerker
10e43048bd Fix Withings translations (#101397) 2023-10-06 19:31:55 +02:00
Marty Sun
2345a2be5f Bump pyyardian to 1.1.1 (#101363)
* Update Yardian Dependency

* test requirements
2023-10-06 19:31:52 +02:00
TheJulianJES
7dfb397aef Fix ZHA device diagnostics error for unknown unsupported attributes (#101239)
* Modify test to account for scenario of unknown unsupported attributes

* Add error checking for finding unsupported attributes

* Change comment to clarify zigpy misses an attribute def

This should make it more clear that it's about an unknown attribute (where zigpy doesn't have an attribute definition).

* Increase test coverage

This increases test coverage by doing the following:
- adding the `IasZone` to our test device, so we have a cluster which actually has some attribute definitions
- adding not just an unknown unsupported attribute by id, but also by name
- adding a known unsupported attribute by id and by name

* Fix diagnostics logic
2023-10-06 19:31:48 +02:00
TheJulianJES
5d0c8947a1 Fix ZHA device diagnostics error for unknown unsupported attributes (#101239)
* Modify test to account for scenario of unknown unsupported attributes

* Add error checking for finding unsupported attributes

* Change comment to clarify zigpy misses an attribute def

This should make it more clear that it's about an unknown attribute (where zigpy doesn't have an attribute definition).

* Increase test coverage

This increases test coverage by doing the following:
- adding the `IasZone` to our test device, so we have a cluster which actually has some attribute definitions
- adding not just an unknown unsupported attribute by id, but also by name
- adding a known unsupported attribute by id and by name

* Fix diagnostics logic
2023-10-06 12:23:48 -04:00
Fredrik Erlandsson
d654c4bc1e Fix device_class.capitalize() in Point (#101440) 2023-10-06 18:23:18 +02:00
Joost Lekkerkerker
b2cad2370b Add Withings webhooks after a slight delay (#101542) 2023-10-06 18:21:06 +02:00
Duco Sebel
6359390a78 Add Eastron virtual integration (#101385) 2023-10-06 18:12:00 +02:00
Rami Mosleh
c8d1a7ff4f Remove references to name key in android ip webcam (#99590) 2023-10-06 18:10:32 +02:00
Joost Lekkerkerker
86cf2e29b2 Cancel callbacks on Withings entry unload (#101536) 2023-10-06 17:10:19 +02:00
Allen Porter
1635cbb8a6 Add a google calendar diagnostics platform (#101175) 2023-10-06 17:08:50 +02:00
J. Nick Koston
8dffff3983 Bump HAP-python to 4.8.0 (#101538) 2023-10-06 17:06:18 +02:00
jimmyd-be
5edcd7ef0f Fix Reson sensor enum options mapping (#101380) 2023-10-06 16:50:34 +02:00
Mike Woudenberg
83c5844c2e Update LoqedAPI to handle invalid transitions better (#101534) 2023-10-06 15:37:18 +02:00
Aidan Timson
9982483395 Add media player to System Bridge integration (#97532)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-06 15:08:51 +02:00
David Knowles
96aba1c1a6 Add tests to Hydrawise (#101110)
* Add tests to Hydrawise

* Update tests/components/hydrawise/test_binary_sensor.py

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

* Changes requested during review

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
2023-10-06 14:42:08 +02:00
G Johansson
adc7fc0ee4 Fix GDACS import issue creation (#97667) 2023-10-06 14:30:11 +02:00
Robert Hillis
10dcdbf537 Correct doc strings for Hassio component (#101530) 2023-10-06 14:13:59 +02:00
jan iversen
d2c842ee0c Modbus, wrong length when reading strings (#101529) 2023-10-06 14:10:10 +02:00
Robert Hillis
62802dd487 Add entity translations to Goalzero (#95310)
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-10-06 14:01:21 +02:00
Joost Lekkerkerker
835982ebe5 Migrate Samsung TV to has entity name (#96751)
* Migrate Samsung TV to has entity name

* Fix test

* Fix tests

---------

Co-authored-by: Simone Chemelli <simone.chemelli@gmail.com>
2023-10-06 13:54:21 +02:00
Marc Mueller
d5f07ef45f Add override decorators to sensor (#94998) 2023-10-06 13:44:07 +02:00
Guido Schmitz
3cd4d26eb9 React on changed firmware version in devolo_home_network (#101513) 2023-10-06 13:37:48 +02:00
Robert Hillis
1c590f8d0e Remove unnecessary defaults from Netatmo sensor (#101528) 2023-10-06 13:35:20 +02:00
G Johansson
fd2edf6c0a Allow remove devices in Scrape (#101229) 2023-10-06 13:33:28 +02:00
Kevin Stillhammer
79eaaec1a8 Limit waze_travel_time to 0.5call/s over all entries (#101514) 2023-10-06 13:23:32 +02:00
Ville Skyttä
f7aad4a9e6 Call pytest as python3 -m pytest (#101185) 2023-10-06 13:22:56 +02:00
Joost Lekkerkerker
425d961489 Delete existing Withings cloudhook (#101527) 2023-10-06 13:19:39 +02:00
Joost Lekkerkerker
97d17637ea Only import color extractor when domain is in config (#101522) 2023-10-06 13:18:44 +02:00
YuriiMaiboroda
ca7355b2f3 Using the MarkdownV2 parser with the Telegram bot (#101139) 2023-10-06 12:26:20 +02:00
Jan Bouwhuis
4553de5cbf Use string conversion over isinstance in mqtt message handling if possible (#101364) 2023-10-06 12:15:01 +02:00
J. Nick Koston
c0904c905d Avoid updating hassio addon data when there are no entities consuming it (#101382) 2023-10-06 12:14:48 +02:00
Joost Lekkerkerker
7c8c063149 Use config flow in color extractor tests (#101524) 2023-10-06 12:02:53 +02:00
Brett Adams
00d0767628 Add missing return type in Advantage Air (#101377)
* Add None return type

* Change mypi type

* Fix mypy issue
2023-10-06 11:59:27 +02:00
Erik Montnemery
20188181f7 Fix spelling in sensor test (#101520) 2023-10-06 11:51:08 +02:00
Erik Montnemery
775751ece5 Add WS command sensor/numeric_device_classes (#101257) 2023-10-06 10:27:45 +02:00
Shay Levy
b97ec2cfce Add support for Aranet2 devices (#101495) 2023-10-06 10:26:18 +02:00
Ernst Klamer
fa90b0f41e Add raw sensor to BTHome (#101412) 2023-10-06 10:22:51 +02:00
rappenze
d009ff8b01 Add type hints in FibaroController (#101494) 2023-10-06 10:13:30 +02:00
Marc Mueller
67dfd1a86b Update grpcio to 1.59.0 (#101287) 2023-10-06 10:08:01 +02:00
Erik Montnemery
3478666973 Use loader.async_suggest_report_issue in deprecation helper (#101393) 2023-10-06 09:51:08 +02:00
Nathan Spencer
60fa63a1f0 Adjust WeatherFlow wind sensors to appropriately match native unit and library field (#101418) 2023-10-06 09:41:01 +02:00
Franck Nijhof
ed74e64f8d Merge branch 'master' into dev 2023-10-06 09:38:13 +02:00
Allen Porter
579590f7c3 Fix bug in calendar state where alarms due to alarms not scheduled (#101510) 2023-10-06 09:19:21 +02:00
Michael Hansen
244f6d8002 Add wake word cooldown to avoid duplicate wake-ups (#101417) 2023-10-06 09:18:35 +02:00
J. Nick Koston
48a23798d0 Fix caching of latest short term stats after insertion of external stats (#101490) 2023-10-06 09:18:05 +02:00
Allen Porter
920bd04099 Fix for rainbird unique id (#101512) 2023-10-06 09:16:06 +02:00
Shay Levy
442005e40f Add codeowner for Aranet (#101496) 2023-10-06 09:15:25 +02:00
René Klomp
dd8bd0db5a SMA add missing entity descriptions (#101462) 2023-10-06 09:13:39 +02:00
Jan Bouwhuis
2bfb1e75d3 Correct device_class test for mqtt button (#101500) 2023-10-06 09:11:50 +02:00
Matteo Gheza
da770df13f Change OpenWeatherMap unit_of_measurement from mm to mm/h (#101485)
Change OWM unit_of_measurement
2023-10-06 08:24:30 +02:00
J. Nick Koston
da1d5fc862 Increase max bind vars based on database version (#101464) 2023-10-06 07:59:38 +02:00
Allen Porter
c7d533d427 Update fitbit error handling (#101304)
* Update fitbit error handling

* Update exceptions to inherit HomeAssistantError and add reason code

* Revert config flow exception mapping hack
2023-10-05 22:38:15 -07:00
Joakim Plate
1d31def982 Update nibe library to 2.4.0 (#101493) 2023-10-05 23:46:07 +02:00
G Johansson
8a033ee554 Fix Trafikverket Camera if no location data (#101463) 2023-10-05 22:17:09 +02:00
Franck Nijhof
6853d54050 Remove logging of retrying config entry warning (#101483) 2023-10-05 22:12:01 +02:00
Ian
fe316f2233 Fix key error in config flow when duplicate stop names exist (#101491) 2023-10-05 22:11:15 +02:00
Kevin Stillhammer
ce55116eb2 bump pywaze to 0.5.1 sets timeout to 60s (#101487) 2023-10-05 22:07:27 +02:00
rappenze
b8fa065467 Update pyfibaro dependency to 0.7.5 (#101481) 2023-10-05 22:02:49 +02:00
Erik Montnemery
a428bbfc2e Use loader.async_suggest_report_issue in vacuum (#101391) 2023-10-05 20:39:24 +02:00
mbo18
b7914582db Update homeassistant color (#101372) 2023-10-05 20:10:27 +02:00
Guido Schmitz
285ad10624 Use snapshot in devolo_home_network update tests (#101442) 2023-10-05 20:09:52 +02:00
Erik Montnemery
62ea4b36cd Use loader.async_suggest_report_issue in number (#101388) 2023-10-05 20:08:22 +02:00
Erik Montnemery
659d437cac Use loader.async_suggest_report_issue in sensor (#101389) 2023-10-05 20:07:56 +02:00
Erik Montnemery
716a10e556 Add Python copyright and Python license to backports package (#101454) 2023-10-05 19:57:46 +02:00
Erik Montnemery
589fd58137 Use loader.async_suggest_report_issue in stt (#101390) 2023-10-05 19:57:21 +02:00
Erik Montnemery
0c40c8465e Correct checks for deprecated forecast in weather (#101392)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-05 19:56:47 +02:00
Betacart
3d9073693c Fix typo -> "Kay" to "Key" in Minio (#101472) 2023-10-05 19:55:50 +02:00
Erik Montnemery
dce5099d92 Use loader.async_suggest_report_issue in frame helper (#101461) 2023-10-05 19:52:26 +02:00
J. Nick Koston
cb0a05142d Bump zeroconf to 0.115.2 (#101482) 2023-10-05 19:50:35 +02:00
Paul Bottein
0e41542ff3 Update frontend to 20231005.0 (#101480) 2023-10-05 19:25:48 +02:00
Erik Montnemery
7f912cb669 Fix airnow test fixture (#101458) 2023-10-05 13:24:28 +02:00
Erik Montnemery
2464232f24 Fix call to API in airnow option flow tests (#101457) 2023-10-05 13:23:59 +02:00
Fredrik Erlandsson
5975974a37 Bumb pypoint to 2.3.2 (#101436)
version bumb point
2023-10-05 08:36:58 +02:00
Joost Lekkerkerker
ef066626c8 Add translation for Tamper binary sensor (#101416) 2023-10-05 08:32:43 +02:00
Marty Sun
0c8e1a691d Bump pyyardian to 1.1.1 (#101363)
* Update Yardian Dependency

* test requirements
2023-10-05 07:14:14 +02:00
Michael Davie
ca2e335ab9 Bump env_canada to v0.5.37 (#101435) 2023-10-05 07:11:17 +02:00
Raman Gupta
383c63000e Handle invalid scale for zwave_js multilevel/meter sensors (#101173)
* Handle invalid scale for zwave_js multilevel/meter sensors

* Remove logging statement
2023-10-04 22:55:18 -04:00
J. Nick Koston
c951c03447 Bump dbus-fast to 2.11.1 (#101406)
changelog: https://github.com/Bluetooth-Devices/dbus-fast/compare/v2.11.0...v2.11.1
2023-10-04 21:01:10 -04:00
jjlawren
db71e8033c Bump plexapi to 4.15.4 (#101381) 2023-10-04 23:32:02 +02:00
Erik Montnemery
7e39acda37 Minor improvement of frame helper (#101387)
* Minor improvement of frame helper

* Add new custom integration for testing

* Make IntegrationFrame kw_only
2023-10-04 21:43:00 +02:00
Toastme
c495d607d8 Update tplink manifest.json with 2 new MACs for KP200 (#101359)
* Update manifest.json with 2 new MACs for KP200

those MAC are missing from the list so there are not detected like the other K200 i have (like 68ff7b)

* run hassfest

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
2023-10-04 21:09:24 +02:00
Jan Bouwhuis
a3fe120457 Raise vol.Invalid for invalid mqtt device_tracker config (#101399)
Raise vol.Invalid for invalid mqtt device_tracker
2023-10-04 19:36:34 +02:00
Øyvind Matheson Wergeland
1d7d7c3540 Fix translation keys in Hue (#101403)
hue: fix key string syntax
2023-10-04 18:43:53 +02:00
Marc Mueller
2d766d43fc Prevent async_timeout import (#101378) 2023-10-04 18:19:19 +02:00
Joost Lekkerkerker
5754e8721a Fix Withings translations (#101397) 2023-10-04 16:45:13 +02:00
Maciej Bieniek
ab6f617797 Use entity_registry_enabled_by_default fixture in Kraken tests (#101379)
Use entity_registry_enabled_by_default fixture
2023-10-04 15:45:59 +02:00
Erik Montnemery
17779c5f0c Add loader.async_suggest_report_issue and loader.async_get_issue_tracker (#101336)
* Add loader.async_suggest_report_issue and loader.async_get_issue_tracker

* Update tests

* Add tests

* Address review comments

* Address review comments
2023-10-04 13:40:33 +02:00
Maciej Bieniek
3aa6771835 Update DeviceInfo.sw_version value for Shelly Gen2 sleeping devices (#101338)
* Update device info for gen2 sleeping devices

* Add test

* Update sw_version only if the firmware_version value has changed

* Rename device_update_info() to update_device_fw_info()

* Remove duplicate comparison
2023-10-04 11:00:17 +02:00
Raman Gupta
d3c5b9777b Notify users when zwave device gets reset (#101362)
* Notify users when zwave device gets reset

* review comments
2023-10-04 10:18:48 +02:00
Brett Adams
cd175f679f Fix temperature when myZone is in use for Advantage air (#101316) 2023-10-04 10:05:44 +02:00
Franck Nijhof
fb724472fb Update Pillow to 10.0.1 (#101368) 2023-10-04 09:54:43 +02:00
Luke Lashley
f08d66741d Check that dock error status is not None for Roborock (#101321)
Co-authored-by: Robert Resch <robert@resch.dev>
2023-10-04 09:40:03 +02:00
Guido Schmitz
d14e5dc56a Increase update interval of update platform in devolo_home_network (#101366)
Increase update interval of firmware platform
2023-10-04 09:19:57 +02:00
Dave T
8626a4888c Remove deprecated temperature conversion functions (#101204) 2023-10-04 06:04:23 +02:00
Dave T
efca5ba554 Remove deprecated pressure conversion functions (#101347)
Remove deprecated pressure conversion utils
2023-10-04 06:03:32 +02:00
Dave T
adf6d34d95 Remove deprecated speed conversion functions (#101350) 2023-10-04 06:01:45 +02:00
Franck Nijhof
3be3593ffa Revert "Add Energyzero get_prices service (#100499)" (#101332)
This reverts commit d518cf13e5.
2023-10-03 22:00:30 -04:00
Ville Skyttä
5551a345ea Remove some unnecessary uses of regular expressions (#101182) 2023-10-03 20:55:00 -05:00
Jesse Hills
09ba34fb3a Allow esphome device to disable vad on stream (#101352) 2023-10-04 13:09:12 +13:00
Jesse Hills
63946175ea Fix manual stopping of the voice assistant pipeline (#101351) 2023-10-03 19:15:56 -04:00
Michael Hansen
e6504218bc Pipeline runs are only equal with same id (#101341)
* Pipeline runs are only equal with same id

* Use dict instead of list in PipelineRuns

* Let it blow up

* Test

* Test rest of __eq__
2023-10-03 16:52:31 -05:00
Maciej Bieniek
d8f1023210 Use entity_registry_enabled_by_default fixture in the NextDNS tests (#101339) 2023-10-03 22:07:17 +02:00
Jan-Philipp Benecke
1c60597e41 Make co2signal state attribute translatable (#101337) 2023-10-03 21:19:32 +02:00
Erik Montnemery
2627abb9ef Improve test coverage of deprecation helper (#101335) 2023-10-03 20:57:24 +02:00
Michael Hansen
cc7e35e299 Increase pipeline timeout to 5 minutes (#101327) 2023-10-03 19:41:00 +02:00
Marc Mueller
d723a87ea2 Update coverage to 7.3.2 (#101319) 2023-10-03 19:30:18 +02:00
Erik Montnemery
ab2de18f8f Refactor frame.get_integration_frame (#101322) 2023-10-03 19:21:27 +02:00
Shay Levy
956098ae3a Shelly - remove unused device update info call (#101295) 2023-10-03 19:21:31 +03:00
Brett Adams
bdcc6c0143 Fix reference error in Aussie Broadband (#101315) 2023-10-03 16:35:26 +02:00
Robert Groot
d518cf13e5 Add Energyzero get_prices service (#100499) 2023-10-03 16:21:23 +02:00
Daniel Rheinbay
135570acab Add tea time effect to Yeelight (#95936) 2023-10-03 14:53:01 +02:00
Michael
7c7f00a46d Bump pyW800rf32 to 0.4 (#101317)
bump pyW800rf32 from 0.3 to 0.4
2023-10-03 12:17:23 +02:00
Brett Adams
727074a1a6 Revert PR #99077 for Aussie Broadband (#101314) 2023-10-03 11:52:01 +02:00
Aaron Collins
99f227229e Remove duplicated device before daikin migration (#99900)
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-10-03 10:11:21 +02:00
dependabot[bot]
69e588b15e Bump actions/setup-python from 4.7.0 to 4.7.1 (#101306)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-03 10:10:18 +02:00
Franck Nijhof
44acc88365 Update Lokalise CLI to v2.6.8 (#101297) 2023-10-02 23:01:30 +02:00
Bram Kragten
49e69aff0c Update frontend to 20231002.0 (#101294) 2023-10-02 22:56:50 +02:00
Shay Levy
ca2f45d466 Fix Shelly typo in cover platform (#101292) 2023-10-02 22:30:58 +02:00
Franck Nijhof
2f0ba154b9 Update ruff to v0.0.292 (#101290) 2023-10-02 21:49:10 +02:00
Michael Hansen
d0700db7eb Bump intents to 2023.10.2 (#101277) 2023-10-02 14:23:13 -05:00
Nathan Spencer
9d242bf45f Bump pylitterbot to 2023.4.9 (#101285) 2023-10-02 20:44:47 +02:00
Marc Mueller
f248b693d7 Update pylint to 3.0.0 (#101282) 2023-10-02 20:12:43 +02:00
Luke Lashley
e4cb19f20d Bump python-roborock to 0.34.6 (#101147) 2023-10-02 20:11:16 +02:00
Joost Lekkerkerker
6fa3078cfc Revert "Use shorthand attributes in Telldus live" (#101281) 2023-10-02 19:10:15 +02:00
Mike
1a9c98e837 Add support for Levoit Vital 100S Purifier (#101273)
Add support for Levoit Vital 100S Purifier.
2023-10-02 17:53:54 +02:00
Marcel van der Veldt
35616e100d Discover switch entities from Hue behavior_script instances (#101262) 2023-10-02 17:15:41 +02:00
Luke Lashley
054407722d Bump python-myq to 3.1.11 (#101266) 2023-10-02 17:03:53 +02:00
Allen Porter
74b3c5c690 Modernize fitbit sensors (#101179)
* Improve fitbit sensors with state class and entiy category

* Revert sensor format changes
2023-10-02 16:56:46 +02:00
Erik Montnemery
cab30085c5 Fix typo in config.py (#101268) 2023-10-02 15:57:04 +02:00
Erik Montnemery
b5f71f9ec7 Fix stale docstring in intent_script (#101270) 2023-10-02 15:24:12 +02:00
Erik Montnemery
f72f95549c Use DOMAIN constant in command_line (#101269) 2023-10-02 15:22:54 +02:00
Aidan Timson
9eaf326c0e Split get users into chunks of 100 for Twitch sensors (#101211)
* Split get users into chunks of 100

* Move to own function
2023-10-02 15:20:19 +02:00
Kevin Stillhammer
15f945c47e Remove invalid doc about multi origin/dest in google_travel_time (#101215) 2023-10-02 14:31:25 +02:00
Franck Nijhof
02f82d04fe Add documentation URL for the Home Assistant Green (#101263) 2023-10-02 14:30:33 +02:00
Simon Lamon
a618e8d1cf Fix loop in progress config flow (#97229)
* Fix data entry flow with multiple steps

* Update a test

* Update description and add a show progress change test

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-02 14:15:54 +02:00
Erik Montnemery
e18e12a2df Fix color temperature setting in broadlink light (#101251) 2023-10-02 14:12:06 +02:00
Jc2k
e23e71279f Add extra validation in private_ble_device config flow (#101254) 2023-10-02 13:56:39 +02:00
Marc Mueller
100b6fd06f Fix flaky lru_cache test (#101252) 2023-10-02 13:52:56 +02:00
Joost Lekkerkerker
4ee6f6c766 Bump aiowaqi to 2.0.0 (#101259) 2023-10-02 13:49:22 +02:00
Maciej Bieniek
0fdf04391b Use class attrs and shorthand attrs for Shelly (#101249) 2023-10-02 13:40:06 +02:00
Joost Lekkerkerker
85e782055b Downgrade pylitterbot to 2023.4.5 (#101255) 2023-10-02 13:07:56 +02:00
Erik Montnemery
d0dc4d0963 Add missing device class to sensor.DEVICE_CLASS_UNITS (#101256) 2023-10-02 13:01:26 +02:00
Zehuan Li
41cb8526d1 Add secret_token support to telegram_bot component (#100869)
* Support secret_token for setWebHook api

* Revert configuration YAML changes; generate and store secret token instead

* Reformat codes

* Revert storage of secret token; use ephemeral secret token instead

* Reformat

* Update homeassistant/components/telegram_bot/webhooks.py

* Fix when header is not present

* Check for non-empty token

* Fix tests to support secret token

* Add tests for invalid secret token

* Minor: remove comment

* Revert back to 401

* ... and for tests

* Change patching method for the generation of secret tokens

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-10-02 11:44:15 +02:00
Joost Lekkerkerker
1b43d79717 Use async_at_started in Netatmo (#100996)
* Use async_at_started in Netatmo

* Make nice
2023-10-02 11:41:06 +02:00
G Johansson
56e7e20904 Remove YAML import from Brottsplatskartan (#101222) 2023-10-02 11:00:41 +02:00
Ian
e652d37f29 Use data update coordinator in NextBus to reduce api calls (#100602) 2023-10-02 10:56:10 +02:00
Jesse Hills
6ce6952a06 ESPHome: fix voice assistant default audio settings (#101241) 2023-10-02 10:35:15 +02:00
Dave T
99a76ef4e6 Fix most sphinx documentation warnings (#101228) 2023-10-02 09:01:41 +02:00
G Johansson
f2cf87b0b7 Remove YAML import from Workday (#101223) 2023-10-02 09:01:03 +02:00
G Johansson
b56d25121f Remove platform YAML qBittorrent (#101224) 2023-10-02 09:00:09 +02:00
G Johansson
b33d5fece6 Remove platform YAML from Snapcast (#101225) 2023-10-02 08:59:06 +02:00
Jan Bouwhuis
78f827697e Remove imap_email_content integration (#101233) 2023-10-02 08:57:16 +02:00
G Johansson
c1cfce116d Bump pytrafikverket to 0.3.7 (#101231) 2023-10-02 08:55:35 +02:00
Allen Porter
4e4b8de448 Add reauth support in fitbit (#101178)
* Add reauth support in fitbit

* Update tests/components/fitbit/test_config_flow.py

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

* Improve http status error code handling

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-02 08:09:08 +02:00
Joost Lekkerkerker
4c24ff6847 Migrate WAQI to has entity name (#101203) 2023-10-01 23:47:32 +02:00
TJ Horner
cabfbc245d Add weatherkit sensor platform (#101150)
* Add weatherkit sensor platform and tests

* Make unique ID assignment more explicit

* Fix missing argument

* Use const for top-level API response keys

* Address code review feedback
2023-10-01 23:20:09 +02:00
Simone Chemelli
9261ad14e2 Add RestoreEntity to Comelit cover (#101192)
* Add RestoreEntoty to Comelit cover

* remove logging
2023-10-01 20:56:34 +02:00
Joost Lekkerkerker
67f7c703f4 Fix withings webhook name (#101221) 2023-10-01 20:55:00 +02:00
J. Nick Koston
377f00730a Bump aioesphomeapi to 17.0.1 (#101214) 2023-10-01 19:33:53 +01:00
J. Nick Koston
1f76abe6f4 Bump zeroconf to 0.115.1 (#101213) 2023-10-01 19:33:38 +01:00
RoboMagus
1db3d3c158 icon for commandline sensors (#101195)
* Add icon to schema for commandline sensor and binary_sensor

* Add icon tests
2023-10-01 20:17:53 +02:00
Joost Lekkerkerker
8fd0a1b083 Add config entry name to Withings webhook name (#101205) 2023-10-01 18:29:53 +02:00
Joost Lekkerkerker
65c8da3bf1 Correct JSONDecodeError in co2signal (#101206) 2023-10-01 18:28:53 +02:00
Guido Schmitz
598a8890e9 Use freezer.tick in devolo_home_network image tests (#101208)
Use freezer.tick
2023-10-01 18:22:19 +02:00
Allen Porter
2d58ab0e1c Fix rainbird entity unique ids (#101168)
* Fix unique ids for rainbird entities

* Update entity unique id use based on config entry entity id

* Update tests/components/rainbird/test_binary_sensor.py

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

* Rename all entity_registry variables

* Shorten long comment under line length limits

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-10-01 08:12:44 -07:00
c0ffeeca7
b3b5ca9b95 Terminology: Rename Multi-PAN to Multiprotocol to be consistent (#99262) 2023-10-01 16:20:09 +02:00
Ville Skyttä
f4bf8fa8f1 Catch HTML case insensitively in "no HTML" config validation (#101181) 2023-10-01 16:19:24 +02:00
G Johansson
a3808383d5 Fix binary sensor test in command_line (#101198) 2023-10-01 16:18:05 +02:00
Dave T
8b7fae5200 Remove deprecated distance conversion functions (#101199) 2023-10-01 16:17:31 +02:00
Ville Skyttä
31ea00f5c7 Treat strings starting with https but not htt as soundtouch media URLs (#101183) 2023-10-01 16:16:19 +02:00
Dave T
a4a99ce957 Remove deprecated volume conversion functions (#101200) 2023-10-01 16:06:14 +02:00
Allen Porter
87ecdfb84f Clear calendar alarms after scheduling and add debug loggging (#101176) 2023-10-01 15:25:04 +02:00
Franck Nijhof
5e6735ab6d Update home-assistant/wheels to 2023.10.1 (#101197) 2023-10-01 15:05:10 +02:00
hlyi
9306e60530 Report unavailability for yolink sensor and binary_sensor (#100743) 2023-10-01 13:21:26 +02:00
Oliver
fd1f0b0efe Update denonavr to 0.11.4 (#101169) 2023-10-01 12:26:28 +02:00
Daniel Hjelseth Høyer
9b754a58f4 Update Mill library to 0.11.6 (#101180) 2023-10-01 10:12:06 +02:00
Raman Gupta
b4555c8a92 Bump zwave-js-server-python to 0.52.1 (#101162) 2023-10-01 08:28:14 +02:00
Allen Porter
bd2fee289d Update Fitbit integration to allow UI based configuration (#100897)
* Cleanup fitbit sensor API parsing

* Remove API code that is not used yet

* Configuration flow for fitbit

* Code cleanup after manual review

* Streamline code for review

* Use scopes to determine which entities to enable

* Use set for entity comparisons

* Apply fitbit string pr feedback

* Improve fitbit configuration flow error handling

* Apply suggestions from code review

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

* Fix typo in more places

* Revert typing import

* Revert custom domain back to default

* Add additional config flow tests

* Add         breaks_in_ha_version to repair issues

* Update homeassistant/components/fitbit/api.py

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

* Increase test coverage for token refresh success case

* Add breaks_in_ha_version for sensor issue

* Apply suggestions from code review

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

* Simplify translations, issue keys, and token refresh

* Config flow test improvements

* Simplify repair issue creation on fitbit import

* Remove unused strings

---------

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-09-30 16:56:39 -07:00
Tereza Tomcova
fe30c019b6 Bump PySwitchbot to 0.40.1 (#101164) 2023-09-30 21:53:58 +02:00
Franck Nijhof
25855a3ccb Update home-assistant/wheels to 2023.09.3 (#101165) 2023-09-30 21:17:49 +02:00
Jan Bouwhuis
42eb849cae Use dataclass for abode system class (#101138) 2023-09-30 10:44:46 +02:00
Stefan Agner
9444a474ec Stop the Home Assistant Core container by default (#101105) 2023-09-30 10:43:07 +02:00
Erik Montnemery
47ecce4873 Allow deleting entity entries from entity_registry.async_migrate_entries (#101094)
* Allow deleting entity entries from entity_registry.async_migrate_entries

* Explicitly return None in tests
2023-09-30 10:23:10 +02:00
uvjustin
d40a08958d Use dataclasses instead of attrs in stream (#101148) 2023-09-30 09:46:30 +02:00
Raman Gupta
e6c9a82b5f Improve conditional on unload (#101149) 2023-09-30 08:12:44 +02:00
Joost Lekkerkerker
6e3c704a33 Return None when value is not known in OpenHardwareMonitor (#101127)
* Return None when value is not known

* Add to coverage
2023-09-29 23:07:11 -04:00
Tudor Sandu
542ab2dd76 Fix ignored argument in service call for demo climate (#101137)
Fix service call for demo climate
2023-09-29 23:06:41 -04:00
Raman Gupta
7b9c1c3953 Fix zwave_js firmware update logic (#101143)
* Fix zwave_js firmware update logic

* add comment

* tweak implementation for ssame outcome
2023-09-29 23:05:33 -04:00
jjlawren
a1d632c5d1 Bump plexapi to 4.15.3 (#101088)
* Bump plexapi to 4.15.3

* Update tests for updated account endpoint

* Update tests for updated resources endpoint

* Switch to non-web client fixture

* Set __qualname__ attribute for new library behavior
2023-09-29 23:04:00 -04:00
Jan Bouwhuis
facdc5e862 Fix - Make sure logging is in time in sonos CI test (#101109)
Make sure logging is in time in sonos CI test
2023-09-29 23:16:59 +02:00
Jan Bouwhuis
1546dee36e Fix zha CI test might fail on changing time (#101134) 2023-09-29 21:36:54 +02:00
Franck Nijhof
581a045617 Trigger Wheels builds in more cases (#101126) 2023-09-29 21:19:11 +02:00
Jan Bouwhuis
26ba10f4e4 Use dataclass for stream segment Part (#101128)
* Use data class for stream segement Part

* use slots
2023-09-29 21:07:30 +02:00
Joost Lekkerkerker
1b05418647 Bump aiowaqi to 1.1.1 (#101129) 2023-09-29 20:57:53 +02:00
Jan Bouwhuis
a5f8774878 Use cached_property for legacy device_tracker type (#101125) 2023-09-29 20:54:24 +02:00
Jan Bouwhuis
257e608c13 Use dataclass for mqtt TimestampedPublishMessage (#101124) 2023-09-29 20:11:30 +02:00
Franck Nijhof
a19c6fe9ff Revert pin on AlexaPy (#101123) 2023-09-29 19:40:13 +02:00
Joost Lekkerkerker
339b95c79f Migrate WAQI unique id (#101112)
* Migrate unique_id

* Add docstring
2023-09-29 19:30:35 +02:00
Joost Lekkerkerker
edcf0b6333 Add device class pH to Flipr (#101121) 2023-09-29 19:13:24 +02:00
Joost Lekkerkerker
591ffa8b68 Add device class pH to Poolsense (#101122) 2023-09-29 19:12:56 +02:00
Joost Lekkerkerker
8d972223d8 Add logging to media extractor to know the selected stream (#101117) 2023-09-29 19:12:27 +02:00
Joost Lekkerkerker
6c39233e00 Correct youtube stream selector in media extractor (#101119) 2023-09-29 19:09:18 +02:00
Joost Lekkerkerker
ce083eade9 Add device class pH to aseko pool live (#101120) 2023-09-29 19:07:33 +02:00
Erik Montnemery
50827405d0 Fix patch of PLATFORMS constant in netatmo (#101038) 2023-09-29 16:30:33 +02:00
Franck Nijhof
b8a7ad916a Pin charset-normalizer in our package constraints (#101107) 2023-09-29 14:43:03 +02:00
Franck Nijhof
97e5504ddd Correct binary ignore for charset-normalizer to charset_normalizer (#101106) 2023-09-29 13:18:33 +02:00
Franck Nijhof
e924622153 Ignore binary distribution wheels for charset-normalizer (#101104) 2023-09-29 12:58:29 +02:00
Marc Mueller
809abc1445 Fix circular dependency on homeassistant (#101099) 2023-09-29 11:49:19 +02:00
Franck Nijhof
4f90542394 Use pep 503 compatible wheels index for builds (#101096) 2023-09-29 09:30:00 +02:00
Mike
2a6a2fa842 Update pyvesync to 2.1.10 (#100522)
* Update manifest.json to use pyvesync 2.1.10

* Update Requirements for pyvesync

* Update test_diagnostics.ambr

---------

Co-authored-by: Thibault Cohen <47721+titilambert@users.noreply.github.com>
2023-09-29 09:01:04 +02:00
Franck Nijhof
fb61e34833 Update Home Assistant base image to 2023.09.0 (#101092) 2023-09-29 08:58:05 +02:00
Matthias Alphart
845d28255e Update xknxproject to 3.3.0 (#101081) 2023-09-29 07:05:26 +02:00
TheJulianJES
f5d8d41ad5 Fix ZHA exception when writing cie_addr during configuration (#101087)
Fix ZHA exception when writing `cie_addr`
2023-09-28 21:56:17 -04:00
Álvaro Fernández Rojas
d1347d23de Update aioairzone-cloud to v0.2.4 (#101069) 2023-09-28 16:29:53 -05:00
TJ Horner
063bac1665 Add native precipitation unit for weatherkit (#101073) 2023-09-28 16:24:07 -05:00
tronikos
42b2a462c1 Bump opower to 0.0.35 (#101072) 2023-09-28 22:38:33 +02:00
Erik Montnemery
136fbaa2a8 Remove dead code from broadlink light (#101063) 2023-09-28 22:38:21 +02:00
Michael Hansen
d73cc1eecd Use wake word description if available (#101079) 2023-09-28 15:30:43 -05:00
Paul Bottein
dbd0c06518 Update frontend to 20230928.0 (#101067) 2023-09-28 20:48:07 +02:00
Jan Bouwhuis
0ded0ef4ee Use dataclass instead of attr slots for mqtt PublishMessage and ReceiveMessage (#101062)
Use dataclass instead of attr slots
2023-09-28 20:36:30 +02:00
Jan Bouwhuis
77c519220d Use dataclass for mqtt Subscription (#101064) 2023-09-28 20:35:49 +02:00
Joost Lekkerkerker
f733c43900 Don't show withings repair if it's not in YAML (#101054) 2023-09-28 19:08:26 +02:00
TJ Horner
0a540e1cdb Bump apple_weatherkit to 1.0.4 (#101057) 2023-09-28 19:07:22 +02:00
Michael Hansen
f39b2716b0 Remove fma instructions from webrtc-noise-gain (#101060) 2023-09-28 19:07:00 +02:00
Joost Lekkerkerker
f255a0e546 Pin pydantic to 1.10.12 (#101044) 2023-09-28 19:06:45 +02:00
Joost Lekkerkerker
3b381f10d3 Bump aiowaqi to 1.1.0 (#99751)
* Bump aiowaqi to 1.1.0

* Fix hassfest

* Fix tests
2023-09-28 18:52:23 +02:00
Erik Montnemery
dc78d15abc Add LED control support to Home Assistant Green (#100922)
* Add LED control support to Home Assistant Green

* Add strings.json

* Sort alphabetically

* Reorder LED schema

* Improve test coverage

* Apply suggestions from code review

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

* Sort + fix test

* Remove reboot menu

---------

Co-authored-by: Stefan Agner <stefan@agner.ch>
2023-09-28 17:45:10 +02:00
Álvaro Fernández Rojas
d8520088e7 Update aioairzone-cloud to v0.2.3 (#101052)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-09-28 16:52:16 +02:00
RoboMagus
f0ca27fd08 Add reload to rest_command integration (#100511)
* Add YAML reload to rest_command integration

* Add rest_command reload tests

* Fix test coverage

* Remove unnecessary call to keys

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

* Perform cleanup on reload with empty config

* Fix mypy

* Fix ruff

* Update homeassistant/components/rest_command/__init__.py

* Update __init__.py

---------

Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-09-28 16:28:38 +02:00
Tereza Tomcova
217a895b5a Bump PySwitchbot to 0.40.0 to support Curtain 3 (#100619) 2023-09-28 13:15:22 +02:00
lennart24
b43262014f Add shutter_tilt support for Fibaro FGR 223 (#96283)
* add support for shutter_tilt for Fibaro FGR 223
add tests for fgr 223

* Adjust comments and docstring

---------

Co-authored-by: Lennart <18117505+Ced4@users.noreply.github.com>
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2023-09-28 12:59:02 +02:00
Joost Lekkerkerker
d1f1bdebde Add feature to add measuring station via number in waqi (#99992)
* Add feature to add measuring station via number

* Add feature to add measuring station via number

* Add feature to add measuring station via number
2023-09-28 10:55:48 +02:00
Joost Lekkerkerker
4a73ccb7db Create function to extract onvif message (#101036)
Create extract message function
2023-09-28 10:17:07 +02:00
Álvaro Fernández Rojas
3db7bdc630 Implement Airzone Cloud Group climate support (#101018)
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-09-28 09:26:13 +02:00
Joost Lekkerkerker
089f87c45b Fix onvif creating a new entity for every new event (#101035)
Use topic value as topic
2023-09-28 09:13:33 +02:00
tyjtyj
d70cb8caa5 Fix google maps device_tracker same last seen timestamp (#99963)
* Update device_tracker.py 

This fix the google_maps does not show current location when HA started/restarted and also fix unnecessary update when last_seen timestamp is the same. 
Unnecessary update is causing proximity sensor switching from between stationary and certain direction.

* Remove elif

* Fix Black check

* fix black check

* Update device_tracker.py

Better patch

* Update device_tracker.py

* Update device_tracker.py

Fix Black

* Update device_tracker.py

change warning to debug
2023-09-28 08:08:07 +02:00
Artur Pragacz
e1771ae01e Fix circular dependancy detection (#100458)
* Fix _async_component_dependencies

Fix bug with circular dependency detection
Fix bug with circular after_dependency detection
Simplify interface and make the code more readable

* Implement review feedback

* Pass all conflicting deps to Exception

* Change inner docstring

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

---------

Co-authored-by: Erik Montnemery <erik@montnemery.com>
2023-09-28 08:05:00 +02:00
Jesse Hills
d41144ee88 ESPHome: dont send error when wake word is aborted (#101032)
* ESPHome dont send error when wake word is aborted

* Add test
2023-09-27 23:39:57 -04:00
Franck Nijhof
f757d4c7da Update py-cpuinfo to 9.0.0 (#101019) 2023-09-27 21:02:47 -04:00
Franck Nijhof
4f1906ae3e Remove myself from cpuspeed codeowners (#101020) 2023-09-27 21:00:14 -04:00
Jan Bouwhuis
dc1d3f727b Fix handling reload with invalid mqtt config (#101015)
Fix handling reload whith invalid mqtt config
2023-09-27 20:59:19 -04:00
Michael Hansen
5fe61ca5e7 Use webrtc-noise-gain without AVX2 (#101028) 2023-09-27 19:55:26 -05:00
Marc Mueller
38984dd939 Update pyweatherflowudp to 1.4.3 (#101022) 2023-09-27 17:58:30 -05:00
Marcel van der Veldt
b569cb61e9 Adopt Hue integration to latest changes in Hue firmware (#101001) 2023-09-27 23:36:12 +02:00
J. Nick Koston
7d07694496 Fix HomeKit handling of unavailable state (#101021) 2023-09-27 23:34:25 +02:00
Álvaro Fernández Rojas
6a52283ce0 Implement Airzone Cloud Aidoo climate support (#101011)
* Implement Airzone Cloud Aidoo climate support

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

* airzone_cloud: climate: add entity naming

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

---------

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2023-09-27 20:30:32 +02:00
Rami Mosleh
473d20712c Migrate islamic prayer times sensor unique_id to include entry_id (#100814)
* Migrate sensor unique_id to include entry_id

* Apply suggestion
2023-09-27 20:17:39 +02:00
steffenrapp
b3b235cbb7 Add homeassistant reload_all translatable service name and description (#100437)
* Update services.yaml

* Update strings.json

* Update strings.json
2023-09-27 20:16:00 +02:00
Marc Mueller
9fe2c08913 Update astroid to 2.15.8 (#101007) 2023-09-27 20:14:56 +02:00
Franck Nijhof
97f24b855f Bump version to 2023.11.0dev0 (#101013) 2023-09-27 19:03:06 +02:00
Jan-Philipp Benecke
c0c02bf6bb Restore state of trend sensor (#100332)
* Restoring state of trend sensor

* Handle unknown state & parametrize tests
2023-09-27 18:28:27 +02:00
1679 changed files with 60339 additions and 28824 deletions

View File

@@ -45,6 +45,7 @@ base_platforms: &base_platforms
- homeassistant/components/switch/**
- homeassistant/components/text/**
- homeassistant/components/time/**
- homeassistant/components/todo/**
- homeassistant/components/tts/**
- homeassistant/components/update/**
- homeassistant/components/vacuum/**
@@ -96,8 +97,8 @@ components: &components
- homeassistant/components/persistent_notification/**
- homeassistant/components/person/**
- homeassistant/components/recorder/**
- homeassistant/components/recovery_mode/**
- homeassistant/components/repairs/**
- homeassistant/components/safe_mode/**
- homeassistant/components/script/**
- homeassistant/components/shopping_list/**
- homeassistant/components/ssdp/**

View File

@@ -178,6 +178,8 @@ omit =
homeassistant/components/comelit/cover.py
homeassistant/components/comelit/coordinator.py
homeassistant/components/comelit/light.py
homeassistant/components/comelit/sensor.py
homeassistant/components/comelit/switch.py
homeassistant/components/comfoconnect/fan.py
homeassistant/components/concord232/alarm_control_panel.py
homeassistant/components/concord232/binary_sensor.py
@@ -284,9 +286,6 @@ omit =
homeassistant/components/edl21/__init__.py
homeassistant/components/edl21/sensor.py
homeassistant/components/egardia/*
homeassistant/components/eight_sleep/__init__.py
homeassistant/components/eight_sleep/binary_sensor.py
homeassistant/components/eight_sleep/sensor.py
homeassistant/components/electric_kiwi/__init__.py
homeassistant/components/electric_kiwi/api.py
homeassistant/components/electric_kiwi/oauth2.py
@@ -376,6 +375,7 @@ omit =
homeassistant/components/fibaro/binary_sensor.py
homeassistant/components/fibaro/climate.py
homeassistant/components/fibaro/cover.py
homeassistant/components/fibaro/event.py
homeassistant/components/fibaro/light.py
homeassistant/components/fibaro/lock.py
homeassistant/components/fibaro/sensor.py
@@ -541,12 +541,6 @@ omit =
homeassistant/components/hvv_departures/__init__.py
homeassistant/components/hvv_departures/binary_sensor.py
homeassistant/components/hvv_departures/sensor.py
homeassistant/components/hydrawise/__init__.py
homeassistant/components/hydrawise/binary_sensor.py
homeassistant/components/hydrawise/const.py
homeassistant/components/hydrawise/coordinator.py
homeassistant/components/hydrawise/sensor.py
homeassistant/components/hydrawise/switch.py
homeassistant/components/ialarm/alarm_control_panel.py
homeassistant/components/iammeter/sensor.py
homeassistant/components/iaqualink/binary_sensor.py
@@ -563,7 +557,6 @@ omit =
homeassistant/components/ifttt/alarm_control_panel.py
homeassistant/components/iglo/light.py
homeassistant/components/ihc/*
homeassistant/components/imap_email_content/sensor.py
homeassistant/components/incomfort/*
homeassistant/components/insteon/binary_sensor.py
homeassistant/components/insteon/climate.py
@@ -750,11 +743,6 @@ omit =
homeassistant/components/mikrotik/hub.py
homeassistant/components/mill/climate.py
homeassistant/components/mill/sensor.py
homeassistant/components/minecraft_server/__init__.py
homeassistant/components/minecraft_server/binary_sensor.py
homeassistant/components/minecraft_server/coordinator.py
homeassistant/components/minecraft_server/entity.py
homeassistant/components/minecraft_server/sensor.py
homeassistant/components/minio/minio_helper.py
homeassistant/components/mjpeg/camera.py
homeassistant/components/mjpeg/util.py
@@ -795,6 +783,7 @@ omit =
homeassistant/components/mystrom/binary_sensor.py
homeassistant/components/mystrom/light.py
homeassistant/components/mystrom/switch.py
homeassistant/components/mystrom/sensor.py
homeassistant/components/nad/media_player.py
homeassistant/components/nanoleaf/__init__.py
homeassistant/components/nanoleaf/button.py
@@ -835,7 +824,6 @@ omit =
homeassistant/components/nibe_heatpump/__init__.py
homeassistant/components/nibe_heatpump/climate.py
homeassistant/components/nibe_heatpump/binary_sensor.py
homeassistant/components/nibe_heatpump/number.py
homeassistant/components/nibe_heatpump/select.py
homeassistant/components/nibe_heatpump/sensor.py
homeassistant/components/nibe_heatpump/switch.py
@@ -964,6 +952,7 @@ omit =
homeassistant/components/ping/__init__.py
homeassistant/components/ping/binary_sensor.py
homeassistant/components/ping/device_tracker.py
homeassistant/components/ping/helpers.py
homeassistant/components/pioneer/media_player.py
homeassistant/components/plaato/__init__.py
homeassistant/components/plaato/binary_sensor.py
@@ -1000,6 +989,7 @@ omit =
homeassistant/components/pushsafer/notify.py
homeassistant/components/pyload/sensor.py
homeassistant/components/qbittorrent/__init__.py
homeassistant/components/qbittorrent/coordinator.py
homeassistant/components/qbittorrent/sensor.py
homeassistant/components/qnap/__init__.py
homeassistant/components/qnap/coordinator.py
@@ -1122,7 +1112,6 @@ omit =
homeassistant/components/sesame/lock.py
homeassistant/components/seven_segments/image_processing.py
homeassistant/components/seventeentrack/sensor.py
homeassistant/components/shiftr/*
homeassistant/components/shodan/sensor.py
homeassistant/components/sia/__init__.py
homeassistant/components/sia/alarm_control_panel.py
@@ -1276,6 +1265,7 @@ omit =
homeassistant/components/switchbot/sensor.py
homeassistant/components/switchbot/switch.py
homeassistant/components/switchbot/lock.py
homeassistant/components/switchbot_cloud/climate.py
homeassistant/components/switchbot_cloud/coordinator.py
homeassistant/components/switchbot_cloud/entity.py
homeassistant/components/switchbot_cloud/switch.py
@@ -1301,6 +1291,7 @@ omit =
homeassistant/components/system_bridge/__init__.py
homeassistant/components/system_bridge/binary_sensor.py
homeassistant/components/system_bridge/coordinator.py
homeassistant/components/system_bridge/media_player.py
homeassistant/components/system_bridge/notify.py
homeassistant/components/system_bridge/sensor.py
homeassistant/components/systemmonitor/sensor.py
@@ -1400,6 +1391,7 @@ omit =
homeassistant/components/trafikverket_weatherstation/coordinator.py
homeassistant/components/trafikverket_weatherstation/sensor.py
homeassistant/components/transmission/__init__.py
homeassistant/components/transmission/coordinator.py
homeassistant/components/transmission/sensor.py
homeassistant/components/transmission/switch.py
homeassistant/components/travisci/sensor.py
@@ -1474,7 +1466,9 @@ omit =
homeassistant/components/vicare/binary_sensor.py
homeassistant/components/vicare/button.py
homeassistant/components/vicare/climate.py
homeassistant/components/vicare/entity.py
homeassistant/components/vicare/sensor.py
homeassistant/components/vicare/utils.py
homeassistant/components/vicare/water_heater.py
homeassistant/components/vilfo/__init__.py
homeassistant/components/vilfo/sensor.py
@@ -1516,7 +1510,6 @@ omit =
homeassistant/components/wiffi/sensor.py
homeassistant/components/wiffi/wiffi_strings.py
homeassistant/components/wirelesstag/*
homeassistant/components/withings/api.py
homeassistant/components/wolflink/__init__.py
homeassistant/components/wolflink/sensor.py
homeassistant/components/worldtidesinfo/sensor.py

View File

@@ -24,12 +24,12 @@ jobs:
publish: ${{ steps.version.outputs.publish }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -56,10 +56,10 @@ jobs:
if: github.repository_owner == 'home-assistant' && needs.init.outputs.publish == 'true'
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -98,7 +98,7 @@ jobs:
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Download nightly wheels of frontend
if: needs.init.outputs.channel == 'dev'
@@ -124,7 +124,7 @@ jobs:
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
if: needs.init.outputs.channel == 'dev'
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -252,7 +252,7 @@ jobs:
- green
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set build additional args
run: |
@@ -289,7 +289,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Initialize git
uses: home-assistant/actions/helpers/git-init@master
@@ -327,7 +327,7 @@ jobs:
id-token: write
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Install Cosign
uses: sigstore/cosign-installer@v3.1.2

View File

@@ -37,18 +37,20 @@ env:
PIP_CACHE_VERSION: 4
MYPY_CACHE_VERSION: 5
BLACK_CACHE_VERSION: 1
HA_SHORT_VERSION: "2023.10"
HA_SHORT_VERSION: "2023.11"
DEFAULT_PYTHON: "3.11"
ALL_PYTHON_VERSIONS: "['3.11']"
ALL_PYTHON_VERSIONS: "['3.11', '3.12']"
# 10.3 is the oldest supported version
# - 10.3.32 is the version currently shipped with Synology (as of 17 Feb 2022)
# 10.6 is the current long-term-support
# - 10.6.10 is the version currently shipped with the Add-on (as of 31 Jan 2023)
# 10.10 is the latest short-term-support
# - 10.10.3 is the latest (as of 6 Feb 2023)
# 10.11 is the latest long-term-support
# - 10.11.2 is the version currently shipped with Synology (as of 11 Oct 2023)
# mysql 8.0.32 does not always behave the same as MariaDB
# and some queries that work on MariaDB do not work on MySQL
MARIADB_VERSIONS: "['mariadb:10.3.32','mariadb:10.6.10','mariadb:10.10.3','mysql:8.0.32']"
MARIADB_VERSIONS: "['mariadb:10.3.32','mariadb:10.6.10','mariadb:10.10.3','mariadb:10.11.2','mysql:8.0.32']"
# 12 is the oldest supported version
# - 12.14 is the latest (as of 9 Feb 2023)
# 15 is the latest version
@@ -89,7 +91,7 @@ jobs:
runs-on: ubuntu-22.04
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Generate partial Python venv restore key
id: generate_python_cache_key
run: >-
@@ -222,10 +224,10 @@ jobs:
- info
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -267,9 +269,9 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -335,9 +337,9 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -384,9 +386,9 @@ jobs:
- pre-commit
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
id: python
with:
python-version: ${{ env.DEFAULT_PYTHON }}
@@ -478,10 +480,10 @@ jobs:
python-version: ${{ fromJSON(needs.info.outputs.python_versions) }}
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -546,10 +548,10 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -578,10 +580,10 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -611,10 +613,10 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -655,10 +657,10 @@ jobs:
- base
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
@@ -737,10 +739,10 @@ jobs:
bluez \
ffmpeg
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -889,10 +891,10 @@ jobs:
ffmpeg \
libmariadb-dev-compat
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -1013,10 +1015,10 @@ jobs:
ffmpeg \
postgresql-server-dev-14
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ matrix.python-version }}
id: python
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ matrix.python-version }}
check-latest: true
@@ -1108,7 +1110,7 @@ jobs:
timeout-minutes: 10
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Download all coverage artifacts
uses: actions/download-artifact@v3
- name: Upload coverage to Codecov (full coverage)

39
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,39 @@
name: "CodeQL"
# yamllint disable-line rule:truthy
on:
push:
branches:
- dev
- rc
- master
schedule:
- cron: "30 18 * * 4"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
timeout-minutes: 360
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.1.1
- name: Initialize CodeQL
uses: github/codeql-action/init@v2.22.4
with:
languages: python
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2.22.4
with:
category: "/language:python"

View File

@@ -19,10 +19,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
uses: actions/setup-python@v4.7.0
uses: actions/setup-python@v4.7.1
with:
python-version: ${{ env.DEFAULT_PYTHON }}

View File

@@ -10,8 +10,10 @@ on:
- dev
- rc
paths:
- "requirements.txt"
- ".github/workflows/wheels.yml"
- "homeassistant/package_constraints.txt"
- "requirements_all.txt"
- "requirements.txt"
concurrency:
group: ${{ github.workflow }}-${{ github.ref_name}}
@@ -26,7 +28,7 @@ jobs:
architectures: ${{ steps.info.outputs.architectures }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Get information
id: info
@@ -80,11 +82,11 @@ jobs:
strategy:
fail-fast: false
matrix:
abi: ["cp311"]
abi: ["cp311", "cp312"]
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Download env_file
uses: actions/download-artifact@v3
@@ -97,7 +99,7 @@ jobs:
name: requirements_diff
- name: Build wheels
uses: home-assistant/wheels@2023.09.1
uses: home-assistant/wheels@2023.10.5
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
@@ -110,7 +112,7 @@ jobs:
requirements-diff: "requirements_diff.txt"
requirements: "requirements.txt"
integrations_cp311:
integrations:
name: Build wheels ${{ matrix.abi }} for ${{ matrix.arch }}
if: github.repository_owner == 'home-assistant'
needs: init
@@ -118,11 +120,11 @@ jobs:
strategy:
fail-fast: false
matrix:
abi: ["cp311"]
abi: ["cp311", "cp312"]
arch: ${{ fromJson(needs.init.outputs.architectures) }}
steps:
- name: Checkout the repository
uses: actions/checkout@v4.1.0
uses: actions/checkout@v4.1.1
- name: Download env_file
uses: actions/download-artifact@v3
@@ -168,6 +170,18 @@ jobs:
split -l $(expr $(expr $(cat requirements_all.txt | wc -l) + 1) / 3) requirements_all.txt requirements_all.txt
- name: Create requirements for cython<3
run: |
# Some dependencies still require 'cython<3'
# and don't yet use isolated build environments.
# Build these first.
# grpcio: https://github.com/grpc/grpc/issues/33918
# pydantic: https://github.com/pydantic/pydantic/issues/7689
touch requirements_old-cython.txt
cat homeassistant/package_constraints.txt | grep 'grpcio==' >> requirements_old-cython.txt
cat homeassistant/package_constraints.txt | grep 'pydantic==' >> requirements_old-cython.txt
- name: Adjust build env
run: |
if [ "${{ matrix.arch }}" = "i386" ]; then
@@ -177,8 +191,23 @@ jobs:
# Do not pin numpy in wheels building
sed -i "/numpy/d" homeassistant/package_constraints.txt
- name: Build wheels (old cython)
uses: home-assistant/wheels@2023.10.5
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
arch: ${{ matrix.arch }}
wheels-key: ${{ secrets.WHEELS_KEY }}
env-file: true
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev"
skip-binary: aiohttp;charset-normalizer;grpcio;SQLAlchemy;protobuf
constraints: "homeassistant/package_constraints.txt"
requirements-diff: "requirements_diff.txt"
requirements: "requirements_old-cython.txt"
pip: "'cython<3'"
- name: Build wheels (part 1)
uses: home-assistant/wheels@2023.09.1
uses: home-assistant/wheels@2023.10.5
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
@@ -192,7 +221,7 @@ jobs:
requirements: "requirements_all.txtaa"
- name: Build wheels (part 2)
uses: home-assistant/wheels@2023.09.1
uses: home-assistant/wheels@2023.10.5
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2
@@ -206,7 +235,7 @@ jobs:
requirements: "requirements_all.txtab"
- name: Build wheels (part 3)
uses: home-assistant/wheels@2023.09.1
uses: home-assistant/wheels@2023.10.5
with:
abi: ${{ matrix.abi }}
tag: musllinux_1_2

3
.gitignore vendored
View File

@@ -111,9 +111,6 @@ virtualization/vagrant/config
!.vscode/tasks.json
.env
# Built docs
docs/build
# Windows Explorer
desktop.ini
/home-assistant.pyproj

View File

@@ -3,3 +3,4 @@ ignored:
- DL3008
- DL3013
- DL3018
- DL3042

View File

@@ -1,12 +1,12 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.0.289
rev: v0.1.1
hooks:
- id: ruff
args:
- --fix
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 23.9.1
rev: 23.10.0
hooks:
- id: black
args:

View File

@@ -1,7 +1,6 @@
*.md
.strict-typing
azure-*.yml
docs/source/_templates/*
homeassistant/components/*/translations/*.json
homeassistant/generated/*
tests/components/lidarr/fixtures/initialize.js

View File

@@ -1,14 +0,0 @@
# .readthedocs.yml
version: 2
build:
os: ubuntu-20.04
tools:
python: "3.9"
python:
install:
- method: setuptools
path: .
- requirements: requirements_docs.txt

View File

@@ -103,6 +103,7 @@ homeassistant.components.devolo_home_control.*
homeassistant.components.devolo_home_network.*
homeassistant.components.dhcp.*
homeassistant.components.diagnostics.*
homeassistant.components.discovergy.*
homeassistant.components.dlna_dmr.*
homeassistant.components.dnsip.*
homeassistant.components.doorbird.*
@@ -156,15 +157,7 @@ homeassistant.components.homeassistant_green.*
homeassistant.components.homeassistant_hardware.*
homeassistant.components.homeassistant_sky_connect.*
homeassistant.components.homeassistant_yellow.*
homeassistant.components.homekit
homeassistant.components.homekit.accessories
homeassistant.components.homekit.aidmanager
homeassistant.components.homekit.config_flow
homeassistant.components.homekit.diagnostics
homeassistant.components.homekit.logbook
homeassistant.components.homekit.type_locks
homeassistant.components.homekit.type_triggers
homeassistant.components.homekit.util
homeassistant.components.homekit.*
homeassistant.components.homekit_controller
homeassistant.components.homekit_controller.alarm_control_panel
homeassistant.components.homekit_controller.button
@@ -211,6 +204,7 @@ homeassistant.components.light.*
homeassistant.components.litejet.*
homeassistant.components.litterrobot.*
homeassistant.components.local_ip.*
homeassistant.components.local_todo.*
homeassistant.components.lock.*
homeassistant.components.logbook.*
homeassistant.components.logger.*
@@ -327,6 +321,7 @@ homeassistant.components.synology_dsm.*
homeassistant.components.systemmonitor.*
homeassistant.components.tag.*
homeassistant.components.tailscale.*
homeassistant.components.tami4.*
homeassistant.components.tautulli.*
homeassistant.components.tcp.*
homeassistant.components.text.*
@@ -343,6 +338,7 @@ homeassistant.components.trafikverket_camera.*
homeassistant.components.trafikverket_ferry.*
homeassistant.components.trafikverket_train.*
homeassistant.components.trafikverket_weatherstation.*
homeassistant.components.transmission.*
homeassistant.components.trend.*
homeassistant.components.tts.*
homeassistant.components.twentemilieu.*
@@ -366,6 +362,7 @@ homeassistant.components.webostv.*
homeassistant.components.websocket_api.*
homeassistant.components.wemo.*
homeassistant.components.whois.*
homeassistant.components.withings.*
homeassistant.components.wiz.*
homeassistant.components.wled.*
homeassistant.components.worldclock.*

6
.vscode/tasks.json vendored
View File

@@ -16,7 +16,7 @@
{
"label": "Pytest",
"type": "shell",
"command": "pytest --timeout=10 tests",
"command": "python3 -m pytest --timeout=10 tests",
"dependsOn": ["Install all Test Requirements"],
"group": {
"kind": "test",
@@ -31,7 +31,7 @@
{
"label": "Pytest (changed tests only)",
"type": "shell",
"command": "pytest --timeout=10 --picked",
"command": "python3 -m pytest --timeout=10 --picked",
"group": {
"kind": "test",
"isDefault": true
@@ -75,7 +75,7 @@
"label": "Code Coverage",
"detail": "Generate code coverage report for a given integration.",
"type": "shell",
"command": "pytest ./tests/components/${input:integrationName}/ --cov=homeassistant.components.${input:integrationName} --cov-report term-missing --durations-min=1 --durations=0 --numprocesses=auto",
"command": "python3 -m pytest ./tests/components/${input:integrationName}/ --cov=homeassistant.components.${input:integrationName} --cov-report term-missing --durations-min=1 --durations=0 --numprocesses=auto",
"group": {
"kind": "test",
"isDefault": true

View File

@@ -100,8 +100,8 @@ build.json @home-assistant/supervisor
/tests/components/apprise/ @caronc
/homeassistant/components/aprs/ @PhilRW
/tests/components/aprs/ @PhilRW
/homeassistant/components/aranet/ @aschmitz
/tests/components/aranet/ @aschmitz
/homeassistant/components/aranet/ @aschmitz @thecode
/tests/components/aranet/ @aschmitz @thecode
/homeassistant/components/arcam_fmj/ @elupus
/tests/components/arcam_fmj/ @elupus
/homeassistant/components/arris_tg2492lg/ @vanbalken
@@ -233,8 +233,8 @@ build.json @home-assistant/supervisor
/tests/components/counter/ @fabaff
/homeassistant/components/cover/ @home-assistant/core
/tests/components/cover/ @home-assistant/core
/homeassistant/components/cpuspeed/ @fabaff @frenck
/tests/components/cpuspeed/ @fabaff @frenck
/homeassistant/components/cpuspeed/ @fabaff
/tests/components/cpuspeed/ @fabaff
/homeassistant/components/crownstone/ @Crownstone @RicArch97
/tests/components/crownstone/ @Crownstone @RicArch97
/homeassistant/components/cups/ @fabaff
@@ -319,8 +319,6 @@ build.json @home-assistant/supervisor
/homeassistant/components/efergy/ @tkdrob
/tests/components/efergy/ @tkdrob
/homeassistant/components/egardia/ @jeroenterheerdt
/homeassistant/components/eight_sleep/ @mezz64 @raman325
/tests/components/eight_sleep/ @mezz64 @raman325
/homeassistant/components/electrasmart/ @jafar-atili
/tests/components/electrasmart/ @jafar-atili
/homeassistant/components/electric_kiwi/ @mikey0000
@@ -423,8 +421,8 @@ build.json @home-assistant/supervisor
/tests/components/fritzbox/ @mib1185 @flabbamann
/homeassistant/components/fritzbox_callmonitor/ @cdce8p
/tests/components/fritzbox_callmonitor/ @cdce8p
/homeassistant/components/fronius/ @nielstron @farmio
/tests/components/fronius/ @nielstron @farmio
/homeassistant/components/fronius/ @farmio
/tests/components/fronius/ @farmio
/homeassistant/components/frontend/ @home-assistant/frontend
/tests/components/frontend/ @home-assistant/frontend
/homeassistant/components/frontier_silicon/ @wlcrs
@@ -479,6 +477,8 @@ build.json @home-assistant/supervisor
/tests/components/google_mail/ @tkdrob
/homeassistant/components/google_sheets/ @tkdrob
/tests/components/google_sheets/ @tkdrob
/homeassistant/components/google_tasks/ @allenporter
/tests/components/google_tasks/ @allenporter
/homeassistant/components/google_travel_time/ @eifinger
/tests/components/google_travel_time/ @eifinger
/homeassistant/components/govee_ble/ @bdraco @PierreAronnax
@@ -586,6 +586,8 @@ build.json @home-assistant/supervisor
/tests/components/image_upload/ @home-assistant/core
/homeassistant/components/imap/ @jbouwh
/tests/components/imap/ @jbouwh
/homeassistant/components/improv_ble/ @emontnemery
/tests/components/improv_ble/ @emontnemery
/homeassistant/components/incomfort/ @zxdavb
/homeassistant/components/influxdb/ @mdegat01
/tests/components/influxdb/ @mdegat01
@@ -660,8 +662,8 @@ build.json @home-assistant/supervisor
/tests/components/kmtronic/ @dgomes
/homeassistant/components/knx/ @Julius2342 @farmio @marvin-w
/tests/components/knx/ @Julius2342 @farmio @marvin-w
/homeassistant/components/kodi/ @OnFreund @cgtobi
/tests/components/kodi/ @OnFreund @cgtobi
/homeassistant/components/kodi/ @OnFreund
/tests/components/kodi/ @OnFreund
/homeassistant/components/konnected/ @heythisisnate
/tests/components/konnected/ @heythisisnate
/homeassistant/components/kostal_plenticore/ @stegm
@@ -708,6 +710,8 @@ build.json @home-assistant/supervisor
/tests/components/local_calendar/ @allenporter
/homeassistant/components/local_ip/ @issacg
/tests/components/local_ip/ @issacg
/homeassistant/components/local_todo/ @allenporter
/tests/components/local_todo/ @allenporter
/homeassistant/components/lock/ @home-assistant/core
/tests/components/lock/ @home-assistant/core
/homeassistant/components/logbook/ @home-assistant/core
@@ -738,8 +742,6 @@ build.json @home-assistant/supervisor
/tests/components/matrix/ @PaarthShah
/homeassistant/components/matter/ @home-assistant/matter
/tests/components/matter/ @home-assistant/matter
/homeassistant/components/mazda/ @bdr99
/tests/components/mazda/ @bdr99
/homeassistant/components/meater/ @Sotolotl @emontnemery
/tests/components/meater/ @Sotolotl @emontnemery
/homeassistant/components/medcom_ble/ @elafargue
@@ -757,8 +759,8 @@ build.json @home-assistant/supervisor
/tests/components/melissa/ @kennedyshead
/homeassistant/components/melnor/ @vanstinator
/tests/components/melnor/ @vanstinator
/homeassistant/components/met/ @danielhiversen @thimic
/tests/components/met/ @danielhiversen @thimic
/homeassistant/components/met/ @danielhiversen
/tests/components/met/ @danielhiversen
/homeassistant/components/met_eireann/ @DylanGore
/tests/components/met_eireann/ @DylanGore
/homeassistant/components/meteo_france/ @hacf-fr @oncleben31 @Quentame
@@ -951,6 +953,8 @@ build.json @home-assistant/supervisor
/tests/components/picnic/ @corneyl
/homeassistant/components/pilight/ @trekky12
/tests/components/pilight/ @trekky12
/homeassistant/components/ping/ @jpbede
/tests/components/ping/ @jpbede
/homeassistant/components/plaato/ @JohNan
/tests/components/plaato/ @JohNan
/homeassistant/components/plex/ @jjlawren
@@ -1035,6 +1039,8 @@ build.json @home-assistant/supervisor
/tests/components/recollect_waste/ @bachya
/homeassistant/components/recorder/ @home-assistant/core
/tests/components/recorder/ @home-assistant/core
/homeassistant/components/recovery_mode/ @home-assistant/core
/tests/components/recovery_mode/ @home-assistant/core
/homeassistant/components/rejseplanen/ @DarkFox
/homeassistant/components/remote/ @home-assistant/core
/tests/components/remote/ @home-assistant/core
@@ -1065,8 +1071,8 @@ build.json @home-assistant/supervisor
/tests/components/roborock/ @humbertogontijo @Lash-L
/homeassistant/components/roku/ @ctalkington
/tests/components/roku/ @ctalkington
/homeassistant/components/roomba/ @pschmitt @cyr-ius @shenxn
/tests/components/roomba/ @pschmitt @cyr-ius @shenxn
/homeassistant/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1
/tests/components/roomba/ @pschmitt @cyr-ius @shenxn @Xitee1
/homeassistant/components/roon/ @pavoni
/tests/components/roon/ @pavoni
/homeassistant/components/rpi_power/ @shenxn @swetoast
@@ -1085,8 +1091,6 @@ build.json @home-assistant/supervisor
/tests/components/rympro/ @OnFreund @elad-bar @maorcc
/homeassistant/components/sabnzbd/ @shaiu
/tests/components/sabnzbd/ @shaiu
/homeassistant/components/safe_mode/ @home-assistant/core
/tests/components/safe_mode/ @home-assistant/core
/homeassistant/components/saj/ @fredericvl
/homeassistant/components/samsungtv/ @chemelli74 @epenet
/tests/components/samsungtv/ @chemelli74 @epenet
@@ -1191,8 +1195,8 @@ build.json @home-assistant/supervisor
/tests/components/sonarr/ @ctalkington
/homeassistant/components/songpal/ @rytilahti @shenxn
/tests/components/songpal/ @rytilahti @shenxn
/homeassistant/components/sonos/ @cgtobi @jjlawren
/tests/components/sonos/ @cgtobi @jjlawren
/homeassistant/components/sonos/ @jjlawren
/tests/components/sonos/ @jjlawren
/homeassistant/components/soundtouch/ @kroimon
/tests/components/soundtouch/ @kroimon
/homeassistant/components/spaceapi/ @fabaff
@@ -1267,6 +1271,8 @@ build.json @home-assistant/supervisor
/tests/components/tag/ @balloob @dmulcahey
/homeassistant/components/tailscale/ @frenck
/tests/components/tailscale/ @frenck
/homeassistant/components/tami4/ @Guy293
/tests/components/tami4/ @Guy293
/homeassistant/components/tankerkoenig/ @guillempages @mib1185
/tests/components/tankerkoenig/ @guillempages @mib1185
/homeassistant/components/tapsaff/ @bazwilliams
@@ -1301,6 +1307,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/time_date/ @fabaff
/tests/components/time_date/ @fabaff
/homeassistant/components/tmb/ @alemuro
/homeassistant/components/todo/ @home-assistant/core
/tests/components/todo/ @home-assistant/core
/homeassistant/components/todoist/ @boralyl
/tests/components/todoist/ @boralyl
/homeassistant/components/tolo/ @MatthiasLohr
@@ -1323,10 +1331,10 @@ build.json @home-assistant/supervisor
/tests/components/trafikverket_camera/ @gjohansson-ST
/homeassistant/components/trafikverket_ferry/ @gjohansson-ST
/tests/components/trafikverket_ferry/ @gjohansson-ST
/homeassistant/components/trafikverket_train/ @endor-force @gjohansson-ST
/tests/components/trafikverket_train/ @endor-force @gjohansson-ST
/homeassistant/components/trafikverket_weatherstation/ @endor-force @gjohansson-ST
/tests/components/trafikverket_weatherstation/ @endor-force @gjohansson-ST
/homeassistant/components/trafikverket_train/ @gjohansson-ST
/tests/components/trafikverket_train/ @gjohansson-ST
/homeassistant/components/trafikverket_weatherstation/ @gjohansson-ST
/tests/components/trafikverket_weatherstation/ @gjohansson-ST
/homeassistant/components/transmission/ @engrbm87 @JPHutchins
/tests/components/transmission/ @engrbm87 @JPHutchins
/homeassistant/components/trend/ @jpbede
@@ -1438,8 +1446,8 @@ build.json @home-assistant/supervisor
/homeassistant/components/wilight/ @leofig-rj
/tests/components/wilight/ @leofig-rj
/homeassistant/components/wirelesstag/ @sergeymaysak
/homeassistant/components/withings/ @vangorra @joostlek
/tests/components/withings/ @vangorra @joostlek
/homeassistant/components/withings/ @joostlek
/tests/components/withings/ @joostlek
/homeassistant/components/wiz/ @sbidy
/tests/components/wiz/ @sbidy
/homeassistant/components/wled/ @frenck

View File

@@ -14,41 +14,29 @@ COPY requirements.txt homeassistant/
COPY homeassistant/package_constraints.txt homeassistant/homeassistant/
RUN \
pip3 install \
--no-cache-dir \
--only-binary=:all: \
--index-url "https://wheels.home-assistant.io/musllinux-index/" \
-r homeassistant/requirements.txt
COPY requirements_all.txt home_assistant_frontend-* home_assistant_intents-* homeassistant/
RUN \
if ls homeassistant/home_assistant_frontend*.whl 1> /dev/null 2>&1; then \
pip3 install \
--no-cache-dir \
--no-index \
homeassistant/home_assistant_frontend-*.whl; \
pip3 install homeassistant/home_assistant_frontend-*.whl; \
fi \
&& if ls homeassistant/home_assistant_intents*.whl 1> /dev/null 2>&1; then \
pip3 install \
--no-cache-dir \
--no-index \
homeassistant/home_assistant_intents-*.whl; \
pip3 install homeassistant/home_assistant_intents-*.whl; \
fi \
&& \
LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \
MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
pip3 install \
--no-cache-dir \
--only-binary=:all: \
--index-url "https://wheels.home-assistant.io/musllinux-index/" \
-r homeassistant/requirements_all.txt
## Setup Home Assistant Core
COPY . homeassistant/
RUN \
pip3 install \
--no-cache-dir \
--only-binary=:all: \
--index-url "https://wheels.home-assistant.io/musllinux-index/" \
-e ./homeassistant \
&& python3 -m compileall \
homeassistant/homeassistant

View File

@@ -1,10 +1,10 @@
image: ghcr.io/home-assistant/{arch}-homeassistant
build_from:
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2023.09.0
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2023.09.0
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2023.09.0
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2023.09.0
i386: ghcr.io/home-assistant/i386-homeassistant-base:2023.09.0
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2023.10.1
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2023.10.1
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2023.10.1
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2023.10.1
i386: ghcr.io/home-assistant/i386-homeassistant-base:2023.10.1
codenotary:
signer: notary@home-assistant.io
base_image: notary@home-assistant.io

View File

@@ -1,230 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " livehtml to make standalone HTML files via sphinx-autobuild"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " applehelp to make an Apple Help Book"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " epub3 to make an epub3"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " coverage to run coverage check of the documentation (if enabled)"
@echo " dummy to check syntax errors of document sources"
.PHONY: clean
clean:
rm -rf $(BUILDDIR)/*
.PHONY: html
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
.PHONY: livehtml
livehtml:
sphinx-autobuild -z ../homeassistant/ --port 0 -B -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
.PHONY: dirhtml
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
.PHONY: singlehtml
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
.PHONY: pickle
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
.PHONY: json
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
.PHONY: htmlhelp
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
.PHONY: qthelp
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Home-Assistant.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Home-Assistant.qhc"
.PHONY: applehelp
applehelp:
$(SPHINXBUILD) -b applehelp $(ALLSPHINXOPTS) $(BUILDDIR)/applehelp
@echo
@echo "Build finished. The help book is in $(BUILDDIR)/applehelp."
@echo "N.B. You won't be able to view it unless you put it in" \
"~/Library/Documentation/Help or install it in your application" \
"bundle."
.PHONY: devhelp
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/Home-Assistant"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Home-Assistant"
@echo "# devhelp"
.PHONY: epub
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
.PHONY: epub3
epub3:
$(SPHINXBUILD) -b epub3 $(ALLSPHINXOPTS) $(BUILDDIR)/epub3
@echo
@echo "Build finished. The epub3 file is in $(BUILDDIR)/epub3."
.PHONY: latex
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
.PHONY: latexpdf
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: latexpdfja
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
.PHONY: text
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
.PHONY: man
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
.PHONY: texinfo
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
.PHONY: info
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
.PHONY: gettext
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
.PHONY: changes
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
.PHONY: linkcheck
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
.PHONY: doctest
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
.PHONY: coverage
coverage:
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(BUILDDIR)/coverage
@echo "Testing of coverage in the sources finished, look at the " \
"results in $(BUILDDIR)/coverage/python.txt."
.PHONY: xml
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
.PHONY: pseudoxml
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
.PHONY: dummy
dummy:
$(SPHINXBUILD) -b dummy $(ALLSPHINXOPTS) $(BUILDDIR)/dummy
@echo
@echo "Build finished. Dummy builder generates no files."

0
docs/build/.empty vendored
View File

View File

@@ -1,281 +0,0 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
set I18NSPHINXOPTS=%SPHINXOPTS% source
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. epub3 to make an epub3
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. xml to make Docutils-native XML files
echo. pseudoxml to make pseudoxml-XML files for display purposes
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
echo. coverage to run coverage check of the documentation if enabled
echo. dummy to check syntax errors of document sources
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
REM Check if sphinx-build is available and fallback to Python version if any
%SPHINXBUILD% 1>NUL 2>NUL
if errorlevel 9009 goto sphinx_python
goto sphinx_ok
:sphinx_python
set SPHINXBUILD=python -m sphinx.__init__
%SPHINXBUILD% 2> nul
if errorlevel 9009 (
echo.
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
echo.installed, then set the SPHINXBUILD environment variable to point
echo.to the full path of the 'sphinx-build' executable. Alternatively you
echo.may add the Sphinx directory to PATH.
echo.
echo.If you don't have Sphinx installed, grab it from
echo.http://sphinx-doc.org/
exit /b 1
)
:sphinx_ok
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\Home-Assistant.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\Home-Assistant.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "epub3" (
%SPHINXBUILD% -b epub3 %ALLSPHINXOPTS% %BUILDDIR%/epub3
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub3 file is in %BUILDDIR%/epub3.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdf" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "latexpdfja" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
cd %BUILDDIR%/latex
make all-pdf-ja
cd %~dp0
echo.
echo.Build finished; the PDF files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
if "%1" == "coverage" (
%SPHINXBUILD% -b coverage %ALLSPHINXOPTS% %BUILDDIR%/coverage
if errorlevel 1 exit /b 1
echo.
echo.Testing of coverage in the sources finished, look at the ^
results in %BUILDDIR%/coverage/python.txt.
goto end
)
if "%1" == "xml" (
%SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The XML files are in %BUILDDIR%/xml.
goto end
)
if "%1" == "pseudoxml" (
%SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml.
goto end
)
if "%1" == "dummy" (
%SPHINXBUILD% -b dummy %ALLSPHINXOPTS% %BUILDDIR%/dummy
if errorlevel 1 exit /b 1
echo.
echo.Build finished. Dummy builder generates no files.
goto end
)
:end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 KiB

View File

@@ -1,45 +0,0 @@
"""Sphinx extension for ReadTheDocs-style "Edit on GitHub" links on the sidebar.
Loosely based on https://github.com/astropy/astropy/pull/347
"""
import os
import warnings
__licence__ = "BSD (3 clause)"
def get_github_url(app, view, path):
"""Build the GitHub URL."""
return (
f"https://github.com/{app.config.edit_on_github_project}/"
f"{view}/{app.config.edit_on_github_branch}/"
f"{app.config.edit_on_github_src_path}{path}"
)
def html_page_context(app, pagename, templatename, context, doctree):
"""Build the HTML page."""
if templatename != "page.html":
return
if not app.config.edit_on_github_project:
warnings.warn("edit_on_github_project not specified")
return
if not doctree:
warnings.warn("doctree is None")
return
path = os.path.relpath(doctree.get("source"), app.builder.srcdir)
show_url = get_github_url(app, "blob", path)
edit_url = get_github_url(app, "edit", path)
context["show_on_github_url"] = show_url
context["edit_on_github_url"] = edit_url
def setup(app):
"""Set up the app."""
app.add_config_value("edit_on_github_project", "", True)
app.add_config_value("edit_on_github_branch", "master", True)
app.add_config_value("edit_on_github_src_path", "", True) # 'eg' "docs/"
app.connect("html-page-context", html_page_context)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -1,6 +0,0 @@
<ul>
<li><a href="https://home-assistant.io/">Homepage</a></li>
<li><a href="https://community.home-assistant.io">Community Forums</a></li>
<li><a href="https://github.com/home-assistant/core">GitHub</a></li>
<li><a href="https://discord.gg/c5DvZ4e">Discord</a></li>
</ul>

View File

@@ -1,13 +0,0 @@
{%- if show_source and has_source and sourcename %}
<h3>{{ _('This Page') }}</h3>
<ul class="this-page-menu">
{%- if show_on_github_url %}
<li><a href="{{ show_on_github_url }}"
rel="nofollow">{{ _('Show on GitHub') }}</a></li>
{%- endif %}
{%- if edit_on_github_url %}
<li><a href="{{ edit_on_github_url }}"
rel="nofollow">{{ _('Edit on GitHub') }}</a></li>
{%- endif %}
</ul>
{%- endif %}

View File

@@ -1,29 +0,0 @@
:mod:`homeassistant.auth`
=========================
.. automodule:: homeassistant.auth
:members:
homeassistant.auth.auth\_store
------------------------------
.. automodule:: homeassistant.auth.auth_store
:members:
:undoc-members:
:show-inheritance:
homeassistant.auth.const
------------------------
.. automodule:: homeassistant.auth.const
:members:
:undoc-members:
:show-inheritance:
homeassistant.auth.models
-------------------------
.. automodule:: homeassistant.auth.models
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
.. _bootstrap_module:
:mod:`homeassistant.bootstrap`
------------------------------
.. automodule:: homeassistant.bootstrap
:members:

View File

@@ -1,170 +0,0 @@
:mod:`homeassistant.components`
===============================
air\_quality
--------------------------------------------
.. automodule:: homeassistant.components.air_quality
:members:
:undoc-members:
:show-inheritance:
alarm\_control\_panel
--------------------------------------------
.. automodule:: homeassistant.components.alarm_control_panel
:members:
:undoc-members:
:show-inheritance:
binary\_sensor
--------------------------------------------
.. automodule:: homeassistant.components.binary_sensor
:members:
:undoc-members:
:show-inheritance:
camera
---------------------------
.. automodule:: homeassistant.components.camera
:members:
:undoc-members:
:show-inheritance:
calendar
---------------------------
.. automodule:: homeassistant.components.calendar
:members:
:undoc-members:
:show-inheritance:
climate
---------------------------
.. automodule:: homeassistant.components.climate
:members:
:undoc-members:
:show-inheritance:
conversation
---------------------------
.. automodule:: homeassistant.components.conversation
:members:
:undoc-members:
:show-inheritance:
cover
---------------------------
.. automodule:: homeassistant.components.cover
:members:
:undoc-members:
:show-inheritance:
device\_tracker
---------------------------
.. automodule:: homeassistant.components.device_tracker
:members:
:undoc-members:
:show-inheritance:
fan
---------------------------
.. automodule:: homeassistant.components.fan
:members:
:undoc-members:
:show-inheritance:
light
---------------------------
.. automodule:: homeassistant.components.light
:members:
:undoc-members:
:show-inheritance:
lock
---------------------------
.. automodule:: homeassistant.components.lock
:members:
:undoc-members:
:show-inheritance:
media\_player
---------------------------
.. automodule:: homeassistant.components.media_player
:members:
:undoc-members:
:show-inheritance:
notify
---------------------------
.. automodule:: homeassistant.components.notify
:members:
:undoc-members:
:show-inheritance:
remote
---------------------------
.. automodule:: homeassistant.components.remote
:members:
:undoc-members:
:show-inheritance:
switch
---------------------------
.. automodule:: homeassistant.components.switch
:members:
:undoc-members:
:show-inheritance:
sensor
-------------------------------------
.. automodule:: homeassistant.components.sensor
:members:
:undoc-members:
:show-inheritance:
vacuum
-------------------------------------
.. automodule:: homeassistant.components.vacuum
:members:
:undoc-members:
:show-inheritance:
water\_heater
-------------------------------------
.. automodule:: homeassistant.components.water_heater
:members:
:undoc-members:
:show-inheritance:
weather
---------------------------
.. automodule:: homeassistant.components.weather
:members:
:undoc-members:
:show-inheritance:
webhook
---------------------------
.. automodule:: homeassistant.components.webhook
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
.. _config_entries_module:
:mod:`homeassistant.config_entries`
-----------------------------------
.. automodule:: homeassistant.config_entries
:members:

View File

@@ -1,7 +0,0 @@
.. _core_module:
:mod:`homeassistant.core`
-------------------------
.. automodule:: homeassistant.core
:members:

View File

@@ -1,7 +0,0 @@
.. _data_entry_flow_module:
:mod:`homeassistant.data_entry_flow`
-----------------------------
.. automodule:: homeassistant.data_entry_flow
:members:

View File

@@ -1,7 +0,0 @@
.. _exceptions_module:
:mod:`homeassistant.exceptions`
-------------------------------
.. automodule:: homeassistant.exceptions
:members:

View File

@@ -1,335 +0,0 @@
:mod:`homeassistant.helpers`
============================
.. automodule:: homeassistant.helpers
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.aiohttp\_client
-------------------------------------
.. automodule:: homeassistant.helpers.aiohttp_client
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.area\_registry
------------------------------------
.. automodule:: homeassistant.helpers.area_registry
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.check\_config
-----------------------------------
.. automodule:: homeassistant.helpers.check_config
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.collection
--------------------------------
.. automodule:: homeassistant.helpers.collection
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.condition
-------------------------------
.. automodule:: homeassistant.helpers.condition
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.config\_entry\_flow
-----------------------------------------
.. automodule:: homeassistant.helpers.config_entry_flow
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.config\_entry\_oauth2\_flow
-------------------------------------------------
.. automodule:: homeassistant.helpers.config_entry_oauth2_flow
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.config\_validation
----------------------------------------
.. automodule:: homeassistant.helpers.config_validation
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.data\_entry\_flow
---------------------------------------
.. automodule:: homeassistant.helpers.data_entry_flow
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.debounce
------------------------------
.. automodule:: homeassistant.helpers.debounce
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.deprecation
---------------------------------
.. automodule:: homeassistant.helpers.deprecation
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.device\_registry
--------------------------------------
.. automodule:: homeassistant.helpers.device_registry
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.discovery
-------------------------------
.. automodule:: homeassistant.helpers.discovery
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.dispatcher
--------------------------------
.. automodule:: homeassistant.helpers.dispatcher
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.entity
----------------------------
.. automodule:: homeassistant.helpers.entity
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.entity\_component
---------------------------------------
.. automodule:: homeassistant.helpers.entity_component
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.entity\_platform
--------------------------------------
.. automodule:: homeassistant.helpers.entity_platform
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.entity\_registry
--------------------------------------
.. automodule:: homeassistant.helpers.entity_registry
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.entity\_values
------------------------------------
.. automodule:: homeassistant.helpers.entity_values
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.entityfilter
----------------------------------
.. automodule:: homeassistant.helpers.entityfilter
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.event
---------------------------
.. automodule:: homeassistant.helpers.event
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.icon
--------------------------
.. automodule:: homeassistant.helpers.icon
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.integration\_platform
-------------------------------------------
.. automodule:: homeassistant.helpers.integration_platform
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.intent
----------------------------
.. automodule:: homeassistant.helpers.intent
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.json
--------------------------
.. automodule:: homeassistant.helpers.json
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.location
------------------------------
.. automodule:: homeassistant.helpers.location
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.logging
-----------------------------
.. automodule:: homeassistant.helpers.logging
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.network
-----------------------------
.. automodule:: homeassistant.helpers.network
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.restore\_state
------------------------------------
.. automodule:: homeassistant.helpers.restore_state
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.script
----------------------------
.. automodule:: homeassistant.helpers.script
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.service
-----------------------------
.. automodule:: homeassistant.helpers.service
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.signal
-----------------------------
.. automodule:: homeassistant.helpers.signal
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.state
---------------------------
.. automodule:: homeassistant.helpers.state
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.storage
-----------------------------
.. automodule:: homeassistant.helpers.storage
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.sun
-------------------------
.. automodule:: homeassistant.helpers.sun
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.system\_info
----------------------------------
.. automodule:: homeassistant.helpers.system_info
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.temperature
---------------------------------
.. automodule:: homeassistant.helpers.temperature
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.template
------------------------------
.. automodule:: homeassistant.helpers.template
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.translation
---------------------------------
.. automodule:: homeassistant.helpers.translation
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.typing
----------------------------
.. automodule:: homeassistant.helpers.typing
:members:
:undoc-members:
:show-inheritance:
homeassistant.helpers.update\_coordinator
-----------------------------------------
.. automodule:: homeassistant.helpers.update_coordinator
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,7 +0,0 @@
.. _loader_module:
:mod:`homeassistant.loader`
---------------------------
.. automodule:: homeassistant.loader
:members:

View File

@@ -1,151 +0,0 @@
:mod:`homeassistant.util`
=========================
.. automodule:: homeassistant.util
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.yaml
-----------------------
.. automodule:: homeassistant.util.yaml
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.aiohttp
--------------------------
.. automodule:: homeassistant.util.aiohttp
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.async\_
--------------------------
.. automodule:: homeassistant.util.async_
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.color
------------------------
.. automodule:: homeassistant.util.color
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.decorator
----------------------------
.. automodule:: homeassistant.util.decorator
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.distance
---------------------------
.. automodule:: homeassistant.util.distance
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.dt
---------------------
.. automodule:: homeassistant.util.dt
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.json
-----------------------
.. automodule:: homeassistant.util.json
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.location
---------------------------
.. automodule:: homeassistant.util.location
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.logging
--------------------------
.. automodule:: homeassistant.util.logging
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.network
--------------------------
.. automodule:: homeassistant.util.network
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.package
--------------------------
.. automodule:: homeassistant.util.package
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.pil
----------------------
.. automodule:: homeassistant.util.pil
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.pressure
---------------------------
.. automodule:: homeassistant.util.pressure
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.ssl
----------------------
.. automodule:: homeassistant.util.ssl
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.temperature
------------------------------
.. automodule:: homeassistant.util.temperature
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.unit\_system
-------------------------------
.. automodule:: homeassistant.util.unit_system
:members:
:undoc-members:
:show-inheritance:
homeassistant.util.volume
-------------------------
.. automodule:: homeassistant.util.volume
:members:
:undoc-members:
:show-inheritance:

View File

@@ -1,438 +0,0 @@
#!/usr/bin/env python3
"""Home Assistant documentation build configuration file.
This file is execfile()d with the current directory set to its
containing dir.
Note that not all possible configuration values are present in this
autogenerated file.
All configuration values have a default; values that are commented out
serve to show the default.
If extensions (or modules to document with autodoc) are in another directory,
add these directories to sys.path here. If the directory is relative to the
documentation root, use os.path.abspath to make it absolute, like shown here.
"""
import inspect
import os
import sys
from homeassistant.const import __short_version__, __version__
PROJECT_NAME = "Home Assistant"
PROJECT_PACKAGE_NAME = "homeassistant"
PROJECT_AUTHOR = "The Home Assistant Authors"
PROJECT_COPYRIGHT = PROJECT_AUTHOR
PROJECT_LONG_DESCRIPTION = (
"Home Assistant is an open-source "
"home automation platform running on Python 3. "
"Track and control all devices at home and "
"automate control. "
"Installation in less than a minute."
)
PROJECT_GITHUB_USERNAME = "home-assistant"
PROJECT_GITHUB_REPOSITORY = "home-assistant"
GITHUB_PATH = f"{PROJECT_GITHUB_USERNAME}/{PROJECT_GITHUB_REPOSITORY}"
GITHUB_URL = f"https://github.com/{GITHUB_PATH}"
sys.path.insert(0, os.path.abspath("_ext"))
sys.path.insert(0, os.path.abspath("../homeassistant"))
# -- General configuration ------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#
# needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
"sphinx.ext.autodoc",
"sphinx.ext.linkcode",
"sphinx_autodoc_annotation",
"edit_on_github",
]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
# The suffix(es) of source filenames.
# You can specify multiple suffix as a list of string:
#
# source_suffix = ['.rst', '.md']
source_suffix = ".rst"
# The encoding of source files.
#
# source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = "index"
# General information about the project.
project = PROJECT_NAME
copyright = PROJECT_COPYRIGHT
author = PROJECT_AUTHOR
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = __short_version__
# The full version, including alpha/beta/rc tags.
release = __version__
code_branch = "dev" if "dev" in __version__ else "master"
# Edit on Github config
edit_on_github_project = GITHUB_PATH
edit_on_github_branch = code_branch
edit_on_github_src_path = "docs/source/"
def linkcode_resolve(domain, info):
"""Determine the URL corresponding to Python object."""
if domain != "py":
return None
modname = info["module"]
fullname = info["fullname"]
submod = sys.modules.get(modname)
if submod is None:
return None
obj = submod
for part in fullname.split("."):
try:
obj = getattr(obj, part)
except Exception: # pylint: disable=broad-except
return None
try:
fn = inspect.getsourcefile(obj)
except Exception: # pylint: disable=broad-except
fn = None
if not fn:
return None
try:
source, lineno = inspect.findsource(obj)
except Exception: # pylint: disable=broad-except
lineno = None
if lineno:
linespec = "#L%d" % (lineno + 1)
else:
linespec = ""
index = fn.find("/homeassistant/")
if index == -1:
index = 0
fn = fn[index:]
return f"{GITHUB_URL}/blob/{code_branch}/{fn}{linespec}"
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#
# This is also used if you do content translation via gettext catalogs.
# Usually you set "language" from the command line for these cases.
language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#
# today = ''
#
# Else, today_fmt is used as the format for a strftime call.
#
# today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = []
# The reST default role (used for this markup: `text`) to use for all
# documents.
#
# default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#
# add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#
# add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#
# show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = "sphinx"
# A list of ignored prefixes for module index sorting.
# modindex_common_prefix = []
# If true, keep warnings as "system message" paragraphs in the built documents.
# keep_warnings = False
# If true, `todo` and `todoList` produce output, else they produce nothing.
todo_include_todos = False
# -- Options for HTML output ----------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
html_theme = "alabaster"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#
html_theme_options = {
"logo": "logo.png",
"logo_name": PROJECT_NAME,
"description": PROJECT_LONG_DESCRIPTION,
"github_user": PROJECT_GITHUB_USERNAME,
"github_repo": PROJECT_GITHUB_REPOSITORY,
"github_type": "star",
"github_banner": True,
"touch_icon": "logo-apple.png",
# 'fixed_sidebar': True, # Re-enable when we have more content
}
# Add any paths that contain custom themes here, relative to this directory.
# html_theme_path = []
# The name for this set of Sphinx documents.
# "<project> v<release> documentation" by default.
#
# html_title = 'Home-Assistant v0.27.0'
# A shorter title for the navigation bar. Default is the same as html_title.
#
# html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#
# html_logo = '_static/logo.png'
# The name of an image file (relative to this directory) to use as a favicon of
# the docs.
# This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#
html_favicon = "_static/favicon.ico"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
# Add any extra paths that contain custom files (such as robots.txt or
# .htaccess) here, relative to this directory. These files are copied
# directly to the root of the documentation.
#
# html_extra_path = []
# If not None, a 'Last updated on:' timestamp is inserted at every page
# bottom, using the given strftime format.
# The empty string is equivalent to '%b %d, %Y'.
#
html_last_updated_fmt = "%b %d, %Y"
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#
html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#
html_sidebars = {
"**": [
"about.html",
"links.html",
"searchbox.html",
"sourcelink.html",
"navigation.html",
"relations.html",
]
}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#
# html_additional_pages = {}
# If false, no module index is generated.
#
# html_domain_indices = True
# If false, no index is generated.
#
# html_use_index = True
# If true, the index is split into individual pages for each letter.
#
# html_split_index = False
# If true, links to the reST sources are added to the pages.
#
# html_show_sourcelink = True
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#
# html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#
# html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#
# html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
# html_file_suffix = None
# Language to be used for generating the HTML full-text search index.
# Sphinx supports the following languages:
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'h', 'it', 'ja'
# 'nl', 'no', 'pt', 'ro', 'r', 'sv', 'tr', 'zh'
#
# html_search_language = 'en'
# A dictionary with options for the search language support, empty by default.
# 'ja' uses this config value.
# 'zh' user can custom change `jieba` dictionary path.
#
# html_search_options = {'type': 'default'}
# The name of a javascript file (relative to the configuration directory) that
# implements a search results scorer. If empty, the default will be used.
#
# html_search_scorer = 'scorer.js'
# Output file base name for HTML help builder.
htmlhelp_basename = "Home-Assistantdoc"
# -- Options for LaTeX output ---------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#
# 'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#
# 'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#
# 'preamble': '',
# Latex figure (float) alignment
#
# 'figure_align': 'htbp',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
(
master_doc,
"home-assistant.tex",
"Home Assistant Documentation",
"Home Assistant Team",
"manual",
)
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#
# latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#
# latex_use_parts = False
# If true, show page references after internal links.
#
# latex_show_pagerefs = False
# If true, show URL addresses after external links.
#
# latex_show_urls = False
# Documents to append as an appendix to all manuals.
#
# latex_appendices = []
# It false, will not define \strong, \code, itleref, \crossref ... but only
# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added
# packages.
#
# latex_keep_old_macro_names = True
# If false, no module index is generated.
#
# latex_domain_indices = True
# -- Options for manual page output ---------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
(master_doc, "home-assistant", "Home Assistant Documentation", [author], 1)
]
# If true, show URL addresses after external links.
#
# man_show_urls = False
# -- Options for Texinfo output -------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
(
master_doc,
"Home-Assistant",
"Home Assistant Documentation",
author,
"Home Assistant",
"Open-source home automation platform.",
"Miscellaneous",
)
]
# Documents to append as an appendix to all manuals.
#
# texinfo_appendices = []
# If false, no module index is generated.
#
# texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#
# texinfo_show_urls = 'footnote'
# If true, do not generate a @detailmenu in the "Top" node's menu.
#
# texinfo_no_detailmenu = False

View File

@@ -1,22 +0,0 @@
================================
Home Assistant API Documentation
================================
Public API documentation for `Home Assistant developers`_.
Contents:
.. toctree::
:maxdepth: 2
:glob:
api/*
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
.. _Home Assistant developers: https://developers.home-assistant.io/

View File

@@ -93,7 +93,9 @@ def get_arguments() -> argparse.Namespace:
help="Directory that contains the Home Assistant configuration",
)
parser.add_argument(
"--safe-mode", action="store_true", help="Start Home Assistant in safe mode"
"--recovery-mode",
action="store_true",
help="Start Home Assistant in recovery mode",
)
parser.add_argument(
"--debug", action="store_true", help="Start Home Assistant in debug mode"
@@ -183,7 +185,9 @@ def main() -> int:
ensure_config_path(config_dir)
# pylint: disable-next=import-outside-toplevel
from . import runner
from . import config, runner
safe_mode = config.safe_mode_enabled(config_dir)
runtime_conf = runner.RuntimeConfig(
config_dir=config_dir,
@@ -193,9 +197,10 @@ def main() -> int:
log_no_color=args.log_no_color,
skip_pip=args.skip_pip,
skip_pip_packages=args.skip_pip_packages,
safe_mode=args.safe_mode,
recovery_mode=args.recovery_mode,
debug=args.debug,
open_ui=args.open_ui,
safe_mode=safe_mode,
)
fault_file_name = os.path.join(config_dir, FAULT_LOG_FILENAME)

View File

@@ -5,6 +5,7 @@ import asyncio
from collections import OrderedDict
from collections.abc import Mapping
from datetime import timedelta
import time
from typing import Any, cast
import jwt
@@ -12,7 +13,6 @@ import jwt
from homeassistant import data_entry_flow
from homeassistant.core import CALLBACK_TYPE, HomeAssistant, callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.util import dt as dt_util
from . import auth_store, jwt_wrapper, models
from .const import ACCESS_TOKEN_EXPIRATION, GROUP_ID_ADMIN
@@ -505,12 +505,13 @@ class AuthManager:
self._store.async_log_refresh_token_usage(refresh_token, remote_ip)
now = dt_util.utcnow()
now = int(time.time())
expire_seconds = int(refresh_token.access_token_expiration.total_seconds())
return jwt.encode(
{
"iss": refresh_token.id,
"iat": now,
"exp": now + refresh_token.access_token_expiration,
"exp": now + expire_seconds,
},
refresh_token.jwt_key,
algorithm="HS256",

View File

@@ -50,7 +50,7 @@ class MultiFactorAuthModule:
Default is same as type
"""
return self.config.get(CONF_ID, self.type)
return self.config.get(CONF_ID, self.type) # type: ignore[no-any-return]
@property
def type(self) -> str:
@@ -60,7 +60,7 @@ class MultiFactorAuthModule:
@property
def name(self) -> str:
"""Return the name of the auth module."""
return self.config.get(CONF_NAME, self.DEFAULT_TITLE)
return self.config.get(CONF_NAME, self.DEFAULT_TITLE) # type: ignore[no-any-return]
# Implement by extending class

View File

@@ -1,32 +1,25 @@
"""Permission constants for the websocket API.
Separate file to avoid circular imports.
"""
"""Permission for events."""
from __future__ import annotations
from typing import Final
from homeassistant.components.frontend import EVENT_PANELS_UPDATED
from homeassistant.components.lovelace import EVENT_LOVELACE_UPDATED
from homeassistant.components.persistent_notification import (
EVENT_PERSISTENT_NOTIFICATIONS_UPDATED,
)
from homeassistant.components.recorder import (
EVENT_RECORDER_5MIN_STATISTICS_GENERATED,
EVENT_RECORDER_HOURLY_STATISTICS_GENERATED,
)
from homeassistant.components.shopping_list import EVENT_SHOPPING_LIST_UPDATED
from homeassistant.const import (
EVENT_COMPONENT_LOADED,
EVENT_CORE_CONFIG_UPDATE,
EVENT_LOVELACE_UPDATED,
EVENT_PANELS_UPDATED,
EVENT_RECORDER_5MIN_STATISTICS_GENERATED,
EVENT_RECORDER_HOURLY_STATISTICS_GENERATED,
EVENT_SERVICE_REGISTERED,
EVENT_SERVICE_REMOVED,
EVENT_SHOPPING_LIST_UPDATED,
EVENT_STATE_CHANGED,
EVENT_THEMES_UPDATED,
)
from homeassistant.helpers.area_registry import EVENT_AREA_REGISTRY_UPDATED
from homeassistant.helpers.device_registry import EVENT_DEVICE_REGISTRY_UPDATED
from homeassistant.helpers.entity_registry import EVENT_ENTITY_REGISTRY_UPDATED
from homeassistant.helpers.issue_registry import EVENT_REPAIRS_ISSUE_REGISTRY_UPDATED
# These are events that do not contain any sensitive data
# Except for state_changed, which is handled accordingly.
@@ -36,9 +29,9 @@ SUBSCRIBE_ALLOWLIST: Final[set[str]] = {
EVENT_CORE_CONFIG_UPDATE,
EVENT_DEVICE_REGISTRY_UPDATED,
EVENT_ENTITY_REGISTRY_UPDATED,
EVENT_REPAIRS_ISSUE_REGISTRY_UPDATED,
EVENT_LOVELACE_UPDATED,
EVENT_PANELS_UPDATED,
EVENT_PERSISTENT_NOTIFICATIONS_UPDATED,
EVENT_RECORDER_5MIN_STATISTICS_GENERATED,
EVENT_RECORDER_HOURLY_STATISTICS_GENERATED,
EVENT_SERVICE_REGISTERED,

View File

@@ -109,4 +109,4 @@ def test_all(policy: CategoryType, key: str) -> bool:
if not isinstance(all_policy, dict):
return bool(all_policy)
return all_policy.get(key, False)
return all_policy.get(key, False) # type: ignore[no-any-return]

View File

@@ -67,7 +67,7 @@ class AuthProvider:
@property
def name(self) -> str:
"""Return the name of the auth provider."""
return self.config.get(CONF_NAME, self.DEFAULT_TITLE)
return self.config.get(CONF_NAME, self.DEFAULT_TITLE) # type: ignore[no-any-return]
@property
def support_mfa(self) -> bool:

View File

@@ -0,0 +1,279 @@
A. HISTORY OF THE SOFTWARE
==========================
Python was created in the early 1990s by Guido van Rossum at Stichting
Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands
as a successor of a language called ABC. Guido remains Python's
principal author, although it includes many contributions from others.
In 1995, Guido continued his work on Python at the Corporation for
National Research Initiatives (CNRI, see https://www.cnri.reston.va.us)
in Reston, Virginia where he released several versions of the
software.
In May 2000, Guido and the Python core development team moved to
BeOpen.com to form the BeOpen PythonLabs team. In October of the same
year, the PythonLabs team moved to Digital Creations, which became
Zope Corporation. In 2001, the Python Software Foundation (PSF, see
https://www.python.org/psf/) was formed, a non-profit organization
created specifically to own Python-related Intellectual Property.
Zope Corporation was a sponsoring member of the PSF.
All Python releases are Open Source (see https://opensource.org for
the Open Source Definition). Historically, most, but not all, Python
releases have also been GPL-compatible; the table below summarizes
the various releases.
Release Derived Year Owner GPL-
from compatible? (1)
0.9.0 thru 1.2 1991-1995 CWI yes
1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
1.6 1.5.2 2000 CNRI no
2.0 1.6 2000 BeOpen.com no
1.6.1 1.6 2001 CNRI yes (2)
2.1 2.0+1.6.1 2001 PSF no
2.0.1 2.0+1.6.1 2001 PSF yes
2.1.1 2.1+2.0.1 2001 PSF yes
2.1.2 2.1.1 2002 PSF yes
2.1.3 2.1.2 2002 PSF yes
2.2 and above 2.1.1 2001-now PSF yes
Footnotes:
(1) GPL-compatible doesn't mean that we're distributing Python under
the GPL. All Python licenses, unlike the GPL, let you distribute
a modified version without making your changes open source. The
GPL-compatible licenses make it possible to combine Python with
other software that is released under the GPL; the others don't.
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
because its license has a choice of law clause. According to
CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
is "not incompatible" with the GPL.
Thanks to the many outside volunteers who have worked under Guido's
direction to make these releases possible.
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
===============================================================
Python software and documentation are licensed under the
Python Software Foundation License Version 2.
Starting with Python 3.8.6, examples, recipes, and other code in
the documentation are dual licensed under the PSF License Version 2
and the Zero-Clause BSD license.
Some software incorporated into Python is under different licenses.
The licenses are listed with code falling under that license.
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation;
All Rights Reserved" are retained in Python alone or in any derivative version
prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
-------------------------------------------
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
Individual or Organization ("Licensee") accessing and otherwise using
this software in source or binary form and its associated
documentation ("the Software").
2. Subject to the terms and conditions of this BeOpen Python License
Agreement, BeOpen hereby grants Licensee a non-exclusive,
royalty-free, world-wide license to reproduce, analyze, test, perform
and/or display publicly, prepare derivative works, distribute, and
otherwise use the Software alone or in any derivative version,
provided, however, that the BeOpen Python License is retained in the
Software, alone or in any derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an "AS IS"
basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
5. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
6. This License Agreement shall be governed by and interpreted in all
respects by the law of the State of California, excluding conflict of
law provisions. Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture
between BeOpen and Licensee. This License Agreement does not grant
permission to use BeOpen trademarks or trade names in a trademark
sense to endorse or promote products or services of Licensee, or any
third party. As an exception, the "BeOpen Python" logos available at
http://www.pythonlabs.com/logos.html may be used according to the
permissions granted on that web page.
7. By copying, installing or otherwise using the software, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
---------------------------------------
1. This LICENSE AGREEMENT is between the Corporation for National
Research Initiatives, having an office at 1895 Preston White Drive,
Reston, VA 20191 ("CNRI"), and the Individual or Organization
("Licensee") accessing and otherwise using Python 1.6.1 software in
source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI
hereby grants Licensee a nonexclusive, royalty-free, world-wide
license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use Python 1.6.1
alone or in any derivative version, provided, however, that CNRI's
License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
1995-2001 Corporation for National Research Initiatives; All Rights
Reserved" are retained in Python 1.6.1 alone or in any derivative
version prepared by Licensee. Alternately, in lieu of CNRI's License
Agreement, Licensee may substitute the following text (omitting the
quotes): "Python 1.6.1 is made available subject to the terms and
conditions in CNRI's License Agreement. This Agreement together with
Python 1.6.1 may be located on the internet using the following
unique, persistent identifier (known as a handle): 1895.22/1013. This
Agreement may also be obtained from a proxy server on the internet
using the following URL: http://hdl.handle.net/1895.22/1013".
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python 1.6.1 or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python 1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. This License Agreement shall be governed by the federal
intellectual property law of the United States, including without
limitation the federal copyright law, and, to the extent such
U.S. federal law does not apply, by the law of the Commonwealth of
Virginia, excluding Virginia's conflict of law provisions.
Notwithstanding the foregoing, with regard to derivative works based
on Python 1.6.1 that incorporate non-separable material that was
previously distributed under the GNU General Public License (GPL), the
law of the Commonwealth of Virginia shall govern this License
Agreement only as to issues arising under or with respect to
Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
License Agreement shall be deemed to create any relationship of
agency, partnership, or joint venture between CNRI and Licensee. This
License Agreement does not grant permission to use CNRI trademarks or
trade name in a trademark sense to endorse or promote products or
services of Licensee, or any third party.
8. By clicking on the "ACCEPT" button where indicated, or by copying,
installing or otherwise using Python 1.6.1, Licensee agrees to be
bound by the terms and conditions of this License Agreement.
ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
--------------------------------------------------
Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
The Netherlands. All rights reserved.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
----------------------------------------------------------------------
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View File

@@ -0,0 +1,5 @@
This package contains backports of Python functionality from future Python
versions.
Some of the backports have been copied directly from the CPython project,
and are subject to license agreement as detailed in LICENSE.Python.

View File

@@ -1,4 +1,14 @@
"""Functools backports from standard lib."""
# This file contains parts of Python's module wrapper
# for the _functools C module
# to allow utilities written in Python to be added
# to the functools module.
# Written by Nick Coghlan <ncoghlan at gmail.com>,
# Raymond Hettinger <python at rcn.com>,
# and Łukasz Langa <lukasz at langa.pl>.
# Copyright © 2001-2023 Python Software Foundation; All Rights Reserved
from __future__ import annotations
from collections.abc import Callable
@@ -68,4 +78,4 @@ class cached_property(Generic[_T]):
raise TypeError(msg) from None
return val
__class_getitem__ = classmethod(GenericAlias)
__class_getitem__ = classmethod(GenericAlias) # type: ignore[var-annotated]

View File

@@ -120,6 +120,7 @@ async def async_setup_hass(
runtime_config.log_no_color,
)
hass.config.safe_mode = runtime_config.safe_mode
hass.config.skip_pip = runtime_config.skip_pip
hass.config.skip_pip_packages = runtime_config.skip_pip_packages
if runtime_config.skip_pip or runtime_config.skip_pip_packages:
@@ -137,14 +138,14 @@ async def async_setup_hass(
config_dict = None
basic_setup_success = False
if not (safe_mode := runtime_config.safe_mode):
if not (recovery_mode := runtime_config.recovery_mode):
await hass.async_add_executor_job(conf_util.process_ha_config_upgrade, hass)
try:
config_dict = await conf_util.async_hass_config_yaml(hass)
except HomeAssistantError as err:
_LOGGER.error(
"Failed to parse configuration.yaml: %s. Activating safe mode",
"Failed to parse configuration.yaml: %s. Activating recovery mode",
err,
)
else:
@@ -156,24 +157,24 @@ async def async_setup_hass(
)
if config_dict is None:
safe_mode = True
recovery_mode = True
elif not basic_setup_success:
_LOGGER.warning("Unable to set up core integrations. Activating safe mode")
safe_mode = True
_LOGGER.warning("Unable to set up core integrations. Activating recovery mode")
recovery_mode = True
elif (
"frontend" in hass.data.get(DATA_SETUP, {})
and "frontend" not in hass.config.components
):
_LOGGER.warning("Detected that frontend did not load. Activating safe mode")
_LOGGER.warning("Detected that frontend did not load. Activating recovery mode")
# Ask integrations to shut down. It's messy but we can't
# do a clean stop without knowing what is broken
with contextlib.suppress(asyncio.TimeoutError):
async with hass.timeout.async_timeout(10):
await hass.async_stop()
safe_mode = True
recovery_mode = True
old_config = hass.config
old_logging = hass.data.get(DATA_LOGGING)
@@ -187,16 +188,18 @@ async def async_setup_hass(
# Setup loader cache after the config dir has been set
loader.async_setup(hass)
if safe_mode:
_LOGGER.info("Starting in safe mode")
hass.config.safe_mode = True
if recovery_mode:
_LOGGER.info("Starting in recovery mode")
hass.config.recovery_mode = True
http_conf = (await http.async_get_last_config(hass)) or {}
await async_from_config_dict(
{"safe_mode": {}, "http": http_conf},
{"recovery_mode": {}, "http": http_conf},
hass,
)
elif hass.config.safe_mode:
_LOGGER.info("Starting in safe mode")
if runtime_config.open_ui:
hass.add_job(open_hass_ui, hass)
@@ -471,7 +474,7 @@ def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
domains = {key.partition(" ")[0] for key in config if key != core.DOMAIN}
# Add config entry domains
if not hass.config.safe_mode:
if not hass.config.recovery_mode:
domains.update(hass.config_entries.async_domains())
# Make sure the Hass.io component is loaded

View File

@@ -11,6 +11,7 @@
"google_maps",
"google_pubsub",
"google_sheets",
"google_tasks",
"google_translate",
"google_travel_time",
"google_wifi",

View File

@@ -1,6 +1,7 @@
"""Support for the Abode Security System."""
from __future__ import annotations
from dataclasses import dataclass, field
from functools import partial
from jaraco.abode.automation import Automation as AbodeAuto
@@ -25,7 +26,7 @@ from homeassistant.const import (
EVENT_HOMEASSISTANT_STOP,
Platform,
)
from homeassistant.core import Event, HomeAssistant, ServiceCall
from homeassistant.core import CALLBACK_TYPE, Event, HomeAssistant, ServiceCall
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
from homeassistant.helpers import config_validation as cv, entity
from homeassistant.helpers.device_registry import DeviceInfo
@@ -71,15 +72,14 @@ PLATFORMS = [
]
@dataclass
class AbodeSystem:
"""Abode System class."""
def __init__(self, abode: Abode, polling: bool) -> None:
"""Initialize the system."""
self.abode = abode
self.polling = polling
self.entity_ids: set[str | None] = set()
self.logout_listener = None
abode: Abode
polling: bool
entity_ids: set[str | None] = field(default_factory=set)
logout_listener: CALLBACK_TYPE | None = None
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:

View File

@@ -8,5 +8,5 @@
"iot_class": "cloud_polling",
"loggers": ["accuweather"],
"quality_scale": "platinum",
"requirements": ["accuweather==1.0.0"]
"requirements": ["accuweather==2.0.0"]
}

View File

@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/adax",
"iot_class": "local_polling",
"loggers": ["adax", "adax_local"],
"requirements": ["adax==0.2.0", "Adax-local==0.1.5"]
"requirements": ["adax==0.3.0", "Adax-local==0.1.5"]
}

View File

@@ -7,5 +7,5 @@
"integration_type": "service",
"iot_class": "local_polling",
"loggers": ["adguardhome"],
"requirements": ["adguardhome==0.6.1"]
"requirements": ["adguardhome==0.6.2"]
}

View File

@@ -127,7 +127,7 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
"""Return the current target temperature."""
# If the system is in MyZone mode, and a zone is set, return that temperature instead.
if (
self._ac["myZone"] > 0
self._myzone
and not self._ac.get(ADVANTAGE_AIR_MYAUTO_ENABLED)
and not self._ac.get(ADVANTAGE_AIR_MYTEMP_ENABLED)
):

View File

@@ -63,7 +63,7 @@ class AdvantageAirAcEntity(AdvantageAirEntity):
return self.coordinator.data["aircons"][self.ac_key]["info"]
@property
def _myzone(self) -> dict[str, Any]:
def _myzone(self) -> dict[str, Any] | None:
return self.coordinator.data["aircons"][self.ac_key]["zones"].get(
f"z{self._ac['myZone']:02}"
)

View File

@@ -1,5 +1,6 @@
"""The AEMET OpenData component."""
import asyncio
import logging
from aemet_opendata.exceptions import TownNotFound
@@ -8,6 +9,7 @@ from aemet_opendata.interface import AEMET, ConnectionOptions
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE, CONF_NAME
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import aiohttp_client
from .const import (
@@ -37,6 +39,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
except TownNotFound as err:
_LOGGER.error(err)
return False
except asyncio.TimeoutError as err:
raise ConfigEntryNotReady("AEMET OpenData API timed out") from err
weather_coordinator = WeatherUpdateCoordinator(hass, aemet)
await weather_coordinator.async_config_entry_first_refresh()

View File

@@ -9,8 +9,9 @@ ATTR_API_CAT_DESCRIPTION = "Name"
ATTR_API_O3 = "O3"
ATTR_API_PM25 = "PM2.5"
ATTR_API_POLLUTANT = "Pollutant"
ATTR_API_REPORT_DATE = "HourObserved"
ATTR_API_REPORT_HOUR = "DateObserved"
ATTR_API_REPORT_DATE = "DateObserved"
ATTR_API_REPORT_HOUR = "HourObserved"
ATTR_API_REPORT_TZ = "LocalTimeZone"
ATTR_API_STATE = "StateCode"
ATTR_API_STATION = "ReportingArea"
ATTR_API_STATION_LATITUDE = "Latitude"

View File

@@ -20,6 +20,7 @@ from .const import (
ATTR_API_POLLUTANT,
ATTR_API_REPORT_DATE,
ATTR_API_REPORT_HOUR,
ATTR_API_REPORT_TZ,
ATTR_API_STATE,
ATTR_API_STATION,
ATTR_API_STATION_LATITUDE,
@@ -83,6 +84,7 @@ class AirNowDataUpdateCoordinator(DataUpdateCoordinator):
# Copy Report Details
data[ATTR_API_REPORT_DATE] = obv[ATTR_API_REPORT_DATE]
data[ATTR_API_REPORT_HOUR] = obv[ATTR_API_REPORT_HOUR]
data[ATTR_API_REPORT_TZ] = obv[ATTR_API_REPORT_TZ]
# Copy Station Details
data[ATTR_API_STATE] = obv[ATTR_API_STATE]

View File

@@ -3,6 +3,7 @@ from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from datetime import datetime
from typing import Any
from homeassistant.components.sensor import (
@@ -13,6 +14,7 @@ from homeassistant.components.sensor import (
)
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
ATTR_TIME,
CONCENTRATION_MICROGRAMS_PER_CUBIC_METER,
CONCENTRATION_PARTS_PER_MILLION,
)
@@ -21,6 +23,7 @@ from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import StateType
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from homeassistant.util.dt import get_time_zone
from . import AirNowDataUpdateCoordinator
from .const import (
@@ -29,6 +32,9 @@ from .const import (
ATTR_API_AQI_LEVEL,
ATTR_API_O3,
ATTR_API_PM25,
ATTR_API_REPORT_DATE,
ATTR_API_REPORT_HOUR,
ATTR_API_REPORT_TZ,
ATTR_API_STATION,
ATTR_API_STATION_LATITUDE,
ATTR_API_STATION_LONGITUDE,
@@ -78,6 +84,12 @@ SENSOR_TYPES: tuple[AirNowEntityDescription, ...] = (
extra_state_attributes_fn=lambda data: {
ATTR_DESCR: data[ATTR_API_AQI_DESCRIPTION],
ATTR_LEVEL: data[ATTR_API_AQI_LEVEL],
ATTR_TIME: datetime.strptime(
f"{data[ATTR_API_REPORT_DATE]} {data[ATTR_API_REPORT_HOUR]}",
"%Y-%m-%d %H",
)
.replace(tzinfo=get_time_zone(data[ATTR_API_REPORT_TZ]))
.isoformat(),
},
),
AirNowEntityDescription(

View File

@@ -226,6 +226,14 @@ class AirthingsSensor(
model=airthings_device.model,
)
@property
def available(self) -> bool:
"""Check if device and sensor is available in data."""
return (
super().available
and self.entity_description.key in self.coordinator.data.sensors
)
@property
def native_value(self) -> StateType:
"""Return the value reported by the sensor."""

View File

@@ -5,7 +5,7 @@
"user": {
"description": "[%key:component::bluetooth::config::step::user::description%]",
"data": {
"address": "[%key:component::bluetooth::config::step::user::data::address%]"
"address": "[%key:common::config_flow::data::device%]"
}
},
"bluetooth_confirm": {

View File

@@ -421,7 +421,6 @@ class AirVisualEntity(CoordinatorEntity):
self._entry = entry
self.entity_description = description
# pylint: disable-next=hass-missing-super-call
async def async_added_to_hass(self) -> None:
"""Register callbacks."""
await super().async_added_to_hass()

View File

@@ -217,8 +217,8 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
if ATTR_TEMPERATURE in kwargs:
params[API_SET_POINT] = kwargs[ATTR_TEMPERATURE]
if ATTR_TARGET_TEMP_LOW in kwargs and ATTR_TARGET_TEMP_HIGH in kwargs:
params[API_COOL_SET_POINT] = kwargs[ATTR_TARGET_TEMP_LOW]
params[API_HEAT_SET_POINT] = kwargs[ATTR_TARGET_TEMP_HIGH]
params[API_COOL_SET_POINT] = kwargs[ATTR_TARGET_TEMP_HIGH]
params[API_HEAT_SET_POINT] = kwargs[ATTR_TARGET_TEMP_LOW]
await self._async_update_hvac_params(params)
@callback
@@ -248,8 +248,8 @@ class AirzoneClimate(AirzoneZoneEntity, ClimateEntity):
self._attr_fan_mode = self._speeds.get(self.get_airzone_value(AZD_SPEED))
if self.supported_features & ClimateEntityFeature.TARGET_TEMPERATURE_RANGE:
self._attr_target_temperature_high = self.get_airzone_value(
AZD_HEAT_TEMP_SET
)
self._attr_target_temperature_low = self.get_airzone_value(
AZD_COOL_TEMP_SET
)
self._attr_target_temperature_low = self.get_airzone_value(
AZD_HEAT_TEMP_SET
)

View File

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

View File

@@ -7,15 +7,21 @@ from aioairzone_cloud.common import OperationAction, OperationMode, TemperatureU
from aioairzone_cloud.const import (
API_MODE,
API_OPTS,
API_PARAMS,
API_POWER,
API_SETPOINT,
API_UNITS,
API_VALUE,
AZD_ACTION,
AZD_AIDOOS,
AZD_GROUPS,
AZD_HUMIDITY,
AZD_INSTALLATIONS,
AZD_MASTER,
AZD_MODE,
AZD_MODES,
AZD_NUM_DEVICES,
AZD_NUM_GROUPS,
AZD_POWER,
AZD_TEMP,
AZD_TEMP_SET,
@@ -39,7 +45,13 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
from .coordinator import AirzoneUpdateCoordinator
from .entity import AirzoneEntity, AirzoneZoneEntity
from .entity import (
AirzoneAidooEntity,
AirzoneEntity,
AirzoneGroupEntity,
AirzoneInstallationEntity,
AirzoneZoneEntity,
)
HVAC_ACTION_LIB_TO_HASS: Final[dict[OperationAction, HVACAction]] = {
OperationAction.COOLING: HVACAction.COOLING,
@@ -82,6 +94,38 @@ async def async_setup_entry(
entities: list[AirzoneClimate] = []
# Aidoos
for aidoo_id, aidoo_data in coordinator.data.get(AZD_AIDOOS, {}).items():
entities.append(
AirzoneAidooClimate(
coordinator,
aidoo_id,
aidoo_data,
)
)
# Groups
for group_id, group_data in coordinator.data.get(AZD_GROUPS, {}).items():
if group_data[AZD_NUM_DEVICES] > 1:
entities.append(
AirzoneGroupClimate(
coordinator,
group_id,
group_data,
)
)
# Installations
for inst_id, inst_data in coordinator.data.get(AZD_INSTALLATIONS, {}).items():
if inst_data[AZD_NUM_GROUPS] > 1:
entities.append(
AirzoneInstallationClimate(
coordinator,
inst_id,
inst_data,
)
)
# Zones
for zone_id, zone_data in coordinator.data.get(AZD_ZONES, {}).items():
entities.append(
@@ -98,9 +142,39 @@ async def async_setup_entry(
class AirzoneClimate(AirzoneEntity, ClimateEntity):
"""Define an Airzone Cloud climate."""
_attr_has_entity_name = True
_attr_name = None
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
_attr_temperature_unit = UnitOfTemperature.CELSIUS
@callback
def _handle_coordinator_update(self) -> None:
"""Update attributes when the coordinator updates."""
self._async_update_attrs()
super()._handle_coordinator_update()
@callback
def _async_update_attrs(self) -> None:
"""Update climate attributes."""
self._attr_current_temperature = self.get_airzone_value(AZD_TEMP)
self._attr_current_humidity = self.get_airzone_value(AZD_HUMIDITY)
self._attr_hvac_action = HVAC_ACTION_LIB_TO_HASS[
self.get_airzone_value(AZD_ACTION)
]
if self.get_airzone_value(AZD_POWER):
self._attr_hvac_mode = HVAC_MODE_LIB_TO_HASS[
self.get_airzone_value(AZD_MODE)
]
else:
self._attr_hvac_mode = HVACMode.OFF
self._attr_max_temp = self.get_airzone_value(AZD_TEMP_SET_MAX)
self._attr_min_temp = self.get_airzone_value(AZD_TEMP_SET_MIN)
self._attr_target_temperature = self.get_airzone_value(AZD_TEMP_SET)
class AirzoneDeviceClimate(AirzoneClimate):
"""Define an Airzone Cloud Device base class."""
async def async_turn_on(self) -> None:
"""Turn the entity on."""
params = {
@@ -131,36 +205,143 @@ class AirzoneClimate(AirzoneEntity, ClimateEntity):
}
await self._async_update_params(params)
@callback
def _handle_coordinator_update(self) -> None:
"""Update attributes when the coordinator updates."""
self._async_update_attrs()
super()._handle_coordinator_update()
@callback
def _async_update_attrs(self) -> None:
"""Update climate attributes."""
self._attr_current_temperature = self.get_airzone_value(AZD_TEMP)
self._attr_current_humidity = self.get_airzone_value(AZD_HUMIDITY)
self._attr_hvac_action = HVAC_ACTION_LIB_TO_HASS[
self.get_airzone_value(AZD_ACTION)
]
if self.get_airzone_value(AZD_POWER):
self._attr_hvac_mode = HVAC_MODE_LIB_TO_HASS[
self.get_airzone_value(AZD_MODE)
]
class AirzoneDeviceGroupClimate(AirzoneClimate):
"""Define an Airzone Cloud DeviceGroup base class."""
async def async_turn_on(self) -> None:
"""Turn the entity on."""
params = {
API_PARAMS: {
API_POWER: True,
},
}
await self._async_update_params(params)
async def async_turn_off(self) -> None:
"""Turn the entity off."""
params = {
API_PARAMS: {
API_POWER: False,
},
}
await self._async_update_params(params)
async def async_set_temperature(self, **kwargs: Any) -> None:
"""Set new target temperature."""
params: dict[str, Any] = {}
if ATTR_TEMPERATURE in kwargs:
params[API_PARAMS] = {
API_SETPOINT: kwargs[ATTR_TEMPERATURE],
}
params[API_OPTS] = {
API_UNITS: TemperatureUnit.CELSIUS.value,
}
await self._async_update_params(params)
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set hvac mode."""
params: dict[str, Any] = {
API_PARAMS: {},
}
if hvac_mode == HVACMode.OFF:
params[API_PARAMS][API_POWER] = False
else:
self._attr_hvac_mode = HVACMode.OFF
self._attr_max_temp = self.get_airzone_value(AZD_TEMP_SET_MAX)
self._attr_min_temp = self.get_airzone_value(AZD_TEMP_SET_MIN)
self._attr_target_temperature = self.get_airzone_value(AZD_TEMP_SET)
mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
params[API_PARAMS][API_MODE] = mode.value
params[API_PARAMS][API_POWER] = True
await self._async_update_params(params)
class AirzoneZoneClimate(AirzoneZoneEntity, AirzoneClimate):
class AirzoneAidooClimate(AirzoneAidooEntity, AirzoneDeviceClimate):
"""Define an Airzone Cloud Aidoo climate."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
aidoo_id: str,
aidoo_data: dict,
) -> None:
"""Initialize Airzone Cloud Aidoo climate."""
super().__init__(coordinator, aidoo_id, aidoo_data)
self._attr_unique_id = aidoo_id
self._attr_target_temperature_step = self.get_airzone_value(AZD_TEMP_STEP)
self._attr_hvac_modes = [
HVAC_MODE_LIB_TO_HASS[mode] for mode in self.get_airzone_value(AZD_MODES)
]
if HVACMode.OFF not in self._attr_hvac_modes:
self._attr_hvac_modes += [HVACMode.OFF]
self._async_update_attrs()
async def async_set_hvac_mode(self, hvac_mode: HVACMode) -> None:
"""Set hvac mode."""
params: dict[str, Any] = {}
if hvac_mode == HVACMode.OFF:
params[API_POWER] = {
API_VALUE: False,
}
else:
mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
params[API_MODE] = {
API_VALUE: mode.value,
}
params[API_POWER] = {
API_VALUE: True,
}
await self._async_update_params(params)
class AirzoneGroupClimate(AirzoneGroupEntity, AirzoneDeviceGroupClimate):
"""Define an Airzone Cloud Group climate."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
group_id: str,
group_data: dict,
) -> None:
"""Initialize Airzone Cloud Group climate."""
super().__init__(coordinator, group_id, group_data)
self._attr_unique_id = group_id
self._attr_target_temperature_step = self.get_airzone_value(AZD_TEMP_STEP)
self._attr_hvac_modes = [
HVAC_MODE_LIB_TO_HASS[mode] for mode in self.get_airzone_value(AZD_MODES)
]
if HVACMode.OFF not in self._attr_hvac_modes:
self._attr_hvac_modes += [HVACMode.OFF]
self._async_update_attrs()
class AirzoneInstallationClimate(AirzoneInstallationEntity, AirzoneDeviceGroupClimate):
"""Define an Airzone Cloud Installation climate."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
inst_id: str,
inst_data: dict,
) -> None:
"""Initialize Airzone Cloud Installation climate."""
super().__init__(coordinator, inst_id, inst_data)
self._attr_unique_id = inst_id
self._attr_target_temperature_step = self.get_airzone_value(AZD_TEMP_STEP)
self._attr_hvac_modes = [
HVAC_MODE_LIB_TO_HASS[mode] for mode in self.get_airzone_value(AZD_MODES)
]
if HVACMode.OFF not in self._attr_hvac_modes:
self._attr_hvac_modes += [HVACMode.OFF]
self._async_update_attrs()
class AirzoneZoneClimate(AirzoneZoneEntity, AirzoneDeviceClimate):
"""Define an Airzone Cloud Zone climate."""
_attr_has_entity_name = True
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
@@ -191,7 +372,8 @@ class AirzoneZoneClimate(AirzoneZoneEntity, AirzoneClimate):
}
else:
mode = HVAC_MODE_HASS_TO_LIB[hvac_mode]
if mode != self.get_airzone_value(AZD_MODE):
cur_mode = self.get_airzone_value(AZD_MODE)
if hvac_mode != HVAC_MODE_LIB_TO_HASS[cur_mode]:
if self.get_airzone_value(AZD_MASTER):
params[API_MODE] = {
API_VALUE: mode.value,

View File

@@ -9,6 +9,8 @@ from aioairzone_cloud.const import (
AZD_AIDOOS,
AZD_AVAILABLE,
AZD_FIRMWARE,
AZD_GROUPS,
AZD_INSTALLATIONS,
AZD_NAME,
AZD_SYSTEM_ID,
AZD_SYSTEMS,
@@ -74,6 +76,104 @@ class AirzoneAidooEntity(AirzoneEntity):
value = aidoo.get(key)
return value
async def _async_update_params(self, params: dict[str, Any]) -> None:
"""Send Aidoo parameters to Cloud API."""
_LOGGER.debug("aidoo=%s: update_params=%s", self.name, params)
try:
await self.coordinator.airzone.api_set_aidoo_id_params(
self.aidoo_id, params
)
except AirzoneCloudError as error:
raise HomeAssistantError(
f"Failed to set {self.name} params: {error}"
) from error
self.coordinator.async_set_updated_data(self.coordinator.airzone.data())
class AirzoneGroupEntity(AirzoneEntity):
"""Define an Airzone Cloud Group entity."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
group_id: str,
group_data: dict[str, Any],
) -> None:
"""Initialize."""
super().__init__(coordinator)
self.group_id = group_id
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, group_id)},
manufacturer=MANUFACTURER,
name=group_data[AZD_NAME],
)
def get_airzone_value(self, key: str) -> Any:
"""Return Group value by key."""
value = None
if group := self.coordinator.data[AZD_GROUPS].get(self.group_id):
value = group.get(key)
return value
async def _async_update_params(self, params: dict[str, Any]) -> None:
"""Send Group parameters to Cloud API."""
_LOGGER.debug("group=%s: update_params=%s", self.name, params)
try:
await self.coordinator.airzone.api_set_group_id_params(
self.group_id, params
)
except AirzoneCloudError as error:
raise HomeAssistantError(
f"Failed to set {self.name} params: {error}"
) from error
self.coordinator.async_set_updated_data(self.coordinator.airzone.data())
class AirzoneInstallationEntity(AirzoneEntity):
"""Define an Airzone Cloud Installation entity."""
def __init__(
self,
coordinator: AirzoneUpdateCoordinator,
inst_id: str,
inst_data: dict[str, Any],
) -> None:
"""Initialize."""
super().__init__(coordinator)
self.inst_id = inst_id
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, inst_id)},
manufacturer=MANUFACTURER,
name=inst_data[AZD_NAME],
)
def get_airzone_value(self, key: str) -> Any:
"""Return Installation value by key."""
value = None
if inst := self.coordinator.data[AZD_INSTALLATIONS].get(self.inst_id):
value = inst.get(key)
return value
async def _async_update_params(self, params: dict[str, Any]) -> None:
"""Send Installation parameters to Cloud API."""
_LOGGER.debug("installation=%s: update_params=%s", self.name, params)
try:
await self.coordinator.airzone.api_set_installation_id_params(
self.inst_id, params
)
except AirzoneCloudError as error:
raise HomeAssistantError(
f"Failed to set {self.name} params: {error}"
) from error
self.coordinator.async_set_updated_data(self.coordinator.airzone.data())
class AirzoneSystemEntity(AirzoneEntity):
"""Define an Airzone Cloud System entity."""

View File

@@ -6,5 +6,5 @@
"documentation": "https://www.home-assistant.io/integrations/airzone_cloud",
"iot_class": "cloud_polling",
"loggers": ["aioairzone_cloud"],
"requirements": ["aioairzone-cloud==0.2.3"]
"requirements": ["aioairzone-cloud==0.3.1"]
}

View File

@@ -580,8 +580,8 @@ class AlexaBrightnessController(AlexaCapability):
"""Read and return a property."""
if name != "brightness":
raise UnsupportedProperty(name)
if "brightness" in self.entity.attributes:
return round(self.entity.attributes["brightness"] / 255.0 * 100)
if brightness := self.entity.attributes.get("brightness"):
return round(brightness / 255.0 * 100)
return 0
@@ -630,12 +630,16 @@ class AlexaColorController(AlexaCapability):
if name != "color":
raise UnsupportedProperty(name)
hue, saturation = self.entity.attributes.get(light.ATTR_HS_COLOR, (0, 0))
hue_saturation: tuple[float, float] | None
if (hue_saturation := self.entity.attributes.get(light.ATTR_HS_COLOR)) is None:
hue_saturation = (0, 0)
if (brightness := self.entity.attributes.get(light.ATTR_BRIGHTNESS)) is None:
brightness = 0
return {
"hue": hue,
"saturation": saturation / 100.0,
"brightness": self.entity.attributes.get(light.ATTR_BRIGHTNESS, 0) / 255.0,
"hue": hue_saturation[0],
"saturation": hue_saturation[1] / 100.0,
"brightness": brightness / 255.0,
}
@@ -683,10 +687,8 @@ class AlexaColorTemperatureController(AlexaCapability):
"""Read and return a property."""
if name != "colorTemperatureInKelvin":
raise UnsupportedProperty(name)
if "color_temp" in self.entity.attributes:
return color_util.color_temperature_mired_to_kelvin(
self.entity.attributes["color_temp"]
)
if color_temp := self.entity.attributes.get("color_temp"):
return color_util.color_temperature_mired_to_kelvin(color_temp)
return None

View File

@@ -5,7 +5,6 @@ from homeassistant.components.mjpeg import MjpegCamera, filter_urllib3_logging
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import (
CONF_HOST,
CONF_NAME,
CONF_PASSWORD,
CONF_USERNAME,
HTTP_BASIC_AUTHENTICATION,
@@ -39,14 +38,7 @@ class IPWebcamCamera(MjpegCamera):
def __init__(self, coordinator: AndroidIPCamDataUpdateCoordinator) -> None:
"""Initialize the camera."""
name = None
# keep imported name until YAML is removed
if CONF_NAME in coordinator.config_entry.data:
name = coordinator.config_entry.data[CONF_NAME]
self._attr_has_entity_name = False
super().__init__(
name=name,
mjpeg_url=coordinator.cam.mjpeg_url,
still_image_url=coordinator.cam.image_url,
authentication=HTTP_BASIC_AUTHENTICATION,
@@ -56,5 +48,5 @@ class IPWebcamCamera(MjpegCamera):
self._attr_unique_id = f"{coordinator.config_entry.entry_id}-camera"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, coordinator.config_entry.entry_id)},
name=name or coordinator.config_entry.data[CONF_HOST],
name=coordinator.config_entry.data[CONF_HOST],
)

View File

@@ -19,11 +19,6 @@ class AndroidIPCamBaseEntity(CoordinatorEntity[AndroidIPCamDataUpdateCoordinator
) -> None:
"""Initialize the base entity."""
super().__init__(coordinator)
if CONF_NAME in coordinator.config_entry.data:
# name is legacy imported from YAML config
# this block can be removed when removing import from YAML
self._attr_name = f"{coordinator.config_entry.data[CONF_NAME]} {self.entity_description.name}"
self._attr_has_entity_name = False
self.cam = coordinator.cam
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, coordinator.config_entry.entry_id)},

View File

@@ -9,7 +9,7 @@
"loggers": ["adb_shell", "androidtv", "pure_python_adb"],
"requirements": [
"adb-shell[async]==0.4.4",
"androidtv[async]==0.0.72",
"androidtv[async]==0.0.73",
"pure-python-adb[async]==0.3.0.dev0"
]
}

View File

@@ -1,8 +1,8 @@
"""Support for Apache Kafka."""
from datetime import datetime
import json
import sys
from aiokafka import AIOKafkaProducer
import voluptuous as vol
from homeassistant.const import (
@@ -16,11 +16,16 @@ from homeassistant.const import (
STATE_UNKNOWN,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import HomeAssistantError
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entityfilter import FILTER_SCHEMA
from homeassistant.helpers.typing import ConfigType
from homeassistant.util import ssl as ssl_util
if sys.version_info < (3, 12):
from aiokafka import AIOKafkaProducer
DOMAIN = "apache_kafka"
CONF_FILTER = "filter"
@@ -49,6 +54,10 @@ CONFIG_SCHEMA = vol.Schema(
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Activate the Apache Kafka integration."""
if sys.version_info >= (3, 12):
raise HomeAssistantError(
"Apache Kafka is not supported on Python 3.12. Please use Python 3.11."
)
conf = config[DOMAIN]
kafka = hass.data[DOMAIN] = KafkaManager(

View File

@@ -7,7 +7,7 @@
"documentation": "https://www.home-assistant.io/integrations/apple_tv",
"iot_class": "local_push",
"loggers": ["pyatv", "srptools"],
"requirements": ["pyatv==0.13.4"],
"requirements": ["pyatv==0.14.3"],
"zeroconf": [
"_mediaremotetv._tcp.local.",
"_companion-link._tcp.local.",

View File

@@ -371,11 +371,15 @@ class AppleTvMediaPlayer(AppleTVEntity, MediaPlayerEntity):
@property
def repeat(self) -> RepeatMode | None:
"""Return current repeat mode."""
if self._playing and self._is_feature_available(FeatureName.Repeat):
if (
self._playing
and self._is_feature_available(FeatureName.Repeat)
and (repeat := self._playing.repeat)
):
return {
RepeatState.Track: RepeatMode.ONE,
RepeatState.All: RepeatMode.ALL,
}.get(self._playing.repeat, RepeatMode.OFF)
}.get(repeat, RepeatMode.OFF)
return None
@property

View File

@@ -21,6 +21,15 @@ from .const import DOMAIN
_LOGGER = logging.getLogger(__name__)
PARALLEL_UPDATES = 0
COMMAND_TO_ATTRIBUTE = {
"wakeup": ("power", "turn_on"),
"suspend": ("power", "turn_off"),
"turn_on": ("power", "turn_on"),
"turn_off": ("power", "turn_off"),
"volume_up": ("audio", "volume_up"),
"volume_down": ("audio", "volume_down"),
"home_hold": ("remote_control", "home"),
}
async def async_setup_entry(
@@ -61,7 +70,13 @@ class AppleTVRemote(AppleTVEntity, RemoteEntity):
for _ in range(num_repeats):
for single_command in command:
attr_value = getattr(self.atv.remote_control, single_command, None)
attr_value = None
if attributes := COMMAND_TO_ATTRIBUTE.get(single_command):
attr_value = self.atv
for attr_name in attributes:
attr_value = getattr(attr_value, attr_name, None)
if not attr_value:
attr_value = getattr(self.atv.remote_control, single_command, None)
if not attr_value:
raise ValueError("Command not found. Exiting sequence")

View File

@@ -5,5 +5,5 @@
"documentation": "https://www.home-assistant.io/integrations/apprise",
"iot_class": "cloud_push",
"loggers": ["apprise"],
"requirements": ["apprise==1.5.0"]
"requirements": ["apprise==1.6.0"]
}

View File

@@ -13,11 +13,11 @@
"connectable": false
}
],
"codeowners": ["@aschmitz"],
"codeowners": ["@aschmitz", "@thecode"],
"config_flow": true,
"dependencies": ["bluetooth_adapters"],
"documentation": "https://www.home-assistant.io/integrations/aranet",
"integration_type": "device",
"iot_class": "local_push",
"requirements": ["aranet4==2.1.3"]
"requirements": ["aranet4==2.2.2"]
}

View File

@@ -2,6 +2,7 @@
from __future__ import annotations
from dataclasses import dataclass
from typing import Any
from aranet4.client import Aranet4Advertisement
from bleak.backends.device import BLEDevice
@@ -32,6 +33,7 @@ from homeassistant.const import (
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DOMAIN
@@ -121,22 +123,22 @@ def sensor_update_to_bluetooth_data_update(
adv: Aranet4Advertisement,
) -> PassiveBluetoothDataUpdate:
"""Convert a sensor update to a Bluetooth data update."""
data: dict[PassiveBluetoothEntityKey, Any] = {}
names: dict[PassiveBluetoothEntityKey, str | None] = {}
descs: dict[PassiveBluetoothEntityKey, EntityDescription] = {}
for key, desc in SENSOR_DESCRIPTIONS.items():
tag = _device_key_to_bluetooth_entity_key(adv.device, key)
val = getattr(adv.readings, key)
if val == -1:
continue
data[tag] = val
names[tag] = desc.name
descs[tag] = desc
return PassiveBluetoothDataUpdate(
devices={adv.device.address: _sensor_device_info_to_hass(adv)},
entity_descriptions={
_device_key_to_bluetooth_entity_key(adv.device, key): desc
for key, desc in SENSOR_DESCRIPTIONS.items()
},
entity_data={
_device_key_to_bluetooth_entity_key(adv.device, key): getattr(
adv.readings, key, None
)
for key in SENSOR_DESCRIPTIONS
},
entity_names={
_device_key_to_bluetooth_entity_key(adv.device, key): desc.name
for key, desc in SENSOR_DESCRIPTIONS.items()
},
entity_descriptions=descs,
entity_data=data,
entity_names=names,
)

View File

@@ -4,7 +4,7 @@
"user": {
"description": "[%key:component::bluetooth::config::step::user::description%]",
"data": {
"address": "[%key:component::bluetooth::config::step::user::data::address%]"
"address": "[%key:common::config_flow::data::device%]"
}
},
"bluetooth_confirm": {

View File

@@ -60,7 +60,6 @@ class VariableSensorEntity(AsekoEntity, SensorEntity):
self._attr_icon = {
"clf": "mdi:flask",
"ph": "mdi:ph",
"rx": "mdi:test-tube",
"waterLevel": "mdi:waves",
"waterTemp": "mdi:coolant-temperature",
@@ -69,6 +68,7 @@ class VariableSensorEntity(AsekoEntity, SensorEntity):
self._attr_device_class = {
"airTemp": SensorDeviceClass.TEMPERATURE,
"waterTemp": SensorDeviceClass.TEMPERATURE,
"ph": SensorDeviceClass.PH,
}.get(self._variable.type)
@property

View File

@@ -9,7 +9,7 @@ from homeassistant.components import stt
from homeassistant.core import Context, HomeAssistant
from homeassistant.helpers.typing import ConfigType
from .const import DATA_CONFIG, DOMAIN
from .const import CONF_DEBUG_RECORDING_DIR, DATA_CONFIG, DATA_LAST_WAKE_UP, DOMAIN
from .error import PipelineNotFound
from .pipeline import (
AudioSettings,
@@ -45,7 +45,9 @@ __all__ = (
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: vol.Schema(
{vol.Optional("debug_recording_dir"): str},
{
vol.Optional(CONF_DEBUG_RECORDING_DIR): str,
},
)
},
extra=vol.ALLOW_EXTRA,
@@ -56,6 +58,9 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Assist pipeline integration."""
hass.data[DATA_CONFIG] = config.get(DOMAIN, {})
# wake_word_id -> timestamp of last detection (monotonic_ns)
hass.data[DATA_LAST_WAKE_UP] = {}
await async_setup_pipeline_store(hass)
async_register_websocket_api(hass)

View File

@@ -2,3 +2,12 @@
DOMAIN = "assist_pipeline"
DATA_CONFIG = f"{DOMAIN}.config"
DEFAULT_PIPELINE_TIMEOUT = 60 * 5 # seconds
DEFAULT_WAKE_WORD_TIMEOUT = 3 # seconds
CONF_DEBUG_RECORDING_DIR = "debug_recording_dir"
DATA_LAST_WAKE_UP = f"{DOMAIN}.last_wake_up"
DEFAULT_WAKE_WORD_COOLDOWN = 2 # seconds

View File

@@ -12,11 +12,13 @@ from pathlib import Path
from queue import Queue
from threading import Thread
import time
from typing import Any, Final, cast
from typing import TYPE_CHECKING, Any, Final, cast
import wave
import voluptuous as vol
from webrtc_noise_gain import AudioProcessor
if TYPE_CHECKING:
from webrtc_noise_gain import AudioProcessor
from homeassistant.components import (
conversation,
@@ -48,7 +50,13 @@ from homeassistant.util import (
)
from homeassistant.util.limited_size_dict import LimitedSizeDict
from .const import DATA_CONFIG, DOMAIN
from .const import (
CONF_DEBUG_RECORDING_DIR,
DATA_CONFIG,
DATA_LAST_WAKE_UP,
DEFAULT_WAKE_WORD_COOLDOWN,
DOMAIN,
)
from .error import (
IntentRecognitionError,
PipelineError,
@@ -399,6 +407,9 @@ class WakeWordSettings:
audio_seconds_to_buffer: float = 0
"""Seconds of audio to buffer before detection and forward to STT."""
cooldown_seconds: float = DEFAULT_WAKE_WORD_COOLDOWN
"""Seconds after a wake word detection where other detections are ignored."""
@dataclass(frozen=True)
class AudioSettings:
@@ -513,6 +524,12 @@ class PipelineRun:
# Initialize with audio settings
self.audio_processor_buffer = AudioBuffer(AUDIO_PROCESSOR_BYTES)
if self.audio_settings.needs_processor:
# Delay import of webrtc so HA start up is not crashing
# on older architectures (armhf).
#
# pylint: disable=import-outside-toplevel
from webrtc_noise_gain import AudioProcessor
self.audio_processor = AudioProcessor(
self.audio_settings.auto_gain_dbfs,
self.audio_settings.noise_suppression_level,
@@ -603,6 +620,8 @@ class PipelineRun:
)
)
wake_word_settings = self.wake_word_settings or WakeWordSettings()
# Remove language since it doesn't apply to wake words yet
metadata_dict.pop("language", None)
@@ -612,6 +631,7 @@ class PipelineRun:
{
"entity_id": self.wake_word_entity_id,
"metadata": metadata_dict,
"timeout": wake_word_settings.timeout or 0,
},
)
)
@@ -619,8 +639,6 @@ class PipelineRun:
if self.debug_recording_queue is not None:
self.debug_recording_queue.put_nowait(f"00_wake-{self.wake_word_entity_id}")
wake_word_settings = self.wake_word_settings or WakeWordSettings()
wake_word_vad: VoiceActivityTimeout | None = None
if (wake_word_settings.timeout is not None) and (
wake_word_settings.timeout > 0
@@ -670,6 +688,18 @@ class PipelineRun:
if result is None:
wake_word_output: dict[str, Any] = {}
else:
# Avoid duplicate detections by checking cooldown
wake_up_key = f"{self.wake_word_entity_id}.{result.wake_word_id}"
last_wake_up = self.hass.data[DATA_LAST_WAKE_UP].get(wake_up_key)
if last_wake_up is not None:
sec_since_last_wake_up = time.monotonic() - last_wake_up
if sec_since_last_wake_up < wake_word_settings.cooldown_seconds:
_LOGGER.debug("Duplicate wake word detection occurred")
raise WakeWordDetectionAborted
# Record last wake up time to block duplicate detections
self.hass.data[DATA_LAST_WAKE_UP][wake_up_key] = time.monotonic()
if result.queued_audio:
# Add audio that was pending at detection.
#
@@ -1032,7 +1062,7 @@ class PipelineRun:
# Directory to save audio for each pipeline run.
# Configured in YAML for assist_pipeline.
if debug_recording_dir := self.hass.data[DATA_CONFIG].get(
"debug_recording_dir"
CONF_DEBUG_RECORDING_DIR
):
if device_id is None:
# <debug_recording_dir>/<pipeline.name>/<run.id>

View File

@@ -7,8 +7,6 @@ from dataclasses import dataclass
from enum import StrEnum
from typing import Final, cast
from webrtc_noise_gain import AudioProcessor
_SAMPLE_RATE: Final = 16000 # Hz
_SAMPLE_WIDTH: Final = 2 # bytes
@@ -51,6 +49,12 @@ class WebRtcVad(VoiceActivityDetector):
def __init__(self) -> None:
"""Initialize webrtcvad."""
# Delay import of webrtc so HA start up is not crashing
# on older architectures (armhf).
#
# pylint: disable=import-outside-toplevel
from webrtc_noise_gain import AudioProcessor
# Just VAD: no noise suppression or auto gain
self._audio_processor = AudioProcessor(0, 0)

View File

@@ -15,7 +15,7 @@ from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import config_validation as cv
from homeassistant.util import language as language_util
from .const import DOMAIN
from .const import DEFAULT_PIPELINE_TIMEOUT, DEFAULT_WAKE_WORD_TIMEOUT, DOMAIN
from .error import PipelineNotFound
from .pipeline import (
AudioSettings,
@@ -30,9 +30,6 @@ from .pipeline import (
async_get_pipeline,
)
DEFAULT_TIMEOUT = 60 * 5 # seconds
DEFAULT_WAKE_WORD_TIMEOUT = 3 # seconds
_LOGGER = logging.getLogger(__name__)
@@ -117,7 +114,7 @@ async def websocket_run(
)
return
timeout = msg.get("timeout", DEFAULT_TIMEOUT)
timeout = msg.get("timeout", DEFAULT_PIPELINE_TIMEOUT)
start_stage = PipelineStage(msg["start_stage"])
end_stage = PipelineStage(msg["end_stage"])
handler_id: int | None = None

View File

@@ -10,6 +10,8 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback
from .const import DATA_ASUSWRT, DOMAIN
from .router import AsusWrtDevInfo, AsusWrtRouter
ATTR_LAST_TIME_REACHABLE = "last_time_reachable"
DEFAULT_DEVICE_NAME = "Unknown device"
@@ -52,13 +54,14 @@ def add_entities(
class AsusWrtDevice(ScannerEntity):
"""Representation of a AsusWrt device."""
_unrecorded_attributes = frozenset({ATTR_LAST_TIME_REACHABLE})
_attr_should_poll = False
def __init__(self, router: AsusWrtRouter, device: AsusWrtDevInfo) -> None:
"""Initialize a AsusWrt device."""
self._router = router
self._device = device
self._attr_unique_id = device.mac
self._attr_name = device.name or DEFAULT_DEVICE_NAME
@property
@@ -98,7 +101,7 @@ class AsusWrtDevice(ScannerEntity):
self._attr_extra_state_attributes = {}
if self._device.last_activity:
self._attr_extra_state_attributes[
"last_time_reachable"
ATTR_LAST_TIME_REACHABLE
] = self._device.last_activity.isoformat(timespec="seconds")
self.async_write_ha_state()

View File

@@ -25,13 +25,14 @@ from homeassistant.exceptions import (
ConfigEntryNotReady,
HomeAssistantError,
)
from homeassistant.helpers import aiohttp_client, device_registry as dr, discovery_flow
from homeassistant.helpers import device_registry as dr, discovery_flow
from .activity import ActivityStream
from .const import CONF_BRAND, DOMAIN, MIN_TIME_BETWEEN_DETAIL_UPDATES, PLATFORMS
from .exceptions import CannotConnect, InvalidAuth, RequireValidation
from .gateway import AugustGateway
from .subscriber import AugustSubscriberMixin
from .util import async_create_august_clientsession
_LOGGER = logging.getLogger(__name__)
@@ -46,10 +47,7 @@ YALEXS_BLE_DOMAIN = "yalexs_ble"
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up August from a config entry."""
# Create an aiohttp session instead of using the default one since the
# default one is likely to trigger august's WAF if another integration
# is also using Cloudflare
session = aiohttp_client.async_create_clientsession(hass)
session = async_create_august_clientsession(hass)
august_gateway = AugustGateway(hass, session)
try:

View File

@@ -13,7 +13,6 @@ from homeassistant import config_entries
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
from homeassistant.core import callback
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers import aiohttp_client
from .const import (
CONF_ACCESS_TOKEN_CACHE_FILE,
@@ -26,6 +25,7 @@ from .const import (
)
from .exceptions import CannotConnect, InvalidAuth, RequireValidation
from .gateway import AugustGateway
from .util import async_create_august_clientsession
_LOGGER = logging.getLogger(__name__)
@@ -159,10 +159,7 @@ class AugustConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
"""Set up the gateway."""
if self._august_gateway is not None:
return self._august_gateway
# Create an aiohttp session instead of using the default one since the
# default one is likely to trigger august's WAF if another integration
# is also using Cloudflare
self._aiohttp_session = aiohttp_client.async_create_clientsession(self.hass)
self._aiohttp_session = async_create_august_clientsession(self.hass)
self._august_gateway = AugustGateway(self.hass, self._aiohttp_session)
return self._august_gateway

View File

@@ -28,5 +28,5 @@
"documentation": "https://www.home-assistant.io/integrations/august",
"iot_class": "cloud_push",
"loggers": ["pubnub", "yalexs"],
"requirements": ["yalexs==1.10.0", "yalexs-ble==2.3.0"]
"requirements": ["yalexs==1.10.0", "yalexs-ble==2.3.2"]
}

View File

@@ -12,6 +12,7 @@ from yalexs.keypad import KeypadDetail
from yalexs.lock import Lock, LockDetail
from homeassistant.components.sensor import (
RestoreSensor,
SensorDeviceClass,
SensorEntity,
SensorEntityDescription,
@@ -27,7 +28,6 @@ from homeassistant.const import (
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import entity_registry as er
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.restore_state import RestoreEntity
from . import AugustData
from .const import (
@@ -174,8 +174,7 @@ async def _async_migrate_old_unique_ids(hass, devices):
registry.async_update_entity(old_entity_id, new_unique_id=device.unique_id)
# pylint: disable-next=hass-invalid-inheritance # needs fixing
class AugustOperatorSensor(AugustEntityMixin, RestoreEntity, SensorEntity):
class AugustOperatorSensor(AugustEntityMixin, RestoreSensor):
"""Representation of an August lock operation sensor."""
_attr_translation_key = "operator"
@@ -247,10 +246,15 @@ class AugustOperatorSensor(AugustEntityMixin, RestoreEntity, SensorEntity):
await super().async_added_to_hass()
last_state = await self.async_get_last_state()
if not last_state or last_state.state == STATE_UNAVAILABLE:
last_sensor_state = await self.async_get_last_sensor_data()
if (
not last_state
or not last_sensor_state
or last_state.state == STATE_UNAVAILABLE
):
return
self._attr_native_value = last_state.state
self._attr_native_value = last_sensor_state.native_value
if ATTR_ENTITY_PICTURE in last_state.attributes:
self._attr_entity_picture = last_state.attributes[ATTR_ENTITY_PICTURE]
if ATTR_OPERATION_REMOTE in last_state.attributes:

View File

@@ -0,0 +1,24 @@
"""August util functions."""
import socket
import aiohttp
from homeassistant.core import HomeAssistant, callback
from homeassistant.helpers import aiohttp_client
@callback
def async_create_august_clientsession(hass: HomeAssistant) -> aiohttp.ClientSession:
"""Create an aiohttp session for the august integration."""
# Create an aiohttp session instead of using the default one since the
# default one is likely to trigger august's WAF if another integration
# is also using Cloudflare
#
# The family is set to AF_INET because IPv6 keeps coming up as an issue
# see https://github.com/home-assistant/core/issues/97146
#
# When https://github.com/aio-libs/aiohttp/issues/4451 is implemented
# we can allow IPv6 again
#
return aiohttp_client.async_create_clientsession(hass, family=socket.AF_INET)

View File

@@ -733,14 +733,14 @@ class AutomationEntity(BaseAutomationEntity, RestoreEntity):
self.async_write_ha_state()
def _log_callback(self, level: int, msg: str, **kwargs: Any) -> None:
"""Log helper callback."""
self._logger.log(level, "%s %s", msg, self.name, **kwargs)
async def _async_attach_triggers(
self, home_assistant_start: bool
) -> Callable[[], None] | None:
"""Set up the triggers."""
def log_cb(level: int, msg: str, **kwargs: Any) -> None:
self._logger.log(level, "%s %s", msg, self.name, **kwargs)
this = None
self.async_write_ha_state()
if state := self.hass.states.get(self.entity_id):
@@ -763,7 +763,7 @@ class AutomationEntity(BaseAutomationEntity, RestoreEntity):
self.async_trigger,
DOMAIN,
str(self.name),
log_cb,
self._log_callback,
home_assistant_start,
variables,
)

View File

@@ -42,7 +42,8 @@ class AxisEntity(Entity):
self.device = device
self._attr_device_info = DeviceInfo(
identifiers={(AXIS_DOMAIN, device.unique_id)}
identifiers={(AXIS_DOMAIN, device.unique_id)},
serial_number=device.unique_id,
)
async def async_added_to_hass(self) -> None:

View File

@@ -247,8 +247,8 @@
"presence": {
"name": "Presence",
"state": {
"off": "[%key:component::device_tracker::entity_component::_::state::not_home%]",
"on": "[%key:component::device_tracker::entity_component::_::state::home%]"
"off": "[%key:common::state::not_home%]",
"on": "[%key:common::state::home%]"
}
},
"problem": {
@@ -286,6 +286,13 @@
"on": "[%key:component::binary_sensor::entity_component::gas::state::on%]"
}
},
"tamper": {
"name": "Tamper",
"state": {
"off": "[%key:component::binary_sensor::entity_component::gas::state::off%]",
"on": "Tampering detected"
}
},
"update": {
"name": "Update",
"state": {

View File

@@ -8,14 +8,20 @@ from blebox_uniapi.feature import Feature
from blebox_uniapi.session import ApiHost
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST, CONF_PORT, Platform
from homeassistant.const import (
CONF_HOST,
CONF_PASSWORD,
CONF_PORT,
CONF_USERNAME,
Platform,
)
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import Entity
from .const import DEFAULT_SETUP_TIMEOUT, DOMAIN, PRODUCT
from .helpers import get_maybe_authenticated_session
_LOGGER = logging.getLogger(__name__)
@@ -36,12 +42,16 @@ _FeatureT = TypeVar("_FeatureT", bound=Feature)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up BleBox devices from a config entry."""
websession = async_get_clientsession(hass)
host = entry.data[CONF_HOST]
port = entry.data[CONF_PORT]
username = entry.data.get(CONF_USERNAME)
password = entry.data.get(CONF_PASSWORD)
timeout = DEFAULT_SETUP_TIMEOUT
websession = get_maybe_authenticated_session(hass, password, username)
api_host = ApiHost(host, port, timeout, websession, hass.loop)
try:

View File

@@ -5,16 +5,22 @@ import logging
from typing import Any
from blebox_uniapi.box import Box
from blebox_uniapi.error import Error, UnsupportedBoxResponse, UnsupportedBoxVersion
from blebox_uniapi.error import (
Error,
UnauthorizedRequest,
UnsupportedBoxResponse,
UnsupportedBoxVersion,
)
from blebox_uniapi.session import ApiHost
import voluptuous as vol
from homeassistant import config_entries
from homeassistant.components import zeroconf
from homeassistant.const import CONF_HOST, CONF_PORT
from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_PORT, CONF_USERNAME
from homeassistant.data_entry_flow import FlowResult
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from . import get_maybe_authenticated_session
from .const import (
ADDRESS_ALREADY_CONFIGURED,
CANNOT_CONNECT,
@@ -46,6 +52,8 @@ def create_schema(previous_input=None):
{
vol.Required(CONF_HOST, default=host): str,
vol.Required(CONF_PORT, default=port): int,
vol.Inclusive(CONF_USERNAME, "auth"): str,
vol.Inclusive(CONF_PASSWORD, "auth"): str,
}
)
@@ -153,6 +161,9 @@ class BleBoxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
addr = host_port(user_input)
username = user_input.get(CONF_USERNAME)
password = user_input.get(CONF_PASSWORD)
for entry in self._async_current_entries():
if addr == host_port(entry.data):
host, port = addr
@@ -160,7 +171,9 @@ class BleBoxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
reason=ADDRESS_ALREADY_CONFIGURED,
description_placeholders={"address": f"{host}:{port}"},
)
websession = async_get_clientsession(hass)
websession = get_maybe_authenticated_session(hass, password, username)
api_host = ApiHost(*addr, DEFAULT_SETUP_TIMEOUT, websession, hass.loop, _LOGGER)
try:
product = await Box.async_from_host(api_host)
@@ -169,6 +182,10 @@ class BleBoxConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
return self.handle_step_exception(
"user", ex, schema, *addr, UNSUPPORTED_VERSION, _LOGGER.debug
)
except UnauthorizedRequest as ex:
return self.handle_step_exception(
"user", ex, schema, *addr, CANNOT_CONNECT, _LOGGER.error
)
except Error as ex:
return self.handle_step_exception(

View File

@@ -0,0 +1,21 @@
"""Blebox helpers."""
from __future__ import annotations
import aiohttp
from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import (
async_create_clientsession,
async_get_clientsession,
)
def get_maybe_authenticated_session(
hass: HomeAssistant, password: str | None, username: str | None
) -> aiohttp.ClientSession:
"""Return proper session object."""
if username and password:
auth = aiohttp.BasicAuth(login=username, password=password)
return async_create_clientsession(hass, auth=auth)
return async_get_clientsession(hass)

View File

@@ -6,6 +6,6 @@
"documentation": "https://www.home-assistant.io/integrations/blebox",
"iot_class": "local_polling",
"loggers": ["blebox_uniapi"],
"requirements": ["blebox-uniapi==2.1.4"],
"requirements": ["blebox-uniapi==2.2.0"],
"zeroconf": ["_bbxsrv._tcp.local."]
}

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